| | |
| | | |
| | | reportCfg = open('%s/logs/report.cfg' % LOGS_ROOT, 'w') |
| | | reportCfg.write('[Main]\n') |
| | | reportCfg.write('product = OpenDS_SE2.4 (Directory)\n') |
| | | reportCfg.write('product = Directory\n') |
| | | if TESTS_TYPE == 'functional-tests': |
| | | reportCfg.write('category = Functional\n') |
| | | else: |
| | |
| | | </function-arg-description> |
| | | <function-arg-property name="type" value="string"/> |
| | | </function-arg-def> |
| | | <function-arg-def name="includeAttrs" |
| | | type="optional" |
| | | default="None"> |
| | | <function-arg-description> |
| | | Map containing the attributes configured as include-attributes along |
| | | with their values, e.g.: |
| | | { 'description':['desc1', desc2'], 'telephonenumber':['11-22-33']} |
| | | </function-arg-description> |
| | | <function-arg-property name="type" value="map"/> |
| | | </function-arg-def> |
| | | <function-arg-def name="expectMissingIncAttrs" |
| | | type="optional" |
| | | default="[]"> |
| | | <function-arg-description> |
| | | List of the attributes in includeAttrs expected NOT TO BE FOUND in the |
| | | changelog entry. |
| | | </function-arg-description> |
| | | <function-arg-property name="type" value="list"/> |
| | | </function-arg-def> |
| | | <function-arg-def name="knownIssue" type="optional" default="None"> |
| | | <function-arg-description> |
| | | Known issue. Corresponds to an issue number. |
| | |
| | | <script> |
| | | myLocation = location |
| | | myPath = dsPath |
| | | myKnownIssue = knownIssue |
| | | |
| | | # Mandatory attributes in a changeLogEntry |
| | | ecl_DN = changelogEntry['dn'][0] |
| | |
| | | <call function="'searchString'"> |
| | | { 'returnString' : ecl_targetDN, |
| | | 'expectedString' : targetDN, |
| | | 'searchType' : 'exact-case-insensitive' |
| | | 'searchType' : 'exact-case-insensitive', |
| | | 'knownIssue' : myKnownIssue |
| | | } |
| | | </call> |
| | | |
| | |
| | | <call function="'searchString'"> |
| | | { 'returnString' : ecl_changeType, |
| | | 'expectedString' : changeType, |
| | | 'searchType' : 'exact-case-insensitive' |
| | | 'searchType' : 'exact-case-insensitive', |
| | | 'knownIssue' : myKnownIssue |
| | | } |
| | | </call> |
| | | |
| | |
| | | <call function="'searchString'"> |
| | | { 'returnString' : ecl_changeTime, |
| | | 'expectedString' : changeTime, |
| | | 'searchType' : 'exact-case-insensitive' |
| | | 'searchType' : 'exact-case-insensitive', |
| | | 'knownIssue' : myKnownIssue |
| | | } |
| | | </call> |
| | | </sequence> |
| | |
| | | <call function="'searchString'"> |
| | | { 'returnString' : ecl_changeNumber, |
| | | 'expectedString' : changeNumber, |
| | | 'searchType' : 'exact-case-sensitive' |
| | | 'searchType' : 'exact-case-sensitive', |
| | | 'knownIssue' : myKnownIssue |
| | | } |
| | | </call> |
| | | </sequence> |
| | |
| | | <call function="'searchString'"> |
| | | { 'returnString' : ecl_replicationCSN, |
| | | 'expectedString' : replicationCSN, |
| | | 'searchType' : 'exact-case-insensitive' |
| | | 'searchType' : 'exact-case-insensitive', |
| | | 'knownIssue' : myKnownIssue |
| | | } |
| | | </call> |
| | | </sequence> |
| | |
| | | <message log="1" level="'Error'"> |
| | | 'No replicationCSN could be found in the changelog entry' |
| | | </message> |
| | | <call function="'testFailed'"/> |
| | | <if expr="myKnownIssue == None"> |
| | | <call function="'testFailed'"/> |
| | | <else> |
| | | <call function="'setKnownIssue'"> |
| | | { 'issueId' : myKnownIssue } |
| | | </call> |
| | | </else> |
| | | </if> |
| | | </sequence> |
| | | </else> |
| | | </if> |
| | |
| | | <call function="'searchString'"> |
| | | { 'returnString' : ecl_replicaIdentifier, |
| | | 'expectedString' : replicaIdentifier, |
| | | 'searchType' : 'exact-case-sensitive' |
| | | 'searchType' : 'exact-case-sensitive', |
| | | 'knownIssue' : myKnownIssue |
| | | } |
| | | </call> |
| | | </sequence> |
| | |
| | | <message log="1" level="'Error'"> |
| | | 'No replicaIdentifier could be found in the changelog entry' |
| | | </message> |
| | | <call function="'testFailed'"/> |
| | | <if expr="myKnownIssue == None"> |
| | | <call function="'testFailed'"/> |
| | | <else> |
| | | <call function="'setKnownIssue'"> |
| | | { 'issueId' : myKnownIssue } |
| | | </call> |
| | | </else> |
| | | </if> |
| | | </sequence> |
| | | </else> |
| | | </if> |
| | |
| | | <call function="'searchString'"> |
| | | { 'returnString' : ecl_targetEntryUUID, |
| | | 'expectedString' : targetEntryUUID, |
| | | 'searchType' : 'exact-case-insensitive' |
| | | 'searchType' : 'exact-case-insensitive', |
| | | 'knownIssue' : myKnownIssue |
| | | } |
| | | </call> |
| | | </sequence> |
| | |
| | | <message log="1" level="'Error'"> |
| | | 'No targetEntryUUID could be found in the changelog entry' |
| | | </message> |
| | | <call function="'testFailed'"/> |
| | | <if expr="myKnownIssue == None"> |
| | | <call function="'testFailed'"/> |
| | | <else> |
| | | <call function="'setKnownIssue'"> |
| | | { 'issueId' : myKnownIssue } |
| | | </call> |
| | | </else> |
| | | </if> |
| | | </sequence> |
| | | </else> |
| | | </if> |
| | |
| | | <call function="'searchString'"> |
| | | { 'returnString' : ecl_newRDN, |
| | | 'expectedString' : newRDN, |
| | | 'searchType' : 'exact-case-insensitive' |
| | | 'searchType' : 'exact-case-insensitive', |
| | | 'knownIssue' : myKnownIssue |
| | | } |
| | | </call> |
| | | </sequence> |
| | |
| | | <message log="1" level="'Error'"> |
| | | 'No newRDN could be found in the changelog entry' |
| | | </message> |
| | | <call function="'testFailed'"/> |
| | | <if expr="myKnownIssue == None"> |
| | | <call function="'testFailed'"/> |
| | | <else> |
| | | <call function="'setKnownIssue'"> |
| | | { 'issueId' : myKnownIssue } |
| | | </call> |
| | | </else> |
| | | </if> |
| | | </sequence> |
| | | </else> |
| | | </if> |
| | |
| | | <call function="'searchString'"> |
| | | { 'returnString' : ecl_deleteOldRDN, |
| | | 'expectedString' : deleteOldRDN, |
| | | 'searchType' : 'exact-case-sensitive' |
| | | 'searchType' : 'exact-case-sensitive', |
| | | 'knownIssue' : myKnownIssue |
| | | } |
| | | </call> |
| | | </sequence> |
| | |
| | | <message log="1" level="'Error'"> |
| | | 'No deleteOldRDN could be found in the changelog entry' |
| | | </message> |
| | | <call function="'testFailed'"/> |
| | | <if expr="myKnownIssue == None"> |
| | | <call function="'testFailed'"/> |
| | | <else> |
| | | <call function="'setKnownIssue'"> |
| | | { 'issueId' : myKnownIssue } |
| | | </call> |
| | | </else> |
| | | </if> |
| | | </sequence> |
| | | </else> |
| | | </if> |
| | |
| | | <call function="'searchString'"> |
| | | { 'returnString' : ecl_newSuperior, |
| | | 'expectedString' : newSuperior, |
| | | 'searchType' : 'exact-case-insensitive' |
| | | 'searchType' : 'exact-case-insensitive', |
| | | 'knownIssue' : myKnownIssue |
| | | } |
| | | </call> |
| | | </sequence> |
| | |
| | | <message log="1" level="'Error'"> |
| | | 'No newSuperior could be found in the changelog entry' |
| | | </message> |
| | | <call function="'testFailed'"/> |
| | | <if expr="myKnownIssue == None"> |
| | | <call function="'testFailed'"/> |
| | | <else> |
| | | <call function="'setKnownIssue'"> |
| | | { 'issueId' : myKnownIssue } |
| | | </call> |
| | | </else> |
| | | </if> |
| | | </sequence> |
| | | </else> |
| | | </if> |
| | |
| | | 'Expected values %s could not be found in %s' \ |
| | | % (valueList, ecl_valueList) |
| | | </message> |
| | | <call function="'testFailed'"/> |
| | | <if expr="myKnownIssue == None"> |
| | | <call function="'testFailed'"/> |
| | | <else> |
| | | <call function="'setKnownIssue'"> |
| | | { 'issueId' : myKnownIssue } |
| | | </call> |
| | | </else> |
| | | </if> |
| | | </sequence> |
| | | </else> |
| | | </if> |
| | |
| | | <message log="1" level="'Error'"> |
| | | 'No %s could be found in the changes' % attr |
| | | </message> |
| | | <call function="'testFailed'"/> |
| | | <if expr="myKnownIssue == None"> |
| | | <call function="'testFailed'"/> |
| | | <else> |
| | | <call function="'setKnownIssue'"> |
| | | { 'issueId' : myKnownIssue } |
| | | </call> |
| | | </else> |
| | | </if> |
| | | </sequence> |
| | | </else> |
| | | </if> |
| | |
| | | 'Expected change %s could not be found in %s'\ |
| | | % (mod, ecl_changesList) |
| | | </message> |
| | | <call function="'testFailed'"/> |
| | | <if expr="myKnownIssue == None"> |
| | | <call function="'testFailed'"/> |
| | | <else> |
| | | <call function="'setKnownIssue'"> |
| | | { 'issueId' : myKnownIssue } |
| | | </call> |
| | | </else> |
| | | </if> |
| | | </sequence> |
| | | </else> |
| | | </if> |
| | |
| | | <message log="1" level="'Error'"> |
| | | 'No changes could be found in the changelog entry' |
| | | </message> |
| | | <call function="'testFailed'"/> |
| | | <if expr="myKnownIssue == None"> |
| | | <call function="'testFailed'"/> |
| | | <else> |
| | | <call function="'setKnownIssue'"> |
| | | { 'issueId' : myKnownIssue } |
| | | </call> |
| | | </else> |
| | | </if> |
| | | </sequence> |
| | | </else> |
| | | </if> |
| | | </if> |
| | | |
| | | <if expr="includeAttrs"> |
| | | <iterate var="attr" in="includeAttrs.keys()"> |
| | | <sequence> |
| | | <message> |
| | | 'checkChangelogEntry: Checking include-attribute: %s' % attr |
| | | </message> |
| | | <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() |
| | | </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> |
| | | <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> |
| | | </sequence> |
| | | </iterate> |
| | | </if> |
| | | |
| | | </sequence> |
| | | </function> |
| | | |
| | | <!-- PSEARCH --> |
| | | <function name="psearch" scope="local"> |
| | | <function-prolog> |
| | | This function performs a psearch request |
| | | </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="dsInstanceHost" |
| | | type="optional" |
| | | default="STAF_REMOTE_HOSTNAME"> |
| | | <function-arg-description> |
| | | Target directory server hostname or IP address |
| | | </function-arg-description> |
| | | <function-arg-property name="type" value="hostname" /> |
| | | </function-arg-def> |
| | | <function-arg-def name="dsInstancePort" type="required"> |
| | | <function-arg-description> |
| | | Directory server port number |
| | | </function-arg-description> |
| | | <function-arg-property name="type" value="Port number"/> |
| | | </function-arg-def> |
| | | <function-arg-def name="dsInstanceDn" type="required"> |
| | | <function-arg-description> |
| | | Directory server dn |
| | | </function-arg-description> |
| | | <function-arg-property name="type" value="string"/> |
| | | </function-arg-def> |
| | | <function-arg-def name="dsInstancePswd" type="required"> |
| | | <function-arg-description> |
| | | Bind password |
| | | </function-arg-description> |
| | | <function-arg-property name="type" value="string"/> |
| | | </function-arg-def> |
| | | <function-arg-def name="dsBaseDn" type="required"> |
| | | <function-arg-description> |
| | | Specify the base DN for which to perform the verification |
| | | </function-arg-description> |
| | | <function-arg-property name="type" value="dn"/> |
| | | </function-arg-def> |
| | | <function-arg-def name="nbrOfThread" type="optional" default="1"> |
| | | <function-arg-description> |
| | | Specify the number of threads to use |
| | | </function-arg-description> |
| | | <function-arg-property name="type" value="string"/> |
| | | </function-arg-def> |
| | | <function-arg-def name="outputFile" type="optional"> |
| | | <function-arg-description> |
| | | Specify the output file path |
| | | </function-arg-description> |
| | | <function-arg-property name="type" value="string"/> |
| | | </function-arg-def> |
| | | <function-arg-def name="operation" type="optional"> |
| | | <function-arg-description> |
| | | Specify the opeation type |
| | | </function-arg-description> |
| | | <function-arg-property name="type" value="string"/> |
| | | </function-arg-def> |
| | | <function-arg-def name="display" type="optional"> |
| | | <function-arg-description> |
| | | Optional do not perform any display in terminal |
| | | </function-arg-description> |
| | | <function-arg-property name="type" value="boolean"/> |
| | | </function-arg-def> |
| | | <function-arg-def name="ldif" type="optional"> |
| | | <function-arg-description> |
| | | Optional output file in ldif format |
| | | </function-arg-description> |
| | | <function-arg-property name="type" value="boolean"/> |
| | | </function-arg-def> |
| | | <function-arg-def name="expectedRC" type="optional" default="0"> |
| | | <function-arg-description> |
| | | Expected return code value. Default value is 0 |
| | | Wildcard 'noCheck' to not check the RC |
| | | </function-arg-description> |
| | | <function-arg-property name="type" value="integer"/> |
| | | </function-arg-def> |
| | | </function-map-args> |
| | | |
| | | <sequence> |
| | | |
| | | <script> |
| | | if is_windows_platform(location): |
| | | jstaf_jarfile='%s\\bin\\JSTAF.jar' % REMOTE_STAF_ROOT |
| | | else: |
| | | jstaf_jarfile='%s/lib/JSTAF.jar' % REMOTE_STAF_ROOT |
| | | </script> |
| | | |
| | | <!-- Build the command --> |
| | | <script> |
| | | STAFCmdParamsList=[] |
| | | STAFCmdParams='' |
| | | |
| | | if dsInstanceHost: |
| | | STAFCmdParamsList.append('-h %s' % dsInstanceHost) |
| | | |
| | | if dsInstancePort: |
| | | STAFCmdParamsList.append('-p %s' % dsInstancePort) |
| | | |
| | | if dsInstanceDn: |
| | | STAFCmdParamsList.append('-D %s' % dsInstanceDn) |
| | | |
| | | if dsBaseDn: |
| | | STAFCmdParamsList.append('-b %s' % dsBaseDn) |
| | | |
| | | if dsInstancePswd: |
| | | STAFCmdParamsList.append('-w %s' % dsInstancePswd) |
| | | |
| | | if display: |
| | | STAFCmdParamsList.append('-s') |
| | | |
| | | if ldif: |
| | | STAFCmdParamsList.append('-l') |
| | | |
| | | if outputFile: |
| | | STAFCmdParamsList.append('-f %s' % outputFile) |
| | | |
| | | if nbrOfThread: |
| | | STAFCmdParamsList.append('-n %s' % nbrOfThread) |
| | | |
| | | if operation: |
| | | STAFCmdParamsList.append('-o %s' % operation) |
| | | |
| | | STAFCmdParams=' '.join(STAFCmdParamsList) |
| | | |
| | | STAFCmd='PSearch' |
| | | |
| | | if is_windows_platform(location): |
| | | separator=';' |
| | | else: |
| | | separator=':' |
| | | |
| | | ldapjdkPath='%s/ldapjdk' % remote.java |
| | | ldapjdk_jarfile='%s/ldapjdk.jar' % ldapjdkPath |
| | | cp = 'CLASSPATH=%s%s%s%s.' \ |
| | | % (ldapjdk_jarfile,separator,jstaf_jarfile,separator) |
| | | |
| | | env = ['%s' % cp] |
| | | |
| | | </script> |
| | | |
| | | <message> |
| | | '%s %s' % (STAFCmd, STAFCmdParams) |
| | | </message> |
| | | |
| | | <call function="'runCommand'" > |
| | | { |
| | | 'name' : 'PSearch' , |
| | | 'command' : '%s/bin/java' % JAVA_HOME , |
| | | 'arguments' : '%s %s' % (STAFCmd, STAFCmdParams) , |
| | | 'location' : location , |
| | | 'path' : '%s/ldapjdk' % remote.java , |
| | | 'envCmd' : env , |
| | | 'expectedRC' : expectedRC |
| | | } |
| | | </call> |
| | | |
| | | <return> |
| | | STAXResult |
| | | </return> |
| | | |
| | | </sequence> |
| | | </function> |
| | | |
| | | |
| | | </stax> |