Author: taylor
Date: Tue Mar 23 21:43:39 2010
New Revision: 926801
URL: http://svn.apache.org/viewvc?rev=926801&view=rev
Log:
http://issues.apache.org/jira/browse/JS2-964
contribution from Joachim Muller
Added:
portals/jetspeed-2/portal/trunk/components/jetspeed-security/src/test/java/org/apache/jetspeed/security/LocalTestUserManagerPerformance.java
(with props)
Modified:
portals/jetspeed-2/portal/trunk/components/jetspeed-capability/pom.xml
portals/jetspeed-2/portal/trunk/components/jetspeed-capability/src/test/java/org/apache/jetspeed/capabilities/TestCapability.java
portals/jetspeed-2/portal/trunk/components/jetspeed-rdbms/src/main/java/org/apache/jetspeed/components/datasource/DBCPDatasourceComponent.java
portals/jetspeed-2/portal/trunk/components/jetspeed-rdbms/src/main/java/org/apache/jetspeed/components/jndi/JetspeedTestJNDIComponent.java
portals/jetspeed-2/portal/trunk/components/jetspeed-rdbms/src/main/java/org/apache/jetspeed/components/rdbms/ojb/DatabasePlatformConfigurator.java
portals/jetspeed-2/portal/trunk/components/jetspeed-rdbms/src/main/java/org/apache/jetspeed/components/util/DatasourceTestCase.java
portals/jetspeed-2/portal/trunk/components/jetspeed-rdbms/src/test/java/org/apache/jetspeed/components/TestRDBMS.java
Modified: portals/jetspeed-2/portal/trunk/components/jetspeed-capability/pom.xml
URL:
http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-capability/pom.xml?rev=926801&r1=926800&r2=926801&view=diff
==============================================================================
--- portals/jetspeed-2/portal/trunk/components/jetspeed-capability/pom.xml
(original)
+++ portals/jetspeed-2/portal/trunk/components/jetspeed-capability/pom.xml Tue
Mar 23 21:43:39 2010
@@ -81,6 +81,21 @@
<version>${org.apache.jetspeed.test.jdbc.driver.version}</version>
<scope>test</scope>
</dependency>
+ <!--
+ Note: tyrex and junit is normally required only for test, but in this
case, abstract test cases are included in
+ the component build... this should probably be fixed... for now, assume
that junit will be provided if these test
+ classes are used.
+ -->
+ <dependency>
+ <groupId>tyrex</groupId>
+ <artifactId>tyrex</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <scope>test</scope>
+ </dependency>
</dependencies>
<build>
Modified:
portals/jetspeed-2/portal/trunk/components/jetspeed-capability/src/test/java/org/apache/jetspeed/capabilities/TestCapability.java
URL:
http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-capability/src/test/java/org/apache/jetspeed/capabilities/TestCapability.java?rev=926801&r1=926800&r2=926801&view=diff
==============================================================================
---
portals/jetspeed-2/portal/trunk/components/jetspeed-capability/src/test/java/org/apache/jetspeed/capabilities/TestCapability.java
(original)
+++
portals/jetspeed-2/portal/trunk/components/jetspeed-capability/src/test/java/org/apache/jetspeed/capabilities/TestCapability.java
Tue Mar 23 21:43:39 2010
@@ -25,6 +25,7 @@ import java.util.Set;
import junit.framework.Test;
import org.apache.jetspeed.components.test.AbstractSpringTestCase;
+import org.apache.jetspeed.components.util.DatasourceEnabledSpringTestCase;
import org.apache.jetspeed.serializer.JetspeedSerializer;
@@ -34,22 +35,10 @@ import org.apache.jetspeed.serializer.Je
* @author <a href="[email protected]">Roger Ruttimann</a>
* @version $Id$
*/
-public class TestCapability extends AbstractSpringTestCase
+public class TestCapability extends DatasourceEnabledSpringTestCase
{
private Capabilities capabilities = null;
- /**
- * Start the tests.
- *
- * @param args
- * the arguments. Not used
- */
- public static void main(String args[])
- {
- junit.awtui.TestRunner.main(new String[]
- { TestCapability.class.getName() });
- }
-
protected void setUp() throws Exception
{
super.setUp();
@@ -63,7 +52,6 @@ public class TestCapability extends Abst
public void firstTestSetup() throws Exception
{
- System.out.println("firstTestSetup");
JetspeedSerializer serializer =
(JetspeedSerializer)scm.getComponent("serializer");
serializer.deleteData();
serializer.importData(getBaseDir()+"target/test-classes/j2-seed.xml");
@@ -71,7 +59,6 @@ public class TestCapability extends Abst
public void lastTestTeardown() throws Exception
{
- System.out.println("lastTestTeardown");
JetspeedSerializer serializer =
(JetspeedSerializer)scm.getComponent("serializer");
serializer.deleteData();
}
@@ -423,14 +410,7 @@ public class TestCapability extends Abst
capabilities.deleteMediaType(mediaType);
existingObject = capabilities.getMediaType(name);
assertNull("creating new mediaType delete from storage didn't
work",existingObject);
-
-
-
-
-
}
-
-
public void testNewClient() throws Exception
{
@@ -456,16 +436,13 @@ public class TestCapability extends Abst
String existingKey = (String)_it.next();
Client existingObject = (Client)_hash.get(existingKey);
assertNotNull("Couldn't identify existing object to run
test",existingObject);
-
// "create" existing one
client = capabilities.createClient(existingKey);
assertNotNull("creating 'existing' client returns null", client);
assertTrue("creating 'existing' client didn't return existing object",
(client.equals(existingObject)));
-
-
- // setting fields
+ // setting fields
String name = "TEST CLIENT";
int numCapabilities = 3;
int numMimeTypes = 4;
@@ -488,7 +465,7 @@ public class TestCapability extends Abst
String manufacturer = "Test Manufacturer";
String model = "XYZ";
-// set object fields
+ // set object fields
client.setUserAgentPattern(userAgentPattern);
client.setManufacturer(manufacturer);
client.setModel(model);
@@ -500,12 +477,8 @@ public class TestCapability extends Abst
set = new ArrayList(someMimeTypes.values());
client.setCapabilities(set);
assertTrue("number of MimeTypes added (" + set.size() + ") not the
same as expected ("+numCapabilities+")",(set.size()==numMimeTypes));
-
// setting links:
-
-
-
capabilities.storeClient(client);
existingObject = capabilities.getClient(name);
assertNotNull("creating and saving new client didn't store
object",existingObject);
@@ -513,14 +486,7 @@ public class TestCapability extends Abst
capabilities.deleteClient(client);
existingObject = capabilities.getClient(name);
assertNull("creating new client delete from storage didn't
work",existingObject);
-
-
-
-
-
}
-
-
public void testCapabilityRepeat() throws Exception
{
@@ -535,12 +501,6 @@ public class TestCapability extends Abst
{ "capabilities.xml", "transaction.xml", "serializer.xml" };
}
- protected String[] getBootConfigurations()
- {
- return new String[]
- { "boot/datasource.xml"};
- }
-
protected String getBeanDefinitionFilterCategories()
{
return "default,jdbcDS";
Modified:
portals/jetspeed-2/portal/trunk/components/jetspeed-rdbms/src/main/java/org/apache/jetspeed/components/datasource/DBCPDatasourceComponent.java
URL:
http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-rdbms/src/main/java/org/apache/jetspeed/components/datasource/DBCPDatasourceComponent.java?rev=926801&r1=926800&r2=926801&view=diff
==============================================================================
---
portals/jetspeed-2/portal/trunk/components/jetspeed-rdbms/src/main/java/org/apache/jetspeed/components/datasource/DBCPDatasourceComponent.java
(original)
+++
portals/jetspeed-2/portal/trunk/components/jetspeed-rdbms/src/main/java/org/apache/jetspeed/components/datasource/DBCPDatasourceComponent.java
Tue Mar 23 21:43:39 2010
@@ -21,6 +21,7 @@ import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.Driver;
import java.sql.DriverManager;
+import java.sql.SQLException;
import java.util.Properties;
import javax.sql.DataSource;
@@ -29,10 +30,10 @@ import org.apache.commons.dbcp.Connectio
import org.apache.commons.dbcp.DriverManagerConnectionFactory;
import org.apache.commons.dbcp.PoolableConnectionFactory;
import org.apache.commons.dbcp.PoolingDataSource;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
import org.apache.commons.pool.ObjectPool;
import org.apache.commons.pool.impl.GenericObjectPool;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
/**
* <p>
@@ -180,13 +181,18 @@ public class DBCPDatasourceComponent imp
{
try
{
- log.info("Stopping DBCPCDatasourceComponent");
+ if (log.isInfoEnabled()) {
+ log.info("Stopping DBCPCDatasourceComponent");
+ }
dsConnectionFactory.getPool().close();
// Support for using an embedded Derby database multiple times
from one JVM
// by properly shutting it down after each (test) run
if (driverName.equals("org.apache.derby.jdbc.EmbeddedDriver"))
{
+ if (log.isInfoEnabled()) {
+ log.info("Shutting down derby ...");
+ }
String shutDownURI = null;
int parIndex = connectURI.indexOf(";");
if (parIndex > -1)
@@ -207,14 +213,33 @@ public class DBCPDatasourceComponent imp
}
}
+ catch (SQLException e) {
+ if (
driverName.equals("org.apache.derby.jdbc.EmbeddedDriver") &&
(e.getSQLState().equals("XJ015") || e.getSQLState().equals("08006"))) {
+ if (log.isDebugEnabled()) {
+ log.debug("Database shut down normally with sql
state '" + e.getSQLState() + "'.");
+ }
+ } else {
+ IllegalStateException ise =
+ new IllegalStateException("Unable to safely shutdown
the DBCPConnection pool: " + e.toString());
+ ise.initCause(e);
+ try
+ {
+ log.error("Unable to safely shutdown the DBCPConnection
pool", ise);
+ }
+ catch (Exception e1)
+ {
+ // ignore if logger itself is gone too
+ }
+ }
+ }
catch (Exception e)
{
- IllegalStateException ise =
- new IllegalStateException("Unable to sfaely shutdown the
DBCPConnection pool: " + e.toString());
+ IllegalStateException ise =
+ new IllegalStateException("Unable to safely shutdown the
DBCPConnection pool: " + e.toString());
ise.initCause(e);
try
{
- log.error("Unable to sfaely shutdown the DBCPConnection pool",
ise);
+ log.error("Unable to safely shutdown the DBCPConnection pool",
ise);
}
catch (Exception e1)
{
Modified:
portals/jetspeed-2/portal/trunk/components/jetspeed-rdbms/src/main/java/org/apache/jetspeed/components/jndi/JetspeedTestJNDIComponent.java
URL:
http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-rdbms/src/main/java/org/apache/jetspeed/components/jndi/JetspeedTestJNDIComponent.java?rev=926801&r1=926800&r2=926801&view=diff
==============================================================================
---
portals/jetspeed-2/portal/trunk/components/jetspeed-rdbms/src/main/java/org/apache/jetspeed/components/jndi/JetspeedTestJNDIComponent.java
(original)
+++
portals/jetspeed-2/portal/trunk/components/jetspeed-rdbms/src/main/java/org/apache/jetspeed/components/jndi/JetspeedTestJNDIComponent.java
Tue Mar 23 21:43:39 2010
@@ -52,4 +52,13 @@ public class JetspeedTestJNDIComponent
datasourceComponent.stop();
jndi.unbindFromCurrentThread();
}
+
+ public BoundDBCPDatasourceComponent getDatasourceComponent() {
+ return datasourceComponent;
+ }
+
+ public JNDIComponent getJNDI() {
+ return jndi;
+ }
+
}
Modified:
portals/jetspeed-2/portal/trunk/components/jetspeed-rdbms/src/main/java/org/apache/jetspeed/components/rdbms/ojb/DatabasePlatformConfigurator.java
URL:
http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-rdbms/src/main/java/org/apache/jetspeed/components/rdbms/ojb/DatabasePlatformConfigurator.java?rev=926801&r1=926800&r2=926801&view=diff
==============================================================================
---
portals/jetspeed-2/portal/trunk/components/jetspeed-rdbms/src/main/java/org/apache/jetspeed/components/rdbms/ojb/DatabasePlatformConfigurator.java
(original)
+++
portals/jetspeed-2/portal/trunk/components/jetspeed-rdbms/src/main/java/org/apache/jetspeed/components/rdbms/ojb/DatabasePlatformConfigurator.java
Tue Mar 23 21:43:39 2010
@@ -88,7 +88,9 @@ public class DatabasePlatformConfigurato
{
platform = jcd.getDbms();
}
- System.out.println("##### platform = " + platform);
+ if (log.isInfoEnabled()) {
+ log.info("Detected database platform: " + platform);
+ }
}
/**
Modified:
portals/jetspeed-2/portal/trunk/components/jetspeed-rdbms/src/main/java/org/apache/jetspeed/components/util/DatasourceTestCase.java
URL:
http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-rdbms/src/main/java/org/apache/jetspeed/components/util/DatasourceTestCase.java?rev=926801&r1=926800&r2=926801&view=diff
==============================================================================
---
portals/jetspeed-2/portal/trunk/components/jetspeed-rdbms/src/main/java/org/apache/jetspeed/components/util/DatasourceTestCase.java
(original)
+++
portals/jetspeed-2/portal/trunk/components/jetspeed-rdbms/src/main/java/org/apache/jetspeed/components/util/DatasourceTestCase.java
Tue Mar 23 21:43:39 2010
@@ -18,10 +18,9 @@ package org.apache.jetspeed.components.u
import junit.framework.TestCase;
-import org.apache.commons.pool.impl.GenericObjectPool;
import org.apache.jetspeed.components.datasource.BoundDBCPDatasourceComponent;
import org.apache.jetspeed.components.jndi.JNDIComponent;
-import org.apache.jetspeed.components.jndi.TyrexJNDIComponent;
+import org.apache.jetspeed.components.jndi.JetspeedTestJNDIComponent;
/**
* @author <a href="mailto:[email protected]">Scott T. Weaver </a>
@@ -33,6 +32,9 @@ public class DatasourceTestCase extends
protected BoundDBCPDatasourceComponent datasourceComponent;
protected JNDIComponent jndi;
+
+ protected JetspeedTestJNDIComponent jndiDS;
+
/**
*
@@ -57,16 +59,10 @@ public class DatasourceTestCase extends
*/
protected void setUp() throws Exception
{
- super.setUp();
- jndi = new TyrexJNDIComponent();
- String url = System.getProperty("org.apache.jetspeed.database.url");
- String driver =
System.getProperty("org.apache.jetspeed.database.driver");
- String user = System.getProperty("org.apache.jetspeed.database.user");
- String password =
System.getProperty("org.apache.jetspeed.database.password");
- datasourceComponent = new BoundDBCPDatasourceComponent(user, password,
driver, url, 20, 5000,
- GenericObjectPool.WHEN_EXHAUSTED_GROW, true, "jetspeed", jndi);
- datasourceComponent.start();
-
+ jndiDS = new JetspeedTestJNDIComponent();
+ jndiDS.setup();
+ super.setUp();
+ datasourceComponent = jndiDS.getDatasourceComponent();
}
/**
@@ -74,9 +70,7 @@ public class DatasourceTestCase extends
*/
protected void tearDown() throws Exception
{
- datasourceComponent.stop();
- jndi.unbindFromCurrentThread();
super.tearDown();
+ jndiDS.tearDown();
}
-
}
Modified:
portals/jetspeed-2/portal/trunk/components/jetspeed-rdbms/src/test/java/org/apache/jetspeed/components/TestRDBMS.java
URL:
http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-rdbms/src/test/java/org/apache/jetspeed/components/TestRDBMS.java?rev=926801&r1=926800&r2=926801&view=diff
==============================================================================
---
portals/jetspeed-2/portal/trunk/components/jetspeed-rdbms/src/test/java/org/apache/jetspeed/components/TestRDBMS.java
(original)
+++
portals/jetspeed-2/portal/trunk/components/jetspeed-rdbms/src/test/java/org/apache/jetspeed/components/TestRDBMS.java
Tue Mar 23 21:43:39 2010
@@ -15,9 +15,9 @@
* limitations under the License.
*/
package org.apache.jetspeed.components;
+
import java.sql.Connection;
-import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;
@@ -58,9 +58,6 @@ public class TestRDBMS extends Datasourc
{
assertTrue(DatasourceComponent.class.isAssignableFrom(DBCPDatasourceComponent.class));
- InitialContext context = new InitialContext();
- //look up from jndi
- assertNotNull(context.lookup("java:/jdbc/jetspeed"));
assertNotNull(datasourceComponent);
DataSource ds = datasourceComponent.getDatasource();
assertNotNull(ds);
@@ -68,12 +65,11 @@ public class TestRDBMS extends Datasourc
assertNotNull(conn);
assertFalse(conn.isClosed());
conn.close();
- (datasourceComponent).stop();
-
+ jndiDS.tearDown();
try
{
- context.lookup("java:/jdbc/jetspeed");
+ jndiDS.getJNDI().getRootContext().lookup("java:/jdbc/jetspeed");
assertNotNull("java:/jdbc/jetspeed was not unbound", null);
}
catch (NamingException e)
@@ -81,8 +77,6 @@ public class TestRDBMS extends Datasourc
}
-
-
}
Added:
portals/jetspeed-2/portal/trunk/components/jetspeed-security/src/test/java/org/apache/jetspeed/security/LocalTestUserManagerPerformance.java
URL:
http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-security/src/test/java/org/apache/jetspeed/security/LocalTestUserManagerPerformance.java?rev=926801&view=auto
==============================================================================
---
portals/jetspeed-2/portal/trunk/components/jetspeed-security/src/test/java/org/apache/jetspeed/security/LocalTestUserManagerPerformance.java
(added)
+++
portals/jetspeed-2/portal/trunk/components/jetspeed-security/src/test/java/org/apache/jetspeed/security/LocalTestUserManagerPerformance.java
Tue Mar 23 21:43:39 2010
@@ -0,0 +1,264 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); 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 org.apache.jetspeed.security;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+/**
+ * <p>
+ * Unit testing for {...@link UserManager}.
+ * </p>
+ *
+ * @author <a href="mailto:[email protected]">David Le Strat </a>
+ */
+public class LocalTestUserManagerPerformance extends AbstractSecurityTestcase
+{
+ public static Test suite()
+ {
+ return new TestSuite(LocalTestUserManagerPerformance.class);
+ }
+
+ /**
+ * <p>
+ * performance test user retrieval with low number of users.
+ * </p>
+ */
+ public void testUserRetrievalWithLowNumberOfUsers()
+ {
+ int nUsers = 20;
+ try
+ {
+
+ System.out.println("adding " + nUsers + " users...");
+ for (int i=0; i<nUsers; i++) {
+ ums.addUser("anon"+i);
+ }
+ System.out.println("done.");
+ System.gc();
+ long startTime = System.currentTimeMillis();
+ long freeMemory = Runtime.getRuntime().freeMemory();
+ UserResultList ul = ums.getUsersExtended(new
JetspeedPrincipalQueryContext(null, 0, 10));
+ System.out.println(nUsers + " user: get 10 users via
getUsers(null, null, 1, 10) ...");
+ System.out.println("... took " + (System.currentTimeMillis() -
startTime) + " ms, needed " + (freeMemory - Runtime.getRuntime().freeMemory())
/ 1024 + " kbytes.");
+ System.out.println("first retrieved principals name:" +
ul.getResults().get(0).getName());
+ assertEquals(ul.getResults().size(), 10);
+ System.gc();
+ startTime = System.currentTimeMillis();
+ freeMemory = Runtime.getRuntime().freeMemory();
+ ul = ums.getUsersExtended(new JetspeedPrincipalQueryContext(null,
10, 10));
+ System.out.println(nUsers + " user: get 10 users via
getUsers(null, null, 10, 10) ...");
+ System.out.println("... took " + (System.currentTimeMillis() -
startTime) + " ms, needed " + (freeMemory - Runtime.getRuntime().freeMemory())
/ 1024 + " kbytes.");
+ System.out.println("first retrieved principals name:" +
ul.getResults().get(0).getName());
+ assertEquals(ul.getResults().size(), 10);
+ System.gc();
+ startTime = System.currentTimeMillis();
+ freeMemory = Runtime.getRuntime().freeMemory();
+ List<User> l = ums.getUsers("");
+ System.out.println(nUsers + " user: get all users via
ums.getUsers(null)...");
+ System.out.println("... took " + (System.currentTimeMillis() -
startTime) + " ms, needed " + (freeMemory - Runtime.getRuntime().freeMemory())
/ 1024 + " kbytes.");
+ System.gc();
+ startTime = System.currentTimeMillis();
+ freeMemory = Runtime.getRuntime().freeMemory();
+ l = ums.getUsers("");
+ System.out.println(nUsers + " user: get all users via
ums.getUsers(null)...");
+ System.out.println("... took " + (System.currentTimeMillis() -
startTime) + " ms, needed " + (freeMemory - Runtime.getRuntime().freeMemory())
/ 1024 + " kbytes.");
+ }
+ catch (SecurityException sex)
+ {
+ assertTrue("user already exists. exception caught: " + sex, false);
+ }
+
+ try
+ {
+ System.out.println("removing " + nUsers + " users...");
+ for (int i=0; i<nUsers; i++) {
+ ums.removeUser("anon"+i);
+ }
+ }
+ catch (SecurityException sex)
+ {
+ assertTrue("could not remove user. exception caught: " + sex,
false);
+ }
+ }
+
+
+ /**
+ * <p>
+ * performance test user retrieval with medium number of users.
+ * </p>
+ */
+ public void testUserRetrievalWithMediumNumberOfUsers()
+ {
+
+ int nUsers = 300;
+ try
+ {
+
+ System.out.println("adding " + nUsers + " users...");
+ for (int i=0; i<nUsers; i++) {
+ ums.addUser("anon"+i);
+ }
+ System.out.println("done.");
+ System.gc();
+ long startTime = System.currentTimeMillis();
+ long freeMemory = Runtime.getRuntime().freeMemory();
+ UserResultList ul = ums.getUsersExtended(new
JetspeedPrincipalQueryContext(null, 0, 10));
+ System.out.println(nUsers + " user: get 10 users via
getUsers(null, null, 1, 10) ...");
+ System.out.println("... took " + (System.currentTimeMillis() -
startTime) + " ms, needed " + (freeMemory - Runtime.getRuntime().freeMemory())
/ 1024 + " kbytes.");
+ System.out.println("first retrieved principals name:" +
ul.getResults().get(0).getName());
+ assertEquals(ul.getResults().size(), 10);
+ System.gc();
+ startTime = System.currentTimeMillis();
+ freeMemory = Runtime.getRuntime().freeMemory();
+ ul = ums.getUsersExtended(new JetspeedPrincipalQueryContext(null,
10, 10));
+ System.out.println(nUsers + " user: get 10 users via
getUsers(null, null, 10, 10) ...");
+ System.out.println("... took " + (System.currentTimeMillis() -
startTime) + " ms, needed " + (freeMemory - Runtime.getRuntime().freeMemory())
/ 1024 + " kbytes.");
+ System.out.println("first retrieved principals name:" +
ul.getResults().get(0).getName());
+ assertEquals(ul.getResults().size(), 10);
+ System.gc();
+ startTime = System.currentTimeMillis();
+ freeMemory = Runtime.getRuntime().freeMemory();
+ List<User> l = ums.getUsers(null);
+ System.out.println(nUsers + " user: get all users via
ums.getUsers(null)...");
+ System.out.println("... took " + (System.currentTimeMillis() -
startTime) + " ms, needed " + (freeMemory - Runtime.getRuntime().freeMemory())
/ 1024 + " kbytes.");
+ System.gc();
+ startTime = System.currentTimeMillis();
+ freeMemory = Runtime.getRuntime().freeMemory();
+ l = ums.getUsers(null);
+ System.out.println(nUsers + " user: get all users via
ums.getUsers(null)...");
+ System.out.println("... took " + (System.currentTimeMillis() -
startTime) + " ms, needed " + (freeMemory - Runtime.getRuntime().freeMemory())
/ 1024 + " kbytes.");
+
+ }
+ catch (SecurityException sex)
+ {
+ assertTrue("user already exists. exception caught: " + sex, false);
+ }
+
+ try
+ {
+ System.out.println("removing " + nUsers + " users...");
+ for (int i=0; i<nUsers; i++) {
+ ums.removeUser("anon"+i);
+ }
+ }
+ catch (SecurityException sex)
+ {
+ assertTrue("could not remove user. exception caught: " + sex,
false);
+ }
+ }
+
+
+ /**
+ * <p>
+ * performance test user retrieval with hi number of users.
+ * </p>
+ */
+ public void testUserRetrievalWithHighNumberOfUsers()
+ {
+
+ int nUsers = 10000;
+ try
+ {
+
+ System.out.println("adding " + nUsers + " users...");
+ for (int i=0; i<nUsers; i++) {
+ User user = ums.addUser("anon"+i);
+ if (i%10 == 0) {
+ user.getSecurityAttributes().getAttribute("name",
true).setStringValue("dude");
+ ums.updateUser(user);
+ }
+ }
+ System.out.println("done.");
+ System.gc();
+ long startTime = System.currentTimeMillis();
+ long freeMemory = Runtime.getRuntime().freeMemory();
+ UserResultList ul = ums.getUsersExtended(new
JetspeedPrincipalQueryContext(null, 0, 10));
+ System.out.println(nUsers + " user: get 10 users via
getUsers(null, null, 1, 10) ...");
+ System.out.println("... took " + (System.currentTimeMillis() -
startTime) + " ms, needed " + (freeMemory - Runtime.getRuntime().freeMemory())
/ 1024 + " kbytes.");
+ System.out.println("first retrieved principals name:" +
ul.getResults().get(0).getName());
+ assertEquals(ul.getResults().size(), 10);
+ System.gc();
+ startTime = System.currentTimeMillis();
+ freeMemory = Runtime.getRuntime().freeMemory();
+ ul = ums.getUsersExtended(new JetspeedPrincipalQueryContext(null,
10, 10));
+ System.out.println(nUsers + " user: get 10 users via
getUsers(null, null, 10, 10) ...");
+ System.out.println("... took " + (System.currentTimeMillis() -
startTime) + " ms, needed " + (freeMemory - Runtime.getRuntime().freeMemory())
/ 1024 + " kbytes.");
+ System.out.println("first retrieved principals name:" +
ul.getResults().get(0).getName());
+ assertEquals(ul.getResults().size(), 10);
+ System.gc();
+ startTime = System.currentTimeMillis();
+ freeMemory = Runtime.getRuntime().freeMemory();
+ ul = ums.getUsersExtended(new JetspeedPrincipalQueryContext(null,
(int)Math.round(nUsers * 0.9), 10));
+ System.out.println(nUsers + " user: get 10 users via
getUsers(null, null, " + Math.round(nUsers * 0.9) + ", 10) ...");
+ System.out.println("... took " + (System.currentTimeMillis() -
startTime) + " ms, needed " + (freeMemory - Runtime.getRuntime().freeMemory())
/ 1024 + " kbytes.");
+ System.out.println("first retrieved principals name:" +
ul.getResults().get(0).getName());
+ assertEquals(ul.getResults().size(), 10);
+ System.gc();
+ startTime = System.currentTimeMillis();
+ freeMemory = Runtime.getRuntime().freeMemory();
+ Map<String, String> attributeMap = new HashMap<String, String>() {
+ {
+ put("name", "dude");
+ }
+ };
+
+ JetspeedPrincipalQueryContext c = new
JetspeedPrincipalQueryContext(null, 50, 10);
+ c.put(JetspeedPrincipalQueryContext.SECURITY_ATTRIBUTES,
attributeMap);
+ ul = ums.getUsersExtended(c);
+ System.out.println(nUsers + " user: get 10 users with the
attribute name=dude via getUsers(null, attributeMap, 50, 10) ...");
+ System.out.println("... took " + (System.currentTimeMillis() -
startTime) + " ms, needed " + (freeMemory - Runtime.getRuntime().freeMemory())
/ 1024 + " kbytes.");
+ System.out.println("first retrieved principals name:" +
ul.getResults().get(0).getName());
+ assertEquals(ul.getResults().size(), 10);
+ System.gc();
+ startTime = System.currentTimeMillis();
+ freeMemory = Runtime.getRuntime().freeMemory();
+ List<User> l = ums.getUsers(null);
+ System.out.println(nUsers + " user: get all users via
ums.getUsers(null)...");
+ System.out.println("... took " + (System.currentTimeMillis() -
startTime) + " ms, needed " + (freeMemory - Runtime.getRuntime().freeMemory())
/ 1024 + " kbytes.");
+ System.gc();
+ startTime = System.currentTimeMillis();
+ freeMemory = Runtime.getRuntime().freeMemory();
+ l = ums.getUsers(null);
+ System.out.println(nUsers + " user: get all users via
ums.getUsers(null)...");
+ System.out.println("... took " + (System.currentTimeMillis() -
startTime) + " ms, needed " + (freeMemory - Runtime.getRuntime().freeMemory())
/ 1024 + " kbytes.");
+ System.gc();
+
+ }
+ catch (SecurityException sex)
+ {
+ assertTrue("user already exists. exception caught: " + sex, false);
+ }
+
+ try
+ {
+ System.out.println("removing " + nUsers + " users...");
+ for (int i=0; i<nUsers; i++) {
+ ums.removeUser("anon"+i);
+ }
+ }
+ catch (SecurityException sex)
+ {
+ assertTrue("could not remove user. exception caught: " + sex,
false);
+ }
+ }
+
+}
\ No newline at end of file
Propchange:
portals/jetspeed-2/portal/trunk/components/jetspeed-security/src/test/java/org/apache/jetspeed/security/LocalTestUserManagerPerformance.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
portals/jetspeed-2/portal/trunk/components/jetspeed-security/src/test/java/org/apache/jetspeed/security/LocalTestUserManagerPerformance.java
------------------------------------------------------------------------------
svn:keywords = Id
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]