From df3c5f343ca662f0f80c4b045cfd14479b2d9ebc Mon Sep 17 00:00:00 2001
From: Gary Williams <gary.williams@forgerock.com>
Date: Tue, 05 Jul 2011 17:00:53 +0000
Subject: [PATCH] align ecl included attributes tests with issue OPENDJ-194

---
 opendj-sdk/opends/tests/staf-tests/shared/functions/ldap.xml  |    2 
 opendj-sdk/opends/tests/staf-tests/shared/functions/utils.xml |  205 ++++++++++++++++++++++++++++++--------------------
 2 files changed, 123 insertions(+), 84 deletions(-)

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 0edbe32..2c1ebc6 100755
--- a/opendj-sdk/opends/tests/staf-tests/shared/functions/ldap.xml
+++ b/opendj-sdk/opends/tests/staf-tests/shared/functions/ldap.xml
@@ -3584,7 +3584,7 @@
         if attributes:
           STAFCmdParamsList.append('%s' % attributes)
         else:
-          STAFCmdParamsList.append('"*" changeLogCookie targetEntryUUID')  
+          STAFCmdParamsList.append('"*" +')  
  
         STAFCmdParams=' '.join(STAFCmdParamsList)
       </script>
diff --git a/opendj-sdk/opends/tests/staf-tests/shared/functions/utils.xml b/opendj-sdk/opends/tests/staf-tests/shared/functions/utils.xml
index 72d0d58..11c6f1f 100755
--- a/opendj-sdk/opends/tests/staf-tests/shared/functions/utils.xml
+++ b/opendj-sdk/opends/tests/staf-tests/shared/functions/utils.xml
@@ -3385,26 +3385,27 @@
     
     <sequence>
       <script>
-        myLocation            = location
-        myPath                = dsPath
-        myKnownIssue          = knownIssue
+        myLocation              = location
+        myPath                  = dsPath
+        myKnownIssue            = knownIssue
         
         # Mandatory attributes in a changeLogEntry
-        ecl_DN                = changelogEntry['dn'][0]
-        ecl_targetDN          = changelogEntry['targetdn'][0]
-        ecl_changeType        = changelogEntry['changetype'][0]
-        ecl_changeTime        = changelogEntry['changetime'][0]
-        ecl_changeNumber      = changelogEntry['changenumber'][0]
+        ecl_DN                  = changelogEntry['dn'][0]
+        ecl_targetDN            = changelogEntry['targetdn'][0]
+        ecl_changeType          = changelogEntry['changetype'][0]
+        ecl_changeTime          = changelogEntry['changetime'][0]
+        ecl_changeNumber        = changelogEntry['changenumber'][0]
         
         # Optional attributes
-        ecl_replicationCSN    = None
-        ecl_replicaIdentifier = None
-        ecl_targetEntryUUID   = None
-        ecl_newRDN            = None
-        ecl_deleteOldRDN      = None
-        ecl_newSuperior       = None
-        ecl_changes           = None         
-                
+        ecl_replicationCSN      = None
+        ecl_replicaIdentifier   = None
+        ecl_targetEntryUUID     = None
+        ecl_newRDN              = None
+        ecl_deleteOldRDN        = None
+        ecl_newSuperior         = None
+        ecl_changes             = None
+        ecl_includedttributes  = None
+
         if 'replicationcsn' in changelogEntry.keys():
           ecl_replicationCSN = changelogEntry['replicationcsn'][0]
         if 'replicaidentifier' in changelogEntry.keys():
@@ -3419,6 +3420,8 @@
           ecl_newSuperior = changelogEntry['newsuperior'][0]
         if 'changes' in changelogEntry.keys():
           ecl_changes = changelogEntry['changes'][0]
+        if 'includedattributes' in changelogEntry.keys():
+          ecl_includedAttributes = changelogEntry['includedattributes'][0]
       </script>
       
       <message>
@@ -3844,78 +3847,66 @@
           </else>
         </if>
       </if>
-      
+
       <if expr="includeAttrs">
-        <iterate var="attr" in="includeAttrs.keys()">
+        <if expr="ecl_includedAttributes">
           <sequence>
+            <!-- Decode the changes that are encoded in base64 -->
             <message>
-              'checkChangelogEntry: Checking include-attribute: %s' % attr
+              'checkChangelogEntry: Decode external changelog included attributes'
             </message>
+            <call function="'Base64WithScript'">
+              { 'location'    : myLocation,
+                'dsPath'      : myPath,
+                'subcommand'  : 'decode',
+                'encodedData' : ecl_includedAttributes
+              }
+            </call>
+            <!-- STAXResult is not always a list-->
             <script>
-              # included-attributes are preceded by 'target' prefix in the
-              # changelog entry, e.g.: 'description' -> 'targetdescription'
-              targetAttr    = 'target%s' % attr
-              valueList     = includeAttrs[attr]
-              ecl_valueList = None
-              
-              if targetAttr in changelogEntry.keys():
-                ecl_valueList = changelogEntry[targetAttr]
-                ecl_valueList.sort()
-                valueList.sort()
+              try:
+                decodeRC, decodedChanges = STAXResult[0]
+              except AttributeError, details:
+                decodedChanges = 'AttributeError: can not parse STAXResult %s' \
+                                 % details
+                decodeRC = '1'
             </script>
-            <if expr="ecl_valueList != None">
-              <!-- Some value found for (include-attribute) targetAttr -->
-              <if expr="attr in expectMissingIncAttrs">
-                <sequence>
-                  <message log="1" level="'Error'">
-                    'Found values %s for %s while NONE expected.' \
-                     % (valueList, targetAttr) 
-                  </message>
-                  <if expr="myKnownIssue == None">
-                    <call function="'testFailed'"/>
-                    <else>
-                      <call function="'setKnownIssue'">
-                        { 'issueId' : myKnownIssue }
-                      </call>
-                    </else>
-                  </if>
-                </sequence>
-                <else>
-                  <if expr="valueList == ecl_valueList">
-                    <message>
-                      'Found expected values for include attribute in %s: \
-                      %s' % (targetAttr, valueList)
-                    </message>
-                    <else>
-                      <sequence>
-                        <message log="1" level="'Error'">
-                          'Expected values %s could not be found in %s: %s' \
-                           % (valueList, targetAttr, ecl_valueList) 
-                        </message>
-                        <if expr="myKnownIssue == None">
-                          <call function="'testFailed'"/>
-                          <else>
-                            <call function="'setKnownIssue'">
-                              { 'issueId' : myKnownIssue }
-                            </call>
-                          </else>
-                        </if>
-                      </sequence>
-                    </else>
-                  </if>
-                </else>
-              </if>
-              <else>
-                <!-- No (include-attribute) targetAttr found -->
-                <if expr="attr in expectMissingIncAttrs">
-                  <message>
-                    'No %s could be found in the changelog entry, AS EXPECTED' \
-                    % targetAttr 
-                  </message>
-                  <else>
+            <message>
+              'checkChangelogEntry: Decoded changes:\n%s' % decodedChanges
+            </message>
+            <if expr="decodeRC == 0">
+              <sequence>
+                <call function="'parseLdifEntry'">
+                  { 'ldifEntry' : decodedChanges }
+                </call>
+                <script>
+                  ecl_includeAttrsMap = STAXResult
+                </script>
+                <message>
+                  'Parsed changelog entry changes:  \n%s' % ecl_includeAttrsMap
+                </message>
+              </sequence>
+            </if>
+            <iterate var="attr" in="includeAttrs.keys()">
+              <sequence>
+                <message>'Matching included attribute %s.' % attr</message>
+                <script>
+                  targetAttr    = attr            
+                  valueList     = includeAttrs[attr]
+                  ecl_valueList = None
+    
+                  if targetAttr in ecl_includeAttrsMap.keys():
+                    ecl_valueList = ecl_includeAttrsMap[targetAttr]
+                    ecl_valueList.sort()
+                    valueList.sort()
+                </script>
+                <if expr="ecl_valueList != None">
+                  <!-- Some value found for (include-attribute) targetAttr -->
+                  <if expr="attr in expectMissingIncAttrs">
                     <sequence>
                       <message log="1" level="'Error'">
-                        'No %s could be found in the changelog entry' % targetAttr 
+                        'Found values %s for %s while NONE expected.' \
+                         % (valueList, targetAttr)
                       </message>
                       <if expr="myKnownIssue == None">
                         <call function="'testFailed'"/>
@@ -3926,12 +3917,60 @@
                         </else>
                       </if>
                     </sequence>
+                    <else>
+                      <if expr="valueList == ecl_valueList">
+                        <message>
+                          'Found expected values for include attribute in %s: \
+                          %s' % (targetAttr, valueList)
+                        </message>
+                        <else>
+                          <sequence>
+                            <message log="1" level="'Error'">
+                              'Expected values %s could not be found in %s: %s' \
+                               % (valueList, targetAttr, ecl_valueList)
+                            </message>
+                            <if expr="myKnownIssue == None">
+                              <call function="'testFailed'"/>
+                              <else>
+                                <call function="'setKnownIssue'">
+                                  { 'issueId' : myKnownIssue }
+                                </call>
+                              </else>
+                            </if>
+                          </sequence>
+                        </else>
+                      </if>
+                    </else>
+                  </if>
+                  <else>
+                    <!-- No (include-attribute) targetAttr found -->
+                    <if expr="attr in expectMissingIncAttrs">
+                      <message>
+                        'No %s could be found in the changelog entry, AS EXPECTED' \
+                        % targetAttr
+                      </message>
+                      <else>
+                        <sequence>
+                          <message log="1" level="'Error'">
+                            'No %s could be found in the changelog entry' % targetAttr
+                          </message>
+                          <if expr="myKnownIssue == None">
+                            <call function="'testFailed'"/>
+                            <else>
+                              <call function="'setKnownIssue'">
+                                { 'issueId' : myKnownIssue }
+                              </call>
+                            </else>
+                          </if>
+                        </sequence>
+                      </else>
+                    </if>
                   </else>
                 </if>
-              </else>
-            </if>                    
+              </sequence>
+            </iterate>
           </sequence>
-        </iterate>
+        </if>
       </if>
       
     </sequence>

--
Gitblit v1.10.0