From 3b7e19e935b1aa6e565f324e7073f4b546c28d1f Mon Sep 17 00:00:00 2001
From: ludovicp <ludovicp@localhost>
Date: Mon, 07 Jun 2010 09:38:55 +0000
Subject: [PATCH] Improve External Changelog tests and tools
---
opendj-sdk/opends/tests/staf-tests/shared/functions/ldap.xml | 46 ++
opendj-sdk/opends/tests/staf-tests/functional-tests/testcases/replication/externalchangelog/externalchangelog_common_ecl_tests.xml | 716 +++++++++++++++++++++++++++++++-----------------------
2 files changed, 452 insertions(+), 310 deletions(-)
diff --git a/opendj-sdk/opends/tests/staf-tests/functional-tests/testcases/replication/externalchangelog/externalchangelog_common_ecl_tests.xml b/opendj-sdk/opends/tests/staf-tests/functional-tests/testcases/replication/externalchangelog/externalchangelog_common_ecl_tests.xml
index f50c0b8..56d55db 100644
--- a/opendj-sdk/opends/tests/staf-tests/functional-tests/testcases/replication/externalchangelog/externalchangelog_common_ecl_tests.xml
+++ b/opendj-sdk/opends/tests/staf-tests/functional-tests/testcases/replication/externalchangelog/externalchangelog_common_ecl_tests.xml
@@ -7591,52 +7591,71 @@
</script>
<if expr="searchRC == 0">
<sequence>
- <message>
- 'This is the ECL entry as read from server %s:%s: \n%s' %\
- (replServer.getHostname(), replServer.getPort(),
- searchResult)
- </message>
- <call function="'parseLdifEntry'">
- { 'ldifEntry' : searchResult }
- </call>
- <script>
- eclEntry = STAXResult
-
- if ecl_mode == 'opends':
- nextIndex = eclEntry['changelogcookie'][0]
- else:
- nextChgNumber = int(eclEntry['changenumber'][0]) + 1
- nextIndex = str(nextChgNumber)
- </script>
<message>
- 'Parsed changelog entry: \n%s' % eclEntry
+ 'This is the ECL entry as read from server %s:%s: \n%s' %\
+ (replServer.getHostname(), replServer.getPort(),
+ searchResult)
</message>
- <message>
- 'Index to use for the next ECL search: %s' % \
- nextIndex
- </message>
-
- <if expr="addedEntry and eclEntry">
- <call function="'checkChangelogEntry'">
- { 'location' : masterHost,
- 'dsPath' : masterPath,
- 'changelogEntry' : eclEntry,
- 'targetDN' : myTargetDN,
- 'changeNumber' : myChangeNumber,
- 'changeType' : myChangeType,
- 'changeTime' : myChangeTime,
- 'targetEntryUUID' : myTargetEntryUUID,
- 'changes' : myChanges,
- 'includeAttrs' : myIncAttrs
- }
- </call>
+ <if expr="len(searchResult) != 0">
+ <sequence>
+ <call function="'parseLdifEntry'">
+ { 'ldifEntry' : searchResult }
+ </call>
+ <script>
+ eclEntry = STAXResult
+
+ if ecl_mode == 'opends':
+ nextIndex = eclEntry['changelogcookie'][0]
+ else:
+ nextChgNumber = int(eclEntry['changenumber'][0]) + 1
+ nextIndex = str(nextChgNumber)
+ </script>
+ <message>
+ 'Parsed changelog entry: \n%s' % eclEntry
+ </message>
+ <message>
+ 'Index to use for the next ECL search: %s' % \
+ nextIndex
+ </message>
+
+ <if expr="addedEntry and eclEntry">
+ <call function="'checkChangelogEntry'">
+ { 'location' : masterHost,
+ 'dsPath' : masterPath,
+ 'changelogEntry' : eclEntry,
+ 'targetDN' : myTargetDN,
+ 'changeNumber' : myChangeNumber,
+ 'changeType' : myChangeType,
+ 'changeTime' : myChangeTime,
+ 'targetEntryUUID' : myTargetEntryUUID,
+ 'changes' : myChanges,
+ 'includeAttrs' : myIncAttrs
+ }
+ </call>
+ <else>
+ <sequence>
+ <message log="1" level="'Error'">
+ 'Unable to check external changelog entry \
+ (failed to read LDAP and/or changelog entry)'
+ </message>
+ <call function="'testFailed'"/>
+ </sequence>
+ </else>
+ </if>
+
+ </sequence>
<else>
<sequence>
<message log="1" level="'Error'">
- 'Unable to check external changelog entry \
- (failed to read LDAP and/or changelog entry)'
+ 'Expected some ECL entry but NO ENTRY returned'
</message>
- <call function="'testFailed'"/>
+ <!-- We may have come across issue CR 6954670:
+ ! ECL - draft: update ECL-disabled suffix, then
+ ! non-disabled suffix, make lastChangenumber
+ ! incoherent -->
+ <call function="'setKnownIssue'">
+ { 'issueId' : 6954670 }
+ </call>
</sequence>
</else>
</if>
@@ -7836,60 +7855,79 @@
</script>
<if expr="searchRC == 0">
<sequence>
- <message>
- 'This is the ECL entry as read from server %s:%s: \n%s' %\
- (replServer.getHostname(), replServer.getPort(),
- searchResult)
- </message>
- <call function="'parseLdifEntry'">
- { 'ldifEntry' : searchResult }
- </call>
- <script>
- eclEntry = STAXResult
-
- if ecl_mode == 'opends':
- nextIndex = eclEntry['changelogcookie'][0]
- else:
- nextChgNumber = int(eclEntry['changenumber'][0]) + 1
- nextIndex = str(nextChgNumber)
- </script>
<message>
- 'Parsed changelog entry: \n%s' % eclEntry
+ 'This is the ECL entry as read from server %s:%s: \n%s' %\
+ (replServer.getHostname(), replServer.getPort(),
+ searchResult)
</message>
- <message>
- 'Index to use for the next ECL search: %s' % \
- nextIndex
- </message>
-
- <!-- We may come across issue CR 6929416:
- ! ECL: updates done on server don't publish include-attrs
- ! configured on peer server -->
- <if expr="addedEntry and eclEntry">
- <call function="'checkChangelogEntry'">
- { 'location' : masterHost,
- 'dsPath' : masterPath,
- 'changelogEntry' : eclEntry,
- 'targetDN' : myTargetDN,
- 'changeNumber' : myChangeNumber,
- 'changeType' : myChangeType,
- 'changeTime' : myChangeTime,
- 'targetEntryUUID' : myTargetEntryUUID,
- 'changes' : myChanges,
- 'includeAttrs' : myIncAttrs,
- 'knownIssue' : '6929416'
- }
- </call>
+ <if expr="len(searchResult) != 0">
+ <sequence>
+ <call function="'parseLdifEntry'">
+ { 'ldifEntry' : searchResult }
+ </call>
+ <script>
+ eclEntry = STAXResult
+
+ if ecl_mode == 'opends':
+ nextIndex = eclEntry['changelogcookie'][0]
+ else:
+ nextChgNumber = int(eclEntry['changenumber'][0]) + 1
+ nextIndex = str(nextChgNumber)
+ </script>
+ <message>
+ 'Parsed changelog entry: \n%s' % eclEntry
+ </message>
+ <message>
+ 'Index to use for the next ECL search: %s' % \
+ nextIndex
+ </message>
+
+ <!-- We may come across issue CR 6929416:
+ ! ECL: updates done on server don't publish include-attrs
+ ! configured on peer server -->
+ <if expr="addedEntry and eclEntry">
+ <call function="'checkChangelogEntry'">
+ { 'location' : masterHost,
+ 'dsPath' : masterPath,
+ 'changelogEntry' : eclEntry,
+ 'targetDN' : myTargetDN,
+ 'changeNumber' : myChangeNumber,
+ 'changeType' : myChangeType,
+ 'changeTime' : myChangeTime,
+ 'targetEntryUUID' : myTargetEntryUUID,
+ 'changes' : myChanges,
+ 'includeAttrs' : myIncAttrs,
+ 'knownIssue' : '6929416'
+ }
+ </call>
+ <else>
+ <sequence>
+ <message log="1" level="'Error'">
+ 'Unable to check external changelog entry \
+ (failed to read LDAP and/or changelog entry)'
+ </message>
+ <call function="'testFailed'"/>
+ </sequence>
+ </else>
+ </if>
+
+ </sequence>
<else>
<sequence>
<message log="1" level="'Error'">
- 'Unable to check external changelog entry \
- (failed to read LDAP and/or changelog entry)'
+ 'Expected some ECL entry but NO ENTRY returned'
</message>
- <call function="'testFailed'"/>
+ <!-- We may have come across issue CR 6954670:
+ ! ECL - draft: update ECL-disabled suffix, then
+ ! non-disabled suffix, make lastChangenumber
+ ! incoherent -->
+ <call function="'setKnownIssue'">
+ { 'issueId' : 6954670 }
+ </call>
</sequence>
</else>
</if>
-
+
</sequence>
<else>
<message log="1" level="'Error'">
@@ -8131,61 +8169,80 @@
</script>
<if expr="searchRC == 0">
<sequence>
- <message>
- 'This is the ECL entry as read from server %s:%s: \n%s' %\
- (replServer.getHostname(), replServer.getPort(),
- searchResult)
- </message>
- <call function="'parseLdifEntry'">
- { 'ldifEntry' : searchResult }
- </call>
- <script>
- eclEntry = STAXResult
-
- if ecl_mode == 'opends':
- nextIndex = eclEntry['changelogcookie'][0]
- else:
- nextChgNumber = int(eclEntry['changenumber'][0]) + 1
- nextIndex = str(nextChgNumber)
- </script>
<message>
- 'Parsed changelog entry: \n%s' % eclEntry
+ 'This is the ECL entry as read from server %s:%s: \n%s' %\
+ (replServer.getHostname(), replServer.getPort(),
+ searchResult)
</message>
- <message>
- 'Index to use for the next ECL search: %s' % \
- nextIndex
- </message>
-
- <!-- We may come across issue CR 6932197:
- ! ECL: old ecl-include attributes still published in
- ! change entries until server restart -->
- <if expr="addedEntry and eclEntry">
- <call function="'checkChangelogEntry'">
- { 'location' : masterHost,
- 'dsPath' : masterPath,
- 'changelogEntry' : eclEntry,
- 'targetDN' : myTargetDN,
- 'changeNumber' : myChangeNumber,
- 'changeType' : myChangeType,
- 'changeTime' : myChangeTime,
- 'targetEntryUUID' : myTargetEntryUUID,
- 'changes' : myChanges,
- 'includeAttrs' : myIncAttrs,
- 'expectMissingIncAttrs' : myMissingIncAttrs,
- 'knownIssue' : '6932197'
- }
- </call>
+ <if expr="len(searchResult) != 0">
+ <sequence>
+ <call function="'parseLdifEntry'">
+ { 'ldifEntry' : searchResult }
+ </call>
+ <script>
+ eclEntry = STAXResult
+
+ if ecl_mode == 'opends':
+ nextIndex = eclEntry['changelogcookie'][0]
+ else:
+ nextChgNumber = int(eclEntry['changenumber'][0]) + 1
+ nextIndex = str(nextChgNumber)
+ </script>
+ <message>
+ 'Parsed changelog entry: \n%s' % eclEntry
+ </message>
+ <message>
+ 'Index to use for the next ECL search: %s' % \
+ nextIndex
+ </message>
+
+ <!-- We may come across issue CR 6932197:
+ ! ECL: old ecl-include attributes still published in
+ ! change entries until server restart -->
+ <if expr="addedEntry and eclEntry">
+ <call function="'checkChangelogEntry'">
+ { 'location' : masterHost,
+ 'dsPath' : masterPath,
+ 'changelogEntry' : eclEntry,
+ 'targetDN' : myTargetDN,
+ 'changeNumber' : myChangeNumber,
+ 'changeType' : myChangeType,
+ 'changeTime' : myChangeTime,
+ 'targetEntryUUID' : myTargetEntryUUID,
+ 'changes' : myChanges,
+ 'includeAttrs' : myIncAttrs,
+ 'expectMissingIncAttrs' : myMissingIncAttrs,
+ 'knownIssue' : '6932197'
+ }
+ </call>
+ <else>
+ <sequence>
+ <message log="1" level="'Error'">
+ 'Unable to check external changelog entry \
+ (failed to read LDAP and/or changelog entry)'
+ </message>
+ <call function="'testFailed'"/>
+ </sequence>
+ </else>
+ </if>
+
+ </sequence>
<else>
<sequence>
<message log="1" level="'Error'">
- 'Unable to check external changelog entry \
- (failed to read LDAP and/or changelog entry)'
+ 'Expected some ECL entry but NO ENTRY returned'
</message>
- <call function="'testFailed'"/>
+ <!-- We may have come across issue CR 6954670:
+ ! ECL - draft: update ECL-disabled suffix, then
+ ! non-disabled suffix, make lastChangenumber
+ ! incoherent -->
+ <call function="'setKnownIssue'">
+ { 'issueId' : 6954670 }
+ </call>
</sequence>
</else>
</if>
-
+
</sequence>
<else>
<message log="1" level="'Error'">
@@ -8422,56 +8479,75 @@
</script>
<if expr="searchRC == 0">
<sequence>
- <message>
- 'This is the ECL entry as read from server %s:%s: \n%s' %\
- (replServer.getHostname(), replServer.getPort(),
- searchResult)
- </message>
- <call function="'parseLdifEntry'">
- { 'ldifEntry' : searchResult }
- </call>
- <script>
- eclEntry = STAXResult
-
- if ecl_mode == 'opends':
- nextIndex = eclEntry['changelogcookie'][0]
- else:
- nextChgNumber = int(eclEntry['changenumber'][0]) + 1
- nextIndex = str(nextChgNumber)
- </script>
<message>
- 'Parsed changelog entry: \n%s' % eclEntry
+ 'This is the ECL entry as read from server %s:%s: \n%s' %\
+ (replServer.getHostname(), replServer.getPort(),
+ searchResult)
</message>
- <message>
- 'Index to use for the next ECL search: %s' % \
- nextIndex
- </message>
-
- <if expr="addedEntry and eclEntry">
- <call function="'checkChangelogEntry'">
- { 'location' : masterHost,
- 'dsPath' : masterPath,
- 'changelogEntry' : eclEntry,
- 'targetDN' : myTargetDN,
- 'changeNumber' : myChangeNumber,
- 'changeType' : myChangeType,
- 'changeTime' : myChangeTime,
- 'targetEntryUUID' : myTargetEntryUUID,
- 'changes' : myChanges,
- 'includeAttrs' : myIncAttrs
- }
- </call>
+ <if expr="len(searchResult) != 0">
+ <sequence>
+ <call function="'parseLdifEntry'">
+ { 'ldifEntry' : searchResult }
+ </call>
+ <script>
+ eclEntry = STAXResult
+
+ if ecl_mode == 'opends':
+ nextIndex = eclEntry['changelogcookie'][0]
+ else:
+ nextChgNumber = int(eclEntry['changenumber'][0]) + 1
+ nextIndex = str(nextChgNumber)
+ </script>
+ <message>
+ 'Parsed changelog entry: \n%s' % eclEntry
+ </message>
+ <message>
+ 'Index to use for the next ECL search: %s' % \
+ nextIndex
+ </message>
+
+ <if expr="addedEntry and eclEntry">
+ <call function="'checkChangelogEntry'">
+ { 'location' : masterHost,
+ 'dsPath' : masterPath,
+ 'changelogEntry' : eclEntry,
+ 'targetDN' : myTargetDN,
+ 'changeNumber' : myChangeNumber,
+ 'changeType' : myChangeType,
+ 'changeTime' : myChangeTime,
+ 'targetEntryUUID' : myTargetEntryUUID,
+ 'changes' : myChanges,
+ 'includeAttrs' : myIncAttrs
+ }
+ </call>
+ <else>
+ <sequence>
+ <message log="1" level="'Error'">
+ 'Unable to check external changelog entry \
+ (failed to read LDAP and/or changelog entry)'
+ </message>
+ <call function="'testFailed'"/>
+ </sequence>
+ </else>
+ </if>
+
+ </sequence>
<else>
<sequence>
<message log="1" level="'Error'">
- 'Unable to check external changelog entry \
- (failed to read LDAP and/or changelog entry)'
+ 'Expected some ECL entry but NO ENTRY returned'
</message>
- <call function="'testFailed'"/>
+ <!-- We may have come across issue CR 6954670:
+ ! ECL - draft: update ECL-disabled suffix, then
+ ! non-disabled suffix, make lastChangenumber
+ ! incoherent -->
+ <call function="'setKnownIssue'">
+ { 'issueId' : 6954670 }
+ </call>
</sequence>
</else>
</if>
-
+
</sequence>
<else>
<message log="1" level="'Error'">
@@ -8681,57 +8757,76 @@
</script>
<if expr="searchRC == 0">
<sequence>
- <message>
- 'This is the ECL entry as read from server %s:%s: \n%s' %\
- (replServer.getHostname(), replServer.getPort(),
- searchResult)
- </message>
- <call function="'parseLdifEntry'">
- { 'ldifEntry' : searchResult }
- </call>
- <script>
- eclEntry = STAXResult
-
- if ecl_mode == 'opends':
- nextIndex = eclEntry['changelogcookie'][0]
- else:
- nextChgNumber = int(eclEntry['changenumber'][0]) + 1
- nextIndex = str(nextChgNumber)
- </script>
<message>
- 'Parsed changelog entry: \n%s' % eclEntry
+ 'This is the ECL entry as read from server %s:%s: \n%s' %\
+ (replServer.getHostname(), replServer.getPort(),
+ searchResult)
</message>
- <message>
- 'Index to use for the next ECL search: %s' % \
- nextIndex
- </message>
+ <if expr="len(searchResult) != 0">
+ <sequence>
+ <call function="'parseLdifEntry'">
+ { 'ldifEntry' : searchResult }
+ </call>
+ <script>
+ eclEntry = STAXResult
+
+ if ecl_mode == 'opends':
+ nextIndex = eclEntry['changelogcookie'][0]
+ else:
+ nextChgNumber = int(eclEntry['changenumber'][0]) + 1
+ nextIndex = str(nextChgNumber)
+ </script>
+ <message>
+ 'Parsed changelog entry: \n%s' % eclEntry
+ </message>
+ <message>
+ 'Index to use for the next ECL search: %s' % \
+ nextIndex
+ </message>
+
+ <if expr="addedEntry and eclEntry">
+ <call function="'checkChangelogEntry'">
+ { 'location' : masterHost,
+ 'dsPath' : masterPath,
+ 'changelogEntry' : eclEntry,
+ 'targetDN' : myTargetDN,
+ 'changeNumber' : myChangeNumber,
+ 'changeType' : myChangeType,
+ 'changeTime' : myChangeTime,
+ 'targetEntryUUID' : myTargetEntryUUID,
+ 'changes' : myChanges,
+ 'includeAttrs' : myIncAttrs,
+ 'expectMissingIncAttrs' : myMissingIncAttrs,
+ }
+ </call>
+ <else>
+ <sequence>
+ <message log="1" level="'Error'">
+ 'Unable to check external changelog entry \
+ (failed to read LDAP and/or changelog entry)'
+ </message>
+ <call function="'testFailed'"/>
+ </sequence>
+ </else>
+ </if>
- <if expr="addedEntry and eclEntry">
- <call function="'checkChangelogEntry'">
- { 'location' : masterHost,
- 'dsPath' : masterPath,
- 'changelogEntry' : eclEntry,
- 'targetDN' : myTargetDN,
- 'changeNumber' : myChangeNumber,
- 'changeType' : myChangeType,
- 'changeTime' : myChangeTime,
- 'targetEntryUUID' : myTargetEntryUUID,
- 'changes' : myChanges,
- 'includeAttrs' : myIncAttrs,
- 'expectMissingIncAttrs' : myMissingIncAttrs,
- }
- </call>
+ </sequence>
<else>
<sequence>
<message log="1" level="'Error'">
- 'Unable to check external changelog entry \
- (failed to read LDAP and/or changelog entry)'
+ 'Expected some ECL entry but NO ENTRY returned'
</message>
- <call function="'testFailed'"/>
+ <!-- We may have come across issue CR 6954670:
+ ! ECL - draft: update ECL-disabled suffix, then
+ ! non-disabled suffix, make lastChangenumber
+ ! incoherent -->
+ <call function="'setKnownIssue'">
+ { 'issueId' : 6954670 }
+ </call>
</sequence>
</else>
</if>
-
+
</sequence>
<else>
<message log="1" level="'Error'">
@@ -8983,100 +9078,119 @@
% (replServer.getHostname(), replServer.getPort(),
searchResult)
</message>
- <call function="'parseLdifEntries'">
- { 'ldifEntries' : searchResult }
- </call>
- <script>
- eclEntries = STAXResult
- </script>
-
- <if expr="len(addedEntries) != len(eclEntries)">
+ <if expr="len(searchResult) != 0">
<sequence>
- <message log="1" level="'Error'">
- 'Number of added entries %s does not match number of ECL \
- entries %s' % (len(addedEntries), len(eclEntries))
- </message>
- <call function="'testFailed'"/>
- </sequence>
- </if>
-
- <iterate var="eclEntry"
- in="eclEntries"
- indexvar="i">
- <sequence>
-
+ <call function="'parseLdifEntries'">
+ { 'ldifEntries' : searchResult }
+ </call>
<script>
- if ecl_mode == 'opends':
- nextIndex = eclEntry['changelogcookie'][0]
- else:
- nextChgNumber = int(eclEntry['changenumber'][0]) + 1
- nextIndex = str(nextChgNumber)
-
- addedEntry = addedEntries[i]
- myTargetDN = addedEntry['dn'][0]
- myChangeType = 'add'
- myChangeTime = addedEntry['createtimestamp'][0]
- myTargetEntryUUID = addedEntry['entryuuid'][0]
- # myReplicationCSN = ----> grab from where???
- # myReplicatIdentifier = ----> grab from ldap server
- myChanges = {}
- myIncAttrs = {}
-
- for attr in addedEntry.keys():
- if (attr != 'dn') and (attr != 'changelogcookie') :
- myChanges[attr] = addedEntry[attr]
-
- for incAttr in incAttrs:
- if incAttr in addedEntry.keys():
- myIncAttrs[incAttr] = addedEntry[incAttr]
- else:
- myIncAttrs[incAttr] = ' '
-
- if ecl_mode != 'opends':
- myIntChangeNumber = int(searchIndex) + i
- myChangeNumber = str(myIntChangeNumber)
- else:
- myChangeNumber = None
+ eclEntries = STAXResult
</script>
- <message>
- 'Parsed changelog entry: \n%s' % eclEntry
- </message>
- <message>
- 'Index to use for the next ECL search: %s' % nextIndex
- </message>
-
- <!-- We may come across issue CR 6929416:
- ! ECL: updates done on server don't publish
- ! include-attrs configured on peer server -->
- <if expr="addedEntry and eclEntry">
- <call function="'checkChangelogEntry'">
- { 'location' : masterHost,
- 'dsPath' : masterPath,
- 'changelogEntry' : eclEntry,
- 'targetDN' : myTargetDN,
- 'changeNumber' : myChangeNumber,
- 'changeType' : myChangeType,
- 'changeTime' : myChangeTime,
- 'targetEntryUUID' : myTargetEntryUUID,
- 'changes' : myChanges,
- 'includeAttrs' : myIncAttrs,
- 'knownIssue' : '6929416'
- }
- </call>
- <else>
- <sequence>
- <message log="1" level="'Error'">
- 'Unable to check external changelog entry \
- (failed to read LDAP and/or changelog entry)'
- </message>
- <call function="'testFailed'"/>
- </sequence>
- </else>
+
+ <if expr="len(addedEntries) != len(eclEntries)">
+ <sequence>
+ <message log="1" level="'Error'">
+ 'Number of added entries %s does not match number of ECL \
+ entries %s' % (len(addedEntries), len(eclEntries))
+ </message>
+ <call function="'testFailed'"/>
+ </sequence>
</if>
- </sequence>
- </iterate>
+ <iterate var="eclEntry"
+ in="eclEntries"
+ indexvar="i">
+ <sequence>
+
+ <script>
+ if ecl_mode == 'opends':
+ nextIndex = eclEntry['changelogcookie'][0]
+ else:
+ nextChgNumber = int(eclEntry['changenumber'][0]) + 1
+ nextIndex = str(nextChgNumber)
+
+ addedEntry = addedEntries[i]
+ myTargetDN = addedEntry['dn'][0]
+ myChangeType = 'add'
+ myChangeTime = addedEntry['createtimestamp'][0]
+ myTargetEntryUUID = addedEntry['entryuuid'][0]
+ # myReplicationCSN = ----> grab from where???
+ # myReplicatIdentifier = ----> grab from ldap server
+ myChanges = {}
+ myIncAttrs = {}
+
+ for attr in addedEntry.keys():
+ if (attr != 'dn') and (attr != 'changelogcookie') :
+ myChanges[attr] = addedEntry[attr]
+
+ for incAttr in incAttrs:
+ if incAttr in addedEntry.keys():
+ myIncAttrs[incAttr] = addedEntry[incAttr]
+ else:
+ myIncAttrs[incAttr] = ' '
+
+ if ecl_mode != 'opends':
+ myIntChangeNumber = int(searchIndex) + i
+ myChangeNumber = str(myIntChangeNumber)
+ else:
+ myChangeNumber = None
+ </script>
+ <message>
+ 'Parsed changelog entry: \n%s' % eclEntry
+ </message>
+ <message>
+ 'Index to use for the next ECL search: %s' % nextIndex
+ </message>
+
+ <!-- We may come across issue CR 6929416:
+ ! ECL: updates done on server don't publish
+ ! include-attrs configured on peer server -->
+ <if expr="addedEntry and eclEntry">
+ <call function="'checkChangelogEntry'">
+ { 'location' : masterHost,
+ 'dsPath' : masterPath,
+ 'changelogEntry' : eclEntry,
+ 'targetDN' : myTargetDN,
+ 'changeNumber' : myChangeNumber,
+ 'changeType' : myChangeType,
+ 'changeTime' : myChangeTime,
+ 'targetEntryUUID' : myTargetEntryUUID,
+ 'changes' : myChanges,
+ 'includeAttrs' : myIncAttrs,
+ 'knownIssue' : '6929416'
+ }
+ </call>
+ <else>
+ <sequence>
+ <message log="1" level="'Error'">
+ 'Unable to check external changelog entry \
+ (failed to read LDAP and/or changelog entry)'
+ </message>
+ <call function="'testFailed'"/>
+ </sequence>
+ </else>
+ </if>
+
+ </sequence>
+ </iterate>
+ </sequence>
+ <else>
+ <sequence>
+ <message log="1" level="'Error'">
+ 'Expected some ECL entry but NO ENTRY returned'
+ </message>
+ <!-- We may have come across issue CR 6954670:
+ ! ECL - draft: update ECL-disabled suffix, then
+ ! non-disabled suffix, make lastChangenumber
+ ! incoherent -->
+ <call function="'setKnownIssue'">
+ { 'issueId' : 6954670 }
+ </call>
+ </sequence>
+ </else>
+ </if>
+
</sequence>
<else>
<message log="1" level="'Error'">
diff --git a/opendj-sdk/opends/tests/staf-tests/shared/functions/ldap.xml b/opendj-sdk/opends/tests/staf-tests/shared/functions/ldap.xml
index fa397e5..6536cf0 100755
--- a/opendj-sdk/opends/tests/staf-tests/shared/functions/ldap.xml
+++ b/opendj-sdk/opends/tests/staf-tests/shared/functions/ldap.xml
@@ -3589,15 +3589,43 @@
'%s %s' % (STAFCmd, STAFCmdParams)
</message>
- <call function="'runCommand'">
- { 'command' : STAFCmd,
- 'arguments' : STAFCmdParams,
- 'location' : location,
- 'name' : 'ldapsearch',
- 'expectedRC': expectedRC,
- 'knownIssue': knownIssue
- }
- </call>
+ <!-- Give the changes time to propagate in the ECL -->
+ <script>
+ myCounter = 1
+ taskRC = 1
+ noOfLoops = 10
+ </script>
+ <loop from="1" to="noOfLoops" while="taskRC != 0">
+ <sequence>
+
+ <message>
+ 'LOOP number %s - %s %s' % (myCounter, STAFCmd, STAFCmdParams)
+ </message>
+
+ <call function="'runCommand'">
+ { 'command' : STAFCmd,
+ 'arguments' : STAFCmdParams,
+ 'location' : location,
+ 'name' : 'ldapsearch',
+ 'expectedRC': expectedRC,
+ 'knownIssue': knownIssue
+ }
+ </call>
+ <script>
+ STAFCmdRC = RC
+ STAFCmdResult = STAXResult
+ myCounter = myCounter + 1
+ </script>
+
+ <if expr='STAFCmdResult[0][1] != None and len(STAFCmdResult[0][1].strip()) > 0'>
+ <sequence>
+ <script>taskRC = 0</script>
+ <return>STAFCmdResult</return>
+ </sequence>
+ </if>
+ </sequence>
+ </loop>
+
<return>
STAXResult
</return>
--
Gitblit v1.10.0