From e37ab8acf05f70f146364807c91e5da9c1126273 Mon Sep 17 00:00:00 2001
From: Jukka Zitting <jukka@apache.org>
Date: Wed, 29 Sep 2010 10:45:13 +0200
Subject: [PATCH] JCR-2727: Add user manager performance tests

Better scaling of the user manager performance tests.
Also use new test features like loginWriter().
---
 .../performance/AddGroupMembersTest.java           |   34 +++++++++++--------
 .../jackrabbit/performance/CreateUserTest.java     |   22 ++++++-------
 .../performance/GroupGetMembersTest.java           |   11 ++----
 .../performance/GroupMemberLookupTest.java         |   35 ++++++++-----------
 4 files changed, 48 insertions(+), 54 deletions(-)

diff --git a/test/performance/base/src/main/java/org/apache/jackrabbit/performance/AddGroupMembersTest.java b/test/performance/base/src/main/java/org/apache/jackrabbit/performance/AddGroupMembersTest.java
index e580cde..52408e4 100644
--- a/test/performance/base/src/main/java/org/apache/jackrabbit/performance/AddGroupMembersTest.java
+++ b/test/performance/base/src/main/java/org/apache/jackrabbit/performance/AddGroupMembersTest.java
@@ -21,48 +21,52 @@ import org.apache.jackrabbit.api.security.user.Group;
 import org.apache.jackrabbit.api.security.user.User;
 import org.apache.jackrabbit.api.security.user.UserManager;
 
-import javax.jcr.Session;
-
 import java.security.Principal;
 
 public class AddGroupMembersTest extends AbstractTest {
+
+    private static final int USER_COUNT = getScale(100);
+
     private static final Principal GROUP_PRINCIPAL = new Principal() {
         public String getName() {
             return "test_group";
         }
     };
 
-    private Session session;
     private UserManager userMgr;
-    private int userCount;
     private Group group;
-    private User currentUser;
+    private User[] users;
 
     @Override
     protected void beforeSuite() throws Exception {
-        session = getRepository().login(getCredentials());
-        userMgr = ((JackrabbitSession) session).getUserManager();
+        userMgr = ((JackrabbitSession) loginWriter()).getUserManager();
         group = userMgr.createGroup(GROUP_PRINCIPAL);
+        users = new User[USER_COUNT];
+        for (int i = 0; i < users.length; i++) {
+            users[i] = userMgr.createUser("user_" + i, "pass");
+        }
     }
 
     @Override
-    protected void beforeTest() throws Exception {
-        currentUser = userMgr.createUser("user_" + userCount, "pass");
-        userCount++;
+    protected void runTest() throws Exception {
+        for (int i = 0; i < users.length; i++) {
+            group.addMember(users[i]);
+        }
     }
 
     @Override
-    protected void runTest() throws Exception {
-        group.addMember(currentUser);
+    protected void afterTest() throws Exception {
+        for (int i = 0; i < users.length; i++) {
+            group.removeMember(users[i]);
+        }
     }
 
     @Override
     protected void afterSuite() throws Exception {
-        for (int k = 0; k < userCount; k++) {
-            userMgr.getAuthorizable("user_" + k).remove();
+        for (int i = 0; i < users.length; i++) {
+            users[i].remove();
         }
         group.remove();
-        session.logout();
     }
 
 }
diff --git a/test/performance/base/src/main/java/org/apache/jackrabbit/performance/CreateUserTest.java b/test/performance/base/src/main/java/org/apache/jackrabbit/performance/CreateUserTest.java
index 452dabf..2fdc50e 100644
--- a/test/performance/base/src/main/java/org/apache/jackrabbit/performance/CreateUserTest.java
+++ b/test/performance/base/src/main/java/org/apache/jackrabbit/performance/CreateUserTest.java
@@ -19,31 +19,29 @@ package org.apache.jackrabbit.performance;
 import org.apache.jackrabbit.api.JackrabbitSession;
 import org.apache.jackrabbit.api.security.user.UserManager;
 
-import javax.jcr.Session;
-
 public class CreateUserTest extends AbstractTest {
-    private Session session;
+
+    private static final int USER_COUNT = getScale(100);
+
     private UserManager userMgr;
-    private int userCount;
 
     @Override
     protected void beforeSuite() throws Exception {
-        session = getRepository().login(getCredentials());
-        userMgr = ((JackrabbitSession) session).getUserManager();
+        userMgr = ((JackrabbitSession) loginWriter()).getUserManager();
     }
 
     @Override
     protected void runTest() throws Exception {
-        userMgr.createUser("user_" + userCount, "pass");
-        userCount++;
+        for (int i = 0; i < USER_COUNT; i++) {
+            userMgr.createUser("user_" + i, "pass");
+        }
     }
 
     @Override
-    protected void afterSuite() throws Exception {
-        for (int k = 0; k < userCount; k++) {
-            userMgr.getAuthorizable("user_" + k).remove();
+    protected void afterTest() throws Exception {
+        for (int i = 0; i < USER_COUNT; i++) {
+            userMgr.getAuthorizable("user_" + i).remove();
         }
-        session.logout();
     }
 
 }
diff --git a/test/performance/base/src/main/java/org/apache/jackrabbit/performance/GroupGetMembersTest.java b/test/performance/base/src/main/java/org/apache/jackrabbit/performance/GroupGetMembersTest.java
index 6ff3faf..dc2b001 100644
--- a/test/performance/base/src/main/java/org/apache/jackrabbit/performance/GroupGetMembersTest.java
+++ b/test/performance/base/src/main/java/org/apache/jackrabbit/performance/GroupGetMembersTest.java
@@ -20,27 +20,25 @@ import org.apache.jackrabbit.api.JackrabbitSession;
 import org.apache.jackrabbit.api.security.user.Group;
 import org.apache.jackrabbit.api.security.user.UserManager;
 
-import javax.jcr.Session;
-
 import java.security.Principal;
 import java.util.Iterator;
 
 public class GroupGetMembersTest extends AbstractTest {
-    private static int USER_COUNT = 2000;
+
+    private static int USER_COUNT = getScale(2000);
+
     private static final Principal GROUP_PRINCIPAL = new Principal() {
         public String getName() {
             return "test_group";
         }
     };
 
-    private Session session;
     private UserManager userMgr;
     private Group group;
 
     @Override
     protected void beforeSuite() throws Exception {
-        session = getRepository().login(getCredentials());
-        userMgr = ((JackrabbitSession) session).getUserManager();
+        userMgr = ((JackrabbitSession) loginWriter()).getUserManager();
         group = userMgr.createGroup(GROUP_PRINCIPAL);
         for (int k = 0; k < USER_COUNT; k++) {
             group.addMember(userMgr.createUser("user_" + k, "pass"));
@@ -64,7 +62,6 @@ public class GroupGetMembersTest extends AbstractTest {
             userMgr.getAuthorizable("user_" + k).remove();
         }
         group.remove();
-        session.logout();
     }
 
 }
diff --git a/test/performance/base/src/main/java/org/apache/jackrabbit/performance/GroupMemberLookupTest.java b/test/performance/base/src/main/java/org/apache/jackrabbit/performance/GroupMemberLookupTest.java
index b1249d7..0bba572 100644
--- a/test/performance/base/src/main/java/org/apache/jackrabbit/performance/GroupMemberLookupTest.java
+++ b/test/performance/base/src/main/java/org/apache/jackrabbit/performance/GroupMemberLookupTest.java
@@ -17,17 +17,17 @@
 package org.apache.jackrabbit.performance;
 
 import org.apache.jackrabbit.api.JackrabbitSession;
-import org.apache.jackrabbit.api.security.user.Authorizable;
 import org.apache.jackrabbit.api.security.user.Group;
+import org.apache.jackrabbit.api.security.user.User;
 import org.apache.jackrabbit.api.security.user.UserManager;
 
-import javax.jcr.Session;
-
 import java.security.Principal;
 import java.util.Random;
 
 public class GroupMemberLookupTest extends AbstractTest {
-    private static int USER_COUNT = 2000;
+
+    private static int USER_COUNT = getScale(2000);
+
     private static final Principal GROUP_PRINCIPAL = new Principal() {
         public String getName() {
             return "test_group";
@@ -36,39 +36,34 @@ public class GroupMemberLookupTest extends AbstractTest {
 
     private final Random rng = new Random();
 
-    private Session session;
     private UserManager userMgr;
     private Group group;
-    private Authorizable user;
+    private User[] users;
 
     @Override
     protected void beforeSuite() throws Exception {
-        session = getRepository().login(getCredentials());
-        userMgr = ((JackrabbitSession) session).getUserManager();
+        userMgr = ((JackrabbitSession) loginWriter()).getUserManager();
         group = userMgr.createGroup(GROUP_PRINCIPAL);
-        for (int k = 0; k < USER_COUNT; k++) {
-            group.addMember(userMgr.createUser("user_" + k, "pass"));
+        users = new User[USER_COUNT];
+        for (int i = 0; i < users.length; i++) {
+            users[i] = userMgr.createUser("user_" + i, "pass");
+            group.addMember(users[i]);
         }
     }
 
     @Override
-    protected void beforeTest() throws Exception {
-        String id = "user_" + rng.nextInt(USER_COUNT);
-        user = userMgr.getAuthorizable(id);
-    }
-
-    @Override
     protected void runTest() throws Exception {
-        group.isMember(user);
+        for (int i = 0; i < 1000; i++) {
+            group.isMember(users[rng.nextInt(users.length)]);
+        }
     }
 
     @Override
     protected void afterSuite() throws Exception {
-        for (int k = 0; k < USER_COUNT; k++) {
-            userMgr.getAuthorizable("user_" + k).remove();
+        for (int i = 0; i < users.length; i++) {
+            users[i].remove();
         }
         group.remove();
-        session.logout();
     }
 
 }
-- 
1.6.2.5

