From 9a8a366aee7f83c31d6b95167d75fb69cadbcb57 Mon Sep 17 00:00:00 2001 From: Sattvik Chakravarthy Date: Wed, 1 Nov 2023 12:37:35 +0530 Subject: [PATCH 1/4] fix: test email verified with user id mapping (#873) * fix: email verified in login methods * fix: test * fix: version * fix: ev fix for inmemory --- CHANGELOG.md | 4 + build.gradle | 2 +- .../queries/EmailVerificationQueries.java | 86 ++++++++++++---- .../queries/UserIdMappingQueries.java | 36 ++++++- .../api/EmailVerificationTest.java | 98 +++++++++++++++++++ 5 files changed, 203 insertions(+), 23 deletions(-) create mode 100644 src/test/java/io/supertokens/test/accountlinking/api/EmailVerificationTest.java diff --git a/CHANGELOG.md b/CHANGELOG.md index 4793574a6..56e4f4f35 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,10 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [7.0.9] - 2023-11-01 + +- Tests `verified` in `loginMethods` for users with userId mapping + ## [7.0.8] - 2023-10-19 - Tests thirdParty serialization fix diff --git a/build.gradle b/build.gradle index 8935cdcac..fe8e363a3 100644 --- a/build.gradle +++ b/build.gradle @@ -19,7 +19,7 @@ compileTestJava { options.encoding = "UTF-8" } // } //} -version = "7.0.8" +version = "7.0.9" repositories { diff --git a/src/main/java/io/supertokens/inmemorydb/queries/EmailVerificationQueries.java b/src/main/java/io/supertokens/inmemorydb/queries/EmailVerificationQueries.java index c571427ba..381549939 100644 --- a/src/main/java/io/supertokens/inmemorydb/queries/EmailVerificationQueries.java +++ b/src/main/java/io/supertokens/inmemorydb/queries/EmailVerificationQueries.java @@ -243,26 +243,50 @@ public static List isEmailVerified_transaction(Start start, Connection s return new ArrayList<>(); } List emails = new ArrayList<>(); - List userIds = new ArrayList<>(); - Map userIdToEmailMap = new HashMap<>(); + List supertokensUserIds = new ArrayList<>(); for (UserIdAndEmail ue : userIdAndEmail) { emails.add(ue.email); - userIds.add(ue.userId); + supertokensUserIds.add(ue.userId); } + + // We have external user id stored in the email verification table, so we need to fetch the mapped userids for + // calculating the verified emails + + HashMap supertokensUserIdToExternalUserIdMap = UserIdMappingQueries.getUserIdMappingWithUserIds_Transaction(start, + sqlCon, supertokensUserIds); + HashMap externalUserIdToSupertokensUserIdMap = new HashMap<>(); + + List supertokensOrExternalUserIdsToQuery = new ArrayList<>(); + for (String userId : supertokensUserIds) { + if (supertokensUserIdToExternalUserIdMap.containsKey(userId)) { + supertokensOrExternalUserIdsToQuery.add(supertokensUserIdToExternalUserIdMap.get(userId)); + externalUserIdToSupertokensUserIdMap.put(supertokensUserIdToExternalUserIdMap.get(userId), userId); + } else { + supertokensOrExternalUserIdsToQuery.add(userId); + externalUserIdToSupertokensUserIdMap.put(userId, userId); + } + } + + Map supertokensOrExternalUserIdToEmailMap = new HashMap<>(); for (UserIdAndEmail ue : userIdAndEmail) { - if (userIdToEmailMap.containsKey(ue.userId)) { + String supertokensOrExternalUserId = ue.userId; + if (supertokensUserIdToExternalUserIdMap.containsKey(supertokensOrExternalUserId)) { + supertokensOrExternalUserId = supertokensUserIdToExternalUserIdMap.get(supertokensOrExternalUserId); + } + if (supertokensOrExternalUserIdToEmailMap.containsKey(supertokensOrExternalUserId)) { throw new RuntimeException("Found a bug!"); } - userIdToEmailMap.put(ue.userId, ue.email); + supertokensOrExternalUserIdToEmailMap.put(supertokensOrExternalUserId, ue.email); } + String QUERY = "SELECT * FROM " + getConfig(start).getEmailVerificationTable() - + " WHERE app_id = ? AND user_id IN (" + Utils.generateCommaSeperatedQuestionMarks(userIds.size()) + + + " WHERE app_id = ? AND user_id IN (" + Utils.generateCommaSeperatedQuestionMarks(supertokensOrExternalUserIdsToQuery.size()) + ") AND email IN (" + Utils.generateCommaSeperatedQuestionMarks(emails.size()) + ")"; return execute(sqlCon, QUERY, pst -> { pst.setString(1, appIdentifier.getAppId()); int index = 2; - for (String userId : userIds) { + for (String userId : supertokensOrExternalUserIdsToQuery) { pst.setString(index++, userId); } for (String email : emails) { @@ -271,10 +295,10 @@ public static List isEmailVerified_transaction(Start start, Connection s }, result -> { List res = new ArrayList<>(); while (result.next()) { - String userId = result.getString("user_id"); + String supertokensOrExternalUserId = result.getString("user_id"); String email = result.getString("email"); - if (Objects.equals(userIdToEmailMap.get(userId), email)) { - res.add(userId); + if (Objects.equals(supertokensOrExternalUserIdToEmailMap.get(supertokensOrExternalUserId), email)) { + res.add(externalUserIdToSupertokensUserIdMap.get(supertokensOrExternalUserId)); } } return res; @@ -288,26 +312,46 @@ public static List isEmailVerified(Start start, AppIdentifier appIdentif return new ArrayList<>(); } List emails = new ArrayList<>(); - List userIds = new ArrayList<>(); - Map userIdToEmailMap = new HashMap<>(); + List supertokensUserIds = new ArrayList<>(); + for (UserIdAndEmail ue : userIdAndEmail) { emails.add(ue.email); - userIds.add(ue.userId); + supertokensUserIds.add(ue.userId); + } + // We have external user id stored in the email verification table, so we need to fetch the mapped userids for + // calculating the verified emails + HashMap supertokensUserIdToExternalUserIdMap = UserIdMappingQueries.getUserIdMappingWithUserIds(start, + supertokensUserIds); + HashMap externalUserIdToSupertokensUserIdMap = new HashMap<>(); + List supertokensOrExternalUserIdsToQuery = new ArrayList<>(); + for (String userId : supertokensUserIds) { + if (supertokensUserIdToExternalUserIdMap.containsKey(userId)) { + supertokensOrExternalUserIdsToQuery.add(supertokensUserIdToExternalUserIdMap.get(userId)); + externalUserIdToSupertokensUserIdMap.put(supertokensUserIdToExternalUserIdMap.get(userId), userId); + } else { + supertokensOrExternalUserIdsToQuery.add(userId); + externalUserIdToSupertokensUserIdMap.put(userId, userId); + } } + + Map supertokensOrExternalUserIdToEmailMap = new HashMap<>(); for (UserIdAndEmail ue : userIdAndEmail) { - if (userIdToEmailMap.containsKey(ue.userId)) { + String supertokensOrExternalUserId = ue.userId; + if (supertokensUserIdToExternalUserIdMap.containsKey(supertokensOrExternalUserId)) { + supertokensOrExternalUserId = supertokensUserIdToExternalUserIdMap.get(supertokensOrExternalUserId); + } + if (supertokensOrExternalUserIdToEmailMap.containsKey(supertokensOrExternalUserId)) { throw new RuntimeException("Found a bug!"); } - userIdToEmailMap.put(ue.userId, ue.email); + supertokensOrExternalUserIdToEmailMap.put(supertokensOrExternalUserId, ue.email); } String QUERY = "SELECT * FROM " + getConfig(start).getEmailVerificationTable() - + " WHERE app_id = ? AND user_id IN (" + Utils.generateCommaSeperatedQuestionMarks(userIds.size()) + + + " WHERE app_id = ? AND user_id IN (" + Utils.generateCommaSeperatedQuestionMarks(supertokensOrExternalUserIdsToQuery.size()) + ") AND email IN (" + Utils.generateCommaSeperatedQuestionMarks(emails.size()) + ")"; - return execute(start, QUERY, pst -> { pst.setString(1, appIdentifier.getAppId()); int index = 2; - for (String userId : userIds) { + for (String userId : supertokensOrExternalUserIdsToQuery) { pst.setString(index++, userId); } for (String email : emails) { @@ -316,10 +360,10 @@ public static List isEmailVerified(Start start, AppIdentifier appIdentif }, result -> { List res = new ArrayList<>(); while (result.next()) { - String userId = result.getString("user_id"); + String supertokensOrExternalUserId = result.getString("user_id"); String email = result.getString("email"); - if (Objects.equals(userIdToEmailMap.get(userId), email)) { - res.add(userId); + if (Objects.equals(supertokensOrExternalUserIdToEmailMap.get(supertokensOrExternalUserId), email)) { + res.add(externalUserIdToSupertokensUserIdMap.get(supertokensOrExternalUserId)); } } return res; diff --git a/src/main/java/io/supertokens/inmemorydb/queries/UserIdMappingQueries.java b/src/main/java/io/supertokens/inmemorydb/queries/UserIdMappingQueries.java index 2bfad8270..579acc0b4 100644 --- a/src/main/java/io/supertokens/inmemorydb/queries/UserIdMappingQueries.java +++ b/src/main/java/io/supertokens/inmemorydb/queries/UserIdMappingQueries.java @@ -29,6 +29,7 @@ import java.sql.SQLException; import java.util.ArrayList; import java.util.HashMap; +import java.util.List; import static io.supertokens.inmemorydb.QueryExecutorTemplate.execute; import static io.supertokens.inmemorydb.QueryExecutorTemplate.update; @@ -135,7 +136,7 @@ public static UserIdMapping[] getUserIdMappingWithEitherSuperTokensUserIdOrExter } - public static HashMap getUserIdMappingWithUserIds(Start start, ArrayList userIds) + public static HashMap getUserIdMappingWithUserIds(Start start, List userIds) throws SQLException, StorageQueryException { if (userIds.size() == 0) { @@ -168,6 +169,39 @@ public static HashMap getUserIdMappingWithUserIds(Start start, A }); } + public static HashMap getUserIdMappingWithUserIds_Transaction(Start start, Connection sqlCon, List userIds) + throws SQLException, StorageQueryException { + + if (userIds.size() == 0) { + return new HashMap<>(); + } + + // No need to filter based on tenantId because the id list is already filtered for a tenant + StringBuilder QUERY = new StringBuilder( + "SELECT * FROM " + Config.getConfig(start).getUserIdMappingTable() + " WHERE supertokens_user_id IN ("); + for (int i = 0; i < userIds.size(); i++) { + QUERY.append("?"); + if (i != userIds.size() - 1) { + // not the last element + QUERY.append(","); + } + } + QUERY.append(")"); + return execute(sqlCon, QUERY.toString(), pst -> { + for (int i = 0; i < userIds.size(); i++) { + // i+1 cause this starts with 1 and not 0 + pst.setString(i + 1, userIds.get(i)); + } + }, result -> { + HashMap userIdMappings = new HashMap<>(); + while (result.next()) { + UserIdMapping temp = UserIdMappingRowMapper.getInstance().mapOrThrow(result); + userIdMappings.put(temp.superTokensUserId, temp.externalUserId); + } + return userIdMappings; + }); + } + public static boolean deleteUserIdMappingWithSuperTokensUserId(Start start, AppIdentifier appIdentifier, String userId) throws SQLException, StorageQueryException { String QUERY = "DELETE FROM " + Config.getConfig(start).getUserIdMappingTable() diff --git a/src/test/java/io/supertokens/test/accountlinking/api/EmailVerificationTest.java b/src/test/java/io/supertokens/test/accountlinking/api/EmailVerificationTest.java new file mode 100644 index 000000000..d3aa7779c --- /dev/null +++ b/src/test/java/io/supertokens/test/accountlinking/api/EmailVerificationTest.java @@ -0,0 +1,98 @@ +/* + * Copyright (c) 2023, VRAI Labs and/or its affiliates. All rights reserved. + * + * This software is licensed under the Apache License, Version 2.0 (the + * "License") as published by the Apache Software Foundation. + * + * You may not use this file except in compliance with the License. You may + * obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + */ + +package io.supertokens.test.accountlinking.api; + +import com.google.gson.JsonObject; +import io.supertokens.ProcessState; +import io.supertokens.authRecipe.AuthRecipe; +import io.supertokens.emailpassword.EmailPassword; +import io.supertokens.emailverification.EmailVerification; +import io.supertokens.featureflag.EE_FEATURES; +import io.supertokens.featureflag.FeatureFlagTestContent; +import io.supertokens.pluginInterface.STORAGE_TYPE; +import io.supertokens.pluginInterface.authRecipe.AuthRecipeUserInfo; +import io.supertokens.storageLayer.StorageLayer; +import io.supertokens.test.TestingProcessManager; +import io.supertokens.test.Utils; +import io.supertokens.test.httpRequest.HttpRequestForTesting; +import io.supertokens.useridmapping.UserIdMapping; +import io.supertokens.webserver.WebserverAPI; +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.Rule; +import org.junit.Test; +import org.junit.rules.TestRule; + +import java.util.HashMap; +import java.util.Map; + +import static org.junit.Assert.*; + +public class EmailVerificationTest { + @Rule + public TestRule watchman = Utils.getOnFailure(); + + @AfterClass + public static void afterTesting() { + Utils.afterTesting(); + } + + @Before + public void beforeEach() { + Utils.reset(); + } + + @Test + public void testEmailVerificationWithUserIdMapping() throws Exception { + String[] args = {"../"}; + TestingProcessManager.TestingProcess process = TestingProcessManager.start(args, false); + FeatureFlagTestContent.getInstance(process.getProcess()) + .setKeyValue(FeatureFlagTestContent.ENABLED_FEATURES, new EE_FEATURES[]{ + EE_FEATURES.ACCOUNT_LINKING, EE_FEATURES.MULTI_TENANCY}); + process.startProcess(); + assertNotNull(process.checkOrWaitForEvent(ProcessState.PROCESS_STATE.STARTED)); + + if (StorageLayer.getStorage(process.getProcess()).getType() != STORAGE_TYPE.SQL) { + return; + } + + AuthRecipeUserInfo user1 = EmailPassword.signUp(process.getProcess(), "test1@example.com", "password"); + UserIdMapping.createUserIdMapping(process.getProcess(), user1.getSupertokensUserId(), "euserid1", null, false); + String token = EmailVerification.generateEmailVerificationToken(process.getProcess(), "euserid1", "test1@example.com"); + EmailVerification.verifyEmail(process.getProcess(), token); + + AuthRecipeUserInfo user2 = EmailPassword.signUp(process.getProcess(), "test2@example.com", "password"); + UserIdMapping.createUserIdMapping(process.getProcess(), user2.getSupertokensUserId(), "euserid2", null, false); + + AuthRecipe.createPrimaryUser(process.getProcess(), user1.getSupertokensUserId()); + AuthRecipe.linkAccounts(process.getProcess(), user2.getSupertokensUserId(), user1.getSupertokensUserId()); + + { + Map params = new HashMap<>(); + params.put("userId", "euserid1"); + JsonObject response = HttpRequestForTesting.sendGETRequest(process.getProcess(), "", + "http://localhost:3567/user/id", params, 1000, 1000, null, + WebserverAPI.getLatestCDIVersion().get(), ""); + JsonObject user = response.get("user").getAsJsonObject(); + assertTrue(user.get("loginMethods").getAsJsonArray().get(0).getAsJsonObject().get("verified").getAsBoolean()); + assertFalse(user.get("loginMethods").getAsJsonArray().get(1).getAsJsonObject().get("verified").getAsBoolean()); + } + + process.kill(); + assertNotNull(process.checkOrWaitForEvent(ProcessState.PROCESS_STATE.STOPPED)); + } +} From 4fe17c2f0eb2e87d37ce61f0079d50a231294ded Mon Sep 17 00:00:00 2001 From: rishabhpoddar Date: Wed, 1 Nov 2023 12:39:34 +0530 Subject: [PATCH 2/4] adding dev-v7.0.9 tag to this commit to ensure building --- cli/jar/cli.jar | Bin 47546 -> 47546 bytes downloader/jar/downloader.jar | Bin 15229 -> 15229 bytes ee/jar/ee.jar | Bin 14423 -> 14423 bytes jar/{core-7.0.8.jar => core-7.0.9.jar} | Bin 728660 -> 729433 bytes 4 files changed, 0 insertions(+), 0 deletions(-) rename jar/{core-7.0.8.jar => core-7.0.9.jar} (89%) diff --git a/cli/jar/cli.jar b/cli/jar/cli.jar index 739e67eaf6e0f007030e538e02d9b60e98248b77..eface8b58a5b716af96bef68c96a2ef763552223 100644 GIT binary patch delta 835 zcmdn>nQ7N&Cf)#VW)?061`ZB}mnn%8dDWOfl$n>>i3}s{HDCtvCUY>_gXqm(j8j;_0uR~T!2;UsX<}f3DYC9$fjhE|ykLQk@y3%U zYYTz}muv6l0t=>^1%L&1nC)i-GpZ~eh=65ceLcYfD}9&2Y%rdDKA2;2Z!iy7Voq=k z8<-&-CCLJ2n8$4g8#4K0ybD;sB4IW}FUanIG}g&{X%M}#X{Bs@s2-ne*eN;LehU{r zn#VU^%JG31uUNPiV%o(r8?f;LIET4ysCh%tH1 zWGAq|$H~tjN^VbM=i&p(AO$|y4V(+bzzUTX{$K>_lwE8A7Km8P!3q{gUhx4;hpqez zp;wuJ>E2b~NSS6^cfw+_FR{MhKbE^}HKwZVEV$knP56+eKnYVwLTn7yKKk>(_1z`%;wn$F}q@8 z8d&_{#tbm+vndEnFWdw%*9T~q(q@QVF`FS`hcn+a delta 835 zcmdn>nQ7N&Cf)#VW)?061`ZB}Z9TygdDWOfl$no;+Dw5G=S{ zdp8$YFx4yoEU?3DKO>k?W${1+EEDVN2^LuCy9{Q7@#OQt9Fu#4dB75Lf@|2o4CyFI z7BIs+ZadhJ$sglgzycNtvmtsxb_b-fPUcI4=#@uiSjbj@TZu#%6HpF?DB zPh;o8<_6A%-~imLwD1SSH?oT@z&axqb3p7*Uhx4WFga}HUkJU*1Wfm?0!PZ^^Q-hg z{7I{=z{0kx?Z9;1YF{vYZgnD>mkqgKddmig**qH|W>;)X1B*Z0m;t7JHU)v{g_|Je z`T*@x+6=KPW-~;*+*P w^xxeEPGge|wnNOBxgDIcCO_Q{kvG_p1Xe$FhZ~r_w*z91$xcYPmF{!}0DVtSApigX diff --git a/downloader/jar/downloader.jar b/downloader/jar/downloader.jar index 57c1de1f3237f231c7e5e001f354c1665a7838c0..2e37621121cfeb528898ba3dc76d53a6e621e14e 100644 GIT binary patch delta 375 zcmexc_P2~Tz?+$ci-CcIgW*j|;zV9GW)NlOr3R$J8GwKZL;wLZ5NGD=Gc%xSSf&Hk zaMc_{ZRTfO$p&If-p%d|7GUHEW`zo9PxdwEncTx!fR delta 375 zcmexc_P2~Tz?+$ci-CcIgJDNc@I+oUW)NlOr3R$J8GwKZL;wLZ5NGD=Gc%xSSf&Hk zaMc_{ZRTfO$p&If-p%d|7GUHEW`zo9PxdwEncTjT0A|Nb Aa{vGU delta 220 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 TTFdymQ%(HFx=&}q8>{O7o|O+T From 3c29c0b8a2e2ba43e52e0cb411ca63d5c0a96e20 Mon Sep 17 00:00:00 2001 From: Sattvik Chakravarthy Date: Fri, 3 Nov 2023 16:02:23 +0530 Subject: [PATCH 3/4] fix: request stats (#875) * fix: request stats * fix: refactor and comments * fix: per app test * fix: comments * fix: pr comments * fix: pr comments * fix: comment * Update src/main/java/io/supertokens/webserver/RequestStats.java Co-authored-by: Rishabh Poddar * fix: pr comment --------- Co-authored-by: Rishabh Poddar --- CHANGELOG.md | 5 + build.gradle | 2 +- .../supertokens/webserver/RequestStats.java | 143 +++++++++ .../io/supertokens/webserver/Webserver.java | 2 + .../supertokens/webserver/WebserverAPI.java | 5 + .../webserver/api/core/RequestStatsAPI.java | 61 ++++ .../io/supertokens/test/RequestStatsTest.java | 289 ++++++++++++++++++ 7 files changed, 506 insertions(+), 1 deletion(-) create mode 100644 src/main/java/io/supertokens/webserver/RequestStats.java create mode 100644 src/main/java/io/supertokens/webserver/api/core/RequestStatsAPI.java create mode 100644 src/test/java/io/supertokens/test/RequestStatsTest.java diff --git a/CHANGELOG.md b/CHANGELOG.md index 56e4f4f35..69145adcf 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,11 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [7.0.10] - 2023-11-03 + +- Collects requests stats per app +- Adds `/requests/stats` API to return requests stats for the last day + ## [7.0.9] - 2023-11-01 - Tests `verified` in `loginMethods` for users with userId mapping diff --git a/build.gradle b/build.gradle index fe8e363a3..d2e137d4a 100644 --- a/build.gradle +++ b/build.gradle @@ -19,7 +19,7 @@ compileTestJava { options.encoding = "UTF-8" } // } //} -version = "7.0.9" +version = "7.0.10" repositories { diff --git a/src/main/java/io/supertokens/webserver/RequestStats.java b/src/main/java/io/supertokens/webserver/RequestStats.java new file mode 100644 index 000000000..56851cd74 --- /dev/null +++ b/src/main/java/io/supertokens/webserver/RequestStats.java @@ -0,0 +1,143 @@ +/* + * Copyright (c) 2023, VRAI Labs and/or its affiliates. All rights reserved. + * + * This software is licensed under the Apache License, Version 2.0 (the + * "License") as published by the Apache Software Foundation. + * + * You may not use this file except in compliance with the License. You may + * obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + */ + +package io.supertokens.webserver; + +import com.google.gson.JsonArray; +import com.google.gson.JsonObject; +import com.google.gson.JsonPrimitive; +import io.supertokens.Main; +import io.supertokens.ResourceDistributor; +import io.supertokens.multitenancy.Multitenancy; +import io.supertokens.pluginInterface.multitenancy.AppIdentifier; +import io.supertokens.pluginInterface.multitenancy.exceptions.TenantOrAppNotFoundException; + +public class RequestStats extends ResourceDistributor.SingletonResource { + public static final String RESOURCE_KEY = "io.supertokens.webserver.RequestStats"; + + private final int MAX_MINUTES = 24 * 60; + + private long currentMinute; // current minute since epoch + private final int[] currentMinuteRequestCounts; // array of 60 items representing number of requests at each second in the current minute + + // The 2 arrays below contains stats for a day for every minute + // the array is stored in such a way that array[currentMinute % MAX_MINUTES] contains the stats for a day ago + // until array[(currentMinute - 1) % MAX_MINUTES] which contains the stats for the last minute, circling around + // from end of array to the beginning + // for e.g. if currentMinute % MAX_MINUTES = 250, + // then array[250] contains stats for now - 1440 minutes + // array[251] contains stats for now - 1439 minutes + // ... + // array[1439] contains stats for now - 1191 minutes + // array[0] contains stats for now - 1190 minutes + // array[1] contains stats for now - 1189 minutes + // ... + // array[249] contains stats for now - 1 minute + private final double[] averageRequestsPerSecond; + private final int[] peakRequestsPerSecond; + + private RequestStats() { + currentMinute = System.currentTimeMillis() / 60000; + currentMinuteRequestCounts = new int[60]; + + averageRequestsPerSecond = new double[MAX_MINUTES]; + peakRequestsPerSecond = new int[MAX_MINUTES]; + for (int i = 0; i < MAX_MINUTES; i++) { + averageRequestsPerSecond[i] = -1; + peakRequestsPerSecond[i] = -1; + } + } + + private void checkAndUpdateMinute(long currentSecond) { + if (currentSecond / 60 == currentMinute) { + return; // stats update not required + } + + int sum = 0; + int max = 0; + for (int i = 0; i < 60; i++) { + sum += currentMinuteRequestCounts[i]; + max = Math.max(max, currentMinuteRequestCounts[i]); + } + + averageRequestsPerSecond[(int) (currentMinute % MAX_MINUTES)] = sum / 60.0; + peakRequestsPerSecond[(int) (currentMinute % MAX_MINUTES)] = max; + + // fill zeros for passed minutes + for (long i = currentMinute + 1; i < currentSecond / 60; i++) { + averageRequestsPerSecond[(int) (i % MAX_MINUTES)] = 0; + peakRequestsPerSecond[(int) (i % MAX_MINUTES)] = 0; + } + + currentMinute = currentSecond / 60; + for (int i = 0; i < 60; i++) { + currentMinuteRequestCounts[i] = 0; + } + } + + private void updateCounts(long currentSecond) { + currentMinuteRequestCounts[(int) (currentSecond % 60)]++; + } + + public static RequestStats getInstance(Main main, AppIdentifier appIdentifier) throws TenantOrAppNotFoundException { + try { + return (RequestStats) main.getResourceDistributor() + .getResource(appIdentifier.getAsPublicTenantIdentifier(), RESOURCE_KEY); + } catch (TenantOrAppNotFoundException e) { + // appIdentifier parameter is coming from the API request and hence we need to check if the app exists + // before creating a resource for it, otherwise someone could fill up memory by making requests for apps + // that don't exist. + // The other resources are created during init or while refreshing tenants from the db, so we don't need + // this kind of pattern for those resources. + if (Multitenancy.getTenantInfo(main, appIdentifier.getAsPublicTenantIdentifier()) == null) { + throw e; + } + return (RequestStats) main.getResourceDistributor() + .setResource(appIdentifier.getAsPublicTenantIdentifier(), RESOURCE_KEY, new RequestStats()); + } + } + + public void updateRequestStats() { + this.updateRequestStats(true); + } + + synchronized private void updateRequestStats(boolean updateCounts) { + long now = System.currentTimeMillis() / 1000; + this.checkAndUpdateMinute(now); + if (updateCounts) { this.updateCounts(now); } + } + + public JsonObject getStats() { + this.updateRequestStats(false); + + JsonArray avgRps = new JsonArray(); + JsonArray peakRps = new JsonArray(); + + long atMinute = System.currentTimeMillis() / 60000; + + int offset = (int) (atMinute % MAX_MINUTES); + for (int i = 0; i < MAX_MINUTES; i++) { + avgRps.add(new JsonPrimitive(this.averageRequestsPerSecond[(i + offset) % MAX_MINUTES])); + peakRps.add(new JsonPrimitive(this.peakRequestsPerSecond[(i + offset) % MAX_MINUTES])); + } + + JsonObject result = new JsonObject(); + result.addProperty("atMinute", atMinute); + result.add("averageRequestsPerSecond", avgRps); + result.add("peakRequestsPerSecond", peakRps); + return result; + } +} diff --git a/src/main/java/io/supertokens/webserver/Webserver.java b/src/main/java/io/supertokens/webserver/Webserver.java index 5e4a4ff8c..8763843e2 100644 --- a/src/main/java/io/supertokens/webserver/Webserver.java +++ b/src/main/java/io/supertokens/webserver/Webserver.java @@ -257,6 +257,8 @@ private void setupRoutes() { addAPI(new UnlinkAccountAPI(main)); addAPI(new ConsumeResetPasswordAPI(main)); + addAPI(new RequestStatsAPI(main)); + StandardContext context = tomcatReference.getContext(); Tomcat tomcat = tomcatReference.getTomcat(); diff --git a/src/main/java/io/supertokens/webserver/WebserverAPI.java b/src/main/java/io/supertokens/webserver/WebserverAPI.java index fb20f98fe..a94e04d83 100644 --- a/src/main/java/io/supertokens/webserver/WebserverAPI.java +++ b/src/main/java/io/supertokens/webserver/WebserverAPI.java @@ -481,6 +481,11 @@ protected void service(HttpServletRequest req, HttpServletResponse resp) throws } Logging.info(main, tenantIdentifier, "API ended: " + req.getRequestURI() + ". Method: " + req.getMethod(), false); + try { + RequestStats.getInstance(main, tenantIdentifier.toAppIdentifier()).updateRequestStats(); + } catch (TenantOrAppNotFoundException e) { + // Ignore the error as we would have already sent the response for tenantNotFound + } } protected String getRIDFromRequest(HttpServletRequest req) { diff --git a/src/main/java/io/supertokens/webserver/api/core/RequestStatsAPI.java b/src/main/java/io/supertokens/webserver/api/core/RequestStatsAPI.java new file mode 100644 index 000000000..2cde53961 --- /dev/null +++ b/src/main/java/io/supertokens/webserver/api/core/RequestStatsAPI.java @@ -0,0 +1,61 @@ +/* + * Copyright (c) 2020, VRAI Labs and/or its affiliates. All rights reserved. + * + * This software is licensed under the Apache License, Version 2.0 (the + * "License") as published by the Apache Software Foundation. + * + * You may not use this file except in compliance with the License. You may + * obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + */ + +package io.supertokens.webserver.api.core; + +import com.google.gson.JsonObject; +import io.supertokens.Main; +import io.supertokens.cliOptions.CLIOptions; +import io.supertokens.multitenancy.exception.BadPermissionException; +import io.supertokens.pluginInterface.multitenancy.AppIdentifier; +import io.supertokens.pluginInterface.multitenancy.TenantIdentifier; +import io.supertokens.pluginInterface.multitenancy.exceptions.TenantOrAppNotFoundException; +import io.supertokens.webserver.InputParser; +import io.supertokens.webserver.RequestStats; +import io.supertokens.webserver.WebserverAPI; +import jakarta.servlet.ServletException; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; + +import java.io.File; +import java.io.IOException; + +public class RequestStatsAPI extends WebserverAPI { + private static final long serialVersionUID = -4641988458637882374L; + + public RequestStatsAPI(Main main) { + super(main, ""); + } + + @Override + public String getPath() { + return "/requests/stats"; + } + + @Override + protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException, ServletException { + // API is app specific + try { + AppIdentifier appIdentifier = getAppIdentifierWithStorageFromRequestAndEnforcePublicTenant(req); + JsonObject stats = RequestStats.getInstance(main, appIdentifier).getStats(); + stats.addProperty("status", "OK"); + super.sendJsonResponse(200, stats, resp); + + } catch (BadPermissionException | TenantOrAppNotFoundException e) { + throw new ServletException(e); + } + } +} diff --git a/src/test/java/io/supertokens/test/RequestStatsTest.java b/src/test/java/io/supertokens/test/RequestStatsTest.java new file mode 100644 index 000000000..807ef6e68 --- /dev/null +++ b/src/test/java/io/supertokens/test/RequestStatsTest.java @@ -0,0 +1,289 @@ +/* + * Copyright (c) 2023, VRAI Labs and/or its affiliates. All rights reserved. + * + * This software is licensed under the Apache License, Version 2.0 (the + * "License") as published by the Apache Software Foundation. + * + * You may not use this file except in compliance with the License. You may + * obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + */ + +package io.supertokens.test; + +import com.google.gson.JsonArray; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import io.supertokens.ProcessState; +import io.supertokens.featureflag.EE_FEATURES; +import io.supertokens.featureflag.FeatureFlagTestContent; +import io.supertokens.multitenancy.Multitenancy; +import io.supertokens.pluginInterface.STORAGE_TYPE; +import io.supertokens.pluginInterface.multitenancy.*; +import io.supertokens.pluginInterface.multitenancy.exceptions.TenantOrAppNotFoundException; +import io.supertokens.storageLayer.StorageLayer; +import io.supertokens.test.httpRequest.HttpRequestForTesting; +import io.supertokens.test.httpRequest.HttpResponseException; +import io.supertokens.test.multitenant.api.TestMultitenancyAPIHelper; +import io.supertokens.webserver.RequestStats; +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.Rule; +import org.junit.Test; +import org.junit.rules.TestRule; + +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.TimeUnit; + +import static org.junit.Assert.*; + +public class RequestStatsTest { + @Rule + public TestRule watchman = Utils.getOnFailure(); + + @AfterClass + public static void afterTesting() { + Utils.afterTesting(); + } + + @Before + public void beforeEach() { + Utils.reset(); + } + + @Test + public void testLastMinuteStats() throws Exception { + String[] args = {"../"}; + + TestingProcessManager.TestingProcess process = TestingProcessManager.start(args); + assertNotNull(process.checkOrWaitForEvent(ProcessState.PROCESS_STATE.STARTED)); + + if (StorageLayer.getStorage(process.getProcess()).getType() != STORAGE_TYPE.SQL) { + return; + } + + // Wait for a minute to pass + Thread.sleep(60000 - (System.currentTimeMillis() % 60000) + 100); + + ExecutorService ex = Executors.newFixedThreadPool(100); + int numRequests = 1000; + for (int i = 0; i < numRequests; i++) { + int finalI = i; + ex.execute(() -> { + try { + TestMultitenancyAPIHelper.epSignUp(TenantIdentifier.BASE_TENANT, "test" + finalI + "@example.com", "password", process.getProcess()); + } catch (Exception e) { + throw new RuntimeException(e); + } + }); + } + + ex.shutdown(); + ex.awaitTermination(45, TimeUnit.SECONDS); // should finish in 45 seconds + + // Wait for a minute to pass + Thread.sleep(60000 - (System.currentTimeMillis() % 60000) + 100); + + JsonObject stats = HttpRequestForTesting + .sendGETRequest(process.getProcess(), "", "http://localhost:3567/requests/stats", null, 5000, + 5000, null, Utils.getCdiVersionStringLatestForTests(), null); + + JsonArray avgRps = stats.get("averageRequestsPerSecond").getAsJsonArray(); + JsonArray peakRps = stats.get("peakRequestsPerSecond").getAsJsonArray(); + + double avg = 10000; + + int count = 0; + for (JsonElement e : avgRps) { + if (e.getAsDouble() == -1) { + count++; + } else { + assertEquals(numRequests, Math.round(e.getAsDouble() * 60)); + avg = e.getAsDouble(); + } + } + assertEquals(1439, count); + + count = 0; + for (JsonElement e : peakRps) { + if (e.getAsInt() == -1) { + count++; + } else { + assertTrue(e.getAsInt() > avg); + } + } + assertEquals(1439, count); + + assertEquals(System.currentTimeMillis() / 60000, stats.get("atMinute").getAsLong()); + + process.kill(); + assertNotNull(process.checkOrWaitForEvent(ProcessState.PROCESS_STATE.STOPPED)); + } + + @Test + public void testLastMinuteStatsPerApp() throws Exception { + String[] args = {"../"}; + + TestingProcessManager.TestingProcess process = TestingProcessManager.start(args, false); + FeatureFlagTestContent.getInstance(process.getProcess()) + .setKeyValue(FeatureFlagTestContent.ENABLED_FEATURES, new EE_FEATURES[]{ + EE_FEATURES.MULTI_TENANCY}); + process.startProcess(); + assertNotNull(process.checkOrWaitForEvent(ProcessState.PROCESS_STATE.STARTED)); + + if (StorageLayer.getStorage(process.getProcess()).getType() != STORAGE_TYPE.SQL) { + return; + } + + Multitenancy.addNewOrUpdateAppOrTenant(process.getProcess(), new TenantConfig( + new TenantIdentifier(null, "a1", null), + new EmailPasswordConfig(true), + new ThirdPartyConfig(true, null), + new PasswordlessConfig(true), + new JsonObject() + ), false); + + // Wait for a minute to pass + Thread.sleep(60000 - (System.currentTimeMillis() % 60000) + 100); + + ExecutorService ex = Executors.newFixedThreadPool(100); + int numRequests = 500; + for (int i = 0; i < numRequests; i++) { + int finalI = i; + ex.execute(() -> { + try { + TestMultitenancyAPIHelper.epSignUp(TenantIdentifier.BASE_TENANT, "test" + finalI + "@example.com", "password", process.getProcess()); + } catch (Exception e) { + // ignore + } + if (finalI < 400) { + try { + TestMultitenancyAPIHelper.epSignUp(new TenantIdentifier(null, "a1", null), "test" + finalI + "@example.com", "password", process.getProcess()); + } catch (Exception e) { + // ignore + } + } + }); + } + + ex.shutdown(); + ex.awaitTermination(45, TimeUnit.SECONDS); // should finish in 45 seconds + + // Wait for a minute to pass + Thread.sleep(60000 - (System.currentTimeMillis() % 60000) + 100); + + { + JsonObject stats = HttpRequestForTesting + .sendGETRequest(process.getProcess(), "", "http://localhost:3567/requests/stats", null, 5000, + 5000, null, Utils.getCdiVersionStringLatestForTests(), null); + + JsonArray avgRps = stats.get("averageRequestsPerSecond").getAsJsonArray(); + JsonArray peakRps = stats.get("peakRequestsPerSecond").getAsJsonArray(); + + double avg = 10000; + + int count = 0; + for (JsonElement e : avgRps) { + if (e.getAsDouble() == -1) { + count++; + } else { + assertEquals(numRequests, Math.round(e.getAsDouble() * 60)); + avg = e.getAsDouble(); + } + } + assertEquals(1439, count); + + count = 0; + for (JsonElement e : peakRps) { + if (e.getAsInt() == -1) { + count++; + } else { + assertTrue(e.getAsInt() > avg); + } + } + assertEquals(1439, count); + + assertEquals(System.currentTimeMillis() / 60000, stats.get("atMinute").getAsLong()); + } + + { + JsonObject stats = HttpRequestForTesting + .sendGETRequest(process.getProcess(), "", "http://localhost:3567/appid-a1/requests/stats", null, 1000, + 1000, null, Utils.getCdiVersionStringLatestForTests(), null); + + JsonArray avgRps = stats.get("averageRequestsPerSecond").getAsJsonArray(); + JsonArray peakRps = stats.get("peakRequestsPerSecond").getAsJsonArray(); + + double avg = 10000; + + int count = 0; + for (JsonElement e : avgRps) { + if (e.getAsDouble() == -1) { + count++; + } else { + assertEquals(400, Math.round(e.getAsDouble() * 60)); + avg = e.getAsDouble(); + } + } + assertEquals(1439, count); + + count = 0; + for (JsonElement e : peakRps) { + if (e.getAsInt() == -1) { + count++; + } else { + assertTrue(e.getAsInt() > avg); + } + } + assertEquals(1439, count); + + assertEquals(System.currentTimeMillis() / 60000, stats.get("atMinute").getAsLong()); + } + + process.kill(); + assertNotNull(process.checkOrWaitForEvent(ProcessState.PROCESS_STATE.STOPPED)); + } + + @Test + public void testWithNonExistantApp() throws Exception { + String[] args = {"../"}; + + TestingProcessManager.TestingProcess process = TestingProcessManager.start(args, false); + FeatureFlagTestContent.getInstance(process.getProcess()) + .setKeyValue(FeatureFlagTestContent.ENABLED_FEATURES, new EE_FEATURES[]{ + EE_FEATURES.MULTI_TENANCY}); + process.startProcess(); + assertNotNull(process.checkOrWaitForEvent(ProcessState.PROCESS_STATE.STARTED)); + + if (StorageLayer.getStorage(process.getProcess()).getType() != STORAGE_TYPE.SQL) { + return; + } + + try { + RequestStats.getInstance(process.getProcess(), new AppIdentifier(null, "a1")); + fail(); + } catch (TenantOrAppNotFoundException e) { + // ok + } + + try { + JsonObject stats = HttpRequestForTesting + .sendGETRequest(process.getProcess(), "", "http://localhost:3567/appid-a1/requests/stats", null, 1000, + 1000, null, Utils.getCdiVersionStringLatestForTests(), null); + fail(); + } catch (HttpResponseException e) { + assertEquals(400, e.statusCode); + assertEquals("Http error. Status Code: 400. Message: AppId or tenantId not found => Tenant with the following connectionURIDomain, appId and tenantId combination not found: (, a1, public)", e.getMessage()); + } + + process.kill(); + assertNotNull(process.checkOrWaitForEvent(ProcessState.PROCESS_STATE.STOPPED)); + } + +} From b9d2044fd787f9366aaa9308fe03cb3b63cbd6a8 Mon Sep 17 00:00:00 2001 From: rishabhpoddar Date: Fri, 3 Nov 2023 16:03:11 +0530 Subject: [PATCH 4/4] adding dev-v7.0.10 tag to this commit to ensure building --- cli/jar/cli.jar | Bin 47546 -> 47546 bytes downloader/jar/downloader.jar | Bin 15229 -> 15229 bytes ee/jar/ee.jar | Bin 14423 -> 14423 bytes jar/{core-7.0.9.jar => core-7.0.10.jar} | Bin 729433 -> 733019 bytes 4 files changed, 0 insertions(+), 0 deletions(-) rename jar/{core-7.0.9.jar => core-7.0.10.jar} (90%) diff --git a/cli/jar/cli.jar b/cli/jar/cli.jar index eface8b58a5b716af96bef68c96a2ef763552223..62da37bc3eb8b391b8beac308bb1017c4c45999a 100644 GIT binary patch delta 835 zcmdn>nQ7N&Cf)#VW)?061`ZB}gofmaylTuK%FIg*NQE;10TYM-0%jo2%-3gTK-I8J z2dv?$0f?H+!DtVnH+wNoVFe33WOD}#XtSq@fd!_>x`GAn$TsqV1wO_bPoAtT2o_wf zy_*Xxm}(XP7T967pApQcvUnf@mWlQC1PiS6T?Vtkc=GvRj>)~jJYb1A!8L4PhIEu9 z3z%UZw;gQANMr-+U>@ z2V%Tp;aZ4k7t3tG#tW3kfPJw!zpZ~$&rTKEIv8`;GcV4V?*IUx2YulN8Gm>jn9FN9uY0;YRcfg@$|`Bi!# z{-o7bU}4+Uc3`@0wJ(@Hw>l9_8?6Zi(_L#a!SuH^!C=~FZ7PJ`Bt7~3T5~X)b6ql+ z&R-V?rZ23U38r(_SA*$S>%+mc%Z6Mqy=4Q$Y@Uq}vnw{HfyEzg%mC9qn}Wdf!c7o! zeSmf;ZHCwtvl$|GXtM`c4eu6+-m)zaJ1%VT0*lLTjRw=zTOsa!ycObp%WYv`@k!et w`tNQ7r?JTf+ac!6+zw7zlb>#f$Q$fP0;`|8!wpQ|+W|4hWG5utN_V;f0M}YF@c;k- delta 835 zcmdn>nQ7N&Cf)#VW)?061`ZB}mnn%8dDWOfl$n>>i3}s{HDCtvCUY>_gXqm(j8j;_0uR~T!2;UsX<}f3DYC9$fjhE|ykLQk@y3%U zYYTz}muv6l0t=>^1%L&1nC)i-GpZ~eh=65ceLcYfD}9&2Y%rdDKA2;2Z!iy7Voq=k z8<-&-CCLJ2n8$4g8#4K0ybD;sB4IW}FUanIG}g&{X%M}#X{Bs@s2-ne*eN;LehU{r zn#VU^%JG31uUNPiV%o(r8?f;LIET4ysCh%tH1 zWGAq|$H~tjN^VbM=i&p(AO$|y4V(+bzzUTX{$K>_lwE8A7Km8P!3q{gUhx4;hpqez zp;wuJ>E2b~NSS6^cfw+_FR{MhKbE^}HKwZVEV$knP56+eKnYVwLTn7yKKk>(_1z`%;wn$F}q@8 z8d&_{#tbm+vndEnFWdw%*9T~q(q@QVF`FS`hcn+a diff --git a/downloader/jar/downloader.jar b/downloader/jar/downloader.jar index 2e37621121cfeb528898ba3dc76d53a6e621e14e..5149fd6f524a2169557030fdd6facb996358e527 100644 GIT binary patch delta 375 zcmexc_P2~Tz?+$ci-CcIgCVIQc_ObGGl(+tQUg-q3_!pHB7lGyh%@u`nHf+uEYksN zxM~ifHuE#CWCJlK?`C%f3ovp7vqA;5C;OW7Ozz|50ZYu~y~zb;R7&(Qff-!VRba;C zc3CH|z!}-;5ScWE;}C{{avL{DYVuA!N3fE=dTbCqY=-t=0T07!X0VE5CMIC|uL)RU zvc0Jum|tLO1*X@Ux`OGirmoM1kp<76D-T ijYSrijx!fR diff --git a/ee/jar/ee.jar b/ee/jar/ee.jar index eb8bc402a6c82481b27f38c1b081708fa1aa2626..4b82647b229afbc47dc1fb37551f6e9c8bd0824a 100644 GIT binary patch delta 220 zcmca!aJ_&xz?+$ci-CcIgCV6Mc_ObGGl(+tQUg-q3_!pHB7lGyh%@u`nHf+uEYo2I zX}GEnq9(I5T7c-yPK-xbzzj~ddrV-)D~@(;u#yrJh|*;yjbOf(sR@`)G_?oQi%s>w t^c7PpFfC|i3#J3j+`#lKvnVkA-7E-9`jT0A|Nb Aa{vGU diff --git a/jar/core-7.0.9.jar b/jar/core-7.0.10.jar similarity index 90% rename from jar/core-7.0.9.jar rename to jar/core-7.0.10.jar index bf8c7d2e23b4b9e058974f6f6c91d36a8c400683..11cd2f3481ca4383eb4cb14fa3144ad7816c9ca0 100644 GIT binary patch delta 33027 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%0AJ=^3^8>};n3PM}Vuf(64 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