From 69a5e67a588c3e4724f93e20792bb12c51595c2e Mon Sep 17 00:00:00 2001
From: ugaston <ugaston@localhost>
Date: Wed, 12 Aug 2009 16:46:00 +0000
Subject: [PATCH] Make replication func tests server-splittable + small fixes

---
 opends/tests/staf-tests/functional-tests/testcases/replication/changelog/changelog.xml                 |  356 ++++++++++++------
 opends/tests/staf-tests/shared/tests/config.py.stubs                                                   |    1 
 opends/tests/staf-tests/shared/functions/tools.xml                                                     |    8 
 opends/tests/staf-tests/functional-tests/testcases/replication/conflict/conflict.xml                   |   75 ++-
 opends/tests/staf-tests/functional-tests/testcases/replication/encryption/encryption.xml               |    2 
 opends/tests/staf-tests/functional-tests/testcases/replication/replication_cleanup.xml                 |    4 
 opends/tests/staf-tests/functional-tests/testcases/replication/replication_setup.xml                   |   66 ++-
 opends/tests/staf-tests/functional-tests/testcases/privileges/privileges_users.xml                     |   16 
 opends/tests/staf-tests/functional-tests/testcases/replication/resynchronization/resynchronization.xml |  176 ++++++--
 opends/tests/staf-tests/shared/functions/topology.xml                                                  |  152 ++++++-
 opends/tests/staf-tests/functional-tests/testcases/replication/replication.xml                         |    5 
 opends/tests/staf-tests/functional-tests/testcases/replication/totalupdate/totalupdate.xml             |   52 +
 opends/tests/staf-tests/functional-tests/testcases/replication/failover/failover.xml                   |  144 +++++-
 opends/tests/staf-tests/shared/ant/build.properties                                                    |    1 
 opends/tests/staf-tests/shared/python/replication.py                                                   |   29 +
 15 files changed, 759 insertions(+), 328 deletions(-)

diff --git a/opends/tests/staf-tests/functional-tests/testcases/privileges/privileges_users.xml b/opends/tests/staf-tests/functional-tests/testcases/privileges/privileges_users.xml
index 276ed46..4f820b0 100644
--- a/opends/tests/staf-tests/functional-tests/testcases/privileges/privileges_users.xml
+++ b/opends/tests/staf-tests/functional-tests/testcases/privileges/privileges_users.xml
@@ -2653,14 +2653,14 @@
                   <!--
                   <script>
                       listAttr=[]
-                      listAttr.append('objectclass: top')
-                      listAttr.append('objectclass: person')
-                      listAttr.append('objectclass: mozillaobject')
-                      listAttr.append('cn: Salmon Fish')
-                      listAttr.append('sn: Fish')
-                      listAttr.append('givenname: Salmon')
-                      listAttr.append('l: Cupertino')
-                      listAttr.append('uid: sfish')
+                      listAttr.append('objectclass:top')
+                      listAttr.append('objectclass:person')
+                      listAttr.append('objectclass:mozillaobject')
+                      listAttr.append('cn:Salmon Fish')
+                      listAttr.append('sn:Fish')
+                      listAttr.append('givenname:Salmon')
+                      listAttr.append('l:Cupertino')
+                      listAttr.append('uid:sfish')
                   </script>
       
                   <call function="'addAnEntry'">
diff --git a/opends/tests/staf-tests/functional-tests/testcases/replication/changelog/changelog.xml b/opends/tests/staf-tests/functional-tests/testcases/replication/changelog/changelog.xml
index 6e4abd5..1033dbb 100644
--- a/opends/tests/staf-tests/functional-tests/testcases/replication/changelog/changelog.xml
+++ b/opends/tests/staf-tests/functional-tests/testcases/replication/changelog/changelog.xml
@@ -138,20 +138,26 @@
                                 
               <!-- Search changelog in the various replication servers -->                                                           
               <paralleliterate var="server" 
-                               in="_topologyServerList">
+                               in="_topologyServerList" 
+                               indexvar="i">
                 <sequence>                    
                   <script>
-                    serverPath = '%s/%s' % (server.getDir(), OPENDSNAME)
+                    if globalSplitServers:
+                      replServer = _topologyReplServerList[i]
+                    else:
+                      replServer = server
+
+                    replServerPath = '%s/%s' % (replServer.getDir(), OPENDSNAME)
                   </script>
                     
                   <!-- Search for entry add -->
                   <call function="'ldapSearchWithScript'">
-                    { 'location'         : server.getHostname(),
-                      'dsPath'           : serverPath,
-                      'dsInstanceHost'   : server.getHostname(),
-                      'dsInstancePort'   : server.getPort(),
-                      'dsInstanceDn'     : server.getRootDn(),
-                      'dsInstancePswd'   : server.getRootPwd(),
+                    { 'location'         : replServer.getHostname(),
+                      'dsPath'           : replServerPath,
+                      'dsInstanceHost'   : replServer.getHostname(),
+                      'dsInstancePort'   : replServer.getPort(),
+                      'dsInstanceDn'     : replServer.getRootDn(),
+                      'dsInstancePswd'   : replServer.getRootPwd(),
                       'dsBaseDN'         : 'dc=replicationChanges',
                       'dsFilter'         : 'uid=iabizen.0',
                       'dsAttributes'     : 'dn'
@@ -173,12 +179,12 @@
 
                   <!-- Search for entry modify -->
                   <call function="'ldapSearchWithScript'">
-                    { 'location'         : server.getHostname(),
-                      'dsPath'           : serverPath,
-                      'dsInstanceHost'   : server.getHostname(),
-                      'dsInstancePort'   : server.getPort(),
-                      'dsInstanceDn'     : server.getRootDn(),
-                      'dsInstancePswd'   : server.getRootPwd(),
+                    { 'location'         : replServer.getHostname(),
+                      'dsPath'           : replServerPath,
+                      'dsInstanceHost'   : replServer.getHostname(),
+                      'dsInstancePort'   : replServer.getPort(),
+                      'dsInstanceDn'     : replServer.getRootDn(),
+                      'dsInstancePswd'   : replServer.getRootPwd(),
                       'dsBaseDN'         : 'dc=replicationChanges',
                       'dsFilter'         : 'l=GEC',
                       'dsAttributes'     : 'dn'
@@ -275,25 +281,32 @@
               <!-- Export changelog in the various replication servers, then
                 check for added entry in the exported files -->                                                           
               <paralleliterate var="server" 
-                               in="_topologyServerList">
+                               in="_topologyServerList" 
+                               indexvar="i">
                 <sequence>
                     
                   <script>
-                    serverPath = '%s/%s' % (server.getDir(), OPENDSNAME)
-                    serverDataDir = '%s/%s' % (server.getDir(),remote.reldatadir)
+                    if globalSplitServers:
+                      replServer = _topologyReplServerList[i]
+                    else:
+                      replServer = server
+
+                    replServerPath = '%s/%s' % (replServer.getDir(), OPENDSNAME)
+                    replServerDataDir = '%s/%s' \
+                      % (replServer.getDir(),remote.reldatadir)
                     exportedChangelog = \
                       '%s/replication/changelog_export_online.ldif' \
-                      % serverDataDir                     
+                      % replServerDataDir                     
                   </script>
 
                   <!-- Export changelog data from server -->
                   <call function="'exportLdifTask'">
-                    { 'location'       : server.getHostname(),
-                      'dsPath'         : serverPath,
-                      'dsInstanceHost' : server.getHostname(),
-                      'dsInstancePort' : server.getPort(),
-                      'dsInstanceDn'   : server.getRootDn(),
-                      'dsInstancePswd' : server.getRootPwd(),
+                    { 'location'       : replServer.getHostname(),
+                      'dsPath'         : replServerPath,
+                      'dsInstanceHost' : replServer.getHostname(),
+                      'dsInstancePort' : replServer.getPort(),
+                      'dsInstanceDn'   : replServer.getRootDn(),
+                      'dsInstancePswd' : replServer.getRootPwd(),
                       'taskID'         : 'changelog export task',
                       'ldifFile'       : exportedChangelog,
                       'backEnd'        : 'replicationChanges'
@@ -303,7 +316,7 @@
                   <!-- Check for the added entry inside the exported file -->
                   <call function="'grep'">
                     {
-                      'location'   : server.getHostname(),
+                      'location'   : replServer.getHostname(),
                       'filename'   : exportedChangelog,
                       'testString' : 'uid=iabizen.2'
                     }
@@ -392,25 +405,37 @@
               </call>
                                 
               <!-- Stop the servers in the topology -->
+              <script>
+                if globalSplitServers:
+                  serverList = _topologyReplServerList
+                else:
+                  serverList = _topologyServerList
+              </script>
               <call function="'stopServers'">
-                [_topologyServerList]
+                [serverList]
               </call>
                                               
-
               <!-- Backup changelog in the various replication servers -->                                                           
               <paralleliterate var="server" 
-                               in="_topologyServerList">
+                               in="_topologyServerList" 
+                               indexvar="i">
                 <sequence>                    
                   <script>
-                    serverPath = '%s/%s' % (server.getDir(), OPENDSNAME)
-                    serverDataDir = '%s/%s' % (server.getDir(),remote.reldatadir)
+                    if globalSplitServers:
+                      replServer = _topologyReplServerList[i]
+                    else:
+                      replServer = server
+
+                    replServerPath = '%s/%s' % (replServer.getDir(), OPENDSNAME)
+                    replServerDataDir = '%s/%s' \
+                      % (replServer.getDir(),remote.reldatadir)
                     changelogBackupDir = '%s/replication/changelog_backup' \
-                                         % serverDataDir                     
+                                         % replServerDataDir                     
                   </script>
 
                   <call function="'backup'">
-                    { 'location'  : server.getHostname(),
-                      'dsPath'    : serverPath,
+                    { 'location'  : replServer.getHostname(),
+                      'dsPath'    : replServerPath,
                       'backupDir' : changelogBackupDir,
                       'backEnd'   : 'replicationChanges'
                     }
@@ -419,10 +444,15 @@
               </paralleliterate>
                                         
               <!-- Start the servers in the topology -->
+              <script>
+                if globalSplitServers:
+                  serverList = _topologyReplServerList
+                else:
+                  serverList = _topologyServerList
+              </script>
               <call function="'startServers'">
-                [_topologyServerList]
-              </call>
-                
+                [serverList]
+              </call>                
 
               <!-- Add entry B to "master" server -->
               <script>
@@ -460,7 +490,7 @@
                                 
               <!-- Stop the servers in the topology -->
               <call function="'stopServers'">
-                [_topologyServerList]
+                [_splitServerList]
               </call>
                                               
 
@@ -472,10 +502,18 @@
                 <sequence>
                     
                   <script>
+                    if globalSplitServers:
+                      replServer = _topologyReplServerList[i]
+                    else:
+                      replServer = server
+
                     serverPath = '%s/%s' % (server.getDir(), OPENDSNAME)
                     serverDataDir = '%s/%s' % (server.getDir(),remote.reldatadir)
+                    replServerPath = '%s/%s' % (replServer.getDir(), OPENDSNAME)
+                    replServerDataDir = '%s/%s' \
+                      % (replServer.getDir(),remote.reldatadir)
                     changelogBackupDir = '%s/replication/changelog_backup' \
-                                         % serverDataDir                     
+                                         % replServerDataDir                     
                   </script>
 
                   <!-- Restore master_backup -->  
@@ -516,8 +554,8 @@
                                                             
                   <!-- Restore changelog_backup -->
                   <call function="'restore'">
-                    { 'location'  : server.getHostname(),
-                      'dsPath'    : serverPath,
+                    { 'location'  : replServer.getHostname(),
+                      'dsPath'    : replServerPath,
                       'backupDir' : changelogBackupDir
                     }
                   </call>                    
@@ -526,7 +564,7 @@
                                         
               <!-- Start the servers in the topology -->
               <call function="'startServers'">
-                [_topologyServerList]
+                [_splitServerList]
               </call>                                
 
                 
@@ -534,10 +572,17 @@
               <!-- Search synchroSuffix and changelog in the various servers,
                 looking for entries A (should be there) and B (shouldn't be) -->                                                           
               <paralleliterate var="server" 
-                               in="_topologyServerList">
-                <sequence>                    
+                               in="_topologyServerList" 
+                               indexvar="i">
+                <sequence>
                   <script>
+                    if globalSplitServers:
+                      replServer = _topologyReplServerList[i]
+                    else:
+                      replServer = server
+
                     serverPath = '%s/%s' % (server.getDir(), OPENDSNAME)
+                    replServerPath = '%s/%s' % (replServer.getDir(), OPENDSNAME)      
                   </script>
 
                   <!-- Search for entry A (should be there) -->
@@ -555,12 +600,12 @@
                     }                
                   </call>                                                        
                   <call function="'ldapSearchWithScript'">
-                    { 'location'         : server.getHostname(),
-                      'dsPath'           : serverPath,
-                      'dsInstanceHost'   : server.getHostname(),
-                      'dsInstancePort'   : server.getPort(),
-                      'dsInstanceDn'     : server.getRootDn(),
-                      'dsInstancePswd'   : server.getRootPwd(),
+                    { 'location'         : replServer.getHostname(),
+                      'dsPath'           : replServerPath,
+                      'dsInstanceHost'   : replServer.getHostname(),
+                      'dsInstancePort'   : replServer.getPort(),
+                      'dsInstanceDn'     : replServer.getRootDn(),
+                      'dsInstancePswd'   : replServer.getRootPwd(),
                       'dsBaseDN'         : 'dc=replicationChanges',
                       'dsFilter'         : 'uid=iabizen.A',
                       'dsAttributes'     : 'dn',
@@ -596,12 +641,12 @@
                     }                
                   </call>                                                        
                   <call function="'ldapSearchWithScript'">
-                    { 'location'         : server.getHostname(),
-                      'dsPath'           : serverPath,
-                      'dsInstanceHost'   : server.getHostname(),
-                      'dsInstancePort'   : server.getPort(),
-                      'dsInstanceDn'     : server.getRootDn(),
-                      'dsInstancePswd'   : server.getRootPwd(),
+                    { 'location'         : replServer.getHostname(),
+                      'dsPath'           : replServerPath,
+                      'dsInstanceHost'   : replServer.getHostname(),
+                      'dsInstancePort'   : replServer.getPort(),
+                      'dsInstanceDn'     : replServer.getRootDn(),
+                      'dsInstancePswd'   : replServer.getRootPwd(),
                       'dsBaseDN'         : 'dc=replicationChanges',
                       'dsFilter'         : 'uid=iabizen.B',
                       'dsAttributes'     : 'dn',
@@ -707,22 +752,30 @@
                 
               <!-- Backup changelog in the various replication servers -->                                                           
               <paralleliterate var="server" 
-                               in="_topologyServerList">
+                               in="_topologyServerList" 
+                               indexvar="i">
                 <sequence>                    
                   <script>
-                    serverPath = '%s/%s' % (server.getDir(), OPENDSNAME)
-                    serverDataDir = '%s/%s' % (server.getDir(),remote.reldatadir)
+                    if globalSplitServers:
+                      replServer = _topologyReplServerList[i]
+                    else:
+                      replServer = server
+
+                    replServerPath = '%s/%s' % (replServer.getDir(), OPENDSNAME)
+                    replServerDataDir = '%s/%s' \
+                      % (replServer.getDir(),remote.reldatadir)
                     changelogBackupDir = \
-                      '%s/replication/changelog_backup_online' % serverDataDir                     
+                      '%s/replication/changelog_backup_online' \
+                      % replServerDataDir                     
                   </script>
 
                   <call function="'backupTask'">
-                    { 'location'       : server.getHostname(),
-                      'dsPath'         : serverPath,
-                      'dsInstanceHost' : server.getHostname(),
-                      'dsInstancePort' : server.getPort(),
-                      'dsInstanceDn'   : server.getRootDn(),
-                      'dsInstancePswd' : server.getRootPwd(),
+                    { 'location'       : replServer.getHostname(),
+                      'dsPath'         : replServerPath,
+                      'dsInstanceHost' : replServer.getHostname(),
+                      'dsInstancePort' : replServer.getPort(),
+                      'dsInstanceDn'   : replServer.getRootDn(),
+                      'dsInstancePswd' : replServer.getRootPwd(),
                       'taskID'         : 'changelog backup task',
                       'backupDir'      : changelogBackupDir,
                       'backEnd'        : 'replicationChanges'
@@ -774,20 +827,29 @@
                 <sequence>
                     
                   <script>
+                    if globalSplitServers:
+                      replServer = _topologyReplServerList[i]
+                    else:
+                      replServer = server
+
                     serverPath = '%s/%s' % (server.getDir(), OPENDSNAME)
                     serverDataDir = '%s/%s' % (server.getDir(),remote.reldatadir)
+                    replServerPath = '%s/%s' % (replServer.getDir(), OPENDSNAME)
+                    replServerDataDir = '%s/%s' \
+                      % (replServer.getDir(),remote.reldatadir)
                     changelogBackupDir = \
-                      '%s/replication/changelog_backup_online' % serverDataDir
+                      '%s/replication/changelog_backup_online' \
+                      % replServerDataDir                     
                   </script>
 
                   <!-- Restore changelog_backup -->
                   <call function="'restoreTask'">
-                    { 'location'       : server.getHostname(),
-                      'dsPath'         : serverPath,
-                      'dsInstanceHost' : server.getHostname(),
-                      'dsInstancePort' : server.getPort(),
-                      'dsInstanceDn'   : server.getRootDn(),
-                      'dsInstancePswd' : server.getRootPwd(),
+                    { 'location'       : replServer.getHostname(),
+                      'dsPath'         : replServerPath,
+                      'dsInstanceHost' : replServer.getHostname(),
+                      'dsInstancePort' : replServer.getPort(),
+                      'dsInstanceDn'   : replServer.getRootDn(),
+                      'dsInstancePswd' : replServer.getRootPwd(),
                       'taskID'         : 'changelog restore task',
                       'backupDir'      : changelogBackupDir
                     }
@@ -842,12 +904,20 @@
                 looking for entries AA (should be there) and BB (shouldn't be) 
                 -->                                                           
               <paralleliterate var="server" 
-                               in="_topologyServerList">
+                               in="_topologyServerList" 
+                               indexvar="i">
                 <sequence>                    
                   <script>
+                    if globalSplitServers:
+                      replServer = _topologyReplServerList[i]
+                    else:
+                      replServer = server
+
                     serverPath = '%s/%s' % (server.getDir(), OPENDSNAME)
+                    replServerPath = '%s/%s' % (replServer.getDir(), OPENDSNAME)
                   </script>
 
+
                   <!-- Search for entry AA (should be there) -->
                   <call function="'ldapSearchWithScript'">
                     { 'location'         : server.getHostname(),
@@ -863,12 +933,12 @@
                     }                
                   </call>                                                        
                   <call function="'ldapSearchWithScript'">
-                    { 'location'         : server.getHostname(),
-                      'dsPath'           : serverPath,
-                      'dsInstanceHost'   : server.getHostname(),
-                      'dsInstancePort'   : server.getPort(),
-                      'dsInstanceDn'     : server.getRootDn(),
-                      'dsInstancePswd'   : server.getRootPwd(),
+                    { 'location'         : replServer.getHostname(),
+                      'dsPath'           : replServerPath,
+                      'dsInstanceHost'   : replServer.getHostname(),
+                      'dsInstancePort'   : replServer.getPort(),
+                      'dsInstanceDn'     : replServer.getRootDn(),
+                      'dsInstancePswd'   : replServer.getRootPwd(),
                       'dsBaseDN'         : 'dc=replicationChanges',
                       'dsFilter'         : 'uid=iabizen.AA',
                       'dsAttributes'     : 'dn',
@@ -904,12 +974,12 @@
                     }                
                   </call>                                                        
                   <call function="'ldapSearchWithScript'">
-                    { 'location'         : server.getHostname(),
-                      'dsPath'           : serverPath,
-                      'dsInstanceHost'   : server.getHostname(),
-                      'dsInstancePort'   : server.getPort(),
-                      'dsInstanceDn'     : server.getRootDn(),
-                      'dsInstancePswd'   : server.getRootPwd(),
+                    { 'location'         : replServer.getHostname(),
+                      'dsPath'           : replServerPath,
+                      'dsInstanceHost'   : replServer.getHostname(),
+                      'dsInstancePort'   : replServer.getPort(),
+                      'dsInstanceDn'     : replServer.getRootDn(),
+                      'dsInstancePswd'   : replServer.getRootPwd(),
                       'dsBaseDN'         : 'dc=replicationChanges',
                       'dsFilter'         : 'uid=iabizen.BB',
                       'dsAttributes'     : 'dn',
@@ -1006,20 +1076,27 @@
                 
               <!-- Search changelog in the various replication servers -->                                                           
               <paralleliterate var="server" 
-                               in="_topologyServerList">
+                               in="_topologyServerList" 
+                               indexvar="i">
                 <sequence>
                     
                   <script>
-                    serverPath = '%s/%s' % (server.getDir(), OPENDSNAME)
+                    if globalSplitServers:
+                      replServer = _topologyReplServerList[i]
+                    else:
+                      replServer = server
+
+                    replServerPath = '%s/%s' % (replServer.getDir(), OPENDSNAME)
                   </script>
+
                     
                   <call function="'ldapSearchWithScript'">
-                    { 'location'         : server.getHostname(),
-                      'dsPath'           : serverPath,
-                      'dsInstanceHost'   : server.getHostname(),
-                      'dsInstancePort'   : server.getPort(),
-                      'dsInstanceDn'     : server.getRootDn(),
-                      'dsInstancePswd'   : server.getRootPwd(),
+                    { 'location'         : replServer.getHostname(),
+                      'dsPath'           : replServerPath,
+                      'dsInstanceHost'   : replServer.getHostname(),
+                      'dsInstancePort'   : replServer.getPort(),
+                      'dsInstanceDn'     : replServer.getRootDn(),
+                      'dsInstancePswd'   : replServer.getRootPwd(),
                       'dsBaseDN'         : 'dc=replicationChanges' ,
                       'dsFilter'         : 'uid=iabizen.3',
                       'dsAttributes'     : 'dn'
@@ -1059,10 +1136,17 @@
 
               <!-- Search changelog in the various replication servers -->                                                           
               <paralleliterate var="server" 
-                               in="_topologyServerList">
-                <sequence>                    
+                               in="_topologyServerList" 
+                               indexvar="i">
+                <sequence>
                   <script>
+                    if globalSplitServers:
+                      replServer = _topologyReplServerList[i]
+                    else:
+                      replServer = server
+
                     serverPath = '%s/%s' % (server.getDir(), OPENDSNAME)
+                    replServerPath = '%s/%s' % (replServer.getDir(), OPENDSNAME)
                   </script>
                                                                          
                   <!-- Search for entry in the suffix (should NOT be there) -->
@@ -1082,12 +1166,12 @@
                   <!-- Search for corresponding change in the changelog
                     (should NOT be there) -->                                               
                   <call function="'ldapSearchWithScript'">
-                    { 'location'         : server.getHostname(),
-                      'dsPath'           : serverPath,
-                      'dsInstanceHost'   : server.getHostname(),
-                      'dsInstancePort'   : server.getPort(),
-                      'dsInstanceDn'     : server.getRootDn(),
-                      'dsInstancePswd'   : server.getRootPwd(),
+                    { 'location'         : replServer.getHostname(),
+                      'dsPath'           : replServerPath,
+                      'dsInstanceHost'   : replServer.getHostname(),
+                      'dsInstancePort'   : replServer.getPort(),
+                      'dsInstanceDn'     : replServer.getRootDn(),
+                      'dsInstancePswd'   : replServer.getRootPwd(),
                       'dsBaseDN'         : 'dc=replicationChanges',
                       'dsFilter'         : 'uid=iabizen.3',
                       'dsAttributes'     : 'dn',
@@ -1153,19 +1237,30 @@
                 specified in the conf expires'
               </message>
 
+              <script>
+                if globalSplitServers:
+                  masterReplServer = _topologyReplServerList[0]
+                else:
+                  masterReplServer = master
+
+                masterReplServerHost = masterReplServer.getHostname()
+                masterReplServerPath = '%s/%s' % \
+                                       (masterReplServer.getDir(), OPENDSNAME)
+              </script>
+
               <message>
                 'Set purge delay to 20 seconds on server %s:%s' \
-                % (masterHost, master.getPort())
+                % (masterReplServerHost, masterReplServer.getPort())
               </message>
 
               <!-- Set purge delay to 20s on "master" server -->              
               <call function="'dsconfigSet'">
-                { 'location'            : masterHost,
-                  'dsPath'              : masterPath,
-                  'dsInstanceHost'      : masterHost,
-                  'dsInstanceAdminPort' : master.getAdminPort(),
-                  'dsInstanceDn'        : master.getRootDn(),
-                  'dsInstancePswd'      : master.getRootPwd(),
+                { 'location'            : masterReplServerHost,
+                  'dsPath'              : masterReplServerPath,
+                  'dsInstanceHost'      : masterReplServerHost,
+                  'dsInstanceAdminPort' : masterReplServer.getAdminPort(),
+                  'dsInstanceDn'        : masterReplServer.getRootDn(),
+                  'dsInstancePswd'      : masterReplServer.getRootPwd(),
                   'objectName'          : 'replication-server' ,
                   'propertyType'        : 'provider',
                   'propertyName'        : 'Multimaster Synchronization',
@@ -1237,20 +1332,26 @@
                 
               <!-- Search changelog in the various replication servers -->                                                           
               <paralleliterate var="server" 
-                               in="_topologyServerList">
+                               in="_topologyServerList" 
+                               indexvar="i">
                 <sequence>                    
                   <script>
-                    serverPath = '%s/%s' % (server.getDir(), OPENDSNAME)
+                    if globalSplitServers:
+                      replServer = _topologyReplServerList[i]
+                    else:
+                      replServer = server
+
+                    replServerPath = '%s/%s' % (replServer.getDir(), OPENDSNAME)                    
                   </script>
-                    
+
                   <call function="'ldapSearchWithScript'">
                     {
-                      'location'         : server.getHostname(),
-                      'dsPath'           : serverPath,
-                      'dsInstanceHost'   : server.getHostname(),
-                      'dsInstancePort'   : server.getPort(),
-                      'dsInstanceDn'     : server.getRootDn(),
-                      'dsInstancePswd'   : server.getRootPwd(),
+                      'location'         : replServer.getHostname(),
+                      'dsPath'           : replServerPath,
+                      'dsInstanceHost'   : replServer.getHostname(),
+                      'dsInstancePort'   : replServer.getPort(),
+                      'dsInstanceDn'     : replServer.getRootDn(),
+                      'dsInstancePswd'   : replServer.getRootPwd(),
                       'dsBaseDN'         : 'dc=replicationChanges' ,
                       'dsFilter'         : 'uid=iabizen.X',
                       'dsAttributes'     : 'dn'
@@ -1287,17 +1388,22 @@
                                indexvar="i">
                 <sequence>                    
                   <script>
-                    serverPath = '%s/%s' % (server.getDir(), OPENDSNAME)                    
+                    if globalSplitServers:
+                      replServer = _topologyReplServerList[i]
+                    else:
+                      replServer = server
+
+                    replServerPath = '%s/%s' % (replServer.getDir(), OPENDSNAME)                    
                   </script>
                                                                                                                         
                   <call function="'ldapSearchWithScript'">
                     {
-                      'location'         : server.getHostname(),
-                      'dsPath'           : serverPath,
-                      'dsInstanceHost'   : server.getHostname(),
-                      'dsInstancePort'   : server.getPort(),
-                      'dsInstanceDn'     : server.getRootDn(),
-                      'dsInstancePswd'   : server.getRootPwd(),
+                      'location'         : replServer.getHostname(),
+                      'dsPath'           : replServerPath,
+                      'dsInstanceHost'   : replServer.getHostname(),
+                      'dsInstancePort'   : replServer.getPort(),
+                      'dsInstanceDn'     : replServer.getRootDn(),
+                      'dsInstancePswd'   : replServer.getRootPwd(),
                       'dsBaseDN'         : 'dc=replicationChanges',
                       'dsFilter'         : 'uid=iabizen.X',
                       'dsAttributes'     : 'dn',
@@ -1310,7 +1416,7 @@
                     resultLength = len(searchResult) > 0
 
                     if i == 0:
-                      # index [0] corresponds to "master" server
+                      # index [0] corresponds to "master" repl server
                       # => purge delay expired => changelog purged
                       # => expect NO entry returned
                       # => len(searchResult) = 0 => resultLength = 0
diff --git a/opends/tests/staf-tests/functional-tests/testcases/replication/conflict/conflict.xml b/opends/tests/staf-tests/functional-tests/testcases/replication/conflict/conflict.xml
index 46553c3..5fecb4e 100644
--- a/opends/tests/staf-tests/functional-tests/testcases/replication/conflict/conflict.xml
+++ b/opends/tests/staf-tests/functional-tests/testcases/replication/conflict/conflict.xml
@@ -80,6 +80,13 @@
             server2DataDir = '%s/%s' % (server2.getDir(),remote.reldatadir)
             server1name = '%s:%s' % (server1Host, server1.getPort())
             server2name = '%s:%s' % (server2Host, server2.getPort())
+            
+            if globalSplitServers:
+              replServer1 = _topologyReplServerList[0]
+              replServer2 = _topologyReplServerList[1]
+            else:
+              replServer1 = server1
+              replServer2 = server2
 
             # Filter used for retrieving conflict counters from cn=monitor              
             filter0 = '(base-dn=%s)' % synchroSuffix
@@ -286,7 +293,7 @@
 
               <!-- Disconnect Replication Servers -->
               <call function="'disconnectReplicationServers'">
-                [ clientHost, clientPath, [server1, server2] ]
+                [ clientHost, clientPath, [replServer1, replServer2] ]
               </call>
 
               <iterate var="server"
@@ -343,7 +350,7 @@
                 
               <!-- Reconnect Replication Servers -->
               <call function="'reconnectReplicationServers'">
-                [ clientHost, clientPath, [server1, server2] ]
+                [ clientHost, clientPath, [replServer1, replServer2] ]
               </call>
 
               <!-- Check conflict is resolved -->
@@ -445,7 +452,7 @@
 
               <!-- Disconnect Replication Servers -->
               <call function="'disconnectReplicationServers'">
-                [ clientHost, clientPath, [server1, server2] ]
+                [ clientHost, clientPath, [replServer1, replServer2] ]
               </call>
 
               <iterate var="server"
@@ -503,7 +510,7 @@
                 
               <!-- Reconnect Replication Servers -->
               <call function="'reconnectReplicationServers'">
-                [ clientHost, clientPath, [server1, server2] ]
+                [ clientHost, clientPath, [replServer1, replServer2] ]
               </call>
 
               <!-- Check conflict is resolved -->
@@ -618,7 +625,7 @@
 
               <!-- Disconnect Replication Servers -->
               <call function="'disconnectReplicationServers'">
-                [ clientHost, clientPath, [server1, server2] ]
+                [ clientHost, clientPath, [replServer1, replServer2] ]
               </call>
 
               <iterate var="server"
@@ -690,7 +697,7 @@
                 
               <!-- Reconnect Replication Servers -->
               <call function="'reconnectReplicationServers'">
-                [ clientHost, clientPath, [server1, server2] ]
+                [ clientHost, clientPath, [replServer1, replServer2] ]
               </call>
 
               <!-- Check conflict is resolved -->
@@ -805,7 +812,7 @@
 
               <!-- Disconnect Replication Servers -->
               <call function="'disconnectReplicationServers'">
-                [ clientHost, clientPath, [server1, server2] ]
+                [ clientHost, clientPath, [replServer1, replServer2] ]
               </call>
 
               <iterate var="server"
@@ -877,7 +884,7 @@
                 
               <!-- Reconnect Replication Servers -->
               <call function="'reconnectReplicationServers'">
-                [ clientHost, clientPath, [server1, server2] ]
+                [ clientHost, clientPath, [replServer1, replServer2] ]
               </call>
 
               <!-- Check conflict is resolved -->
@@ -984,7 +991,7 @@
 
               <!-- Disconnect Replication Servers -->
               <call function="'disconnectReplicationServers'">
-                [ clientHost, clientPath, [server1, server2] ]
+                [ clientHost, clientPath, [replServer1, replServer2] ]
               </call>
 
               <iterate var="server"
@@ -1043,7 +1050,7 @@
                 
               <!-- Reconnect Replication Servers -->
               <call function="'reconnectReplicationServers'">
-                [ clientHost, clientPath, [server1, server2] ]
+                [ clientHost, clientPath, [replServer1, replServer2] ]
               </call>
 
               <!-- Check conflict is resolved -->
@@ -1150,7 +1157,7 @@
 
               <!-- Disconnect Replication Servers -->
               <call function="'disconnectReplicationServers'">
-                [ clientHost, clientPath, [server1, server2] ]
+                [ clientHost, clientPath, [replServer1, replServer2] ]
               </call>
 
               <iterate var="server"
@@ -1209,7 +1216,7 @@
                 
               <!-- Reconnect Replication Servers -->
               <call function="'reconnectReplicationServers'">
-                [ clientHost, clientPath, [server1, server2] ]
+                [ clientHost, clientPath, [replServer1, replServer2] ]
               </call>
 
               <!-- Check conflict is resolved -->
@@ -1323,7 +1330,7 @@
 
               <!-- Disconnect Replication Servers -->
               <call function="'disconnectReplicationServers'">
-                [ clientHost, clientPath, [server1, server2] ]
+                [ clientHost, clientPath, [replServer1, replServer2] ]
               </call>
 
               <iterate var="server"
@@ -1382,7 +1389,7 @@
                 
               <!-- Reconnect Replication Servers -->
               <call function="'reconnectReplicationServers'">
-                [ clientHost, clientPath, [server1, server2] ]
+                [ clientHost, clientPath, [replServer1, replServer2] ]
               </call>
 
               <!-- Check conflict is resolved -->
@@ -1491,7 +1498,7 @@
 
               <!-- Disconnect Replication Servers -->
               <call function="'disconnectReplicationServers'">
-                [ clientHost, clientPath, [server1, server2] ]
+                [ clientHost, clientPath, [replServer1, replServer2] ]
               </call>
 
               <iterate var="server"
@@ -1550,7 +1557,7 @@
                 
               <!-- Reconnect Replication Servers -->
               <call function="'reconnectReplicationServers'">
-                [ clientHost, clientPath, [server1, server2] ]
+                [ clientHost, clientPath, [replServer1, replServer2] ]
               </call>
 
               <!-- Check conflict is resolved -->
@@ -1669,7 +1676,7 @@
 
               <!-- Disconnect Replication Servers -->
               <call function="'disconnectReplicationServers'">
-                [ clientHost, clientPath, [server1, server2] ]
+                [ clientHost, clientPath, [replServer1, replServer2] ]
               </call>
 
               <iterate var="server"
@@ -1741,7 +1748,7 @@
                 
               <!-- Reconnect Replication Servers -->
               <call function="'reconnectReplicationServers'">
-                [ clientHost, clientPath, [server1, server2] ]
+                [ clientHost, clientPath, [replServer1, replServer2] ]
               </call>
 
               <!-- Check conflict is resolved -->
@@ -1854,7 +1861,7 @@
 
               <!-- Disconnect Replication Servers -->
               <call function="'disconnectReplicationServers'">
-                [ clientHost, clientPath, [server1, server2] ]
+                [ clientHost, clientPath, [replServer1, replServer2] ]
               </call>
 
               <iterate var="server"
@@ -1913,7 +1920,7 @@
                 
               <!-- Reconnect Replication Servers -->
               <call function="'reconnectReplicationServers'">
-                [ clientHost, clientPath, [server1, server2] ]
+                [ clientHost, clientPath, [replServer1, replServer2] ]
               </call>
 
               <!-- Check conflict is resolved -->
@@ -2026,7 +2033,7 @@
 
               <!-- Disconnect Replication Servers -->
               <call function="'disconnectReplicationServers'">
-                [ clientHost, clientPath, [server1, server2] ]
+                [ clientHost, clientPath, [replServer1, replServer2] ]
               </call>
 
               <iterate var="server"
@@ -2085,7 +2092,7 @@
                 
               <!-- Reconnect Replication Servers -->
               <call function="'reconnectReplicationServers'">
-                [ clientHost, clientPath, [server1, server2] ]
+                [ clientHost, clientPath, [replServer1, replServer2] ]
               </call>
 
               <!-- Check conflict is resolved -->
@@ -2202,7 +2209,7 @@
 
               <!-- Disconnect Replication Servers -->
               <call function="'disconnectReplicationServers'">
-                [ clientHost, clientPath, [server1, server2] ]
+                [ clientHost, clientPath, [replServer1, replServer2] ]
               </call>
 
               <iterate var="server"
@@ -2261,7 +2268,7 @@
                 
               <!-- Reconnect Replication Servers -->
               <call function="'reconnectReplicationServers'">
-                [ clientHost, clientPath, [server1, server2] ]
+                [ clientHost, clientPath, [replServer1, replServer2] ]
               </call>
 
               <!-- Check conflict is resolved -->
@@ -2377,7 +2384,7 @@
 
               <!-- Disconnect Replication Servers -->
               <call function="'disconnectReplicationServers'">
-                [ clientHost, clientPath, [server1, server2] ]
+                [ clientHost, clientPath, [replServer1, replServer2] ]
               </call>
 
               <iterate var="server"
@@ -2436,7 +2443,7 @@
                 
               <!-- Reconnect Replication Servers -->
               <call function="'reconnectReplicationServers'">
-                [ clientHost, clientPath, [server1, server2] ]
+                [ clientHost, clientPath, [replServer1, replServer2] ]
               </call>
 
               <!-- Check conflict is resolved -->
@@ -2541,7 +2548,7 @@
 
               <!-- Disconnect Replication Servers -->
               <call function="'disconnectReplicationServers'">
-                [ clientHost, clientPath, [server1, server2] ]
+                [ clientHost, clientPath, [replServer1, replServer2] ]
               </call>
 
               <!-- Add child entry on server2 -->
@@ -2632,7 +2639,7 @@
                 
               <!-- Reconnect Replication Servers -->
               <call function="'reconnectReplicationServers'">
-                [ clientHost, clientPath, [server1, server2] ]
+                [ clientHost, clientPath, [replServer1, replServer2] ]
               </call>
 
               <!-- Check conflict is resolved -->
@@ -2809,7 +2816,7 @@
 
               <!-- Disconnect Replication Servers -->
               <call function="'disconnectReplicationServers'">
-                [ clientHost, clientPath, [server1, server2] ]
+                [ clientHost, clientPath, [replServer1, replServer2] ]
               </call>
 
               <!-- Delete parent entry on server1-->
@@ -2900,7 +2907,7 @@
                 
               <!-- Reconnect Replication Servers -->
               <call function="'reconnectReplicationServers'">
-                [ clientHost, clientPath, [server1, server2] ]
+                [ clientHost, clientPath, [replServer1, replServer2] ]
               </call>
 
               <!-- Check conflict is resolved -->
@@ -3067,7 +3074,7 @@
 
               <!-- Disconnect Replication Servers -->
               <call function="'disconnectReplicationServers'">
-                [ clientHost, clientPath, [server1, server2] ]
+                [ clientHost, clientPath, [replServer1, replServer2] ]
               </call>
 
               <iterate var="server"
@@ -3153,7 +3160,7 @@
                 
               <!-- Reconnect Replication Servers -->
               <call function="'reconnectReplicationServers'">
-                [ clientHost, clientPath, [server1, server2] ]
+                [ clientHost, clientPath, [replServer1, replServer2] ]
               </call>
 
               <!-- Check conflict is resolved -->
@@ -3316,7 +3323,7 @@
 
               <!-- Disconnect Replication Servers -->
               <call function="'disconnectReplicationServers'">
-                [ clientHost, clientPath, [server1, server2] ]
+                [ clientHost, clientPath, [replServer1, replServer2] ]
               </call>
 
               <iterate var="server"
@@ -3402,7 +3409,7 @@
                 
               <!-- Reconnect Replication Servers -->
               <call function="'reconnectReplicationServers'">
-                [ clientHost, clientPath, [server1, server2] ]
+                [ clientHost, clientPath, [replServer1, replServer2] ]
               </call>
 
               <!-- Delete entry on server1-->
diff --git a/opends/tests/staf-tests/functional-tests/testcases/replication/encryption/encryption.xml b/opends/tests/staf-tests/functional-tests/testcases/replication/encryption/encryption.xml
index 36fda48..fe1f84c 100644
--- a/opends/tests/staf-tests/functional-tests/testcases/replication/encryption/encryption.xml
+++ b/opends/tests/staf-tests/functional-tests/testcases/replication/encryption/encryption.xml
@@ -119,7 +119,7 @@
                     listAttr.append('givenname:Izen-%s' % i)
                     listAttr.append('sn:Abizen-%s' % i)
                     listAttr.append('cn:Izen-%s Abizen-%s' % (i, i))
-                    listAttr.append('l: ICNC')
+                    listAttr.append('l:ICNC')
                   </script>
           
                   <call function="'addAnEntry'">
diff --git a/opends/tests/staf-tests/functional-tests/testcases/replication/failover/failover.xml b/opends/tests/staf-tests/functional-tests/testcases/replication/failover/failover.xml
index ad45beb..229efdb 100644
--- a/opends/tests/staf-tests/functional-tests/testcases/replication/failover/failover.xml
+++ b/opends/tests/staf-tests/functional-tests/testcases/replication/failover/failover.xml
@@ -160,6 +160,13 @@
                     nextServer = _topologyServerList[(i + 1) % nbOfServers]
                     nextServerPath = '%s/%s' % (nextServer.getDir(), OPENDSNAME)
                     userDn = 'uid=iabizen-%s, ou=People, %s' % (i, synchroSuffix)
+                    
+                    if globalSplitServers:
+                      replServer = _topologyReplServerList[i]
+                    else:
+                      replServer = server
+
+                    replServerPath = '%s/%s' % (replServer.getDir(), OPENDSNAME)
                   </script>
                     
                   <!-- Stop server (simulate failover?) -->
@@ -172,6 +179,17 @@
                       'dsBindPwd'   :  server.getRootPwd()
                     }
                   </call>
+                  <if expr="globalSplitServers">
+                    <call function="'StopDsWithScript'">
+                      { 'location'    :  replServer.getHostname(),
+                        'dsPath'      :  replServerPath,
+                        'dsHost'      :  replServer.getHostname(),
+                        'dsAdminPort' :  replServer.getAdminPort(),
+                        'dsBindDN'    :  replServer.getRootDn(),
+                        'dsBindPwd'   :  replServer.getRootPwd()
+                      }
+                    </call>
+                  </if>
                     
                   <!-- Add entry to one of the other servers -->
                   <script>
@@ -186,13 +204,13 @@
                   </script>
           
                   <call function="'addAnEntry'">
-                    { 'location'  :  nextServer.getHostname(),
-                      'dsPath'  :  nextServerPath,
-                      'dsInstanceHost'  :  nextServer.getHostname(),
-                      'dsInstancePort'  :  nextServer.getPort(),
-                      'dsInstanceDn'  :  nextServer.getRootDn(),
-                      'dsInstancePswd'  :  nextServer.getRootPwd(),
-                      'DNToAdd'  :  userDn,
+                    { 'location'       :  nextServer.getHostname(),
+                      'dsPath'         :  nextServerPath,
+                      'dsInstanceHost' :  nextServer.getHostname(),
+                      'dsInstancePort' :  nextServer.getPort(),
+                      'dsInstanceDn'   :  nextServer.getRootDn(),
+                      'dsInstancePswd' :  nextServer.getRootPwd(),
+                      'DNToAdd'        :  userDn,
                       'listAttributes' : listAttr,
                       'expectedRC'     :  0
                     }
@@ -203,7 +221,14 @@
                     { 'location'  :  server.getHostname(),
                       'dsPath'    :  serverPath
                     }
-                  </call>                    
+                  </call>
+                  <if expr="globalSplitServers">
+                    <call function="'StartDsWithScript'">
+                      { 'location'    :  replServer.getHostname(),
+                        'dsPath'      :  replServerPath
+                      }
+                    </call>
+                  </if>
                 </sequence>                  
               </iterate>
                                         
@@ -236,10 +261,15 @@
                  'Replication: Failover: All but one servers down (stopped). Check replication when all but one servers are off-line'
               </message>
 
-              <!-- Start the "consumer" servers -->
+              <!-- Stop the "consumer" servers -->
               <call function="'stopServers'">
                 [consumerList]
               </call>
+              <if expr="globalSplitServers">
+                <call function="'stopServers'">
+                  [_topologyReplServerList[1:]]
+                </call>
+              </if>
  
                     
               <!-- Add entry to master servers -->
@@ -257,14 +287,14 @@
               </script>
           
               <call function="'addAnEntry'">
-                { 'location'  :  masterHost,
-                  'dsPath'  :  masterPath,
-                  'dsInstanceHost'  :  masterHost,
-                  'dsInstancePort'  :  master.getPort(),
-                  'dsInstanceDn'  :  master.getRootDn(),
-                  'dsInstancePswd'  :  master.getRootPwd(),
-                  'DNToAdd'  :  userDn,
-                  'listAttributes' : listAttr,
+                { 'location'       :  masterHost,
+                  'dsPath'         :  masterPath,
+                  'dsInstanceHost' :  masterHost,
+                  'dsInstancePort' :  master.getPort(),
+                  'dsInstanceDn'   :  master.getRootDn(),
+                  'dsInstancePswd' :  master.getRootPwd(),
+                  'DNToAdd'        :  userDn,
+                  'listAttributes' :  listAttr,
                   'expectedRC'     :  0
                 }
               </call>
@@ -273,6 +303,11 @@
               <call function="'startServers'">
                 [consumerList]
               </call>
+              <if expr="globalSplitServers">
+                <call function="'startServers'">
+                  [_topologyReplServerList[1:]]
+                </call>
+              </if>
                                   
                 
               <!-- Verify the synchronization of the trees among the servers in the topology -->          
@@ -314,6 +349,13 @@
                     nextServer = _topologyServerList[(i + 1) % nbOfServers]
                     nextServerPath = '%s/%s' % (nextServer.getDir(), OPENDSNAME)
                     userDn = 'uid=ideiturak-%s, ou=People, %s' % (i, synchroSuffix)
+                    
+                    if globalSplitServers:
+                      replServer = _topologyReplServerList[i]
+                    else:
+                      replServer = server
+
+                    replServerPath = '%s/%s' % (replServer.getDir(), OPENDSNAME)
                   </script>
                     
                   <!-- Kill server (simulate failover?) -->
@@ -322,6 +364,13 @@
                       'dsPath'    :  serverPath
                     }
                   </call>
+                  <if expr="globalSplitServers">
+                    <call function="'killDs'">
+                      { 'location'  :  replServer.getHostname(),
+                        'dsPath'    :  replServerPath
+                      }
+                    </call>
+                  </if>
                     
                   <!-- Add entry to one of the other servers -->
                   <script>
@@ -336,13 +385,13 @@
                   </script>
           
                   <call function="'addAnEntry'">
-                    { 'location'  :  nextServer.getHostname(),
-                      'dsPath'  :  nextServerPath,
-                      'dsInstanceHost'  :  nextServer.getHostname(),
-                      'dsInstancePort'  :  nextServer.getPort(),
-                      'dsInstanceDn'  :  nextServer.getRootDn(),
-                      'dsInstancePswd'  :  nextServer.getRootPwd(),
-                      'DNToAdd'  :  userDn,
+                    { 'location'       :  nextServer.getHostname(),
+                      'dsPath'         :  nextServerPath,
+                      'dsInstanceHost' :  nextServer.getHostname(),
+                      'dsInstancePort' :  nextServer.getPort(),
+                      'dsInstanceDn'   :  nextServer.getRootDn(),
+                      'dsInstancePswd' :  nextServer.getRootPwd(),
+                      'DNToAdd'        :  userDn,
                       'listAttributes' : listAttr,
                       'expectedRC'     :  0
                     }
@@ -353,7 +402,15 @@
                     { 'location'  :  server.getHostname(),
                       'dsPath'    :  serverPath
                     }
-                  </call>                    
+                  </call>
+                  <if expr="globalSplitServers">
+                    <call function="'StartDsWithScript'">
+                      { 'location'    :  replServer.getHostname(),
+                        'dsPath'      :  replServerPath
+                      }
+                    </call>
+                  </if>
+                  
                 </sequence>                  
               </iterate>
                                         
@@ -386,10 +443,17 @@
                  'Replication: Failover: All but one servers down (killed). Check replication when all but one servers fail'
               </message>
                  
-              <paralleliterate var="server" in="consumerList">
+              <paralleliterate var="server" in="consumerList" indexvar="i">
                 <sequence>
                   <script>
                     serverPath = '%s/%s' % (server.getDir(), OPENDSNAME)
+                    
+                    if globalSplitServers:
+                      replServer = _topologyReplServerList[i+1]
+                    else:
+                      replServer = server
+
+                    replServerPath = '%s/%s' % (replServer.getDir(), OPENDSNAME)
                   </script>
                     
                   <!-- Kill server (simulate failover?) -->
@@ -397,7 +461,14 @@
                     { 'location'  :  server.getHostname(),
                       'dsPath'    :  serverPath
                     }
-                  </call>                    
+                  </call>
+                  <if expr="globalSplitServers">
+                    <call function="'killDs'">
+                      { 'location'  :  replServer.getHostname(),
+                        'dsPath'    :  replServerPath
+                      }
+                    </call>
+                  </if>
                 </sequence>
               </paralleliterate>
  
@@ -417,13 +488,13 @@
               </script>
           
               <call function="'addAnEntry'">
-                { 'location'  :  masterHost,
-                  'dsPath'  :  masterPath,
-                  'dsInstanceHost'  :  masterHost,
-                  'dsInstancePort'  :  master.getPort(),
-                  'dsInstanceDn'  :  master.getRootDn(),
-                  'dsInstancePswd'  :  master.getRootPwd(),
-                  'DNToAdd'  :  userDn,
+                { 'location'       :  masterHost,
+                  'dsPath'         :  masterPath,
+                  'dsInstanceHost' :  masterHost,
+                  'dsInstancePort' :  master.getPort(),
+                  'dsInstanceDn'   :  master.getRootDn(),
+                  'dsInstancePswd' :  master.getRootPwd(),
+                  'DNToAdd'        :  userDn,
                   'listAttributes' : listAttr,
                   'expectedRC'     :  0
                 }
@@ -433,6 +504,11 @@
               <call function="'startServers'">
                 [consumerList]
               </call>
+              <if expr="globalSplitServers">
+                <call function="'startServers'">
+                  [_topologyReplServerList[1:]]
+                </call>
+              </if>
                                         
                 
               <!-- Verify the synchronization of the trees among the servers in the topology -->          
diff --git a/opends/tests/staf-tests/functional-tests/testcases/replication/replication.xml b/opends/tests/staf-tests/functional-tests/testcases/replication/replication.xml
index 0fe37cc..b64bac3 100644
--- a/opends/tests/staf-tests/functional-tests/testcases/replication/replication.xml
+++ b/opends/tests/staf-tests/functional-tests/testcases/replication/replication.xml
@@ -60,6 +60,11 @@
             testList.append('conflict')
             
             globalAssuredReplication = None
+            
+            if (REPLICATION_SPLIT_SERVERS == 'true'):
+              globalSplitServers = True
+            else:
+              globalSplitServers = None
           </script>
           
           <iterate var="_test" in="testList" >
diff --git a/opends/tests/staf-tests/functional-tests/testcases/replication/replication_cleanup.xml b/opends/tests/staf-tests/functional-tests/testcases/replication/replication_cleanup.xml
index 7471a20..9c66cb6 100644
--- a/opends/tests/staf-tests/functional-tests/testcases/replication/replication_cleanup.xml
+++ b/opends/tests/staf-tests/functional-tests/testcases/replication/replication_cleanup.xml
@@ -48,12 +48,12 @@
                   
           <!-- Stop the servers in the topology -->      
           <call function="'stopServers'">
-            [_topologyServerList]
+            [_splitServerList]
           </call>
           
           <!-- Copy the server logs to the controller machine -->
           <if expr="suiteSuffix != None">
-            <paralleliterate var="server" in="_topologyServerList" indexvar="i">
+            <paralleliterate var="server" in="_splitServerList" indexvar="i">
               <sequence>
                 <script>
                   suffix     = suiteSuffix + '_%s' % (i + 1)
diff --git a/opends/tests/staf-tests/functional-tests/testcases/replication/replication_setup.xml b/opends/tests/staf-tests/functional-tests/testcases/replication/replication_setup.xml
index e10118b..b3d93e8 100644
--- a/opends/tests/staf-tests/functional-tests/testcases/replication/replication_setup.xml
+++ b/opends/tests/staf-tests/functional-tests/testcases/replication/replication_setup.xml
@@ -89,8 +89,9 @@
           </message>
                  
           <call function="'createTopology'">
-            { 'topologyDescFile' : topologyFile,
-              'sharedDataFolder' : 'replication'
+            { 'topologyDescFile'        : topologyFile,
+              'sharedDataFolder'        : 'replication',
+              'splitReplicationServers' : globalSplitServers
             }
           </call>  
       
@@ -156,11 +157,11 @@
                           
           <!-- Start the servers in the topology -->        
           <call function="'startServers'">
-            [_topologyServerList]
+            [_splitServerList]
           </call>            
 
               
-          <iterate var="server" in="consumerList">
+          <iterate var="server" in="_splitServerList[1:]">
             <sequence>
               <!-- Configure replication if required so by the server
                !  (i.e. server is a changelog server and/or has synchronized 
@@ -173,8 +174,23 @@
                   </message>
                     
                   <script>
-                    replicationServer = server.getChangelogServer()
-                    replicatedSuffixList = server.getSynchronizedSuffixList()
+                    if master.isOnlyLdapServer():
+                      masterReplPort = None
+                    else:
+                      masterReplPort = masterReplicationServer.getPort()
+                    
+                    if server.isOnlyLdapServer():
+                      serverReplPort = None
+                    else:
+                      replicationServer = server.getChangelogServer()
+                      serverReplPort = replicationServer.getPort() 
+                      
+                    if server.isOnlyReplServer():
+                      suffixServer = master
+                    else:
+                      suffixServer = server  
+
+                    replicatedSuffixList = suffixServer.getSynchronizedSuffixList()
                     replicatedDnList = []
                     for suffix in replicatedSuffixList:
                       replicatedDnList.append(suffix.getSuffixDn())
@@ -184,26 +200,29 @@
                     'Enable replication for server:\nHost: %s\nLdap port: %s\n\
                     Replication port: %s\nReplicated DN list: %s' \
                       % (server.getHostname(), server.getPort(), 
-                         replicationServer.getPort(), replicatedDnList)
+                         serverReplPort, replicatedDnList)
                   </message>
                                         
                   <call function="'enableReplication'">
                     { 'location'             : clientHost,
                       'dsPath'               : clientPath,
-                      'dsInstanceHost'       : server.getHostname(),
-                      'dsInstanceAdminPort'  : server.getAdminPort(),
-                      'dsInstanceDn'         : server.getRootDn(),
-                      'dsInstancePswd'       : server.getRootPwd(),
-                      'dsReplicationPort'    : replicationServer.getPort(),
-                      'dsSecureReplication'  : secureReplication,
                       'refInstanceHost'      : masterHost,
                       'refInstanceAdminPort' : master.getAdminPort(),
                       'refInstanceDn'        : master.getRootDn(),
                       'refInstancePswd'      : master.getRootPwd(),
-                      'refReplicationPort'  : masterReplicationServer.getPort(),
+                      'refReplicationPort'   : masterReplPort,
                       'refSecureReplication' : secureReplication,
-                      'replicationDnList'    : replicatedDnList,
-                      'useSecondServerAsSchemaSource'  :  True
+                      'refOnlyLdapServer'    : master.isOnlyLdapServer(),
+                      'refOnlyReplServer'    : master.isOnlyReplServer(),
+                      'dsInstanceHost'       : server.getHostname(),
+                      'dsInstanceAdminPort'  : server.getAdminPort(),
+                      'dsInstanceDn'         : server.getRootDn(),
+                      'dsInstancePswd'       : server.getRootPwd(),
+                      'dsReplicationPort'    : serverReplPort,
+                      'dsSecureReplication'  : secureReplication,
+                      'dsOnlyLdapServer'     : server.isOnlyLdapServer(),
+                      'dsOnlyReplServer'     : server.isOnlyReplServer(),
+                      'replicationDnList'    : replicatedDnList
                     }                      
                   </call>
                 </sequence>
@@ -218,7 +237,7 @@
              !   Server.
              !   This is used by the Conflict testsuite, in order to be able
              !   to simulate conflict scenarios -->
-            <paralleliterate var="server" in="_topologyServerList">
+            <paralleliterate var="server" in="_topologyServerList" indexvar="i">
               <sequence>
                 <script>
                   ldapServer = '%s:%s' % (server.getHostname(), 
@@ -252,9 +271,16 @@
                 </if>
 
                 <script>
-                  replicationServer = server.getChangelogServer()
-                  replServer = '%s:%s' % (server.getHostname(),
-                                          replicationServer.getPort())
+                  if globalSplitServers:
+                    splitServer = _topologyReplServerList[i]
+                    replicationServer = splitServer.getChangelogServer()
+                    replServer = '%s:%s' % (splitServer.getHostname(),
+                                            replicationServer.getPort())
+                  else:
+                    replicationServer = server.getChangelogServer()
+                    replServer = '%s:%s' % (server.getHostname(),
+                                            replicationServer.getPort())
+                  
                   options = '--domain-name "%s" --set replication-server:%s' \
                             % (domainMap[ldapServer], replServer)
                 </script>
diff --git a/opends/tests/staf-tests/functional-tests/testcases/replication/resynchronization/resynchronization.xml b/opends/tests/staf-tests/functional-tests/testcases/replication/resynchronization/resynchronization.xml
index 33d2103..9ae4726 100644
--- a/opends/tests/staf-tests/functional-tests/testcases/replication/resynchronization/resynchronization.xml
+++ b/opends/tests/staf-tests/functional-tests/testcases/replication/resynchronization/resynchronization.xml
@@ -61,7 +61,6 @@
           
           <script>
             server3            = _topologyServerList[2]
-            replicationServer3 = server3.getChangelogServer()
             
             # Remove 3rd server from replicated servers list until replication
             # is enabled on the 3rd one
@@ -363,16 +362,24 @@
                 Initialise newly added server using on-line backup/restore'
               </message>
 
-              <paralleliterate var="server" in="_topologyServerList">
+              <paralleliterate var="server" 
+                               in="_topologyServerList" 
+                               indexvar="i">
                 <sequence>
+                  <script>
+                    if globalSplitServers:
+                      replServer = _topologyReplServerList[i]
+                    else:
+                      replServer = server
+                  </script>
                   <!-- Search for entry add -->
                   <call function="'ldapSearchWithScript'">
                     { 'location'         : clientHost,
                       'dsPath'           : clientPath,
-                      'dsInstanceHost'   : server.getHostname(),
-                      'dsInstancePort'   : server.getPort(),
-                      'dsInstanceDn'     : server.getRootDn(),
-                      'dsInstancePswd'   : server.getRootPwd(),
+                      'dsInstanceHost'   : replServer.getHostname(),
+                      'dsInstancePort'   : replServer.getPort(),
+                      'dsInstanceDn'     : replServer.getRootDn(),
+                      'dsInstancePswd'   : replServer.getRootPwd(),
                       'dsBaseDN'         : 'dc=replicationChanges',
                       'dsFilter'         : 'uid=*'
                     }                
@@ -384,7 +391,7 @@
                   </script>
                   <message>
                     '==> REPLICATION CHANGES %s:%s : \n%s\n' % \
-                    (server.getHostname(), server.getPort(), searchResult)
+                    (replServer.getHostname(), replServer.getPort(), searchResult)
                   </message>
                 </sequence>
               </paralleliterate>
@@ -406,16 +413,24 @@
                 }
               </call>
               
-              <paralleliterate var="server" in="_topologyServerList">
+              <paralleliterate var="server" 
+                               in="_topologyServerList" 
+                               indexvar="i">
                 <sequence>
+                  <script>
+                    if globalSplitServers:
+                      replServer = _topologyReplServerList[i]
+                    else:
+                      replServer = server
+                  </script>
                   <!-- Search for entry add -->
                   <call function="'ldapSearchWithScript'">
                     { 'location'         : clientHost,
                       'dsPath'           : clientPath,
-                      'dsInstanceHost'   : server.getHostname(),
-                      'dsInstancePort'   : server.getPort(),
-                      'dsInstanceDn'     : server.getRootDn(),
-                      'dsInstancePswd'   : server.getRootPwd(),
+                      'dsInstanceHost'   : replServer.getHostname(),
+                      'dsInstancePort'   : replServer.getPort(),
+                      'dsInstanceDn'     : replServer.getRootDn(),
+                      'dsInstancePswd'   : replServer.getRootPwd(),
                       'dsBaseDN'         : 'dc=replicationChanges',
                       'dsFilter'         : 'uid=*'
                     }                
@@ -427,7 +442,7 @@
                   </script>
                   <message>
                     '==> REPLICATION CHANGES %s:%s : \n%s\n' % \
-                    (server.getHostname(), server.getPort(), searchResult)
+                    (replServer.getHostname(), replServer.getPort(), searchResult)
                   </message>
                 </sequence>
               </paralleliterate>
@@ -484,16 +499,24 @@
                 }
               </call>
 
-              <paralleliterate var="server" in="_topologyServerList">
+              <paralleliterate var="server" 
+                               in="_topologyServerList" 
+                               indexvar="i">
                 <sequence>
+                  <script>
+                    if globalSplitServers:
+                      replServer = _topologyReplServerList[i]
+                    else:
+                      replServer = server
+                  </script>
                   <!-- Search for entry add -->
                   <call function="'ldapSearchWithScript'">
                     { 'location'         : clientHost,
                       'dsPath'           : clientPath,
-                      'dsInstanceHost'   : server.getHostname(),
-                      'dsInstancePort'   : server.getPort(),
-                      'dsInstanceDn'     : server.getRootDn(),
-                      'dsInstancePswd'   : server.getRootPwd(),
+                      'dsInstanceHost'   : replServer.getHostname(),
+                      'dsInstancePort'   : replServer.getPort(),
+                      'dsInstanceDn'     : replServer.getRootDn(),
+                      'dsInstancePswd'   : replServer.getRootPwd(),
                       'dsBaseDN'         : 'dc=replicationChanges',
                       'dsFilter'         : 'uid=*'
                     }                
@@ -505,7 +528,7 @@
                   </script>
                   <message>
                     '==> REPLICATION CHANGES %s:%s : \n%s\n' % \
-                    (server.getHostname(), server.getPort(), searchResult)
+                    (replServer.getHostname(), replServer.getPort(), searchResult)
                   </message>
                 </sequence>
               </paralleliterate>
@@ -524,16 +547,24 @@
                 }
               </call>
               
-              <paralleliterate var="server" in="_topologyServerList">
+              <paralleliterate var="server" 
+                               in="_topologyServerList" 
+                               indexvar="i">
                 <sequence>
+                  <script>
+                    if globalSplitServers:
+                      replServer = _topologyReplServerList[i]
+                    else:
+                      replServer = server
+                  </script>
                   <!-- Search for entry add -->
                   <call function="'ldapSearchWithScript'">
                     { 'location'         : clientHost,
                       'dsPath'           : clientPath,
-                      'dsInstanceHost'   : server.getHostname(),
-                      'dsInstancePort'   : server.getPort(),
-                      'dsInstanceDn'     : server.getRootDn(),
-                      'dsInstancePswd'   : server.getRootPwd(),
+                      'dsInstanceHost'   : replServer.getHostname(),
+                      'dsInstancePort'   : replServer.getPort(),
+                      'dsInstanceDn'     : replServer.getRootDn(),
+                      'dsInstancePswd'   : replServer.getRootPwd(),
                       'dsBaseDN'         : 'dc=replicationChanges',
                       'dsFilter'         : 'uid=*'
                     }                
@@ -545,7 +576,7 @@
                   </script>
                   <message>
                     '==> REPLICATION CHANGES %s:%s : \n%s\n' % \
-                    (server.getHostname(), server.getPort(), searchResult)
+                    (replServer.getHostname(), replServer.getPort(), searchResult)
                   </message>
                 </sequence>
               </paralleliterate>
@@ -567,16 +598,24 @@
                 }
               </call>
               
-              <paralleliterate var="server" in="_topologyServerList">
+              <paralleliterate var="server" 
+                               in="_topologyServerList" 
+                               indexvar="i">
                 <sequence>
+                  <script>
+                    if globalSplitServers:
+                      replServer = _topologyReplServerList[i]
+                    else:
+                      replServer = server
+                  </script>
                   <!-- Search for entry add -->
                   <call function="'ldapSearchWithScript'">
                     { 'location'         : clientHost,
                       'dsPath'           : clientPath,
-                      'dsInstanceHost'   : server.getHostname(),
-                      'dsInstancePort'   : server.getPort(),
-                      'dsInstanceDn'     : server.getRootDn(),
-                      'dsInstancePswd'   : server.getRootPwd(),
+                      'dsInstanceHost'   : replServer.getHostname(),
+                      'dsInstancePort'   : replServer.getPort(),
+                      'dsInstanceDn'     : replServer.getRootDn(),
+                      'dsInstancePswd'   : replServer.getRootPwd(),
                       'dsBaseDN'         : 'dc=replicationChanges',
                       'dsFilter'         : 'uid=*'
                     }                
@@ -588,35 +627,54 @@
                   </script>
                   <message>
                     '==> REPLICATION CHANGES %s:%s : \n%s\n' % \
-                    (server.getHostname(), server.getPort(), searchResult)
+                    (replServer.getHostname(), replServer.getPort(), searchResult)
                   </message>
                 </sequence>
               </paralleliterate>
               
               <!-- Add new server to topology -->
+              <script>
+                if master.isOnlyLdapServer():
+                  masterReplPort = None
+                else:
+                  masterReplPort = masterReplicationServer.getPort()
+                
+                if server3.isOnlyLdapServer():
+                  server3ReplPort = None
+                else:
+                  replicationServer3 = server3.getChangelogServer()
+                  server3ReplPort = replicationServer3.getPort() 
+              </script>
+
               <message>
                 '+++++ resynchronization add server: Enable replication for \
                 server:\nHost: %s\nLdap port: %s\nReplication port: %s\n\
                 Replicated DN list: %s' \
                 % (server3.getHostname(), server3.getPort(), 
-                   replicationServer3.getPort(), [synchroSuffix])
+                   server3ReplPort, [synchroSuffix])
               </message>
+          
               <call function="'enableReplication'">
                 { 'location'             : clientHost,
                   'dsPath'               : clientPath,
-                  'dsInstanceHost'       : server3.getHostname(),
-                  'dsInstanceAdminPort'  : server3.getAdminPort(),
-                  'dsInstanceDn'         : server3.getRootDn(),
-                  'dsInstancePswd'       : server3.getRootPwd(),
-                  'dsReplicationPort'    : replicationServer3.getPort(),
                   'refInstanceHost'      : masterHost,
                   'refInstanceAdminPort' : master.getAdminPort(),
                   'refInstanceDn'        : master.getRootDn(),
                   'refInstancePswd'      : master.getRootPwd(),
-                  'refReplicationPort'   : masterReplicationServer.getPort(),
+                  'refReplicationPort'   : masterReplPort,
+                  'refOnlyLdapServer'    : master.isOnlyLdapServer(),
+                  'refOnlyReplServer'    : master.isOnlyReplServer(),
+                  'dsInstanceHost'       : server3.getHostname(),
+                  'dsInstanceAdminPort'  : server3.getAdminPort(),
+                  'dsInstanceDn'         : server3.getRootDn(),
+                  'dsInstancePswd'       : server3.getRootPwd(),
+                  'dsReplicationPort'    : server3ReplPort,
+                  'dsOnlyLdapServer'     : server3.isOnlyLdapServer(),
+                  'dsOnlyReplServer'     : server3.isOnlyReplServer(),
                   'replicationDnList'    : [synchroSuffix]
                 }                      
-              </call>              
+              </call>
+  
 
               <script>
                 # Add 3rd server to replicated servers list now that replication
@@ -625,16 +683,24 @@
                 consumerList = consumerList + [server3]
               </script>                            
               
-              <paralleliterate var="server" in="_topologyServerList">
+              <paralleliterate var="server" 
+                               in="_topologyServerList" 
+                               indexvar="i">
                 <sequence>
+                  <script>
+                    if globalSplitServers:
+                      replServer = _topologyReplServerList[i]
+                    else:
+                      replServer = server
+                  </script>
                   <!-- Search for entry add -->
                   <call function="'ldapSearchWithScript'">
                     { 'location'         : clientHost,
                       'dsPath'           : clientPath,
-                      'dsInstanceHost'   : server.getHostname(),
-                      'dsInstancePort'   : server.getPort(),
-                      'dsInstanceDn'     : server.getRootDn(),
-                      'dsInstancePswd'   : server.getRootPwd(),
+                      'dsInstanceHost'   : replServer.getHostname(),
+                      'dsInstancePort'   : replServer.getPort(),
+                      'dsInstanceDn'     : replServer.getRootDn(),
+                      'dsInstancePswd'   : replServer.getRootPwd(),
                       'dsBaseDN'         : 'dc=replicationChanges',
                       'dsFilter'         : 'uid=*'
                     }                
@@ -646,7 +712,7 @@
                   </script>
                   <message>
                     '==> REPLICATION CHANGES %s:%s : \n%s\n' % \
-                    (server.getHostname(), server.getPort(), searchResult)
+                    (replServer.getHostname(), replServer.getPort(), searchResult)
                   </message>
                 </sequence>
               </paralleliterate>
@@ -680,16 +746,24 @@
                 }
               </call>
               
-              <paralleliterate var="server" in="_topologyServerList">
+              <paralleliterate var="server" 
+                               in="_topologyServerList" 
+                               indexvar="i">
                 <sequence>
+                  <script>
+                    if globalSplitServers:
+                      replServer = _topologyReplServerList[i]
+                    else:
+                      replServer = server
+                  </script>
                   <!-- Search for entry add -->
                   <call function="'ldapSearchWithScript'">
                     { 'location'         : clientHost,
                       'dsPath'           : clientPath,
-                      'dsInstanceHost'   : server.getHostname(),
-                      'dsInstancePort'   : server.getPort(),
-                      'dsInstanceDn'     : server.getRootDn(),
-                      'dsInstancePswd'   : server.getRootPwd(),
+                      'dsInstanceHost'   : replServer.getHostname(),
+                      'dsInstancePort'   : replServer.getPort(),
+                      'dsInstanceDn'     : replServer.getRootDn(),
+                      'dsInstancePswd'   : replServer.getRootPwd(),
                       'dsBaseDN'         : 'dc=replicationChanges',
                       'dsFilter'         : 'uid=*'
                     }                
@@ -701,7 +775,7 @@
                   </script>
                   <message>
                     '==> REPLICATION CHANGES %s:%s : \n%s\n' % \
-                    (server.getHostname(), server.getPort(), searchResult)
+                    (replServer.getHostname(), replServer.getPort(), searchResult)
                   </message>
                 </sequence>
               </paralleliterate>
diff --git a/opends/tests/staf-tests/functional-tests/testcases/replication/totalupdate/totalupdate.xml b/opends/tests/staf-tests/functional-tests/testcases/replication/totalupdate/totalupdate.xml
index a33f114..8a0af36 100644
--- a/opends/tests/staf-tests/functional-tests/testcases/replication/totalupdate/totalupdate.xml
+++ b/opends/tests/staf-tests/functional-tests/testcases/replication/totalupdate/totalupdate.xml
@@ -188,10 +188,10 @@
                 listAttr.append('objectclass:organizationalperson')
                 listAttr.append('objectclass:inetorgperson')
                 listAttr.append('objectclass:person')
-                listAttr.append('givenname: Professor Moriarty')
-                listAttr.append('sn: Moriarty')
-                listAttr.append('cn: Professor Moriarty')
-                listAttr.append('l: London')
+                listAttr.append('givenname:Professor Moriarty')
+                listAttr.append('sn:Moriarty')
+                listAttr.append('cn:Professor Moriarty')
+                listAttr.append('l:London')
               </script>
       
               <call function="'addAnEntry'">
@@ -315,19 +315,37 @@
                 
               <!-- Re-enable schema replication on "master" server, and 
                 at the same time initialise the schema across the topology -->
+              <script>
+                if master.isOnlyLdapServer():
+                  masterReplPort = None
+                else:
+                  masterReplPort = masterReplicationServer.getPort()
+                
+                if consumer.isOnlyLdapServer():
+                  consumerReplPort = None
+                else:
+                  replicationServer = consumer.getChangelogServer()
+                  consumerReplPort = replicationServer.getPort() 
+              </script>          
               <call function="'enableReplication'">
                 { 'location'             : clientHost,
                   'dsPath'               : clientPath,
-                  'dsInstanceHost'       : masterHost,
-                  'dsInstanceAdminPort'  : master.getAdminPort(),
-                  'dsInstanceDn'         : master.getRootDn(),
-                  'dsInstancePswd'       : master.getRootPwd(),
-                  'refInstanceHost'      : consumer.getHostname(),
-                  'refInstanceAdminPort' : consumer.getAdminPort(),
-                  'refInstanceDn'        : consumer.getRootDn(),
-                  'refInstancePswd'      : consumer.getRootPwd(),
+                  'refInstanceHost'      : masterHost,
+                  'refInstanceAdminPort' : master.getAdminPort(),
+                  'refInstanceDn'        : master.getRootDn(),
+                  'refInstancePswd'      : master.getRootPwd(),
+                  'refReplicationPort'   : masterReplPort,
+                  'refOnlyLdapServer'    : master.isOnlyLdapServer(),
+                  'refOnlyReplServer'    : master.isOnlyReplServer(),
+                  'dsInstanceHost'       : consumer.getHostname(),
+                  'dsInstanceAdminPort'  : consumer.getAdminPort(),
+                  'dsInstanceDn'         : consumer.getRootDn(),
+                  'dsInstancePswd'       : consumer.getRootPwd(),
+                  'dsReplicationPort'    : consumerReplPort,
+                  'dsOnlyLdapServer'     : consumer.isOnlyLdapServer(),
+                  'dsOnlyReplServer'     : consumer.isOnlyReplServer(),
                   'replicationDnList'    : ['cn=schema']
-                }
+                }                      
               </call>
                 
               <!-- Add entry to "consumer" server -->    
@@ -493,10 +511,10 @@
                 listAttr.append('objectclass:organizationalperson')
                 listAttr.append('objectclass:inetorgperson')
                 listAttr.append('objectclass:person')
-                listAttr.append('givenname: Professor Moriarty')
-                listAttr.append('sn: Moriarty')
-                listAttr.append('cn: Professor Moriarty')
-                listAttr.append('l: London')
+                listAttr.append('givenname:Professor Moriarty')
+                listAttr.append('sn:Moriarty')
+                listAttr.append('cn:Professor Moriarty')
+                listAttr.append('l:London')
               </script>
       
               <call function="'addAnEntry'">
diff --git a/opends/tests/staf-tests/shared/ant/build.properties b/opends/tests/staf-tests/shared/ant/build.properties
index ff7c156..612737c 100644
--- a/opends/tests/staf-tests/shared/ant/build.properties
+++ b/opends/tests/staf-tests/shared/ant/build.properties
@@ -126,3 +126,4 @@
 logs.uri=file://
 tests.os.string=${os.name}
 tests.jvm.string=${java.version}(${sun.arch.data.model} bits)
+replication.split=false
diff --git a/opends/tests/staf-tests/shared/functions/tools.xml b/opends/tests/staf-tests/shared/functions/tools.xml
index 826d226..835f2a5 100755
--- a/opends/tests/staf-tests/shared/functions/tools.xml
+++ b/opends/tests/staf-tests/shared/functions/tools.xml
@@ -475,6 +475,14 @@
             </else>
           </if>
         </sequence>
+        <else>
+          <sequence>
+            <message log="1" level="'Error'">
+              'LdifDiffWithScript: command run FAILED.'
+            </message>
+            <return> -1 </return>
+          </sequence>
+        </else>
       </if>
 
       <if expr="diffRC == 0">
diff --git a/opends/tests/staf-tests/shared/functions/topology.xml b/opends/tests/staf-tests/shared/functions/topology.xml
index 857c187..ffb009f 100755
--- a/opends/tests/staf-tests/shared/functions/topology.xml
+++ b/opends/tests/staf-tests/shared/functions/topology.xml
@@ -56,12 +56,25 @@
         </function-arg-description>
         <function-arg-property name="type" value="string"/>
       </function-arg-def>
+      <function-arg-def name="splitReplicationServers" 
+                        type="optional" 
+                        default="False">
+        <function-arg-description>
+          Specifies whether the replication servers should be split from the
+          ldap servers and be configured on separate instances.
+        </function-arg-description>
+        <function-arg-property name="type" value="boolean"/>
+      </function-arg-def>
     </function-map-args>
     
     <sequence>
       <script>
         if not sharedDataFolder and CurrentTestPath.has_key('group'):
           sharedDataFolder=CurrentTestPath['group']
+        
+        _topologyServerList = []
+        _topologyReplServerList = []
+        _splitServerList = []
       </script>
       
       <call function="'prepareInstanceCreation'">
@@ -100,12 +113,34 @@
               { 'file' : topologyDescFile }
             </call>
             
+            <if expr="splitReplicationServers">
+              <sequence>
+                <message>
+                  'Replication servers will be splitted from ldap servers.'
+                </message>
+                <iterate var="server" in="_topologyServerList" indexvar="i">
+                  <sequence>
+                    <script>
+                      _topologyReplServerList.append(server.splitReplServer())
+                      _splitServerList.append(server)
+                      _splitServerList.append(_topologyReplServerList[i])
+                    </script>
+                  </sequence>
+                </iterate>
+              </sequence>
+              <else>
+                <script>
+                  _splitServerList = _topologyServerList
+                </script>
+              </else>
+            </if>
+            
             <message>
               'Number of server instances required by the deployment: %s' \
-              % len(_topologyServerList)
+              % len(_splitServerList)
             </message>
          
-            <iterate var="server" in="_topologyServerList">
+            <iterate var="server" in="_splitServerList">
               <sequence>
                 <!-- Create the instance-->
                 <call function="'createInstance'">
@@ -1031,8 +1066,26 @@
           Encrypt communications over dsReplicationPort (secure replication)
         </function-arg-description>
         <function-arg-property name="type" value="boolean" />
-      </function-arg-def>                        
-        
+      </function-arg-def>
+      
+      <function-arg-def name="dsOnlyLdapServer"
+                        type="optional"
+                        default="None">
+        <function-arg-description>
+          Server only to contain replicated data (no Repl server/changelog)
+        </function-arg-description>
+        <function-arg-property name="type" value="boolean" />
+      </function-arg-def>
+
+      <function-arg-def name="dsOnlyReplServer"
+                        type="optional"
+                        default="None">
+        <function-arg-description>
+          Server only to contain Repl server/changelog (no replicated data)
+        </function-arg-description>
+        <function-arg-property name="type" value="boolean" />
+      </function-arg-def>
+
       <function-arg-def name="refInstanceHost"
                         type="optional"
                         default="STAF_REMOTE_HOSTNAME">
@@ -1079,7 +1132,26 @@
           Encrypt communications over refReplicationPort (secure replication)
         </function-arg-description>
         <function-arg-property name="type" value="boolean" />
-      </function-arg-def>        
+      </function-arg-def>
+      
+      <function-arg-def name="refOnlyLdapServer"
+                        type="optional"
+                        default="None">
+        <function-arg-description>
+          Server only to contain replicated data (no Repl server/changelog)
+        </function-arg-description>
+        <function-arg-property name="type" value="boolean" />
+      </function-arg-def>
+
+      <function-arg-def name="refOnlyReplServer"
+                        type="optional"
+                        default="None">
+        <function-arg-description>
+          Server only to contain Repl server/changelog (no replicated data)
+        </function-arg-description>
+        <function-arg-property name="type" value="boolean" />
+      </function-arg-def>
+
                         
       <function-arg-def name="replicationDnList" type="required">
         <function-arg-description>
@@ -1089,8 +1161,8 @@
       </function-arg-def>        
         
       <function-arg-def name="adminUID" 
-                                   type="optional"
-                                   default="AdminUID">
+                        type="optional"
+                        default="AdminUID">
         <function-arg-description>
           Global Administrator UID
         </function-arg-description>
@@ -1098,8 +1170,8 @@
       </function-arg-def>
       
       <function-arg-def name="adminPswd" 
-                                   type="optional"
-                                   default="AdminPswd">
+                        type="optional"
+                        default="AdminPswd">
         <function-arg-description>
           Global Administrator password
         </function-arg-description>
@@ -1148,41 +1220,53 @@
         STAFCmdParamsList.append('-Q')
         STAFCmdParamsList.append('-X')
           
-        if dsInstanceHost:
-          STAFCmdParamsList.append('--host1 %s' % dsInstanceHost)
-      
-        if dsInstanceAdminPort:
-          STAFCmdParamsList.append('--port1 %s' % dsInstanceAdminPort)
-      
-        if dsInstanceDn:
-          STAFCmdParamsList.append('--bindDN1 "%s"' % dsInstanceDn)
-      
-        if dsInstancePswd:
-          STAFCmdParamsList.append('--bindPassword1 "%s"' % dsInstancePswd)
-
-        if dsReplicationPort:
-          STAFCmdParamsList.append('--replicationPort1 %s' % dsReplicationPort)                    
-          
-        if dsSecureReplication:
-          STAFCmdParamsList.append('--secureReplication1')          
-
         if refInstanceHost:
-          STAFCmdParamsList.append('--host2 %s' % refInstanceHost)
+          STAFCmdParamsList.append('--host1 %s' % refInstanceHost)
       
         if refInstanceAdminPort:
-          STAFCmdParamsList.append('--port2 %s' % refInstanceAdminPort)
+          STAFCmdParamsList.append('--port1 %s' % refInstanceAdminPort)
       
         if refInstanceDn:
-          STAFCmdParamsList.append('--bindDN2 "%s"' % refInstanceDn)
+          STAFCmdParamsList.append('--bindDN1 "%s"' % refInstanceDn)
       
         if refInstancePswd:
-          STAFCmdParamsList.append('--bindPassword2 "%s"' % refInstancePswd)
+          STAFCmdParamsList.append('--bindPassword1 "%s"' % refInstancePswd)
 
         if refReplicationPort:
-          STAFCmdParamsList.append('--replicationPort2 %s' % refReplicationPort)                    
+          STAFCmdParamsList.append('--replicationPort1 %s' % refReplicationPort)                    
 
         if refSecureReplication:
-          STAFCmdParamsList.append('--secureReplication2') 
+          STAFCmdParamsList.append('--secureReplication1') 
+
+        if refOnlyLdapServer:
+          STAFCmdParamsList.append('--noReplicationServer1')          
+
+        if refOnlyReplServer:
+          STAFCmdParamsList.append('--onlyReplicationServer1')          
+
+        if dsInstanceHost:
+          STAFCmdParamsList.append('--host2 %s' % dsInstanceHost)
+      
+        if dsInstanceAdminPort:
+          STAFCmdParamsList.append('--port2 %s' % dsInstanceAdminPort)
+      
+        if dsInstanceDn:
+          STAFCmdParamsList.append('--bindDN2 "%s"' % dsInstanceDn)
+      
+        if dsInstancePswd:
+          STAFCmdParamsList.append('--bindPassword2 "%s"' % dsInstancePswd)
+
+        if dsReplicationPort:
+          STAFCmdParamsList.append('--replicationPort2 %s' % dsReplicationPort)                    
+          
+        if dsSecureReplication:
+          STAFCmdParamsList.append('--secureReplication2')          
+
+        if dsOnlyLdapServer:
+          STAFCmdParamsList.append('--noReplicationServer2')          
+
+        if dsOnlyReplServer:
+          STAFCmdParamsList.append('--onlyReplicationServer2')          
 
         if replicationDnList:
           for dn in replicationDnList:
@@ -1723,7 +1807,7 @@
         <else>
           <!-- MULTIPLE instance deployment: parameters read from
             topologyDescFile -->
-          <iterate var="server" in="_topologyServerList">
+          <iterate var="server" in="_splitServerList">
             <call function="'removeInstance'">
               { 'dsHost' : server.getHostname(),
                 'dsDir'  : server.getDir()
diff --git a/opends/tests/staf-tests/shared/python/replication.py b/opends/tests/staf-tests/shared/python/replication.py
index 66531a6..2117455 100644
--- a/opends/tests/staf-tests/shared/python/replication.py
+++ b/opends/tests/staf-tests/shared/python/replication.py
@@ -90,7 +90,7 @@
     self.synchronizedSuffixList = []
 
   def __repr__(self):
-    return "Server: hostname=%s, directory=%s" % (self.hostanme, self.dir)
+    return "Server: hostname=%s, directory=%s" % (self.hostname, self.dir)
 
   def addChangelogServer(self, changelogServer):
     self.changelogServer = changelogServer
@@ -132,7 +132,32 @@
     return self.synchronizedSuffixList
     
   def requiresSynchronization(self):
-    return (self.changelogServer is not None) or (len(self.synchronizedSuffixList) > 0)
+    return (self.changelogServer is not None) or (len(self.synchronizedSuffixList) > 0)
+
+  def isOnlyLdapServer(self):
+    return (self.changelogServer is None) and (len(self.synchronizedSuffixList) > 0)
+
+  def isOnlyReplServer(self):
+    return (self.changelogServer is not None) and (len(self.synchronizedSuffixList) == 0)
+
+  def splitReplServer(self):
+    new_hostname = self.hostname
+    new_dir = '%s-repl-server' % self.dir
+    new_port = str( int(self.port) + 1 )
+    new_adminPort = str( int(self.adminPort) + 1 )
+    new_sslPort = str( int(self.sslPort) + 1 )
+    new_jmxPort = str( int(self.jmxPort) + 1 )
+    new_rootDn = self.rootDn
+    new_rootPwd = self.rootPwd
+    new_baseDn = self.baseDn
+    new_changelogServer = self.changelogServer
+    self.changelogServer = None
+    
+    replServer = Server(new_hostname, new_dir, new_port, new_adminPort, new_sslPort,
+                        new_jmxPort, new_rootDn, new_rootPwd, new_baseDn)
+    replServer.addChangelogServer(new_changelogServer)
+
+    return replServer
 
 
 
diff --git a/opends/tests/staf-tests/shared/tests/config.py.stubs b/opends/tests/staf-tests/shared/tests/config.py.stubs
index 6ea01d2..f768bde 100644
--- a/opends/tests/staf-tests/shared/tests/config.py.stubs
+++ b/opends/tests/staf-tests/shared/tests/config.py.stubs
@@ -52,6 +52,7 @@
 DIRECTORY_INSTANCE_SFX        = 'dc=com'
 DIRECTORY_INSTANCE_BE         = 'userRoot'
 REPLICATION_CONFIG_DIR        = '${tests.run.dir}/${tests.run.time}/config'
+REPLICATION_SPLIT_SERVERS     = '${replication.split}'
 JAVA_HOME                     = '${remote.javahome}'
 LOCAL_JAVA_HOME               = '${local.javahome}'
 LOGS_ROOT                     = '${tests.run.dir}/${tests.run.time}'

--
Gitblit v1.10.0