You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-commits@jackrabbit.apache.org by al...@apache.org on 2013/05/23 16:02:41 UTC

svn commit: r1485716 - /jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/jcr/query/MultiSessionQueryTest.java

Author: alexparvulescu
Date: Thu May 23 14:02:41 2013
New Revision: 1485716

URL: http://svn.apache.org/r1485716
Log:
OAK-837 Lucene: colliding concurrency node creation
 - refactored test

Modified:
    jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/jcr/query/MultiSessionQueryTest.java

Modified: jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/jcr/query/MultiSessionQueryTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/jcr/query/MultiSessionQueryTest.java?rev=1485716&r1=1485715&r2=1485716&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/jcr/query/MultiSessionQueryTest.java (original)
+++ jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/jcr/query/MultiSessionQueryTest.java Thu May 23 14:02:41 2013
@@ -16,29 +16,71 @@
  */
 package org.apache.jackrabbit.oak.jcr.query;
 
+import java.util.concurrent.Executors;
+import java.util.concurrent.ScheduledExecutorService;
+
 import javax.jcr.Node;
+import javax.jcr.Repository;
+import javax.jcr.RepositoryException;
 import javax.jcr.Session;
 import javax.jcr.SimpleCredentials;
 
-import org.apache.jackrabbit.core.query.AbstractQueryTest;
+import org.apache.jackrabbit.mk.core.MicroKernelImpl;
+import org.apache.jackrabbit.oak.jcr.Jcr;
+import org.apache.jackrabbit.oak.plugins.index.lucene.LuceneIndexEditorProvider;
+import org.apache.jackrabbit.oak.plugins.index.lucene.LuceneIndexProvider;
+import org.apache.jackrabbit.oak.plugins.index.lucene.util.LuceneInitializerHelper;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Ignore;
+import org.junit.Test;
 
 /**
  * Tests the Lucene index using multiple threads.
  */
-public class MultiSessionQueryTest extends AbstractQueryTest {
-
-    private static final boolean DISABLED = true;
+public class MultiSessionQueryTest {
 
     final static int THREAD_COUNT = 3;
 
+    protected ScheduledExecutorService executor = null;
+    private Repository repository = null;
+
+    @Before
+    public void before() {
+        executor = Executors.newScheduledThreadPool(1);
+
+        String dir = "target/mk-tck-" + System.currentTimeMillis();
+        Jcr jcr = new Jcr(new MicroKernelImpl(dir));
+        jcr.with(executor);
+
+        // lucene specific
+        jcr.with(new LuceneInitializerHelper("lucene").async());
+        jcr.with(new LuceneIndexProvider());
+        jcr.with(new LuceneIndexEditorProvider());
+
+        repository = jcr.createRepository();
+    }
+
+    @After
+    public void after() {
+        if (executor != null) {
+            executor.shutdown();
+        }
+    }
+
+    protected Session createAdminSession() throws RepositoryException {
+        return repository.login(new SimpleCredentials("admin", "admin"
+                .toCharArray()));
+    }
+
+    @Test
+    @Ignore("OAK-837")
     public void testConcurrent() throws Exception {
-        if (DISABLED) { return; } // test disabled for now
 
         final Exception[] ex = new Exception[1];
         Thread[] threads = new Thread[THREAD_COUNT];
         for (int i = 0; i < THREAD_COUNT; i++) {
-            final Session s = superuser.getRepository().login(
-                    new SimpleCredentials("admin", "admin".toCharArray()));
+            final Session s = createAdminSession();
             final String node = "node" + i;
             Thread t = new Thread() {
                 @Override