From ad4d22fe825739e5d31cb8dd0364e2f1a81e6e2e Mon Sep 17 00:00:00 2001
From: ugaston <ugaston@localhost>
Date: Thu, 24 Jan 2008 18:24:14 +0000
Subject: [PATCH] New testcases for indexes testsuite (for Issue #1480)
---
opends/tests/functional-tests/testcases/indexes/after-add.filters | 2
opends/tests/functional-tests/testcases/indexes/after-remove.filters | 2
opends/tests/shared/functions/dsadm.xml | 197 +++++++++++++++++
opends/tests/functional-tests/testcases/indexes/before-remove.filters | 2
opends/tests/functional-tests/testcases/indexes/indexes.xml | 438 +++++++++++++++++++++++++++++----------
opends/tests/functional-tests/testcases/indexes/before-add.filters | 2
6 files changed, 520 insertions(+), 123 deletions(-)
diff --git a/opends/tests/functional-tests/testcases/indexes/after-add.filters b/opends/tests/functional-tests/testcases/indexes/after-add.filters
index ae1e349..9bccb75 100644
--- a/opends/tests/functional-tests/testcases/indexes/after-add.filters
+++ b/opends/tests/functional-tests/testcases/indexes/after-add.filters
@@ -26,7 +26,7 @@
uid subString uid=j* 0 INDEXED
uid subString (uid=j*) 0 INDEXED
l presence l=* 0 INDEXED
-l presence l=* 0 INDEXED
+l presence (l=*) 0 INDEXED
l equality l=Cupertino 0 INDEXED
l equality (l=Cupertino) 0 INDEXED
l approximate (l~=ertino) 0 NOT-INDEXED
diff --git a/opends/tests/functional-tests/testcases/indexes/after-remove.filters b/opends/tests/functional-tests/testcases/indexes/after-remove.filters
index 28fcb33..be2988a 100644
--- a/opends/tests/functional-tests/testcases/indexes/after-remove.filters
+++ b/opends/tests/functional-tests/testcases/indexes/after-remove.filters
@@ -26,7 +26,7 @@
uid subString uid=j* 0 INDEXED
uid subString (uid=j*) 0 INDEXED
l presence l=* 0 NOT-INDEXED
-l presence l=* 0 NOT-INDEXED
+l presence (l=*) 0 NOT-INDEXED
l equality l=Cupertino 0 NOT-INDEXED
l equality (l=Cupertino) 0 NOT-INDEXED
l approximate (l~=ertino) 0 NOT-INDEXED
diff --git a/opends/tests/functional-tests/testcases/indexes/before-add.filters b/opends/tests/functional-tests/testcases/indexes/before-add.filters
index 28fcb33..be2988a 100644
--- a/opends/tests/functional-tests/testcases/indexes/before-add.filters
+++ b/opends/tests/functional-tests/testcases/indexes/before-add.filters
@@ -26,7 +26,7 @@
uid subString uid=j* 0 INDEXED
uid subString (uid=j*) 0 INDEXED
l presence l=* 0 NOT-INDEXED
-l presence l=* 0 NOT-INDEXED
+l presence (l=*) 0 NOT-INDEXED
l equality l=Cupertino 0 NOT-INDEXED
l equality (l=Cupertino) 0 NOT-INDEXED
l approximate (l~=ertino) 0 NOT-INDEXED
diff --git a/opends/tests/functional-tests/testcases/indexes/before-remove.filters b/opends/tests/functional-tests/testcases/indexes/before-remove.filters
index ae1e349..9bccb75 100644
--- a/opends/tests/functional-tests/testcases/indexes/before-remove.filters
+++ b/opends/tests/functional-tests/testcases/indexes/before-remove.filters
@@ -26,7 +26,7 @@
uid subString uid=j* 0 INDEXED
uid subString (uid=j*) 0 INDEXED
l presence l=* 0 INDEXED
-l presence l=* 0 INDEXED
+l presence (l=*) 0 INDEXED
l equality l=Cupertino 0 INDEXED
l equality (l=Cupertino) 0 INDEXED
l approximate (l~=ertino) 0 NOT-INDEXED
diff --git a/opends/tests/functional-tests/testcases/indexes/indexes.xml b/opends/tests/functional-tests/testcases/indexes/indexes.xml
index b3b40e2..6281e07 100644
--- a/opends/tests/functional-tests/testcases/indexes/indexes.xml
+++ b/opends/tests/functional-tests/testcases/indexes/indexes.xml
@@ -33,9 +33,12 @@
<script>
CurrentTestPath={'group':'indexes','suite':'indexes'}
envAlreadyLoaded='true'
- _setupSteps=['testGroup_Preamble','testSuite_Preamble','indexes_setup']
- _testSteps=['indexes_search','indexes_add','indexes_remove']
- _cleanupSteps=['indexes_cleanup','testSuite_Postamble','testGroup_Postamble']
+ _setupSteps=['testGroup_Preamble','testSuite_Preamble',
+ 'indexes_setup']
+ _testSteps=['indexes_search', 'indexes_dynamic_modify',
+ 'indexes_dynamic_add', 'indexes_remove', 'indexes_add']
+ _cleanupSteps=['indexes_cleanup','testSuite_Postamble',
+ 'testGroup_Postamble']
</script>
<!---
#@TestSuiteName Indexes
@@ -55,10 +58,14 @@
</iterate>
</sequence>
<catch exception="'STAXException.Topology.CreationException'">
- <message log="1" level="'fatal'">'Could not create the topology. Bailing out.'</message>
+ <message log="1" level="'fatal'">
+ 'Could not create the topology. Bailing out.'
+ </message>
</catch>
<catch exception="'STAXException.Topology.StartException'">
- <message log="1" level="'fatal'">'Could not start at least one server in the topology. Bailing out.'</message>
+ <message log="1" level="'fatal'">
+ 'Could not start at least one server in the topology.Bailing out.'
+ </message>
</catch>
<finally>
<iterate in="_cleanupSteps" var="_cleanupStep">
@@ -119,20 +126,22 @@
<call function="'runFunction'">
{ 'functionName' : 'modifyIndex',
'functionException' : 'LDAP.ModifyException',
- 'functionFailureTC' : '%s: %s: %s' % (CurrentTestPath['group'], CurrentTestPath['suite'], STAXCurrentBlock ) ,
- 'functionMessage' : 'Adding substring index to attribute uid' ,
- 'functionArguments' : { 'operation' : 'add' ,
- 'indexAttribute' : 'uid' ,
- 'indexProperty' : 'index-type' ,
+ 'functionFailureTC' : '%s: %s: %s' % (CurrentTestPath['group'],
+ CurrentTestPath['suite'],
+ STAXCurrentBlock ) ,
+ 'functionMessage' : 'Adding substring index to attribute uid',
+ 'functionArguments' : { 'operation' : 'add',
+ 'indexAttribute' : 'uid',
+ 'indexProperty' : 'index-type',
'indexPropertyValue' : 'substring'
}
}
</call>
<call function="'runFunction'">
- { 'functionName' : 'StopDsWithScript' ,
- 'functionException' : 'CLI.stop-ds' ,
+ { 'functionName' : 'StopDsWithScript',
+ 'functionException' : 'CLI.stop-ds',
'functionFailureTC' : 'Indexes - Modify' ,
- 'functionArguments' : { 'location' : STAF_REMOTE_HOSTNAME ,
+ 'functionArguments' : { 'location' : STAF_REMOTE_HOSTNAME,
'dsHost' : DIRECTORY_INSTANCE_HOST,
'dsPort' : DIRECTORY_INSTANCE_PORT,
'dsBindDN' : DIRECTORY_INSTANCE_DN ,
@@ -144,12 +153,13 @@
'functionException' : 'CLI.RebuildIndex' ,
'functionFailureTC' : 'Indexes - Modify' ,
'functionArguments' : { 'baseDN' : DIRECTORY_INSTANCE_SFX ,
- 'attributes' : [ 'uid' ] }
+ 'attributes' : [ 'uid' ]
+ }
}
</call>
<call function="'runFunction'">
{ 'functionName' : 'StartDsWithScript',
- 'functionException' : 'CLI.start-ds' ,
+ 'functionException' : 'CLI.start-ds',
'functionFailureTC' : 'Indexes - Modify' ,
'functionArguments' : { 'location' : STAF_REMOTE_HOSTNAME }
}
@@ -159,31 +169,108 @@
</call>
</sequence>
<catch exception="'STAXException.LDAP.ModifyException'">
- <message log="1" level="'fatal'">'Fatal Error: Failed to alter index for attribute uid'</message>
+ <message log="1" level="'fatal'">
+ 'Fatal Error: Failed to alter index for attribute uid'
+ </message>
</catch>
<catch exception="'STAXException.CLI.RebuildIndex'">
- <message log="1" level="'fatal'">'Fatal Error: Failed to rebuild index for attribute uid'</message>
+ <message log="1" level="'fatal'">
+ 'Fatal Error: Failed to rebuild index for attribute uid'
+ </message>
</catch>
</try>
</sequence>
</block>
</function>
- <function name="indexes_add" scope="local">
+
+
+ <function name="indexes_dynamic_modify" scope="local">
<!--
- This test does a bunch of searches on the
- and then verifies that it worked
+ This test alters dynamically the uid default index so that it does
+ subString search and then verifies that it worked
#@TestMarker indexes
- #@TestName indexes_add
- #@TestIssue TODO: look up the issue in issue tracker
- #@TestPurpose check if the user can add her own indexes
+ #@TestName indexes_dynamic_modify
+ #@TestIssue 1480
+ #@TestPurpose harden the default indexes
#@TestPreamble none
- #@TestStep iterate through filters prior to adding indexes
- #@TestStep add the indexes
- #@TestStep iterate through filters after to adding indexes
+ #@TestStep iterate through file search.filters
#@TestPostamble none
#@TestResult Success if entry are indexed correctly
-->
+ <block name="'Modify'">
+ <sequence>
+ <try>
+ <sequence>
+ <call function="'loopThroughFilters'">
+ { 'filters' : 'before-modify' }
+ </call>
+ <call function="'runFunction'">
+ { 'functionName' : 'modifyIndex',
+ 'functionException' : 'LDAP.ModifyException',
+ 'functionFailureTC' : '%s: %s: %s' % (CurrentTestPath['group'],
+ CurrentTestPath['suite'],
+ STAXCurrentBlock ) ,
+ 'functionMessage' : 'Adding substring index to attribute uid',
+ 'functionArguments' : { 'operation' : 'add',
+ 'indexAttribute' : 'uid',
+ 'indexProperty' : 'index-type',
+ 'indexPropertyValue' : 'substring'
+ }
+ }
+ </call>
+ <call function="'runFunction'">
+ { 'functionName' : 'rebuildIndexTask' ,
+ 'functionException' : 'CLI.RebuildIndex' ,
+ 'functionFailureTC' : 'Indexes - Dynamic Modify' ,
+ 'functionArguments' :
+ { 'location' : STAF_REMOTE_HOSTNAME,
+ 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST,
+ 'dsInstancePort' : DIRECTORY_INSTANCE_PORT,
+ 'dsInstanceDn' : DIRECTORY_INSTANCE_DN,
+ 'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD,
+ 'taskID' : 'rebuild uid index task',
+ 'baseDN' : DIRECTORY_INSTANCE_SFX ,
+ 'attributes' : [ 'uid' ]
+ }
+ }
+ </call>
+ <call function="'loopThroughFilters'">
+ { 'filters' : 'after-modify' }
+ </call>
+ </sequence>
+ <catch exception="'STAXException.LDAP.ModifyException'">
+ <message log="1" level="'fatal'">
+ 'Fatal Error: Failed to alter index for attribute uid'
+ </message>
+ </catch>
+ <catch exception="'STAXException.CLI.RebuildIndex'">
+ <message log="1" level="'fatal'">
+ 'Fatal Error: Failed to rebuild index for attribute uid'
+ </message>
+ </catch>
+ </try>
+ </sequence>
+ </block>
+ </function>
+
+
+
+ <function name="indexes_add" scope="local">
+ <!--
+ This test adds a new presence and equality index for l attribute
+ and then verifies that it worked
+ #@TestMarker indexes
+ #@TestName indexes_add
+ #@TestIssue TODO: look up the issue in issue tracker
+ #@TestPurpose check if the user can add her own indexes
+ #@TestPreamble none
+ #@TestStep iterate through filters prior to adding indexes
+ #@TestStep add the indexes
+ #@TestStep iterate through filters after to adding indexes
+ #@TestPostamble none
+ #@TestResult Success if entry are indexed correctly
+ -->
<block name="'Add'">
<sequence>
<try>
@@ -192,21 +279,25 @@
{ 'filters' : 'before-add' }
</call>
<call function="'runFunction'">
- { 'functionName' : 'addIndex' ,
- 'functionException' : 'LDAP.AddIndexException' ,
- 'functionFailureTC' : 'Indexes - Add' ,
- 'functionMessage' : 'Adding presence and equality index to attribute st',
- 'functionArguments' : { 'indexAttribute' : 'l' ,
- 'indexTypes' : [ 'presence', 'equality' ]
+ { 'functionName' : 'addIndex',
+ 'functionException' : 'LDAP.AddIndexException',
+ 'functionFailureTC' : 'Indexes - Add',
+ 'functionMessage' : 'Adding presence and equality index to \
+ attribute l',
+ 'functionArguments' : { 'indexAttribute' : 'l',
+ 'indexTypes' : [ 'presence',
+ 'equality' ]
}
}
</call>
<call function="'runFunction'">
- { 'functionName' : 'StopDsWithScript' ,
- 'functionException' : 'CLI.stop-ds' ,
- 'functionFailureTC' : '%s: %s: %s' % (CurrentTestPath['group'], CurrentTestPath['suite'], STAXCurrentBlock ) ,
- 'functionArguments' : { 'location' : STAF_REMOTE_HOSTNAME ,
+ { 'functionName' : 'StopDsWithScript',
+ 'functionException' : 'CLI.stop-ds',
+ 'functionFailureTC' : '%s: %s: %s' % (CurrentTestPath['group'],
+ CurrentTestPath['suite'],
+ STAXCurrentBlock ) ,
+ 'functionArguments' : { 'location' : STAF_REMOTE_HOSTNAME,
'dsHost' : DIRECTORY_INSTANCE_HOST,
'dsPort' : DIRECTORY_INSTANCE_PORT,
'dsBindDN' : DIRECTORY_INSTANCE_DN ,
@@ -225,7 +316,7 @@
</call>
<call function="'runFunction'">
{ 'functionName' : 'StartDsWithScript',
- 'functionException' : 'CLI.start-ds' ,
+ 'functionException' : 'CLI.start-ds',
'functionFailureTC' : '%s: %s: ' ,
'functionArguments' : { 'location' : STAF_REMOTE_HOSTNAME }
}
@@ -235,31 +326,107 @@
</call>
</sequence>
<catch exception="'STAXException.LDAP.AddIndexException'">
- <message log="1" level="'fatal'">'Fatal Error: Failed to add index for attribute l'</message>
+ <message log="1" level="'fatal'">
+ 'Fatal Error: Failed to add index for attribute l'
+ </message>
</catch>
<catch exception="'STAXException.CLI.RebuildIndex'">
- <message log="1" level="'fatal'">'Fatal Error: Failed to rebuild index for attribute l'</message>
+ <message log="1" level="'fatal'">
+ 'Fatal Error: Failed to rebuild index for attribute l'
+ </message>
</catch>
</try>
</sequence>
</block>
</function>
+
+
+ <function name="indexes_dynamic_add" scope="local">
+ <!--
+ This test adds dynamically a new presence and equality index for l
+ attribute and then verifies that it worked
+ #@TestMarker indexes
+ #@TestName indexes_dynamic_add
+ #@TestIssue 1480
+ #@TestPurpose check if the user can add her own indexes
+ dynamically
+ #@TestPreamble none
+ #@TestStep iterate through filters prior to adding indexes
+ #@TestStep add the indexes
+ #@TestStep iterate through filters after to adding indexes
+ #@TestPostamble none
+ #@TestResult Success if entry are indexed correctly
+ -->
+ <block name="'Add'">
+ <sequence>
+ <try>
+ <sequence>
+ <call function="'loopThroughFilters'">
+ { 'filters' : 'before-add' }
+ </call>
+ <call function="'runFunction'">
+ { 'functionName' : 'addIndex',
+ 'functionException' : 'LDAP.AddIndexException',
+ 'functionFailureTC' : 'Indexes - Add',
+ 'functionMessage' : 'Adding presence and equality index to \
+ attribute l',
+ 'functionArguments' : { 'indexAttribute' : 'l',
+ 'indexTypes' : [ 'presence',
+ 'equality' ]
+ }
+ }
+ </call>
+ <call function="'runFunction'">
+ { 'functionName' : 'rebuildIndexTask' ,
+ 'functionException' : 'CLI.RebuildIndex' ,
+ 'functionFailureTC' : 'Indexes - Dynamic Add' ,
+ 'functionArguments' :
+ { 'location' : STAF_REMOTE_HOSTNAME,
+ 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST,
+ 'dsInstancePort' : DIRECTORY_INSTANCE_PORT,
+ 'dsInstanceDn' : DIRECTORY_INSTANCE_DN,
+ 'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD,
+ 'taskID' : 'rebuild l index task',
+ 'baseDN' : DIRECTORY_INSTANCE_SFX ,
+ 'attributes' : [ 'l' ]
+ }
+ }
+ </call>
+ <call function="'loopThroughFilters'">
+ { 'filters' : 'after-add' }
+ </call>
+ </sequence>
+ <catch exception="'STAXException.LDAP.AddIndexException'">
+ <message log="1" level="'fatal'">
+ 'Fatal Error: Failed to add index for attribute l'
+ </message>
+ </catch>
+ <catch exception="'STAXException.CLI.RebuildIndex'">
+ <message log="1" level="'fatal'">
+ 'Fatal Error: Failed to rebuild index for attribute l'
+ </message>
+ </catch>
+ </try>
+ </sequence>
+ </block>
+ </function>
+
<function name="indexes_remove" scope="local">
<!--
This test does a bunch of searches on the
and then verifies that it worked
- #@TestMarker indexes
- #@TestName indexes_remove
- #@TestIssue TODO: look up the issue in issue tracker
- #@TestPurpose Check if the user can remove indexes
- #@TestPreamble none
- #@TestStep iterate through filters prior to removing index
- #@TestStep remove index
- #@TestStep iterate through filters after to removing index
- #@TestPostamble none
- #@TestResult Success if entry are indexed as expected
+ #@TestMarker indexes
+ #@TestName indexes_remove
+ #@TestIssue TODO: look up the issue in issue tracker
+ #@TestPurpose Check if the user can remove indexes
+ #@TestPreamble none
+ #@TestStep iterate through filters prior to removing index
+ #@TestStep remove index
+ #@TestStep iterate through filters after to removing index
+ #@TestPostamble none
+ #@TestResult Success if entry are indexed as expected
-->
<block name="'Remove'">
<sequence>
@@ -269,9 +436,11 @@
{ 'filters' : 'before-remove' }
</call>
<call function="'runFunction'">
- { 'functionName' : 'removeIndex' ,
- 'functionException' : 'LDAP.RemoveIndexException' ,
- 'functionFailureTC' : '%s: %s: %s' % (CurrentTestPath['group'], CurrentTestPath['suite'], STAXCurrentBlock),
+ { 'functionName' : 'removeIndex',
+ 'functionException' : 'LDAP.RemoveIndexException',
+ 'functionFailureTC' : '%s: %s: %s' % (CurrentTestPath['group'],
+ CurrentTestPath['suite'],
+ STAXCurrentBlock),
'functionMessage' : 'Removing index on attribute l' ,
'functionArguments' : { 'indexAttribute' : 'l' }
}
@@ -281,7 +450,9 @@
</call>
</sequence>
<catch exception="'STAXException.LDAP.RemoveIndexException'">
- <message log="1" level="'fatal'">'Fatal Error: Failed to remove index for attribute l'</message>
+ <message log="1" level="'fatal'">
+ 'Fatal Error: Failed to remove index for attribute l'
+ </message>
</catch>
</try>
</sequence>
@@ -292,16 +463,16 @@
<!--
This test does a bunch of searches on the
and then verifies that it worked
- #@TestMarker indexes
- #@TestName indexes_remove
- #@TestIssue TODO: look up the issue in issue tracker
- #@TestPurpose Check if the user can remove indexes
- #@TestPreamble none
- #@TestStep iterate through filters prior to removing index
- #@TestStep remove index
- #@TestStep iterate through filters after to removing index
- #@TestPostamble none
- #@TestResult Success if entry are indexed as expected
+ #@TestMarker indexes
+ #@TestName indexes_remove
+ #@TestIssue TODO: look up the issue in issue tracker
+ #@TestPurpose Check if the user can remove indexes
+ #@TestPreamble none
+ #@TestStep iterate through filters prior to removing index
+ #@TestStep remove index
+ #@TestStep iterate through filters after to removing index
+ #@TestPostamble none
+ #@TestResult Success if entry are indexed as expected
-->
<block name="'Entry_Limit'">
<sequence>
@@ -311,13 +482,16 @@
{ 'filters' : 'before-entry-limit' }
</call>
<call function="'runFunction'">
- { 'functionName' : 'modifyIndex' ,
- 'functionException' : 'LDAP.ModifyIndexException' ,
- 'functionFailureTC' : '%s: %s: %s' % (CurrentTestPath['group'], CurrentTestPath['suite'], STAXCurrentBlock),
- 'functionMessage' : 'Modify index entry limit on attribute uid' ,
- 'functionArguments' : { 'operation' : 'set' ,
- 'indexAttribute' : 'uid' ,
- 'indexProperty' : 'index-entry-limit' ,
+ { 'functionName' : 'modifyIndex',
+ 'functionException' : 'LDAP.ModifyIndexException',
+ 'functionFailureTC' : '%s: %s: %s' % (CurrentTestPath['group'],
+ CurrentTestPath['suite'],
+ STAXCurrentBlock),
+ 'functionMessage' : 'Modify index entry limit on attribute \
+ uid' ,
+ 'functionArguments' : { 'operation' : 'set',
+ 'indexAttribute' : 'uid',
+ 'indexProperty' : 'index-entry-limit',
'indexPropertyValue' : '3'
}
}
@@ -327,7 +501,9 @@
</call>
</sequence>
<catch exception="'STAXException.LDAP.RemoveIndexException'">
- <message log="1" level="'fatal'">'Fatal Error: Failed to remove index for attribute l'</message>
+ <message log="1" level="'fatal'">
+ 'Fatal Error: Failed to remove index for attribute l'
+ </message>
</catch>
</try>
</sequence>
@@ -338,16 +514,16 @@
<!--
This test does a bunch of searches on the
and then verifies that it worked
- #@TestMarker indexes
- #@TestName indexes_remove
- #@TestIssue TODO: look up the issue in issue tracker
- #@TestPurpose Check if the user can remove indexes
- #@TestPreamble none
- #@TestStep iterate through filters prior to removing index
- #@TestStep remove index
- #@TestStep iterate through filters after to removing index
- #@TestPostamble none
- #@TestResult Success if entry are indexed as expected
+ #@TestMarker indexes
+ #@TestName indexes_vlv_add
+ #@TestIssue TODO: look up the issue in issue tracker
+ #@TestPurpose Check if the user can remove indexes
+ #@TestPreamble none
+ #@TestStep iterate through filters prior to removing index
+ #@TestStep remove index
+ #@TestStep iterate through filters after to removing index
+ #@TestPostamble none
+ #@TestResult Success if entry are indexed as expected
-->
<block name="'Entry_Limit'">
<sequence>
@@ -357,13 +533,16 @@
{ 'filters' : 'before-entry-limit' }
</call>
<call function="'runFunction'">
- { 'functionName' : 'modifyIndex' ,
- 'functionException' : 'LDAP.ModifyIndexException' ,
- 'functionFailureTC' : '%s: %s: %s' % (CurrentTestPath['group'], CurrentTestPath['suite'], STAXCurrentBlock),
- 'functionMessage' : 'Modify index entry limit on attribute uid' ,
- 'functionArguments' : { 'operation' : 'set' ,
- 'indexAttribute' : 'uid' ,
- 'indexProperty' : 'index-entry-limit' ,
+ { 'functionName' : 'modifyIndex',
+ 'functionException' : 'LDAP.ModifyIndexException',
+ 'functionFailureTC' : '%s: %s: %s' % (CurrentTestPath['group'],
+ CurrentTestPath['suite'],
+ STAXCurrentBlock),
+ 'functionMessage' : 'Modify index entry limit on attribute \
+ uid' ,
+ 'functionArguments' : { 'operation' : 'set',
+ 'indexAttribute' : 'uid',
+ 'indexProperty' : 'index-entry-limit' ,
'indexPropertyValue' : '3'
}
}
@@ -373,7 +552,9 @@
</call>
</sequence>
<catch exception="'STAXException.LDAP.RemoveIndexException'">
- <message log="1" level="'fatal'">'Fatal Error: Failed to remove index for attribute l'</message>
+ <message log="1" level="'fatal'">
+ 'Fatal Error: Failed to remove index for attribute l'
+ </message>
</catch>
</try>
</sequence>
@@ -388,8 +569,9 @@
<sequence>
<script>
class indexTest:
- "Describes an index test with indexed attribute, filter to test with and expected behaviour"
- def __init__(self, attribute, testName, filter, expectedValue, isIndexed):
+ "Describes an index test with indexed attribute, filter to test with \
+ and expected behaviour"
+ def __init__(self, attribute,testName,filter,expectedValue,isIndexed):
self.attribute = attribute
self.name = testName
self.filter = filter
@@ -437,7 +619,8 @@
continue
else:
testLine = line.split(' ')
- indexTests.append(indexTest(testLine[0], testLine[1], testLine[2], testLine[3], testLine[4]))
+ indexTests.append(indexTest(testLine[0], testLine[1], testLine[2],
+ testLine[3], testLine[4]))
indexTestNumber=0
previousTestName=''
@@ -452,33 +635,47 @@
testNumber=0
</script>
- <testcase name="'%s: %d.%s: %03d-%03d.%s: %s%02d' % ( CurrentTestPath['group'], len(_testSteps)-_testStepNumber, filters, len(indexTests)-indexTestNumber, indexTestNumber, test.getAttribute(), test.getName(), testNumber)" >
+ <testcase name="'%s: %d.%s: %03d-%03d.%s: %s%02d'
+ % ( CurrentTestPath['group'], len(_testSteps)-_testStepNumber,
+ filters, len(indexTests)-indexTestNumber, indexTestNumber,
+ test.getAttribute(), test.getName(), testNumber)" >
<sequence>
<call function="'testCase_Preamble'" />
<message log="1" level="'trace'">
- 'Searching attribute [%s] with filter[%s]' % (test.getAttribute(),test.getFilter())
+ 'Searching attribute [%s] with filter[%s]' \
+ % (test.getAttribute(),test.getFilter())
</message>
<call function="'SearchObject'">
- { 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST ,
- 'dsInstancePort' : DIRECTORY_INSTANCE_PORT ,
- 'dsInstanceDn' : DIRECTORY_INSTANCE_DN ,
- 'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD ,
- 'dsBaseDN' : 'ou=People,dc=example,%s' % DIRECTORY_INSTANCE_SFX ,
- 'dsFilter' : '%s' % test.getFilter() ,
- 'attributes' : 'debugsearchindex' ,
- 'expectedRC' : 'noCheck' }
+ { 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST,
+ 'dsInstancePort' : DIRECTORY_INSTANCE_PORT,
+ 'dsInstanceDn' : DIRECTORY_INSTANCE_DN,
+ 'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD,
+ 'dsBaseDN' : 'ou=People,dc=example,%s' \
+ % DIRECTORY_INSTANCE_SFX ,
+ 'dsFilter' : '%s' % test.getFilter(),
+ 'attributes' : 'debugsearchindex',
+ 'expectedRC' : 'noCheck'
+ }
</call>
<script>
searchReturnCode, searchResultString = STAXResult[0]
# chop off the first line that contains the dn
- searchResultString = re.compile(r'^dn:.*\n?').sub('',searchResultString)
+ searchResultString = re.compile(r'^dn:.*\n?').sub('',
+ searchResultString)
# join multiple lines into a single one
- searchResultString = re.compile(r'[ \t]*\r?\n[ \t]*').sub('',searchResultString)
+ searchResultString = re.compile(r'[ \t]*\r?\n[ \t]*').sub('',
+ searchResultString)
srt=searchResultString.split('[')[1]
- if (str(searchReturnCode) == str(test.getRC())) and srt.startswith(test.getSearchString()):
+ if (str(searchReturnCode) == str(test.getRC())) and \
+ srt.startswith(test.getSearchString()):
test.pass()
</script>
- <message level="'trace'">'%s\nsearchReturnCode=[%s]\nldapsearch return string=[%s]\nchunk to parse=[%s]\nstring looked for=[%s]' % (test.desc(), searchReturnCode, searchResultString, srt, test.getSearchString())</message>
+ <message level="'trace'">
+ '%s\nsearchReturnCode=[%s]\nldapsearch return \
+ string=[%s]\nchunk to parse=[%s]\nstring looked for=[%s]' \
+ % (test.desc(), searchReturnCode, searchResultString, srt,
+ test.getSearchString())
+ </message>
<tcstatus result="test.getStatus()" />
<call function="'testCase_Postamble'" />
<script>
@@ -495,24 +692,26 @@
<function name="indexes_setup">
<sequence>
<call function="'runFunction'">
- { 'functionName' : 'createTopology' ,
+ { 'functionName' : 'createTopology',
'functionMessage' : 'Create DS topology as described in config.py',
- 'functionException' : 'Topology.CreationException' ,
+ 'functionException' : 'Topology.CreationException',
'functionArguments' : { 'initialiseInstance' : True }
}
</call>
<call function="'runFunction'">
{ 'functionName' : 'StartDsWithScript' ,
- 'functionMessage' : 'Start DS to run on port %s' % (DIRECTORY_INSTANCE_PORT) ,
+ 'functionMessage' : 'Start DS to run on port %s' \
+ % (DIRECTORY_INSTANCE_PORT) ,
'functionArguments' : { 'location' : STAF_REMOTE_HOSTNAME }
}
</call>
<call function="'runFunction'">
- { 'functionName' : 'isAlive' ,
- 'functionMessage' : 'Checking if the server is available' ,
- 'functionException' : 'Topology.StartException' ,
- 'functionArguments' : { 'noOfLoops' : 5 ,
- 'noOfMilliSeconds' : 2000 }
+ { 'functionName' : 'isAlive',
+ 'functionMessage' : 'Checking if the server is available',
+ 'functionException' : 'Topology.StartException',
+ 'functionArguments' : { 'noOfLoops' : 5,
+ 'noOfMilliSeconds' : 2000
+ }
}
</call>
</sequence>
@@ -523,11 +722,12 @@
<sequence>
<call function="'runFunction'">
{ 'functionName' : 'StopDsWithScript' ,
- 'functionMessage' : 'Stop DS running on port %s' % (DIRECTORY_INSTANCE_PORT),
- 'functionArguments' : { 'location' : STAF_REMOTE_HOSTNAME ,
- 'dsHost' : DIRECTORY_INSTANCE_HOST ,
- 'dsPort' : DIRECTORY_INSTANCE_PORT ,
- 'dsBindDN' : DIRECTORY_INSTANCE_DN ,
+ 'functionMessage' : 'Stop DS running on port %s' \
+ % (DIRECTORY_INSTANCE_PORT),
+ 'functionArguments' : { 'location' : STAF_REMOTE_HOSTNAME,
+ 'dsHost' : DIRECTORY_INSTANCE_HOST,
+ 'dsPort' : DIRECTORY_INSTANCE_PORT,
+ 'dsBindDN' : DIRECTORY_INSTANCE_DN,
'dsBindPwd' : DIRECTORY_INSTANCE_PSWD }
}
</call>
diff --git a/opends/tests/shared/functions/dsadm.xml b/opends/tests/shared/functions/dsadm.xml
index 5db6a0d..f33f7e4 100755
--- a/opends/tests/shared/functions/dsadm.xml
+++ b/opends/tests/shared/functions/dsadm.xml
@@ -3562,5 +3562,202 @@
</sequence>
</function>
+
+
+ <!-- Rebuild index Task Function -->
+ <function name="rebuildIndexTask">
+ <function-prolog>
+ This function performs an on line rebuild index task
+ </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="pathname"/>
+ </function-arg-def>
+ <function-arg-def name="dsInstanceHost" type="optional">
+ <function-arg-description>
+ Directory server host name
+ </function-arg-description>
+ <function-arg-property name="type" value="integer"/>
+ </function-arg-def>
+ <function-arg-def name="dsInstancePort" type="optional">
+ <function-arg-description>
+ Directory server port number
+ </function-arg-description>
+ <function-arg-property name="type" value="integer"/>
+ </function-arg-def>
+ <function-arg-def name="dsInstanceDn" type="optional">
+ <function-arg-description>
+ Bind DN
+ </function-arg-description>
+ <function-arg-property name="type" value="dn"/>
+ </function-arg-def>
+ <function-arg-def name="dsInstancePswd" type="optional">
+ <function-arg-description>
+ Bind password
+ </function-arg-description>
+ </function-arg-def>
+ <function-arg-def name="taskID" type="optional">
+ <function-arg-description>
+ The identifier for the task
+ </function-arg-description>
+ <function-arg-property name="type" value="string"/>
+ </function-arg-def>
+ <function-arg-def name="baseDN" type="required">
+ <function-arg-description>
+ The base Dn for which the index will be rebuilt
+ </function-arg-description>
+ <function-arg-property name="type" value="dn"/>
+ </function-arg-def>
+ <function-arg-def name="attributes" type="required">
+ <function-arg-description>
+ List of the attributes to re-index: e.g. ['cn','l']
+ </function-arg-description>
+ <function-arg-property name="type" value="list"/>
+ </function-arg-def>
+ <function-arg-def name="maxThreads"
+ type="optional"
+ default="5">
+ <function-arg-description>
+ Number of threads that should be used for the rebuild operation
+ </function-arg-description>
+ <function-arg-property name="type" value="integer"/>
+ </function-arg-def>
+ </function-map-args>
+
+ <sequence>
+
+ <script>
+ myLocation=location
+ myPath=dsPath
+ taskLdifFile='rebuildIndex-task.ldif'
+ taskLdif='%s/../%s/%s' % (dsPath,relativeDataDir,taskLdifFile)
+ tmpTaskLdif='%s/%s' % (logsTempDir,taskLdifFile)
+ taskDN='ds-task-id=%s,cn=Scheduled Tasks,cn=Tasks' % taskID
+ </script>
+
+ <!-- Build the restore task configuration object -->
+ <script>
+ ldifLines=[]
+ ldifLines.append('dn: %s' % taskDN)
+ ldifLines.append('objectclass: top')
+ ldifLines.append('objectclass: ds-task')
+ ldifLines.append('objectclass: ds-task-rebuild')
+ ldifLines.append('ds-task-class-name: org.opends.server.tasks.RebuildTask')
+ ldifLines.append('ds-task-id: %s' % taskID)
+
+ ldifLines.append('ds-task-rebuild-base-dn: %s' % baseDN )
+ ldifLines.append('ds-task-rebuild-max-threads: %s' % maxThreads )
+
+ for indexType in attributes:
+ ldifLines.append('ds-task-rebuild-index: %s' % indexType )
+ </script>
+
+ <!-- Write out the restore-task ldif -->
+ <script>
+ outfile = open(tmpTaskLdif,"w")
+
+ for line in ldifLines:
+ outfile.write("%s\n" % line)
+
+ outfile.close()
+ </script>
+
+ <!-- Copy the rebuildIndex-task ldif to remote host -->
+ <message>'Copy rebuildIndex task ldif file.'</message>
+ <call function="'copyFile'">
+ { 'location' : STAXServiceMachine,
+ 'srcfile' : tmpTaskLdif,
+ 'destfile' : taskLdif,
+ 'remotehost' : myLocation }
+ </call>
+ <script>
+ STAXCode, STAXReason=STAXResult
+ </script>
+
+ <if expr="STAXCode != 0">
+ <sequence>
+ <message level="'error'">
+ 'Copy of totalupdate task failed (STAXCode=%s)' % STAXCode
+ </message>
+ <return>[STAXCode, STAXReason]</return>
+ </sequence>
+ </if>
+
+ <!-- Start the task using ldap task interface -->
+ <call function="'StartLdapTask'">
+ { 'location' : myLocation,
+ 'dsPath' : myPath,
+ 'taskLabel' : 'Online Rebuild Index Task',
+ 'dsHost' : dsInstanceHost,
+ 'dsPort' : dsInstancePort,
+ 'dsBindDn' : dsInstanceDn,
+ 'dsBindPswd' : dsInstancePswd,
+ 'dsTaskLdif' : taskLdif }
+ </call>
+
+ <script>
+ STAXCode, STAXReason=STAXResult
+ </script>
+
+ <if expr="STAXCode != 0">
+ <sequence>
+ <message>
+ 'Start of rebuild index task failed (Code=%s)' % STAXCode
+ </message>
+ <return>[STAXCode, STAXReason]</return>
+ </sequence>
+ </if>
+
+
+ <!-- Check that the ldap task is completed -->
+ <sequence>
+ <call function="'CheckLdapTask'">
+ { 'location' : myLocation,
+ 'dsPath' : myPath,
+ 'dsTaskDn' : taskDN,
+ 'dsHost' : dsInstanceHost,
+ 'dsPort' : dsInstancePort,
+ 'dsBindDn' : dsInstanceDn,
+ 'dsBindPswd' : dsInstancePswd
+ }
+ </call>
+ </sequence>
+
+ <script>
+ STAXCode, STAXReason=STAXResult
+ </script>
+
+ <if expr="STAXCode != 0">
+ <sequence>
+ <message>
+ 'Check of rebuild index task failed (Code=%s)' % STAXCode
+ </message>
+ <return>[STAXCode, STAXReason]</return>
+ </sequence>
+ </if>
+
+ <script>
+ STAXCode=0
+ STAXReason='%s: Success' % STAXCurrentFunction
+ </script>
+
+ <return>[STAXCode, STAXReason]</return>
+ </sequence>
+
+ </function>
+
</stax>
--
Gitblit v1.10.0