From 803715dde2f0abbf2da38909a15443429dc547b4 Mon Sep 17 00:00:00 2001
From: ugaston <ugaston@localhost>
Date: Mon, 19 Nov 2007 14:59:57 +0000
Subject: [PATCH] Replication testsuite maintenance changes

---
 opendj-sdk/opends/tests/functional-tests/testcases/replication/replication_setup.xml       |   37 -----
 opendj-sdk/opends/tests/functional-tests/testcases/replication/schema/schema.xml           |   79 +++++++---
 opendj-sdk/opends/tests/functional-tests/testcases/replication/totalupdate/totalupdate.xml |   77 ++++++++--
 opendj-sdk/opends/tests/shared/functions/topology.xml                                      |  201 +++++++++++++++++++++++++++-
 4 files changed, 305 insertions(+), 89 deletions(-)

diff --git a/opendj-sdk/opends/tests/functional-tests/testcases/replication/replication_setup.xml b/opendj-sdk/opends/tests/functional-tests/testcases/replication/replication_setup.xml
index d2727fe..f15ec03 100644
--- a/opendj-sdk/opends/tests/functional-tests/testcases/replication/replication_setup.xml
+++ b/opendj-sdk/opends/tests/functional-tests/testcases/replication/replication_setup.xml
@@ -91,40 +91,6 @@
             [_topologyServerList]
           </call>            
 
-          <!-- Special setup for testcase:   Replication: Total Update: Schema total update
-            Modify schema in one server before replication is enabled.  -->        
-          <if expr="CurrentTestPath['suite'] == 'main.replication.total-update'">
-            <sequence>
-              <script>
-                newObjectclass = '( testobjectclass1-oid NAME \'testobjectclass-1\' SUP person MAY ( street $ testattribute-1 $ c ) X-ORIGIN \'user defined\' )'
-                newAttributetype = '( testattribute1-oid NAME \'testattribute-1\' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 X-ORIGIN \'user defined\' )'
-              </script>
-                
-              <!-- Modify schema  in "master" server -->
-              <call function="'modifyAnAttribute'">
-                { 'dsPath' : masterPath,
-                  'dsInstanceHost'   : masterHost ,
-                  'dsInstancePort'    : master.getPort(),
-                  'dsInstanceDn'  : master.getRootDn(),
-                  'dsInstancePswd'    : master.getRootPwd(),
-                  'DNToModify'    : 'cn=schema',
-                  'attributeName' : 'attributeTypes',
-                  'newAttributeValue' : newAttributetype, 
-                  'changetype' : 'add' }
-              </call>                
-              <call function="'modifyAnAttribute'">
-                { 'dsPath' : masterPath,
-                  'dsInstanceHost'   : masterHost ,
-                  'dsInstancePort'    : master.getPort(),
-                  'dsInstanceDn'  : master.getRootDn(),
-                  'dsInstancePswd'    : master.getRootPwd(),
-                  'DNToModify'    : 'cn=schema',
-                  'attributeName' : 'objectClasses',
-                  'newAttributeValue' : newObjectclass, 
-                  'changetype' : 'add' }
-              </call>                
-            </sequence>
-          </if>
               
           <iterate var="server" in="consumerList">
             <sequence>
@@ -162,7 +128,8 @@
                       'refInstanceDn'  :  master.getRootDn(),
                       'refInstancePswd'  :  master.getRootPwd(),
                       'refReplicationPort'  :  masterReplicationServer.getPort(),
-                      'replicationDnList'  :  replicatedDnList }                      
+                      'replicationDnList'  :  replicatedDnList,
+                      'useSecondServerAsSchemaSource'  :  True }                      
                   </call>
                 </sequence>
               </if>                
diff --git a/opendj-sdk/opends/tests/functional-tests/testcases/replication/schema/schema.xml b/opendj-sdk/opends/tests/functional-tests/testcases/replication/schema/schema.xml
index bcf4a29..5d73341 100644
--- a/opendj-sdk/opends/tests/functional-tests/testcases/replication/schema/schema.xml
+++ b/opendj-sdk/opends/tests/functional-tests/testcases/replication/schema/schema.xml
@@ -64,7 +64,10 @@
             synchroSuffix = master.getSynchronizedSuffixList()[0].getSuffixDn()    
             
             currentSchemaFile = '%s/config/schema/99-user.ldif' % masterPath
-            provSchemaFile = '%s/../last-99-user.ldif' % masterPath                            
+            provSchemaFile = '%s/../last-99-user.ldif' % masterPath                    
+            
+            consumer = consumerList[0]
+            consumerHost = consumer.getHostname()                 
           </script>            
               
                                     
@@ -113,14 +116,14 @@
                   'changetype' : 'add' }
               </call>
 
-              <!-- Add entry to "master" server -->                       
+              <!-- Add entry to "consumer" server -->                       
               <call function="'addEntry'">
                 { 'location'       : clientHost,
                   'dsPath'         : clientPath,
-                  'dsInstanceHost' : masterHost,
-                  'dsInstancePort' : master.getPort(), 
-                  'dsInstanceDn'   : master.getRootDn(),
-                  'dsInstancePswd' : master.getRootPwd(),
+                  'dsInstanceHost' : consumerHost,
+                  'dsInstancePort' : consumer.getPort(), 
+                  'dsInstanceDn'   : consumer.getRootDn(),
+                  'dsInstancePswd' : consumer.getRootPwd(),
                   'entryToBeAdded' : '%s/replication/testuser-0.ldif' % clientDataDir }
               </call>           
                        
@@ -133,6 +136,10 @@
               <call function="'verifyTrees'">
                 [ clientHost, clientPath, master, consumerList, synchroSuffix ]
               </call> 
+                
+              <script>
+                knownIssue(2599)
+              </script>                      
                                 
               <call function="'testCase_Postamble'"/>
             </sequence>
@@ -187,14 +194,14 @@
                   'changetype' : 'add' }
               </call>
 
-              <!-- Add entry to "master" server -->                       
+              <!-- Add entry to "consumer" server -->                       
               <call function="'addEntry'">
                 { 'location'       : clientHost,
                   'dsPath'         : clientPath,
-                  'dsInstanceHost' : masterHost,
-                  'dsInstancePort' : master.getPort(), 
-                  'dsInstanceDn'   : master.getRootDn(),
-                  'dsInstancePswd' : master.getRootPwd(),
+                  'dsInstanceHost' : consumerHost,
+                  'dsInstancePort' : consumer.getPort(), 
+                  'dsInstanceDn'   : consumer.getRootDn(),
+                  'dsInstancePswd' : consumer.getRootPwd(),
                   'entryToBeAdded' : '%s/replication/testuser-1.ldif' % clientDataDir }
               </call>           
                        
@@ -207,7 +214,11 @@
               <call function="'verifyTrees'">
                 [ clientHost, clientPath, master, consumerList, synchroSuffix ]
               </call> 
-                                
+
+              <script>
+                knownIssue(2599)
+              </script>                      
+                                                
               <call function="'testCase_Postamble'"/>
             </sequence>
           </testcase>                                           
@@ -283,7 +294,11 @@
               <call function="'verifyTrees'">
                 [ clientHost, clientPath, master, consumerList, synchroSuffix ]
               </call> 
-                                
+
+              <script>
+                knownIssue(2599)
+              </script>                      
+                                                
               <call function="'testCase_Postamble'"/>
             </sequence>
           </testcase>                                                                     
@@ -359,7 +374,11 @@
               <call function="'verifyTrees'">
                 [ clientHost, clientPath, master, consumerList, synchroSuffix ]
               </call> 
-                                
+
+              <script>
+                knownIssue(2599)
+              </script>                      
+                                                
               <call function="'testCase_Postamble'"/>
             </sequence>
           </testcase>                                                                     
@@ -412,14 +431,14 @@
                   'sleepForMilliSeconds'  :  1000 }
               </call>
                 
-              <!-- Add entry to "master" server -->                       
+              <!-- Add entry to "consumer" server -->                       
               <call function="'addEntry'">
                 { 'location'       : clientHost,
                   'dsPath'         : clientPath,
-                  'dsInstanceHost' : masterHost,
-                  'dsInstancePort' : master.getPort(), 
-                  'dsInstanceDn'   : master.getRootDn(),
-                  'dsInstancePswd' : master.getRootPwd(),
+                  'dsInstanceHost' : consumerHost,
+                  'dsInstancePort' : consumer.getPort(), 
+                  'dsInstanceDn'   : consumer.getRootDn(),
+                  'dsInstancePswd' : consumer.getRootPwd(),
                   'entryToBeAdded' : '%s/replication/newtestuser-0.ldif' % clientDataDir }
               </call>           
                        
@@ -432,7 +451,11 @@
               <call function="'verifyTrees'">
                 [ clientHost, clientPath, master, consumerList, synchroSuffix ]
               </call> 
-                                
+
+              <script>
+                knownIssue(2599)
+              </script>                      
+                                                
               <call function="'testCase_Postamble'"/>
             </sequence>
           </testcase>                     
@@ -486,14 +509,14 @@
                   'sleepForMilliSeconds'  :  1000 }
               </call>
                                 
-              <!-- Add entry to "master" server -->                       
+              <!-- Add entry to "consumer" server -->                       
               <call function="'addEntry'">
                 { 'location'       : clientHost,
                   'dsPath'         : clientPath,
-                  'dsInstanceHost' : masterHost,
-                  'dsInstancePort' : master.getPort(), 
-                  'dsInstanceDn'   : master.getRootDn(),
-                  'dsInstancePswd' : master.getRootPwd(),
+                  'dsInstanceHost' : consumerHost,
+                  'dsInstancePort' : consumer.getPort(), 
+                  'dsInstanceDn'   : consumer.getRootDn(),
+                  'dsInstancePswd' : consumer.getRootPwd(),
                   'entryToBeAdded' : '%s/replication/newtestuser-1.ldif' % clientDataDir }
               </call>           
                        
@@ -506,7 +529,11 @@
               <call function="'verifyTrees'">
                 [ clientHost, clientPath, master, consumerList, synchroSuffix ]
               </call> 
-                                
+
+              <script>
+                knownIssue(2599)
+              </script>                      
+                                                
               <call function="'testCase_Postamble'"/>
             </sequence>
           </testcase>                                           
diff --git a/opendj-sdk/opends/tests/functional-tests/testcases/replication/totalupdate/totalupdate.xml b/opendj-sdk/opends/tests/functional-tests/testcases/replication/totalupdate/totalupdate.xml
index ace8e16..c308ec7 100644
--- a/opendj-sdk/opends/tests/functional-tests/testcases/replication/totalupdate/totalupdate.xml
+++ b/opendj-sdk/opends/tests/functional-tests/testcases/replication/totalupdate/totalupdate.xml
@@ -188,7 +188,7 @@
               <script>
                 consumer = consumerList[0]
               </script>                
-                
+                                       
               <!-- Try to add entry belonging to new schema (see replication setup)
                 to "consumer" server; should be rejected with error 65 (objectclass violation) -->                       
               <call function="'addEntry'">
@@ -202,21 +202,60 @@
                   'expectedRC'  :  65 }
               </call>                     
 
-              <!-- Perform the total update on every server -->
-              <iterate var="server" in="consumerList">
-                <sequence>     
-                  <call function="'initializeReplication'">
-                    { 'location'  :  clientHost,
-                      'dsPath'  :  clientPath,
-                      'dsInstanceHost'  :  server.getHostname(),
-                      'dsInstancePort'  :  server.getPort(),
-                      'sourceInstanceHost'  :  masterHost,
-                      'sourceInstancePort'  :  master.getPort(),
-                      'replicationDnList'  :  ['cn=schema']
-                    }
-                  </call>
-                </sequence>
-              </iterate>       
+
+              <!-- Disable schema replication on "master" server -->       
+              <call function="'disableReplication'">
+                { 'location'  :  clientHost,
+                  'dsPath'  :  clientPath,
+                  'dsInstanceHost'  :  masterHost,
+                  'dsInstancePort'  :  master.getPort(),
+                  'replicationDnList'  :  ['cn=schema'] }                      
+              </call>         
+                
+              <script>
+                newObjectclass = '( testobjectclass1-oid NAME \'testobjectclass-1\' SUP person MAY ( street $ testattribute-1 $ c ) X-ORIGIN \'user defined\' )'
+                newAttributetype = '( testattribute1-oid NAME \'testattribute-1\' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 X-ORIGIN \'user defined\' )'
+              </script>
+                
+              <!-- Modify schema  in "master" server -->
+              <call function="'modifyAnAttribute'">
+                { 'dsPath' : masterPath,
+                  'dsInstanceHost'   : masterHost ,
+                  'dsInstancePort'    : master.getPort(),
+                  'dsInstanceDn'  : master.getRootDn(),
+                  'dsInstancePswd'    : master.getRootPwd(),
+                  'DNToModify'    : 'cn=schema',
+                  'attributeName' : 'attributeTypes',
+                  'newAttributeValue' : newAttributetype, 
+                  'changetype' : 'add' }
+              </call>                
+              <call function="'modifyAnAttribute'">
+                { 'dsPath' : masterPath,
+                  'dsInstanceHost'   : masterHost ,
+                  'dsInstancePort'    : master.getPort(),
+                  'dsInstanceDn'  : master.getRootDn(),
+                  'dsInstancePswd'    : master.getRootPwd(),
+                  'DNToModify'    : 'cn=schema',
+                  'attributeName' : 'objectClasses',
+                  'newAttributeValue' : newObjectclass, 
+                  'changetype' : 'add' }
+              </call>                
+                
+              <!-- Re-enable schema replication on "master" server, and 
+                   at the same time initialise the schema across the topology -->
+              <call function="'enableReplication'">
+                { 'location'  :  clientHost,
+                  'dsPath'  :  clientPath,
+                  'dsInstanceHost'  :  masterHost,
+                  'dsInstancePort'  :  master.getPort(),
+                  'dsInstanceDn'  :  master.getRootDn(),
+                  'dsInstancePswd'  :  master.getRootPwd(),
+                  'refInstanceHost'  :  consumer.getHostname(),
+                  'refInstancePort'  :  consumer.getPort(),
+                  'refInstanceDn'  :  consumer.getRootDn(),
+                  'refInstancePswd'  :  consumer.getRootPwd(),
+                  'replicationDnList'  :  ['cn=schema'] }                      
+              </call>                
                 
               <!-- Add entry to "consumer" server -->                       
               <call function="'addEntry'">
@@ -240,7 +279,7 @@
               </call>                 
 
               <script>
-                knownIssue(2263)
+                knownIssue(2587)
               </script>                 
                                                                            
               <call function="'testCase_Postamble'"/>
@@ -359,11 +398,11 @@
               <call function="'verifyTrees'">
                 [ clientHost, clientPath, master, consumerList, 'o=example' ]
               </call>                 
-
+<!--
               <script>
                 knownIssue(2425)
               </script> 
-                
+-->                
               <call function="'testCase_Postamble'"/>
             </sequence>
           </testcase>
diff --git a/opendj-sdk/opends/tests/shared/functions/topology.xml b/opendj-sdk/opends/tests/shared/functions/topology.xml
index b489909..3697e65 100755
--- a/opendj-sdk/opends/tests/shared/functions/topology.xml
+++ b/opendj-sdk/opends/tests/shared/functions/topology.xml
@@ -758,12 +758,23 @@
         <function-arg-property name="type" value="string" />
       </function-arg-def>
       
-      <function-arg-def name="dsReplicationPort" type="required">
+      <function-arg-def name="dsReplicationPort" 
+                        type="optional"
+                        default="None">
         <function-arg-description>
           Replication port number
         </function-arg-description>
         <function-arg-property name="type" value="Port number" />
       </function-arg-def>
+
+      <function-arg-def name="dsSecureReplication"
+                        type="optional"
+                        default="None">
+        <function-arg-description>
+          Encrypt communications over dsReplicationPort (secure replication)
+        </function-arg-description>
+        <function-arg-property name="type" value="boolean" />
+      </function-arg-def>                        
         
       <function-arg-def name="refInstanceHost"
                         type="optional"
@@ -795,12 +806,23 @@
         <function-arg-property name="type" value="string" />
       </function-arg-def>
       
-      <function-arg-def name="refReplicationPort" type="required">
+      <function-arg-def name="refReplicationPort" 
+                        type="optional" 
+                        default="None">
         <function-arg-description>
           Reference server Replication port number
         </function-arg-description>
         <function-arg-property name="type" value="Port number" />
       </function-arg-def>
+        
+      <function-arg-def name="refSecureReplication"
+                        type="optional"
+                        default="None">
+        <function-arg-description>
+          Encrypt communications over refReplicationPort (secure replication)
+        </function-arg-description>
+        <function-arg-property name="type" value="boolean" />
+      </function-arg-def>        
                         
       <function-arg-def name="replicationDnList" type="required">
         <function-arg-description>
@@ -826,7 +848,25 @@
         </function-arg-description>
         <function-arg-property name="type" value="string" />
       </function-arg-def>        
-      
+
+      <function-arg-def name="noSchemaReplication"
+                        type="optional"
+                        default="None">
+        <function-arg-description>
+          Do not enable schema replication
+        </function-arg-description>
+        <function-arg-property name="type" value="boolean" />
+      </function-arg-def>
+        
+      <function-arg-def name="useSecondServerAsSchemaSource"
+                        type="optional"
+                        default="None">
+        <function-arg-description>
+          Take the refInstanceHost as the source for the schema initialisation
+        </function-arg-description>
+        <function-arg-property name="type" value="boolean" />
+      </function-arg-def>
+                                      
       <function-arg-def name="expectedRC" type="optional" default="0">
         <function-arg-description>
         Expected return code value. Default value is 0
@@ -851,22 +891,25 @@
         STAFCmdParamsList.append('-Q')
           
         if dsInstanceHost:
-          STAFCmdParamsList.append('-h %s' % dsInstanceHost)
+          STAFCmdParamsList.append('--host1 %s' % dsInstanceHost)
       
         if dsInstancePort:
-          STAFCmdParamsList.append('-p %s' % dsInstancePort)
+          STAFCmdParamsList.append('--port1 %s' % dsInstancePort)
       
         if dsInstanceDn:
-          STAFCmdParamsList.append('-D "%s"' % dsInstanceDn)
+          STAFCmdParamsList.append('--bindDN1 "%s"' % dsInstanceDn)
       
         if dsInstancePswd:
           STAFCmdParamsList.append('--bindPassword1 "%s"' % dsInstancePswd)
 
         if dsReplicationPort:
-          STAFCmdParamsList.append('-r %s' % dsReplicationPort)                    
+          STAFCmdParamsList.append('--replicationPort1 %s' % dsReplicationPort)                    
+          
+        if dsSecureReplication:
+          STAFCmdParamsList.append('--secureReplication1')          
 
         if refInstanceHost:
-          STAFCmdParamsList.append('-O %s' % refInstanceHost)
+          STAFCmdParamsList.append('--host2 %s' % refInstanceHost)
       
         if refInstancePort:
           STAFCmdParamsList.append('--port2 %s' % refInstancePort)
@@ -878,7 +921,10 @@
           STAFCmdParamsList.append('--bindPassword2 "%s"' % refInstancePswd)
 
         if refReplicationPort:
-          STAFCmdParamsList.append('-R %s' % refReplicationPort)                    
+          STAFCmdParamsList.append('--replicationPort2 %s' % refReplicationPort)                    
+
+        if refSecureReplication:
+          STAFCmdParamsList.append('--secureReplication2') 
 
         if replicationDnList:
           for dn in replicationDnList:
@@ -889,6 +935,12 @@
       
         if adminPswd:
           STAFCmdParamsList.append('-w "%s"' % adminPswd)          
+          
+        if noSchemaReplication:
+          STAFCmdParamsList.append('--noSchemaReplication')
+          
+        if useSecondServerAsSchemaSource:
+          STAFCmdParamsList.append('--useSecondServerAsSchemaSource')
                     
         STAFCmdParams=' '.join(STAFCmdParamsList)
       </script>
@@ -1076,6 +1128,137 @@
   </function>
 
 
+
+  <!-- Disable replication for given baseDN  on server using dsreplication -->
+  <function name="disableReplication">
+    <function-prolog>
+      This function disables replication for a given baseDN on a server using dsreplication.
+    </function-prolog>
+    <function-map-args>
+      <function-arg-def name="location"
+                        type="optional"
+                        default="STAF_REMOTE_HOSTNAME">
+        <function-arg-description>
+          Location of target host
+        </function-arg-description>
+        <function-arg-property name="type" value="hostname" />
+      </function-arg-def>
+      
+      <function-arg-def name="dsPath"
+                        type="optional"
+                        default="'%s/%s' % (DIRECTORY_INSTANCE_DIR,OPENDSNAME)">
+        <function-arg-description>
+          Pathname to installation root
+        </function-arg-description>
+        <function-arg-property name="type" value="filepath" />
+      </function-arg-def>
+      
+      <function-arg-def name="dsInstanceHost"
+                        type="optional"
+                        default="STAF_REMOTE_HOSTNAME">
+        <function-arg-description>
+          Directory server hostname or IP address
+        </function-arg-description>
+        <function-arg-property name="type" value="hostname" />
+      </function-arg-def>
+      
+      <function-arg-def name="dsInstancePort" type="required">
+        <function-arg-description>
+          Directory server port number
+        </function-arg-description>
+        <function-arg-property name="type" value="Port number" />
+      </function-arg-def>
+
+      <function-arg-def name="replicationDnList" type="required">
+        <function-arg-description>
+          DN of the replicated suffix
+        </function-arg-description>
+        <function-arg-property name="type" value="DN list" />
+      </function-arg-def>        
+        
+      <function-arg-def name="adminUID" 
+                                   type="optional"
+                                   default="AdminUID">
+        <function-arg-description>
+          Global Administrator UID
+        </function-arg-description>
+        <function-arg-property name="type" value="UID" />
+      </function-arg-def>
+      
+      <function-arg-def name="adminPswd" 
+                                   type="optional"
+                                   default="AdminPswd">
+        <function-arg-description>
+          Global Administrator password
+        </function-arg-description>
+        <function-arg-property name="type" value="string" />
+      </function-arg-def>        
+
+      <function-arg-def name="expectedRC" type="optional" default="0">
+        <function-arg-description>
+        Expected return code value. Default value is 0
+        </function-arg-description>
+        <function-arg-property name="type" value="string" />
+      </function-arg-def>
+    </function-map-args>
+    <sequence>
+      <!-- Local variables -->
+      <script>
+        mylocation=location
+        STAFCmdParams=''
+        STAFCmd=''
+        
+        if dsPath:
+          dsBinPath='%s/%s' % (dsPath,fileFolder)
+          STAFCmd='%s/%s%s' % (dsBinPath,DSREPLICATION,fileExt)
+        
+        STAFCmdParamsList=[]
+        STAFCmdParamsList.append('disable')
+        STAFCmdParamsList.append('-n')                    
+        STAFCmdParamsList.append('-Q')
+          
+        if dsInstanceHost:
+          STAFCmdParamsList.append('-h %s' % dsInstanceHost)
+      
+        if dsInstancePort:
+          STAFCmdParamsList.append('-p %s' % dsInstancePort)
+      
+        if replicationDnList:
+          for dn in replicationDnList:
+            STAFCmdParamsList.append('-b "%s"' % dn)
+                    
+        if adminUID:
+          STAFCmdParamsList.append('-I "%s"' % adminUID)
+      
+        if adminPswd:
+          STAFCmdParamsList.append('-w "%s"' % adminPswd)          
+                              
+        STAFCmdParams=' '.join(STAFCmdParamsList)
+      </script>
+      <call function="'runCommand'">
+        { 'name'      : 'Disable Replication',
+          'location'  : location,
+          'command'   : STAFCmd,
+          'arguments' : STAFCmdParams
+        }
+      </call>
+      <script>
+        STAXCode=RC
+        STAXReason=STAXResult
+      </script>
+      <call function="'checktestRC'">
+        { 'returncode' : STAXCode,
+          'result'     : STAXReason,
+          'expected'   : expectedRC
+        }
+      </call>
+      <return>
+        STAXReason
+      </return>
+    </sequence>
+  </function>        
+      
+            
                                           
   
   <function name="readTopology">

--
Gitblit v1.10.0