mirror of https://github.com/OpenIdentityPlatform/OpenDJ.git

gary_williams
03.06.2008 335d33407779b92aec6f06294a02e29f1ed553aa
Tests for Solaris and RFC 4876 Schema Elements
2 files deleted
8 files added
9 files modified
5138 ■■■■■ changed files
opends/tests/staf-tests/functional-tests/shared/data/schema/ldifs/rfc2247_1.ldif 6 ●●●● patch | view | raw | blame | history
opends/tests/staf-tests/functional-tests/shared/data/schema/ldifs/rfc2247_2.ldif 6 ●●●● patch | view | raw | blame | history
opends/tests/staf-tests/functional-tests/shared/data/schema/ldifs/rfc2247_3.ldif 2 ●●● patch | view | raw | blame | history
opends/tests/staf-tests/functional-tests/shared/data/schema/ldifs/rfc2247_4.ldif 2 ●●● patch | view | raw | blame | history
opends/tests/staf-tests/functional-tests/shared/data/schema/ldifs/rfc2377.ldif 18 ●●●● patch | view | raw | blame | history
opends/tests/staf-tests/functional-tests/shared/data/schema/solaris/rfc4876.ldif 167 ●●●●● patch | view | raw | blame | history
opends/tests/staf-tests/functional-tests/shared/data/schema/solaris/solaris.ldif 180 ●●●●● patch | view | raw | blame | history
opends/tests/staf-tests/functional-tests/testcases/schema/dynamic/schema_dynamic.xml 121 ●●●●● patch | view | raw | blame | history
opends/tests/staf-tests/functional-tests/testcases/schema/dynamic/schema_dynamic_tests.xml 397 ●●●●● patch | view | raw | blame | history
opends/tests/staf-tests/functional-tests/testcases/schema/rfc/schema_rfc.xml 177 ●●●●● patch | view | raw | blame | history
opends/tests/staf-tests/functional-tests/testcases/schema/rfc/schema_rfc_tests.xml 1990 ●●●●● patch | view | raw | blame | history
opends/tests/staf-tests/functional-tests/testcases/schema/schema.xml 121 ●●●●● patch | view | raw | blame | history
opends/tests/staf-tests/functional-tests/testcases/schema/schema_cleanup.xml 86 ●●●● patch | view | raw | blame | history
opends/tests/staf-tests/functional-tests/testcases/schema/schema_dynamic.xml 372 ●●●●● patch | view | raw | blame | history
opends/tests/staf-tests/functional-tests/testcases/schema/schema_rfc_tests.xml 1039 ●●●●● patch | view | raw | blame | history
opends/tests/staf-tests/functional-tests/testcases/schema/schema_setup.xml 155 ●●●● patch | view | raw | blame | history
opends/tests/staf-tests/functional-tests/testcases/schema/solaris/schema_solaris.xml 119 ●●●●● patch | view | raw | blame | history
opends/tests/staf-tests/functional-tests/testcases/schema/solaris/schema_solaris_tests.xml 140 ●●●●● patch | view | raw | blame | history
opends/tests/staf-tests/shared/functions/utils.xml 40 ●●●● patch | view | raw | blame | history
opends/tests/staf-tests/functional-tests/shared/data/schema/ldifs/rfc2247_1.ldif
@@ -23,19 +23,19 @@
#      Copyright 2006-2008 Sun Microsystems, Inc.
#
dn: dc=rfc-2247-tests,dc=example,dc=com
dn: dc=rfc-2247-tests,o=rfc tests,dc=example,dc=com
dc: rfc-2247-tests
o: Crucial RFC Tests 
objectclass: top
objectclass: dcObject
objectclass: organization
dn: ou=People,dc=rfc-2247-tests,dc=example,dc=com
dn: ou=People,dc=rfc-2247-tests,o=rfc tests,dc=example,dc=com
ou: People
objectclass: top
objectclass: organizationalunit
dn: uid=nmiller, ou=People,dc=rfc-2247-tests,dc=example,dc=com
dn: uid=nmiller, ou=People,dc=rfc-2247-tests,o=rfc tests,dc=example,dc=com
cn: Nate Miller
sn: Miller
givenname: Nate
opends/tests/staf-tests/functional-tests/shared/data/schema/ldifs/rfc2247_2.ldif
@@ -23,17 +23,17 @@
#      Copyright 2006-2008 Sun Microsystems, Inc.
#
dn: dc=rfc-2247-tests-2,dc=example,dc=com
dn: dc=rfc-2247-tests-2,o=rfc tests,dc=example,dc=com
dc: rfc-2247-tests-2
objectclass: top
objectclass: domain
dn: ou=People,dc=rfc-2247-tests-2,dc=example,dc=com
dn: ou=People,dc=rfc-2247-tests-2,o=rfc tests,dc=example,dc=com
ou: People
objectclass: top
objectclass: organizationalunit
dn: uid=nmiller, ou=People,dc=rfc-2247-tests-2,dc=example,dc=com
dn: uid=nmiller, ou=People,dc=rfc-2247-tests-2,o=rfc tests,dc=example,dc=com
cn: Nate Miller
sn: Miller
givenname: Nate
opends/tests/staf-tests/functional-tests/shared/data/schema/ldifs/rfc2247_3.ldif
@@ -23,7 +23,7 @@
#      Copyright 2006-2008 Sun Microsystems, Inc.
#
dn: dc=rfc-2247-tests-3,dc=example,dc=com
dn: dc=rfc-2247-tests-3,o=rfc tests,dc=example,dc=com
dc: rfc-2247-tests-3
o: Crucial RFC Tests 
objectclass: top
opends/tests/staf-tests/functional-tests/shared/data/schema/ldifs/rfc2247_4.ldif
@@ -23,7 +23,7 @@
#      Copyright 2006-2008 Sun Microsystems, Inc.
#
dn: dc=rfc-2247-tests-4,dc=example,dc=com
dn: dc=rfc-2247-tests-4,o=rfc tests,dc=example,dc=com
dc: rfc-2247-tests-4
objectclass: top
objectclass: dcObject
opends/tests/staf-tests/functional-tests/shared/data/schema/ldifs/rfc2377.ldif
@@ -23,36 +23,36 @@
#      Copyright 2006-2008 Sun Microsystems, Inc.
#
dn: dc=rfc-2377-tests,dc=example,dc=com
dn: dc=rfc-2377-tests,o=rfc tests,dc=example,dc=com
dc: rfc-2377-tests
o: Crucial RFC Tests 
objectclass: top
objectclass: dcObject
objectclass: organization
dn: dc=Europe, dc=rfc-2377-tests,dc=example,dc=com
dn: dc=Europe, dc=rfc-2377-tests,o=rfc tests,dc=example,dc=com
dc: Europe
o: Europe Crucial RFC Tests 
objectclass: top
objectclass: dcObject
objectclass: organization
dn: dc=North America, dc=rfc-2377-tests,dc=example,dc=com
dn: dc=North America, dc=rfc-2377-tests,o=rfc tests,dc=example,dc=com
dc: North America
objectclass: top
objectclass: domain
dn: ou=People,dc=Europe,dc=rfc-2377-tests,dc=example,dc=com
dn: ou=People,dc=Europe,dc=rfc-2377-tests,o=rfc tests,dc=example,dc=com
ou: People
objectclass: top
objectclass: organizationalunit
dn: ou=People,dc=North America,dc=rfc-2377-tests,dc=example,dc=com
dn: ou=People,dc=North America,dc=rfc-2377-tests,o=rfc tests,dc=example,dc=com
ou: People
objectclass: top
objectclass: organizationalunit
dn: uid=nmiller, ou=People,dc=Europe,dc=rfc-2377-tests,dc=example,dc=com
dn: uid=nmiller, ou=People,dc=Europe,dc=rfc-2377-tests,o=rfc tests,dc=example,dc=com
cn: Nate Miller
sn: Miller
givenname: Nate
@@ -70,7 +70,7 @@
roomnumber: 4135
userpassword: gosling
dn: uid=lmiller, ou=People,dc=North America,dc=rfc-2377-tests,dc=example,dc=com
dn: uid=lmiller, ou=People,dc=North America,dc=rfc-2377-tests,o=rfc tests,dc=example,dc=com
cn: Late Miller
sn: Miller
givenname: Late
@@ -88,7 +88,7 @@
roomnumber: 4135
userpassword: gosling
dn: cn=Anton Miller, ou=People,dc=Europe,dc=rfc-2377-tests,dc=example,dc=com
dn: cn=Anton Miller, ou=People,dc=Europe,dc=rfc-2377-tests,o=rfc tests,dc=example,dc=com
cn: Anton Miller
sn: Miller
givenname: Anton
@@ -106,7 +106,7 @@
roomnumber: 4135
userpassword: gosling
dn: cn=Art Miller, ou=People,dc=North America,dc=rfc-2377-tests,dc=example,dc=com
dn: cn=Art Miller, ou=People,dc=North America,dc=rfc-2377-tests,o=rfc tests,dc=example,dc=com
cn: Art Miller
sn: Miller
givenname: Art
opends/tests/staf-tests/functional-tests/shared/data/schema/solaris/rfc4876.ldif
New file
@@ -0,0 +1,167 @@
#
# Container for Solaris Schema (RFC 4876) Tests
#
dn: o=rfc4876, o=Solaris Schema Tests,dc=example,dc=com
objectClass: dcObject
objectClass: organization
objectClass: nisDomainObject
dc: rfc4876
o: rfc4876
description: DIT for Solaris Schema Tests (RFC 4876,Solaris)
nisDomain: rfc4876
#
# Container for passwd entries.  See solaris.schema and nis.schema for
# additional containers we could create here.
#
dn: ou=People,o=rfc4876, o=Solaris Schema Tests,dc=example,dc=com
objectClass: organizationalUnit
ou: People
#
# Container for group entries.  See solaris.schema and nis.schema for
# additional containers we could create here.
#
dn: ou=Group,o=rfc4876, o=Solaris Schema Tests,dc=example,dc=com
objectClass: organizationalUnit
ou: Group
dn: ou=profile,o=rfc4876, o=Solaris Schema Tests,dc=example,dc=com
objectClass: organizationalUnit
ou: profile
description: Profile
dn: cn=example,ou=profile,o=rfc4876, o=Solaris Schema Tests,dc=example,dc=com
objectClass: top
objectClass: DUAConfigProfile
cn: example
defaultServerList: ldap1.example.com ldap2.example.com 192.168.169.170 ldap1.mycorp.com ldap2:1389 [1080::8:800:200C:417A]:5912
preferredServerList: ldap3.example.com ldap4.example.com 192.168.169.170 ldap2:1389 [1080::8:800:200C:417A]:389
defaultSearchBase: o=Solaris Schema Tests, dc=example,dc=com
defaultSearchScope: one
authenticationMethod: tls:simple;sasl/DIGEST-MD5
credentialLevel: proxy anonymous
searchTimeLimit: 30
bindTimeLimit: 2
followReferrals: TRUE
dereferenceAliases: FALSE
profileTTL: 43200
serviceSearchDescriptor: email:ou=people,ou=org1,? one;ou=contractor,?one; ref:cn=profile,dc=mycompany,dc=com
serviceCredentialLevel: email:proxy anonymous
serviceAuthenticationMethod: email:tls:simple;sasl/DIGEST-MD5
objectclassMap: email:cn=employeeName
attributeMap: email:mail=email
attributeMap: email:cn=employeeName
attributeMap: email:cn=firstName lastName
#
# LDAP Proxy Agents File
#
#
# Base organizational unit for proxy agents.
#
dn: ou=LDAPauth,dc=example,dc=com
objectClass: top
objectClass: organizationalUnit
ou: LDAPauth
description: LDAP Proxy Agent Subtree.
#
# Proxy agent for solaris based machines.
#
dn: cn=solaris,ou=LDAPauth,dc=example,dc=com
objectClass: top
objectClass: person
cn: solaris
sn: Solaris Proxy Agent
userPassword: SolarisRulz
#
# Proxy agent for OS X based machines. - UNUSED
#
dn: cn=mac,ou=LDAPauth,dc=example,dc=com
objectClass: top
objectClass: person
cn: mac
sn: mac
cn: OS X Proxy Agent
userPassword: MacAttac
#
# Proxy agent for Linux based machines. - UNUSED
#
dn: cn=linux,ou=LDAPauth,dc=example,dc=com
objectClass: top
objectClass: person
cn: linux
cn: Linux Proxy Agent
sn: linux
#
# GroupOfNames  entity  used  to  gain  read  access  to the
# userPassword attribute in our DIT.
#
dn: cn=LDAPaccess,ou=LDAPauth,dc=example,dc=com
objectClass: top
objectClass: groupOfNames
cn: LDAPaccess
description: LDAP Proxy Agent Group
member: cn=solaris,ou=LDAPauth,dc=example,dc=com
member: cn=mac,ou=LDAPauth,dc=example,dc=com
member: cn=linux,ou=LDAPauth,dc=example,dc=com
dn: uid=user1,ou=People,o=rfc4876, o=Solaris Schema Tests,dc=example,dc=com
objectClass: top
objectClass: posixAccount
objectClass: shadowAccount
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
uid: user1
userpassword: password
uidNumber: 1025
gidNumber: 15
gecos: user 1
homeDirectory: /home/user1
loginShell: /bin/bash
cn: user 1
givenName: user1
sn: User1
shadowlastchange: -1
shadowmin: -1
shadowmax: -1
shadowwarning: -1
shadowinactive: -1
shadowexpire: -1
shadowflag: -1
description: User1
dn: uid=user2,ou=People,o=rfc4876, o=Solaris Schema Tests,dc=example,dc=com
objectClass: top
objectClass: posixAccount
objectClass: shadowAccount
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
uid: user2
userPassword: password
uidNumber: 1026
gidNumber: 15
gecos: user 2
homeDirectory: /home/user2
loginShell: /bin/bash
cn: user 2
givenName: user 2
sn: User2
shadowlastchange: -1
shadowmin: -1
shadowmax: -1
shadowwarning: -1
shadowinactive: -1
shadowexpire: -1
shadowflag: -1
description: User2
opends/tests/staf-tests/functional-tests/shared/data/schema/solaris/solaris.ldif
New file
@@ -0,0 +1,180 @@
# CDDL HEADER START
#
# The contents of this file are subject to the terms of the
# Common Development and Distribution License, Version 1.0 only
# (the "License").  You may not use this file except in compliance
# with the License.
#
# You can obtain a copy of the license at
# trunk/opends/resource/legal-notices/OpenDS.LICENSE
# or https://OpenDS.dev.java.net/OpenDS.LICENSE.
# See the License for the specific language governing permissions
# and limitations under the License.
#
# When distributing Covered Code, include this CDDL HEADER in each
# file and include the License file at
# trunk/opends/resource/legal-notices/OpenDS.LICENSE.  If applicable,
# add the following below this CDDL HEADER, with the fields enclosed
# by brackets "[]" replaced with your own identifying information:
#      Portions Copyright [yyyy] [name of copyright owner]
#
# CDDL HEADER END
#
#      Copyright 2008 Sun Microsystems, Inc.
#
dn: o=Solaris schema tests,dc=example,dc=com
o: Solaris schema tests
objectclass: top
objectclass: organization
dn: o=Solaris, o=Solaris schema tests,dc=example,dc=com
o: Solaris
objectclass: top
objectclass: organization
dn: cn=nisMailAlias,o=Solaris, o=Solaris schema tests,dc=example,dc=com
objectclass: top
objectclass: person
objectclass: nisMailAlias
cn: nisMailAlias
sn: nisMailAlias
rfc822mailMember: nisMailAlias@sun.com
dn: cn=nisNetId,o=Solaris, o=Solaris schema tests,dc=example,dc=com
objectclass: nisNetId
objectclass: person
cn: nisNetId
sn: nisNetId
nisNetIdUser: testuser
nisNetIdGroup: testgroup
nisNetIdHost: ldap5.ldap.sun.com
dn: SolarisProjectName=Schema Tests,o=Solaris, o=Solaris schema tests,dc=example,dc=com
objectclass: SolarisProject
SolarisProjectID: 42
SolarisProjectName: Schema Tests
memberUid: chibber
memberUid: bignik!
memberUid: *
memberUid: !*
memberGid: schema
memberGid: sheffield!
memberGid: *
memberGid: !*
description: Schema Tests Project
SolarisProjectAttr: task.max-cpu-time process.max-file-descriptor
dn: cn=SolarisAuditUser,o=Solaris, o=Solaris schema tests,dc=example,dc=com
objectclass: person
objectclass: SolarisAuditUser
cn: SolarisAuditUser
sn: SolarisAuditUser
SolarisAuditAlways: *
SolarisAuditNever: *
dn: uid=SolarisUserAttr, o=Solaris, o=Solaris schema tests,dc=example,dc=com
objectClass:posixAccount
objectClass:shadowAccount
objectClass:account
objectclass:SolarisUserAttr
cn:SolarisUserAttr
description:Testing LDAP User to give RBAC
gecos:Test User
SolarisUserQualifier: qualified
SolarisAttrReserved1: *
SolarisAttrReserved2: *
SolarisAttrKeyValue: type=role;profiles=Basic Solaris User
loginShell:/usr/bin/ksh
homeDirectory:/home/SolarisUserAttr
uidNumber: 57
gidNumber: 58
dn: cn=SolarisAuthAttr, o=Solaris, o=Solaris schema tests,dc=example,dc=com
objectclass: SolarisAuthAttr
cn: SolarisAuthAttr
SolarisAttrReserved1: *
SolarisAttrReserved2: *
SolarisAttrShortDesc: authtest
SolarisAttrLongDesc: Special profile for auth testing
SolarisAttrKeyValue: privs=none
dn: cn=SolarisProfile, o=Solaris, o=Solaris schema tests,dc=example,dc=com
objectclass: SolarisProfAttr
objectclass: SolarisExecAttr
cn: SolarisProfile
SolarisAttrLongDesc: Special profile for testing
SolarisAttrKeyValue: help=TestProfile.html
SolarisKernelSecurityPolicy: solaris
SolarisProfileType: act
SolarisAttrReserved1: *
SolarisAttrReserved2: *
SolarisProfileId: TestAction;*;*;*;*
dn: cn=SolarisNamingProfile, o=Solaris, o=Solaris schema tests,dc=example,dc=com
objectclass: SolarisNamingProfile
cn: SolarisNamingProfile
SolarisDataSearchDN: "passwd:(ou=People,dc=ldap-test,dc=com)"
SolarisDataSearchDN: "printers:(ou=Printers,dc=ldap-test,dc=com)"
SolarisDataSearchDN: "group:(ou=Group,dc=ldap-test,dc=com)"
SolarisDataSearchDN: "automount:(ou=Services,dc=ldap-test,dc=com)"
SolarisLDAPServers: ldap3.ldap.sun.com ldap2.ldap.sun.com ldap1.ldap.sun.com
SolarisSearchBaseDN: o=Solaris, o=Solaris schema tests,dc=example,dc=com
SolarisBindDN: cn=proxyagent,o=Solaris, o=Solaris schema tests,dc=example,dc=com
SolarisBindPassword: secret12
SolarisAuthMethod: NS_LDAP_AUTH_SIMPLE
SolarisTransportSecurity: NS_LDAP_SEC_NONE
SolarisCertificatePath: NS_LDAP_CERT_PATH_NONE
SolarisCertificatePassword: password
SolarisSearchScope: NS_LDAP_SCOPE_ONELEVEL
SolarisSearchTimeLimit: 30
SolarisPreferredServer: ldap3.ldap.sun.com
SolarisPreferredServerOnly: TRUE
SolarisCacheTTL: 43200
SolarisSearchReferral: NS_LDAP_FOLLOWREF
SolarisBindTimeLimit: 180
dn: cn=mailGroup,o=Solaris, o=Solaris schema tests,dc=example,dc=com
objectclass: mailGroup
mail: mailgroup@sun.com
cn: mailGroup
mgrpRFC822MailMember: uid=jim1234,o=sun,c=fr
mgrpRFC822MailMember: uid=kippo2545,o=sun,c=fr
mgrpRFC822MailMember: uid=macka5381,o=sun,c=fr
mgrpRFC822MailMember: uid=hume0734o=sun,c=fr
mgrpRFC822MailMember: uid=chappy,2578o=sun,c=fr
#dn: printer-name=wombat07,o=Solaris, o=Solaris schema tests,dc=example,dc=com
#objectclass: printerService
#objectclass: printerAbstract
#objectclass: sunPrinter
#objectclass: top
#printer-name: wombat07
#printer-uri: wombat07
#sun-printer-bsdaddr: printsvr.example.com,myprinter,Solaris
#sun-printer-kvp: description=My Super Printer (PS)
dn: cn=nisplusTimeZone,o=Solaris, o=Solaris schema tests,dc=example,dc=com
objectclass: nisplusTimeZoneData
cn: nisplusTimeZone
nisplusTimeZone: GMT+1
description: The NIS+ time zone
dn: ou=ipTnet,o=Solaris, o=Solaris schema tests,dc=example,dc=com
objectClass: top
objectClass: organizationalunit
ou: ipTnet
dn: ipTnetTemplateName=cipso,ou=ipTnet,o=Solaris, o=Solaris schema tests,dc=example,dc=com
objectClass:top
objectClass:ipTnetTemplate
ipTnetTemplateName:cipso
SolarisAttrKeyValue:host_type=cipso;doi=1;min_sl=ADMIN_LOW;max_sl=ADMIN_HIGH;
dn: ipTnetNumber=0.0.0.0,o=Solaris, o=Solaris schema tests,dc=example,dc=com
objectClass:top
objectClass:ipTnetTemplate
objectClass:ipTnetHost
ipTnetNumber:0.0.0.0
ipTnetTemplateName:internal
opends/tests/staf-tests/functional-tests/testcases/schema/dynamic/schema_dynamic.xml
New file
@@ -0,0 +1,121 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE stax SYSTEM "../../../../shared/stax.dtd">
<!--
 ! CDDL HEADER START
 !
 ! The contents of this file are subject to the terms of the
 ! Common Development and Distribution License, Version 1.0 only
 ! (the "License").  You may not use this file except in compliance
 ! with the License.
 !
 ! You can obtain a copy of the license at
 ! trunk/opends/resource/legal-notices/OpenDS.LICENSE
 ! or https://OpenDS.dev.java.net/OpenDS.LICENSE.
 ! See the License for the specific language governing permissions
 ! and limitations under the License.
 !
 ! When distributing Covered Code, include this CDDL HEADER in each
 ! file and include the License file at
 ! trunk/opends/resource/legal-notices/OpenDS.LICENSE.  If applicable,
 ! add the following below this CDDL HEADER, with the fields enclosed
 ! by brackets "[]" replaced with your own identifying information:
 !      Portions Copyright [yyyy] [name of copyright owner]
 !
 ! CDDL HEADER END
 !
 !      Copyright 2008 Sun Microsystems, Inc.
 ! -->
<stax>
  <defaultcall function="main_schema_dynamic"/>
  <function name="main_schema_dynamic" scope="local">
    <sequence>
      <block name="'main_schema_dynamic'">
        <try>
          <sequence>
            <script>
              CurrentTestPath['group']='schema'
              CurrentTestPath['suite']='dynamic'
              __group=CurrentTestPath['group']
              __groupdir='%s/testcases/%s' % (TESTS_DIR,__group)
            </script>
            <!--- Test Suite information
            #@TestSuiteName       Native schema test suite
            #@TestSuitePurpose    Verify that
            #@TestSuiteID         Suite
            #@TestSuiteGroup      Example
            #@TestGroup           Example
            #@TestScript          suite.xml
            #@TestHTMLLink        http://opends.dev.java.net/
            -->
            <call function="'testSuite_Preamble'"/>
            <try>
              <sequence>
                <!-- List of Import of Test Functions -->
                <script>
                  importList=[]
                  importList.append('schema_setup')
                  importList.append('dynamic/schema_dynamic_tests')
                  importList.append('schema_cleanup')
                </script>
                <!-- Import the files for this test suite -->
                <iterate var="__import" in="importList">
                  <import machine="STAF_LOCAL_HOSTNAME"
                    file="'%s/%s.xml' % (__groupdir,__import)"/>
                </iterate>
                <!-- Test Suite Setup -->
                <call function="'%s_setup' % __group"/>
                <!-- List of Test Cases -->
                <script>
                  testsList=[]
                  testsList.append('schema_dynamic_001')
                  testsList.append('schema_dynamic_002')
                  testsList.append('schema_dynamic_003')
                  testsList.append('schema_dynamic_004')
                </script>
                <!-- Execute the Tests -->
                <iterate var="__test" in="testsList">
                  <sequence>
                    <call function="'%s' % (__test)" />
                  </sequence>
                </iterate>
              </sequence>
            <catch exception="'STAFException.TestSuite.SetupException'">
              <sequence>
                <message log="1" level="'fatal'">
                  'Setup of test suite failed.'
                </message>
                <rethrow/>
              </sequence>
            </catch>
            <finally>
              <message>'Test Cases Completed.'</message>
            </finally>
            </try>
          </sequence>
          <finally>
            <sequence>
              <!-- Test Suite Cleanup -->
              <message>'Finally: Example Cleanup.'</message>
              <call function="'%s_cleanup' % __group"/>
              <call function="'testSuite_Postamble'"/>
            </sequence>
          </finally>
        </try>
      </block>
    </sequence>
  </function>
</stax>
opends/tests/staf-tests/functional-tests/testcases/schema/dynamic/schema_dynamic_tests.xml
New file
@@ -0,0 +1,397 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE stax SYSTEM "../../../../shared/stax.dtd">
<!--
 ! CDDL HEADER START
 !
 ! The contents of this file are subject to the terms of the
 ! Common Development and Distribution License, Version 1.0 only
 ! (the "License").  You may not use this file except in compliance
 ! with the License.
 !
 ! You can obtain a copy of the license at
 ! trunk/opends/resource/legal-notices/OpenDS.LICENSE
 ! or https://OpenDS.dev.java.net/OpenDS.LICENSE.
 ! See the License for the specific language governing permissions
 ! and limitations under the License.
 !
 ! When distributing Covered Code, exclude this CDDL HEADER in each
 ! file and exclude the License file at
 ! trunk/opends/resource/legal-notices/OpenDS.LICENSE.  If applicable,
 ! add the following below this CDDL HEADER, with the fields enclosed
 ! by brackets "[]" replaced with your own identifying * information:
 !      Portions Copyright [yyyy] [name of copyright owner]
 !
 ! CDDL HEADER END
 !
 !      Copyright 2008 Sun Microsystems, Inc.
 ! -->
<stax>
<!-- Test case: Update Schema via a file -->
<!--
    Place test-specific test information here.
    The tag, TestMarker, must be the same as the tag, TestSuiteName.
    #@TestMarker                Dynamic Schema Tests
    #@TestName                  Update via a file
    #@TestIssue                 367
    #@TestPurpose               To make sure the schema can be updated by a file.
    #@TestPreamble              none
    #@TestStep                  Create a task that will cause the server to
                                read one or two files into the schema.
                                Then try adding a new entry that uses the
                                added schema.
    #@TestPostamble             none
    #@TestResult                Success if OpenDS returns 0
-->
  <function name="schema_dynamic_001" scope="local">
    <testcase name="getTestCaseName('Update via File')">
      <try>
        <sequence>
          <call function="'testCase_Preamble'"/>
          <message>
            'Schema: Dynamic Schema: Update via File'
          </message>
          <script>
            __baseDN='dc=dynamic-schema-tests,dc=example,%s' % server.suffix
          </script>
          <call function="'runFunction'">
            { 'functionName'      : 'addSchemaTask'                       ,
              'functionMessage'   : 'Add schema objects as a task.'       ,
              'functionException' : 'Tasks.SchemaException'               ,
              'functionArguments' : { 'dsInstanceHost' : server.host      ,
                                      'dsInstancePort' : server.port      ,
                                      'dsInstanceDn'   : server.dn        ,
                                      'dsInstancePswd' : server.password  ,
                                      'taskID'         : '6'              ,
                                      'ldifFile'       : '05-DynamicSchemaAdd.ldif' }
            }
          </call>
          <call function="'runFunction'">
            { 'functionName'      : 'addEntry'                       ,
              'functionMessage'   : 'Add an entry that uses this new schema.'       ,
              'functionException' : 'LDAP.AddException'               ,
              'functionArguments' : { 'dsInstanceHost' : server.host ,
                                      'dsInstancePort' : server.port ,
                                      'dsInstanceDn'   : server.dn ,
                                      'dsInstancePswd' : server.password ,
                                      'entryToBeAdded' : '%s/schema/ldifs/dynamic_schema1.ldif'
                                                          % remote.data }
            }
          </call>
          <call function="'runFunction'">
            { 'functionName'      : 'SearchObject'                       ,
              'functionMessage'   : 'Search for the entry just added and return addschema1AT.'       ,
              'functionException' : 'LDAP.SearchException'               ,
              'functionArguments' : { 'dsInstanceHost'   : server.host ,
                                      'dsInstancePort'   : server.port ,
                                      'dsInstanceDn'     : server.dn ,
                                      'dsInstancePswd'   : server.password ,
                                      'dsBaseDN'         : __baseDN ,
                                      'dsFilter'         : 'objectclass=addschema1OC' ,
                                      'attributes'       : 'addschema1AT' }
            }
          </call>
        </sequence>
        <catch exception="'STAXException.LDAP.AddException'" typevar="eType" var="eInfo">
          <message log="1" level="'fatal'">
            '%s: LDAPAdd failed. eInfo(%s)' % (eType,eInfo)
          </message>
        </catch>
        <catch exception="'STAXException.LDAP.SearchException'" typevar="eType" var="eInfo">
          <message log="1" level="'fatal'">
            '%s: LDAPSearch failed. eInfo(%s)' % (eType,eInfo)
          </message>
        </catch>
        <catch exception="'STAXException.Tasks.SchemaException'" typevar="eType" var="eInfo">
          <message log="1" level="'fatal'">
            '%s: Tasks Schema failed. eInfo(%s)' % (eType,eInfo)
          </message>
        </catch>
        <finally>
          <call function="'testCase_Postamble'"/>
        </finally>
      </try>
    </testcase>
  </function>
<!-- Test case: Update Schema Over Protocol: Add schema object-->
<!--
    Place test-specific test information here.
    The tag, TestMarker, must be the same as the tag, TestSuiteName.
    #@TestMarker                Dynamic Schema Tests
    #@TestName                  Update Over Protocol: Add schema object
    #@TestIssue                 366
    #@TestPurpose               To verify the schema can be updated over protocol.
    #@TestPreamble              none
    #@TestStep                  Update the schema over protocol adding
                                a new objectclass and attributes.
                                Then try adding a new entry that uses these
                                new attributes and objectclass.
    #@TestPostamble             none
    #@TestResult                Success if OpenDS returns 0
-->
  <function name="schema_dynamic_002" scope="local">
    <testcase name="getTestCaseName('Add Schema Object')">
      <try>
        <sequence>
          <call function="'testCase_Preamble'"/>
          <message>
             'Schema: Update Over Protocol: Add Schema Object'
          </message>
          <script>
            __baseDN='dc=dynamic-schema-tests-2,dc=example,%s' % server.suffix
          </script>
          <call function="'runFunction'">
            { 'functionName'      : 'modifyEntry'                       ,
              'functionMessage'   : 'Modify an entry that uses this new schema.'       ,
              'functionException' : 'LDAP.ModifyException'               ,
              'functionArguments' : { 'dsInstanceHost'    : server.host ,
                                      'dsInstancePort'    : server.port ,
                                      'dsInstanceDn'      : server.dn ,
                                      'dsInstancePswd'    : server.password ,
                                      'entryToBeModified' : '%s/schema/ldifs/updateSchema.ldif'
                                                          % remote.data }
            }
          </call>
          <call function="'runFunction'">
            { 'functionName'      : 'addEntry'                       ,
              'functionMessage'   : 'Add an entry that uses this new schema.'       ,
              'functionException' : 'LDAP.AddException'               ,
              'functionArguments' : { 'dsInstanceHost' : server.host ,
                                      'dsInstancePort' : server.port ,
                                      'dsInstanceDn'   : server.dn ,
                                      'dsInstancePswd' : server.password ,
                                      'entryToBeAdded' : '%s/schema/ldifs/dynamic_schema2.ldif'
                                                          % remote.data }
            }
          </call>
          <call function="'runFunction'">
            { 'functionName'      : 'SearchObject'                       ,
              'functionMessage'   : 'Search for the entry just added and return addschema2AT.'       ,
              'functionException' : 'LDAP.SearchException'               ,
              'functionArguments' : { 'dsInstanceHost'   : server.host ,
                                      'dsInstancePort'   : server.port ,
                                      'dsInstanceDn'     : server.dn ,
                                      'dsInstancePswd'   : server.password ,
                                      'dsBaseDN'         : __baseDN ,
                                      'dsFilter'         : 'objectclass=addschema2OC' ,
                                      'attributes'       : 'addschema2AT' }
            }
          </call>
        </sequence>
        <catch exception="'STAXException.LDAP.AddException'" typevar="eType" var="eInfo">
          <message log="1" level="'fatal'">
            '%s: LDAPAdd failed. eInfo(%s)' % (eType,eInfo)
          </message>
        </catch>
        <catch exception="'STAXException.LDAP.ModifyException'" typevar="eType" var="eInfo">
          <message log="1" level="'fatal'">
            '%s: LDAPModify failed. eInfo(%s)' % (eType,eInfo)
          </message>
        </catch>
        <catch exception="'STAXException.LDAP.SearchException'" typevar="eType" var="eInfo">
          <message log="1" level="'fatal'">
            '%s: LDAPSearch failed. eInfo(%s)' % (eType,eInfo)
          </message>
        </catch>
        <finally>
          <call function="'testCase_Postamble'"/>
        </finally>
      </try>
    </testcase>
  </function>
<!-- Test case: Update Schema Over Protocol: Replace  Schema Object -->
<!--
    Place test-specific test information here.
    The tag, TestMarker, must be the same as the tag, TestSuiteName.
    #@TestMarker                Dynamic Schema Tests
    #@TestName                  Update Over Protocol: Replace  Schema Object
    #@TestIssue                 366
    #@TestPurpose               To verify attributes and objectclasses can be replaced over protocol.
    #@TestPreamble              none
    #@TestStep                  Update the schema over protocol by replacing
                                an objectclass and attributes with new ones.
                                Then try adding a new entry that uses the replaced
                                attributes and objectclass, it should fail. Then try
                                adding an entry that uses the replacement objectclass and attributes.
    #@TestPostamble             none
    #@TestResult                Success if OpenDS returns 0
-->
  <function name="schema_dynamic_003" scope="local">
    <testcase name="getTestCaseName('Replace Schema Object')">
      <try>
        <sequence>
          <call function="'testCase_Preamble'"/>
          <message>
             'Schema: Update Over Protocol: Replace Schema Object'
          </message>
          <script>
            __baseDN='dc=dynamic-schema-tests-2,dc=example,%s' % server.suffix
          </script>
          <call function="'runFunction'">
            { 'functionName'      : 'modifyEntry'                       ,
              'functionMessage'   : 'Modify an entry that uses this new schema.'       ,
              'functionException' : 'LDAP.ModifyException'               ,
              'functionArguments' : { 'dsInstanceHost'    : server.host ,
                                      'dsInstancePort'    : server.port ,
                                      'dsInstanceDn'      : server.dn ,
                                      'dsInstancePswd'    : server.password ,
                                      'entryToBeModified' : '%s/schema/ldifs/updateSchema2.ldif'
                                                          % remote.data }
            }
          </call>
          <call function="'runFunction'">
            { 'functionName'      : 'addEntry'                       ,
              'functionMessage'   : 'Add an entry that uses this new schema.'       ,
              'functionException' : 'LDAP.AddException'               ,
              'functionArguments' : { 'dsInstanceHost' : server.host ,
                                      'dsInstancePort' : server.port ,
                                      'dsInstanceDn'   : server.dn ,
                                      'dsInstancePswd' : server.password ,
                                      'entryToBeAdded' : '%s/schema/ldifs/dynamic_schema4.ldif'
                                                          % remote.data }
            }
          </call>
          <call function="'runFunction'">
            { 'functionName'      : 'SearchObject'                       ,
              'functionMessage'   : 'Search for the entry just added and return addschema2AT.'       ,
              'functionException' : 'LDAP.SearchException'               ,
              'functionArguments' : { 'dsInstanceHost'   : server.host ,
                                      'dsInstancePort'   : server.port ,
                                      'dsInstanceDn'     : server.dn ,
                                      'dsInstancePswd'   : server.password ,
                                      'dsBaseDN'         : __baseDN ,
                                      'dsFilter'         : 'objectclass=addschema3OC' ,
                                      'attributes'       : 'addschema3AT' }
            }
          </call>
        </sequence>
        <catch exception="'STAXException.LDAP.AddException'" typevar="eType" var="eInfo">
          <message log="1" level="'fatal'">
            '%s: LDAPAdd failed. eInfo(%s)' % (eType,eInfo)
          </message>
        </catch>
        <catch exception="'STAXException.LDAP.ModifyException'" typevar="eType" var="eInfo">
          <message log="1" level="'fatal'">
            '%s: LDAPModify failed. eInfo(%s)' % (eType,eInfo)
          </message>
        </catch>
        <catch exception="'STAXException.LDAP.SearchException'" typevar="eType" var="eInfo">
          <message log="1" level="'fatal'">
            '%s: LDAPSearch failed. eInfo(%s)' % (eType,eInfo)
          </message>
        </catch>
        <finally>
          <call function="'testCase_Postamble'"/>
        </finally>
      </try>
    </testcase>
  </function>
<!-- Test case: Update Schema Over Protocol: Remove Schema Object-->
<!--
    Place test-specific test information here.
    The tag, TestMarker, must be the same as the tag, TestSuiteName.
    #@TestMarker                Dynamic Schema Tests
    #@TestName                  Update Over Protocol: Remove Schema Object
    #@TestIssue                 366
    #@TestPurpose               To verify attributes and objectclasses can be removed over protocol.
    #@TestPreamble              none
    #@TestStep                  Update the schema over protocol by removing
                                an objectclass and attributes.
                                Then try adding a new entry that uses these
                                removed attributes and objectclass, it should fail.
    #@TestPostamble             none
    #@TestResult                Success if OpenDS returns 0
-->
  <function name="schema_dynamic_004" scope="local">
    <testcase name="getTestCaseName('Remove  Schema Object')">
      <try>
        <sequence>
          <call function="'testCase_Preamble'"/>
          <message>
             'Schema: Update Over Protocol: Remove Schema Object'
          </message>
          <call function="'runFunction'">
            { 'functionName'      : 'modifyEntry'                       ,
              'functionMessage'   : 'Modify an entry that uses this new schema.'       ,
              'functionException' : 'LDAP.ModifyException'               ,
              'functionArguments' : { 'dsInstanceHost'    : server.host ,
                                      'dsInstancePort'    : server.port ,
                                      'dsInstanceDn'      : server.dn ,
                                      'dsInstancePswd'    : server.password ,
                                      'entryToBeModified' : '%s/schema/ldifs/updateSchema3.ldif'
                                                          % remote.data }
            }
          </call>
          <call function="'runFunction'">
            { 'functionName'      : 'addEntry'                       ,
              'functionMessage'   : 'Add an entry that uses the schema just removed.'       ,
              'functionException' : 'LDAP.AddException'               ,
              'functionArguments' : { 'dsInstanceHost' : server.host ,
                                      'dsInstancePort' : server.port ,
                                      'dsInstanceDn'   : server.dn ,
                                      'dsInstancePswd' : server.password ,
                                      'entryToBeAdded' : '%s/schema/ldifs/dynamic_schema3.ldif'
                                                          % remote.data,
                                      'expectedRC'     : 65 }
            }
          </call>
        </sequence>
        <catch exception="'STAXException.LDAP.AddException'" typevar="eType" var="eInfo">
          <message log="1" level="'fatal'">
            '%s: LDAPAdd failed. eInfo(%s)' % (eType,eInfo)
          </message>
        </catch>
        <catch exception="'STAXException.LDAP.ModifyException'" typevar="eType" var="eInfo">
          <message log="1" level="'fatal'">
            '%s: LDAPModify failed. eInfo(%s)' % (eType,eInfo)
          </message>
        </catch>
        <catch exception="'STAXException.LDAP.SearchException'" typevar="eType" var="eInfo">
          <message log="1" level="'fatal'">
            '%s: LDAPSearch failed. eInfo(%s)' % (eType,eInfo)
          </message>
        </catch>
        <finally>
          <call function="'testCase_Postamble'"/>
        </finally>
      </try>
    </testcase>
  </function>
</stax>
opends/tests/staf-tests/functional-tests/testcases/schema/rfc/schema_rfc.xml
New file
@@ -0,0 +1,177 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE stax SYSTEM "../../../../shared/stax.dtd">
<!--
 ! CDDL HEADER START
 !
 ! The contents of this file are subject to the terms of the
 ! Common Development and Distribution License, Version 1.0 only
 ! (the "License").  You may not use this file except in compliance
 ! with the License.
 !
 ! You can obtain a copy of the license at
 ! trunk/opends/resource/legal-notices/OpenDS.LICENSE
 ! or https://OpenDS.dev.java.net/OpenDS.LICENSE.
 ! See the License for the specific language governing permissions
 ! and limitations under the License.
 !
 ! When distributing Covered Code, include this CDDL HEADER in each
 ! file and include the License file at
 ! trunk/opends/resource/legal-notices/OpenDS.LICENSE.  If applicable,
 ! add the following below this CDDL HEADER, with the fields enclosed
 ! by brackets "[]" replaced with your own identifying information:
 !      Portions Copyright [yyyy] [name of copyright owner]
 !
 ! CDDL HEADER END
 !
 !      Copyright 2008 Sun Microsystems, Inc.
 ! -->
<stax>
  <defaultcall function="main_schema_rfc"/>
  <function name="main_schema_rfc" scope="local">
    <sequence>
      <block name="'main_schema_rfc'">
        <try>
          <sequence>
            <script>
              CurrentTestPath['group']='schema'
              CurrentTestPath['suite']='rfc'
              __group=CurrentTestPath['group']
              __groupdir='%s/testcases/%s' % (TESTS_DIR,__group)
            </script>
            <!--- Test Suite information
            #@TestSuiteName       Native schema test suite
            #@TestSuitePurpose    Verify that
            #@TestSuiteID         Suite
            #@TestSuiteGroup      Example
            #@TestGroup           Example
            #@TestScript          suite.xml
            #@TestHTMLLink        http://opends.dev.java.net/
            -->
            <call function="'testSuite_Preamble'"/>
            <try>
              <sequence>
                <!-- List of Import of Test Functions -->
                <script>
                  importList=[]
                  importList.append('schema_setup')
                  importList.append('rfc/schema_rfc_tests')
                  importList.append('schema_cleanup')
                </script>
                <!-- Import the files for this test suite -->
                <iterate var="__import" in="importList">
                  <import machine="STAF_LOCAL_HOSTNAME"
                    file="'%s/%s.xml' % (__groupdir,__import)"/>
                </iterate>
                <!-- Test Suite Setup -->
                <call function="'%s_setup' % __group"/>
                <!-- Specific to rfc tests -->
                <script>
                  __baseDN='o=rfc tests, dc=example,%s' % server.suffix
                  def parse_stax_result(result):
                    if result.__class__ is org.python.core.PyList:
                      _unwrapResult=result[1][0]
                      try:
                        _functionString=_unwrapResult[1]
                      except AttributeError:
                        _functionString='Unable to parse result.'
                    elif result.__class__ is org.python.core.PyString:
                      _functionString=STAXResult
                    else:
                      _functionString='Unable to parse result.'
                    return _functionString
                </script>
                <!-- List of Test Cases -->
                <script>
                  testsList=[]
                  testsList.append('schema_rfc_2079')
                  testsList.append('schema_rfc_2247_1')
                  testsList.append('schema_rfc_2247_2')
                  testsList.append('schema_rfc_2247_3')
                  testsList.append('schema_rfc_2247_4')
                  testsList.append('schema_rfc_2247_5')
                  testsList.append('schema_rfc_2377')
                  testsList.append('schema_rfc_2798')
                  testsList.append('schema_rfc_3045_1')
                  testsList.append('schema_rfc_3045_2')
                  testsList.append('schema_rfc_4403_1')
                  testsList.append('schema_rfc_4403_2')
                  testsList.append('schema_rfc_4403_3')
                  testsList.append('schema_rfc_4403_4')
                  testsList.append('schema_rfc_4403_5')
                  testsList.append('schema_rfc_2307_1')
                  testsList.append('schema_rfc_2307_2')
                  testsList.append('schema_rfc_2307_3')
                  testsList.append('schema_rfc_2307_4')
                  testsList.append('schema_rfc_furseth')
                  testsList.append('schema_rfc_good_1')
                  testsList.append('schema_rfc_good_2')
                  testsList.append('schema_rfc_good_3')
                  testsList.append('schema_rfc_howard_1')
                  testsList.append('schema_rfc_howard_2')
                  testsList.append('schema_rfc_ldup_1')
                  testsList.append('schema_rfc_ldup_2')
                  testsList.append('schema_rfc_ldup_3')
                  testsList.append('schema_disable_schema_checking')
                  testsList.append('schema_enable_schema_checking')
                  testsList.append('schema_disable_syntax_checking')
                  testsList.append('schema_enable_syntax_checking')
                  testsList.append('schema_cosine_1')
                  testsList.append('schema_cosine_2')
                  testsList.append('schema_cosine_3')
                  testsList.append('schema_rfc_2739')
                  testsList.append('schema_rfc_2714_1')
                  testsList.append('schema_rfc_2714_2')
                  testsList.append('schema_rfc_2713')
                </script>
                <!-- Execute the Tests -->
                <iterate var="__test" in="testsList">
                  <sequence>
                    <call function="'%s' % (__test)" />
                  </sequence>
                </iterate>
              </sequence>
            <catch exception="'STAFException.TestSuite.SetupException'">
              <sequence>
                <message log="1" level="'fatal'">
                  'Setup of test suite failed.'
                </message>
                <rethrow/>
              </sequence>
            </catch>
            <finally>
              <message>'Test Cases Completed.'</message>
            </finally>
            </try>
          </sequence>
          <finally>
            <sequence>
              <!-- Test Suite Cleanup -->
              <message>'Finally: Example Cleanup.'</message>
              <call function="'%s_cleanup' % __group"/>
              <call function="'testSuite_Postamble'"/>
            </sequence>
          </finally>
        </try>
      </block>
    </sequence>
  </function>
</stax>
opends/tests/staf-tests/functional-tests/testcases/schema/rfc/schema_rfc_tests.xml
New file
@@ -0,0 +1,1990 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE stax SYSTEM "../../../../shared/stax.dtd">
<!--
 ! CDDL HEADER START
 !
 ! The contents of this file are subject to the terms of the
 ! Common Development and Distribution License, Version 1.0 only
 ! (the "License").  You may not use this file except in compliance
 ! with the License.
 !
 ! You can obtain a copy of the license at
 ! trunk/opends/resource/legal-notices/OpenDS.LICENSE
 ! or https://OpenDS.dev.java.net/OpenDS.LICENSE.
 ! See the License for the specific language governing permissions
 ! and limitations under the License.
 !
 ! When distributing Covered Code, include this CDDL HEADER in each
 ! file and include the License file at
 ! trunk/opends/resource/legal-notices/OpenDS.LICENSE.  If applicable,
 ! add the following below this CDDL HEADER, with the fields enclosed
 ! by brackets "[]" replaced with your own identifying information:
 !      Portions Copyright [yyyy] [name of copyright owner]
 !
 ! CDDL HEADER END
 !
 !      Copyright 2006-2008 Sun Microsystems, Inc.
 ! -->
<stax>
<!-- Test Case : Schema RFC Test 2079 -->
<!--
    Place test-specific test information here.
    The tag, TestMarker, must be the same as the tag, TestSuiteName.
    #@TestMarker                RFC Schema Tests
    #@TestName                  RFC 2079
    #@TestIssue
    #@TestPurpose               Check RFC 2079 URI Attribute Type and Object Class Schema Objects.
    #@TestPreamble              none
    #@TestStep                  Add RFC 2079 Schema Object.
    #@TestPostamble             none
    #@TestResult                Success if Add Operation returns 0
-->
  <function name="schema_rfc_2079" scope="local">
    <testcase name="getTestCaseName('RFC 2079')">
      <try>
        <sequence>
          <call function="'testCase_Preamble'"/>
          <call function="'runFunction'">
            { 'functionName'      : 'addEntry'                       ,
              'functionMessage'   : 'Add an entry that is covered by RFC 2079.' ,
              'functionException' : 'LDAP.AddException'               ,
              'functionArguments' : { 'dsInstanceHost' : server.host ,
                                      'dsInstancePort' : server.port ,
                                      'dsInstanceDn'   : server.dn ,
                                      'dsInstancePswd' : server.password ,
                                      'entryToBeAdded' : '%s/schema/ldifs/rfc2079.ldif'
                                                          % remote.data }
            }
          </call>
          <call function="'runFunction'">
            { 'functionName'      : 'ldapSearchWithScript'                       ,
              'functionMessage'   : 'Search for the entry just added and return labeledURI.' ,
              'functionException' : 'LDAP.SearchException'               ,
              'functionArguments' : { 'dsInstanceHost'   : server.host ,
                                      'dsInstancePort'   : server.port ,
                                      'dsInstanceDn'     : server.dn ,
                                      'dsInstancePswd'   : server.password ,
                                      'dsBaseDN'         : "ou=People, %s" % __baseDN ,
                                      'dsFilter'         : 'objectclass=*' ,
                                      'dsAttributes'     : 'labeledURI' }
            }
          </call>
          <script>
            _functionString=parse_stax_result(STAXResult)
         </script>
          <call function="'runFunction'">
           { 'functionName'      : 'checktestString' ,
             'functionMessage'   : 'Check that the labeledURI attribute is returned.' ,
             'functionException' : 'Utils.CheckStringException' ,
             'functionArguments' : { 'expectedString' : 'labeledURI: ftp://example.com/rfc/rfc2079.txt' ,
                                     'returnString'   : _functionString }
           }
          </call>
        </sequence>
        <catch exception="'STAXException.LDAP.AddException'" typevar="eType" var="eInfo">
          <message log="1" level="'fatal'">
            '%s: LDAPAdd failed. eInfo(%s)' % (eType,eInfo)
          </message>
        </catch>
        <catch exception="'STAXException.LDAP.SearchException'" typevar="eType" var="eInfo">
          <message log="1" level="'fatal'">
            '%s: LDAPSearch failed. eInfo(%s)' % (eType,eInfo)
          </message>
        </catch>
        <catch exception="'STAXException.Utils.CheckStringException'" typevar="eType" var="eInfo">
          <message log="1" level="'fatal'">
            '%s: UtilsCheck failed. eInfo(%s)' % (eType,eInfo)
          </message>
        </catch>
        <finally>
          <call function="'testCase_Postamble'"/>
        </finally>
      </try>
    </testcase>
  </function>
<!-- Test Case : Schema RFC Test 2247 1 -->
<!--
    Place test-specific test information here.
    The tag, TestMarker, must be the same as the tag, TestSuiteName.
    #@TestMarker                RFC Schema Tests
    #@TestName                  RFC 2247
    #@TestIssue
    #@TestPurpose               Check RFC 2247 Using Domains in LDAP/X.500 Schema Objects.
    #@TestPreamble              none
    #@TestStep                  Add RFC 2247 Schema Object.
    #@TestPostamble             none
    #@TestResult                Success if Add Operation returns 0
-->
  <function name="schema_rfc_2247_1" scope="local">
    <testcase name="getTestCaseName('RFC 2247 1')">
      <try>
        <sequence>
          <call function="'testCase_Preamble'"/>
          <call function="'runFunction'">
            { 'functionName'      : 'addEntry'                       ,
              'functionMessage'   : 'Add an entry where dcObject is an auxiliary class.' ,
              'functionException' : 'LDAP.AddException'               ,
              'functionArguments' : { 'dsInstanceHost' : server.host ,
                                      'dsInstancePort' : server.port ,
                                      'dsInstanceDn'   : server.dn ,
                                      'dsInstancePswd' : server.password ,
                                      'entryToBeAdded' : '%s/schema/ldifs/rfc2247_1.ldif'
                                                          % remote.data }
            }
          </call>
          <call function="'runFunction'">
            { 'functionName'      : 'ldapSearchWithScript'                       ,
              'functionMessage'   : 'Search for the entry just added and return dc.' ,
              'functionException' : 'LDAP.SearchException'               ,
              'functionArguments' : { 'dsInstanceHost'   : server.host ,
                                      'dsInstancePort'   : server.port ,
                                      'dsInstanceDn'     : server.dn ,
                                      'dsInstancePswd'   : server.password ,
                                      'dsBaseDN'         : __baseDN ,
                                      'dsFilter'         : 'objectclass=dcObject' ,
                                      'dsAttributes'     : 'dc' }
            }
          </call>
          <script>
            _functionString=parse_stax_result(STAXResult)
         </script>
          <call function="'runFunction'">
           { 'functionName'      : 'checktestString' ,
             'functionMessage'   : 'Check that the dc attribute is returned.' ,
             'functionException' : 'Utils.CheckStringException' ,
             'functionArguments' : { 'expectedString' : 'dc: rfc-2247-tests' ,
                                     'returnString'   : _functionString }
           }
          </call>
        </sequence>
        <catch exception="'STAXException.LDAP.AddException'" typevar="eType" var="eInfo">
          <message log="1" level="'fatal'">
            '%s: LDAPAdd failed. eInfo(%s)' % (eType,eInfo)
          </message>
        </catch>
        <catch exception="'STAXException.LDAP.SearchException'" typevar="eType" var="eInfo">
          <message log="1" level="'fatal'">
            '%s: LDAPSearch failed. eInfo(%s)' % (eType,eInfo)
          </message>
        </catch>
        <catch exception="'STAXException.Utils.CheckStringException'" typevar="eType" var="eInfo">
          <message log="1" level="'fatal'">
            '%s: UtilsCheck failed. eInfo(%s)' % (eType,eInfo)
          </message>
        </catch>
        <finally>
          <call function="'testCase_Postamble'"/>
        </finally>
      </try>
    </testcase>
  </function>
<!-- Test Case : Schema RFC Test 2247 2 -->
<!--
    Place test-specific test information here.
    The tag, TestMarker, must be the same as the tag, TestSuiteName.
    #@TestMarker                RFC Schema Tests
    #@TestName                  RFC 2247
    #@TestIssue
    #@TestPurpose               Check RFC 2247 Using Domains in LDAP/X.500 Schema Objects.
    #@TestPreamble              none
    #@TestStep                  Add RFC 2247 Schema Object.
    #@TestPostamble             none
    #@TestResult                Success if Add Operation returns 0
-->
  <function name="schema_rfc_2247_2" scope="local">
    <testcase name="getTestCaseName('RFC 2247 2')">
      <try>
        <sequence>
          <call function="'testCase_Preamble'"/>
          <message>
             'Schema: Add an entry that is covered by rfc 2247'
          </message>
          <call function="'runFunction'">
            { 'functionName'      : 'addEntry'                       ,
              'functionMessage'   : 'Add an entry where domain is a structural class.' ,
              'functionException' : 'LDAP.AddException'               ,
              'functionArguments' : { 'dsInstanceHost' : server.host ,
                                      'dsInstancePort' : server.port ,
                                      'dsInstanceDn'   : server.dn ,
                                      'dsInstancePswd' : server.password ,
                                      'entryToBeAdded' : '%s/schema/ldifs/rfc2247_2.ldif'
                                                          % remote.data }
            }
          </call>
          <call function="'runFunction'">
            { 'functionName'      : 'ldapSearchWithScript'                       ,
              'functionMessage'   : 'Search for the entry just added and return dc.' ,
              'functionException' : 'LDAP.SearchException'               ,
              'functionArguments' : { 'dsInstanceHost'   : server.host ,
                                      'dsInstancePort'   : server.port ,
                                      'dsInstanceDn'     : server.dn ,
                                      'dsInstancePswd'   : server.password ,
                                      'dsBaseDN'         : __baseDN ,
                                      'dsFilter'         : 'objectclass=domain' ,
                                      'dsAttributes'     : 'dc' }
            }
          </call>
          <script>
            _functionString=parse_stax_result(STAXResult)
         </script>
          <call function="'runFunction'">
           { 'functionName'      : 'checktestString' ,
             'functionMessage'   : 'Check that the dc attribute is returned.' ,
             'functionException' : 'Utils.CheckStringException' ,
             'functionArguments' : { 'expectedString' : 'dc: rfc-2247-tests-2' ,
                                     'returnString'   : _functionString }
           }
          </call>
        </sequence>
        <catch exception="'STAXException.LDAP.AddException'" typevar="eType" var="eInfo">
          <message log="1" level="'fatal'">
            '%s: LDAPAdd failed. eInfo(%s)' % (eType,eInfo)
          </message>
        </catch>
        <catch exception="'STAXException.LDAP.SearchException'" typevar="eType" var="eInfo">
          <message log="1" level="'fatal'">
            '%s: LDAPSearch failed. eInfo(%s)' % (eType,eInfo)
          </message>
        </catch>
        <finally>
          <call function="'testCase_Postamble'"/>
        </finally>
      </try>
    </testcase>
  </function>
<!-- Test Case : Schema RFC Test 2247 3 -->
<!--
    Place test-specific test information here.
    The tag, TestMarker, must be the same as the tag, TestSuiteName.
    #@TestMarker                RFC Schema Tests
    #@TestName                  RFC 2247
    #@TestIssue
    #@TestPurpose               Check RFC 2247 Schema Objects.
    #@TestPreamble              none
    #@TestStep                  Add Invalid RFC 2247 Schema Object.
    #@TestPostamble             none
    #@TestResult                Success if Add returns 65 (Object Class Violation)
-->
  <function name="schema_rfc_2247_3" scope="local">
    <testcase name="getTestCaseName('RFC 2247 3')">
      <try>
        <sequence>
          <call function="'testCase_Preamble'"/>
          <call function="'runFunction'">
            { 'functionName'      : 'addEntry'                       ,
              'functionMessage'   : 'Add an invalid object that is covered by RFC 2247.' ,
              'functionException' : 'LDAP.AddException'               ,
              'functionArguments' : { 'dsInstanceHost' : server.host ,
                                      'dsInstancePort' : server.port ,
                                      'dsInstanceDn'   : server.dn ,
                                      'dsInstancePswd' : server.password ,
                                      'entryToBeAdded' : '%s/schema/ldifs/rfc2247_3.ldif'
                                                          % remote.data ,
                                      'expectedRC'     : 65 }
            }
          </call>
        </sequence>
        <catch exception="'STAXException.LDAP.AddException'" typevar="eType" var="eInfo">
          <message log="1" level="'fatal'">
            '%s: LDAPAdd failed. eInfo(%s)' % (eType,eInfo)
          </message>
        </catch>
        <finally>
          <call function="'testCase_Postamble'"/>
        </finally>
      </try>
    </testcase>
  </function>
<!-- Test Case : Schema RFC Test 2247 4 -->
<!--
    Place test-specific test information here.
    The tag, TestMarker, must be the same as the tag, TestSuiteName.
    #@TestMarker                RFC Schema Tests
    #@TestName                  RFC 2247
    #@TestIssue
    #@TestPurpose               Check RFC 2247 Schema Objects.
    #@TestPreamble              none
    #@TestStep                  Add Invalid RFC 2247 Schema Object.
    #@TestPostamble             none
    #@TestResult                Success if Add returns 65 (Object Class Violation)
-->
  <function name="schema_rfc_2247_4" scope="local">
    <testcase name="getTestCaseName('RFC 2247 4')">
      <try>
        <sequence>
          <call function="'testCase_Preamble'"/>
          <call function="'runFunction'">
            { 'functionName'      : 'addEntry'                       ,
              'functionMessage'   : 'Add an invalid object that is covered by RFC 2247.' ,
              'functionException' : 'LDAP.AddException'               ,
              'functionArguments' : { 'dsInstanceHost' : server.host ,
                                      'dsInstancePort' : server.port ,
                                      'dsInstanceDn'   : server.dn ,
                                      'dsInstancePswd' : server.password ,
                                      'entryToBeAdded' : '%s/schema/ldifs/rfc2247_4.ldif'
                                                          % remote.data ,
                                      'expectedRC'     : 65 }
            }
          </call>
        </sequence>
        <catch exception="'STAXException.LDAP.AddException'" typevar="eType" var="eInfo">
          <message log="1" level="'fatal'">
            '%s: LDAPAdd failed. eInfo(%s)' % (eType,eInfo)
          </message>
        </catch>
        <finally>
          <call function="'testCase_Postamble'"/>
        </finally>
      </try>
    </testcase>
  </function>
<!-- Test Case : Schema RFC Test 2247 5 -->
<!--
    Place test-specific test information here.
    The tag, TestMarker, must be the same as the tag, TestSuiteName.
    #@TestMarker                RFC Schema Tests
    #@TestName                  RFC 2247
    #@TestIssue
    #@TestPurpose               Check RFC 2247 Schema Objects.
    #@TestPreamble              none
    #@TestStep                  Add Invalid RFC 2247 Schema Object.
    #@TestPostamble             none
    #@TestResult                Success if Add returns 65 (Object Class Violation)
-->
  <function name="schema_rfc_2247_5" scope="local">
    <testcase name="getTestCaseName('RFC 2247 5')">
      <try>
        <sequence>
          <call function="'testCase_Preamble'"/>
          <message>
             'Schema: Add an entry that is covered by rfc 2247'
          </message>
          <call function="'runFunction'">
            { 'functionName'      : 'addEntry'                       ,
              'functionMessage'   : 'Add an invalid object that is covered by RFC 2247.' ,
              'functionException' : 'LDAP.AddException'               ,
              'functionArguments' : { 'dsInstanceHost' : server.host ,
                                      'dsInstancePort' : server.port ,
                                      'dsInstanceDn'   : server.dn ,
                                      'dsInstancePswd' : server.password ,
                                      'entryToBeAdded' : '%s/schema/ldifs/rfc2247_5.ldif'
                                                          % remote.data ,
                                      'expectedRC'     : 65 }
            }
          </call>
        </sequence>
        <catch exception="'STAXException.LDAP.AddException'" typevar="eType" var="eInfo">
          <message log="1" level="'fatal'">
            '%s: LDAPAdd failed. eInfo(%s)' % (eType,eInfo)
          </message>
        </catch>
        <finally>
          <call function="'testCase_Postamble'"/>
        </finally>
      </try>
    </testcase>
  </function>
<!-- Test Case : Schema RFC Test 2377 -->
<!--
    Place test-specific test information here.
    The tag, TestMarker, must be the same as the tag, TestSuiteName.
    #@TestMarker                RFC Schema Tests
    #@TestName                  RFC 2377
    #@TestIssue
    #@TestPurpose               Check RFC 2377 Directory Naming Plan Schema Objects.
    #@TestPreamble              none
    #@TestStep                  Add RFC 2377 Schema Object.
    #@TestPostamble             none
    #@TestResult                Success if Add Operation returns 0
-->
  <function name="schema_rfc_2377" scope="local">
    <testcase name="getTestCaseName('RFC 2377')">
      <try>
        <sequence>
          <call function="'testCase_Preamble'"/>
          <message>
             'Schema: Add an entry that is covered by rfc 2377'
          </message>
          <call function="'runFunction'">
            { 'functionName'      : 'addEntry'                       ,
              'functionMessage'   : 'Add an entry that is covered by RFC 2377.' ,
              'functionException' : 'LDAP.AddException'               ,
              'functionArguments' : { 'dsInstanceHost' : server.host ,
                                      'dsInstancePort' : server.port ,
                                      'dsInstanceDn'   : server.dn ,
                                      'dsInstancePswd' : server.password ,
                                      'entryToBeAdded' : '%s/schema/ldifs/rfc2377.ldif'
                                                          % remote.data }
            }
          </call>
          <call function="'runFunction'">
            { 'functionName'      : 'ldapSearchWithScript'                       ,
              'functionMessage'   : 'Search for the entry just added and return uid.' ,
              'functionException' : 'LDAP.SearchException'               ,
              'functionArguments' : { 'dsInstanceHost'   : server.host ,
                                      'dsInstancePort'   : server.port ,
                                      'dsInstanceDn'     : server.dn ,
                                      'dsInstancePswd'   : server.password ,
                                      'dsBaseDN'         : __baseDN ,
                                      'dsFilter'         : 'objectclass=*' ,
                                      'dsAttributes'     : 'uid' }
            }
          </call>
          <!--
              TODO: RFC 2377 suggests using dcObject and uidObject for constructing
              the name in existing structural objects.
          -->
          <script>
            _functionString=parse_stax_result(STAXResult)
         </script>
          <call function="'runFunction'">
           { 'functionName'      : 'checktestString' ,
             'functionMessage'   : 'Check that the uid attribute is returned.' ,
             'functionException' : 'Utils.CheckStringException' ,
             'functionArguments' : { 'expectedString' : 'uid: amiller' ,
                                     'returnString'   : _functionString }
           }
          </call>
        </sequence>
        <catch exception="'STAXException.LDAP.AddException'" typevar="eType" var="eInfo">
          <message log="1" level="'fatal'">
            '%s: LDAPAdd failed. eInfo(%s)' % (eType,eInfo)
          </message>
        </catch>
        <catch exception="'STAXException.LDAP.SearchException'" typevar="eType" var="eInfo">
          <message log="1" level="'fatal'">
            '%s: LDAPSearch failed. eInfo(%s)' % (eType,eInfo)
          </message>
        </catch>
        <catch exception="'STAXException.Utils.CheckStringException'" typevar="eType" var="eInfo">
          <message log="1" level="'fatal'">
            '%s: UtilsCheck failed. eInfo(%s)' % (eType,eInfo)
          </message>
        </catch>
        <finally>
          <call function="'testCase_Postamble'"/>
        </finally>
      </try>
    </testcase>
  </function>
<!-- Test Case : Schema RFC Test 2798 -->
<!--
    Place test-specific test information here.
    The tag, TestMarker, must be the same as the tag, TestSuiteName.
    #@TestMarker                RFC Schema Tests
    #@TestName                  RFC 2798
    #@TestIssue
    #@TestPurpose               Check RFC 2798 LDAP inetOrgPerson Schema Objects.
    #@TestPreamble              none
    #@TestStep                  Add RFC 2798 LDAP inetOrgPerson Schema Object.
    #@TestPostamble             none
    #@TestResult                Success if Add Operation returns 0
-->
  <function name="schema_rfc_2798" scope="local">
    <testcase name="getTestCaseName('RFC 2798')">
      <try>
        <sequence>
          <call function="'testCase_Preamble'"/>
          <message>
             'Schema: Add an entry that is covered by rfc 2798'
          </message>
          <call function="'addEntry'">
            { 'dsInstanceHost'   : server.host ,
              'dsInstancePort'   : server.port ,
              'dsInstanceDn'     : server.dn ,
              'dsInstancePswd'   : server.password ,
              'entryToBeAdded'   : '%s/schema/ldifs/rfc2798.ldif' % remote.data }
          </call>
          <call function="'runFunction'">
            { 'functionName'      : 'ldapSearchWithScript'                       ,
              'functionMessage'   : 'Search for the entry just added and return departmentNumber.' ,
              'functionException' : 'LDAP.SearchException'               ,
              'functionArguments' : { 'dsInstanceHost'   : server.host ,
                                      'dsInstancePort'   : server.port ,
                                      'dsInstanceDn'     : server.dn ,
                                      'dsInstancePswd'   : server.password ,
                                      'dsBaseDN'         : "ou=People, %s" % __baseDN ,
                                      'dsFilter'         : 'objectclass=*' ,
                                      'dsAttributes'     : 'departmentNumber' }
            }
          </call>
          <script>
            _functionString=parse_stax_result(STAXResult)
         </script>
          <call function="'runFunction'">
           { 'functionName'      : 'checktestString' ,
             'functionMessage'   : 'Check that the departmentNumber attribute is returned.' ,
             'functionException' : 'Utils.CheckStringException' ,
             'functionArguments' : { 'expectedString' : 'departmentNumber: 602' ,
                                     'returnString'   : _functionString }
           }
          </call>
        </sequence>
        <catch exception="'STAXException.LDAP.AddException'" typevar="eType" var="eInfo">
          <message log="1" level="'fatal'">
            '%s: LDAPAdd failed. eInfo(%s)' % (eType,eInfo)
          </message>
        </catch>
        <catch exception="'STAXException.LDAP.SearchException'" typevar="eType" var="eInfo">
          <message log="1" level="'fatal'">
            '%s: LDAPSearch failed. eInfo(%s)' % (eType,eInfo)
          </message>
        </catch>
        <catch exception="'STAXException.Utils.CheckStringException'" typevar="eType" var="eInfo">
          <message log="1" level="'fatal'">
            '%s: UtilsCheck failed. eInfo(%s)' % (eType,eInfo)
          </message>
        </catch>
        <finally>
          <call function="'testCase_Postamble'"/>
        </finally>
      </try>
    </testcase>
  </function>
<!-- Test Case : Schema RFC Test 3045 1 -->
<!--
    Place test-specific test information here.
    The tag, TestMarker, must be the same as the tag, TestSuiteName.
    #@TestMarker                RFC Schema Tests
    #@TestName                  RFC 3045
    #@TestIssue
    #@TestPurpose               Check RFC 3045 Schema Objects.
    #@TestPreamble              none
    #@TestStep                  Add Invalid RFC 3045 Schema Object.
    #@TestPostamble             none
    #@TestResult                Success if Add returns 53 (Unwilling to Perform)
-->
  <function name="schema_rfc_3045_1" scope="local">
    <testcase name="getTestCaseName('RFC 3045 1')">
      <try>
        <sequence>
          <call function="'testCase_Preamble'"/>
          <message>
             'Schema: Add an entry that is covered by rfc 3045'
          </message>
          <call function="'addEntry'">
            { 'dsInstanceHost'   : server.host ,
              'dsInstancePort'   : server.port ,
              'dsInstanceDn'     : server.dn ,
              'dsInstancePswd'   : server.password ,
              'entryToBeAdded'   : '%s/schema/ldifs/rfc3045_1.ldif' % remote.data ,
              'expectedRC'       : 53 }
          </call>
        </sequence>
        <finally>
          <call function="'testCase_Postamble'"/>
        </finally>
      </try>
    </testcase>
  </function>
<!-- Test Case : Schema RFC Test 3045 2 -->
<!--
    Place test-specific test information here.
    The tag, TestMarker, must be the same as the tag, TestSuiteName.
    #@TestMarker                RFC Schema Tests
    #@TestName                  RFC 3045
    #@TestIssue
    #@TestPurpose               Check RFC 3045 Schema Objects.
    #@TestPreamble              none
    #@TestStep                  Add Invalid RFC 3045 Schema Object.
    #@TestPostamble             none
    #@TestResult                Success if Add returns 53 (Unwilling to Perform)
-->
  <function name="schema_rfc_3045_2" scope="local">
    <testcase name="getTestCaseName('RFC 3045 2')">
      <try>
        <sequence>
          <call function="'testCase_Preamble'"/>
          <message>
             'Schema: Add an entry that is covered by rfc 3045'
          </message>
          <call function="'addEntry'">
            { 'dsInstanceHost'   : server.host ,
              'dsInstancePort'   : server.port ,
              'dsInstanceDn'     : server.dn ,
              'dsInstancePswd'   : server.password ,
              'entryToBeAdded'   : '%s/schema/ldifs/rfc3045_2.ldif' % remote.data ,
              'expectedRC'       : 53 }
          </call>
        </sequence>
        <finally>
          <call function="'testCase_Postamble'"/>
        </finally>
      </try>
    </testcase>
  </function>
<!-- Test Case : Schema RFC Test 4403 1 -->
<!--
    Place test-specific test information here.
    The tag, TestMarker, must be the same as the tag, TestSuiteName.
    #@TestMarker                RFC Schema Tests
    #@TestName                  RFC 4403
    #@TestIssue
    #@TestPurpose               Check RFC 4403 Schema Objects.
    #@TestPreamble              none
    #@TestStep                  Add RFC 4403 Schema Object.
    #@TestPostamble             none
    #@TestResult                Success if Add Operation returns 0
-->
  <function name="schema_rfc_4403_1" scope="local">
    <testcase name="getTestCaseName('RFC 4403 1')">
      <try>
        <sequence>
          <call function="'testCase_Preamble'"/>
          <message>
             'Schema: Add an entry that is covered by rfc 4403'
          </message>
          <call function="'addEntry'">
            { 'dsInstanceHost'   : server.host ,
              'dsInstancePort'   : server.port ,
              'dsInstanceDn'     : server.dn ,
              'dsInstancePswd'   : server.password ,
              'entryToBeAdded'   : '%s/schema/ldifs/rfc4403_1.ldif' % remote.data }
          </call>
          <!-- TODO: Need to verify that the added entry is working as specified -->
        </sequence>
        <finally>
          <call function="'testCase_Postamble'"/>
        </finally>
      </try>
    </testcase>
  </function>
<!-- Test Case : Schema RFC Test 4403 2 -->
<!--
    Place test-specific test information here.
    The tag, TestMarker, must be the same as the tag, TestSuiteName.
    #@TestMarker                RFC Schema Tests
    #@TestName                  RFC 4403
    #@TestIssue
    #@TestPurpose               Check RFC 4403 Schema Objects.
    #@TestPreamble              none
    #@TestStep                  Add RFC 4403 Schema Object.
    #@TestPostamble             none
    #@TestResult                Success if Add Operation returns 0
-->
  <function name="schema_rfc_4403_2" scope="local">
    <testcase name="getTestCaseName('RFC 4403 2')">
      <try>
        <sequence>
          <call function="'testCase_Preamble'"/>
          <message>
             'Schema: Add an entry that is covered by rfc 4403'
          </message>
          <call function="'addEntry'">
            { 'dsInstanceHost'   : server.host ,
              'dsInstancePort'   : server.port ,
              'dsInstanceDn'     : server.dn ,
              'dsInstancePswd'   : server.password ,
              'entryToBeAdded'   : '%s/schema/ldifs/rfc4403_2.ldif' % remote.data }
          </call>
          <!-- TODO: Need to verify that the added entry is working as specified -->
        </sequence>
        <finally>
          <call function="'testCase_Postamble'"/>
        </finally>
      </try>
    </testcase>
  </function>
<!-- Test Case : Schema RFC Test 4403 3 -->
<!--
    Place test-specific test information here.
    The tag, TestMarker, must be the same as the tag, TestSuiteName.
    #@TestMarker                RFC Schema Tests
    #@TestName                  RFC 4403
    #@TestIssue
    #@TestPurpose               Check RFC 4403 Schema Objects.
    #@TestPreamble              none
    #@TestStep                  Add Invalid RFC 4403 Schema Object.
    #@TestPostamble             none
    #@TestResult                Success if Add returns 65 (Object Class Violation)
-->
  <function name="schema_rfc_4403_3" scope="local">
    <testcase name="getTestCaseName('RFC 4403 3')">
      <try>
        <sequence>
          <call function="'testCase_Preamble'"/>
          <message>
             'Schema: Add an entry that is covered by rfc 4403'
          </message>
          <call function="'addEntry'">
            { 'dsInstanceHost'   : server.host ,
              'dsInstancePort'   : server.port ,
              'dsInstanceDn'     : server.dn ,
              'dsInstancePswd'   : server.password ,
              'entryToBeAdded'   : '%s/schema/ldifs/rfc4403_3.ldif' % remote.data,
              'expectedRC'       : 65 }
          </call>
        </sequence>
        <finally>
          <call function="'testCase_Postamble'"/>
        </finally>
      </try>
    </testcase>
  </function>
<!-- Test Case : Schema RFC Test 4403 4 -->
<!--
    Place test-specific test information here.
    The tag, TestMarker, must be the same as the tag, TestSuiteName.
    #@TestMarker                RFC Schema Tests
    #@TestName                  RFC 4403
    #@TestIssue
    #@TestPurpose               Check RFC 4403 Schema Objects.
    #@TestPreamble              none
    #@TestStep                  Add RFC 4403 Schema Object.
    #@TestPostamble             none
    #@TestResult                Success if Add Operation returns 0
-->
  <function name="schema_rfc_4403_4" scope="local">
    <testcase name="getTestCaseName('RFC 4403 4')">
      <try>
        <sequence>
          <call function="'testCase_Preamble'"/>
          <message>
             'Schema: Add an entry that is covered by rfc 4403'
          </message>
          <call function="'addEntry'">
            { 'dsInstanceHost'   : server.host ,
              'dsInstancePort'   : server.port ,
              'dsInstanceDn'     : server.dn ,
              'dsInstancePswd'   : server.password ,
              'entryToBeAdded'   : '%s/schema/ldifs/rfc4403_4.ldif' % remote.data }
          </call>
          <!-- TODO: Need to verify that the added entry is working as specified -->
        </sequence>
        <finally>
          <call function="'testCase_Postamble'"/>
        </finally>
      </try>
    </testcase>
  </function>
<!-- Test Case : Schema RFC Test 4403 5 -->
<!--
    Place test-specific test information here.
    The tag, TestMarker, must be the same as the tag, TestSuiteName.
    #@TestMarker                RFC Schema Tests
    #@TestName                  RFC 4403
    #@TestIssue
    #@TestPurpose               Check RFC 4403 Schema Objects.
    #@TestPreamble              none
    #@TestStep                  Add Invalid RFC 4403 Schema Object.
    #@TestPostamble             none
    #@TestResult                Success if Add returns 65 (Object Class Violation)
-->
  <function name="schema_rfc_4403_5" scope="local">
    <testcase name="getTestCaseName('RFC 4403 5')">
      <try>
        <sequence>
          <call function="'testCase_Preamble'"/>
          <message>
             'Schema: Add an entry that is covered by rfc 4403'
          </message>
          <call function="'addEntry'">
            { 'dsInstanceHost'   : server.host ,
              'dsInstancePort'   : server.port ,
              'dsInstanceDn'     : server.dn ,
              'dsInstancePswd'   : server.password ,
              'entryToBeAdded'   : '%s/schema/ldifs/rfc4403_5.ldif' % remote.data,
              'expectedRC'       : 65 }
          </call>
        </sequence>
        <finally>
          <call function="'testCase_Postamble'"/>
        </finally>
      </try>
    </testcase>
  </function>
<!-- Test Case : Schema RFC Test 2307 BIS 1-->
<!--
    Place test-specific test information here.
    The tag, TestMarker, must be the same as the tag, TestSuiteName.
    #@TestMarker                RFC Schema Tests
    #@TestName                  RFC 2307 BIS 1
    #@TestIssue
    #@TestPurpose               Check RFC 2307 Schema Objects.
    #@TestPreamble              none
    #@TestStep                  Add RFC 2307 Schema Object.
    #@TestPostamble             none
    #@TestResult                Success if Add Operation returns 0
-->
  <function name="schema_rfc_2307_1" scope="local">
    <testcase name="getTestCaseName('Draft Howard RFC 2307bis 1')">
      <try>
        <sequence>
          <call function="'testCase_Preamble'"/>
          <message>
             'Schema: Add an entry that is covered by Draft Howard RFC 2307bis 1'
          </message>
          <call function="'addEntry'">
            { 'dsInstanceHost'   : server.host ,
              'dsInstancePort'   : server.port ,
              'dsInstanceDn'     : server.dn ,
              'dsInstancePswd'   : server.password ,
              'entryToBeAdded'   : '%s/schema/ldifs/rfc2307bis_1.ldif' % remote.data }
          </call>
          <!-- TODO: Need to verify that the added entry is working as specified -->
        </sequence>
        <finally>
          <call function="'testCase_Postamble'"/>
        </finally>
      </try>
    </testcase>
  </function>
<!-- Test Case : Schema RFC Test 2307 BIS 2-->
<!--
    Place test-specific test information here.
    The tag, TestMarker, must be the same as the tag, TestSuiteName.
    #@TestMarker                RFC Schema Tests
    #@TestName                  RFC 2307 BIS 2
    #@TestIssue
    #@TestPurpose               Check RFC 2307 Schema Objects.
    #@TestPreamble              none
    #@TestStep                  Add Invalid RFC 4403 Schema Object.
    #@TestPostamble             none
    #@TestResult                Success if Add returns 65 (Object Class Violation)
-->
  <function name="schema_rfc_2307_2" scope="local">
    <testcase name="getTestCaseName('Draft Howard RFC 2307bis 2')">
      <try>
        <sequence>
          <call function="'testCase_Preamble'"/>
          <message>
             'Schema: Add an entry that is covered by Draft Howard RFC 2307bis 2'
          </message>
          <call function="'addEntry'">
            { 'dsInstanceHost'   : server.host ,
              'dsInstancePort'   : server.port ,
              'dsInstanceDn'     : server.dn ,
              'dsInstancePswd'   : server.password ,
              'entryToBeAdded'   : '%s/schema/ldifs/rfc2307bis_2.ldif' % remote.data ,
              'expectedRC'       : 65 }
          </call>
        </sequence>
        <finally>
          <call function="'testCase_Postamble'"/>
        </finally>
      </try>
    </testcase>
  </function>
<!-- Test Case : Schema RFC Test 2307 BIS 3 -->
<!--
    Place test-specific test information here.
    The tag, TestMarker, must be the same as the tag, TestSuiteName.
    #@TestMarker                RFC Schema Tests
    #@TestName                  RFC 2307 BIS 3
    #@TestIssue
    #@TestPurpose               Check RFC 2307 Schema Objects.
    #@TestPreamble              none
    #@TestStep                  Add RFC 2307 Schema Object.
    #@TestPostamble             none
    #@TestResult                Success if Add Operation returns 0
-->
  <function name="schema_rfc_2307_3" scope="local">
    <testcase name="getTestCaseName('Draft Howard RFC 2307bis 3')">
      <try>
        <sequence>
          <call function="'testCase_Preamble'"/>
          <message>
             'Schema: Add an entry that is covered by Draft Howard RFC 2307bis 3'
          </message>
          <call function="'addEntry'">
            { 'dsInstanceHost'   : server.host ,
              'dsInstancePort'   : server.port ,
              'dsInstanceDn'     : server.dn ,
              'dsInstancePswd'   : server.password ,
              'entryToBeAdded'   : '%s/schema/ldifs/rfc2307bis_3.ldif' % remote.data }
          </call>
          <!-- TODO: Need to verify that the added entry is working as specified -->
        </sequence>
        <finally>
          <call function="'testCase_Postamble'"/>
        </finally>
      </try>
    </testcase>
  </function>
<!-- Test Case : Schema RFC Test 2307 BIS 4 -->
<!--
    Place test-specific test information here.
    The tag, TestMarker, must be the same as the tag, TestSuiteName.
    #@TestMarker                RFC Schema Tests
    #@TestName                  RFC 2307 BIS 4
    #@TestIssue
    #@TestPurpose               Check RFC 2307 Schema Objects.
    #@TestPreamble              none
    #@TestStep                  Add Invalid RFC 4403 Schema Object.
    #@TestPostamble             none
    #@TestResult                Success if Add returns 65 (Object Class Violation)
-->
  <function name="schema_rfc_2307_4" scope="local">
    <testcase name="getTestCaseName('Draft Howard RFC 2307bis 4')">
      <try>
        <sequence>
          <call function="'testCase_Preamble'"/>
          <message>
             'Schema: Add an entry that is covered by Draft Howard RFC 2307bis 4'
          </message>
          <call function="'addEntry'">
            { 'dsInstanceHost'   : server.host ,
              'dsInstancePort'   : server.port ,
              'dsInstanceDn'     : server.dn ,
              'dsInstancePswd'   : server.password ,
              'entryToBeAdded'   : '%s/schema/ldifs/rfc2307bis_4.ldif' % remote.data ,
              'expectedRC'       : 65 }
          </call>
        </sequence>
        <finally>
          <call function="'testCase_Postamble'"/>
        </finally>
      </try>
    </testcase>
  </function>
<!-- Test Case : Schema RFC Test draft-furseth-ldap-untypedobject -->
<!--
    Place test-specific test information here.
    The tag, TestMarker, must be the same as the tag, TestSuiteName.
    #@TestMarker                RFC Schema Tests
    #@TestName                  RFC 2307 BIS 4
    #@TestIssue
    #@TestPurpose               Check RFC Draft Furseth LDAP Untypedobject Schema Objects.
    #@TestPreamble              none
    #@TestStep                  Add RFC 2307 Draft Furseth LDAP Untypedobject Object.
    #@TestPostamble             none
    #@TestResult                Success if Add Operation returns 0
-->
  <function name="schema_rfc_furseth" scope="local">
    <testcase name="getTestCaseName('Draft Furseth LDAP Untypedobject')">
      <try>
        <sequence>
          <call function="'testCase_Preamble'"/>
          <message>
             'Schema: Add an entry that is covered by Draft draft-furseth-ldap-untypedobject'
          </message>
          <call function="'addEntry'">
            { 'dsInstanceHost'   : server.host ,
              'dsInstancePort'   : server.port ,
              'dsInstanceDn'     : server.dn ,
              'dsInstancePswd'   : server.password ,
              'entryToBeAdded'   : '%s/schema/ldifs/untypedobject.ldif' % remote.data }
          </call>
          <!-- TODO: Need to verify that the added entry is working as specified -->
        </sequence>
        <finally>
          <call function="'testCase_Postamble'"/>
        </finally>
      </try>
    </testcase>
  </function>
<!-- Test Case : Schema RFC draft-good-ldap-changelog 1 -->
<!--
    Place test-specific test information here.
    The tag, TestMarker, must be the same as the tag, TestSuiteName.
    #@TestMarker                RFC Schema Tests
    #@TestName                  RFC Draft Good LDAP Changelog
    #@TestIssue
    #@TestPurpose               Check RFC Draft Good LDAP Changelog.
    #@TestPreamble              none
    #@TestStep                  Add RFC Draft Good LDAP Changelog Object.
    #@TestPostamble             none
    #@TestResult                Success if Add Operation returns 0
-->
  <function name="schema_rfc_good_1" scope="local">
    <testcase name="getTestCaseName('Draft Good LDAP Changelog 1')">
      <try>
        <sequence>
          <call function="'testCase_Preamble'"/>
          <message>
             'Schema: Add an entry that is covered by Draft draft-good-ldap-changelog'
          </message>
          <call function="'addEntry'">
            { 'dsInstanceHost'   : server.host ,
              'dsInstancePort'   : server.port ,
              'dsInstanceDn'     : server.dn ,
              'dsInstancePswd'   : server.password ,
              'entryToBeAdded'   : '%s/schema/ldifs/changelog_1.ldif' % remote.data }
          </call>
          <!-- TODO: Need to verify that the added entry is working as specified -->
        </sequence>
        <finally>
          <call function="'testCase_Postamble'"/>
        </finally>
      </try>
    </testcase>
  </function>
<!-- Test Case : Schema RFC draft-good-ldap-changelog 2 -->
<!--
    Place test-specific test information here.
    The tag, TestMarker, must be the same as the tag, TestSuiteName.
    #@TestMarker                RFC Schema Tests
    #@TestName                  RFC Draft Good LDAP Changelog
    #@TestIssue
    #@TestPurpose               Check RFC Draft Good LDAP Changelog.
    #@TestPreamble              none
    #@TestStep                  Add RFC Draft Good LDAP Changelog Object.
    #@TestPostamble             none
    #@TestResult                Success if Add Operation returns 0
-->
  <function name="schema_rfc_good_2" scope="local">
    <testcase name="getTestCaseName('Draft Good LDAP Changelog 2')">
      <try>
        <sequence>
          <call function="'testCase_Preamble'"/>
          <message>
             'Schema: Add an entry that is covered by Draft draft-good-ldap-changelog'
          </message>
          <call function="'addEntry'">
            { 'dsInstanceHost'   : server.host ,
              'dsInstancePort'   : server.port ,
              'dsInstanceDn'     : server.dn ,
              'dsInstancePswd'   : server.password ,
              'entryToBeAdded'   : '%s/schema/ldifs/changelog_2.ldif' % remote.data }
          </call>
          <!-- TODO: Need to verify that the added entry is working as specified -->
        </sequence>
        <finally>
          <call function="'testCase_Postamble'"/>
        </finally>
      </try>
    </testcase>
  </function>
<!-- Test Case : Schema RFC draft-good-ldap-changelog 3 -->
<!--
    Place test-specific test information here.
    The tag, TestMarker, must be the same as the tag, TestSuiteName.
    #@TestMarker                RFC Schema Tests
    #@TestName                  RFC Draft Good LDAP Changelog
    #@TestIssue
    #@TestPurpose               Check RFC Draft Good LDAP Changelog.
    #@TestPreamble              none
    #@TestStep                  Add RFC Draft Good LDAP Changelog Object.
    #@TestPostamble             none
    #@TestResult                Success if Add Operation returns 0
-->
  <function name="schema_rfc_good_3" scope="local">
    <testcase name="getTestCaseName('Draft Good LDAP Changelog 3')">
      <try>
        <sequence>
          <call function="'testCase_Preamble'"/>
          <message>
             'Schema: Add an entry that is covered by Draft draft-good-ldap-changelog'
          </message>
          <call function="'addEntry'">
            { 'dsInstanceHost'   : server.host ,
              'dsInstancePort'   : server.port ,
              'dsInstanceDn'     : server.dn ,
              'dsInstancePswd'   : server.password ,
              'entryToBeAdded'   : '%s/schema/ldifs/changelog_3.ldif' % remote.data }
          </call>
          <!-- TODO: Need to verify that the added entry is working as specified -->
        </sequence>
        <finally>
          <call function="'testCase_Postamble'"/>
        </finally>
      </try>
    </testcase>
  </function>
<!-- Test Case : Schema RFC Test Draft Howard NamedObject 1 -->
<!--
    Place test-specific test information here.
    The tag, TestMarker, must be the same as the tag, TestSuiteName.
    #@TestMarker                RFC Schema Tests
    #@TestName                  RFC Draft Howard NamedObject 1
    #@TestIssue
    #@TestPurpose               Check RFC Draft Howard NamedObject.
    #@TestPreamble              none
    #@TestStep                  Add RFC Draft Howard NamedObject object.
    #@TestPostamble             none
    #@TestResult                Success if Add Operation returns 0
-->
  <function name="schema_rfc_howard_1" scope="local">
    <testcase name="getTestCaseName('Draft Howard NamedObject 1')">
      <try>
        <sequence>
          <call function="'testCase_Preamble'"/>
          <message>
             'Schema: Add an entry that is covered by draft-howard-namedobject.'
          </message>
          <call function="'addEntry'">
            { 'dsInstanceHost'   : server.host ,
              'dsInstancePort'   : server.port ,
              'dsInstanceDn'     : server.dn ,
              'dsInstancePswd'   : server.password ,
              'entryToBeAdded'   : '%s/schema/ldifs/namedobject_1.ldif' % remote.data }
          </call>
          <!-- TODO: Need to verify that the added entry is working as specified -->
        </sequence>
        <finally>
          <call function="'testCase_Postamble'"/>
        </finally>
      </try>
    </testcase>
  </function>
<!-- Test Case : Schema RFC Test Draft Howard NamedObject 2 -->
<!--
    Place test-specific test information here.
    The tag, TestMarker, must be the same as the tag, TestSuiteName.
    #@TestMarker                RFC Schema Tests
    #@TestName                  RFC Draft Howard NamedObject 1
    #@TestIssue
    #@TestPurpose               Check RFC Draft Howard NamedObject.
    #@TestPreamble              none
    #@TestStep                  Add RFC Draft Howard NamedObject object.
    #@TestPostamble             none
    #@TestResult                Success if Add Operation returns 0
-->
  <function name="schema_rfc_howard_2" scope="local">
    <testcase name="getTestCaseName('Draft Howard NamedObject 2')">
      <try>
        <sequence>
          <call function="'testCase_Preamble'"/>
          <message>
             'Schema: Add an entry that is covered by draft-howard-namedobject.'
          </message>
          <call function="'addEntry'">
            { 'dsInstanceHost'   : server.host ,
              'dsInstancePort'   : server.port ,
              'dsInstanceDn'     : server.dn ,
              'dsInstancePswd'   : server.password ,
              'entryToBeAdded'   : '%s/schema/ldifs/namedobject_2.ldif' % remote.data }
          </call>
          <!-- TODO: Need to verify that the added entry is working as specified -->
        </sequence>
        <finally>
          <call function="'testCase_Postamble'"/>
        </finally>
      </try>
    </testcase>
  </function>
<!-- Test Case : Schema RFC Test Draft IETF LDUP Subentry 1 -->
<!--
    Place test-specific test information here.
    The tag, TestMarker, must be the same as the tag, TestSuiteName.
    #@TestMarker                RFC Schema Tests
    #@TestName                  RFC Draft IETF LDUP Subentry 1
    #@TestIssue
    #@TestPurpose               Check RFC Draft IETF LDUP Subentry 1.
    #@TestPreamble              none
    #@TestStep                  Add RFC Draft IETF LDUP Subentry object.
    #@TestPostamble             none
    #@TestResult                Success if Add Operation returns 0
-->
  <function name="schema_rfc_ldup_1" scope="local">
    <testcase name="getTestCaseName('Draft IETF LDUP Subentry 1')">
      <try>
        <sequence>
          <call function="'testCase_Preamble'"/>
          <message>
             'Schema: Schema: Add an entry that is covered by draft-ietf-ldup-subentry.'
          </message>
          <call function="'addEntry'">
            { 'dsInstanceHost'   : server.host ,
              'dsInstancePort'   : server.port ,
              'dsInstanceDn'     : server.dn ,
              'dsInstancePswd'   : server.password ,
              'entryToBeAdded'   : '%s/schema/ldifs/ldup_subentry_1.ldif' % remote.data }
          </call>
          <!-- TODO: Need to verify that the added entry is working as specified -->
        </sequence>
        <finally>
          <call function="'testCase_Postamble'"/>
        </finally>
      </try>
    </testcase>
  </function>
<!-- Test Case : Schema RFC Test Draft IETF LDUP Subentry 2 -->
<!--
    Place test-specific test information here.
    The tag, TestMarker, must be the same as the tag, TestSuiteName.
    #@TestMarker                RFC Schema Tests
    #@TestName                  RFC Draft IETF LDUP Subentry 2
    #@TestIssue
    #@TestPurpose               Check RFC Draft IETF LDUP Subentry 2.
    #@TestPreamble              none
    #@TestStep                  Add RFC Draft IETF LDUP Subentry 2 object.
    #@TestPostamble             none
    #@TestResult                Success if Add Operation returns 0
-->
  <function name="schema_rfc_ldup_2" scope="local">
    <testcase name="getTestCaseName('Draft IETF LDUP Subentry 2')">
      <try>
        <sequence>
          <call function="'testCase_Preamble'"/>
          <message>
             'Schema: Schema: Add an entry that is covered by draft-ietf-ldup-subentry.'
          </message>
          <call function="'addEntry'">
            { 'dsInstanceHost'   : server.host ,
              'dsInstancePort'   : server.port ,
              'dsInstanceDn'     : server.dn ,
              'dsInstancePswd'   : server.password ,
              'entryToBeAdded'   : '%s/schema/ldifs/ldup_subentry_2.ldif' % remote.data }
          </call>
          <!-- TODO: Need to verify that the added entry is working as specified -->
        </sequence>
        <finally>
          <call function="'testCase_Postamble'"/>
        </finally>
      </try>
    </testcase>
  </function>
<!-- Test Case : Schema RFC Test Draft IETF LDUP Subentry 3 -->
<!--
    Place test-specific test information here.
    The tag, TestMarker, must be the same as the tag, TestSuiteName.
    #@TestMarker                RFC Schema Tests
    #@TestName                  RFC Draft IETF LDUP Subentry 3
    #@TestIssue
    #@TestPurpose               Check RFC Draft IETF LDUP Subentry 3.
    #@TestPreamble              none
    #@TestStep                  Add Invalid RFC Draft IETF LDUP Subentry 3 object.
    #@TestPostamble             none
    #@TestResult                Success if Add returns 53 (Unwilling to Perform)
-->
  <function name="schema_rfc_ldup_3" scope="local">
    <testcase name="getTestCaseName('Draft IETF LDUP Subentry 3')">
      <try>
        <sequence>
          <call function="'testCase_Preamble'"/>
          <message>
             'Schema: Schema: Add an entry that is covered by draft-ietf-ldup-subentry.'
          </message>
          <call function="'addEntry'">
            { 'dsInstanceHost'   : server.host ,
              'dsInstancePort'   : server.port ,
              'dsInstanceDn'     : server.dn ,
              'dsInstancePswd'   : server.password ,
              'entryToBeAdded'   : '%s/schema/ldifs/ldup_subentry_3.ldif' % remote.data ,
              'expectedRC'       : 53 }
          </call>
        </sequence>
        <finally>
          <call function="'testCase_Postamble'"/>
        </finally>
      </try>
    </testcase>
  </function>
<!-- Test Case : Schema Disable Schema Checking -->
<!--
    Place test-specific test information here.
    The tag, TestMarker, must be the same as the tag, TestSuiteName.
    #@TestMarker                Disable Schema Checking
    #@TestName                  Disable Schema Checking
    #@TestIssue
    #@TestPurpose               Check Disable Schema Checking.
    #@TestPreamble              none
    #@TestStep                  Set check schema to false.
    #@TestPostamble             none
    #@TestResult                Success if Add Operation returns 0
-->
  <function name="schema_disable_schema_checking" scope="local">
    <testcase name="getTestCaseName('Disable Schema Checking')">
      <try>
        <sequence>
          <call function="'testCase_Preamble'"/>
          <message>
             'Schema: Disable schema checking.'
          </message>
          <call function="'modifyGlobal'">
                { 'dsInstanceHost'         : server.host ,
                  'dsInstanceDn'           : server.dn ,
                  'dsInstancePswd'         : server.password ,
                  'attributeName'          : 'check-schema' ,
                  'attributeValue'         : 'false' }
          </call>
          <!-- TODO: Need to verify the disabling of schema check. -->
          <!-- TODO: Should be part of a separate test suite. -->
        </sequence>
        <finally>
          <call function="'testCase_Postamble'"/>
        </finally>
      </try>
    </testcase>
  </function>
<!-- Test Case : Schema Enable Schema Checking -->
<!--
    Place test-specific test information here.
    The tag, TestMarker, must be the same as the tag, TestSuiteName.
    #@TestMarker                Enable Schema Checking
    #@TestName                  Enable Schema Checking
    #@TestIssue
    #@TestPurpose               Check Enable Schema Checking.
    #@TestPreamble              none
    #@TestStep                  Set check schema to true.
    #@TestPostamble             none
    #@TestResult                Success if Add Operation returns 0
-->
  <function name="schema_enable_schema_checking" scope="local">
    <testcase name="getTestCaseName('Enable Schema Checking')">
      <try>
        <sequence>
          <call function="'testCase_Preamble'"/>
          <message>
             'Schema: Enable schema checking.'
          </message>
          <call function="'modifyGlobal'">
                { 'dsInstanceHost'         : server.host ,
                  'dsInstanceDn'           : server.dn ,
                  'dsInstancePswd'         : server.password ,
                  'attributeName'          : 'check-schema' ,
                  'attributeValue'         : 'true' }
          </call>
          <!-- TODO: Need to verify the enabling of schema check. -->
          <!-- TODO: Should be part of a separate test suite. -->
        </sequence>
        <finally>
          <call function="'testCase_Postamble'"/>
        </finally>
      </try>
    </testcase>
  </function>
<!-- Test Case : Schema Disable Syntax Checking for Generalized Time-->
<!--
    Place test-specific test information here.
    The tag, TestMarker, must be the same as the tag, TestSuiteName.
    #@TestMarker                Disable Syntax Checking
    #@TestName                  Disable Syntax Checking
    #@TestIssue
    #@TestPurpose               Check Disable Syntax Checking for Generalized Time.
    #@TestPreamble              none
    #@TestStep                  Set check schema to true.
    #@TestPostamble             none
    #@TestResult                Success if Add Operation returns 0
-->
  <function name="schema_disable_syntax_checking" scope="local">
    <testcase name="getTestCaseName('Disable Syntax Checking')">
      <try>
        <sequence>
          <call function="'testCase_Preamble'"/>
          <message>
             'Schema: Disable Syntax Checking for Generalized Time.'
          </message>
          <call function="'dsconfig'">
                { 'dsInstanceHost'         : server.host ,
                  'dsInstanceDn'           : server.dn ,
                  'dsInstancePswd'         : server.password ,
                  'subcommand'             : 'set-attribute-syntax-prop' ,
                  'objectType'             : 'syntax-name' ,
                  'objectName'             : 'Generalized Time',
                  'optionsString'          : '--set enabled:false',
                  'knownIssue'             : '2046'
                  }
          </call>
          <!-- TODO: Need to verify the disabling of syntax check. -->
          <!-- TODO: Should be part of a separate test suite. -->
        </sequence>
        <finally>
          <call function="'testCase_Postamble'"/>
        </finally>
      </try>
    </testcase>
  </function>
<!-- Test Case : Schema Enable Syntax Checking for Generalized Time -->
<!--
    Place test-specific test information here.
    The tag, TestMarker, must be the same as the tag, TestSuiteName.
    #@TestMarker                Enable Syntax Checking
    #@TestName                  Enable Syntax Checking
    #@TestIssue
    #@TestPurpose               Check Enable Syntax Checking for Generalized Time.
    #@TestPreamble              none
    #@TestStep                  Set check schema to true.
    #@TestPostamble             none
    #@TestResult                Success if Add Operation returns 0
-->
  <function name="schema_enable_syntax_checking" scope="local">
    <testcase name="getTestCaseName('Enable Syntax Checking for Generalized Time')">
      <try>
        <sequence>
          <call function="'testCase_Preamble'"/>
          <message>
             'Schema: Enable Syntax Checking for Generalized Time.'
          </message>
          <call function="'dsconfig'">
                { 'dsInstanceHost'         : server.host ,
                  'dsInstanceDn'           : server.dn ,
                  'dsInstancePswd'         : server.password ,
                  'subcommand'             : 'set-attribute-syntax-prop' ,
                  'objectType'             : 'syntax-name' ,
                  'objectName'             : 'Generalized Time',
                  'optionsString'          : '--set enabled:true'
                  }
          </call>
          <!-- TODO: Need to verify the enabling of syntax check. -->
          <!-- TODO: Should be part of a separate test suite. -->
        </sequence>
        <finally>
          <call function="'testCase_Postamble'"/>
        </finally>
      </try>
    </testcase>
  </function>
<!-- Test Case : Schema Draft IETF Zeilenga LDAP COSINE 1 -->
<!--
    Place test-specific test information here.
    The tag, TestMarker, must be the same as the tag, TestSuiteName.
    #@TestMarker                Draft IETF Zeilenga LDAP COSINE
    #@TestName                  Draft IETF Zeilenga LDAP COSINE
    #@TestIssue
    #@TestPurpose               Check Draft IETF Zeilenga LDAP COSINE Schema Object.
    #@TestPreamble              none
    #@TestStep                  Add Draft IETF Zeilenga LDAP COSINE Schema Object.
    #@TestPostamble             none
    #@TestResult                Success if Add Operation returns 0
-->
  <function name="schema_cosine_1" scope="local">
    <testcase name="getTestCaseName('Draft IETF Zeilenga LDAP COSINE 1')">
      <try>
        <sequence>
          <call function="'testCase_Preamble'"/>
          <message>
             'Schema: Add an entry that is covered by draft-ietf-zeilenga-ldap-cosine'
          </message>
          <call function="'addEntry'">
            { 'dsInstanceHost'   : server.host ,
              'dsInstancePort'   : server.port ,
              'dsInstanceDn'     : server.dn ,
              'dsInstancePswd'   : server.password ,
              'entryToBeAdded'   : '%s/schema/ldifs/ldap_cosine_1.ldif' % remote.data }
          </call>
          <!-- TODO: Need to verify that the added entry is working as specified -->
        </sequence>
        <finally>
          <call function="'testCase_Postamble'"/>
        </finally>
      </try>
    </testcase>
  </function>
<!-- Test Case : Schema Draft IETF Zeilenga LDAP COSINE 2 -->
<!--
    Place test-specific test information here.
    The tag, TestMarker, must be the same as the tag, TestSuiteName.
    #@TestMarker                Draft IETF Zeilenga LDAP COSINE
    #@TestName                  Draft IETF Zeilenga LDAP COSINE 2
    #@TestIssue
    #@TestPurpose               Check Draft IETF Zeilenga LDAP COSINE Schema Object.
    #@TestPreamble              none
    #@TestStep                  Add Draft IETF Zeilenga LDAP COSINE Schema Object.
    #@TestPostamble             none
    #@TestResult                Success if Add Operation returns 0
-->
  <function name="schema_cosine_2" scope="local">
    <testcase name="getTestCaseName('Draft IETF Zeilenga LDAP COSINE 2')">
      <try>
        <sequence>
          <call function="'testCase_Preamble'"/>
          <message>
             'Schema: Add an entry that is covered by draft-ietf-zeilenga-ldap-cosine'
          </message>
          <call function="'addEntry'">
            { 'dsInstanceHost'   : server.host ,
              'dsInstancePort'   : server.port ,
              'dsInstanceDn'     : server.dn ,
              'dsInstancePswd'   : server.password ,
              'entryToBeAdded'   : '%s/schema/ldifs/ldap_cosine_2.ldif' % remote.data }
          </call>
          <!-- TODO: Need to verify that the added entry is working as specified -->
        </sequence>
        <finally>
          <call function="'testCase_Postamble'"/>
        </finally>
      </try>
    </testcase>
  </function>
<!-- Test Case : Schema Draft IETF Zeilenga LDAP COSINE 3 -->
<!--
    Place test-specific test information here.
    The tag, TestMarker, must be the same as the tag, TestSuiteName.
    #@TestMarker                Draft IETF Zeilenga LDAP COSINE
    #@TestName                  Draft IETF Zeilenga LDAP COSINE 3
    #@TestIssue
    #@TestPurpose               Check Draft IETF Zeilenga LDAP COSINE Schema Object.
    #@TestPreamble              none
    #@TestStep                  Add Invalid Draft IETF Zeilenga LDAP COSINE Schema Object.
    #@TestPostamble             none
    #@TestResult                Success if Add returns 65 (Object Class Violation)
-->
  <function name="schema_cosine_3" scope="local">
    <testcase name="getTestCaseName('Draft IETF Zeilenga LDAP COSINE 3')">
      <try>
        <sequence>
          <call function="'testCase_Preamble'"/>
          <message>
             'Schema: Add an entry that is covered by draft-ietf-zeilenga-ldap-cosine'
          </message>
          <call function="'addEntry'">
            { 'dsInstanceHost'   : server.host ,
              'dsInstancePort'   : server.port ,
              'dsInstanceDn'     : server.dn ,
              'dsInstancePswd'   : server.password ,
              'entryToBeAdded'   : '%s/schema/ldifs/ldap_cosine_3.ldif' % remote.data ,
              'expectedRC'       : 65 }
          </call>
          <!-- TODO: Need to verify that the added entry is working as specified -->
        </sequence>
        <finally>
          <call function="'testCase_Postamble'"/>
        </finally>
      </try>
    </testcase>
  </function>
<!-- Test Case : Schema RFC 2739 -->
<!--
    Place test-specific test information here.
    The tag, TestMarker, must be the same as the tag, TestSuiteName.
    #@TestMarker                Schema RFC 2739
    #@TestName                  Schema RFC 2739
    #@TestIssue
    #@TestPurpose               Check Schema RFC 2739 Schema Object.
    #@TestPreamble              none
    #@TestStep                  Add Schema RFC 2739 Schema Object.
    #@TestStep                  Search Schema RFC 2739 Schema Object.
    #@TestStep                  Add Schema RFC 2739 Schema Object.
    #@TestPostamble             none
    #@TestResult                Success if Add Operation returns 0
-->
  <function name="schema_rfc_2739" scope="local">
    <testcase name="getTestCaseName('RFC 2739')">
      <try>
        <sequence>
          <call function="'testCase_Preamble'"/>
          <message>
             'Schema: Add an entry that is covered by rfc 2739'
          </message>
          <call function="'addEntry'">
            { 'dsInstanceHost'   : server.host ,
              'dsInstancePort'   : server.port ,
              'dsInstanceDn'     : server.dn ,
              'dsInstancePswd'   : server.password ,
              'entryToBeAdded'   : '%s/schema/ldifs/rfc2739.ldif' % remote.data }
          </call>
          <if expr="RC != 0">
              <tcstatus result="'fail'"/>
          </if>
          <message>
             'Search the entry just added and return calCalURI '
          </message>
          <call function="'SearchObject'">
            { 'dsInstanceHost'   : server.host ,
              'dsInstancePort'   : server.port ,
              'dsInstanceDn'     : server.dn ,
              'dsInstancePswd'   : server.password ,
              'dsBaseDN'         : 'o=rfc tests,dc=example,dc=com' ,
              'dsFilter'         : 'uid=tsmith' ,
              'attributes'     : 'calCalURI' }
          </call>
          <call function="'checktestRC'">
              { 'returncode' : RC ,
                'result'     : STAXResult }
          </call>
          <!-- TODO: Need to verify that correct attributes are returned -->
        </sequence>
        <finally>
          <call function="'testCase_Postamble'"/>
        </finally>
      </try>
    </testcase>
  </function>
<!-- Test Case : Schema RFC 2714 1 -->
<!--
    Place test-specific test information here.
    The tag, TestMarker, must be the same as the tag, TestSuiteName.
    #@TestMarker                Schema RFC 2714 1
    #@TestName                  Schema RFC 2714 1
    #@TestIssue
    #@TestPurpose               Check Schema RFC 2714 Schema Object.
    #@TestPreamble              none
    #@TestStep                  Add RFC 2714 Schema Object.
    #@TestStep                  Search Schema RFC 2714 Object.
    #@TestStep                  Add Schema RFC 2714 Object.
    #@TestPostamble             none
    #@TestResult                Success if Add Operation returns 0
-->
  <function name="schema_rfc_2714_1" scope="local">
    <testcase name="getTestCaseName('RFC 2714 1')">
      <try>
        <sequence>
          <call function="'testCase_Preamble'"/>
          <message>
             'Schema: Add an entry that is covered by rfc 2714'
          </message>
          <call function="'addEntry'">
            { 'dsInstanceHost'   : server.host ,
              'dsInstancePort'   : server.port ,
              'dsInstanceDn'     : server.dn ,
              'dsInstancePswd'   : server.password ,
              'entryToBeAdded'   : '%s/schema/ldifs/rfc2714.ldif' % remote.data ,
              'expectedRC'       : 65
              }
          </call>
        </sequence>
        <finally>
          <call function="'testCase_Postamble'"/>
        </finally>
      </try>
    </testcase>
</function>
<!-- Test Case : Schema RFC 2714 2 -->
<!--
    Place test-specific test information here.
    The tag, TestMarker, must be the same as the tag, TestSuiteName.
    #@TestMarker                Schema RFC 2714 2
    #@TestName                  Schema RFC 2714 2
    #@TestIssue
    #@TestPurpose               Check Schema RFC 2714 Schema Object.
    #@TestPreamble              none
    #@TestStep                  Add RFC 2714 Schema Object.
    #@TestStep                  Search Schema RFC 2714 Object.
    #@TestStep                  Add Schema RFC 2714 Object.
    #@TestPostamble             none
    #@TestResult                Success if Add Operation returns 0
-->
  <function name="schema_rfc_2714_2" scope="local">
    <testcase name="getTestCaseName('RFC 2714 2')">
      <try>
        <sequence>
          <call function="'testCase_Preamble'"/>
          <message>
             'Schema: Add an entry that is covered by rfc 2714'
          </message>
          <call function="'addEntry'">
            { 'dsInstanceHost'   : server.host ,
              'dsInstancePort'   : server.port ,
              'dsInstanceDn'     : server.dn ,
              'dsInstancePswd'   : server.password ,
              'entryToBeAdded'   : '%s/schema/ldifs/rfc2714_2.ldif' % remote.data }
          </call>
          <if expr="RC != 0">
              <tcstatus result="'fail'"/>
          </if>
          <message>
             'Search the entry just added and return corbaRepositoryId '
          </message>
          <call function="'SearchObject'">
            { 'dsInstanceHost'   : server.host ,
              'dsInstancePort'   : server.port ,
              'dsInstanceDn'     : server.dn ,
              'dsInstancePswd'   : server.password ,
              'dsBaseDN'         : 'o=rfc tests,dc=example,dc=com' ,
              'dsFilter'         : 'cn=corba1' ,
              'attributes'     : 'corbaRepositoryId' }
          </call>
          <call function="'checktestRC'">
              { 'returncode' : RC ,
                'result'     : STAXResult }
          </call>
          <!-- TODO: Need to verify that correct attributes are returned -->
        </sequence>
        <finally>
          <call function="'testCase_Postamble'"/>
        </finally>
      </try>
    </testcase>
  </function>
<!-- Test Case : Schema RFC 2713 -->
<!--
    Place test-specific test information here.
    The tag, TestMarker, must be the same as the tag, TestSuiteName.
    #@TestMarker                Schema RFC 2713
    #@TestName                  Schema RFC 2713
    #@TestIssue
    #@TestPurpose               Check Schema RFC 2713 Schema Object.
    #@TestPreamble              none
    #@TestStep                  Add RFC 2713 Schema Object.
    #@TestStep                  Search Schema RFC 2713 Object.
    #@TestStep                  Add Schema RFC 2713 Object.
    #@TestPostamble             none
    #@TestResult                Success if Add Operation returns 0
-->
  <function name="schema_rfc_2713" scope="local">
    <testcase name="getTestCaseName('RFC 2713')">
      <try>
        <sequence>
          <call function="'testCase_Preamble'"/>
          <message>
             'Schema: Add an entry that is covered by rfc 2713'
          </message>
          <call function="'addEntry'">
            { 'dsInstanceHost'   : server.host ,
              'dsInstancePort'   : server.port ,
              'dsInstanceDn'     : server.dn ,
              'dsInstancePswd'   : server.password ,
              'entryToBeAdded'   : '%s/schema/ldifs/rfc2713.ldif' % remote.data }
          </call>
          <if expr="RC != 0">
              <tcstatus result="'fail'"/>
          </if>
          <message>
             'Search the entry just added and return javaClassName '
          </message>
          <call function="'SearchObject'">
            { 'dsInstanceHost'   : server.host ,
              'dsInstancePort'   : server.port ,
              'dsInstanceDn'     : server.dn ,
              'dsInstancePswd'   : server.password ,
              'dsBaseDN'         : 'ou=java object,o=rfc tests,dc=example,dc=com' ,
              'dsFilter'         : 'cn=java1' ,
              'attributes'     : 'javaClassName' }
          </call>
          <call function="'checktestRC'">
              { 'returncode' : RC ,
                'result'     : STAXResult }
          </call>
          <!-- TODO: Need to verify that correct attributes are returned -->
        </sequence>
        <finally>
          <call function="'testCase_Postamble'"/>
        </finally>
      </try>
    </testcase>
</function>
</stax>
opends/tests/staf-tests/functional-tests/testcases/schema/schema.xml
@@ -26,55 +26,98 @@
 !      Copyright 2006-2008 Sun Microsystems, Inc.
 ! -->
<stax>
  <defaultcall function="main_schema"/>
  <defaultcall function="main_schema" />
  <function name="main_schema">
  <function name="main_schema" scope="local">
    <function-list-args>
      <function-required-arg name="STAXParentID"/>
    </function-list-args>
    <sequence>
      <try>
        <block name="'main_schema'">
          <sequence>
      <block name="'schema'">
        <sequence>
          <!--- Load the job environment for the test group execution -->
          <import machine="STAF_LOCAL_HOSTNAME"
                  file="'%s/environment.xml' % TESTS_FUNCTIONS_DIR" />
          <call function="'loadJobEnvironment'">
               { 'parent' : STAXParentID }
          </call>
            <message log="1" level="'Info'">'STAXParentID= %s' % STAXParentID</message>
            <!--- Load the job environment for the test group execution -->
            <import machine="STAF_LOCAL_HOSTNAME"
                    file="'%s/environment.xml' % TESTS_FUNCTIONS_DIR" />
            <call function="'loadJobEnvironment'">
                 { 'parent' : STAXParentID }
            </call>
          <script>
            CurrentTestPath['group']='schema'
          </script>
          <call function="'testGroup_Preamble'"/>
          <script>
            suiteList=[]
            suiteList.append('schema_rfc_tests')
            suiteList.append('schema_dynamic')
          </script>
            <script>
              _group='schema'
              CurrentTestPath={ 'group' : '%s' % _group }
            </script>
          <!-- Run the test suites -->
          <iterate  var="__test" in="suiteList">
            <sequence>
              <import machine="STAF_LOCAL_HOSTNAME"
                file="'%s/testcases/schema/%s.xml' % (TESTS_DIR,__test)" />
              <call function="'%s' % __test" />
            </sequence>
          </iterate>
          <call function="'testGroup_Postamble'"/>
            <!--- Test Group information
            #@TestGroupName       Schema Test
            #@TestGroupPurpose    Verify that schema is working correctly
            -->
            <call function="'testGroup_Preamble'"/>
        </sequence>
      </block>
            <!-- List of test suites to run -->
            <script>
              suiteList=[]
              suiteList.append('rfc')
              suiteList.append('dynamic')
              suiteList.append('solaris')
            </script>
            <!-- Data global to this test group  -->
            <!-- LDAP Server Object -->
            <script>
              server=directory_server()
              server.location   = STAF_REMOTE_HOSTNAME
              server.host       = DIRECTORY_INSTANCE_HOST
              server.port       = DIRECTORY_INSTANCE_PORT
              server.adminport  = DIRECTORY_INSTANCE_ADMIN_PORT
              server.dn         = DIRECTORY_INSTANCE_DN
              server.password   = DIRECTORY_INSTANCE_PSWD
              server.suffix     = DIRECTORY_INSTANCE_SFX
            </script>
            <!-- Run the test suites -->
            <iterate  var="_suite" in="suiteList">
              <sequence>
                <try>
                  <sequence>
                    <import machine="STAF_LOCAL_HOSTNAME"
                            file="'%s/testcases/%s/%s/%s_%s.xml' %
                              (TESTS_DIR,_group,_suite,_group,_suite)"/>
                    <call function="'main_%s_%s' % (_group,_suite)" />
                  </sequence>
                <catch exception="'STAFException.TestSuite.SetupException'">
                  <sequence>
                    <message log="1" level="'fatal'">'Setup of test suite %s failed.' % _suite</message>
                    <throw exception="'STAXException.TestGroupException'" />
                  </sequence>
                </catch>
                <catch exception="'STAFException.TestSuite.MainException'">
                  <sequence>
                    <message log="1" level="'fatal'">'Main part of test suite %s failed.' % _suite</message>
                    <throw exception="'STAXException.TestGroupException'" />
                  </sequence>
                </catch>
                <catch exception="'STAFException.TestSuite.CleanupException'">
                  <sequence>
                    <message log="1" level="'fatal'">'Cleanup of test suite %s failed.' % _suite</message>
                    <throw exception="'STAXException.TestGroupException'" />
                  </sequence>
                </catch>
                </try>
              </sequence>
            </iterate>
          </sequence>
        </block>
      <finally>
        <!-- Test Group postamble -->
        <call function="'testGroup_Postamble'"/>
      </finally>
      </try>
    </sequence>
  </function>
</stax>
opends/tests/staf-tests/functional-tests/testcases/schema/schema_cleanup.xml
@@ -34,57 +34,51 @@
    <sequence>
      <block name="'cleanup'">
        <try>
        <sequence>
          <block name="'Block DS Process Stop'">
          <!--- Stop DS -->
        <sequence>
              <message>
                 'Stop DS running on port %s' % (DIRECTORY_INSTANCE_PORT)
              </message>
              <call function="'StopDsWithScript'">
                { 'location'    : STAF_REMOTE_HOSTNAME,
                  'dsHost'      : DIRECTORY_INSTANCE_HOST,
                  'dsAdminPort' : DIRECTORY_INSTANCE_ADMIN_PORT,
                  'dsBindDN'    : DIRECTORY_INSTANCE_DN,
                  'dsBindPwd'   : DIRECTORY_INSTANCE_PSWD }
              </call>
              <call function="'checkRC'">
                  { 'returncode' : RC ,
                    'result'     : STAXResult }
              </call>
            <call function="'runFunction'">
              { 'functionName'      : 'StopDsWithScript'                      ,
                'functionMessage'   : 'Stop the Directory Server.'             ,
                'functionException' : 'Server.StopException'                  ,
                'functionArguments' : { 'location'    : STAF_REMOTE_HOSTNAME  ,
                                        'dsHost'      : server.host           ,
                                        'dsAdminPort' : server.adminport      ,
                                        'dsBindDN'    : server.dn             ,
                                        'dsBindPwd'   : server.password }
              }
            </call>
            <call function="'runFunction'">
              { 'functionName'      : 'removeTopology'                  ,
                'functionMessage'   : 'Remove DS topology.'             ,
                'functionException' : 'Server.RemoveTopologyException'
              }
            </call>
        </sequence>        
          <!--- End Block DS Process Stop -->
          </block>
          <catch exception="'STAXException.Server.RemoveTopologyException'" typevar="eType" var="eInfo">
            <sequence>
            <message log="1" level="'fatal'">
              '%s: Remove topology failed. eInfo(%s)' % (eType,eInfo)
            </message>
            <throw exception="'STAFException.TestSuite.CleanupException'" />
            </sequence>
          </catch>
      <block name="'Block Remove DS Topology'">
      <!-- Remove  the topology created for the test suite -->
      <sequence>
              <message>
                 'Remove DS topology created for the Test Suite'
              </message>
          <catch exception="'STAXException.Server.StopException'" typevar="eType" var="eInfo">
            <sequence>
            <message log="1" level="'fatal'">
              '%s: Failed to stop Directory Server. eInfo(%s)' % (eType,eInfo)
            </message>
            <throw exception="'STAFException.TestSuite.CleanupException'" />
            </sequence>
          </catch>
        <call function="'removeTopology'"/>
        <call function="'checkRC'">
                  { 'returncode' : RC ,
                    'result'     : STAXResult }
              </call>
      </sequence>
      <!-- End Block Remove DS Topology-->
      </block>
        </sequence>
        </try>
      </block>
            
     </sequence>
opends/tests/staf-tests/functional-tests/testcases/schema/schema_dynamic.xml
File was deleted
opends/tests/staf-tests/functional-tests/testcases/schema/schema_rfc_tests.xml
File was deleted
opends/tests/staf-tests/functional-tests/testcases/schema/schema_setup.xml
@@ -34,88 +34,85 @@
    <sequence>
      <block name="'setup'">
        <sequence>
      <block name="'Block Create DS Topology'">
      <!-- Create the topology necessary to the test group/suite -->
        <sequence>
              <message>
                 'Create DS topology as described in config.py'
              </message>
        <call function="'createTopology'">
          { 'initialiseInstance' : True }
        </call>
        <call function="'checkRC'">
                  { 'returncode' : RC ,
                    'result'     : STAXResult }
              </call>
            </sequence>
          <!--- End Block Create DS Topology -->
          </block>
      <block name="'Block DS Process Active'">
          <!--- Start DS -->
        <sequence>
              <message>
                 'Start DS to run on port %s' % (DIRECTORY_INSTANCE_PORT)
              </message>
              <!--- Start DS -->
              <call function="'StartDsWithScript'">
               { 'location'  : STAF_REMOTE_HOSTNAME }
              </call>
              <call function="'checkRC'">
                  { 'returncode' : RC ,
                    'result'     : STAXResult }
              </call>
              <!--- Check that DS started -->
              <call function="'isAlive'">
                { 'noOfLoops'        : 5 ,
                  'noOfMilliSeconds' : 2000 }
              </call>
            </sequence>
          <!--- End Block DS Process Active -->
          </block>
          <block name="'Block DS Load Data'">
      <!-- Load the data needed by the test suite -->
        <try>
          <sequence>
              <message>
                 'Add entries that are required for the Schema Tests'
              </message>
              <call function="'addEntry'">
                { 'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
                  'dsInstancePort'   : DIRECTORY_INSTANCE_PORT ,
                  'dsInstanceDn'     : DIRECTORY_INSTANCE_DN ,
                  'dsInstancePswd'   : DIRECTORY_INSTANCE_PSWD ,
                  'entryToBeAdded'   : '%s/schema/ldifs/schema_start.ldif' % remote.data }
              </call>
              <call function="'checkRC'">
                  { 'returncode' : RC ,
                    'result'     : STAXResult }
              </call>
      </sequence>
          <!-- End Block DS Load Data -->
          </block>
              
        </sequence>
            <!-- Create the topology necessary to the test group/suite -->
            <call function="'runFunction'">
              { 'functionName'      : 'createTopology'                  ,
                'functionMessage'   : 'Create DS topology'              ,
                'functionException' : 'Server.CreateTopologyException'  ,
                'functionArguments' : { 'initialiseInstance' : True }
              }
            </call>
            <!-- Start the OpenDS Server -->
            <call function="'runFunction'">
              { 'functionName'      : 'StartDsWithScript'                   ,
                'functionMessage'   : 'Start the Directory Server.'         ,
                'functionException' : 'Server.StartException'               ,
                'functionArguments' : { 'location' : STAF_REMOTE_HOSTNAME }
              }
            </call>
            <!--- Check that DS started -->
            <call function="'runFunction'">
              { 'functionName'      : 'isAlive'                       ,
                'functionMessage'   : 'Start the Directory Server.'   ,
                'functionException' : 'Server.StartException'         ,
                'functionArguments' : { 'noOfLoops'        : 5        ,
                                        'noOfMilliSeconds' : 2000 }
              }
            </call>
            <!-- Load the data needed by the test suite -->
            <script>
              schemastartldif='%s/schema/ldifs/schema_start.ldif' % remote.data
            </script>
            <call function="'runFunction'">
              { 'functionName'      : 'addEntry'                       ,
                'functionMessage'   : 'Start the Directory Server.'   ,
                'functionException' : 'LDAP.AddEntryException'  ,
                'functionArguments' : { 'dsInstanceHost'   : server.host ,
                                        'dsInstancePort'   : server.port ,
                                        'dsInstanceDn'     : server.dn ,
                                        'dsInstancePswd'   : server.password ,
                                        'entryToBeAdded'   : schemastartldif }
              }
            </call>
          </sequence>
          <catch exception="'STAXException.Server.CreateTopologyException'" typevar="eType" var="eInfo">
            <sequence>
            <message log="1" level="'fatal'">
              '%s: Create topology failed. eInfo(%s)' % (eType,eInfo)
            </message>
            <throw exception="'STAFException.TestSuite.SetupException'" />
            </sequence>
          </catch>
          <catch exception="'STAXException.Server.StartException'" typevar="eType" var="eInfo">
            <sequence>
            <message log="1" level="'fatal'">
              '%s: Failed to start Directory Server. eInfo(%s)' % (eType,eInfo)
            </message>
            <throw exception="'STAFException.TestSuite.SetupException'" />
            </sequence>
          </catch>
          <catch exception="'STAXException.LDAP.AddEntryException'" typevar="eType" var="eInfo">
            <sequence>
            <message log="1" level="'fatal'">
              '%s: LDAPAdd failed. eInfo(%s)' % (eType,eInfo)
            </message>
            <throw exception="'STAFException.TestSuite.SetupException'" />
            </sequence>
          </catch>
        </try>
      </block>
            
     </sequence>
opends/tests/staf-tests/functional-tests/testcases/schema/solaris/schema_solaris.xml
New file
@@ -0,0 +1,119 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE stax SYSTEM "../../../../shared/stax.dtd">
<!--
 ! CDDL HEADER START
 !
 ! The contents of this file are subject to the terms of the
 ! Common Development and Distribution License, Version 1.0 only
 ! (the "License").  You may not use this file except in compliance
 ! with the License.
 !
 ! You can obtain a copy of the license at
 ! trunk/opends/resource/legal-notices/OpenDS.LICENSE
 ! or https://OpenDS.dev.java.net/OpenDS.LICENSE.
 ! See the License for the specific language governing permissions
 ! and limitations under the License.
 !
 ! When distributing Covered Code, include this CDDL HEADER in each
 ! file and include the License file at
 ! trunk/opends/resource/legal-notices/OpenDS.LICENSE.  If applicable,
 ! add the following below this CDDL HEADER, with the fields enclosed
 ! by brackets "[]" replaced with your own identifying information:
 !      Portions Copyright [yyyy] [name of copyright owner]
 !
 ! CDDL HEADER END
 !
 !      Copyright 2008 Sun Microsystems, Inc.
 ! -->
<stax>
  <defaultcall function="main_schema_solaris"/>
  <function name="main_schema_solaris" scope="local">
    <sequence>
      <block name="'main_schema_solaris'">
        <try>
          <sequence>
            <script>
              CurrentTestPath['group']='schema'
              CurrentTestPath['suite']='solaris'
              __group=CurrentTestPath['group']
              __groupdir='%s/testcases/%s' % (TESTS_DIR,__group)
            </script>
            <!--- Test Suite information
            #@TestSuiteName       Native schema test suite
            #@TestSuitePurpose    Verify LDAP Naming Services Schema Elements
            #@TestSuiteID         Suite
            #@TestSuiteGroup      Example
            #@TestGroup           Example
            #@TestScript          suite.xml
            #@TestHTMLLink        http://opends.dev.java.net/
            -->
            <call function="'testSuite_Preamble'"/>
            <try>
              <sequence>
                <!-- List of Import of Test Functions -->
                <script>
                  importList=[]
                  importList.append('schema_setup')
                  importList.append('solaris/schema_solaris_tests')
                  importList.append('schema_cleanup')
                </script>
                <!-- Import the files for this test suite -->
                <iterate var="__import" in="importList">
                  <import machine="STAF_LOCAL_HOSTNAME"
                    file="'%s/%s.xml' % (__groupdir,__import)"/>
                </iterate>
                <!-- Test Suite Setup -->
                <call function="'%s_setup' % __group"/>
                <!-- List of Test Cases -->
                <script>
                  testsList=[]
                  testsList.append('schema_solaris_001')
                  testsList.append('schema_rfc4876_001')
                </script>
                <!-- Execute the Tests -->
                <iterate var="__test" in="testsList">
                  <sequence>
                    <call function="'%s' % (__test)" />
                  </sequence>
                </iterate>
              </sequence>
            <catch exception="'STAFException.TestSuite.SetupException'">
              <sequence>
                <message log="1" level="'fatal'">
                  'Setup of test suite failed.'
                </message>
                <rethrow/>
              </sequence>
            </catch>
            <finally>
              <message>'Test Cases Completed.'</message>
            </finally>
            </try>
          </sequence>
          <finally>
            <sequence>
              <!-- Test Suite Cleanup -->
              <message>'Finally: Example Cleanup.'</message>
              <call function="'%s_cleanup' % __group"/>
              <call function="'testSuite_Postamble'"/>
            </sequence>
          </finally>
        </try>
      </block>
    </sequence>
  </function>
</stax>
opends/tests/staf-tests/functional-tests/testcases/schema/solaris/schema_solaris_tests.xml
New file
@@ -0,0 +1,140 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE stax SYSTEM "../../../../shared/stax.dtd">
<!--
 ! CDDL HEADER START
 !
 ! The contents of this file are subject to the terms of the
 ! Common Development and Distribution License, Version 1.0 only
 ! (the "License").  You may not use this file except in compliance
 ! with the License.
 !
 ! You can obtain a copy of the license at
 ! trunk/opends/resource/legal-notices/OpenDS.LICENSE
 ! or https://OpenDS.dev.java.net/OpenDS.LICENSE.
 ! See the License for the specific language governing permissions
 ! and limitations under the License.
 !
 ! When distributing Covered Code, include this CDDL HEADER in each
 ! file and include the License file at
 ! trunk/opends/resource/legal-notices/OpenDS.LICENSE.  If applicable,
 ! add the following below this CDDL HEADER, with the fields enclosed
 ! by brackets "[]" replaced with your own identifying information:
 !      Portions Copyright [yyyy] [name of copyright owner]
 !
 ! CDDL HEADER END
 !
 !      Copyright 2008 Sun Microsystems, Inc.
 ! -->
<stax>
  <!-- Definition of Test Cases -->
  <!--- Test Case : Schema: Add Solaris Schema Entries -->
  <!--- Test Case information
  #@TestMarker          Schema
  #@TestName            Schema: Add Solaris Schema Entries
  #@TestID              Test
  #@TestPurpose         Add Solaris schema entries
  #@TestPreamble
  #@TestSteps           Add over LDAP protocol Solaris schema entries
  #@TestPostamble
  #@TestResult          Test is successful if the result code is 0
  -->
  <function name="schema_solaris_001" scope="local">
    <testcase name="getTestCaseName('Add Solaris Schema Entries')">
      <sequence>
        <try>
          <sequence>
            <call function="'testCase_Preamble'"/>
            <message>
               'Test Name = %s' % STAXCurrentTestcase
            </message>
            <script>
              solarisLdif='%s/schema/solaris/solaris.ldif' % remote.data
            </script>
            <call function="'runFunction'">
              { 'functionName'      : 'ldapModifyWithScript'              ,
                'functionMessage'   : 'Add solaris schema entries'        ,
                'functionException' : 'LDAP.ModifyException'              ,
                'functionArguments' : { 'location'      : server.location ,
                                        'dsInstanceHost': server.host     ,
                                        'dsInstancePort': server.port     ,
                                        'dsInstanceDn'  : server.dn       ,
                                        'dsInstancePswd': server.password ,
                                        'dsAdd'         : 'TRUE'          ,
                                        'dsFilename'    : solarisLdif }
              }
            </call>
            <!-- TODO: Need to verify that the added entry is working as specified -->
          </sequence>
          <catch exception="'STAXException.LDAP.ModifyException'" typevar="eType" var="eInfo">
            <message log="1" level="'fatal'">
              '%s: LDAPModify failed. eInfo(%s)' % (eType,eInfo)
            </message>
          </catch>
          <finally>
            <call function="'testCase_Postamble'"/>
          </finally>
        </try>
      </sequence>
    </testcase>
  </function>
  <!--- Test Case : Schema: Add RFC 4876 Schema Entries -->
  <!--- Test Case information
  #@TestMarker          Schema
  #@TestName            Schema: Add RFC 4876 Schema Entries
  #@TestID              Test
  #@TestPurpose         Add RFC 4876 schema entries
  #@TestPreamble
  #@TestSteps           Add over LDAP protocol RFC 4876 schema entries
  #@TestPostamble
  #@TestResult          Test is successful if the result code is 0
  -->
  <function name="schema_rfc4876_001" scope="local">
    <testcase name="getTestCaseName('Add RFC 4876 Schema Entries')">
      <sequence>
        <try>
          <sequence>
            <call function="'testCase_Preamble'"/>
            <message>
               'Test Name = %s' % STAXCurrentTestcase
            </message>
            <script>
              rfc4876ldif='%s/schema/solaris/rfc4876.ldif ' % remote.data
            </script>
            <call function="'runFunction'">
              { 'functionName'      : 'ldapModifyWithScript'              ,
                'functionMessage'   : 'Add solaris schema entries'        ,
                'functionException' : 'LDAP.ModifyException'              ,
                'functionArguments' : { 'location'      : server.location ,
                                        'dsInstanceHost': server.host     ,
                                        'dsInstancePort': server.port     ,
                                        'dsInstanceDn'  : server.dn       ,
                                        'dsInstancePswd': server.password ,
                                        'dsAdd'         : 'TRUE'          ,
                                        'dsFilename'    : rfc4876ldif }
              }
            </call>
            <!-- TODO: Need to verify that the added entry is working as specified -->
          </sequence>
          <catch exception="'STAXException.LDAP.ModifyException'" typevar="eType" var="eInfo">
            <message log="1" level="'fatal'">
              '%s: LDAPModify failed. eInfo(%s)' % (eType,eInfo)
            </message>
          </catch>
          <finally>
            <call function="'testCase_Postamble'"/>
          </finally>
        </try>
      </sequence>
    </testcase>
  </function>
</stax>
opends/tests/staf-tests/shared/functions/utils.xml
@@ -254,6 +254,15 @@
        searchre = re.compile('%s' % expectedString)
      </script> 
      <!-- Check that returnString is really a string -->
      <if expr='returnString.__class__ is not org.python.core.PyString'>
        <sequence>
          <message log="1" level="'Error'">
            'ERROR : Invalid returnString type (%s), requires org.python.core.PyString.' % returnString.__class__
          </message>
          <tcstatus result="'fail'"/>
        </sequence>
      </if>
      <if expr='re.search(searchre, returnString) != None'>
        <sequence>
          <tcstatus result="'pass'"/>      
@@ -1428,7 +1437,7 @@
    </sequence>
  </function>
  
  <function name="runFunction">
  <function name="runFunction" scope="local">
    <function-map-args>
      <function-arg-def name="functionName" type="required">
        <function-arg-description>
@@ -1523,7 +1532,9 @@
          
        if not True:
          True=1
        _expectedRC=int(expectedRC)
        _throwException=False
        if functionException:
          _throwException=True
@@ -1541,20 +1552,27 @@
        if functionFailureTC:
          _createFailureTC=True
      </script>
      <message log="1" level="'info'" if="_displayMessage == True">'%s' % functionMessage</message>
      <message log="1" level="'debug'">'runFunction: %s: called with parameters [%s]' % (functionName,functionArguments)</message>
      <message log="1" level="'info'" if="_displayMessage == True">
        '%s' % functionMessage
      </message>
      <message log="1" level="'debug'">
        'runFunction: %s: called with parameters [%s]' % (functionName,functionArguments)
      </message>
      <call function="functionName">functionArguments</call>
      <script>
        _functionRC = RC
        _functionRC = int(RC)
        _functionResult = STAXResult
      </script>
      <message log="1" level="'debug'">'runFunction: %s: returned [%s] with [%s]' % (functionName,RC,STAXResult)</message>
      <message log="1" level="'debug'">
        'runFunction: %s: returned [%s] with [%s]' % (functionName,RC,STAXResult)
      </message>
      <!-- this section handles the optional case when we need to set the 
           test case status
       -->
      <if expr="_doSetTCStatus == True">
        <sequence>
          <if expr="_functionRC == expectedRC">
          <if expr="_functionRC == _expectedRC">
            <script>_tcStatus='pass'</script>
          </if>
          <tcstatus result="_tcStatus" />
@@ -1565,7 +1583,7 @@
           exception upon unexpected function return code
       -->
      <if expr="_throwException == True" >
        <if expr="_functionRC != expectedRC" >
        <if expr="_functionRC != _expectedRC" >
          <throw exception="'STAXException.%s' % functionException" />
        </if>
      </if>
@@ -1574,7 +1592,7 @@
           test case status to fail to reflect the failure in the test report.
      -->
      <if expr="_createFailureTC == True" >
        <if expr="_functionRC != expectedRC" >
        <if expr="_functionRC != _expectedRC" >
          <testcase name="'!!! %s [%s]' % (functionFailureTC,functionName)">
            <tcstatus result="'fail'" />
          </testcase>
@@ -1584,8 +1602,8 @@
      <!-- TODO: implement the signal raising mechanism -->
      <!-- TODO: implement the call back function mechanism -->
      
      <!-- bubble the function return code up one level -->
      <return>_functionRC</return>
      <!-- bubble the function return code and result up one level -->
      <return>[_functionRC,_functionResult]</return>
    </sequence>
  </function>