From 48df97ece466681bb4d6ff6ab91fcec5bb81c37c Mon Sep 17 00:00:00 2001
From: ugaston <ugaston@localhost>
Date: Fri, 22 Jan 2010 17:55:09 +0000
Subject: [PATCH] Add External Changelog search to replication stress tests

---
 opendj-sdk/opends/tests/staf-tests/stress-tests/testcases/replication/replication_add_mod_delete.xml            |  143 +++
 opendj-sdk/opends/tests/staf-tests/stress-tests/testcases/replication/replication_add_modify_multiple.xml       |  143 +++
 opendj-sdk/opends/tests/staf-tests/shared/functions/ldap.xml                                                    |  169 ++++
 opendj-sdk/opends/tests/staf-tests/stress-tests/testcases/replication/replication_modify_multiple.xml           |  174 ++++
 opendj-sdk/opends/tests/staf-tests/stress-tests/testcases/replication/replication.xml                           |   14 
 opendj-sdk/opends/tests/staf-tests/stress-tests/testcases/replication/replication_modifyrdn.xml                 |  173 ++++
 opendj-sdk/opends/tests/staf-tests/shared/functions/tools.xml                                                   |   47 +
 opendj-sdk/opends/tests/staf-tests/shared/tests/runTestJob.xml                                                  |   17 
 opendj-sdk/opends/tests/staf-tests/stress-tests/testcases/replication/replication_modify_modifyrdn_multiple.xml |  176 ++++
 opendj-sdk/opends/tests/staf-tests/stress-tests/testcases/replication/replication_add_search_multiple.xml       |  144 +++
 opendj-sdk/opends/tests/staf-tests/shared/ant/build.properties                                                  |    3 
 opendj-sdk/opends/tests/staf-tests/stress-tests/testcases/replication/replication_add_del_add_del_multiple.xml  |  143 +++
 opendj-sdk/opends/tests/staf-tests/stress-tests/testcases/replication/replication_modifyrdn_multiple.xml        |  175 ++++
 opendj-sdk/opends/tests/staf-tests/stress-tests/testcases/replication/replication_add_delete_multiple.xml       |  143 +++
 opendj-sdk/opends/tests/staf-tests/stress-tests/testcases/replication/replication_add_mod_delete_search.xml     |  145 +++
 opendj-sdk/opends/tests/staf-tests/shared/functions/environment.xml                                             |    9 
 opendj-sdk/opends/tests/staf-tests/shared/xsl/id.xsl                                                            |   90 +-
 opendj-sdk/opends/tests/staf-tests/shared/tests/config.py.stubs                                                 |    1 
 opendj-sdk/opends/tests/staf-tests/stress-tests/testcases/replication/replication_add_delete.xml                |  142 +++
 opendj-sdk/opends/tests/staf-tests/stress-tests/testcases/replication/replication_modify.xml                    |  173 ++++
 20 files changed, 2,160 insertions(+), 64 deletions(-)

diff --git a/opendj-sdk/opends/tests/staf-tests/shared/ant/build.properties b/opendj-sdk/opends/tests/staf-tests/shared/ant/build.properties
index 221db79..56a1f93 100644
--- a/opendj-sdk/opends/tests/staf-tests/shared/ant/build.properties
+++ b/opendj-sdk/opends/tests/staf-tests/shared/ant/build.properties
@@ -117,4 +117,5 @@
 logs.uri=file://
 tests.os.string=${os.name}
 tests.jvm.string=${java.version}(${sun.arch.data.model} bits)
-replication.split=false
+replication.split=
+replication.eclmode=
diff --git a/opendj-sdk/opends/tests/staf-tests/shared/functions/environment.xml b/opendj-sdk/opends/tests/staf-tests/shared/functions/environment.xml
index 48aad28..71b860f 100755
--- a/opendj-sdk/opends/tests/staf-tests/shared/functions/environment.xml
+++ b/opendj-sdk/opends/tests/staf-tests/shared/functions/environment.xml
@@ -202,6 +202,15 @@
         MultimasterSync = 'Multimaster Synchronization'
         MultimasterType = 'multimaster'
 
+        # Replication execution mode variables: if not defined, set random value
+        import random
+        
+        if REPLICATION_SPLIT_SERVERS == '':
+          REPLICATION_SPLIT_SERVERS = random.choice(['true', 'false'])
+        
+        if REPLICATION_ECL_MODE == '':
+          REPLICATION_ECL_MODE = random.choice(['opends', 'draft'])
+
         # Create staf objects
         LOCAL_STAF_ROOT  = test_env.staf(STAF_LOCAL_HOSTNAME).root
         REMOTE_STAF_ROOT = test_env.staf(STAF_REMOTE_HOSTNAME).root
diff --git a/opendj-sdk/opends/tests/staf-tests/shared/functions/ldap.xml b/opendj-sdk/opends/tests/staf-tests/shared/functions/ldap.xml
index 9eafb65..21b71aa 100755
--- a/opendj-sdk/opends/tests/staf-tests/shared/functions/ldap.xml
+++ b/opendj-sdk/opends/tests/staf-tests/shared/functions/ldap.xml
@@ -3228,7 +3228,7 @@
   
   
   
-  <!-- Modify an attribute -->
+  <!-- Do an ldapsearch using SASL authentication -->
   <function name="saslSearch">
     <function-prolog>
       This function searches the Directory Server using SASL authentication
@@ -3622,4 +3622,171 @@
 
   </function>
   
+  
+  
+  <!-- Read ECL and replay changes on stand-alone server -->
+  <function name="eclReadAndPlay">
+    <function-prolog>
+      This function reads the ECL in a replicated server and replays the changes
+      on a stand-alone server
+    </function-prolog>
+    <function-map-args>
+      <function-arg-def name="location" 
+                        type="optional" 
+                        default="STAF_REMOTE_HOSTNAME">
+        <function-arg-description>
+          Location of target host
+        </function-arg-description>
+        <function-arg-property name="type" value="hostname"/>
+      </function-arg-def>
+      <function-arg-def name="dsPath" 
+                        type="optional" 
+                        default="'%s/%s' % (DIRECTORY_INSTANCE_DIR,OPENDSNAME)">
+        <function-arg-description>
+          Pathname to installation root
+        </function-arg-description>
+        <function-arg-property name="type" value="filepath"/>
+      </function-arg-def>
+      <function-arg-def name="standaloneHost" 
+                        type="optional" 
+                        default="STAF_REMOTE_HOSTNAME">
+        <function-arg-description>
+          Stand-alone directory server hostname or IP address
+        </function-arg-description>
+        <function-arg-property name="type" value="hostname"/>
+      </function-arg-def>
+      <function-arg-def name="standalonePort" type="required">
+        <function-arg-description>
+          Stand-alone directory server port number
+        </function-arg-description>
+        <function-arg-property name="type" value="Port number"/>
+      </function-arg-def>
+      <function-arg-def name="replicaHost1" type="required">
+        <function-arg-description>
+          Replicated Directory server hostname or IP address
+        </function-arg-description>
+        <function-arg-property name="type" value="hostname"/>
+      </function-arg-def>
+      <function-arg-def name="replicaPort1" type="required">
+        <function-arg-description>
+          Replicated Directory server port number
+        </function-arg-description>
+        <function-arg-property name="type" value="Port number"/>
+      </function-arg-def>
+      <function-arg-def name="replicaHost2" type="required">
+        <function-arg-description>
+          Replicated Directory server hostname or IP address
+        </function-arg-description>
+        <function-arg-property name="type" value="hostname"/>
+      </function-arg-def>
+      <function-arg-def name="replicaPort2" type="required">
+        <function-arg-description>
+          Replicated Directory server port number
+        </function-arg-description>
+        <function-arg-property name="type" value="Port number"/>
+      </function-arg-def>
+      <function-arg-def name="bindDn" type="required">
+        <function-arg-description>
+          Bind DN
+        </function-arg-description>
+        <function-arg-property name="type" value="DN"/>
+      </function-arg-def>
+      <function-arg-def name="bindPswd" type="required">
+        <function-arg-description>
+          Bind password
+        </function-arg-description>
+        <function-arg-property name="type" value="string"/>
+      </function-arg-def>
+      <function-arg-def name="eclMode" type="required">
+        <function-arg-description>
+          ECL search mode: "draft" or "opends"
+        </function-arg-description>
+        <function-arg-property name="type" value="string"/>
+      </function-arg-def>
+      <function-arg-def name="queueSize" 
+                        type="optional"
+                        default="1000">
+        <function-arg-description>
+          Size of the queue where the read updates are stored for the writer to
+          replay on the stand-alone server
+        </function-arg-description>
+        <function-arg-property name="type" value="integer"/>
+      </function-arg-def>
+      <function-arg-def name="displayMissingChanges" 
+                        type="optional"
+                        default="False">
+        <function-arg-description>
+          Whether information on missing changes should be displayed or not
+        </function-arg-description>
+        <function-arg-property name="type" value="boolean"/>
+      </function-arg-def>
+      <function-arg-def name="outputFilename" type="required">
+        <function-arg-description>
+          Standard output file name
+        </function-arg-description>
+        <function-arg-property name="type" value="filepath"/>
+      </function-arg-def>
+      <function-arg-def name="expectedRC" type="optional" default="0">
+        <function-arg-description>
+          Expected return code value. Default value is 0
+          Wildcard 'noCheck' to not check the RC
+        </function-arg-description>
+        <function-arg-property name="type" value="integer"/>
+      </function-arg-def>
+      <function-arg-def name="knownIssue" type="optional" default="None">
+        <function-arg-description>
+          Known issue. Corresponds to an issue number.
+        </function-arg-description>
+        <function-arg-property name="type" value="string" />
+      </function-arg-def>
+    </function-map-args>
+    <sequence>
+    
+      <!-- Local variables -->
+      <script>
+        mylocation=location
+        #Build the Command
+        STAFCmdParamsList=[]
+        STAFCmdParams=''
+        STAFCmd='EclReadAndPlay'
+      </script>
+      
+      <!-- Set common ldap arguments -->
+      <script>
+        STAFCmdParamsList.append('-m %s' % eclMode)
+        STAFCmdParamsList.append('-q %s' % queueSize)
+        STAFCmdParamsList.append('-D "%s"' % bindDn)
+        STAFCmdParamsList.append('-w "%s"' % bindPswd)
+        STAFCmdParamsList.append('-s %s:%s' % (standaloneHost, standalonePort))
+        STAFCmdParamsList.append('-p %s:%s' % (replicaHost1, replicaPort1))
+        STAFCmdParamsList.append('-p %s:%s' % (replicaHost2, replicaPort2))
+        STAFCmdParamsList.append('-o %s' % outputFilename)
+        
+        if (displayMissingChanges == True):
+          displayMC = 'true'
+        else:
+          displayMC = 'false'
+        STAFCmdParamsList.append('-x %s' % displayMC)
+        
+        STAFCmdParams=' '.join(STAFCmdParamsList)
+        
+        STAFCmd='EclReadAndPlay' 
+      </script>
+      <call function="'runCommand'" >
+        { 'name'      : 'Read ECL and replay',
+          'command'   : '%s/bin/java' % JAVA_HOME,
+          'arguments' : '%s %s' % (STAFCmd,STAFCmdParams),
+          'location'  : location,
+          'envCmd'    : ['CLASSPATH=%s/../%s/ldapjdk:%s/../%s/ldapjdk/ldapjdk.jar' \
+                        % (dsPath,remote.reljavadir,dsPath,remote.reljavadir)],
+          'path'      : '%s/../%s/ldapjdk' % (dsPath,remote.reljavadir),
+          'expectedRC': expectedRC,
+          'knownIssue': knownIssue
+        }
+      </call>
+      <return>
+        STAXResult
+      </return>
+    </sequence>
+  </function>
 </stax>
diff --git a/opendj-sdk/opends/tests/staf-tests/shared/functions/tools.xml b/opendj-sdk/opends/tests/staf-tests/shared/functions/tools.xml
index 17ea246..7ea7014 100755
--- a/opendj-sdk/opends/tests/staf-tests/shared/functions/tools.xml
+++ b/opendj-sdk/opends/tests/staf-tests/shared/functions/tools.xml
@@ -346,6 +346,16 @@
         <function-arg-property name="type" value="filepath"/>
       </function-arg-def>
       
+      <function-arg-def name="ignoreAttrsFile" 
+                        type="optional"
+                        default="None">
+        <function-arg-description>
+          File containing a list of attributes to ignore when computing the
+          difference
+        </function-arg-description>
+        <function-arg-property name="type" value="filepath"/>
+      </function-arg-def>
+      
       <function-arg-def name="overwriteExisting" type="optional" default="True">
         <function-arg-description>
           Overwrite existing output file rather than append to it
@@ -391,6 +401,9 @@
         if outputLdif:
           STAFCmdParamsList.append('-o %s' % outputLdif)
         
+        if ignoreAttrsFile:
+          STAFCmdParamsList.append('-a %s' % ignoreAttrsFile)
+
         if overwriteExisting:
           STAFCmdParamsList.append('-O')
         
@@ -668,6 +681,15 @@
         <function-arg-property name="type" value="string" />
       </function-arg-def>
 
+      <function-arg-def name="ignoreAttrsFile" 
+                        type="optional"
+                        default="None">
+        <function-arg-description>
+          File containing a list of attributes to ignore when computing the
+          difference
+        </function-arg-description>
+        <function-arg-property name="type" value="filepath"/>
+      </function-arg-def>
     </function-list-args>
     <sequence>
       <script>
@@ -758,11 +780,12 @@
               
               <!-- Compare this tree to the reference one -->
               <call function="'LdifDiffWithScript'">
-                { 'location'   : location,
-                  'dsPath'     : dsPath,
-                  'sourceLdif' : '%s/../%s' % (dsPath, sampleTree),
-                  'targetLdif' : '%s/../%s' % (dsPath, referenceTree),
-                  'outputLdif' : '%s/../%s' % (dsPath, treeDiffs)
+                { 'location'        : location,
+                  'dsPath'          : dsPath,
+                  'sourceLdif'      : '%s/../%s' % (dsPath, sampleTree),
+                  'targetLdif'      : '%s/../%s' % (dsPath, referenceTree),
+                  'outputLdif'      : '%s/../%s' % (dsPath, treeDiffs),
+                  'ignoreAttrsFile' : ignoreAttrsFile
                 }
               </call>
               <if expr="STAXResult != 0">
@@ -2152,7 +2175,6 @@
                   'dsInstancePswd' : otherServer.getRootPwd(),
                   'dsBaseDN'       : entryDn,
                   'dsFilter'       : 'objectclass=*',
-                  'dsAttributes'   : 'employeeNumber',
                   'logStderr'      : False
                 }                
               </call>
@@ -2210,7 +2232,18 @@
               'issue'      : myKnownIssue
             }
           </call>
-      
+
+          <!-- Remove footprint: delete the entry just added -->
+          <call function="'ldapDeleteWithScript'">
+            { 'location'       : serverHost,
+              'dsPath'         : serverPath,
+              'dsInstanceHost' : serverHost,
+              'dsInstancePort' : server.getPort(),
+              'dsInstanceDn'   : server.getRootDn(),
+              'dsInstancePswd' : server.getRootPwd(),
+              'dsDn'           : [entryDn]
+            }
+          </call>
         </sequence>
       </iterate>
       
diff --git a/opendj-sdk/opends/tests/staf-tests/shared/tests/config.py.stubs b/opendj-sdk/opends/tests/staf-tests/shared/tests/config.py.stubs
index 5be8103..8b5ef87 100644
--- a/opendj-sdk/opends/tests/staf-tests/shared/tests/config.py.stubs
+++ b/opendj-sdk/opends/tests/staf-tests/shared/tests/config.py.stubs
@@ -55,6 +55,7 @@
 DIRECTORY_INSTANCE_BE         = 'userRoot'
 REPLICATION_CONFIG_DIR        = '${tests.run.dir}/${tests.run.time}/config'
 REPLICATION_SPLIT_SERVERS     = '${replication.split}'
+REPLICATION_ECL_MODE          = '${replication.eclmode}'
 JAVA_HOME                     = '${remote.javahome}'
 LOCAL_JAVA_HOME               = '${local.javahome}'
 LOGS_ROOT                     = '${tests.run.dir}/${tests.run.time}'
diff --git a/opendj-sdk/opends/tests/staf-tests/shared/tests/runTestJob.xml b/opendj-sdk/opends/tests/staf-tests/shared/tests/runTestJob.xml
index 09b20bf..b3d3a4f 100644
--- a/opendj-sdk/opends/tests/staf-tests/shared/tests/runTestJob.xml
+++ b/opendj-sdk/opends/tests/staf-tests/shared/tests/runTestJob.xml
@@ -535,6 +535,23 @@
         
         sutElementList=[]
         
+        # Create the sut config element
+        sut = doc.createElement("sut")
+        id.appendChild(sut)
+
+        for configType in ['REPLICATION_SPLIT_SERVERS','REPLICATION_ECL_MODE']:
+
+          # Create the service testware element
+          config = doc.createElement("config")
+          config.setAttribute("attribute",configType)
+          sut.appendChild(config)
+
+          # Create the service testware elements
+          sutElementList=[]
+          sutElementList.append(['value',eval(configType)])
+
+          write_text_elements(config,sutElementList)
+        
         # Create the testware element
         testware = doc.createElement("testware")
         id.appendChild(testware)
diff --git a/opendj-sdk/opends/tests/staf-tests/shared/xsl/id.xsl b/opendj-sdk/opends/tests/staf-tests/shared/xsl/id.xsl
index acbf8ed..2c06714 100644
--- a/opendj-sdk/opends/tests/staf-tests/shared/xsl/id.xsl
+++ b/opendj-sdk/opends/tests/staf-tests/shared/xsl/id.xsl
@@ -451,6 +451,45 @@
     </xsl:element>
   </xsl:element>
 
+  <!-- Configuration -->
+  <xsl:element name="h3">
+    <xsl:value-of select="'Configuration Details'"/>
+  </xsl:element>
+
+  <!-- Configuration Table-->
+  <xsl:element name="table">
+    <xsl:attribute name="border">
+      <xsl:value-of select="'1'"/>
+    </xsl:attribute>
+    <xsl:attribute name="cellpadding">
+      <xsl:value-of select="'1'"/>
+    </xsl:attribute>
+    <xsl:element name="tr">
+      <xsl:element name="th">
+          <xsl:value-of select="'Attribute'"/>
+      </xsl:element>
+      <xsl:element name="th">
+        <xsl:value-of select="'Value'"/>
+      </xsl:element>
+    </xsl:element>
+
+    <xsl:for-each select="$sut/config">
+
+      <xsl:element name="tr">
+        <xsl:element name="td">
+          <xsl:element name="b">
+            <xsl:value-of select="@attribute"/>
+          </xsl:element>
+        </xsl:element>
+        <xsl:element name="td">
+          <xsl:value-of select="value"/>
+        </xsl:element>
+      </xsl:element>
+
+    </xsl:for-each>
+
+  </xsl:element>
+
   <xsl:element name="br"/>
 
   <!-- Package Table -->  
@@ -686,57 +725,6 @@
     </xsl:attribute>
   </xsl:element>
 
-  <!-- Configuration -->
-  <xsl:element name="h2">
-    <xsl:value-of select="'Configuration Details'"/>
-  </xsl:element>
-
-  <!-- Configuration Table-->  
-  <xsl:element name="table">
-    <xsl:attribute name="border">
-      <xsl:value-of select="'1'"/>
-    </xsl:attribute>
-    <xsl:attribute name="cellpadding">
-      <xsl:value-of select="'1'"/>
-    </xsl:attribute>
-    <xsl:element name="tr">
-      <xsl:element name="th">
-          <xsl:value-of select="'Attribute'"/>
-      </xsl:element>
-      <xsl:element name="th">
-        <xsl:value-of select="'Value'"/>
-      </xsl:element>          
-    </xsl:element>
-
-    <xsl:for-each select="$testware/config">
-    
-      <xsl:element name="tr">
-        <xsl:element name="td">
-          <xsl:element name="b">
-            <xsl:value-of select="attribute"/>
-          </xsl:element>
-        </xsl:element>
-        <xsl:element name="td">
-          <xsl:value-of select="value"/>
-        </xsl:element>          
-      </xsl:element>
-
-    </xsl:for-each>
-
-  </xsl:element>
-
-  <xsl:element name="br"/>
-  
-  <!-- Shaded Line -->
-  <xsl:element name="hr">
-    <xsl:attribute name="noshade">
-      <xsl:value-of select="'noshade'"/>
-    </xsl:attribute>
-    <xsl:attribute name="size">
-      <xsl:value-of select="1"/>
-    </xsl:attribute>
-  </xsl:element>
-
   <!-- Additional Information -->
   <xsl:element name="h2">
     <xsl:value-of select="'Additional Information'"/>
diff --git a/opendj-sdk/opends/tests/staf-tests/stress-tests/testcases/replication/replication.xml b/opendj-sdk/opends/tests/staf-tests/stress-tests/testcases/replication/replication.xml
index e2f009a..ed034c9 100644
--- a/opendj-sdk/opends/tests/staf-tests/stress-tests/testcases/replication/replication.xml
+++ b/opendj-sdk/opends/tests/staf-tests/stress-tests/testcases/replication/replication.xml
@@ -83,10 +83,22 @@
             
             if (REPLICATION_SPLIT_SERVERS == 'true'):
               globalSplitServers = True
+              globalTestExternalChangelog = False
+              globalExternalChangelogMode = 'n/a'
             else:
-              globalSplitServers = None
+              globalSplitServers = None            
+              globalTestExternalChangelog = True
+              globalExternalChangelogMode = REPLICATION_ECL_MODE
           </script>
 
+          <message>
+            '***************************************************\n\
+            ****  REPLICATION EXECUTION MODES  \n\
+            ****  Split Servers: %s  \n\
+            ****  External Changelog Mode: %s  \n\
+            ***************************************************' % \
+            (globalSplitServers, globalExternalChangelogMode) 
+          </message>
           <iterate var="__test" in="testList">
             <sequence>
 
diff --git a/opendj-sdk/opends/tests/staf-tests/stress-tests/testcases/replication/replication_add_del_add_del_multiple.xml b/opendj-sdk/opends/tests/staf-tests/stress-tests/testcases/replication/replication_add_del_add_del_multiple.xml
index 9465f9d..179f38b 100644
--- a/opendj-sdk/opends/tests/staf-tests/stress-tests/testcases/replication/replication_add_del_add_del_multiple.xml
+++ b/opendj-sdk/opends/tests/staf-tests/stress-tests/testcases/replication/replication_add_del_add_del_multiple.xml
@@ -67,6 +67,7 @@
             server2Dir    = server2.getDir()
             
             suffix        = 'add_del_add_del_multiple'
+            consumer      = _topologyServerList[1]
           </script>
 
 
@@ -111,6 +112,49 @@
                 'templateLocation' : STAF_CLIENT_HOSTNAME
                 }
               </call>
+              
+              <!-- If the External Changelog is to be tested, install an
+               !   stand-alone instance whereto replay the changes -->
+              <if expr="globalTestExternalChangelog">
+                <sequence>
+                  <message>
+                    'Test ECL: Install stand-alone instance whereto replay \
+                    changes'
+                  </message>
+                  
+                  <!-- Create instance with default parameters read from 
+                   !   config.py -->
+                  <script>
+                    standaloneServer = Server(DIRECTORY_INSTANCE_HOST,
+                                              DIRECTORY_INSTANCE_DIR,
+                                              DIRECTORY_INSTANCE_PORT,
+                                              DIRECTORY_INSTANCE_ADMIN_PORT,
+                                              DIRECTORY_INSTANCE_SSL_PORT,
+                                              None,
+                                              DIRECTORY_INSTANCE_DN,
+                                              DIRECTORY_INSTANCE_PSWD,
+                                              synchroSuffix)
+                  </script>
+                  <call function="'createInstance'">
+                    { 'dsHost'      : standaloneServer.getHostname(),
+                      'dsDir'       : standaloneServer.getDir(),
+                      'dsPort'      : standaloneServer.getPort(),
+                      'dsAdminPort' : standaloneServer.getAdminPort(),
+                      'dsSslPort'   : standaloneServer.getSslPort(),
+                      'dsJmxPort'   : standaloneServer.getJmxPort(),
+                      'dsBindDN'    : standaloneServer.getRootDn(),
+                      'dsBindPwd'   : standaloneServer.getRootPwd(),
+                      'dsBaseDN'    : standaloneServer.getBaseDn()
+                    }
+                  </call>
+                                    
+                  <!-- Start the stand-alone Directory Server -->
+                  <call function="'StartDsWithScript'">
+                    { 'location' : standaloneServer.getHostname() }
+                  </call>
+                  
+                </sequence>
+              </if>
 
               <call function="'testCase_Postamble'"/>
 
@@ -322,6 +366,38 @@
                       </loop>
                     </sequence>
                     </block>
+                    
+                    <!-- If the External Changelog is to be tested, install an
+                     !   stand-alone instance whereto replay the changes -->
+                    <if expr="globalTestExternalChangelog">
+                      <block name="'ecl-test'">
+                      <sequence>
+                        <message>
+                          'replication_modify: Test ECL: Read and replay \
+                          changes'
+                        </message>
+                        
+                        <call function="'eclReadAndPlay'">
+                          { 'location'       : standaloneServer.getHostname(),
+                            'standaloneHost' : standaloneServer.getHostname(),
+                            'standalonePort' : standaloneServer.getPort(),
+                            'replicaHost1'   : consumer.getHostname(),
+                            'replicaPort1'   : consumer.getPort(),
+                            'replicaHost2'   : masterHost,
+                            'replicaPort2'   : master.getPort(),
+                            'bindDn'         : master.getRootDn(),
+                            'bindPswd'       : master.getRootPwd(),
+                            'eclMode'        : globalExternalChangelogMode,
+                            'queueSize'      : 1000,
+                            'outputFilename' : '%s/eclReadAndPlay.output' \
+                                               % standaloneServer.getDir()
+                          }
+                        </call>
+                        
+                      </sequence>
+                      </block>
+                    </if>
+                    
                   </parallel>
               <!--</sequence>
               </timer>
@@ -479,7 +555,74 @@
 
           </testcase>
           
+          <!-- If the External Changelog is to be tested, verify the 
+           !   synchronisation of the tree in the stand-alone instance -->
+          <if expr="globalTestExternalChangelog">
+            <testcase name="getTestCaseName('Verify stand-alone server tree synchronization')">
+  
+              <sequence>
+  
+                <call function="'testCase_Preamble'"/>
+  
+                <message>
+                  'replication_modify: Verify the stand-alone server tree \
+                  synchronization'
+                </message>
+                
+                <script>
+                  attrsToIgnoreFile = '%s/ignoreAttrsFile.ldifdiff' % \
+                                      clientDataDir
+                  tmpFile = '%s/ignoreAttrsFile.ldifdiff' % TMPDIR
+                  
+                  ignoreAttrs = []
+                  ignoreAttrs.append('ds-sync-generation-id')
+                  ignoreAttrs.append('ds-sync-hist')
+                  ignoreAttrs.append('ds-sync-state')
+                  ignoreAttrs.append('createTimestamp')
+                  ignoreAttrs.append('modifyTimestamp')
+                  
+                  # write out the ldif file
+                  outfile = open(tmpFile,"w")
           
+                  for line in ignoreAttrs:
+                    outfile.write("%s\n" % line)
+          
+                  outfile.close()
+                </script>
+              
+                <if expr="clientHost != STAXServiceMachine">
+                  <call function="'copyFile'">
+                    { 'location'   : masterHost,
+                      'srcfile'    : tmpFile,
+                      'destfile'   : attrsToIgnoreFile,
+                      'remotehost' : clientHost
+                    }
+                  </call>
+                  <else>
+                    <script>
+                      attrsToIgnoreFile = tmpFile
+                    </script>
+                  </else>
+                </if>
+                              
+                <!-- Verify the synchronization of the trees among the servers in 
+                  the topology -->          
+                <call function="'verifyTrees'">
+                  [ clientHost, clientPath, master, [standaloneServer], 
+                    synchroSuffix, None, attrsToIgnoreFile ]
+                </call>
+                
+                <!-- Stop the stand-alone Directory Server -->
+                <call function="'StopDsWithScript'">
+                  { 'location' : standaloneServer.getHostname() }
+                </call>
+                
+                <call function="'testCase_Postamble'"/>
+  
+              </sequence>
+  
+            </testcase>
+          </if>
           
           <import machine="STAF_LOCAL_HOSTNAME"
             file="'%s/../functional-tests/testcases/replication/replication_cleanup.xml' % (TESTS_DIR)"/>
diff --git a/opendj-sdk/opends/tests/staf-tests/stress-tests/testcases/replication/replication_add_delete.xml b/opendj-sdk/opends/tests/staf-tests/stress-tests/testcases/replication/replication_add_delete.xml
index 08a5992..2727f08 100644
--- a/opendj-sdk/opends/tests/staf-tests/stress-tests/testcases/replication/replication_add_delete.xml
+++ b/opendj-sdk/opends/tests/staf-tests/stress-tests/testcases/replication/replication_add_delete.xml
@@ -61,6 +61,7 @@
             masterDir     = '%s/..' % masterPath
             
             suffix        = 'add_delete'
+            consumer      = _topologyServerList[1]
           </script>
 
 
@@ -105,6 +106,49 @@
                 }
               </call>
 
+              <!-- If the External Changelog is to be tested, install an
+               !   stand-alone instance whereto replay the changes -->
+              <if expr="globalTestExternalChangelog">
+                <sequence>
+                  <message>
+                    'Test ECL: Install stand-alone instance whereto replay \
+                    changes'
+                  </message>
+                  
+                  <!-- Create instance with default parameters read from 
+                   !   config.py -->
+                  <script>
+                    standaloneServer = Server(DIRECTORY_INSTANCE_HOST,
+                                              DIRECTORY_INSTANCE_DIR,
+                                              DIRECTORY_INSTANCE_PORT,
+                                              DIRECTORY_INSTANCE_ADMIN_PORT,
+                                              DIRECTORY_INSTANCE_SSL_PORT,
+                                              None,
+                                              DIRECTORY_INSTANCE_DN,
+                                              DIRECTORY_INSTANCE_PSWD,
+                                              synchroSuffix)
+                  </script>
+                  <call function="'createInstance'">
+                    { 'dsHost'      : standaloneServer.getHostname(),
+                      'dsDir'       : standaloneServer.getDir(),
+                      'dsPort'      : standaloneServer.getPort(),
+                      'dsAdminPort' : standaloneServer.getAdminPort(),
+                      'dsSslPort'   : standaloneServer.getSslPort(),
+                      'dsJmxPort'   : standaloneServer.getJmxPort(),
+                      'dsBindDN'    : standaloneServer.getRootDn(),
+                      'dsBindPwd'   : standaloneServer.getRootPwd(),
+                      'dsBaseDN'    : standaloneServer.getBaseDn()
+                    }
+                  </call>
+                  
+                  <!-- Start the stand-alone Directory Server -->
+                  <call function="'StartDsWithScript'">
+                    { 'location' : standaloneServer.getHostname() }
+                  </call>
+                  
+                </sequence>
+              </if>
+              
               <call function="'testCase_Postamble'"/>
 
             </sequence>
@@ -228,6 +272,38 @@
                       </loop>
                     </sequence>
                     </block>
+                    
+                    <!-- If the External Changelog is to be tested, install an
+                     !   stand-alone instance whereto replay the changes -->
+                    <if expr="globalTestExternalChangelog">
+                      <block name="'ecl-test'">
+                      <sequence>
+                        <message>
+                          'replication_modify: Test ECL: Read and replay \
+                          changes'
+                        </message>
+                        
+                        <call function="'eclReadAndPlay'">
+                          { 'location'       : standaloneServer.getHostname(),
+                            'standaloneHost' : standaloneServer.getHostname(),
+                            'standalonePort' : standaloneServer.getPort(),
+                            'replicaHost1'   : consumer.getHostname(),
+                            'replicaPort1'   : consumer.getPort(),
+                            'replicaHost2'   : masterHost,
+                            'replicaPort2'   : master.getPort(),
+                            'bindDn'         : master.getRootDn(),
+                            'bindPswd'       : master.getRootPwd(),
+                            'eclMode'        : globalExternalChangelogMode,
+                            'queueSize'      : 1000,
+                            'outputFilename' : '%s/eclReadAndPlay.output' \
+                                               % standaloneServer.getDir()
+                          }
+                        </call>
+                        
+                      </sequence>
+                      </block>
+                    </if>
+                    
                   </parallel>
               <!--</sequence>
               </timer>
@@ -361,8 +437,74 @@
 
           </testcase>
           
+          <!-- If the External Changelog is to be tested, verify the 
+           !   synchronisation of the tree in the stand-alone instance -->
+          <if expr="globalTestExternalChangelog">
+            <testcase name="getTestCaseName('Verify stand-alone server tree synchronization')">
+  
+              <sequence>
+  
+                <call function="'testCase_Preamble'"/>
+  
+                <message>
+                  'replication_modify: Verify the stand-alone server tree \
+                  synchronization'
+                </message>
+                
+                <script>
+                  attrsToIgnoreFile = '%s/ignoreAttrsFile.ldifdiff' % \
+                                      clientDataDir
+                  tmpFile = '%s/ignoreAttrsFile.ldifdiff' % TMPDIR
+                  
+                  ignoreAttrs = []
+                  ignoreAttrs.append('ds-sync-generation-id')
+                  ignoreAttrs.append('ds-sync-hist')
+                  ignoreAttrs.append('ds-sync-state')
+                  ignoreAttrs.append('createTimestamp')
+                  ignoreAttrs.append('modifyTimestamp')
+                  
+                  # write out the ldif file
+                  outfile = open(tmpFile,"w")
           
+                  for line in ignoreAttrs:
+                    outfile.write("%s\n" % line)
           
+                  outfile.close()
+                </script>
+              
+                <if expr="clientHost != STAXServiceMachine">
+                  <call function="'copyFile'">
+                    { 'location'   : masterHost,
+                      'srcfile'    : tmpFile,
+                      'destfile'   : attrsToIgnoreFile,
+                      'remotehost' : clientHost
+                    }
+                  </call>
+                  <else>
+                    <script>
+                      attrsToIgnoreFile = tmpFile
+                    </script>
+                  </else>
+                </if>
+                              
+                <!-- Verify the synchronization of the trees among the servers in 
+                  the topology -->          
+                <call function="'verifyTrees'">
+                  [ clientHost, clientPath, master, [standaloneServer], 
+                    synchroSuffix, None, attrsToIgnoreFile ]
+                </call>
+                
+                <!-- Stop the stand-alone Directory Server -->
+                <call function="'StopDsWithScript'">
+                  { 'location' : standaloneServer.getHostname() }
+                </call>
+                
+                <call function="'testCase_Postamble'"/>
+  
+              </sequence>
+  
+            </testcase>
+          </if>
 
           <import machine="STAF_LOCAL_HOSTNAME"
             file="'%s/../functional-tests/testcases/replication/replication_cleanup.xml' % (TESTS_DIR)"/>
diff --git a/opendj-sdk/opends/tests/staf-tests/stress-tests/testcases/replication/replication_add_delete_multiple.xml b/opendj-sdk/opends/tests/staf-tests/stress-tests/testcases/replication/replication_add_delete_multiple.xml
index 229dd7d..edf7d09 100644
--- a/opendj-sdk/opends/tests/staf-tests/stress-tests/testcases/replication/replication_add_delete_multiple.xml
+++ b/opendj-sdk/opends/tests/staf-tests/stress-tests/testcases/replication/replication_add_delete_multiple.xml
@@ -67,6 +67,7 @@
             server2Dir    = server2.getDir()
             
             suffix        = 'add_delete_multiple'
+            consumer      = _topologyServerList[1]
           </script>
 
 
@@ -111,6 +112,49 @@
                 'templateLocation' : STAF_CLIENT_HOSTNAME
                 }
               </call>
+              
+              <!-- If the External Changelog is to be tested, install an
+               !   stand-alone instance whereto replay the changes -->
+              <if expr="globalTestExternalChangelog">
+                <sequence>
+                  <message>
+                    'Test ECL: Install stand-alone instance whereto replay \
+                    changes'
+                  </message>
+                  
+                  <!-- Create instance with default parameters read from 
+                   !   config.py -->
+                  <script>
+                    standaloneServer = Server(DIRECTORY_INSTANCE_HOST,
+                                              DIRECTORY_INSTANCE_DIR,
+                                              DIRECTORY_INSTANCE_PORT,
+                                              DIRECTORY_INSTANCE_ADMIN_PORT,
+                                              DIRECTORY_INSTANCE_SSL_PORT,
+                                              None,
+                                              DIRECTORY_INSTANCE_DN,
+                                              DIRECTORY_INSTANCE_PSWD,
+                                              synchroSuffix)
+                  </script>
+                  <call function="'createInstance'">
+                    { 'dsHost'      : standaloneServer.getHostname(),
+                      'dsDir'       : standaloneServer.getDir(),
+                      'dsPort'      : standaloneServer.getPort(),
+                      'dsAdminPort' : standaloneServer.getAdminPort(),
+                      'dsSslPort'   : standaloneServer.getSslPort(),
+                      'dsJmxPort'   : standaloneServer.getJmxPort(),
+                      'dsBindDN'    : standaloneServer.getRootDn(),
+                      'dsBindPwd'   : standaloneServer.getRootPwd(),
+                      'dsBaseDN'    : standaloneServer.getBaseDn()
+                    }
+                  </call>
+                  
+                  <!-- Start the stand-alone Directory Server -->
+                  <call function="'StartDsWithScript'">
+                    { 'location' : standaloneServer.getHostname() }
+                  </call>
+                  
+                </sequence>
+              </if>
 
               <call function="'testCase_Postamble'"/>
 
@@ -254,6 +298,38 @@
                       </loop>
                     </sequence>
                     </block>
+                    
+                    <!-- If the External Changelog is to be tested, install an
+                     !   stand-alone instance whereto replay the changes -->
+                    <if expr="globalTestExternalChangelog">
+                      <block name="'ecl-test'">
+                      <sequence>
+                        <message>
+                          'replication_modify: Test ECL: Read and replay \
+                          changes'
+                        </message>
+                        
+                        <call function="'eclReadAndPlay'">
+                          { 'location'       : standaloneServer.getHostname(),
+                            'standaloneHost' : standaloneServer.getHostname(),
+                            'standalonePort' : standaloneServer.getPort(),
+                            'replicaHost1'   : consumer.getHostname(),
+                            'replicaPort1'   : consumer.getPort(),
+                            'replicaHost2'   : masterHost,
+                            'replicaPort2'   : master.getPort(),
+                            'bindDn'         : master.getRootDn(),
+                            'bindPswd'       : master.getRootPwd(),
+                            'eclMode'        : globalExternalChangelogMode,
+                            'queueSize'      : 1000,
+                            'outputFilename' : '%s/eclReadAndPlay.output' \
+                                               % standaloneServer.getDir()
+                          }
+                        </call>
+                        
+                      </sequence>
+                      </block>
+                    </if>
+                    
                   </parallel>
               <!--</sequence>
               </timer>
@@ -387,7 +463,74 @@
 
           </testcase>
           
+          <!-- If the External Changelog is to be tested, verify the 
+           !   synchronisation of the tree in the stand-alone instance -->
+          <if expr="globalTestExternalChangelog">
+            <testcase name="getTestCaseName('Verify stand-alone server tree synchronization')">
+  
+              <sequence>
+  
+                <call function="'testCase_Preamble'"/>
+  
+                <message>
+                  'replication_modify: Verify the stand-alone server tree \
+                  synchronization'
+                </message>
+                
+                <script>
+                  attrsToIgnoreFile = '%s/ignoreAttrsFile.ldifdiff' % \
+                                      clientDataDir
+                  tmpFile = '%s/ignoreAttrsFile.ldifdiff' % TMPDIR
+                  
+                  ignoreAttrs = []
+                  ignoreAttrs.append('ds-sync-generation-id')
+                  ignoreAttrs.append('ds-sync-hist')
+                  ignoreAttrs.append('ds-sync-state')
+                  ignoreAttrs.append('createTimestamp')
+                  ignoreAttrs.append('modifyTimestamp')
+                  
+                  # write out the ldif file
+                  outfile = open(tmpFile,"w")
           
+                  for line in ignoreAttrs:
+                    outfile.write("%s\n" % line)
+          
+                  outfile.close()
+                </script>
+              
+                <if expr="clientHost != STAXServiceMachine">
+                  <call function="'copyFile'">
+                    { 'location'   : masterHost,
+                      'srcfile'    : tmpFile,
+                      'destfile'   : attrsToIgnoreFile,
+                      'remotehost' : clientHost
+                    }
+                  </call>
+                  <else>
+                    <script>
+                      attrsToIgnoreFile = tmpFile
+                    </script>
+                  </else>
+                </if>
+                              
+                <!-- Verify the synchronization of the trees among the servers in 
+                  the topology -->          
+                <call function="'verifyTrees'">
+                  [ clientHost, clientPath, master, [standaloneServer], 
+                    synchroSuffix, None, attrsToIgnoreFile ]
+                </call>
+                
+                <!-- Stop the stand-alone Directory Server -->
+                <call function="'StopDsWithScript'">
+                  { 'location' : standaloneServer.getHostname() }
+                </call>
+                
+                <call function="'testCase_Postamble'"/>
+  
+              </sequence>
+  
+            </testcase>
+          </if>
           
           <import machine="STAF_LOCAL_HOSTNAME"
             file="'%s/../functional-tests/testcases/replication/replication_cleanup.xml' % (TESTS_DIR)"/>
diff --git a/opendj-sdk/opends/tests/staf-tests/stress-tests/testcases/replication/replication_add_mod_delete.xml b/opendj-sdk/opends/tests/staf-tests/stress-tests/testcases/replication/replication_add_mod_delete.xml
index c0b53d6..446a0b3 100644
--- a/opendj-sdk/opends/tests/staf-tests/stress-tests/testcases/replication/replication_add_mod_delete.xml
+++ b/opendj-sdk/opends/tests/staf-tests/stress-tests/testcases/replication/replication_add_mod_delete.xml
@@ -61,6 +61,7 @@
             masterDir     = '%s/..' % masterPath
             
             suffix        = 'add_mod_delete'
+            consumer      = _topologyServerList[1]
           </script>
 
 
@@ -106,6 +107,49 @@
                 }
               </call>
 
+              <!-- If the External Changelog is to be tested, install an
+               !   stand-alone instance whereto replay the changes -->
+              <if expr="globalTestExternalChangelog">
+                <sequence>
+                  <message>
+                    'Test ECL: Install stand-alone instance whereto replay \
+                    changes'
+                  </message>
+                  
+                  <!-- Create instance with default parameters read from 
+                   !   config.py -->
+                  <script>
+                    standaloneServer = Server(DIRECTORY_INSTANCE_HOST,
+                                              DIRECTORY_INSTANCE_DIR,
+                                              DIRECTORY_INSTANCE_PORT,
+                                              DIRECTORY_INSTANCE_ADMIN_PORT,
+                                              DIRECTORY_INSTANCE_SSL_PORT,
+                                              None,
+                                              DIRECTORY_INSTANCE_DN,
+                                              DIRECTORY_INSTANCE_PSWD,
+                                              synchroSuffix)
+                  </script>
+                  <call function="'createInstance'">
+                    { 'dsHost'      : standaloneServer.getHostname(),
+                      'dsDir'       : standaloneServer.getDir(),
+                      'dsPort'      : standaloneServer.getPort(),
+                      'dsAdminPort' : standaloneServer.getAdminPort(),
+                      'dsSslPort'   : standaloneServer.getSslPort(),
+                      'dsJmxPort'   : standaloneServer.getJmxPort(),
+                      'dsBindDN'    : standaloneServer.getRootDn(),
+                      'dsBindPwd'   : standaloneServer.getRootPwd(),
+                      'dsBaseDN'    : standaloneServer.getBaseDn()
+                    }
+                  </call>
+                  
+                  <!-- Start the stand-alone Directory Server -->
+                  <call function="'StartDsWithScript'">
+                    { 'location' : standaloneServer.getHostname() }
+                  </call>
+                  
+                </sequence>
+              </if>
+              
               <call function="'testCase_Postamble'"/>
 
             </sequence>
@@ -265,6 +309,38 @@
                       </loop>
                     </sequence>
                     </block>
+                    
+                    <!-- If the External Changelog is to be tested, install an
+                     !   stand-alone instance whereto replay the changes -->
+                    <if expr="globalTestExternalChangelog">
+                      <block name="'ecl-test'">
+                      <sequence>
+                        <message>
+                          'replication_modify: Test ECL: Read and replay \
+                          changes'
+                        </message>
+                        
+                        <call function="'eclReadAndPlay'">
+                          { 'location'       : standaloneServer.getHostname(),
+                            'standaloneHost' : standaloneServer.getHostname(),
+                            'standalonePort' : standaloneServer.getPort(),
+                            'replicaHost1'   : consumer.getHostname(),
+                            'replicaPort1'   : consumer.getPort(),
+                            'replicaHost2'   : masterHost,
+                            'replicaPort2'   : master.getPort(),
+                            'bindDn'         : master.getRootDn(),
+                            'bindPswd'       : master.getRootPwd(),
+                            'eclMode'        : globalExternalChangelogMode,
+                            'queueSize'      : 1000,
+                            'outputFilename' : '%s/eclReadAndPlay.output' \
+                                               % standaloneServer.getDir()
+                          }
+                        </call>
+                        
+                      </sequence>
+                      </block>
+                    </if>
+                    
                   </parallel>
               <!--</sequence>
               </timer>
@@ -411,7 +487,74 @@
 
           </testcase>
           
+          <!-- If the External Changelog is to be tested, verify the 
+           !   synchronisation of the tree in the stand-alone instance -->
+          <if expr="globalTestExternalChangelog">
+            <testcase name="getTestCaseName('Verify stand-alone server tree synchronization')">
+  
+              <sequence>
+  
+                <call function="'testCase_Preamble'"/>
+  
+                <message>
+                  'replication_modify: Verify the stand-alone server tree \
+                  synchronization'
+                </message>
+                
+                <script>
+                  attrsToIgnoreFile = '%s/ignoreAttrsFile.ldifdiff' % \
+                                      clientDataDir
+                  tmpFile = '%s/ignoreAttrsFile.ldifdiff' % TMPDIR
+                  
+                  ignoreAttrs = []
+                  ignoreAttrs.append('ds-sync-generation-id')
+                  ignoreAttrs.append('ds-sync-hist')
+                  ignoreAttrs.append('ds-sync-state')
+                  ignoreAttrs.append('createTimestamp')
+                  ignoreAttrs.append('modifyTimestamp')
+                  
+                  # write out the ldif file
+                  outfile = open(tmpFile,"w")
           
+                  for line in ignoreAttrs:
+                    outfile.write("%s\n" % line)
+          
+                  outfile.close()
+                </script>
+              
+                <if expr="clientHost != STAXServiceMachine">
+                  <call function="'copyFile'">
+                    { 'location'   : masterHost,
+                      'srcfile'    : tmpFile,
+                      'destfile'   : attrsToIgnoreFile,
+                      'remotehost' : clientHost
+                    }
+                  </call>
+                  <else>
+                    <script>
+                      attrsToIgnoreFile = tmpFile
+                    </script>
+                  </else>
+                </if>
+                              
+                <!-- Verify the synchronization of the trees among the servers in 
+                  the topology -->          
+                <call function="'verifyTrees'">
+                  [ clientHost, clientPath, master, [standaloneServer], 
+                    synchroSuffix, None, attrsToIgnoreFile ]
+                </call>
+                
+                <!-- Stop the stand-alone Directory Server -->
+                <call function="'StopDsWithScript'">
+                  { 'location' : standaloneServer.getHostname() }
+                </call>
+                
+                <call function="'testCase_Postamble'"/>
+  
+              </sequence>
+  
+            </testcase>
+          </if>
           
           <import machine="STAF_LOCAL_HOSTNAME"
             file="'%s/../functional-tests/testcases/replication/replication_cleanup.xml' % (TESTS_DIR)"/>
diff --git a/opendj-sdk/opends/tests/staf-tests/stress-tests/testcases/replication/replication_add_mod_delete_search.xml b/opendj-sdk/opends/tests/staf-tests/stress-tests/testcases/replication/replication_add_mod_delete_search.xml
index 24dbdd6..62e4bec 100644
--- a/opendj-sdk/opends/tests/staf-tests/stress-tests/testcases/replication/replication_add_mod_delete_search.xml
+++ b/opendj-sdk/opends/tests/staf-tests/stress-tests/testcases/replication/replication_add_mod_delete_search.xml
@@ -61,6 +61,7 @@
             masterDir     = '%s/..' % masterPath
             
             suffix        = 'add_mod_delete_search'
+            consumer      = _topologyServerList[1]
           </script>
 
 
@@ -106,6 +107,49 @@
                 }
               </call>
 
+              <!-- If the External Changelog is to be tested, install an
+               !   stand-alone instance whereto replay the changes -->
+              <if expr="globalTestExternalChangelog">
+                <sequence>
+                  <message>
+                    'Test ECL: Install stand-alone instance whereto replay \
+                    changes'
+                  </message>
+                  
+                  <!-- Create instance with default parameters read from 
+                   !   config.py -->
+                  <script>
+                    standaloneServer = Server(DIRECTORY_INSTANCE_HOST,
+                                              DIRECTORY_INSTANCE_DIR,
+                                              DIRECTORY_INSTANCE_PORT,
+                                              DIRECTORY_INSTANCE_ADMIN_PORT,
+                                              DIRECTORY_INSTANCE_SSL_PORT,
+                                              None,
+                                              DIRECTORY_INSTANCE_DN,
+                                              DIRECTORY_INSTANCE_PSWD,
+                                              synchroSuffix)
+                  </script>
+                  <call function="'createInstance'">
+                    { 'dsHost'      : standaloneServer.getHostname(),
+                      'dsDir'       : standaloneServer.getDir(),
+                      'dsPort'      : standaloneServer.getPort(),
+                      'dsAdminPort' : standaloneServer.getAdminPort(),
+                      'dsSslPort'   : standaloneServer.getSslPort(),
+                      'dsJmxPort'   : standaloneServer.getJmxPort(),
+                      'dsBindDN'    : standaloneServer.getRootDn(),
+                      'dsBindPwd'   : standaloneServer.getRootPwd(),
+                      'dsBaseDN'    : standaloneServer.getBaseDn()
+                    }
+                  </call>
+                  
+                  <!-- Start the stand-alone Directory Server -->
+                  <call function="'StartDsWithScript'">
+                    { 'location' : standaloneServer.getHostname() }
+                  </call>
+                  
+                </sequence>
+              </if>
+              
               <call function="'testCase_Postamble'"/>
 
             </sequence>
@@ -241,7 +285,7 @@
                         opt1 = '-e delayedstartup=1 -r %s -R %s' \
                                 % (lowRange, highRange)
                         opt2 = '-e esearch,random -f uid=user.XXXXXX'
-                        opt3 = '-N %s -I 32 -v -q' % searchLoop
+                        opt3 = '-N %s -I 32 -v -q' % ldcltLoop
                         opts = '%s %s %s' % (opt1, opt2, opt3)
                       </script>
 
@@ -299,6 +343,38 @@
                       </loop>
                     </sequence>
                     </block>
+                    
+                    <!-- If the External Changelog is to be tested, install an
+                     !   stand-alone instance whereto replay the changes -->
+                    <if expr="globalTestExternalChangelog">
+                      <block name="'ecl-test'">
+                      <sequence>
+                        <message>
+                          'replication_modify: Test ECL: Read and replay \
+                          changes'
+                        </message>
+                        
+                        <call function="'eclReadAndPlay'">
+                          { 'location'       : standaloneServer.getHostname(),
+                            'standaloneHost' : standaloneServer.getHostname(),
+                            'standalonePort' : standaloneServer.getPort(),
+                            'replicaHost1'   : consumer.getHostname(),
+                            'replicaPort1'   : consumer.getPort(),
+                            'replicaHost2'   : masterHost,
+                            'replicaPort2'   : master.getPort(),
+                            'bindDn'         : master.getRootDn(),
+                            'bindPswd'       : master.getRootPwd(),
+                            'eclMode'        : globalExternalChangelogMode,
+                            'queueSize'      : 1000,
+                            'outputFilename' : '%s/eclReadAndPlay.output' \
+                                               % standaloneServer.getDir()
+                          }
+                        </call>
+                        
+                      </sequence>
+                      </block>
+                    </if>
+                    
                   </parallel>
               <!--</sequence>
               </timer>
@@ -458,7 +534,74 @@
 
           </testcase>
           
+          <!-- If the External Changelog is to be tested, verify the 
+           !   synchronisation of the tree in the stand-alone instance -->
+          <if expr="globalTestExternalChangelog">
+            <testcase name="getTestCaseName('Verify stand-alone server tree synchronization')">
+  
+              <sequence>
+  
+                <call function="'testCase_Preamble'"/>
+  
+                <message>
+                  'replication_modify: Verify the stand-alone server tree \
+                  synchronization'
+                </message>
+                
+                <script>
+                  attrsToIgnoreFile = '%s/ignoreAttrsFile.ldifdiff' % \
+                                      clientDataDir
+                  tmpFile = '%s/ignoreAttrsFile.ldifdiff' % TMPDIR
+                  
+                  ignoreAttrs = []
+                  ignoreAttrs.append('ds-sync-generation-id')
+                  ignoreAttrs.append('ds-sync-hist')
+                  ignoreAttrs.append('ds-sync-state')
+                  ignoreAttrs.append('createTimestamp')
+                  ignoreAttrs.append('modifyTimestamp')
+                  
+                  # write out the ldif file
+                  outfile = open(tmpFile,"w")
           
+                  for line in ignoreAttrs:
+                    outfile.write("%s\n" % line)
+          
+                  outfile.close()
+                </script>
+              
+                <if expr="clientHost != STAXServiceMachine">
+                  <call function="'copyFile'">
+                    { 'location'   : masterHost,
+                      'srcfile'    : tmpFile,
+                      'destfile'   : attrsToIgnoreFile,
+                      'remotehost' : clientHost
+                    }
+                  </call>
+                  <else>
+                    <script>
+                      attrsToIgnoreFile = tmpFile
+                    </script>
+                  </else>
+                </if>
+                              
+                <!-- Verify the synchronization of the trees among the servers in 
+                  the topology -->          
+                <call function="'verifyTrees'">
+                  [ clientHost, clientPath, master, [standaloneServer], 
+                    synchroSuffix, None, attrsToIgnoreFile ]
+                </call>
+                
+                <!-- Stop the stand-alone Directory Server -->
+                <call function="'StopDsWithScript'">
+                  { 'location' : standaloneServer.getHostname() }
+                </call>
+                
+                <call function="'testCase_Postamble'"/>
+  
+              </sequence>
+  
+            </testcase>
+          </if>
           
           <import machine="STAF_LOCAL_HOSTNAME"
             file="'%s/../functional-tests/testcases/replication/replication_cleanup.xml' % (TESTS_DIR)"/>
diff --git a/opendj-sdk/opends/tests/staf-tests/stress-tests/testcases/replication/replication_add_modify_multiple.xml b/opendj-sdk/opends/tests/staf-tests/stress-tests/testcases/replication/replication_add_modify_multiple.xml
index b3fb668..6d2bfb7 100644
--- a/opendj-sdk/opends/tests/staf-tests/stress-tests/testcases/replication/replication_add_modify_multiple.xml
+++ b/opendj-sdk/opends/tests/staf-tests/stress-tests/testcases/replication/replication_add_modify_multiple.xml
@@ -67,6 +67,7 @@
             server2Dir    = server2.getDir()
             
             suffix        = 'add_modify_multiple'
+            consumer      = _topologyServerList[1]
           </script>
 
 
@@ -112,6 +113,49 @@
                 }
               </call>
 
+              <!-- If the External Changelog is to be tested, install an
+               !   stand-alone instance whereto replay the changes -->
+              <if expr="globalTestExternalChangelog">
+                <sequence>
+                  <message>
+                    'Test ECL: Install stand-alone instance whereto replay \
+                    changes'
+                  </message>
+                  
+                  <!-- Create instance with default parameters read from 
+                   !   config.py -->
+                  <script>
+                    standaloneServer = Server(DIRECTORY_INSTANCE_HOST,
+                                              DIRECTORY_INSTANCE_DIR,
+                                              DIRECTORY_INSTANCE_PORT,
+                                              DIRECTORY_INSTANCE_ADMIN_PORT,
+                                              DIRECTORY_INSTANCE_SSL_PORT,
+                                              None,
+                                              DIRECTORY_INSTANCE_DN,
+                                              DIRECTORY_INSTANCE_PSWD,
+                                              synchroSuffix)
+                  </script>
+                  <call function="'createInstance'">
+                    { 'dsHost'      : standaloneServer.getHostname(),
+                      'dsDir'       : standaloneServer.getDir(),
+                      'dsPort'      : standaloneServer.getPort(),
+                      'dsAdminPort' : standaloneServer.getAdminPort(),
+                      'dsSslPort'   : standaloneServer.getSslPort(),
+                      'dsJmxPort'   : standaloneServer.getJmxPort(),
+                      'dsBindDN'    : standaloneServer.getRootDn(),
+                      'dsBindPwd'   : standaloneServer.getRootPwd(),
+                      'dsBaseDN'    : standaloneServer.getBaseDn()
+                    }
+                  </call>
+                  
+                  <!-- Start the stand-alone Directory Server -->
+                  <call function="'StartDsWithScript'">
+                    { 'location' : standaloneServer.getHostname() }
+                  </call>
+                  
+                </sequence>
+              </if>
+              
               <call function="'testCase_Postamble'"/>
 
             </sequence>
@@ -255,6 +299,38 @@
                       </loop>
                     </sequence>
                     </block>
+                    
+                    <!-- If the External Changelog is to be tested, install an
+                     !   stand-alone instance whereto replay the changes -->
+                    <if expr="globalTestExternalChangelog">
+                      <block name="'ecl-test'">
+                      <sequence>
+                        <message>
+                          'replication_modify: Test ECL: Read and replay \
+                          changes'
+                        </message>
+                        
+                        <call function="'eclReadAndPlay'">
+                          { 'location'       : standaloneServer.getHostname(),
+                            'standaloneHost' : standaloneServer.getHostname(),
+                            'standalonePort' : standaloneServer.getPort(),
+                            'replicaHost1'   : consumer.getHostname(),
+                            'replicaPort1'   : consumer.getPort(),
+                            'replicaHost2'   : masterHost,
+                            'replicaPort2'   : master.getPort(),
+                            'bindDn'         : master.getRootDn(),
+                            'bindPswd'       : master.getRootPwd(),
+                            'eclMode'        : globalExternalChangelogMode,
+                            'queueSize'      : 1000,
+                            'outputFilename' : '%s/eclReadAndPlay.output' \
+                                               % standaloneServer.getDir()
+                          }
+                        </call>
+                        
+                      </sequence>
+                      </block>
+                    </if>
+                    
                   </parallel>
               <!--</sequence>
               </timer>
@@ -388,7 +464,74 @@
 
           </testcase>
           
+          <!-- If the External Changelog is to be tested, verify the 
+           !   synchronisation of the tree in the stand-alone instance -->
+          <if expr="globalTestExternalChangelog">
+            <testcase name="getTestCaseName('Verify stand-alone server tree synchronization')">
+  
+              <sequence>
+  
+                <call function="'testCase_Preamble'"/>
+  
+                <message>
+                  'replication_modify: Verify the stand-alone server tree \
+                  synchronization'
+                </message>
+                
+                <script>
+                  attrsToIgnoreFile = '%s/ignoreAttrsFile.ldifdiff' % \
+                                      clientDataDir
+                  tmpFile = '%s/ignoreAttrsFile.ldifdiff' % TMPDIR
+                  
+                  ignoreAttrs = []
+                  ignoreAttrs.append('ds-sync-generation-id')
+                  ignoreAttrs.append('ds-sync-hist')
+                  ignoreAttrs.append('ds-sync-state')
+                  ignoreAttrs.append('createTimestamp')
+                  ignoreAttrs.append('modifyTimestamp')
+                  
+                  # write out the ldif file
+                  outfile = open(tmpFile,"w")
           
+                  for line in ignoreAttrs:
+                    outfile.write("%s\n" % line)
+          
+                  outfile.close()
+                </script>
+              
+                <if expr="clientHost != STAXServiceMachine">
+                  <call function="'copyFile'">
+                    { 'location'   : masterHost,
+                      'srcfile'    : tmpFile,
+                      'destfile'   : attrsToIgnoreFile,
+                      'remotehost' : clientHost
+                    }
+                  </call>
+                  <else>
+                    <script>
+                      attrsToIgnoreFile = tmpFile
+                    </script>
+                  </else>
+                </if>
+                              
+                <!-- Verify the synchronization of the trees among the servers in 
+                  the topology -->          
+                <call function="'verifyTrees'">
+                  [ clientHost, clientPath, master, [standaloneServer], 
+                    synchroSuffix, None, attrsToIgnoreFile ]
+                </call>
+                
+                <!-- Stop the stand-alone Directory Server -->
+                <call function="'StopDsWithScript'">
+                  { 'location' : standaloneServer.getHostname() }
+                </call>
+                
+                <call function="'testCase_Postamble'"/>
+  
+              </sequence>
+  
+            </testcase>
+          </if>
           
           <import machine="STAF_LOCAL_HOSTNAME"
             file="'%s/../functional-tests/testcases/replication/replication_cleanup.xml' % (TESTS_DIR)"/>
diff --git a/opendj-sdk/opends/tests/staf-tests/stress-tests/testcases/replication/replication_add_search_multiple.xml b/opendj-sdk/opends/tests/staf-tests/stress-tests/testcases/replication/replication_add_search_multiple.xml
index d989848..a6966f2 100644
--- a/opendj-sdk/opends/tests/staf-tests/stress-tests/testcases/replication/replication_add_search_multiple.xml
+++ b/opendj-sdk/opends/tests/staf-tests/stress-tests/testcases/replication/replication_add_search_multiple.xml
@@ -67,6 +67,8 @@
             server2Dir    = server2.getDir()
             
             suffix        = 'add_search_multiple'
+            consumer      = _topologyServerList[1]
+
           </script>
 
 
@@ -112,6 +114,49 @@
                 }
               </call>
 
+              <!-- If the External Changelog is to be tested, install an
+               !   stand-alone instance whereto replay the changes -->
+              <if expr="globalTestExternalChangelog">
+                <sequence>
+                  <message>
+                    'Test ECL: Install stand-alone instance whereto replay \
+                    changes'
+                  </message>
+                  
+                  <!-- Create instance with default parameters read from 
+                   !   config.py -->
+                  <script>
+                    standaloneServer = Server(DIRECTORY_INSTANCE_HOST,
+                                              DIRECTORY_INSTANCE_DIR,
+                                              DIRECTORY_INSTANCE_PORT,
+                                              DIRECTORY_INSTANCE_ADMIN_PORT,
+                                              DIRECTORY_INSTANCE_SSL_PORT,
+                                              None,
+                                              DIRECTORY_INSTANCE_DN,
+                                              DIRECTORY_INSTANCE_PSWD,
+                                              synchroSuffix)
+                  </script>
+                  <call function="'createInstance'">
+                    { 'dsHost'      : standaloneServer.getHostname(),
+                      'dsDir'       : standaloneServer.getDir(),
+                      'dsPort'      : standaloneServer.getPort(),
+                      'dsAdminPort' : standaloneServer.getAdminPort(),
+                      'dsSslPort'   : standaloneServer.getSslPort(),
+                      'dsJmxPort'   : standaloneServer.getJmxPort(),
+                      'dsBindDN'    : standaloneServer.getRootDn(),
+                      'dsBindPwd'   : standaloneServer.getRootPwd(),
+                      'dsBaseDN'    : standaloneServer.getBaseDn()
+                    }
+                  </call>
+                  
+                  <!-- Start the stand-alone Directory Server -->
+                  <call function="'StartDsWithScript'">
+                    { 'location' : standaloneServer.getHostname() }
+                  </call>
+                  
+                </sequence>
+              </if>
+              
               <call function="'testCase_Postamble'"/>
 
             </sequence>
@@ -254,6 +299,38 @@
                       </loop>
                     </sequence>
                     </block>
+                    
+                    <!-- If the External Changelog is to be tested, install an
+                     !   stand-alone instance whereto replay the changes -->
+                    <if expr="globalTestExternalChangelog">
+                      <block name="'ecl-test'">
+                      <sequence>
+                        <message>
+                          'replication_modify: Test ECL: Read and replay \
+                          changes'
+                        </message>
+                        
+                        <call function="'eclReadAndPlay'">
+                          { 'location'       : standaloneServer.getHostname(),
+                            'standaloneHost' : standaloneServer.getHostname(),
+                            'standalonePort' : standaloneServer.getPort(),
+                            'replicaHost1'   : consumer.getHostname(),
+                            'replicaPort1'   : consumer.getPort(),
+                            'replicaHost2'   : masterHost,
+                            'replicaPort2'   : master.getPort(),
+                            'bindDn'         : master.getRootDn(),
+                            'bindPswd'       : master.getRootPwd(),
+                            'eclMode'        : globalExternalChangelogMode,
+                            'queueSize'      : 1000,
+                            'outputFilename' : '%s/eclReadAndPlay.output' \
+                                               % standaloneServer.getDir()
+                          }
+                        </call>
+                        
+                      </sequence>
+                      </block>
+                    </if>
+                    
                   </parallel>
               <!--</sequence>
               </timer>
@@ -387,7 +464,74 @@
 
           </testcase>
           
+          <!-- If the External Changelog is to be tested, verify the 
+           !   synchronisation of the tree in the stand-alone instance -->
+          <if expr="globalTestExternalChangelog">
+            <testcase name="getTestCaseName('Verify stand-alone server tree synchronization')">
+  
+              <sequence>
+  
+                <call function="'testCase_Preamble'"/>
+  
+                <message>
+                  'replication_modify: Verify the stand-alone server tree \
+                  synchronization'
+                </message>
+                
+                <script>
+                  attrsToIgnoreFile = '%s/ignoreAttrsFile.ldifdiff' % \
+                                      clientDataDir
+                  tmpFile = '%s/ignoreAttrsFile.ldifdiff' % TMPDIR
+                  
+                  ignoreAttrs = []
+                  ignoreAttrs.append('ds-sync-generation-id')
+                  ignoreAttrs.append('ds-sync-hist')
+                  ignoreAttrs.append('ds-sync-state')
+                  ignoreAttrs.append('createTimestamp')
+                  ignoreAttrs.append('modifyTimestamp')
+                  
+                  # write out the ldif file
+                  outfile = open(tmpFile,"w")
           
+                  for line in ignoreAttrs:
+                    outfile.write("%s\n" % line)
+          
+                  outfile.close()
+                </script>
+              
+                <if expr="clientHost != STAXServiceMachine">
+                  <call function="'copyFile'">
+                    { 'location'   : masterHost,
+                      'srcfile'    : tmpFile,
+                      'destfile'   : attrsToIgnoreFile,
+                      'remotehost' : clientHost
+                    }
+                  </call>
+                  <else>
+                    <script>
+                      attrsToIgnoreFile = tmpFile
+                    </script>
+                  </else>
+                </if>
+                              
+                <!-- Verify the synchronization of the trees among the servers in 
+                  the topology -->          
+                <call function="'verifyTrees'">
+                  [ clientHost, clientPath, master, [standaloneServer], 
+                    synchroSuffix, None, attrsToIgnoreFile ]
+                </call>
+                
+                <!-- Stop the stand-alone Directory Server -->
+                <call function="'StopDsWithScript'">
+                  { 'location' : standaloneServer.getHostname() }
+                </call>
+                
+                <call function="'testCase_Postamble'"/>
+  
+              </sequence>
+  
+            </testcase>
+          </if>
           
           <import machine="STAF_LOCAL_HOSTNAME"
             file="'%s/../functional-tests/testcases/replication/replication_cleanup.xml' % (TESTS_DIR)"/>
diff --git a/opendj-sdk/opends/tests/staf-tests/stress-tests/testcases/replication/replication_modify.xml b/opendj-sdk/opends/tests/staf-tests/stress-tests/testcases/replication/replication_modify.xml
index 85a97a8..f1efa92 100644
--- a/opendj-sdk/opends/tests/staf-tests/stress-tests/testcases/replication/replication_modify.xml
+++ b/opendj-sdk/opends/tests/staf-tests/stress-tests/testcases/replication/replication_modify.xml
@@ -65,6 +65,7 @@
             totalEntries = numberOfEntries + 2
             
             suffix       = 'modify'
+            consumer     = _topologyServerList[1]
           </script>
 
           
@@ -192,6 +193,79 @@
                   'replicationDnList'       : [synchroSuffix]
                 }
               </call>
+              
+              <!-- If the External Changelog is to be tested, install an
+               !   stand-alone instance whereto replay the changes -->
+              <if expr="globalTestExternalChangelog">
+                <sequence>
+                  <message>
+                    'Test ECL: Install stand-alone instance whereto replay \
+                    changes'
+                  </message>
+                  
+                  <!-- Create instance with default parameters read from 
+                   !   config.py -->
+                  <script>
+                    standaloneServer = Server(DIRECTORY_INSTANCE_HOST,
+                                              DIRECTORY_INSTANCE_DIR,
+                                              DIRECTORY_INSTANCE_PORT,
+                                              DIRECTORY_INSTANCE_ADMIN_PORT,
+                                              DIRECTORY_INSTANCE_SSL_PORT,
+                                              None,
+                                              DIRECTORY_INSTANCE_DN,
+                                              DIRECTORY_INSTANCE_PSWD,
+                                              synchroSuffix)
+                  </script>
+                  <call function="'createInstance'">
+                    { 'dsHost'      : standaloneServer.getHostname(),
+                      'dsDir'       : standaloneServer.getDir(),
+                      'dsPort'      : standaloneServer.getPort(),
+                      'dsAdminPort' : standaloneServer.getAdminPort(),
+                      'dsSslPort'   : standaloneServer.getSslPort(),
+                      'dsJmxPort'   : standaloneServer.getJmxPort(),
+                      'dsBindDN'    : standaloneServer.getRootDn(),
+                      'dsBindPwd'   : standaloneServer.getRootPwd(),
+                      'dsBaseDN'    : standaloneServer.getBaseDn()
+                    }
+                  </call>
+                  
+                  <!-- Copy ldif file from "master" -->
+                  <script>                    
+                    standaloneLdifFile = '%s/%s_entries.ldif' \
+                           % (standaloneServer.getDir(), numberOfEntries)
+                  </script>
+                  <if expr="masterHost != standaloneServer.getHostname()">
+                    <call function="'copyFile'">
+                      { 'location'   : masterHost,
+                        'srcfile'    : ldifFile,
+                        'destfile'   : standaloneLdifFile,
+                        'remotehost' : standaloneServer.getHostname()
+                      }
+                    </call>
+                    <else>
+                      <script>
+                        standaloneLdifFile = ldifFile
+                      </script>
+                    </else>
+                  </if>
+                  
+                  <!-- Import same data imported into "master"  -->
+                  <call function="'ImportLdifWithScript'">
+                    { 'location'   : standaloneServer.getHostname(),
+                      'dsPath'     : '%s/%s' % \
+                                     (standaloneServer.getDir(), OPENDSNAME),
+                      'dsBackEnd'  : DIRECTORY_INSTANCE_BE,          
+                      'dsLdifFile' : standaloneLdifFile
+                    }
+                  </call>
+                  
+                  <!-- Start the stand-alone Directory Server -->
+                  <call function="'StartDsWithScript'">
+                    { 'location' : standaloneServer.getHostname() }
+                  </call>
+                  
+                </sequence>
+              </if>
 
               <call function="'testCase_Postamble'"/>
 
@@ -282,6 +356,38 @@
                       </loop>
                     </sequence>
                     </block>
+                          
+                    <!-- If the External Changelog is to be tested, install an
+                     !   stand-alone instance whereto replay the changes -->
+                    <if expr="globalTestExternalChangelog">
+                      <block name="'ecl-test'">
+                      <sequence>
+                        <message>
+                          'replication_modify: Test ECL: Read and replay \
+                          changes'
+                        </message>
+                        
+                        <call function="'eclReadAndPlay'">
+                          { 'location'       : standaloneServer.getHostname(),
+                            'standaloneHost' : standaloneServer.getHostname(),
+                            'standalonePort' : standaloneServer.getPort(),
+                            'replicaHost1'   : consumer.getHostname(),
+                            'replicaPort1'   : consumer.getPort(),
+                            'replicaHost2'   : masterHost,
+                            'replicaPort2'   : master.getPort(),
+                            'bindDn'         : master.getRootDn(),
+                            'bindPswd'       : master.getRootPwd(),
+                            'eclMode'        : globalExternalChangelogMode,
+                            'queueSize'      : 1000,
+                            'outputFilename' : '%s/eclReadAndPlay.output' \
+                                               % standaloneServer.getDir()
+                          }
+                        </call>
+                        
+                      </sequence>
+                      </block>
+                    </if>
+                  
                   </parallel>
               <!--</sequence>
               </timer>
@@ -400,8 +506,75 @@
             </sequence>
 
           </testcase>
+            
+          <!-- If the External Changelog is to be tested, verify the 
+           !   synchronisation of the tree in the stand-alone instance -->
+          <if expr="globalTestExternalChangelog">
+            <testcase name="getTestCaseName('Verify stand-alone server tree synchronization')">
+  
+              <sequence>
+  
+                <call function="'testCase_Preamble'"/>
+  
+                <message>
+                  'replication_modify: Verify the stand-alone server tree \
+                  synchronization'
+                </message>
+                
+                <script>
+                  attrsToIgnoreFile = '%s/ignoreAttrsFile.ldifdiff' % \
+                                      clientDataDir
+                  tmpFile = '%s/ignoreAttrsFile.ldifdiff' % TMPDIR
+                  
+                  ignoreAttrs = []
+                  ignoreAttrs.append('ds-sync-generation-id')
+                  ignoreAttrs.append('ds-sync-hist')
+                  ignoreAttrs.append('ds-sync-state')
+                  ignoreAttrs.append('createTimestamp')
+                  ignoreAttrs.append('modifyTimestamp')
+                  
+                  # write out the ldif file
+                  outfile = open(tmpFile,"w")
           
+                  for line in ignoreAttrs:
+                    outfile.write("%s\n" % line)
           
+                  outfile.close()
+                </script>
+              
+                <if expr="clientHost != STAXServiceMachine">
+                  <call function="'copyFile'">
+                    { 'location'   : masterHost,
+                      'srcfile'    : tmpFile,
+                      'destfile'   : attrsToIgnoreFile,
+                      'remotehost' : clientHost
+                    }
+                  </call>
+                  <else>
+                    <script>
+                      attrsToIgnoreFile = tmpFile
+                    </script>
+                  </else>
+                </if>
+                              
+                <!-- Verify the synchronization of the trees among the servers in 
+                  the topology -->          
+                <call function="'verifyTrees'">
+                  [ clientHost, clientPath, master, [standaloneServer], 
+                    synchroSuffix, None, attrsToIgnoreFile ]
+                </call>
+                
+                <!-- Stop the stand-alone Directory Server -->
+                <call function="'StopDsWithScript'">
+                  { 'location' : standaloneServer.getHostname() }
+                </call>
+                
+                <call function="'testCase_Postamble'"/>
+  
+              </sequence>
+  
+            </testcase>
+          </if>
           
           <import machine="STAF_LOCAL_HOSTNAME"
             file="'%s/../functional-tests/testcases/replication/replication_cleanup.xml' % (TESTS_DIR)"/>
diff --git a/opendj-sdk/opends/tests/staf-tests/stress-tests/testcases/replication/replication_modify_modifyrdn_multiple.xml b/opendj-sdk/opends/tests/staf-tests/stress-tests/testcases/replication/replication_modify_modifyrdn_multiple.xml
index 8efcd75..f2764ab 100644
--- a/opendj-sdk/opends/tests/staf-tests/stress-tests/testcases/replication/replication_modify_modifyrdn_multiple.xml
+++ b/opendj-sdk/opends/tests/staf-tests/stress-tests/testcases/replication/replication_modify_modifyrdn_multiple.xml
@@ -70,7 +70,9 @@
                             % (server1Dir, numberOfEntries)
             totalEntries  = numberOfEntries + 2
             
-            suffix        = 'modify_modifyrdn_multiple' 
+            suffix        = 'modify_modifyrdn_multiple'
+            consumer      = _topologyServerList[1]
+
           </script>
 
 
@@ -199,6 +201,79 @@
                 }
               </call>
 
+              <!-- If the External Changelog is to be tested, install an
+               !   stand-alone instance whereto replay the changes -->
+              <if expr="globalTestExternalChangelog">
+                <sequence>
+                  <message>
+                    'Test ECL: Install stand-alone instance whereto replay \
+                    changes'
+                  </message>
+                  
+                  <!-- Create instance with default parameters read from 
+                   !   config.py -->
+                  <script>
+                    standaloneServer = Server(DIRECTORY_INSTANCE_HOST,
+                                              DIRECTORY_INSTANCE_DIR,
+                                              DIRECTORY_INSTANCE_PORT,
+                                              DIRECTORY_INSTANCE_ADMIN_PORT,
+                                              DIRECTORY_INSTANCE_SSL_PORT,
+                                              None,
+                                              DIRECTORY_INSTANCE_DN,
+                                              DIRECTORY_INSTANCE_PSWD,
+                                              synchroSuffix)
+                  </script>
+                  <call function="'createInstance'">
+                    { 'dsHost'      : standaloneServer.getHostname(),
+                      'dsDir'       : standaloneServer.getDir(),
+                      'dsPort'      : standaloneServer.getPort(),
+                      'dsAdminPort' : standaloneServer.getAdminPort(),
+                      'dsSslPort'   : standaloneServer.getSslPort(),
+                      'dsJmxPort'   : standaloneServer.getJmxPort(),
+                      'dsBindDN'    : standaloneServer.getRootDn(),
+                      'dsBindPwd'   : standaloneServer.getRootPwd(),
+                      'dsBaseDN'    : standaloneServer.getBaseDn()
+                    }
+                  </call>
+                  
+                  <!-- Copy ldif file from "master" -->
+                  <script>                    
+                    standaloneLdifFile = '%s/%s_entries.ldif' \
+                           % (standaloneServer.getDir(), numberOfEntries)
+                  </script>
+                  <if expr="masterHost != standaloneServer.getHostname()">
+                    <call function="'copyFile'">
+                      { 'location'   : masterHost,
+                        'srcfile'    : ldifFile,
+                        'destfile'   : standaloneLdifFile,
+                        'remotehost' : standaloneServer.getHostname()
+                      }
+                    </call>
+                    <else>
+                      <script>
+                        standaloneLdifFile = ldifFile
+                      </script>
+                    </else>
+                  </if>
+                  
+                  <!-- Import same data imported into "master"  -->
+                  <call function="'ImportLdifWithScript'">
+                    { 'location'   : standaloneServer.getHostname(),
+                      'dsPath'     : '%s/%s' % \
+                                     (standaloneServer.getDir(), OPENDSNAME),
+                      'dsBackEnd'  : DIRECTORY_INSTANCE_BE,          
+                      'dsLdifFile' : standaloneLdifFile
+                    }
+                  </call>
+                  
+                  <!-- Start the stand-alone Directory Server -->
+                  <call function="'StartDsWithScript'">
+                    { 'location' : standaloneServer.getHostname() }
+                  </call>
+                  
+                </sequence>
+              </if>
+              
               <call function="'testCase_Postamble'"/>
 
             </sequence>
@@ -337,6 +412,38 @@
                       </loop>
                     </sequence>
                     </block>
+                    
+                    <!-- If the External Changelog is to be tested, install an
+                     !   stand-alone instance whereto replay the changes -->
+                    <if expr="globalTestExternalChangelog">
+                      <block name="'ecl-test'">
+                      <sequence>
+                        <message>
+                          'replication_modify: Test ECL: Read and replay \
+                          changes'
+                        </message>
+                        
+                        <call function="'eclReadAndPlay'">
+                          { 'location'       : standaloneServer.getHostname(),
+                            'standaloneHost' : standaloneServer.getHostname(),
+                            'standalonePort' : standaloneServer.getPort(),
+                            'replicaHost1'   : consumer.getHostname(),
+                            'replicaPort1'   : consumer.getPort(),
+                            'replicaHost2'   : masterHost,
+                            'replicaPort2'   : master.getPort(),
+                            'bindDn'         : master.getRootDn(),
+                            'bindPswd'       : master.getRootPwd(),
+                            'eclMode'        : globalExternalChangelogMode,
+                            'queueSize'      : 1000,
+                            'outputFilename' : '%s/eclReadAndPlay.output' \
+                                               % standaloneServer.getDir()
+                          }
+                        </call>
+                        
+                      </sequence>
+                      </block>
+                    </if>
+                  
                   </parallel>
               <!--</sequence>
               </timer>
@@ -470,7 +577,74 @@
 
           </testcase>
           
+          <!-- If the External Changelog is to be tested, verify the 
+           !   synchronisation of the tree in the stand-alone instance -->
+          <if expr="globalTestExternalChangelog">
+            <testcase name="getTestCaseName('Verify stand-alone server tree synchronization')">
+  
+              <sequence>
+  
+                <call function="'testCase_Preamble'"/>
+  
+                <message>
+                  'replication_modify: Verify the stand-alone server tree \
+                  synchronization'
+                </message>
+                
+                <script>
+                  attrsToIgnoreFile = '%s/ignoreAttrsFile.ldifdiff' % \
+                                      clientDataDir
+                  tmpFile = '%s/ignoreAttrsFile.ldifdiff' % TMPDIR
+                  
+                  ignoreAttrs = []
+                  ignoreAttrs.append('ds-sync-generation-id')
+                  ignoreAttrs.append('ds-sync-hist')
+                  ignoreAttrs.append('ds-sync-state')
+                  ignoreAttrs.append('createTimestamp')
+                  ignoreAttrs.append('modifyTimestamp')
+                  
+                  # write out the ldif file
+                  outfile = open(tmpFile,"w")
           
+                  for line in ignoreAttrs:
+                    outfile.write("%s\n" % line)
+          
+                  outfile.close()
+                </script>
+              
+                <if expr="clientHost != STAXServiceMachine">
+                  <call function="'copyFile'">
+                    { 'location'   : masterHost,
+                      'srcfile'    : tmpFile,
+                      'destfile'   : attrsToIgnoreFile,
+                      'remotehost' : clientHost
+                    }
+                  </call>
+                  <else>
+                    <script>
+                      attrsToIgnoreFile = tmpFile
+                    </script>
+                  </else>
+                </if>
+                              
+                <!-- Verify the synchronization of the trees among the servers in 
+                  the topology -->          
+                <call function="'verifyTrees'">
+                  [ clientHost, clientPath, master, [standaloneServer], 
+                    synchroSuffix, None, attrsToIgnoreFile ]
+                </call>
+                
+                <!-- Stop the stand-alone Directory Server -->
+                <call function="'StopDsWithScript'">
+                  { 'location' : standaloneServer.getHostname() }
+                </call>
+                
+                <call function="'testCase_Postamble'"/>
+  
+              </sequence>
+  
+            </testcase>
+          </if>
           
           <import machine="STAF_LOCAL_HOSTNAME"
             file="'%s/../functional-tests/testcases/replication/replication_cleanup.xml' % (TESTS_DIR)"/>
diff --git a/opendj-sdk/opends/tests/staf-tests/stress-tests/testcases/replication/replication_modify_multiple.xml b/opendj-sdk/opends/tests/staf-tests/stress-tests/testcases/replication/replication_modify_multiple.xml
index 1409217..2acc31a 100644
--- a/opendj-sdk/opends/tests/staf-tests/stress-tests/testcases/replication/replication_modify_multiple.xml
+++ b/opendj-sdk/opends/tests/staf-tests/stress-tests/testcases/replication/replication_modify_multiple.xml
@@ -71,6 +71,8 @@
             totalEntries  = numberOfEntries + 2
             
             suffix        = 'modify_multiple'
+            consumer      = _topologyServerList[1]
+
           </script>
 
 
@@ -199,6 +201,79 @@
                 }
               </call>
 
+              <!-- If the External Changelog is to be tested, install an
+               !   stand-alone instance whereto replay the changes -->
+              <if expr="globalTestExternalChangelog">
+                <sequence>
+                  <message>
+                    'Test ECL: Install stand-alone instance whereto replay \
+                    changes'
+                  </message>
+                  
+                  <!-- Create instance with default parameters read from 
+                   !   config.py -->
+                  <script>
+                    standaloneServer = Server(DIRECTORY_INSTANCE_HOST,
+                                              DIRECTORY_INSTANCE_DIR,
+                                              DIRECTORY_INSTANCE_PORT,
+                                              DIRECTORY_INSTANCE_ADMIN_PORT,
+                                              DIRECTORY_INSTANCE_SSL_PORT,
+                                              None,
+                                              DIRECTORY_INSTANCE_DN,
+                                              DIRECTORY_INSTANCE_PSWD,
+                                              synchroSuffix)
+                  </script>
+                  <call function="'createInstance'">
+                    { 'dsHost'      : standaloneServer.getHostname(),
+                      'dsDir'       : standaloneServer.getDir(),
+                      'dsPort'      : standaloneServer.getPort(),
+                      'dsAdminPort' : standaloneServer.getAdminPort(),
+                      'dsSslPort'   : standaloneServer.getSslPort(),
+                      'dsJmxPort'   : standaloneServer.getJmxPort(),
+                      'dsBindDN'    : standaloneServer.getRootDn(),
+                      'dsBindPwd'   : standaloneServer.getRootPwd(),
+                      'dsBaseDN'    : standaloneServer.getBaseDn()
+                    }
+                  </call>
+                  
+                  <!-- Copy ldif file from "master" -->
+                  <script>                    
+                    standaloneLdifFile = '%s/%s_entries.ldif' \
+                           % (standaloneServer.getDir(), numberOfEntries)
+                  </script>
+                  <if expr="masterHost != standaloneServer.getHostname()">
+                    <call function="'copyFile'">
+                      { 'location'   : masterHost,
+                        'srcfile'    : ldifFile,
+                        'destfile'   : standaloneLdifFile,
+                        'remotehost' : standaloneServer.getHostname()
+                      }
+                    </call>
+                    <else>
+                      <script>
+                        standaloneLdifFile = ldifFile
+                      </script>
+                    </else>
+                  </if>
+                  
+                  <!-- Import same data imported into "master"  -->
+                  <call function="'ImportLdifWithScript'">
+                    { 'location'   : standaloneServer.getHostname(),
+                      'dsPath'     : '%s/%s' % \
+                                     (standaloneServer.getDir(), OPENDSNAME),
+                      'dsBackEnd'  : DIRECTORY_INSTANCE_BE,          
+                      'dsLdifFile' : standaloneLdifFile
+                    }
+                  </call>
+                  
+                  <!-- Start the stand-alone Directory Server -->
+                  <call function="'StartDsWithScript'">
+                    { 'location' : standaloneServer.getHostname() }
+                  </call>
+                  
+                </sequence>
+              </if>
+              
               <call function="'testCase_Postamble'"/>
 
             </sequence>
@@ -337,6 +412,38 @@
                       </loop>
                     </sequence>
                     </block>
+                    
+                    <!-- If the External Changelog is to be tested, install an
+                     !   stand-alone instance whereto replay the changes -->
+                    <if expr="globalTestExternalChangelog">
+                      <block name="'ecl-test'">
+                      <sequence>
+                        <message>
+                          'replication_modify: Test ECL: Read and replay \
+                          changes'
+                        </message>
+                        
+                        <call function="'eclReadAndPlay'">
+                          { 'location'       : standaloneServer.getHostname(),
+                            'standaloneHost' : standaloneServer.getHostname(),
+                            'standalonePort' : standaloneServer.getPort(),
+                            'replicaHost1'   : consumer.getHostname(),
+                            'replicaPort1'   : consumer.getPort(),
+                            'replicaHost2'   : masterHost,
+                            'replicaPort2'   : master.getPort(),
+                            'bindDn'         : master.getRootDn(),
+                            'bindPswd'       : master.getRootPwd(),
+                            'eclMode'        : globalExternalChangelogMode,
+                            'queueSize'      : 1000,
+                            'outputFilename' : '%s/eclReadAndPlay.output' \
+                                               % standaloneServer.getDir()
+                          }
+                        </call>
+                        
+                      </sequence>
+                      </block>
+                    </if>
+                  
                   </parallel>
               <!--</sequence>
               </timer>
@@ -470,7 +577,74 @@
 
           </testcase>
           
+          <!-- If the External Changelog is to be tested, verify the 
+           !   synchronisation of the tree in the stand-alone instance -->
+          <if expr="globalTestExternalChangelog">
+            <testcase name="getTestCaseName('Verify stand-alone server tree synchronization')">
+  
+              <sequence>
+  
+                <call function="'testCase_Preamble'"/>
+  
+                <message>
+                  'replication_modify: Verify the stand-alone server tree \
+                  synchronization'
+                </message>
+                
+                <script>
+                  attrsToIgnoreFile = '%s/ignoreAttrsFile.ldifdiff' % \
+                                      clientDataDir
+                  tmpFile = '%s/ignoreAttrsFile.ldifdiff' % TMPDIR
+                  
+                  ignoreAttrs = []
+                  ignoreAttrs.append('ds-sync-generation-id')
+                  ignoreAttrs.append('ds-sync-hist')
+                  ignoreAttrs.append('ds-sync-state')
+                  ignoreAttrs.append('createTimestamp')
+                  ignoreAttrs.append('modifyTimestamp')
+                  
+                  # write out the ldif file
+                  outfile = open(tmpFile,"w")
           
+                  for line in ignoreAttrs:
+                    outfile.write("%s\n" % line)
+          
+                  outfile.close()
+                </script>
+              
+                <if expr="clientHost != STAXServiceMachine">
+                  <call function="'copyFile'">
+                    { 'location'   : masterHost,
+                      'srcfile'    : tmpFile,
+                      'destfile'   : attrsToIgnoreFile,
+                      'remotehost' : clientHost
+                    }
+                  </call>
+                  <else>
+                    <script>
+                      attrsToIgnoreFile = tmpFile
+                    </script>
+                  </else>
+                </if>
+                              
+                <!-- Verify the synchronization of the trees among the servers in 
+                  the topology -->          
+                <call function="'verifyTrees'">
+                  [ clientHost, clientPath, master, [standaloneServer], 
+                    synchroSuffix, None, attrsToIgnoreFile ]
+                </call>
+                
+                <!-- Stop the stand-alone Directory Server -->
+                <call function="'StopDsWithScript'">
+                  { 'location' : standaloneServer.getHostname() }
+                </call>
+                
+                <call function="'testCase_Postamble'"/>
+  
+              </sequence>
+  
+            </testcase>
+          </if>
           
           <import machine="STAF_LOCAL_HOSTNAME"
             file="'%s/../functional-tests/testcases/replication/replication_cleanup.xml' % (TESTS_DIR)"/>
diff --git a/opendj-sdk/opends/tests/staf-tests/stress-tests/testcases/replication/replication_modifyrdn.xml b/opendj-sdk/opends/tests/staf-tests/stress-tests/testcases/replication/replication_modifyrdn.xml
index ad7c884..660ec9e 100644
--- a/opendj-sdk/opends/tests/staf-tests/stress-tests/testcases/replication/replication_modifyrdn.xml
+++ b/opendj-sdk/opends/tests/staf-tests/stress-tests/testcases/replication/replication_modifyrdn.xml
@@ -65,6 +65,7 @@
             totalEntries  = numberOfEntries + 2
             
             suffix        = 'modifyrdn'
+            consumer      = _topologyServerList[1]
           </script>
 
           
@@ -194,6 +195,79 @@
                 }
               </call>
 
+              <!-- If the External Changelog is to be tested, install an
+               !   stand-alone instance whereto replay the changes -->
+              <if expr="globalTestExternalChangelog">
+                <sequence>
+                  <message>
+                    'Test ECL: Install stand-alone instance whereto replay \
+                    changes'
+                  </message>
+                  
+                  <!-- Create instance with default parameters read from 
+                   !   config.py -->
+                  <script>
+                    standaloneServer = Server(DIRECTORY_INSTANCE_HOST,
+                                              DIRECTORY_INSTANCE_DIR,
+                                              DIRECTORY_INSTANCE_PORT,
+                                              DIRECTORY_INSTANCE_ADMIN_PORT,
+                                              DIRECTORY_INSTANCE_SSL_PORT,
+                                              None,
+                                              DIRECTORY_INSTANCE_DN,
+                                              DIRECTORY_INSTANCE_PSWD,
+                                              synchroSuffix)
+                  </script>
+                  <call function="'createInstance'">
+                    { 'dsHost'      : standaloneServer.getHostname(),
+                      'dsDir'       : standaloneServer.getDir(),
+                      'dsPort'      : standaloneServer.getPort(),
+                      'dsAdminPort' : standaloneServer.getAdminPort(),
+                      'dsSslPort'   : standaloneServer.getSslPort(),
+                      'dsJmxPort'   : standaloneServer.getJmxPort(),
+                      'dsBindDN'    : standaloneServer.getRootDn(),
+                      'dsBindPwd'   : standaloneServer.getRootPwd(),
+                      'dsBaseDN'    : standaloneServer.getBaseDn()
+                    }
+                  </call>
+                  
+                  <!-- Copy ldif file from "master" -->
+                  <script>                    
+                    standaloneLdifFile = '%s/%s_entries.ldif' \
+                           % (standaloneServer.getDir(), numberOfEntries)
+                  </script>
+                  <if expr="masterHost != standaloneServer.getHostname()">
+                    <call function="'copyFile'">
+                      { 'location'   : masterHost,
+                        'srcfile'    : ldifFile,
+                        'destfile'   : standaloneLdifFile,
+                        'remotehost' : standaloneServer.getHostname()
+                      }
+                    </call>
+                    <else>
+                      <script>
+                        standaloneLdifFile = ldifFile
+                      </script>
+                    </else>
+                  </if>
+                  
+                  <!-- Import same data imported into "master"  -->
+                  <call function="'ImportLdifWithScript'">
+                    { 'location'   : standaloneServer.getHostname(),
+                      'dsPath'     : '%s/%s' % \
+                                     (standaloneServer.getDir(), OPENDSNAME),
+                      'dsBackEnd'  : DIRECTORY_INSTANCE_BE,          
+                      'dsLdifFile' : standaloneLdifFile
+                    }
+                  </call>
+                  
+                  <!-- Start the stand-alone Directory Server -->
+                  <call function="'StartDsWithScript'">
+                    { 'location' : standaloneServer.getHostname() }
+                  </call>
+                  
+                </sequence>
+              </if>
+              
               <call function="'testCase_Postamble'"/>
 
             </sequence>
@@ -282,6 +356,38 @@
                       </loop>
                     </sequence>
                     </block>
+                    
+                    <!-- If the External Changelog is to be tested, install an
+                     !   stand-alone instance whereto replay the changes -->
+                    <if expr="globalTestExternalChangelog">
+                      <block name="'ecl-test'">
+                      <sequence>
+                        <message>
+                          'replication_modify: Test ECL: Read and replay \
+                          changes'
+                        </message>
+                        
+                        <call function="'eclReadAndPlay'">
+                          { 'location'       : standaloneServer.getHostname(),
+                            'standaloneHost' : standaloneServer.getHostname(),
+                            'standalonePort' : standaloneServer.getPort(),
+                            'replicaHost1'   : consumer.getHostname(),
+                            'replicaPort1'   : consumer.getPort(),
+                            'replicaHost2'   : masterHost,
+                            'replicaPort2'   : master.getPort(),
+                            'bindDn'         : master.getRootDn(),
+                            'bindPswd'       : master.getRootPwd(),
+                            'eclMode'        : globalExternalChangelogMode,
+                            'queueSize'      : 1000,
+                            'outputFilename' : '%s/eclReadAndPlay.output' \
+                                               % standaloneServer.getDir()
+                          }
+                        </call>
+                        
+                      </sequence>
+                      </block>
+                    </if>
+                    
                   </parallel>
               <!--</sequence>
               </timer>
@@ -401,7 +507,74 @@
 
           </testcase>
           
+          <!-- If the External Changelog is to be tested, verify the 
+           !   synchronisation of the tree in the stand-alone instance -->
+          <if expr="globalTestExternalChangelog">
+            <testcase name="getTestCaseName('Verify stand-alone server tree synchronization')">
+  
+              <sequence>
+  
+                <call function="'testCase_Preamble'"/>
+  
+                <message>
+                  'replication_modify: Verify the stand-alone server tree \
+                  synchronization'
+                </message>
+                
+                <script>
+                  attrsToIgnoreFile = '%s/ignoreAttrsFile.ldifdiff' % \
+                                      clientDataDir
+                  tmpFile = '%s/ignoreAttrsFile.ldifdiff' % TMPDIR
+                  
+                  ignoreAttrs = []
+                  ignoreAttrs.append('ds-sync-generation-id')
+                  ignoreAttrs.append('ds-sync-hist')
+                  ignoreAttrs.append('ds-sync-state')
+                  ignoreAttrs.append('createTimestamp')
+                  ignoreAttrs.append('modifyTimestamp')
+                  
+                  # write out the ldif file
+                  outfile = open(tmpFile,"w")
           
+                  for line in ignoreAttrs:
+                    outfile.write("%s\n" % line)
+          
+                  outfile.close()
+                </script>
+              
+                <if expr="clientHost != STAXServiceMachine">
+                  <call function="'copyFile'">
+                    { 'location'   : masterHost,
+                      'srcfile'    : tmpFile,
+                      'destfile'   : attrsToIgnoreFile,
+                      'remotehost' : clientHost
+                    }
+                  </call>
+                  <else>
+                    <script>
+                      attrsToIgnoreFile = tmpFile
+                    </script>
+                  </else>
+                </if>
+                              
+                <!-- Verify the synchronization of the trees among the servers in 
+                  the topology -->          
+                <call function="'verifyTrees'">
+                  [ clientHost, clientPath, master, [standaloneServer], 
+                    synchroSuffix, None, attrsToIgnoreFile ]
+                </call>
+                
+                <!-- Stop the stand-alone Directory Server -->
+                <call function="'StopDsWithScript'">
+                  { 'location' : standaloneServer.getHostname() }
+                </call>
+                
+                <call function="'testCase_Postamble'"/>
+  
+              </sequence>
+  
+            </testcase>
+          </if>
           
           <import machine="STAF_LOCAL_HOSTNAME"
             file="'%s/../functional-tests/testcases/replication/replication_cleanup.xml' % (TESTS_DIR)"/>
diff --git a/opendj-sdk/opends/tests/staf-tests/stress-tests/testcases/replication/replication_modifyrdn_multiple.xml b/opendj-sdk/opends/tests/staf-tests/stress-tests/testcases/replication/replication_modifyrdn_multiple.xml
index fb183b9..1c58fc7 100644
--- a/opendj-sdk/opends/tests/staf-tests/stress-tests/testcases/replication/replication_modifyrdn_multiple.xml
+++ b/opendj-sdk/opends/tests/staf-tests/stress-tests/testcases/replication/replication_modifyrdn_multiple.xml
@@ -70,7 +70,8 @@
                             % (server1Dir, numberOfEntries)
             totalEntries  = numberOfEntries + 2
             
-            suffix        = 'modifyrdn_multiple' 
+            suffix        = 'modifyrdn_multiple'
+            consumer      = _topologyServerList[1]
           </script>
 
 
@@ -199,6 +200,79 @@
                 }
               </call>
 
+              <!-- If the External Changelog is to be tested, install an
+               !   stand-alone instance whereto replay the changes -->
+              <if expr="globalTestExternalChangelog">
+                <sequence>
+                  <message>
+                    'Test ECL: Install stand-alone instance whereto replay \
+                    changes'
+                  </message>
+                  
+                  <!-- Create instance with default parameters read from 
+                   !   config.py -->
+                  <script>
+                    standaloneServer = Server(DIRECTORY_INSTANCE_HOST,
+                                              DIRECTORY_INSTANCE_DIR,
+                                              DIRECTORY_INSTANCE_PORT,
+                                              DIRECTORY_INSTANCE_ADMIN_PORT,
+                                              DIRECTORY_INSTANCE_SSL_PORT,
+                                              None,
+                                              DIRECTORY_INSTANCE_DN,
+                                              DIRECTORY_INSTANCE_PSWD,
+                                              synchroSuffix)
+                  </script>
+                  <call function="'createInstance'">
+                    { 'dsHost'      : standaloneServer.getHostname(),
+                      'dsDir'       : standaloneServer.getDir(),
+                      'dsPort'      : standaloneServer.getPort(),
+                      'dsAdminPort' : standaloneServer.getAdminPort(),
+                      'dsSslPort'   : standaloneServer.getSslPort(),
+                      'dsJmxPort'   : standaloneServer.getJmxPort(),
+                      'dsBindDN'    : standaloneServer.getRootDn(),
+                      'dsBindPwd'   : standaloneServer.getRootPwd(),
+                      'dsBaseDN'    : standaloneServer.getBaseDn()
+                    }
+                  </call>
+                  
+                  <!-- Copy ldif file from "master" -->
+                  <script>                    
+                    standaloneLdifFile = '%s/%s_entries.ldif' \
+                           % (standaloneServer.getDir(), numberOfEntries)
+                  </script>
+                  <if expr="masterHost != standaloneServer.getHostname()">
+                    <call function="'copyFile'">
+                      { 'location'   : masterHost,
+                        'srcfile'    : ldifFile,
+                        'destfile'   : standaloneLdifFile,
+                        'remotehost' : standaloneServer.getHostname()
+                      }
+                    </call>
+                    <else>
+                      <script>
+                        standaloneLdifFile = ldifFile
+                      </script>
+                    </else>
+                  </if>
+                  
+                  <!-- Import same data imported into "master"  -->
+                  <call function="'ImportLdifWithScript'">
+                    { 'location'   : standaloneServer.getHostname(),
+                      'dsPath'     : '%s/%s' % \
+                                     (standaloneServer.getDir(), OPENDSNAME),
+                      'dsBackEnd'  : DIRECTORY_INSTANCE_BE,          
+                      'dsLdifFile' : standaloneLdifFile
+                    }
+                  </call>
+                  
+                  <!-- Start the stand-alone Directory Server -->
+                  <call function="'StartDsWithScript'">
+                    { 'location' : standaloneServer.getHostname() }
+                  </call>
+                  
+                </sequence>
+              </if>
+
               <call function="'testCase_Postamble'"/>
 
             </sequence>
@@ -337,6 +411,38 @@
                       </loop>
                     </sequence>
                     </block>
+                    
+                    <!-- If the External Changelog is to be tested, install an
+                     !   stand-alone instance whereto replay the changes -->
+                    <if expr="globalTestExternalChangelog">
+                      <block name="'ecl-test'">
+                      <sequence>
+                        <message>
+                          'replication_modify: Test ECL: Read and replay \
+                          changes'
+                        </message>
+                        
+                        <call function="'eclReadAndPlay'">
+                          { 'location'       : standaloneServer.getHostname(),
+                            'standaloneHost' : standaloneServer.getHostname(),
+                            'standalonePort' : standaloneServer.getPort(),
+                            'replicaHost1'   : consumer.getHostname(),
+                            'replicaPort1'   : consumer.getPort(),
+                            'replicaHost2'   : masterHost,
+                            'replicaPort2'   : master.getPort(),
+                            'bindDn'         : master.getRootDn(),
+                            'bindPswd'       : master.getRootPwd(),
+                            'eclMode'        : globalExternalChangelogMode,
+                            'queueSize'      : 1000,
+                            'outputFilename' : '%s/eclReadAndPlay.output' \
+                                               % standaloneServer.getDir()
+                          }
+                        </call>
+                        
+                      </sequence>
+                      </block>
+                    </if>
+                    
                   </parallel>
               <!--</sequence>
               </timer>
@@ -470,7 +576,74 @@
 
           </testcase>
           
+          <!-- If the External Changelog is to be tested, verify the 
+           !   synchronisation of the tree in the stand-alone instance -->
+          <if expr="globalTestExternalChangelog">
+            <testcase name="getTestCaseName('Verify stand-alone server tree synchronization')">
+  
+              <sequence>
+  
+                <call function="'testCase_Preamble'"/>
+  
+                <message>
+                  'replication_modify: Verify the stand-alone server tree \
+                  synchronization'
+                </message>
+                
+                <script>
+                  attrsToIgnoreFile = '%s/ignoreAttrsFile.ldifdiff' % \
+                                      clientDataDir
+                  tmpFile = '%s/ignoreAttrsFile.ldifdiff' % TMPDIR
+                  
+                  ignoreAttrs = []
+                  ignoreAttrs.append('ds-sync-generation-id')
+                  ignoreAttrs.append('ds-sync-hist')
+                  ignoreAttrs.append('ds-sync-state')
+                  ignoreAttrs.append('createTimestamp')
+                  ignoreAttrs.append('modifyTimestamp')
+                  
+                  # write out the ldif file
+                  outfile = open(tmpFile,"w")
           
+                  for line in ignoreAttrs:
+                    outfile.write("%s\n" % line)
+          
+                  outfile.close()
+                </script>
+              
+                <if expr="clientHost != STAXServiceMachine">
+                  <call function="'copyFile'">
+                    { 'location'   : masterHost,
+                      'srcfile'    : tmpFile,
+                      'destfile'   : attrsToIgnoreFile,
+                      'remotehost' : clientHost
+                    }
+                  </call>
+                  <else>
+                    <script>
+                      attrsToIgnoreFile = tmpFile
+                    </script>
+                  </else>
+                </if>
+                              
+                <!-- Verify the synchronization of the trees among the servers in 
+                  the topology -->          
+                <call function="'verifyTrees'">
+                  [ clientHost, clientPath, master, [standaloneServer], 
+                    synchroSuffix, None, attrsToIgnoreFile ]
+                </call>
+                
+                <!-- Stop the stand-alone Directory Server -->
+                <call function="'StopDsWithScript'">
+                  { 'location' : standaloneServer.getHostname() }
+                </call>
+                
+                <call function="'testCase_Postamble'"/>
+  
+              </sequence>
+  
+            </testcase>
+          </if>
           
           <import machine="STAF_LOCAL_HOSTNAME"
             file="'%s/../functional-tests/testcases/replication/replication_cleanup.xml' % (TESTS_DIR)"/>

--
Gitblit v1.10.0