From 480cca4b07191e953b25d424ce818426c42d5ca7 Mon Sep 17 00:00:00 2001
From: Christophe Sovant <christophe.sovant@forgerock.com>
Date: Wed, 12 Mar 2008 14:03:11 +0000
Subject: [PATCH] Add verifiy-index and rebuild-index testsuites

---
 opendj-sdk/opends/tests/functional-tests/testcases/clu/clu.xml                             |    2 
 opendj-sdk/opends/tests/shared/functions/tools.xml                                         |  212 ++++++++++
 opendj-sdk/opends/tests/functional-tests/testcases/clu/clu_rebuild-index_checkbehavior.xml |  578 ++++++++++++++++++++++++++++
 opendj-sdk/opends/tests/functional-tests/testcases/clu/clu_verify-index_checkbehavior.xml  |  399 +++++++++++++++++++
 4 files changed, 1,190 insertions(+), 1 deletions(-)

diff --git a/opendj-sdk/opends/tests/functional-tests/testcases/clu/clu.xml b/opendj-sdk/opends/tests/functional-tests/testcases/clu/clu.xml
index f49e9df..6237020 100644
--- a/opendj-sdk/opends/tests/functional-tests/testcases/clu/clu.xml
+++ b/opendj-sdk/opends/tests/functional-tests/testcases/clu/clu.xml
@@ -60,6 +60,8 @@
             testList.append(['.','clu_status_checkbehavior'])
             testList.append(['.','clu_ldappasswordmodify_checkbehavior'])
             testList.append(['.','clu_ldifsearch_checkbehavior'])
+            testList.append(['.','clu_verify-index_checkbehavior'])
+            testList.append(['.','clu_rebuild-index_checkbehavior'])            
             testList.append(['.','clu_cleanup'])
           </script>
           
diff --git a/opendj-sdk/opends/tests/functional-tests/testcases/clu/clu_rebuild-index_checkbehavior.xml b/opendj-sdk/opends/tests/functional-tests/testcases/clu/clu_rebuild-index_checkbehavior.xml
new file mode 100644
index 0000000..7c7aa16
--- /dev/null
+++ b/opendj-sdk/opends/tests/functional-tests/testcases/clu/clu_rebuild-index_checkbehavior.xml
@@ -0,0 +1,578 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE stax SYSTEM "../../../shared/stax.dtd">
+<!--
+ ! CDDL HEADER START
+ !
+ ! The contents of this file are subject to the terms of the
+ ! Common Development and Distribution License, Version 1.0 only
+ ! (the "License").  You may not use this file except in compliance
+ ! with the License.
+ !
+ ! You can obtain a copy of the license at
+ ! trunk/opends/resource/legal-notices/OpenDS.LICENSE
+ ! or https://OpenDS.dev.java.net/OpenDS.LICENSE.
+ ! See the License for the specific language governing permissions
+ ! and limitations under the License.
+ !
+ ! When distributing Covered Code, exclude this CDDL HEADER in each
+ ! file and exclude the License file at
+ ! trunk/opends/resource/legal-notices/OpenDS.LICENSE.  If applicable,
+ ! add the following below this CDDL HEADER, with the fields enclosed
+ ! by brackets "[]" replaced with your own identifying information:
+ !      Portions Copyright [yyyy] [name of copyright owner]
+ !
+ ! CDDL HEADER END
+ !
+ !      Portions Copyright 2008 Sun Microsystems, Inc.
+ ! -->
+<stax>
+  
+  <defaultcall function="clu_rebuild-index_checkbehavior"/>
+  
+  <function name="clu_rebuild-index_checkbehavior">
+    
+    <sequence>
+      
+      <block name="'clu_rebuild-index_checkbehavior'">
+        
+        <sequence>
+          
+          <!--- Test Suite information
+            #@TestSuiteName       rebuild-index check behavior tests
+            #@TestSuitePurpose    Test the results of rebuild-index command.
+            #@TestSuiteGroup      rebuild-index check behavior tests
+            #@TestScript          clu_rebuild-index_checkbehavior.xml
+          -->
+          
+          <script>
+            if not CurrentTestPath.has_key('group'):
+              CurrentTestPath['group'] = 'clu'              
+            CurrentTestPath['suite'] = STAXCurrentBlock
+          </script>
+          
+          <call function="'testSuite_Preamble'"/>
+          
+          <!--- Test Case information
+            #@TestMarker          rebuild-index check behavior tests
+            #@TestName            rebuild-index: check on a single index
+            #@TestIssue           none
+            #@TestPurpose         Verify that rebuild-index command failed if
+                                  the server is started and successful otherwise
+                                  and that the output is correct.
+            #@TestPreamble        none
+            #@TestStep            Do a rebuild-index on a single index.
+            #@TestStep            Check the output of the command.
+            #@TestStep            Create a new index using dsconfig for the 
+                                  other testcases.            
+            #@TestStep            Stop the server.
+            #@TestStep            Do a rebuild-index on a single index.            
+            #@TestStep            Check the output of the command.            
+            #@TestPostamble       none
+            #@TestResult          Success if verify-index returns 1 when the
+                                  server is running, 0 when the server is 
+                                  stopped and the outputs are correct.
+          -->
+          <testcase name="getTestCaseName('rebuild-index: single index')">
+            
+            <sequence>
+              
+              <call function="'testCase_Preamble'"/>
+              
+              <message>
+                'rebuild-index: try to rebuild a single index while the server \
+                is running'
+              </message>
+              
+              <call function="'rebuildIndexWithScript'">
+                {
+                'dsBaseDN'     : 'dc=com' ,
+                'dsIndexList'  : [ 'uid' ] ,
+                'expectedRC'   : 1
+                }                
+              </call>
+              
+              <script>
+                returnString = STAXResult[0][1]
+              </script>
+              
+              <script>
+                msg1 = 'An error occurred while attempting to acquire a'
+                msg2 = 'exclusive lock for backend userRoot' 
+              </script>                  
+              <call function="'checktestString'">
+                { 
+                'returnString'   : returnString ,
+                'expectedString' : '%s %s' % (msg1, msg2)
+                }
+              </call>
+
+              <message>
+                'rebuild-index: create a new index for the other testcases'
+              </message>                  
+              
+              <call function="'dsconfig'">
+                { 
+                'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
+                'dsInstancePort'   : DIRECTORY_INSTANCE_PORT ,
+                'dsInstanceDn'     : DIRECTORY_INSTANCE_DN ,
+                'dsInstancePswd'   : DIRECTORY_INSTANCE_PSWD ,
+                'subcommand'       : 'create-local-db-index' ,
+                'objectType'       : 'backend-name' ,
+                'objectName'       : 'userRoot' ,
+                'optionsString'    : '--index-name st --set index-type:equality'
+                }
+              </call>
+              
+              <message>
+                'rebuild-index: stop the server'
+              </message>    
+              
+              <call function="'StopDsWithScript'">
+                { 'location' : STAF_REMOTE_HOSTNAME }
+              </call>
+              
+              <message>
+                'rebuild-index: rebuild a single index with the server stopped'
+              </message>
+              
+              <call function="'rebuildIndexWithScript'">
+                {
+                'dsBaseDN'     : 'dc=com' ,
+                'dsIndexList'  : [ 'uid' ]
+                }                
+              </call>           
+
+              <script>
+                returnString = STAXResult[0][1]
+              </script>
+              
+              <script>
+                msg1 = 'Rebuild of index\(es\) uid started with 1048'
+                msg2 = 'total records to process' 
+              </script>                  
+              <call function="'checktestString'">
+                { 
+                'returnString'   : returnString ,
+                'expectedString' : '%s %s' % (msg1, msg2)
+                }
+              </call>              
+
+              <call function="'checktestString'">
+                { 
+                'returnString'   : returnString ,
+                'expectedString' : 'Rebuild complete. Processed 1048 records'
+                }
+              </call>           
+              
+              <call function="'testCase_Postamble'"/>
+              
+            </sequence>
+            
+          </testcase>
+          
+          <!--- Test Case information
+            #@TestMarker          rebuild-index check behavior tests
+            #@TestName            rebuild-index: check without index option
+            #@TestIssue           none
+            #@TestPurpose         Verify that rebuild-index command failed
+                                  and that the output is correct.
+            #@TestPreamble        none
+            #@TestStep            Do a rebuild-index without index option.
+            #@TestStep            Check the output of the command.         
+            #@TestPostamble       none
+            #@TestResult          Success if verify-index returns 1 and the 
+                                  output is correct.
+          -->
+          <testcase name="getTestCaseName('rebuild-index: without index')">
+            
+            <sequence>
+              
+              <call function="'testCase_Preamble'"/>
+              
+              <message>
+                'rebuild-index: without index'
+              </message>
+              
+              <call function="'rebuildIndexWithScript'">
+                {
+                'dsBaseDN'     : 'dc=com' ,
+                'expectedRC'   : 1
+                }                
+              </call>
+              
+              <script>
+                returnString = STAXResult[0][1]
+              </script>
+              
+              <script>
+                msg1 = 'At least one index must be specified'
+                msg2 = 'for the rebuild process' 
+              </script>                  
+              <call function="'checktestString'">
+                { 
+                'returnString'   : returnString ,
+                'expectedString' : '%s %s' % (msg1, msg2)
+                }
+              </call>                
+           
+              <call function="'testCase_Postamble'"/>
+              
+            </sequence>
+            
+          </testcase>
+          
+          <!--- Test Case information
+            #@TestMarker          rebuild-index check behavior tests
+            #@TestName            rebuild-index: check on multiple indexes
+            #@TestIssue           none
+            #@TestPurpose         Verify that rebuild-index command is 
+                                  successful and that the output is correct.
+            #@TestPreamble        none
+            #@TestStep            Do a rebuild-index on multiple indexes.
+            #@TestStep            Check the output of the command.
+            #@TestPostamble       none
+            #@TestResult          Success if verify-index returns 0 and the 
+                                  output is correct.
+          -->
+          <testcase name="getTestCaseName('rebuild-index: multiple indexes')">
+            
+            <sequence>
+              
+              <call function="'testCase_Preamble'"/>
+              
+              <message>
+                'rebuild-index: multiple indexes'
+              </message>
+              
+              <call function="'rebuildIndexWithScript'">
+                {
+                'dsBaseDN'     : 'dc=com' ,
+                'dsIndexList'  : [ 'uid', 'cn' ]
+                }                
+              </call>
+              
+              <script>
+                returnString = STAXResult[0][1]
+              </script>
+              
+              <script>
+                msg1 = 'Rebuild of index\(es\) uid, cn started'
+                msg2 = 'with 2096 total records to process' 
+              </script>                  
+              <call function="'checktestString'">
+                { 
+                'returnString'   : returnString ,
+                'expectedString' : '%s %s' % (msg1, msg2)
+                }
+              </call>              
+
+              <call function="'checktestString'">
+                { 
+                'returnString'   : returnString ,
+                'expectedString' : 'Rebuild complete. Processed 2096 records'
+                }
+              </call>
+              
+              <call function="'testCase_Postamble'"/>
+              
+            </sequence>
+            
+          </testcase>
+
+          <!--- Test Case information
+            #@TestMarker          rebuild-index check behavior tests
+            #@TestName            rebuild-index: check on a non existing index
+            #@TestIssue           none
+            #@TestPurpose         Verify that rebuild-index command failed
+                                  and that the output is correct.
+            #@TestPreamble        none
+            #@TestStep            Do a rebuild-index on a non existing index.
+            #@TestStep            Check the output of the command.         
+            #@TestPostamble       none
+            #@TestResult          Success if verify-index returns 1 and the 
+                                  output is correct.
+          -->
+          <testcase name="getTestCaseName('rebuild-index: non existing index')">
+            
+            <sequence>
+              
+              <call function="'testCase_Preamble'"/>
+              
+              <message>
+                'rebuild-index: non existing index'
+              </message>
+              
+              <call function="'rebuildIndexWithScript'">
+                {
+                'dsBaseDN'     : 'dc=com' ,
+                'dsIndexList'  : [ 'myindex' ] ,
+                'expectedRC'    : 1
+                }                
+              </call>
+              
+              <script>
+                returnString = STAXResult[0][1]
+              </script>
+              
+              <script>
+                msg1 = 'There is no index configured for'
+                msg2 = 'attribute type \'myindex\'' 
+              </script>                 
+              <call function="'checktestString'">
+                { 
+                'returnString'   : returnString ,
+                'expectedString' : '%s %s' % (msg1, msg2)
+                }
+              </call>
+              
+              <call function="'testCase_Postamble'"/>
+              
+            </sequence>
+            
+          </testcase>          
+          
+          <!--- Test Case information
+            #@TestMarker          rebuild-index check behavior tests
+            #@TestName            rebuild-index: after creation
+            #@TestIssue           none
+            #@TestPurpose         Verify that rebuild-index command is
+                                  successfull on a newly created index
+                                  and that the output is correct.
+            #@TestPreamble        none
+            #@TestStep            Do a verifiy-index before rebuild on 
+                                  the new index.
+            #@TestStep            Check the output of the command.              
+            #@TestStep            Do a rebuild-index on the new index.
+            #@TestStep            Check the output of the command.  
+            #@TestStep            Do a verify-index after rebuild on
+                                  the new index.
+            #@TestStep            Check the output of the command.
+            #@TestStep            Do again a rebuild-index on the new index.
+            #@TestStep            Check the output of the command.  
+            #@TestStep            Re-start the server.          
+            #@TestPostamble       none
+            #@TestResult          Success if all the commands return 0 and
+                                  the outputs are correct.
+          -->
+          <testcase name="getTestCaseName
+          ('rebuild-index: rebuild index after creation')">
+            
+            <sequence>
+              
+              <call function="'testCase_Preamble'"/>
+              
+              <message>
+                'rebuild-index: verify index st before rebuild'
+              </message>
+              
+              <call function="'verifyIndexWithScript'">
+                {
+                'dsBaseDN'     : 'dc=com' ,
+                'dsIndexList'  : [ 'st' ]
+                }                
+              </call>
+              
+              <script>
+                returnString = STAXResult[0][1]
+              </script>
+              
+              <script>
+                msg1 = 'Due to changes in the configuration, index'
+                msg2 = 'dc_com_st.equality is currently operating in a'
+                msg3 = 'degraded state and must be rebuilt before it can used' 
+              </script>                 
+              <call function="'checktestString'">
+                { 
+                'returnString'   : returnString ,
+                'expectedString' : '%s %s %s' % (msg1, msg2, msg3)
+                }
+              </call>
+              
+              <script>
+                msg1 = 'Statistics for records that have'
+                msg2 = 'exceeded the entry limit:' 
+              </script>                 
+              <call function="'checktestString'">
+                { 
+                'returnString'   : returnString ,
+                'expectedString' : '%s %s' % (msg1, msg2)
+                }
+              </call>
+              
+              <script>
+                msg1 = 'File dc_com_st.equality has 51 such record\(s\)'
+                msg2 = 'min=14 max=31 median=20' 
+              </script>                 
+              <call function="'checktestString'">
+                { 
+                'returnString'   : returnString ,
+                'expectedString' : '%s %s' % (msg1, msg2)
+                }
+              </call>
+              
+              <message>
+                'rebuild-index: rebuild index st'
+              </message>    
+              
+              <call function="'rebuildIndexWithScript'">
+                {
+                'dsBaseDN'     : 'dc=com' ,
+                'dsIndexList'  : [ 'st' ]
+                }                
+              </call>
+              
+              <script>
+                returnString = STAXResult[0][1]
+              </script>
+              
+              <script>
+                msg1 = 'Due to changes in the configuration, index'
+                msg2 = 'dc_com_st.equality is currently operating in a'
+                msg3 = 'degraded state and must be rebuilt before it can used' 
+              </script>                 
+              <call function="'checktestString'">
+                { 
+                'returnString'   : returnString ,
+                'expectedString' : '%s %s %s' % (msg1, msg2, msg3)
+                }
+              </call>
+              
+              <script>
+                msg1 = 'Rebuild of index\(es\) st started with 1048'
+                msg2 = 'total records to process' 
+              </script>                 
+              <call function="'checktestString'">
+                { 
+                'returnString'   : returnString ,
+                'expectedString' : '%s %s' % (msg1, msg2)
+                }
+              </call>
+              
+              <script>
+                msg = 'Rebuild complete. Processed 1048 records' 
+              </script>                 
+              <call function="'checktestString'">
+                { 
+                'returnString'   : returnString ,
+                'expectedString' : msg
+                }
+              </call>
+              
+              <message>
+                'rebuild-index: verify index st after rebuild'
+              </message>
+              
+              <call function="'verifyIndexWithScript'">
+                {
+                'dsBaseDN'     : 'dc=com' ,
+                'dsIndexList'  : [ 'st' ]
+                }                
+              </call>
+              
+              <script>
+                returnString = STAXResult[0][1]
+              </script>
+              
+              <script>
+                msg1 = 'Due to changes in the configuration, index'
+                msg2 = 'dc_com_st.equality is currently operating in a'
+                msg3 = 'degraded state and must be rebuilt before it can used' 
+              </script>                 
+              <call function="'checktestStringNotPresent'">
+                { 
+                'returnString' : returnString ,
+                'testString'   : '%s %s %s' % (msg1, msg2, msg3)
+                }
+              </call>
+              
+              <script>
+                msg = 'Checked 1048 entries and found 0 error' 
+              </script>                 
+              <call function="'checktestString'">
+                { 
+                'returnString'   : returnString ,
+                'expectedString' : msg
+                }
+              </call>
+              
+              <message>
+                'rebuild-index: rebuild again index st'
+              </message>    
+              
+              <call function="'rebuildIndexWithScript'">
+                {
+                'dsBaseDN'     : 'dc=com' ,
+                'dsIndexList'  : [ 'st' ]
+                }                
+              </call>
+              
+              <script>
+                returnString = STAXResult[0][1]
+              </script>
+              
+              <script>
+                msg1 = 'Due to changes in the configuration, index'
+                msg2 = 'dc_com_st.equality is currently operating in a'
+                msg3 = 'degraded state and must be rebuilt before it can used' 
+              </script>                 
+              <call function="'checktestStringNotPresent'">
+                { 
+                'returnString' : returnString ,
+                'testString'   : '%s %s %s' % (msg1, msg2, msg3)
+                }
+              </call>
+              
+              <script>
+                msg1 = 'Rebuild of index\(es\) st started with 1048'
+                msg2 = 'total records to process' 
+              </script>                 
+              <call function="'checktestString'">
+                { 
+                'returnString'   : returnString ,
+                'expectedString' : '%s %s' % (msg1, msg2)
+                }
+              </call>
+              
+              <script>
+                msg = 'Rebuild complete. Processed 1048 records' 
+              </script>                 
+              <call function="'checktestString'">
+                { 
+                'returnString'   : returnString ,
+                'expectedString' : msg
+                }
+              </call>
+
+              <message>
+                'rebuild-index: start the server'
+              </message>
+              
+              <call function="'StartDsWithScript'">
+                { 'location' : STAF_REMOTE_HOSTNAME }
+              </call>
+       
+              <!--- Check that DS started -->
+              <call function="'isAlive'">
+                {
+                'noOfLoops'        : 5 ,
+                'noOfMilliSeconds' : 2000
+                }
+              </call>
+              
+              <call function="'testCase_Postamble'"/>
+              
+            </sequence>
+            
+          </testcase>          
+          
+          <call function="'testSuite_Postamble'"/>
+          
+        </sequence>
+        
+      </block>
+      
+    </sequence>
+    
+  </function>
+  
+</stax>
diff --git a/opendj-sdk/opends/tests/functional-tests/testcases/clu/clu_verify-index_checkbehavior.xml b/opendj-sdk/opends/tests/functional-tests/testcases/clu/clu_verify-index_checkbehavior.xml
new file mode 100644
index 0000000..0108763
--- /dev/null
+++ b/opendj-sdk/opends/tests/functional-tests/testcases/clu/clu_verify-index_checkbehavior.xml
@@ -0,0 +1,399 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE stax SYSTEM "../../../shared/stax.dtd">
+<!--
+ ! CDDL HEADER START
+ !
+ ! The contents of this file are subject to the terms of the
+ ! Common Development and Distribution License, Version 1.0 only
+ ! (the "License").  You may not use this file except in compliance
+ ! with the License.
+ !
+ ! You can obtain a copy of the license at
+ ! trunk/opends/resource/legal-notices/OpenDS.LICENSE
+ ! or https://OpenDS.dev.java.net/OpenDS.LICENSE.
+ ! See the License for the specific language governing permissions
+ ! and limitations under the License.
+ !
+ ! When distributing Covered Code, exclude this CDDL HEADER in each
+ ! file and exclude the License file at
+ ! trunk/opends/resource/legal-notices/OpenDS.LICENSE.  If applicable,
+ ! add the following below this CDDL HEADER, with the fields enclosed
+ ! by brackets "[]" replaced with your own identifying information:
+ !      Portions Copyright [yyyy] [name of copyright owner]
+ !
+ ! CDDL HEADER END
+ !
+ !      Portions Copyright 2008 Sun Microsystems, Inc.
+ ! -->
+<stax>
+  
+  <defaultcall function="clu_verify-index_checkbehavior"/>
+  
+  <function name="clu_verify-index_checkbehavior">
+    
+    <sequence>
+      
+      <block name="'clu_verify-index_checkbehavior'">
+        
+        <sequence>
+          
+          <!--- Test Suite information
+            #@TestSuiteName       verify-index check behavior tests
+            #@TestSuitePurpose    Test the results of verify-index command.
+            #@TestSuiteGroup      verify-index check behavior tests
+            #@TestScript          clu_verify-index_checkbehavior.xml
+          -->
+          
+          <script>
+            if not CurrentTestPath.has_key('group'):
+              CurrentTestPath['group'] = 'clu'              
+            CurrentTestPath['suite'] = STAXCurrentBlock
+          </script>
+          
+          <call function="'testSuite_Preamble'"/>
+          
+          <!--- Test Case information
+            #@TestMarker          verify-index check behavior tests
+            #@TestName            verify-index: check on a single index
+            #@TestIssue           none
+            #@TestPurpose         Verify that verify-index command is successful
+                                  and the output is correct.
+            #@TestPreamble        none
+            #@TestStep            Do a verify-index on a single index.
+            #@TestStep            Check the output of the command.
+            #@TestPostamble       none
+            #@TestResult          Success if verify-index returns 0 and the 
+                                  output is correct.
+          -->
+          <testcase name="getTestCaseName('verify-index: single index')">
+            
+            <sequence>
+              
+              <call function="'testCase_Preamble'"/>
+              
+              <message>
+                'verify-index: single index'
+              </message>
+              
+              <call function="'verifyIndexWithScript'">
+                {
+                'dsBaseDN'       : 'dc=com' ,
+                'dsIndexList'    : [ 'uid' ]
+                }                
+              </call>
+              
+              <script>
+                returnString = STAXResult[0][1]
+              </script>
+              
+              <call function="'checktestString'">
+                { 
+                'returnString'   : returnString ,
+                'expectedString' : 'Checked 1048 entries and found 0 error' 
+                }
+              </call>
+              
+              <call function="'testCase_Postamble'"/>
+              
+            </sequence>
+            
+          </testcase>
+
+          <!--- Test Case information
+            #@TestMarker          verify-index check behavior tests
+            #@TestName            verify-index: check without index option
+            #@TestIssue           none
+            #@TestPurpose         Verify that verify-index command is successful
+                                  and the output is correct.
+            #@TestPreamble        none
+            #@TestStep            Do a verify-index without index option.
+            #@TestStep            Check the output of the command.
+            #@TestPostamble       none
+            #@TestResult          Success if verify-index returns 0 and the 
+                                  output is correct.
+          -->
+          <testcase name="getTestCaseName('verify-index: without index')">
+ 
+            <sequence>
+              
+              <call function="'testCase_Preamble'"/>
+              
+              <message>
+                'verify-index: without index'
+              </message>
+              
+              <call function="'verifyIndexWithScript'">
+                {
+                'dsBaseDN'       : 'dc=com'
+                }                
+              </call>
+
+              <script>
+                returnString = STAXResult[0][1]
+              </script>
+              
+              <call function="'checktestString'">
+                { 
+                'returnString'   : returnString ,
+                'expectedString' : 'Checked 1048 entries and found 0 error' 
+                }
+              </call>
+              
+              <call function="'testCase_Postamble'"/>
+              
+            </sequence>
+            
+          </testcase>          
+
+          <!--- Test Case information
+            #@TestMarker          verify-index check behavior tests
+            #@TestName            verify-index: check on multiple indexes
+            #@TestIssue           none
+            #@TestPurpose         Verify that verify-index command is successful
+                                  and the output is correct.
+            #@TestPreamble        none
+            #@TestStep            Do a verify-index on multiple indexes.
+            #@TestStep            Check the output of the command.
+            #@TestPostamble       none
+            #@TestResult          Success if verify-index returns 0 and the 
+                                  output is correct.
+          -->
+          <testcase name="getTestCaseName('verify-index: multiple indexes')">
+            
+            <sequence>
+              
+              <call function="'testCase_Preamble'"/>
+              
+              <message>
+                'verify-index: multiple indexes'
+              </message>
+              
+              <call function="'verifyIndexWithScript'">
+                {
+                'dsBaseDN'       : 'dc=com' ,
+                'dsIndexList'    : [ 'uid', 'cn' ] 
+                }                
+              </call>
+              
+              <script>
+                returnString = STAXResult[0][1]
+              </script>
+              
+              <call function="'checktestString'">
+                { 
+                'returnString'   : returnString ,
+                'expectedString' : 'Checked 1048 entries and found 0 error' 
+                }
+              </call>
+              
+              <call function="'testCase_Postamble'"/>
+              
+            </sequence>
+            
+          </testcase>              
+
+          <!--- Test Case information
+            #@TestMarker          verify-index check behavior tests
+            #@TestName            verify-index: check with clean option
+            #@TestIssue           none
+            #@TestPurpose         Verify that verify-index command is successful
+                                  and the output is correct.
+            #@TestPreamble        none
+            #@TestStep            Do a verify-index with clean option..
+            #@TestStep            Check the output of the command.
+            #@TestPostamble       none
+            #@TestResult          Success if verify-index returns 0 and the 
+                                  output is correct.
+          -->
+          <testcase name="getTestCaseName('verify-index: clean option')">
+            
+            <sequence>
+              
+              <call function="'testCase_Preamble'"/>
+              
+              <message>
+                'verify-index: clean option'
+              </message>
+              
+              <call function="'verifyIndexWithScript'">
+                {
+                'dsBaseDN'      : 'dc=com' ,
+                'dsIndexList'   : [ 'uid' ] ,
+                'dsClean'       : 'True'            
+                }                
+              </call>
+              
+              <script>
+                returnString = STAXResult[0][1]
+              </script>
+ 
+              <call function="'checktestString'">
+                { 
+                'returnString'   : returnString ,
+                'expectedString' : 'Checked 1000 records and found 0 error' 
+                }
+              </call>
+
+              <script>
+                msg = 'Number of records referencing more than one entry: 10' 
+              </script>
+              <call function="'checktestString'">
+                { 
+                'returnString'   : returnString ,
+                'expectedString' : msg
+                }
+              </call>
+
+              <script>
+                msg = 'Number of records that exceed the entry limit: 0' 
+              </script>              
+              <call function="'checktestString'">
+                { 
+                'returnString'   : returnString ,
+                'expectedString' : msg
+                }
+              </call>
+
+              <script>
+                msg = 'Average number of entries referenced is 1.04/record' 
+              </script>              
+              <call function="'checktestString'">
+                { 
+                'returnString'   : returnString ,
+                'expectedString' : msg
+                }
+              </call>
+
+              <script>
+                msg = 'Maximum number of entries referenced by any record is 5' 
+              </script>              
+              <call function="'checktestString'">
+                { 
+                'returnString'   : returnString ,
+                'expectedString' : msg
+                }
+              </call>
+              
+              <call function="'testCase_Postamble'"/>
+              
+            </sequence>
+            
+          </testcase>                   
+
+          <!--- Test Case information
+            #@TestMarker          verify-index check behavior tests
+            #@TestName            verify-index: multiple indexes, clean option
+            #@TestIssue           none
+            #@TestPurpose         Verify that verify-index command failed and
+                                  the output is correct.
+            #@TestPreamble        none
+            #@TestStep            Do a verify-index on multiple indexes with 
+                                  clean option.
+            #@TestStep            Check the output of the command.
+            #@TestPostamble       none
+            #@TestResult          Success if verify-index returns 1 and the 
+                                  output is correct.
+          -->
+          <testcase name="getTestCaseName
+          ('verify-index: clean option and multiple indexes')">
+            
+            <sequence>
+              
+              <call function="'testCase_Preamble'"/>
+              
+              <message>
+                'verify-index: clean option and multiple indexes'
+              </message>
+              
+              <call function="'verifyIndexWithScript'">
+                {
+                'dsBaseDN'      : 'dc=com' ,
+                'dsIndexList'   : [ 'uid', 'cn' ] ,
+                'dsClean'       : 'True' ,
+                'expectedRC'    : 1         
+                }                
+              </call>
+              
+              <script>
+                returnString = STAXResult[0][1]
+              </script>
+              
+              <script>
+                msg = 'Only one index at a time may be verified for cleanliness' 
+              </script>                 
+              <call function="'checktestString'">
+                { 
+                'returnString'   : returnString ,
+                'expectedString' : msg
+                }
+              </call>
+              
+              <call function="'testCase_Postamble'"/>
+              
+            </sequence>
+            
+          </testcase>     
+
+          <!--- Test Case information
+            #@TestMarker          verify-index check behavior tests
+            #@TestName            verify-index: check with a non existing index
+            #@TestIssue           none
+            #@TestPurpose         Verify that verify-index command failed and
+                                  the output is correct.
+            #@TestPreamble        none
+            #@TestStep            Do a verify-index on a non existing index.
+            #@TestStep            Check the output of the command.
+            #@TestPostamble       none
+            #@TestResult          Success if verify-index returns 1 and the 
+                                  output is correct.
+          -->
+          <testcase name="getTestCaseName('verify-index: non existing index')">
+            
+            <sequence>
+              
+              <call function="'testCase_Preamble'"/>
+              
+              <message>
+                'verify-index: non existing index'
+              </message>
+              
+              <call function="'verifyIndexWithScript'">
+                {
+                'dsBaseDN'      : 'dc=com' ,
+                'dsIndexList'   : [ 'myindex' ] ,
+                'expectedRC'    : 1        
+                }                
+              </call>
+              
+              <script>
+                returnString = STAXResult[0][1]
+              </script>
+              
+              <script>
+                msg1 = 'There is no index configured for'
+                msg2 = 'attribute type \'myindex\''
+              </script>                 
+              <call function="'checktestString'">
+                { 
+                'returnString'   : returnString ,
+                'expectedString' : '%s %s' % (msg1, msg2)
+                }
+              </call>
+              
+              <call function="'testCase_Postamble'"/>
+              
+            </sequence>
+            
+          </testcase>          
+          
+          <call function="'testSuite_Postamble'"/>
+          
+        </sequence>
+        
+      </block>
+      
+    </sequence>
+    
+  </function>
+  
+</stax>
diff --git a/opendj-sdk/opends/tests/shared/functions/tools.xml b/opendj-sdk/opends/tests/shared/functions/tools.xml
index c3defa2..2dce42e 100755
--- a/opendj-sdk/opends/tests/shared/functions/tools.xml
+++ b/opendj-sdk/opends/tests/shared/functions/tools.xml
@@ -978,7 +978,7 @@
   </function>
   
   <!-- This function perform a search operation in a LDIF file -->
-  <function name="ldifSearchWithScript">
+  <function name="ldifSearchWithScript" scope="local">
     <function-prolog>
       This function perform a search operation in a LDIF file
     </function-prolog>
@@ -1150,4 +1150,214 @@
       <return>STAXResult</return>
     </sequence>
   </function>
+  
+  <!-- This function execute the rebuild-index tool -->
+  <function name="rebuildIndexWithScript" scope="local">
+    <function-prolog>
+      This function execute the rebuild-index tool
+    </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="dsBaseDN" type="required">
+        <function-arg-description>
+          Specify a back-end supporting indexing and triggers a verification 
+          of all indexes in the scope of the provided baseDN
+        </function-arg-description>
+        <function-arg-property name="type" value="dn"/>
+      </function-arg-def>
+      <function-arg-def name="dsIndexList" type="optional">
+        <function-arg-description>
+          Specify a list of indexes
+          This should be passed as a python array like
+          [ 'uid','telephonenumber' ]
+        </function-arg-description>
+        <function-arg-property name="type" value="array"/>
+      </function-arg-def>
+      <function-arg-def name="dsHelp" type="optional">
+        <function-arg-description>
+          Display this usage information
+        </function-arg-description>
+        <function-arg-property name="type" value="option"/>
+      </function-arg-def>
+      <function-arg-def name="dsVersion" type="optional">
+        <function-arg-description>
+          Display Directory Server version information
+        </function-arg-description>
+        <function-arg-property name="type" value="option"/>
+      </function-arg-def>
+      <function-arg-def name="expectedRC" type="optional" default="0">
+        <function-arg-description>
+          Expected return code value. Default value is 0.
+          Wildcard 'noCheck' to not check the RC
+        </function-arg-description>
+        <function-arg-property name="type" value="integer"/>     
+      </function-arg-def>
+    </function-map-args>
+    <sequence>
+      <!-- Build the Command -->
+      <script>
+        STAFCmdParamsList=[]
+        STAFCmdParams=''
+        
+        if dsPath:
+          dsBinPath='%s/%s' % (dsPath,fileFolder) 
+          STAFCmd='%s/rebuild-index%s' % (dsBinPath,fileExt)
+          
+        if dsBaseDN:
+          STAFCmdParamsList.append('-b "%s"' % dsBaseDN)
+          
+        if dsIndexList:
+          STAFCmdParamsList.append('-i %s' % (' -i '.join(dsIndexList)))
+        
+        if dsHelp:
+          STAFCmdParamsList.append('-H')
+          
+        if dsVersion:
+          STAFCmdParamsList.append('-V')      
+          
+        STAFCmdParams=' '.join(STAFCmdParamsList)
+      </script>
+      
+      <call function="'runCommand'">
+        { 
+        'name'       : 'Rebuild index script',
+        'command'    : STAFCmd,
+        'arguments'  : STAFCmdParams,
+        'location'   : location,
+        'expectedRC' : expectedRC
+        }
+      </call>
+      
+      <return>STAXResult</return>
+    </sequence>
+  </function>
+
+  <!-- This function execute the verify-index tool -->  
+  <function name="verifyIndexWithScript" scope="local">
+    <function-prolog>
+      This function execute the verify-index tool
+    </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="dsBaseDN" type="required">
+        <function-arg-description>
+          Specify a back-end supporting indexing and triggers a verification 
+          of all indexes in the scope of the provided baseDN
+        </function-arg-description>
+        <function-arg-property name="type" value="dn"/>
+      </function-arg-def>
+      <function-arg-def name="dsIndexList" type="optional">
+        <function-arg-description>
+          Specify a list of indexes
+          This should be passed as a python array like
+          [ 'uid','telephonenumber' ]
+        </function-arg-description>
+        <function-arg-property name="type" value="array"/>
+      </function-arg-def>
+      <function-arg-def name="dsClean" type="optional">
+        <function-arg-description>
+          Verify that an index is clean
+        </function-arg-description>
+        <function-arg-property name="type" value="option"/>
+      </function-arg-def>
+      <function-arg-def name="dsCountErrors" type="optional">
+        <function-arg-description>
+          Count the number of errors found during the verification 
+        </function-arg-description>
+        <function-arg-property name="type" value="option"/>
+      </function-arg-def>
+      <function-arg-def name="dsHelp" type="optional">
+        <function-arg-description>
+          Display this usage information
+        </function-arg-description>
+        <function-arg-property name="type" value="option"/>
+      </function-arg-def>
+      <function-arg-def name="dsVersion" type="optional">
+        <function-arg-description>
+          Display Directory Server version information
+        </function-arg-description>
+        <function-arg-property name="type" value="option"/>
+      </function-arg-def>
+      <function-arg-def name="expectedRC" type="optional" default="0">
+        <function-arg-description>
+          Expected return code value. Default value is 0.
+          Wildcard 'noCheck' to not check the RC
+        </function-arg-description>
+        <function-arg-property name="type" value="integer"/>     
+      </function-arg-def>
+    </function-map-args>
+    <sequence>
+      <!-- Build the Command -->
+      <script>
+        STAFCmdParamsList=[]
+        STAFCmdParams=''
+        
+        if dsPath:
+          dsBinPath='%s/%s' % (dsPath,fileFolder) 
+          STAFCmd='%s/verify-index%s' % (dsBinPath,fileExt)
+          
+        if dsBaseDN:
+          STAFCmdParamsList.append('-b "%s"' % dsBaseDN)
+          
+        if dsIndexList:
+          STAFCmdParamsList.append('-i %s' % (' -i '.join(dsIndexList)))
+          
+        if dsClean:
+          STAFCmdParamsList.append('-c')
+          
+        if dsCountErrors:
+          STAFCmdParamsList.append('--countErrors ')
+        
+        if dsHelp:
+          STAFCmdParamsList.append('-H')
+          
+        if dsVersion:
+          STAFCmdParamsList.append('-V')      
+          
+        STAFCmdParams=' '.join(STAFCmdParamsList)
+      </script>
+      
+      <call function="'runCommand'">
+        { 
+        'name'      : 'Verify index script',
+        'command'    : STAFCmd,
+        'arguments'  : STAFCmdParams,
+        'location'   : location,
+        'expectedRC' : expectedRC
+        }
+      </call>
+      
+      <return>STAXResult</return>
+    </sequence>
+  </function>  
 </stax>

--
Gitblit v1.10.0