You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by oh...@apache.org on 2013/04/02 21:10:35 UTC

svn commit: r1463696 - /commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/TestDynamicCombinedConfiguration.java

Author: oheger
Date: Tue Apr  2 19:10:34 2013
New Revision: 1463696

URL: http://svn.apache.org/r1463696
Log:
Fixed a race condition in a test case.

Modified:
    commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/TestDynamicCombinedConfiguration.java

Modified: commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/TestDynamicCombinedConfiguration.java
URL: http://svn.apache.org/viewvc/commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/TestDynamicCombinedConfiguration.java?rev=1463696&r1=1463695&r2=1463696&view=diff
==============================================================================
--- commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/TestDynamicCombinedConfiguration.java (original)
+++ commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/TestDynamicCombinedConfiguration.java Tue Apr  2 19:10:34 2013
@@ -48,10 +48,10 @@ public class TestDynamicCombinedConfigur
     private static String PATTERN = "${sys:Id}";
     private static String PATTERN1 = "target/test-classes/testMultiConfiguration_${sys:Id}.xml";
     private static String DEFAULT_FILE = "target/test-classes/testMultiConfiguration_default.xml";
-    private static final File MULTI_TENENT_FILE = new File(
-            "conf/testMultiTenentConfigurationBuilder4.xml");
-    private static final File MULTI_DYNAMIC_FILE = new File(
-            "conf/testMultiTenentConfigurationBuilder5.xml");
+    private static final File MULTI_TENENT_FILE = ConfigurationAssert
+            .getTestFile("testMultiTenentConfigurationBuilder4.xml");
+    private static final File MULTI_DYNAMIC_FILE = ConfigurationAssert
+            .getTestFile("testMultiTenentConfigurationBuilder5.xml");
 
     /** Constant for the number of test threads. */
     private static final int THREAD_COUNT = 3;
@@ -208,8 +208,16 @@ public class TestDynamicCombinedConfigur
         output.getParentFile().mkdir();
         copyFile(input, output);
 
-        ReloadingCombinedConfigurationBuilder builder = new ReloadingCombinedConfigurationBuilder();
-        builder.configure(new FileBasedBuilderParametersImpl().setFile(MULTI_DYNAMIC_FILE));
+        ReloadingCombinedConfigurationBuilder builder =
+                new ReloadingCombinedConfigurationBuilder();
+        builder.configure(Parameters
+                .combined()
+                .setDefinitionBuilderParameters(
+                        new FileBasedBuilderParametersImpl()
+                                .setFile(MULTI_DYNAMIC_FILE))
+                .addChildParameters(
+                        new FileBasedBuilderParametersImpl()
+                                .setReloadingRefreshDelay(1L)));
         CombinedConfiguration config = builder.getConfiguration();
         assertEquals("Wrong property value (1)", "ID0001",
                 config.getString("Product/FIIndex/FI[@id='123456781']"));
@@ -312,10 +320,12 @@ public class TestDynamicCombinedConfigur
         private volatile boolean running = true;
         private volatile boolean failed = false;
         private final CombinedConfigurationBuilder builder;
+        private final Random random;
 
         public ReaderThread(CombinedConfigurationBuilder b)
         {
             builder = b;
+            random = new Random();
         }
 
         @Override
@@ -340,12 +350,18 @@ public class TestDynamicCombinedConfigur
                     {
                         failed = true;
                     }
+                    int sleepTime = random.nextInt(75);
+                    Thread.sleep(sleepTime);
                 }
             }
             catch (ConfigurationException cex)
             {
                 failed = true;
             }
+            catch(InterruptedException iex)
+            {
+                Thread.currentThread().interrupt();
+            }
         }
 
         public boolean failed()
@@ -356,6 +372,7 @@ public class TestDynamicCombinedConfigur
         public void shutdown()
         {
             running = false;
+            interrupt();
         }
 
     }