Author: stefanegli
Date: Thu Aug 27 15:08:44 2015
New Revision: 1698181

URL: http://svn.apache.org/r1698181
Log:
OAK-3292 : fix failing test on travis : when on a machine without a mac 
address, ClusterNodeInfo falls back to using random: prefix and later feels 
free enough to remove timed out random: entries upon creation of a new instance 
- this poses a problem for the fiesta test as that one tries to do very precise 
book-keeping of which instance is active/inactive etc - and when someone 
underneath removes an inactive instance, that is not noticable by the fiesta 
test. So the test now stops when it detects it is on such a floating machine

Modified:
    
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/DocumentDiscoveryLiteServiceTest.java

Modified: 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/DocumentDiscoveryLiteServiceTest.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/DocumentDiscoveryLiteServiceTest.java?rev=1698181&r1=1698180&r2=1698181&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/DocumentDiscoveryLiteServiceTest.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/DocumentDiscoveryLiteServiceTest.java
 Thu Aug 27 15:08:44 2015
@@ -447,6 +447,16 @@ public class DocumentDiscoveryLiteServic
             }
         }
 
+        /** OAK-3292 : when on a machine without a mac address, the 'random:' 
prefix is used and instances
+         * that have timed out are automagially removed by 
ClusterNodeInfo.createInstance - that poses
+         * a problem to testing - so this method exposes whether the instance 
has such a 'random:' prefix
+         * and thus allows to take appropriate action
+         */
+        public boolean hasRandomMachineId() {
+            //TODO: this might not be the most stable way - but avoids having 
to change ClusterNodeInfo
+            return ns.getClusterInfo().toString().contains("random:");
+        }
+
     }
 
     interface Expectation {
@@ -925,6 +935,19 @@ public class DocumentDiscoveryLiteServic
                         workingDir = reactivatedWorkingDir;
                         logger.info("Case 0: creating instance");
                         final SimplifiedInstance newInstance = 
createInstance(workingDir);
+                        if (newInstance.hasRandomMachineId()) {
+                            // OAK-3292 : on an instance which has no 
networkInterface with a mac address,
+                            // the machineId chosen by ClusterNodeInfo will be 
'random:'.. and
+                            // ClusterNodeInfo.createInstance will feel free 
to remove it when the lease
+                            // has timed out
+                            // that really renders it very difficult to 
continue testing here,
+                            // since this test is all about keeping track who 
became inactive etc 
+                            // and ClusterNodeInfo.createInstance removing it 
'at a certain point' is difficult
+                            // and not very useful to test..
+                            //
+                            // so: stop testing at this point:
+                            return;
+                        }
                         newInstance.setLeastTimeout(5000);
                         newInstance.startSimulatingWrites(500);
                         logger.info("Case 0: created instance: " + 
newInstance.ns.getClusterId());
@@ -946,6 +969,19 @@ public class DocumentDiscoveryLiteServic
                     if (instances.size() < MAX_NUM_INSTANCES) {
                         logger.info("Case 1: creating instance");
                         final SimplifiedInstance newInstance = 
createInstance(workingDir);
+                        if (newInstance.hasRandomMachineId()) {
+                            // OAK-3292 : on an instance which has no 
networkInterface with a mac address,
+                            // the machineId chosen by ClusterNodeInfo will be 
'random:'.. and
+                            // ClusterNodeInfo.createInstance will feel free 
to remove it when the lease
+                            // has timed out
+                            // that really renders it very difficult to 
continue testing here,
+                            // since this test is all about keeping track who 
became inactive etc 
+                            // and ClusterNodeInfo.createInstance removing it 
'at a certain point' is difficult
+                            // and not very useful to test..
+                            //
+                            // so: stop testing at this point:
+                            return;
+                        }
                         newInstance.setLeastTimeout(5000);
                         newInstance.startSimulatingWrites(500);
                         logger.info("Case 1: created instance: " + 
newInstance.ns.getClusterId());


Reply via email to