Author: tolusha
Date: 2010-07-19 10:39:08 -0400 (Mon, 19 Jul 2010)
New Revision: 2799
Modified:
core/trunk/exo.core.component.database/src/test/java/org/exoplatform/services/database/TestDBCreator.java
Log:
EXOJCR-812: InitialContextBinder multi-thread test
Modified:
core/trunk/exo.core.component.database/src/test/java/org/exoplatform/services/database/TestDBCreator.java
===================================================================
---
core/trunk/exo.core.component.database/src/test/java/org/exoplatform/services/database/TestDBCreator.java 2010-07-19
14:37:51 UTC (rev 2798)
+++
core/trunk/exo.core.component.database/src/test/java/org/exoplatform/services/database/TestDBCreator.java 2010-07-19
14:39:08 UTC (rev 2799)
@@ -42,6 +42,7 @@
private InitialContextInitializer initContext;
+ @Override
public void setUp() throws Exception
{
PortalContainer container = PortalContainer.getInstance();
@@ -62,8 +63,8 @@
refAddr.put("username", dbInfo.getUsername());
refAddr.put("password", dbInfo.getPassword());
- initContext.bind("testjdbcjcr", "javax.sql.DataSource",
- "org.apache.commons.dbcp.BasicDataSourceFactory", null, refAddr);
+ initContext.bind("testjdbcjcr", "javax.sql.DataSource",
"org.apache.commons.dbcp.BasicDataSourceFactory", null,
+ refAddr);
DataSource ds =
(DataSource)initContext.getInitialContext().lookup("testjdbcjcr");
assertNotNull(ds);
@@ -71,4 +72,68 @@
Connection conn = ds.getConnection();
assertNotNull(conn);
}
+
+ public void testDBCreateMultiThread() throws Exception
+ {
+ DBCreateThread[] queue = new DBCreateThread[100];
+
+ for (int i = 0; i < queue.length; i++)
+ {
+ queue[i] = new DBCreateThread(i);
+ queue[i].start();
+ }
+
+ for (int i = 0; i < queue.length; i++)
+ {
+ queue[i].join();
+ }
+
+ for (int i = 0; i < queue.length; i++)
+ {
+ DataSource ds =
(DataSource)initContext.getInitialContext().lookup("testjdbcjcr_" + i);
+ assertNotNull(ds);
+
+ Connection conn = ds.getConnection();
+ assertNotNull(conn);
+ }
+
+ }
+
+ class DBCreateThread extends Thread
+ {
+
+ private final int threadNumber;
+
+ DBCreateThread(int threadNumber)
+ {
+ this.threadNumber = threadNumber;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public void run()
+ {
+ try
+ {
+ DBConnectionInfo dbInfo = dbCreator.createDatabase("testdb_" +
threadNumber);
+
+ Map<String, String> refAddr = new HashMap<String, String>();
+ refAddr.put("driverClassName", dbInfo.getDriver());
+ refAddr.put("url", dbInfo.getUrl());
+ refAddr.put("username", dbInfo.getUsername());
+ refAddr.put("password", dbInfo.getPassword());
+
+ initContext.bind("testjdbcjcr_" + threadNumber,
"javax.sql.DataSource",
+ "org.apache.commons.dbcp.BasicDataSourceFactory", null,
refAddr);
+ }
+ catch (Exception e)
+ {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
+ }
+
}
Show replies by date