5693N/A<?xml version="1.0" encoding="UTF-8" standalone="no"?>
5693N/A<!DOCTYPE stax SYSTEM "/shared/stax.dtd">
5693N/A<!--
5693N/A ! CDDL HEADER START
5693N/A !
5693N/A ! The contents of this file are subject to the terms of the
5693N/A ! Common Development and Distribution License, Version 1.0 only
5693N/A ! (the "License"). You may not use this file except in compliance
5693N/A ! with the License.
5693N/A !
5693N/A ! You can obtain a copy of the license at
5693N/A ! trunk/opends/resource/legal-notices/CDDLv1_0.txt
5693N/A ! or http://forgerock.org/license/CDDLv1.0.html.
5693N/A ! See the License for the specific language governing permissions
5693N/A ! and limitations under the License.
5693N/A !
5693N/A ! When distributing Covered Code, include this CDDL HEADER in each
5693N/A ! file and include the License file at
5693N/A ! trunk/opends/resource/legal-notices/CDDLv1_0.txt. If applicable,
5693N/A ! add the following below this CDDL HEADER, with the fields enclosed
5693N/A ! by brackets "[]" replaced with your own identifying information:
5693N/A ! Portions Copyright [yyyy] [name of copyright owner]
5693N/A !
5693N/A ! CDDL HEADER END
5693N/A !
6350N/A ! Copyright 2011-2013 ForgeRock AS
5693N/A ! -->
5693N/A<stax>
5693N/A
6350N/A <!-- Definition of Test Cases -->
5693N/A
5693N/A <!--- Test Cases : Basic : Operations -->
5693N/A
5693N/A <!--- Test Case information
5693N/A #@TestMarker Basic: operations
5693N/A #@TestName Basic: operations
6350N/A #@TestID basic_operations_000
6350N/A #@TestPurpose Preamble
6350N/A #@TestPreamble Common Setup
6350N/A #@TestStep Import sample data
6350N/A #@TestPostamble Common Cleanup
6350N/A #@TestResult Test is successful if the result code is 0
6350N/A -->
6350N/A <function name="basic_operations_000" scope="local">
6350N/A <testcase name="getTestCaseName('Preamble')">
6350N/A <sequence>
6350N/A <call function="'testCase_Preamble'"/>
6350N/A
6350N/A <script>
6350N/A ldifTemplate = '%s/import_Entries_100k.template' % remote.temp
6350N/A </script>
6350N/A
6350N/A <message>
6350N/A 'Preamble: Stop DS running on port %s' % (DIRECTORY_INSTANCE_PORT)
6350N/A </message>
6350N/A
6350N/A <call function="'StopDsWithScript'">
6350N/A { 'location' : STAF_REMOTE_HOSTNAME,
6350N/A 'dsHost' : DIRECTORY_INSTANCE_HOST,
6350N/A 'dsAdminPort' : DIRECTORY_INSTANCE_ADMIN_PORT,
6350N/A 'dsBindDN' : DIRECTORY_INSTANCE_DN,
6350N/A 'dsBindPwd' : DIRECTORY_INSTANCE_PSWD }
6350N/A </call>
6350N/A
6350N/A <!-- Check if 'ldifFile' exists -->
6350N/A <call function="'GetEntry'">
6350N/A {
6350N/A 'location' : STAF_REMOTE_HOSTNAME ,
6350N/A 'entry' : ldifFile ,
6350N/A 'attribute' : 'TYPE'
6350N/A }
6350N/A </call>
6350N/A <if expr="RC == 48">
6350N/A <sequence>
6350N/A <message>
6350N/A 'Preamble: File %s does not exist, create it' % ldifFile
6350N/A </message>
6350N/A
6350N/A <message>
6350N/A 'Preamble: Make an make-ldif template file'
6350N/A </message>
6350N/A
6350N/A <call function="'MakeAMakeLdifTemplate'">
6350N/A {
6350N/A 'numEntries' : numberOfEntries ,
6350N/A 'additionalAttributes' : True ,
6350N/A 'extraLine' : 'userpassword: password' ,
6350N/A 'templateFile' : ldifTemplate ,
6350N/A 'templateLocation' : STAF_REMOTE_HOSTNAME
6350N/A }
6350N/A </call>
6350N/A
6350N/A <message>
6350N/A 'Preamble: Make the ldif file'
6350N/A </message>
6350N/A
6350N/A <call function="'MakeLdifWithScript'">
6350N/A {
6350N/A 'location' : STAF_REMOTE_HOSTNAME ,
6350N/A 'templateFile' : ldifTemplate ,
6350N/A 'ldifFile' : ldifFile
6350N/A }
6350N/A </call>
6350N/A </sequence>
6350N/A <else>
6350N/A <message>
6350N/A 'Preamble: File %s exists, do nothing' % ldifFile
6350N/A </message>
6350N/A </else>
6350N/A </if>
6350N/A
6350N/A <message>
6350N/A 'Preamble: Import the ldif file'
6350N/A </message>
6350N/A
6350N/A <call function="'ImportLdifWithScript'">
6350N/A {
6350N/A 'location' : STAF_REMOTE_HOSTNAME ,
6350N/A 'ldifFile' : ldifFile ,
6350N/A 'backEnd' : 'userRoot'
6350N/A }
6350N/A </call>
6350N/A
6350N/A <message>
6350N/A 'Preamble: Start DS to run on port %s' % DIRECTORY_INSTANCE_PORT
6350N/A </message>
6350N/A
6350N/A <call function="'StartDsWithScript'">
6350N/A { 'location' : STAF_REMOTE_HOSTNAME }
6350N/A </call>
6350N/A
6350N/A <call function="'testCase_Postamble'"/>
6350N/A
6350N/A </sequence>
6350N/A </testcase>
6350N/A </function>
6350N/A
6350N/A <!--- Test Case information
6350N/A #@TestMarker Basic: operations
6350N/A #@TestName Basic: operations
5693N/A #@TestID basic_operations_001
5693N/A #@TestPurpose Verify basic LDAP authentication operations
5693N/A #@TestPreamble Common Setup
5693N/A #@TestStep Run LDAP authentication operations
5693N/A #@TestPostamble Common Cleanup
5693N/A #@TestResult Test is successful if the result code is 0
5693N/A -->
5693N/A <function name="basic_operations_001" scope="local">
5693N/A <testcase name="getTestCaseName('authrate')">
5693N/A <sequence>
5693N/A <try>
5693N/A <sequence>
5693N/A <call function="'testCase_Preamble'"/>
5693N/A <message>
5693N/A 'Test Name = %s' % STAXCurrentTestcase
5693N/A </message>
5693N/A
5693N/A <call function="'testStep'">
5693N/A { 'stepMessage' : 'Authrate.' }
5693N/A </call>
6350N/A
6350N/A <timer duration="timerDuration">
6350N/A <sequence>
6350N/A <call function="'authRate'">
6350N/A { 'dsInstanceHost' : server.host,
6350N/A 'dsInstancePort' : server.port,
6350N/A 'dsInstanceDn' : '"uid=user.%s,ou=People,dc=com"',
6350N/A 'dsInstancePswd' : 'password',
6350N/A 'extraParams' : '-g "rand(0,%s)" -c 10' % (numberOfEntries - 1),
6350N/A 'outputFile' : 'authrate.res',
6350N/A 'outputPath' : remote.temp
6350N/A }
6350N/A </call>
6350N/A </sequence>
6350N/A </timer>
6350N/A
6350N/A <call function="'getFile'">
6350N/A { 'location' : STAF_REMOTE_HOSTNAME ,
6350N/A 'filename' : '%s/authrate.res' % remote.temp
5693N/A }
5693N/A </call>
6350N/A <message>
6350N/A cmdResult
6350N/A </message>
6350N/A
6350N/A <script>
6350N/A import re
6350N/A f=open('%s/authrate.res' % remote.temp)
6350N/A errorFound=False
6350N/A for line in f.readlines():
6350N/A line = line.replace('\n','')
6350N/A if re.search('^[0-9].*', line) is not None:
6350N/A if line.split()[7] != '0.0':
6350N/A errorFound=True
6350N/A </script>
6350N/A <if expr="errorFound == False">
6350N/A <tcstatus result="'pass'"/>
6350N/A <else>
6350N/A <sequence>
6350N/A <message>'Error found during authrate'</message>
6350N/A <tcstatus result="'fail'"/>
6350N/A </sequence>
6350N/A </else>
6350N/A </if>
6350N/A
6350N/A <call function="'testStep'">
6350N/A { 'stepMessage' : 'Do search on the server.' }
6350N/A </call>
6350N/A
6350N/A <call function="'ldapSearchWithScript'">
6350N/A {
6350N/A 'dsInstanceHost' : server.host,
6350N/A 'dsInstancePort' : server.port,
6350N/A 'dsInstanceDn' : server.dn,
6350N/A 'dsInstancePswd' : server.password,
6350N/A 'dsBaseDN' : 'dc=com',
6350N/A 'dsFilter' : 'objectclass=*',
6350N/A 'dsAttributes' : 'dn'
6350N/A }
6350N/A </call>
5693N/A </sequence>
5693N/A
5693N/A <catch exception="'STAXException'" typevar="eType" var="eInfo">
5693N/A <message log="1" level="'fatal'">
5693N/A '%s: Test failed. eInfo(%s)' % (eType,eInfo)
5693N/A </message>
5693N/A </catch>
5693N/A <finally>
5693N/A <sequence>
5693N/A <call function="'testCase_Postamble'"/>
5693N/A </sequence>
5693N/A </finally>
5693N/A </try>
5693N/A </sequence>
5693N/A </testcase>
5693N/A </function>
5693N/A
5693N/A <!--- Test Case information
5693N/A #@TestMarker Basic: operations
5693N/A #@TestName Basic: operations
5693N/A #@TestID basic_operations_002
5693N/A #@TestPurpose Verify basic LDAP search operations
5693N/A #@TestPreamble Common Setup
5693N/A #@TestStep Run LDAP search operations
5693N/A #@TestPostamble Common Cleanup
5693N/A #@TestResult Test is successful if the result code is 0
5693N/A -->
5693N/A <function name="basic_operations_002" scope="local">
6350N/A <testcase name="getTestCaseName('searchrate')">
5693N/A <sequence>
5693N/A <try>
5693N/A <sequence>
5693N/A <call function="'testCase_Preamble'"/>
5693N/A <message>
5693N/A 'Test Name = %s' % STAXCurrentTestcase
5693N/A </message>
5693N/A
5693N/A <call function="'testStep'">
5693N/A { 'stepMessage' : 'SearchRate.' }
5693N/A </call>
5693N/A
6350N/A <timer duration="timerDuration">
6350N/A <sequence>
6350N/A <call function="'searchRate'">
6350N/A { 'dsInstanceHost' : server.host,
6350N/A 'dsInstancePort' : server.port,
6350N/A 'dsInstanceDn' : server.dn,
6350N/A 'dsInstancePswd' : server.password,
6350N/A 'dsBaseDN' : '"uid=user.%s,ou=People,dc=com"',
6350N/A 'extraParams' : '-g "rand(0,%s)" -c 10 "objectclass=*"' % (numberOfEntries - 1),
6350N/A 'outputFile' : 'searchrate.res',
6350N/A 'outputPath' : remote.temp
6350N/A }
6350N/A </call>
6350N/A </sequence>
6350N/A </timer>
6350N/A
6350N/A <call function="'getFile'">
6350N/A { 'location' : STAF_REMOTE_HOSTNAME ,
6350N/A 'filename' : '%s/searchrate.res' % remote.temp
5693N/A }
5693N/A </call>
6350N/A <message>
6350N/A cmdResult
6350N/A </message>
6350N/A
6350N/A <script>
6350N/A import re
6350N/A f=open('%s/searchrate.res' % remote.temp)
6350N/A errorFound=False
6350N/A for line in f.readlines():
6350N/A line = line.replace('\n','')
6350N/A if re.search('^[0-9].*', line) is not None:
6350N/A if line.split()[7] != '0.0':
6350N/A errorFound=True
6350N/A </script>
6350N/A <if expr="errorFound == False">
6350N/A <tcstatus result="'pass'"/>
6350N/A <else>
6350N/A <sequence>
6350N/A <message>'Error found during searchrate'</message>
6350N/A <tcstatus result="'fail'"/>
6350N/A </sequence>
6350N/A </else>
6350N/A </if>
6350N/A
6350N/A <call function="'testStep'">
6350N/A { 'stepMessage' : 'Do search on the server.' }
6350N/A </call>
6350N/A
6350N/A <call function="'ldapSearchWithScript'">
6350N/A {
6350N/A 'dsInstanceHost' : server.host,
6350N/A 'dsInstancePort' : server.port,
6350N/A 'dsInstanceDn' : server.dn,
6350N/A 'dsInstancePswd' : server.password,
6350N/A 'dsBaseDN' : 'dc=com',
6350N/A 'dsFilter' : 'objectclass=*',
6350N/A 'dsAttributes' : 'dn'
6350N/A }
6350N/A </call>
5693N/A </sequence>
5693N/A
5693N/A <catch exception="'STAXException'" typevar="eType" var="eInfo">
5693N/A <message log="1" level="'fatal'">
5693N/A '%s: Test failed. eInfo(%s)' % (eType,eInfo)
5693N/A </message>
5693N/A </catch>
5693N/A <finally>
5693N/A <sequence>
5693N/A <call function="'testCase_Postamble'"/>
5693N/A </sequence>
5693N/A </finally>
5693N/A </try>
5693N/A </sequence>
5693N/A </testcase>
5693N/A </function>
5693N/A
5693N/A <!--- Test Case information
5693N/A #@TestMarker Basic: operations
5693N/A #@TestName Basic: operations
5693N/A #@TestID basic_operations_003
5693N/A #@TestPurpose Verify basic LDAP modify operations
5693N/A #@TestPreamble Common Setup
5693N/A #@TestStep Run LDAP modify operations
5693N/A #@TestPostamble Common Cleanup
5693N/A #@TestResult Test is successful if the result code is 0
5693N/A -->
5693N/A <function name="basic_operations_003" scope="local">
5693N/A <testcase name="getTestCaseName('modrate')">
5693N/A <sequence>
5693N/A <try>
5693N/A <sequence>
5693N/A <call function="'testCase_Preamble'"/>
5693N/A <message>
5693N/A 'Test Name = %s' % STAXCurrentTestcase
5693N/A </message>
5693N/A
5693N/A <call function="'testStep'">
5693N/A { 'stepMessage' : 'ModRate.' }
5693N/A </call>
5693N/A
6350N/A <timer duration="timerDuration">
6350N/A <sequence>
6350N/A <call function="'modRate'">
6350N/A { 'dsInstanceHost' : server.host,
6350N/A 'dsInstancePort' : server.port,
6350N/A 'dsInstanceDn' : server.dn,
6350N/A 'dsInstancePswd' : server.password,
6350N/A 'dsBaseDN' : '"uid=user.%s,ou=People,dc=com"',
6350N/A 'extraParams' : '-g "rand(0,%s)" -g "randstr(40)" -c 10' % (numberOfEntries - 1),
6350N/A 'attribute' : 'description' ,
6350N/A 'formatString' : '"%s"',
6350N/A 'outputFile' : 'modrate.res',
6350N/A 'outputPath' : remote.temp
6350N/A }
6350N/A </call>
6350N/A </sequence>
6350N/A </timer>
6350N/A
6350N/A <call function="'getFile'">
6350N/A { 'location' : STAF_REMOTE_HOSTNAME ,
6350N/A 'filename' : '%s/modrate.res' % remote.temp
5693N/A }
5693N/A </call>
6350N/A <message>
6350N/A cmdResult
6350N/A </message>
6350N/A
6350N/A <script>
6350N/A import re
6350N/A f=open('%s/modrate.res' % remote.temp)
6350N/A errorFound=False
6350N/A for line in f.readlines():
6350N/A line = line.replace('\n','')
6350N/A if re.search('^[0-9].*', line) is not None:
6350N/A if line.split()[7] != '0.0':
6350N/A errorFound=True
6350N/A </script>
6350N/A <if expr="errorFound == False">
6350N/A <tcstatus result="'pass'"/>
6350N/A <else>
6350N/A <sequence>
6350N/A <message>'Error found during modrate'</message>
6350N/A <tcstatus result="'fail'"/>
6350N/A </sequence>
6350N/A </else>
6350N/A </if>
6350N/A
6350N/A <call function="'testStep'">
6350N/A { 'stepMessage' : 'Do search on the server.' }
6350N/A </call>
6350N/A
6350N/A <call function="'ldapSearchWithScript'">
6350N/A {
6350N/A 'dsInstanceHost' : server.host,
6350N/A 'dsInstancePort' : server.port,
6350N/A 'dsInstanceDn' : server.dn,
6350N/A 'dsInstancePswd' : server.password,
6350N/A 'dsBaseDN' : 'dc=com',
6350N/A 'dsFilter' : 'objectclass=*',
6350N/A 'dsAttributes' : 'dn'
6350N/A }
6350N/A </call>
6350N/A </sequence>
6350N/A
6350N/A <catch exception="'STAXException'" typevar="eType" var="eInfo">
6350N/A <message log="1" level="'fatal'">
6350N/A '%s: Test failed. eInfo(%s)' % (eType,eInfo)
6350N/A </message>
6350N/A </catch>
6350N/A <finally>
6350N/A <sequence>
6350N/A <call function="'testCase_Postamble'"/>
6350N/A </sequence>
6350N/A </finally>
6350N/A </try>
6350N/A </sequence>
6350N/A </testcase>
6350N/A </function>
6350N/A
6350N/A <!--- Test Case information
6350N/A #@TestMarker Basic: operations
6350N/A #@TestName Basic: operations
6350N/A #@TestID basic_operations_004
6350N/A #@TestPurpose Verify basic LDAP modify operations
6350N/A #@TestPreamble Common Setup
6350N/A #@TestStep Run LDAP add/delete operations
6350N/A #@TestPostamble Common Cleanup
6350N/A #@TestResult Test is successful if the result code is 0
6350N/A -->
6350N/A <function name="basic_operations_004" scope="local">
6350N/A <testcase name="getTestCaseName('addrate-delrate')">
6350N/A <sequence>
6350N/A <try>
6350N/A <sequence>
6350N/A <call function="'testCase_Preamble'"/>
6350N/A <message>
6350N/A 'Test Name = %s' % STAXCurrentTestcase
6350N/A </message>
6350N/A
6350N/A <parallel>
6350N/A <block name="'addRate'">
6350N/A <sequence>
6350N/A <call function="'testStep'">
6350N/A { 'stepMessage' : 'AddRate.' }
6350N/A </call>
6350N/A
6350N/A <timer duration="timerDuration">
6350N/A <sequence>
6350N/A <call function="'addRate'">
6350N/A { 'dsInstanceHost' : server.host,
6350N/A 'dsInstancePort' : server.port,
6350N/A 'dsInstanceDn' : server.dn,
6350N/A 'dsInstancePswd' : server.password,
6350N/A 'templateFile' : addTemplate,
6350N/A 'extraParams' : '-g "inc(%s,%s)" -g "randstr(5)" -g "randstr(5)" -g "randstr(5)" -g "randstr(5)" -m 100000' \
6350N/A % (numberOfEntries, 2 * numberOfEntries),
6350N/A 'outputFile' : 'addrate.res',
6350N/A 'outputPath' : remote.temp
6350N/A }
6350N/A </call>
6350N/A </sequence>
6350N/A </timer>
6350N/A
6350N/A <call function="'getFile'">
6350N/A { 'location' : STAF_REMOTE_HOSTNAME ,
6350N/A 'filename' : '%s/addrate.res' % remote.temp
6350N/A }
6350N/A </call>
6350N/A <message>
6350N/A cmdResult
6350N/A </message>
6350N/A
6350N/A <script>
6350N/A import re
6350N/A f=open('%s/addrate.res' % remote.temp)
6350N/A errorFound=False
6350N/A for line in f.readlines():
6350N/A line = line.replace('\n','')
6350N/A if re.search('^[0-9].*', line) is not None:
6350N/A if line.split()[7] != '0.0':
6350N/A errorFound=True
6350N/A </script>
6350N/A <if expr="errorFound == False">
6350N/A <tcstatus result="'pass'"/>
6350N/A <else>
6350N/A <sequence>
6350N/A <message>'Error found during addrate'</message>
6350N/A <tcstatus result="'fail'"/>
6350N/A </sequence>
6350N/A </else>
6350N/A </if>
6350N/A </sequence>
6350N/A </block>
6350N/A
6350N/A <block name="'delRate'">
6350N/A <sequence>
6350N/A <call function="'testStep'">
6350N/A { 'stepMessage' : 'DelRate.' }
6350N/A </call>
6350N/A
6350N/A <timer duration="timerDuration">
6350N/A <sequence>
6350N/A <call function="'delRate'">
6350N/A { 'dsInstanceHost' : server.host,
6350N/A 'dsInstancePort' : server.port,
6350N/A 'dsInstanceDn' : server.dn,
6350N/A 'dsInstancePswd' : server.password,
6350N/A 'dsBaseDN' : '"uid=user.%s,ou=People,dc=com"',
6350N/A 'extraParams' : '-g "inc(0,%s)" -m 100000' % (numberOfEntries - 1),
6350N/A 'outputFile' : 'delrate.res',
6350N/A 'outputPath' : remote.temp
6350N/A }
6350N/A </call>
6350N/A </sequence>
6350N/A </timer>
6350N/A
6350N/A <call function="'getFile'">
6350N/A { 'location' : STAF_REMOTE_HOSTNAME ,
6350N/A 'filename' : '%s/delrate.res' % remote.temp
6350N/A }
6350N/A </call>
6350N/A <message>
6350N/A cmdResult
6350N/A </message>
6350N/A
6350N/A <script>
6350N/A import re
6350N/A f=open('%s/delrate.res' % remote.temp)
6350N/A errorFound=False
6350N/A for line in f.readlines():
6350N/A line = line.replace('\n','')
6350N/A if re.search('^[0-9].*', line) is not None:
6350N/A if line.split()[7] != '0.0':
6350N/A errorFound=True
6350N/A </script>
6350N/A <if expr="errorFound == False">
6350N/A <tcstatus result="'pass'"/>
6350N/A <else>
6350N/A <sequence>
6350N/A <message>'Error found during delrate'</message>
6350N/A <tcstatus result="'fail'"/>
6350N/A </sequence>
6350N/A </else>
6350N/A </if>
6350N/A </sequence>
6350N/A </block>
6350N/A </parallel>
6350N/A
6350N/A <call function="'testStep'">
6350N/A { 'stepMessage' : 'Do search on the server and check number of entries.' }
6350N/A </call>
6350N/A
6350N/A <call function="'ldapSearchWithScript'">
6350N/A {
6350N/A 'dsInstanceHost' : server.host,
6350N/A 'dsInstancePort' : server.port,
6350N/A 'dsInstanceDn' : server.dn,
6350N/A 'dsInstancePswd' : server.password,
6350N/A 'dsCountEntries' : 'True' ,
6350N/A 'dsBaseDN' : 'dc=com',
6350N/A 'dsFilter' : 'objectclass=*',
6350N/A 'dsAttributes' : 'dn',
6350N/A 'outputFile' : 'ldapsearch_add_del.out',
6350N/A 'outputPath' : remote.temp
6350N/A }
6350N/A </call>
6350N/A
6350N/A <call function="'grep'">
6350N/A {
6350N/A 'location' : STAF_REMOTE_HOSTNAME ,
6350N/A 'filename' : '%s/ldapsearch_add_del.out' % remote.temp ,
6350N/A 'testString': 'Total number of matching entries: 100002'
6350N/A }
6350N/A </call>
5693N/A </sequence>
5693N/A
5693N/A <catch exception="'STAXException'" typevar="eType" var="eInfo">
5693N/A <message log="1" level="'fatal'">
5693N/A '%s: Test failed. eInfo(%s)' % (eType,eInfo)
5693N/A </message>
5693N/A </catch>
5693N/A <finally>
5693N/A <sequence>
5693N/A <call function="'testCase_Postamble'"/>
5693N/A </sequence>
5693N/A </finally>
5693N/A </try>
5693N/A </sequence>
5693N/A </testcase>
5693N/A </function>
5693N/A
5693N/A</stax>