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

Gary Williams
05.46.2012 d19a8b638025ad9811e77c58c88bd183cecb0ecf
Add new snmp functional test suite
17 files added
1 files modified
8743 ■■■■■ changed files
opends/tests/staf-tests/functional-tests/testcases/snmp/basic/snmp_basic.xml 182 ●●●●● patch | view | raw | blame | history
opends/tests/staf-tests/functional-tests/testcases/snmp/basic/snmp_basic_tests.xml 2198 ●●●●● patch | view | raw | blame | history
opends/tests/staf-tests/functional-tests/testcases/snmp/snmp.xml 123 ●●●●● patch | view | raw | blame | history
opends/tests/staf-tests/functional-tests/testcases/snmp/snmp_cleanup.xml 79 ●●●●● patch | view | raw | blame | history
opends/tests/staf-tests/functional-tests/testcases/snmp/snmp_setup.xml 596 ●●●●● patch | view | raw | blame | history
opends/tests/staf-tests/functional-tests/testcases/snmp/traps/snmp_traps.xml 148 ●●●●● patch | view | raw | blame | history
opends/tests/staf-tests/functional-tests/testcases/snmp/traps/snmp_traps_customconf_tests.xml 974 ●●●●● patch | view | raw | blame | history
opends/tests/staf-tests/functional-tests/testcases/snmp/traps/snmp_traps_defaultconf_tests.xml 403 ●●●●● patch | view | raw | blame | history
opends/tests/staf-tests/functional-tests/testcases/snmp/v1/snmp_v1.xml 149 ●●●●● patch | view | raw | blame | history
opends/tests/staf-tests/functional-tests/testcases/snmp/v1/snmp_v1_customconf_tests.xml 695 ●●●●● patch | view | raw | blame | history
opends/tests/staf-tests/functional-tests/testcases/snmp/v1/snmp_v1_defaultconf_tests.xml 235 ●●●●● patch | view | raw | blame | history
opends/tests/staf-tests/functional-tests/testcases/snmp/v2c/snmp_v2c.xml 149 ●●●●● patch | view | raw | blame | history
opends/tests/staf-tests/functional-tests/testcases/snmp/v2c/snmp_v2c_customconf_tests.xml 695 ●●●●● patch | view | raw | blame | history
opends/tests/staf-tests/functional-tests/testcases/snmp/v2c/snmp_v2c_defaultconf_tests.xml 236 ●●●●● patch | view | raw | blame | history
opends/tests/staf-tests/functional-tests/testcases/snmp/v3/snmp_v3.xml 167 ●●●●● patch | view | raw | blame | history
opends/tests/staf-tests/functional-tests/testcases/snmp/v3/snmp_v3_customconf_tests.xml 1004 ●●●●● patch | view | raw | blame | history
opends/tests/staf-tests/functional-tests/testcases/snmp/v3/snmp_v3_defaultconf_tests.xml 703 ●●●●● patch | view | raw | blame | history
opends/tests/staf-tests/shared/functions/utils.xml 7 ●●●●● patch | view | raw | blame | history
opends/tests/staf-tests/functional-tests/testcases/snmp/basic/snmp_basic.xml
New file
@@ -0,0 +1,182 @@
<?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/CDDLv1_0.txt
 ! or http://forgerock.org/license/CDDLv1.0.html.
 ! 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/CDDLv1_0.txt.  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 2012 ForgeRock AS.
 ! -->
<stax>
  <defaultcall function="main_snmp_basic"/>
  <function name="main_snmp_basic" scope="local">
    <sequence>
      <block name="'main_snmp_basic'">
        <try>
          <sequence>
            <script>
              CurrentTestPath['group']='snmp'
              CurrentTestPath['suite']='basic'
              __group=CurrentTestPath['group']
              __groupdir='%s/testcases/%s' % (TESTS_DIR,__group)
            </script>
            <!--- Test Suite information
            #@TestSuiteName       SNMP default properties test suite
            #@TestSuitePurpose    Verify SNMP default properties
            #@TestSuiteID         basic
            #@TestSuiteGroup      snmp
            #@TestGroup           snmp
            #@TestScript          snmp.xml
            #@TestHTMLLink        http://www.forgerock.org/
            -->
            <call function="'testSuite_Preamble'"/>
            <try>
              <sequence>
                <!-- List of Import of Test Functions -->
                <script>
                  importList=[]
                  importList.append('basic/snmp_basic_tests')
                </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>
                <!-- Specific to basic SNMP tests -->
                <script>
                  # Globals
                  global_DEFAULT_VALUES = STAXGlobal([])
                  global_indexLDAP = STAXGlobal([])
                  # Default Properties
                  EXPECTED_PROPERTIES = {}
                  EXPECTED_PROPERTIES['allowed-client'] = ''
                  EXPECTED_PROPERTIES['allowed-manager'] = '*'
                  EXPECTED_PROPERTIES['allowed-user'] = '*'
                  EXPECTED_PROPERTIES['community'] = 'OpenDJ'
                  EXPECTED_PROPERTIES['denied-client'] = ''
                  EXPECTED_PROPERTIES['enabled'] = 'false'
                  EXPECTED_PROPERTIES['listen-address'] = '0.0.0.0'
                  EXPECTED_PROPERTIES['listen-port'] = '161'
                  EXPECTED_PROPERTIES['opendmk-jarfile'] = ''
                  EXPECTED_PROPERTIES['registered-mbean'] = 'false'
                  file = 'config/snmp/security/opendj-snmp.security'
                  EXPECTED_PROPERTIES['security-agent-file'] = '%s' % file
                  EXPECTED_PROPERTIES['security-level'] = 'authnopriv'
                  EXPECTED_PROPERTIES['trap-port'] = '162'
                  EXPECTED_PROPERTIES['traps-community'] = 'OpenDJ'
                  EXPECTED_PROPERTIES['traps-destination'] = ''
                  # MIB
                  community = '%s@%s' \
                    % (SNMP_PROPERTIES['community'], SNMP_PROPERTIES['community'])
                  nbLoop = 10
                  # Register Mbeans
                  refRegisteredMbeanProp = SNMP_PROPERTIES['registered-mbean']
                  defCommunityProp = SNMP_PROPERTIES['community']
                  defCommunity = '%s@%s' %(defCommunityProp, defCommunityProp)
                  oid = 'dsServerType.1'
                  # Status
                  community = '%s@%s' \
                    % (SNMP_PROPERTIES['community'], SNMP_PROPERTIES['community'])
                  oid = 'dsServerType.1'
                  serverLogFile = '%s/%s/logs/server.out' \
                    % (DIRECTORY_INSTANCE_DIR, OPENDSNAME)
                </script>
                <!-- List of Test Cases -->
                <script>
                  testsList=[]
                  testsList.append('snmp_basic_001')
                  testsList.append('snmp_basic_002')
                  testsList.append('snmp_basic_003')
                  testsList.append('snmp_basic_004')
                  testsList.append('snmp_basic_005')
                  testsList.append('snmp_basic_006')
                  testsList.append('snmp_basic_007')
                  testsList.append('snmp_basic_008')
                  testsList.append('snmp_basic_009')
                  testsList.append('snmp_basic_010')
                  testsList.append('snmp_basic_011')
                  testsList.append('snmp_basic_012')
                  testsList.append('snmp_basic_013')
                  testsList.append('snmp_basic_014')
                  testsList.append('snmp_basic_015')
                  testsList.append('snmp_basic_016')
                  testsList.append('snmp_basic_017')
                </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: Global Schema Cleanup.'</message>
              <try>
                <message>'No Test Suite Cleanup'</message>
              <catch exception="'STAFException'">
                <sequence>
                  <message log="1" level="'fatal'">'Cleanup of test suite failed.'</message>
                </sequence>
              </catch>
              <finally>
                <call function="'testSuite_Postamble'"/>
              </finally>
              </try>
            </sequence>
          </finally>
        </try>
      </block>
    </sequence>
  </function>
</stax>
opends/tests/staf-tests/functional-tests/testcases/snmp/basic/snmp_basic_tests.xml
New file
@@ -0,0 +1,2198 @@
<?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.
 !      Portions Copyright 2012 ForgeRock AS
 ! -->
<stax>
  <!--- Test Case information
    #@TestMarker          SNMP Connection Handler default properties
    #@TestName            snmp_defaultproperties: TODO
    #@TestIssue           none
    #@TestPurpose         TODO.
    #@TestPreamble        none
    #@TestStep            TODO.
    #@TestPostamble       none
    #@TestResult          TODO.
  -->
  <function name="snmp_basic_001" scope="local">
    <testcase name="getTestCaseName('SNMP Default Properties')">
      <sequence>
        <try>
          <sequence>
            <call function="'testCase_Preamble'"/>
            <message>
               'Test Name = %s' % STAXCurrentTestcase
            </message>
            <call function="'testStep'">
              { 'stepMessage' : 'Check the default properties.' }
            </call>
            <script>
              result = compare_property_table(EXPECTED_PROPERTIES,
                                              DEFAULT_PROPERTIES)
            </script>
            <message>
              '%s' % result
            </message>
            <call function="'checktestStringNotPresent'">
              {
              'returnString' : result ,
              'testString'   : 'ERROR'
              }
            </call>
          </sequence>
          <catch exception="'STAXException'" typevar="eType" var="eInfo">
            <message log="1" level="'fatal'">
              '%s: Test failed. eInfo(%s)' % (eType,eInfo)
            </message>
          </catch>
          <finally>
            <sequence>
              <call function="'testCase_Postamble'"/>
            </sequence>
          </finally>
        </try>
      </sequence>
    </testcase>
  </function>
  <!--- Test Case information
    #@TestMarker          SNMP MIB values
    #@TestName            snmp_mibvalues: TODO
    #@TestIssue           none
    #@TestPurpose         TODO.
    #@TestPreamble        none
    #@TestStep            TODO.
    #@TestPostamble       none
    #@TestResult          TODO.
  -->
  <function name="snmp_basic_002" scope="local">
    <testcase name="getTestCaseName('Check the connection handlers')">
      <sequence>
        <try>
          <sequence>
            <call function="'testCase_Preamble'"/>
            <call function="'testStep'">
              { 'stepMessage' : 'Save the SNMP values.' }
            </call>
            <call function="'SNMPGet'">
              {
              'snmpVersion'   : '1',
              'snmpHost'      : DIRECTORY_INSTANCE_HOST ,
              'snmpPort'      : SNMP_PORT ,
              'snmpCommunity' : community ,
              'snmpOIDs'      : '' ,
              'snmpStatus'    : 'noError' ,
              'snmpWalk'      : 'True'
              }
            </call>
            <script>
              DEFAULT_VALUES = create_table_fromoutput(STAXResult[0][1])
              global_DEFAULT_VALUES.set(DEFAULT_VALUES)
              DEFAULT_VALUES = global_DEFAULT_VALUES.get()
            </script>
            <call function="'testStep'">
              { 'stepMessage' : 'Check the connection handlers.' }
            </call>
            <script>
              nbHandler = get_handler_count(DEFAULT_VALUES)
              indexSNMP = get_handler_index(DEFAULT_VALUES, '1.3.6.1.27.3.%s'\
                                       % SNMP_PORT)
              indexLDAP = get_handler_index(DEFAULT_VALUES, '1.3.6.1.27.3.%s'\
                                       % DIRECTORY_INSTANCE_PORT)
              global_indexLDAP.set(indexLDAP)
            </script>
            <if expr="nbHandler == 2 and indexSNMP != 0 and indexLDAP != 0">
              <sequence>
                <script>
                  msg1 = 'The connection handlers info are correct.\n'
                  msg2 = 'number of handler: %s\n' % nbHandler
                  msg3 = 'index SNMP handler: %s\n' % indexSNMP
                  msg4 = 'index LDAP handler: %s\n' % indexLDAP
                  msg = '%s%s%s%s' % (msg1, msg2, msg3, msg4)
                </script>
                <message>
                  '%s' % msg
                </message>
                <tcstatus result="'pass'"></tcstatus>
              </sequence>
              <else>
                <sequence>
                  <script>
                    msg1 = 'The connection handlers info are wrong.\n'
                    msg2 = 'number of handler: %s/3\n' % nbHandler
                    msg3 = 'index SNMP handler: %s\n' % indexSNMP
                    msg4 = 'index LDAP handler: %s\n' % indexLDAP
                    msg = '%s%s%s%s' % (msg1, msg2, msg3, msg4)
                  </script>
                  <message>
                    '%s' % msg
                  </message>
                  <tcstatus result="'fail'"></tcstatus>
                </sequence>
              </else>
            </if>
          </sequence>
          <catch exception="'STAXException'" typevar="eType" var="eInfo">
            <message log="1" level="'fatal'">
              '%s: Test failed. eInfo(%s)' % (eType,eInfo)
            </message>
          </catch>
          <finally>
            <sequence>
              <call function="'testCase_Postamble'"/>
            </sequence>
          </finally>
        </try>
      </sequence>
    </testcase>
  </function>
  <!--- Test Case information
    #@TestMarker          SNMP MIB values
    #@TestName            snmp_mibvalues: TODO
    #@TestIssue           none
    #@TestPurpose         TODO.
    #@TestPreamble        none
    #@TestStep            TODO.
    #@TestPostamble       none
    #@TestResult          TODO.
  -->
  <function name="snmp_basic_003" scope="local">
    <testcase name="getTestCaseName('Check value of dsServerType entry')">
      <sequence>
        <try>
          <sequence>
            <call function="'testCase_Preamble'"/>
            <call function="'testStep'">
              { 'stepMessage' : 'Check value of dsServerType entry.' }
            </call>
            <!-- Get the information about the server -->
            <call function="'GetVar'">
              { 'location'  : STAF_REMOTE_HOSTNAME,
                'type'      : 'shared',
                'variable'  : 'Job%s_ServerInfo' % STAXParentID
              }
            </call>
            <if expr="RC != 0">
              <script>
                STAFResult='{}'
              </script>
            </if>
            <script>
              jobInfo=eval(STAFResult)
              # In IPS mode, DIRECTORY_INSTANCE_BIN is used
              # for installation path
              if IPS_PKG == True:
                instPath = DIRECTORY_INSTANCE_BIN
              else:
                instPath = DIRECTORY_INSTANCE_DIR
              if jobInfo.has_key('%s/%s' % (instPath,OPENDSNAME)):
                serverInformation=jobInfo['%s/%s' % (instPath,OPENDSNAME)]
                dsVersion=serverInformation['server version']
                dsBuild=serverInformation['server buildid']
              else:
                dsVersion='unknown'
                dsBuild='unknown'
              dsServer = '%s %s - %s' \
                         % (PRODUCTNAME, dsVersion.rstrip(), dsBuild)
              DEFAULT_VALUES = global_DEFAULT_VALUES.get()
              dsServerType = DEFAULT_VALUES['dsServerType.1']
            </script>
            <if expr="dsServerType == dsServer">
              <sequence>
                <script>
                  msg1 = 'Value for dsServerType entry is correct.\n'
                  msg2 = 'Current value: %s' % dsServerType
                  msg = '%s%s' % (msg1, msg2)
                </script>
                <message>
                  '%s' % msg
                </message>
                <tcstatus result="'pass'"></tcstatus>
              </sequence>
              <else>
                <sequence>
                  <script>
                    msg1 = 'Value for dsServerType entry is wrong.\n'
                    msg2 = 'Expected value: %s\n' % dsServer
                    msg3 = 'Current value: %s' % dsServerType
                    msg = '%s%s%s' % (msg1, msg2, msg3)
                  </script>
                  <message>
                    '%s' % msg
                  </message>
                  <tcstatus result="'fail'"></tcstatus>
                </sequence>
              </else>
            </if>
          </sequence>
          <catch exception="'STAXException'" typevar="eType" var="eInfo">
            <message log="1" level="'fatal'">
              '%s: Test failed. eInfo(%s)' % (eType,eInfo)
            </message>
          </catch>
          <finally>
            <sequence>
              <call function="'testCase_Postamble'"/>
            </sequence>
          </finally>
        </try>
      </sequence>
    </testcase>
  </function>
  <!--- Test Case information
    #@TestMarker          SNMP MIB values
    #@TestName            snmp_mibvalues: TODO
    #@TestIssue           none
    #@TestPurpose         TODO.
    #@TestPreamble        none
    #@TestStep            TODO.
    #@TestPostamble       none
    #@TestResult          TODO.
  -->
  <function name="snmp_basic_004" scope="local">
    <testcase name="getTestCaseName('Check value of dsServerDescription entry')">
      <sequence>
        <try>
          <sequence>
            <call function="'testCase_Preamble'"/>
            <call function="'testStep'">
              { 'stepMessage' : 'Check value of dsServerDescription entry.' }
            </call>
            <script>
              DEFAULT_VALUES = global_DEFAULT_VALUES.get()
              dsServerDescription = DEFAULT_VALUES['dsServerDescription.1']
              dsPath = '%s/%s' % (DIRECTORY_INSTANCE_BIN, OPENDSNAME)
              if is_windows_platform(DIRECTORY_INSTANCE_HOST):
                dsPath = dsPath.replace('/', '\\')
            </script>
            <if expr="dsServerDescription == dsPath">
              <sequence>
                <script>
                  msg1 = 'Value for dsServerDescription entry is correct.\n'
                  msg2 = 'Current value: %s' % dsServerDescription
                  msg = '%s%s' % (msg1, msg2)
                </script>
                <message>
                  '%s' % msg
                </message>
                <tcstatus result="'pass'"></tcstatus>
              </sequence>
              <else>
                <sequence>
                  <script>
                    msg1 = 'Value for dsServerDescription entry is wrong.\n'
                    msg2 = 'Expected value: %s\n' % dsPath
                    msg3 = 'Current value: %s' % dsServerDescription
                    msg = '%s%s%s' % (msg1, msg2, msg3)
                  </script>
                  <message>
                    '%s' % msg
                  </message>
                  <tcstatus result="'fail'"></tcstatus>
                </sequence>
              </else>
            </if>
          </sequence>
          <catch exception="'STAXException'" typevar="eType" var="eInfo">
            <message log="1" level="'fatal'">
              '%s: Test failed. eInfo(%s)' % (eType,eInfo)
            </message>
          </catch>
          <finally>
            <sequence>
              <call function="'testCase_Postamble'"/>
            </sequence>
          </finally>
        </try>
      </sequence>
    </testcase>
  </function>
  <!--- Test Case information
    #@TestMarker          SNMP MIB values
    #@TestName            snmp_mibvalues: TODO
    #@TestIssue           3862
    #@TestPurpose         TODO.
    #@TestPreamble        none
    #@TestStep            TODO.
    #@TestPostamble       none
    #@TestResult          TODO.
  -->
  <function name="snmp_basic_005" scope="local">
    <testcase name="getTestCaseName('Check value of dsApplIfSearchOps entry')">
      <sequence>
        <try>
          <sequence>
            <call function="'testCase_Preamble'"/>
            <call function="'testStep'">
              { 'stepMessage' : 'Perform %s search operation' % nbLoop }
            </call>
            <loop var="loop" from="1" to="nbLoop">
              <sequence>
                <script>
                  id = 700 + loop
                  userDn = 'uid=user.%s,o=snmp tests,dc=example,dc=com' % id
                </script>
                <message>
                  'LOOP %s: %s' % (loop, userDn)
                </message>
                <call function="'ldapSearchWithScript'">
                  {
                  'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
                  'dsInstancePort'   : DIRECTORY_INSTANCE_PORT ,
                  'dsInstanceDn'     : DIRECTORY_INSTANCE_DN ,
                  'dsInstancePswd'   : DIRECTORY_INSTANCE_PSWD ,
                  'dsTypesOnly'      : 'True' ,
                  'dsBaseDN'         : 'dc=com' ,
                  'dsFilter'         : userDn
                  }
                </call>
              </sequence>
            </loop>
            <call function="'testStep'">
              { 'stepMessage' : 'Increment the SNMP values' }
            </call>
            <script>
              indexLDAP = global_indexLDAP.get()
              key = 'dsApplIfReadOps.%s' % indexLDAP
              DEFAULT_VALUES = global_DEFAULT_VALUES.get()
              DEFAULT_VALUES[key] = \
                str(int(DEFAULT_VALUES[key]) + nbLoop)
              key = 'dsApplIfSearchOps.%s' % indexLDAP
              DEFAULT_VALUES[key] = \
                str(int(DEFAULT_VALUES[key]) + nbLoop)
            </script>
            <call function="'testStep'">
              { 'stepMessage' : 'Check value of dsApplIfSearchOps entry' }
            </call>
            <call function="'compareSNMPValues'">
              {
              'snmpHost'      : DIRECTORY_INSTANCE_HOST ,
              'snmpPort'      : SNMP_PORT ,
              'snmpCommunity' : community ,
              'index'         : indexLDAP ,
              'knownIssue'    : '3862'
              }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : 'Save the snmp values' }
            </call>
            <call function="'SNMPGet'">
              {
              'snmpVersion'   : '1',
              'snmpHost'      : DIRECTORY_INSTANCE_HOST ,
              'snmpPort'      : SNMP_PORT ,
              'snmpCommunity' : community ,
              'snmpOIDs'      : '' ,
              'snmpStatus'    : 'noError' ,
              'snmpWalk'      : 'True'
              }
            </call>
            <script>
              DEFAULT_VALUES = {}
              global_DEFAULT_VALUES.set({})
              DEFAULT_VALUES = create_table_fromoutput(STAXResult[0][1])
              global_DEFAULT_VALUES.set(DEFAULT_VALUES)
            </script>
          </sequence>
          <catch exception="'STAXException'" typevar="eType" var="eInfo">
            <message log="1" level="'fatal'">
              '%s: Test failed. eInfo(%s)' % (eType,eInfo)
            </message>
          </catch>
          <finally>
            <sequence>
              <call function="'testCase_Postamble'"/>
            </sequence>
          </finally>
        </try>
      </sequence>
    </testcase>
  </function>
  <!--- Test Case information
    #@TestMarker          SNMP MIB values
    #@TestName            snmp_mibvalues: TODO
    #@TestIssue           3862
    #@TestPurpose         TODO.
    #@TestPreamble        none
    #@TestStep            TODO.
    #@TestPostamble       none
    #@TestResult          TODO.
  -->
  <function name="snmp_basic_006" scope="local">
    <testcase name="getTestCaseName('Check value of dsApplIfAddEntryOps entry')">
      <sequence>
        <try>
          <sequence>
            <call function="'testCase_Preamble'"/>
            <call function="'testStep'">
              { 'stepMessage' : 'Perform %s add operations' % nbLoop }
            </call>
            <loop var="loop" from="1" to="nbLoop">
              <sequence>
                <script>
                  id = 1000 + loop
                  userDn = 'uid=user.%s,o=snmp tests,dc=example,dc=com' % id
                  listAttr = []
                  listAttr.append('objectclass:top')
                  listAttr.append('objectclass:organizationalperson')
                  listAttr.append('objectclass:inetorgperson')
                  listAttr.append('objectclass:person')
                  listAttr.append('givenname:Izen.0')
                  listAttr.append('sn:Abizen.0')
                  listAttr.append('cn:Izen Abizen.0')
                  listAttr.append('l:ICNC')
                </script>
                <message>
                  'LOOP %s: %s' % (loop, userDn)
                </message>
                <call function="'addAnEntry'">
                  {
                  'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
                  'dsInstancePort'   : DIRECTORY_INSTANCE_PORT ,
                  'dsInstanceDn'     : DIRECTORY_INSTANCE_DN ,
                  'dsInstancePswd'   : DIRECTORY_INSTANCE_PSWD ,
                  'DNToAdd'          : userDn,
                  'listAttributes'   : listAttr
                  }
                </call>
              </sequence>
            </loop>
            <call function="'testStep'">
              { 'stepMessage' : 'Increment the SNMP values' }
            </call>
            <script>
              indexLDAP = global_indexLDAP.get()
              key = 'dsApplIfReadOps.%s' % indexLDAP
              DEFAULT_VALUES = global_DEFAULT_VALUES.get()
              DEFAULT_VALUES[key] = \
                str(int(DEFAULT_VALUES[key]) + nbLoop)
              key = 'dsApplIfAddEntryOps.%s' % indexLDAP
              DEFAULT_VALUES[key] = \
                str(int(DEFAULT_VALUES[key]) + nbLoop)
              DEFAULT_VALUES['dsMasterEntries.1'] = \
                str(int(DEFAULT_VALUES['dsMasterEntries.1']) + nbLoop)
            </script>
            <call function="'testStep'">
              { 'stepMessage' : 'Check value of dsApplIfAddEntryOps entry' }
            </call>
            <call function="'compareSNMPValues'">
              {
              'snmpHost'      : DIRECTORY_INSTANCE_HOST ,
              'snmpPort'      : SNMP_PORT ,
              'snmpCommunity' : community ,
              'index'         : indexLDAP ,
              'knownIssue'    : '3862'
              }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : 'Save the SNMP values' }
            </call>
            <call function="'SNMPGet'">
              {
              'snmpVersion'   : '1',
              'snmpHost'      : DIRECTORY_INSTANCE_HOST ,
              'snmpPort'      : SNMP_PORT ,
              'snmpCommunity' : community ,
              'snmpOIDs'      : '' ,
              'snmpStatus'    : 'noError' ,
              'snmpWalk'      : 'True'
              }
            </call>
            <script>
              DEFAULT_VALUES = {}
              global_DEFAULT_VALUES.set({})
              DEFAULT_VALUES = create_table_fromoutput(STAXResult[0][1])
              global_DEFAULT_VALUES.set(DEFAULT_VALUES)
            </script>
          </sequence>
          <catch exception="'STAXException'" typevar="eType" var="eInfo">
            <message log="1" level="'fatal'">
              '%s: Test failed. eInfo(%s)' % (eType,eInfo)
            </message>
          </catch>
          <finally>
            <sequence>
              <call function="'testCase_Postamble'"/>
            </sequence>
          </finally>
        </try>
      </sequence>
    </testcase>
  </function>
   <!--- Test Case information
    #@TestMarker          SNMP MIB values
    #@TestName            snmp_mibvalues: TODO
    #@TestIssue           3862
    #@TestPurpose         TODO.
    #@TestPreamble        none
    #@TestStep            TODO.
    #@TestPostamble       none
    #@TestResult          TODO.
  -->
  <function name="snmp_basic_007" scope="local">
    <testcase name="getTestCaseName('Check value of dsApplIfRemoveEntryOps entry')">
      <sequence>
        <try>
          <sequence>
            <call function="'testCase_Preamble'"/>
            <call function="'testStep'">
              { 'stepMessage' : 'Perform %s remove operations' % nbLoop }
            </call>
            <loop var="loop" from="1" to="nbLoop">
              <sequence>
                <script>
                  id = 1000 + loop
                  userDn = 'uid=user.%s,o=snmp tests,dc=example,dc=com' % id
                </script>
                <message>
                  'LOOP %s: %s' % (loop, userDn)
                </message>
                <call function="'ldapDeleteWithScript'">
                  {
                  'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
                  'dsInstancePort'   : DIRECTORY_INSTANCE_PORT ,
                  'dsInstanceDn'     : DIRECTORY_INSTANCE_DN ,
                  'dsInstancePswd'   : DIRECTORY_INSTANCE_PSWD ,
                  'dsDn'             : ['%s' % userDn]
                  }
                </call>
              </sequence>
            </loop>
            <call function="'testStep'">
              { 'stepMessage' : 'Increment the SNMP values' }
            </call>
            <script>
              indexLDAP = global_indexLDAP.get()
              key = 'dsApplIfReadOps.%s' % indexLDAP
              DEFAULT_VALUES = global_DEFAULT_VALUES.get()
              DEFAULT_VALUES[key] = \
                str(int(DEFAULT_VALUES[key]) + nbLoop)
              key = 'dsApplIfRemoveEntryOps.%s' % indexLDAP
              DEFAULT_VALUES[key] = \
                str(int(DEFAULT_VALUES[key]) + nbLoop)
              DEFAULT_VALUES['dsMasterEntries.1'] = \
                str(int(DEFAULT_VALUES['dsMasterEntries.1']) - nbLoop)
            </script>
            <call function="'testStep'">
              { 'stepMessage' : 'Check value of dsApplIfRemoveEntryOps entry' }
            </call>
            <call function="'compareSNMPValues'">
              {
              'snmpHost'      : DIRECTORY_INSTANCE_HOST ,
              'snmpPort'      : SNMP_PORT ,
              'snmpCommunity' : community ,
              'index'         : indexLDAP ,
              'knownIssue'    : '3862'
              }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : 'Save the SNMP values' }
            </call>
            <call function="'SNMPGet'">
              {
              'snmpVersion'   : '1',
              'snmpHost'      : DIRECTORY_INSTANCE_HOST ,
              'snmpPort'      : SNMP_PORT ,
              'snmpCommunity' : community ,
              'snmpOIDs'      : '' ,
              'snmpStatus'    : 'noError' ,
              'snmpWalk'      : 'True'
              }
            </call>
            <script>
              DEFAULT_VALUES = {}
              global_DEFAULT_VALUES.set({})
              DEFAULT_VALUES = create_table_fromoutput(STAXResult[0][1])
              global_DEFAULT_VALUES.set(DEFAULT_VALUES)
            </script>
          </sequence>
          <catch exception="'STAXException'" typevar="eType" var="eInfo">
            <message log="1" level="'fatal'">
              '%s: Test failed. eInfo(%s)' % (eType,eInfo)
            </message>
          </catch>
          <finally>
            <sequence>
              <call function="'testCase_Postamble'"/>
            </sequence>
          </finally>
        </try>
      </sequence>
    </testcase>
  </function>
  <!--- Test Case information
    #@TestMarker          SNMP MIB values
    #@TestName            snmp_mibvalues: TODO
    #@TestIssue           3862
    #@TestPurpose         TODO.
    #@TestPreamble        none
    #@TestStep            TODO.
    #@TestPostamble       none
    #@TestResult          TODO.
  -->
  <function name="snmp_basic_008" scope="local">
    <testcase name="getTestCaseName('Check value of dsApplIfCompareOps entry')">
      <sequence>
        <try>
          <sequence>
            <call function="'testCase_Preamble'"/>
            <call function="'testStep'">
              { 'stepMessage' : 'Perform %s compare operations' % nbLoop }
            </call>
            <loop var="loop" from="1" to="nbLoop">
              <sequence>
                <script>
                  id = 0 + loop
                  userDn = 'uid=user.%s,o=snmp tests,dc=example,dc=com' % id
                </script>
                <message>
                  'LOOP %s: %s' % (loop, userDn)
                </message>
                <call function="'ldapCompareWithScript'">
                  {
                  'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
                  'dsInstancePort'   : DIRECTORY_INSTANCE_PORT ,
                  'dsInstanceDn'     : DIRECTORY_INSTANCE_DN ,
                  'dsInstancePswd'   : DIRECTORY_INSTANCE_PSWD ,
                  'dsDn'             : ['postalCode:64447', '%s' % userDn] ,
                  'expectedRC'       : 'noCheck'
                  }
                </call>
              </sequence>
            </loop>
            <call function="'testStep'">
              { 'stepMessage' : 'Increment the SNMP values' }
            </call>
            <script>
              indexLDAP = global_indexLDAP.get()
              key = 'dsApplIfReadOps.%s' % indexLDAP
              DEFAULT_VALUES = global_DEFAULT_VALUES.get()
              DEFAULT_VALUES[key] = \
                str(int(DEFAULT_VALUES[key]) + nbLoop)
              key = 'dsApplIfCompareOps.%s' % indexLDAP
              DEFAULT_VALUES[key] = \
                str(int(DEFAULT_VALUES[key]) + nbLoop)
            </script>
            <call function="'testStep'">
              { 'stepMessage' : 'Check value of dsApplIfCompareOps entry' }
            </call>
            <call function="'compareSNMPValues'">
              {
              'snmpHost'      : DIRECTORY_INSTANCE_HOST ,
              'snmpPort'      : SNMP_PORT ,
              'snmpCommunity' : community ,
              'index'         : indexLDAP ,
              'knownIssue'    : '3862'
              }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : 'Save the SNMP values' }
            </call>
            <call function="'SNMPGet'">
              {
              'snmpVersion'   : '1',
              'snmpHost'      : DIRECTORY_INSTANCE_HOST ,
              'snmpPort'      : SNMP_PORT ,
              'snmpCommunity' : community ,
              'snmpOIDs'      : '' ,
              'snmpStatus'    : 'noError' ,
              'snmpWalk'      : 'True'
              }
            </call>
            <script>
              DEFAULT_VALUES = {}
              global_DEFAULT_VALUES.set({})
              DEFAULT_VALUES = create_table_fromoutput(STAXResult[0][1])
              global_DEFAULT_VALUES.set(DEFAULT_VALUES)
            </script>
          </sequence>
          <catch exception="'STAXException'" typevar="eType" var="eInfo">
            <message log="1" level="'fatal'">
              '%s: Test failed. eInfo(%s)' % (eType,eInfo)
            </message>
          </catch>
          <finally>
            <sequence>
              <call function="'testCase_Postamble'"/>
            </sequence>
          </finally>
        </try>
      </sequence>
    </testcase>
  </function>
  <!--- Test Case information
    #@TestMarker          SNMP MIB values
    #@TestName            snmp_mibvalues: TODO
    #@TestIssue           3862
    #@TestPurpose         TODO.
    #@TestPreamble        none
    #@TestStep            TODO.
    #@TestPostamble       none
    #@TestResult          TODO.
  -->
  <function name="snmp_basic_009" scope="local">
    <testcase name="getTestCaseName('Check value of dsApplIfModifyEntryOps entry')">
      <sequence>
        <try>
          <sequence>
            <call function="'testCase_Preamble'"/>
            <call function="'testStep'">
              { 'stepMessage' : 'Perform %s modify operations' % nbLoop }
            </call>
            <loop var="loop" from="1" to="nbLoop">
              <sequence>
                <script>
                  id = 400 + loop
                  userDn = 'uid=user.%s,o=snmp tests,dc=example,dc=com' % id
                </script>
                <message>
                  'LOOP %s: %s' % (loop, userDn)
                </message>
                <call function="'modifyAnAttribute'">
                  {
                  'dsInstanceHost'     : DIRECTORY_INSTANCE_HOST ,
                  'dsInstancePort'     : DIRECTORY_INSTANCE_PORT ,
                  'dsInstanceDn'       : DIRECTORY_INSTANCE_DN ,
                  'dsInstancePswd'     : DIRECTORY_INSTANCE_PSWD ,
                  'DNToModify'         : userDn ,
                  'attributeName'      : 'postalCode' ,
                  'newAttributeValue'  : '%s' % id ,
                  'changetype'         : 'replace'
                  }
                </call>
              </sequence>
            </loop>
            <call function="'testStep'">
              { 'stepMessage' : 'Increment the SNMP values' }
            </call>
            <script>
              indexLDAP = global_indexLDAP.get()
              key = 'dsApplIfReadOps.%s' % indexLDAP
              DEFAULT_VALUES = global_DEFAULT_VALUES.get()
              DEFAULT_VALUES[key] = \
                str(int(DEFAULT_VALUES[key]) + nbLoop)
              key = 'dsApplIfModifyEntryOps.%s' % indexLDAP
              DEFAULT_VALUES[key] = \
                str(int(DEFAULT_VALUES[key]) + nbLoop)
            </script>
            <call function="'testStep'">
              { 'stepMessage' : 'Check value of dsApplIfModifyEntryOps entry' }
            </call>
            <call function="'compareSNMPValues'">
              {
              'snmpHost'      : DIRECTORY_INSTANCE_HOST ,
              'snmpPort'      : SNMP_PORT ,
              'snmpCommunity' : community ,
              'index'         : indexLDAP ,
              'knownIssue'    : '3862'
              }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : 'Save the SNMP values' }
            </call>
            <call function="'SNMPGet'">
              {
              'snmpVersion'   : '1',
              'snmpHost'      : DIRECTORY_INSTANCE_HOST ,
              'snmpPort'      : SNMP_PORT ,
              'snmpCommunity' : community ,
              'snmpOIDs'      : '' ,
              'snmpStatus'    : 'noError' ,
              'snmpWalk'      : 'True'
              }
            </call>
            <script>
              DEFAULT_VALUES = {}
              global_DEFAULT_VALUES.set({})
              DEFAULT_VALUES = create_table_fromoutput(STAXResult[0][1])
              global_DEFAULT_VALUES.set(DEFAULT_VALUES)
            </script>
          </sequence>
          <catch exception="'STAXException'" typevar="eType" var="eInfo">
            <message log="1" level="'fatal'">
              '%s: Test failed. eInfo(%s)' % (eType,eInfo)
            </message>
          </catch>
          <finally>
            <sequence>
              <call function="'testCase_Postamble'"/>
            </sequence>
          </finally>
        </try>
      </sequence>
    </testcase>
  </function>
  <!--- Test Case information
    #@TestMarker          SNMP MIB values
    #@TestName            snmp_mibvalues: TODO
    #@TestIssue           3862
    #@TestPurpose         TODO.
    #@TestPreamble        none
    #@TestStep            TODO.
    #@TestPostamble       none
    #@TestResult          TODO.
  -->
  <function name="snmp_basic_010" scope="local">
    <testcase name="getTestCaseName('Check value of dsApplIfModifyRDNOps entry')">
      <sequence>
        <try>
          <sequence>
            <call function="'testCase_Preamble'"/>
            <call function="'testStep'">
              { 'stepMessage' : 'Perform %s modify RDN operations' % nbLoop }
            </call>
            <loop var="loop" from="1" to="nbLoop">
              <sequence>
                <!--- Create a ldif file for moddn -->
                <script>
                  id = 800 + loop
                  userDn = 'uid=user.%s,o=snmp tests,dc=example,dc=com' % id
                  newid = 2000 + loop
                  newDn = 'uid=user.%s' % newid
                  templateFile = 'template-%s.ldif' % loop
                  templatePath = '%s/%s' % (remote.temp, templateFile)
                  ldifFile = 'moddn-%s.ldif' % loop
                  ldifPath = '%s/%s' % (DIRECTORY_INSTANCE_DIR, ldifFile)
                  ldifLines = []
                  ldifLines.append('dn: %s' % userDn)
                  ldifLines.append('changetype: moddn')
                  ldifLines.append('newRDN: %s' % newDn)
                  ldifLines.append('deleteOldRDN: 1')
                  outFile = open(templatePath, "w")
                  for line in ldifLines:
                    outFile.write("%s\n" % line)
                  outFile.close()
                </script>
                <message>
                  'LOOP %s: %s => %s' % (loop, userDn, newDn)
                </message>
                <!--- Copy file to remote host -->
                <message>
                  'Copy %s to %s on %s' \
                  % (templateFile,DIRECTORY_INSTANCE_DIR,STAF_REMOTE_HOSTNAME)
                </message>
                <call function="'copyFile'">
                  {
                  'srcfile'    : templatePath ,
                  'destfile'   : ldifPath ,
                  'remotehost' : STAF_REMOTE_HOSTNAME
                  }
                </call>
                <call function="'ldapModifyWithScript'">
                  {
                  'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
                  'dsInstancePort'   : DIRECTORY_INSTANCE_PORT ,
                  'dsInstanceDn'     : DIRECTORY_INSTANCE_DN ,
                  'dsInstancePswd'   : DIRECTORY_INSTANCE_PSWD ,
                  'dsFilename'       : ldifPath
                  }
                </call>
                <!--- Delete the ldif file used for moddn on remote host -->
                <message>
                  'Delete %s on %s' % (ldifPath, STAF_REMOTE_HOSTNAME)
                </message>
                <call function="'deleteFile'">
                  {
                  'location' : STAF_REMOTE_HOSTNAME ,
                  'filename' : ldifPath
                  }
                </call>
                <!--- Delete locally the ldif file used for moddn -->
                <message>
                  'Delete locally %s' % templatePath
                </message>
                <call function="'deleteFile'">
                  {
                  'location' : STAXServiceMachine ,
                  'filename' : templatePath
                  }
                </call>
              </sequence>
            </loop>
            <call function="'testStep'">
              { 'stepMessage' : 'Increment the SNMP values' }
            </call>
            <script>
              indexLDAP = global_indexLDAP.get()
              key = 'dsApplIfReadOps.%s' % indexLDAP
              DEFAULT_VALUES = global_DEFAULT_VALUES.get()
              DEFAULT_VALUES[key] = \
                str(int(DEFAULT_VALUES[key]) + nbLoop)
              key = 'dsApplIfModifyRDNOps.%s' % indexLDAP
              DEFAULT_VALUES[key] = \
                str(int(DEFAULT_VALUES[key]) + nbLoop)
            </script>
            <call function="'testStep'">
              { 'stepMessage' : 'Check value of dsApplIfModifyRDNOps entry' }
            </call>
            <call function="'compareSNMPValues'">
              {
              'snmpHost'      : DIRECTORY_INSTANCE_HOST ,
              'snmpPort'      : SNMP_PORT ,
              'snmpCommunity' : community ,
              'index'         : indexLDAP ,
              'knownIssue'    : '3862'
              }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : 'Save the SNMP values' }
            </call>
            <call function="'SNMPGet'">
              {
              'snmpVersion'   : '1',
              'snmpHost'      : DIRECTORY_INSTANCE_HOST ,
              'snmpPort'      : SNMP_PORT ,
              'snmpCommunity' : community ,
              'snmpOIDs'      : '' ,
              'snmpStatus'    : 'noError' ,
              'snmpWalk'      : 'True'
              }
            </call>
            <script>
              DEFAULT_VALUES = {}
              global_DEFAULT_VALUES.set({})
              DEFAULT_VALUES = create_table_fromoutput(STAXResult[0][1])
              global_DEFAULT_VALUES.set(DEFAULT_VALUES)
            </script>
          </sequence>
          <catch exception="'STAXException'" typevar="eType" var="eInfo">
            <message log="1" level="'fatal'">
              '%s: Test failed. eInfo(%s)' % (eType,eInfo)
            </message>
          </catch>
          <finally>
            <sequence>
              <call function="'testCase_Postamble'"/>
            </sequence>
          </finally>
        </try>
      </sequence>
    </testcase>
  </function>
  <!--- Test Case information
    #@TestMarker          SNMP Connection Handler register mbean
    #@TestName            registermbean: TODO
    #@TestIssue           none
    #@TestPurpose         TODO.
    #@TestPreamble        none
    #@TestStep            TODO.
    #@TestPostamble       none
    #@TestResult          TODO.
  -->
  <function name="snmp_basic_011" scope="local">
    <testcase name="getTestCaseName('Check that there is no error at startup')">
      <sequence>
        <try>
          <sequence>
            <call function="'testCase_Preamble'"/>
            <call function="'testStep'">
              { 'stepMessage' : 'Set the register-mbean property to true' }
            </call>
            <call function="'dsconfig'">
              {
              'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
              'dsInstanceDn'     : DIRECTORY_INSTANCE_DN ,
              'dsInstancePswd'   : DIRECTORY_INSTANCE_PSWD ,
              'subcommand'       : 'set-connection-handler-prop' ,
              'objectType'       : 'handler-name' ,
              'objectName'       : 'SNMP Connection Handler' ,
              'optionsString'    : '--set registered-mbean:true'
              }
            </call>
            <message>
              'status: restart 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="'StartDsWithScript'">
              { 'location' : STAF_REMOTE_HOSTNAME }
            </call>
            <script>
              returnString = STAXResult[0][1]
            </script>
            <!--- Check that DS started -->
            <call function="'isAlive'">
              {
              'noOfLoops'        : 10 ,
              'noOfMilliSeconds' : 2000
              }
            </call>
            <call function="'checktestStringNotPresent'">
              {
              'returnString' : returnString ,
              'testString'   : 'category=PROTOCOL severity=SEVERE_ERROR'
              }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : 'Get to check the SNMPConnection Handler' }
            </call>
            <call function="'SNMPGet'">
              {
              'snmpVersion'   : '1',
              'snmpHost'      : DIRECTORY_INSTANCE_HOST ,
              'snmpPort'      : SNMP_PORT ,
              'snmpCommunity' : defCommunity ,
              'snmpOIDs'      : oid ,
              'snmpStatus'    : 'noError'
              }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : 'Restore the register-mbean property' }
            </call>
            <call function="'dsconfig'">
              {
              'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
              'dsInstanceDn'     : DIRECTORY_INSTANCE_DN ,
              'dsInstancePswd'   : DIRECTORY_INSTANCE_PSWD ,
              'subcommand'       : 'set-connection-handler-prop' ,
              'objectType'       : 'handler-name' ,
              'objectName'       : 'SNMP Connection Handler' ,
              'optionsString'    : '--set registered-mbean:%s' \
                                   % refRegisteredMbeanProp
              }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : 'Restart the SNMP Connection Handler' }
            </call>
            <call function="'restartSNMPConnectionHandler'">
              {
              'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
              'dsInstanceDn'     : DIRECTORY_INSTANCE_DN ,
              'dsInstancePswd'   : DIRECTORY_INSTANCE_PSWD
              }
            </call>
          </sequence>
          <catch exception="'STAXException'" typevar="eType" var="eInfo">
            <message log="1" level="'fatal'">
              '%s: Test failed. eInfo(%s)' % (eType,eInfo)
            </message>
          </catch>
          <finally>
            <sequence>
              <call function="'testCase_Postamble'"/>
            </sequence>
          </finally>
        </try>
      </sequence>
    </testcase>
  </function>
  <!--- Test Case information
    #@TestMarker          SNMP Connection Handler register mbean
    #@TestName            registermbean: TODO
    #@TestIssue           none
    #@TestPurpose         TODO.
    #@TestPreamble        none
    #@TestStep            TODO.
    #@TestPostamble       none
    #@TestResult          TODO.
  -->
  <function name="snmp_basic_012" scope="local">
    <testcase name="getTestCaseName('Set the register-mbean property to a wrong value')">
      <sequence>
        <try>
          <sequence>
            <call function="'testCase_Preamble'"/>
            <call function="'testStep'">
              { 'stepMessage' : 'Set register-mbean property to a wrong value' }
            </call>
            <call function="'dsconfig'">
              {
              'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
              'dsInstanceDn'     : DIRECTORY_INSTANCE_DN ,
              'dsInstancePswd'   : DIRECTORY_INSTANCE_PSWD ,
              'subcommand'       : 'set-connection-handler-prop' ,
              'objectType'       : 'handler-name' ,
              'objectName'       : 'SNMP Connection Handler' ,
              'optionsString'    : '--set registered-mbean:myValue' ,
              'expectedRC'       : 1
              }
            </call>
            <script>
              returnString = STAXResult[0][1]
              msg1 = 'The value "myValue" is not a valid value for the'
              msg2 = 'SNMP Connection Handler\nproperty "registered-mbean"'
              msg3 = 'which has the following syntax: false | true'
              msg = '%s %s %s' % (msg1, msg2, msg3)
            </script>
            <call function="'checktestString'">
              {
              'returnString'   : returnString ,
              'expectedString' : msg
              }
            </call>
          </sequence>
          <catch exception="'STAXException'" typevar="eType" var="eInfo">
            <message log="1" level="'fatal'">
              '%s: Test failed. eInfo(%s)' % (eType,eInfo)
            </message>
          </catch>
          <finally>
            <sequence>
              <call function="'testCase_Postamble'"/>
            </sequence>
          </finally>
        </try>
      </sequence>
    </testcase>
  </function>
  <!--- Test Case information
    #@TestMarker          SNMP Connection Handler status
    #@TestName            status: check status when the server is
                          stopped/started
    #@TestIssue           none
    #@TestPurpose         Check status when the server is
                          stopped/started.
    #@TestPreamble        none
    #@TestStep            stop the server
    #@TestStep            check status using status command
    #@TestStep            start the server
    #@TestStep            check status using status command
    #@TestStep            do a SNMP get request to check that the
                          connection handler
    #@TestPostamble       none
    #@TestResult          Success if output of status is correct.
  -->
  <function name="snmp_basic_013" scope="local">
    <testcase name="getTestCaseName('Status when the server is stopped/started')">
      <sequence>
        <try>
          <sequence>
            <call function="'testCase_Preamble'"/>
            <call function="'testStep'">
              { 'stepMessage' : 'stop DS running on port %s' % (DIRECTORY_INSTANCE_PORT) }
            </call>
            <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="'testStep'">
              { 'stepMessage' : 'Get status when the server is stopped' }
            </call>
            <call function="'StatusWithScript'">
              {
              'dsBindDN'  : DIRECTORY_INSTANCE_DN ,
              'dsBindPwd' : DIRECTORY_INSTANCE_PSWD
              }
            </call>
            <script>
              returnString = STAXResult[0][1]
            </script>
            <call function="'searchString'">
              {
              'expectedString' : '0.0.0.0:%s : SNMP     : Enabled' \
                                 % SNMP_PORT ,
              'returnString'   : returnString ,
              'expectedRC'     : 0
              }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : 'Start DS to run on port %s' % (DIRECTORY_INSTANCE_PORT) }
            </call>
            <call function="'StartDsWithScript'">
              { 'location' : STAF_REMOTE_HOSTNAME }
            </call>
            <!--- Check that DS started -->
            <call function="'isAlive'">
              {
              'noOfLoops'        : 10 ,
              'noOfMilliSeconds' : 2000
              }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : 'Get status when the server is started' }
            </call>
            <call function="'StatusWithScript'">
              {
              'dsBindDN'  : DIRECTORY_INSTANCE_DN ,
              'dsBindPwd' : DIRECTORY_INSTANCE_PSWD
              }
            </call>
            <script>
              returnString = STAXResult[0][1]
            </script>
            <call function="'searchString'">
              {
              'expectedString' : '0.0.0.0:%s : SNMP     : Enabled' \
                                 % SNMP_PORT ,
              'returnString'   : returnString ,
              'expectedRC'     : 0
              }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : 'Send SNMP Get request' }
            </call>
            <call function="'SNMPGet'">
              {
              'snmpVersion'   : '1',
              'snmpHost'      : DIRECTORY_INSTANCE_HOST ,
              'snmpPort'      : SNMP_PORT ,
              'snmpCommunity' : community ,
              'snmpOIDs'      : oid ,
              'snmpStatus'    : 'noError'
              }
            </call>
          </sequence>
          <catch exception="'STAXException'" typevar="eType" var="eInfo">
            <message log="1" level="'fatal'">
              '%s: Test failed. eInfo(%s)' % (eType,eInfo)
            </message>
          </catch>
          <finally>
            <sequence>
              <call function="'testCase_Postamble'"/>
            </sequence>
          </finally>
        </try>
      </sequence>
    </testcase>
  </function>
  <!--- Test Case information
    #@TestMarker          SNMP Connection Handler status
    #@TestName            status: check status when the connection
                          handler is disabled/enabled
    #@TestIssue           none
    #@TestPurpose         Check status when the SNMP connection handler
                          is disabled/enabled.
    #@TestPreamble        none
    #@TestStep            disable the SNMP connection handler
    #@TestStep            check status using status command
    #@TestStep            enable the SNMP connection handler
    #@TestStep            check status using status command
    #@TestPostamble       none
    #@TestResult          Success if output of status is correct.
  -->
  <function name="snmp_basic_014" scope="local">
    <testcase name="getTestCaseName('Status when SNMP Connection Handler is disabled/enabled')">
      <sequence>
        <try>
          <sequence>
            <call function="'testCase_Preamble'"/>
            <call function="'testStep'">
              { 'stepMessage' : 'Disable the SNMP Connection Handler' }
            </call>
            <call function="'dsconfig'">
              {
              'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
              'dsInstanceDn'     : DIRECTORY_INSTANCE_DN ,
              'dsInstancePswd'   : DIRECTORY_INSTANCE_PSWD ,
              'subcommand'       : 'set-connection-handler-prop' ,
              'objectType'       : 'handler-name' ,
              'objectName'       : 'SNMP Connection Handler' ,
              'optionsString'    : '--set enabled:false'
              }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : 'Get status when the SNMP connection handler is disabled' }
            </call>
            <call function="'StatusWithScript'">
              {
              'dsBindDN'  : DIRECTORY_INSTANCE_DN ,
              'dsBindPwd' : DIRECTORY_INSTANCE_PSWD
              }
            </call>
            <script>
              returnString = STAXResult[0][1]
            </script>
            <call function="'searchString'">
              {
              'expectedString' : '0.0.0.0:%s : SNMP     : Disabled' \
                                 % SNMP_PORT ,
              'returnString'   : returnString ,
              'expectedRC'     : 0
              }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : 'Send SNMP Get request' }
            </call>
            <call function="'SNMPGet'">
              {
              'snmpVersion'   : '1',
              'snmpHost'      : DIRECTORY_INSTANCE_HOST ,
              'snmpPort'      : SNMP_PORT ,
              'snmpCommunity' : community ,
              'snmpOIDs'      : oid ,
              'snmpStatus'    : 'reqTimeout'
              }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : 'Enable the SNMP Connection Handler' }
            </call>
            <call function="'dsconfig'">
              {
              'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
              'dsInstanceDn'     : DIRECTORY_INSTANCE_DN ,
              'dsInstancePswd'   : DIRECTORY_INSTANCE_PSWD ,
              'subcommand'       : 'set-connection-handler-prop' ,
              'objectType'       : 'handler-name' ,
              'objectName'       : 'SNMP Connection Handler' ,
              'optionsString'    : '--set enabled:true'
              }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : 'Get status when the SNMP connection handler is enabled' }
            </call>
            <call function="'StatusWithScript'">
              {
              'dsBindDN'  : DIRECTORY_INSTANCE_DN ,
              'dsBindPwd' : DIRECTORY_INSTANCE_PSWD
              }
            </call>
            <script>
              returnString = STAXResult[0][1]
            </script>
            <call function="'searchString'">
              {
              'expectedString' : '0.0.0.0:%s : SNMP     : Enabled' \
                                 % SNMP_PORT ,
              'returnString'   : returnString ,
              'expectedRC'     : 0
              }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : 'Send SNMP Get request' }
            </call>
            <call function="'SNMPGet'">
              {
              'snmpVersion'   : '1',
              'snmpHost'      : DIRECTORY_INSTANCE_HOST ,
              'snmpPort'      : SNMP_PORT ,
              'snmpCommunity' : community ,
              'snmpOIDs'      : oid ,
              'snmpStatus'    : 'noError'
              }
            </call>
          </sequence>
          <catch exception="'STAXException'" typevar="eType" var="eInfo">
            <message log="1" level="'fatal'">
              '%s: Test failed. eInfo(%s)' % (eType,eInfo)
            </message>
          </catch>
          <finally>
            <sequence>
              <call function="'testCase_Postamble'"/>
            </sequence>
          </finally>
        </try>
      </sequence>
    </testcase>
  </function>
  <!--- Test Case information
    #@TestMarker          SNMP Connection Handler status
    #@TestName            status: check error message and status when
                          the opendmk-jarfile property is set to a
                          wrong value
    #@TestIssue           3943
    #@TestPurpose         Check error message and status when
                          the opendmk-jarfile property is set to a
                          wrong value.
    #@TestPreamble        none
    #@TestStep            set opendmk-jarfile property to a wrong value
    #@TestStep            restart the server
    #@TestStep            check that an error message is displayed at
                          startup
    #@TestStep            check status using status command
    #@TestStep            restore value for opendmk-jarfile property
    #@TestStep            disable the SNMP connection handler
    #@TestStep            enable the SNMP connection handler
    #@TestPostamble       none
    #@TestResult          Success if an error message is displayed and
                          if the output of status is correct.
  -->
  <function name="snmp_basic_015" scope="local">
    <testcase name="getTestCaseName('Status with a wrong opendmk-jarfile value')">
      <sequence>
        <try>
          <sequence>
            <call function="'testCase_Preamble'"/>
            <call function="'testStep'">
              { 'stepMessage' : 'Set opendmk-jarfile property to a wrong value' }
            </call>
            <call function="'dsconfig'">
              {
              'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
              'dsInstanceDn'     : DIRECTORY_INSTANCE_DN ,
              'dsInstancePswd'   : DIRECTORY_INSTANCE_PSWD ,
              'subcommand'       : 'set-connection-handler-prop' ,
              'objectType'       : 'handler-name' ,
              'objectName'       : 'SNMP Connection Handler' ,
              'optionsString'    : '--set opendmk-jarfile:wrong_file'
              }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : 'Restart DS running on port %s' % (DIRECTORY_INSTANCE_PORT) }
            </call>
            <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="'StartDsWithScript'">
              { 'location' : STAF_REMOTE_HOSTNAME }
            </call>
            <!--- Check that DS started -->
            <call function="'isAlive'">
              {
              'noOfLoops'        : 10 ,
              'noOfMilliSeconds' : 2000
              }
            </call>
            <script>
              opendmkJarFile = '%s/%s/wrong_file' \
                               % (DIRECTORY_INSTANCE_DIR, OPENDSNAME)
              if is_windows_platform(DIRECTORY_INSTANCE_HOST):
                opendmkJarFile = opendmkJarFile.replace('/', '\\')
              msg1 = 'The specified OpenDMK jar file'
              msg2 = '\'%s\' could not be found.' % opendmkJarFile
              msg3 = 'Verify that the value set in the opendmk-jarfile'
              msg4 = 'configuration parameter of the SNMP connection handler'
              msg5 = 'is the valid path to the jdmkrt.jar file and that the'
              msg6 = 'file is accessible'
              msg = '%s %s  %s %s %s %s' % (msg1, msg2, msg3, msg4, msg5, msg6)
            </script>
            <call function="'grep'">
              {
              'location'  : STAF_REMOTE_HOSTNAME ,
              'filename'  : serverLogFile ,
              'testString': msg
              }
            </call>
            <call function="'setKnownIssue'">
              { 'issueId' : '3943' }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : 'Get status when the server is started' }
            </call>
            <call function="'StatusWithScript'">
              {
              'dsBindDN'  : DIRECTORY_INSTANCE_DN ,
              'dsBindPwd' : DIRECTORY_INSTANCE_PSWD
              }
            </call>
            <script>
              returnString = STAXResult[0][1]
            </script>
            <call function="'searchString'">
              {
              'expectedString' : '0.0.0.0:%s : SNMP     : Enabled' \
                                 % SNMP_PORT ,
              'returnString'   : returnString ,
              'expectedRC'     : 0
              }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : 'Send SNMP Get request' }
            </call>
            <call function="'SNMPGet'">
              {
              'snmpVersion'   : '1',
              'snmpHost'      : DIRECTORY_INSTANCE_HOST ,
              'snmpPort'      : SNMP_PORT ,
              'snmpCommunity' : community ,
              'snmpOIDs'      : oid ,
              'snmpStatus'    : 'reqTimeout'
              }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : 'Restore value for opendmk-jarfile property' }
            </call>
            <call function="'dsconfig'">
              {
              'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
              'dsInstanceDn'     : DIRECTORY_INSTANCE_DN ,
              'dsInstancePswd'   : DIRECTORY_INSTANCE_PSWD ,
              'subcommand'       : 'set-connection-handler-prop' ,
              'objectType'       : 'handler-name' ,
              'objectName'       : 'SNMP Connection Handler' ,
              'optionsString'    : '--set opendmk-jarfile:%s' \
                                   % SNMP_PROPERTIES['opendmk-jarfile']
              }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : 'Restart the SNMP Connection Handler' }
            </call>
            <call function="'restartSNMPConnectionHandler'">
              {
              'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
              'dsInstanceDn'     : DIRECTORY_INSTANCE_DN ,
              'dsInstancePswd'   : DIRECTORY_INSTANCE_PSWD
              }
            </call>
          </sequence>
          <catch exception="'STAXException'" typevar="eType" var="eInfo">
            <message log="1" level="'fatal'">
              '%s: Test failed. eInfo(%s)' % (eType,eInfo)
            </message>
          </catch>
          <finally>
            <sequence>
              <call function="'testCase_Postamble'"/>
            </sequence>
          </finally>
        </try>
      </sequence>
    </testcase>
  </function>
  <!--- Test Case information
    #@TestMarker          SNMP Connection Handler status
    #@TestName            status: check error message and status when
                          the security-agent-file property is set to a
                          wrong value
    #@TestIssue           none
    #@TestPurpose         Check error message and status when
                          the security-agent-file property is set to a
                          wrong value.
    #@TestPreamble        none
    #@TestStep            set security-agent-file property to a wrong
                          value
    #@TestStep            restart the server
    #@TestStep            check that an error message is displayed at
                          startup
    #@TestStep            check status using status command
    #@TestStep            restore value for security-agent-file property
    #@TestStep            disable the SNMP connection handler
    #@TestStep            enable the SNMP connection handler
    #@TestPostamble       none
    #@TestResult          Success if an error message is displayed and
                          if the output of status is correct.
  -->
  <function name="snmp_basic_016" scope="local">
    <testcase name="getTestCaseName('Status with a wrong security-agent-file value')">
      <sequence>
        <try>
          <sequence>
            <call function="'testCase_Preamble'"/>
            <call function="'testStep'">
              { 'stepMessage' : 'Set the security-agent-file to a wrong value' }
            </call>
            <call function="'dsconfig'">
              {
              'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
              'dsInstanceDn'     : DIRECTORY_INSTANCE_DN ,
              'dsInstancePswd'   : DIRECTORY_INSTANCE_PSWD ,
              'subcommand'       : 'set-connection-handler-prop' ,
              'objectType'       : 'handler-name' ,
              'objectName'       : 'SNMP Connection Handler' ,
              'optionsString'    : '--set security-agent-file:wrong_file'
              }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : 'Restart DS running on port %s' % (DIRECTORY_INSTANCE_PORT) }
            </call>
            <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="'StartDsWithScript'">
              { 'location' : STAF_REMOTE_HOSTNAME }
            </call>
            <!--- Check that DS started -->
            <call function="'isAlive'">
              {
              'noOfLoops'        : 10 ,
              'noOfMilliSeconds' : 2000
              }
            </call>
            <script>
              msg1 = 'Cannot initialize the SNMP Connection Handler.'
              msg2 = 'Please check the configuration attributes'
              msg = '%s %s' % (msg1, msg2)
            </script>
            <call function="'grep'">
              {
              'location'  : STAF_REMOTE_HOSTNAME ,
              'filename'  : serverLogFile ,
              'testString': msg
              }
            </call>
            <script>
              msg1 = 'You do not have the appropriated OpenDMK jar files to'
              msg2 = 'enable the SNMP Connection Handler. Please go under'
              msg3 = 'http:\/\/opendmk.dev.java.net and set the'
              msg4 = 'ds-cfg-opendmk-jarfile configuration parameter to set'
              msg5 = 'the full path of the required jdmkrt.jar file.'
              msg6 = 'The SNMP connection Handler didn\'t started'
              msg = '%s %s %s %s %s %s' % (msg1, msg2, msg3, msg4, msg5, msg6)
            </script>
            <call function="'grep'">
              {
              'location'   : STAF_REMOTE_HOSTNAME ,
              'filename'   : serverLogFile ,
              'testString' : msg ,
              'expectedRC' : 1
              }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : 'Get status when the server is started' }
            </call>
            <call function="'StatusWithScript'">
              {
              'dsBindDN'  : DIRECTORY_INSTANCE_DN ,
              'dsBindPwd' : DIRECTORY_INSTANCE_PSWD
              }
            </call>
            <script>
              returnString = STAXResult[0][1]
            </script>
            <call function="'searchString'">
              {
              'expectedString' : '0.0.0.0:%s : SNMP     : Enabled' \
                                 % SNMP_PORT ,
              'returnString'   : returnString ,
              'expectedRC'     : 0
              }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : 'Send SNMP Get request' }
            </call>
            <call function="'SNMPGet'">
              {
              'snmpVersion'   : '1',
              'snmpHost'      : DIRECTORY_INSTANCE_HOST ,
              'snmpPort'      : SNMP_PORT ,
              'snmpCommunity' : community ,
              'snmpOIDs'      : oid ,
              'snmpStatus'    : 'reqTimeout'
              }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : 'Restore value for security-agent-file property' }
            </call>
            <call function="'dsconfig'">
              {
              'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
              'dsInstanceDn'     : DIRECTORY_INSTANCE_DN ,
              'dsInstancePswd'   : DIRECTORY_INSTANCE_PSWD ,
              'subcommand'       : 'set-connection-handler-prop' ,
              'objectType'       : 'handler-name' ,
              'objectName'       : 'SNMP Connection Handler' ,
              'optionsString'    : '--set security-agent-file:%s' \
                                   % SNMP_PROPERTIES['security-agent-file']
              }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : 'Restart the SNMP Connection Handler' }
            </call>
            <call function="'restartSNMPConnectionHandler'">
              {
              'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
              'dsInstanceDn'     : DIRECTORY_INSTANCE_DN ,
              'dsInstancePswd'   : DIRECTORY_INSTANCE_PSWD
              }
            </call>
          </sequence>
          <catch exception="'STAXException'" typevar="eType" var="eInfo">
            <message log="1" level="'fatal'">
              '%s: Test failed. eInfo(%s)' % (eType,eInfo)
            </message>
          </catch>
          <finally>
            <sequence>
              <call function="'testCase_Postamble'"/>
            </sequence>
          </finally>
        </try>
      </sequence>
    </testcase>
  </function>
  <!-- Test Case information
    #@TestMarker          SNMP Connection Handler status
    #@TestName            status: check error message and status when
                          the listen-port property is set to a wrong
                          value
    #@TestIssue           none
    #@TestPurpose         Check error message and status when
                          the listen-port property is set to a wrong
                          value.
    #@TestPreamble        none
    #@TestStep            set listen-port property to a wrong value
    #@TestStep            restart the server
    #@TestStep            check that an error message is displayed at
                          startup
    #@TestStep            check status using status command
    #@TestStep            restore value for listen-port property
    #@TestStep            disable the SNMP connection handler
    #@TestStep            enable the SNMP connection handler
    #@TestPostamble       none
    #@TestResult          Success if an error message is displayed and
                          if the output of status is correct.
  -->
  <function name="snmp_basic_017" scope="local">
    <testcase name="getTestCaseName('Status with a wrong listen-port value')">
      <sequence>
        <try>
          <sequence>
            <call function="'testCase_Preamble'"/>
            <script>
              if is_windows_platform(STAF_REMOTE_HOSTNAME) or IPS_PKG:
                skip=1
              else:
                skip=0
            </script>
            <if expr="skip == 0">
              <sequence>
                <call function="'testStep'">
                  { 'stepMessage' : 'Set the listen-port to a wrong value' }
                </call>
                <call function="'dsconfig'">
                  {
                  'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
                  'dsInstanceDn'     : DIRECTORY_INSTANCE_DN ,
                  'dsInstancePswd'   : DIRECTORY_INSTANCE_PSWD ,
                  'subcommand'       : 'set-connection-handler-prop' ,
                  'objectType'       : 'handler-name' ,
                  'objectName'       : 'SNMP Connection Handler' ,
                  'optionsString'    : '--set listen-port:%s' \
                                       % DEFAULT_PROPERTIES['listen-port']
                  }
                </call>
                <call function="'testStep'">
                  { 'stepMessage' : 'Restart DS running on port %s' % (DIRECTORY_INSTANCE_PORT) }
                </call>
                <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="'StartDsWithScript'">
                  { 'location' : STAF_REMOTE_HOSTNAME }
                </call>
                <call function="'isAlive'">
                  {
                  'noOfLoops'        : 10 ,
                  'noOfMilliSeconds' : 2000
                  }
                </call>
                <script>
                  msg1 = 'Cannot initialize the SNMP Connection Handler.'
                  msg2 = 'Please check the configuration attributes'
                  msg = '%s %s' % (msg1, msg2)
                </script>
                <call function="'grep'">
                  {
                  'location'  : STAF_REMOTE_HOSTNAME ,
                  'filename'  : serverLogFile ,
                  'testString': msg
                  }
                </call>
                <call function="'testStep'">
                  { 'stepMessage' : 'Get status when the server is started' }
                </call>
                <call function="'StatusWithScript'">
                  {
                  'dsBindDN'  : DIRECTORY_INSTANCE_DN ,
                  'dsBindPwd' : DIRECTORY_INSTANCE_PSWD
                  }
                </call>
                <script>
                  returnString = STAXResult[0][1]
                </script>
                <call function="'searchString'">
                  {
                  'expectedString' : '0.0.0.0:%s  : SNMP     : Enabled' \
                                     % DEFAULT_PROPERTIES['listen-port'] ,
                  'returnString'   : returnString ,
                  'expectedRC'     : 0
                  }
                </call>
                <call function="'testStep'">
                  { 'stepMessage' : 'Send SNMP Get request' }
                </call>
                <call function="'SNMPGet'">
                  {
                  'snmpVersion'   : '1',
                  'snmpHost'      : DIRECTORY_INSTANCE_HOST ,
                  'snmpPort'      : SNMP_PORT ,
                  'snmpCommunity' : community ,
                  'snmpOIDs'      : oid ,
                  'snmpStatus'    : 'reqTimeout'
                  }
                </call>
                <call function="'testStep'">
                  { 'stepMessage' : 'Restore value for listen-port property' }
                </call>
                <call function="'dsconfig'">
                  {
                  'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
                  'dsInstanceDn'     : DIRECTORY_INSTANCE_DN ,
                  'dsInstancePswd'   : DIRECTORY_INSTANCE_PSWD ,
                  'subcommand'       : 'set-connection-handler-prop' ,
                  'objectType'       : 'handler-name' ,
                  'objectName'       : 'SNMP Connection Handler' ,
                  'optionsString'    : '--set listen-port:%s' \
                                       % SNMP_PROPERTIES['listen-port']
                  }
                </call>
                <call function="'testStep'">
                  { 'stepMessage' : 'Restart the SNMP Connection Handler' }
                </call>
                <call function="'restartSNMPConnectionHandler'">
                  {
                  'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
                  'dsInstanceDn'     : DIRECTORY_INSTANCE_DN ,
                  'dsInstancePswd'   : DIRECTORY_INSTANCE_PSWD
                  }
                </call>
              </sequence>
              <else>
                <sequence>
                  <message>'This testcase is not relevant on Windows'</message>
                  <tcstatus result="'pass'"/>
                </sequence>
              </else>
            </if>
          </sequence>
          <catch exception="'STAXException'" typevar="eType" var="eInfo">
            <message log="1" level="'fatal'">
              '%s: Test failed. eInfo(%s)' % (eType,eInfo)
            </message>
          </catch>
          <finally>
            <sequence>
              <call function="'testCase_Postamble'"/>
            </sequence>
          </finally>
        </try>
      </sequence>
    </testcase>
  </function>
</stax>
opends/tests/staf-tests/functional-tests/testcases/snmp/snmp.xml
New file
@@ -0,0 +1,123 @@
<?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/CDDLv1_0.txt
 ! or http://forgerock.org/license/CDDLv1.0.html.
 ! 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/CDDLv1_0.txt.  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 2012 ForgeRock AS.
 ! -->
<stax>
  <defaultcall function="main_snmp" />
  <function name="main_snmp">
    <function-list-args>
      <function-required-arg name="STAXParentID"/>
    </function-list-args>
    <sequence>
      <try>
        <block name="'snmp'">
          <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>
            <script>
              CurrentTestPath['group']='snmp'
              _group=CurrentTestPath['group']
            </script>
            <call function="'testGroup_Preamble'" />
            <script>
              STOP_RUN = 'False'
              SNMP_PROPERTIES = {}
              suiteList = []
              suiteList.append('basic')
              suiteList.append('traps')
              suiteList.append('v1')
              suiteList.append('v2c')
              suiteList.append('v3')
            </script>
            <!-- SNMP Setup -->
            <import machine="STAF_LOCAL_HOSTNAME"
              file="'%s/testcases/%s/snmp_setup.xml' % (TESTS_DIR,_group)"/>
            <call function="'main_snmp_setup'" />
            <!-- Run the test suites -->
            <iterate  var="_suite" in="suiteList">
              <sequence>
                <try>
                  <sequence>
                    <!-- SNMP Test Suites -->
                    <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>
                  </sequence>
                </catch>
                <catch exception="'STAFException.TestSuite.MainException'">
                  <sequence>
                    <message log="1" level="'fatal'">'Main part of test suite %s failed.' % _suite</message>
                  </sequence>
                </catch>
                <catch exception="'STAFException.TestSuite.CleanupException'">
                  <sequence>
                    <message log="1" level="'fatal'">'Cleanup of test suite %s failed.' % _suite</message>
                  </sequence>
                </catch>
                </try>
              </sequence>
            </iterate>
          </sequence>
        </block>
        <catch exception="'STAXException.TestGroupException'">
          <sequence>
            <message log="1" level="'fatal'">'Execution of Test Group Failed'</message>
          </sequence>
        </catch>
        <finally>
          <sequence>
            <!-- SNMP Cleanup -->
            <import machine="STAF_LOCAL_HOSTNAME"
              file="'%s/testcases/%s/snmp_cleanup.xml' % (TESTS_DIR,_group)"/>
            <call function="'main_snmp_cleanup'" />
            <!-- Test Group Postamble -->
            <call function="'testGroup_Postamble'"/>
          </sequence>
        </finally>
      </try>
    </sequence>
  </function>
</stax>
opends/tests/staf-tests/functional-tests/testcases/snmp/snmp_cleanup.xml
New file
@@ -0,0 +1,79 @@
<?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.
 !      Portions Copyright 2012 ForgeRock AS
 ! -->
<stax>
  <defaultcall function="main_snmp_cleanup"/>
  <function name="main_snmp_cleanup">
    <sequence>
      <block name="'snmp_cleanup'">
        <sequence>
          <!--- Test Suite information
            #@TestSuiteName       cleanup
            #@TestSuitePurpose    Cleanup for the snmp test suite.
            #@TestSuiteGroup      cleanup
            #@TestScript          snmp_cleanup.xml
          -->
          <script>
            if not CurrentTestPath.has_key('group'):
              CurrentTestPath['group'] = 'snmp'
            CurrentTestPath['suite'] = 'cleanup'
          </script>
          <try>
            <sequence>
              <call function="'testSuite_Preamble'"/>
              <call function="'common_cleanup'"/>
            </sequence>
          <finally>
            <call function="'testSuite_Postamble'"/>
          </finally>
          </try>
        </sequence>
      </block>
    </sequence>
  </function>
</stax>
opends/tests/staf-tests/functional-tests/testcases/snmp/snmp_setup.xml
New file
@@ -0,0 +1,596 @@
<?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-2010 Sun Microsystems, Inc.
 !      Portions Copyright 2012 ForgeRock AS
! -->
<stax>
  <function name="main_snmp_setup">
    <sequence>
      <block name="'snmp_setup'">
        <try>
        <sequence>
          <!--- Test Suite information
            #@TestSuiteName       setup
            #@TestSuitePurpose    Setup for the snmp test suite.
            #@TestSuiteGroup      setup
            #@TestScript          snmp_setup.xml
          -->
          <script>
            if not CurrentTestPath.has_key('group'):
              CurrentTestPath['group'] = 'snmp'
            CurrentTestPath['suite'] = 'setup'
          </script>
          <call function="'testSuite_Preamble'"/>
          <!--- Define default value for manager -->
          <script>
            snmpPath    = '%s/snmp' % remote.java,
            opendmkPath = '%s/jdmkrt.jar' % snmpPath
          </script>
          <!--- Test Case information
            #@TestMarker          setup
            #@TestName            setup: create DS topology
            #@TestIssue           none
            #@TestPurpose         Create the topology necessary to the
                                  test suite.
            #@TestPreamble        none
            #@TestStep            Create DS topology as described in config.py.
            #@TestPostamble       none
            #@TestResult          Success if createTopology returns 0.
          -->
          <testcase name="getTestCaseName('setup: create DS topology')">
            <sequence>
              <try>
                <sequence>
                  <call function="'testCase_Preamble'"/>
                  <call function="'testStep'">
                    { 'stepMessage' : 'create DS topology as described in config.py.' }
                  </call>
                  <call function="'createTopology'">
                    { 'initialiseInstance' : False }
                  </call>
                  <call function="'checktestRC'">
                    {
                    'returncode' : RC ,
                    'result'     : STAXResult
                    }
                  </call>
                </sequence>
                <catch exception="'STAXException'" typevar="eType" var="eInfo">
                  <message log="1" level="'fatal'">
                    '%s: Test failed. eInfo(%s)' % (eType,eInfo)
                  </message>
                </catch>
                <finally>
                  <sequence>
                    <call function="'testCase_Postamble'"/>
                  </sequence>
                </finally>
              </try>
            </sequence>
          </testcase>
          <!-- Check if 'opendmkPath' exists -->
          <call function="'GetEntry'">
            {
            'location'  : STAF_REMOTE_HOSTNAME ,
            'entry'     : opendmkPath ,
            'attribute' : 'TYPE'
            }
          </call>
          <!-- 'opendmkPath' exists so we can continue -->
          <if expr="RC != 48 or not PRODUCTNAME.startswith('OpenDJ')">
            <sequence>
              <!--- Test Case information
                #@TestMarker          setup
                #@TestName            setup: start DS
                #@TestIssue           none
                #@TestPurpose         Start DS.
                #@TestPreamble        none
                #@TestStep            Start the server.
                #@TestStep            Check that the server is alive.
                #@TestPostamble       none
                #@TestResult          Success if StartDsWithScript returns 0.
              -->
              <testcase name="getTestCaseName('setup: start DS')">
                <sequence>
                  <try>
                    <sequence>
                      <call function="'testCase_Preamble'"/>
                      <call function="'testStep'">
                        { 'stepMessage' : 'start DS to run on port %s.' % (DIRECTORY_INSTANCE_PORT) }
                      </call>
                      <!--- Start DS -->
                      <call function="'StartDsWithScript'">
                        { 'location' : STAF_REMOTE_HOSTNAME }
                      </call>
                      <!--- Check that DS started -->
                      <call function="'isAlive'">
                        {
                        'noOfLoops'        : 10 ,
                        'noOfMilliSeconds' : 2000
                        }
                      </call>
                    </sequence>
                    <catch exception="'STAXException'" typevar="eType" var="eInfo">
                      <message log="1" level="'fatal'">
                        '%s: Test failed. eInfo(%s)' % (eType,eInfo)
                      </message>
                    </catch>
                    <finally>
                      <sequence>
                        <call function="'testCase_Postamble'"/>
                      </sequence>
                    </finally>
                  </try>
                </sequence>
              </testcase>
              <!--- Test Case information
               #@TestMarker          setup
               #@TestName            setup: add initial entries
               #@TestIssue           none
               #@TestPurpose         Load the data needed by the test suite.
               #@TestPreamble        none
               #@TestStep            Load the data needed by the test suite.
               #@TestPostamble       none
               #@TestResult          Success if importLdif returns 0.
              -->
              <testcase name="getTestCaseName('setup: add initial entries')">
                <sequence>
                  <try>
                    <sequence>
                      <call function="'testCase_Preamble'"/>
                      <call function="'testStep'">
                        { 'stepMessage' : 'Add initial entries' }
                      </call>
                      <call function="'dsconfigSet'">
                        {
                          'dsInstanceHost'         : DIRECTORY_INSTANCE_HOST,
                          'dsInstanceAdminPort'    : DIRECTORY_INSTANCE_ADMIN_PORT,
                          'dsInstanceDn'           : DIRECTORY_INSTANCE_DN,
                          'dsInstancePswd'         : DIRECTORY_INSTANCE_PSWD,
                          'objectName'             : 'password-policy',
                          'propertyType'           : 'policy',
                          'propertyName'           : 'Default Password Policy',
                          'attributeName'          : 'allow-pre-encoded-passwords',
                          'attributeValue'         : 'true'
                        }
                      </call>
                      <call function="'addEntry'">
                        { 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST,
                          'dsInstancePort' : DIRECTORY_INSTANCE_PORT,
                          'dsInstanceDn'   : DIRECTORY_INSTANCE_DN,
                          'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD,
                          'entryToBeAdded' : '%s/snmp/snmp_start.ldif'
                                             % remote.data,
                          'verbose'        : False
                        }
                      </call>
                    </sequence>
                    <catch exception="'STAXException'" typevar="eType" var="eInfo">
                      <message log="1" level="'fatal'">
                        '%s: Test failed. eInfo(%s)' % (eType,eInfo)
                      </message>
                    </catch>
                    <finally>
                      <sequence>
                        <call function="'testCase_Postamble'"/>
                      </sequence>
                    </finally>
                  </try>
                </sequence>
              </testcase>
              <!--- Test Case information
                #@TestMarker          setup
                #@TestName            setup: get default SNMP connection handler
                                      properties
                #@TestIssue           none
                #@TestPurpose         Get default SNMP connection handler
                                      properties.
                #@TestPreamble        none
                #@TestStep            get default SNMP connection handler
                                      properties using dsconfig.
                #@TestPostamble       none
                #@TestResult          Success if GetDSConfigProperties returns 0
              -->
              <testcase name="getTestCaseName
              ('setup: get default SNMP Connection Handler properties')">
                <sequence>
                  <try>
                    <sequence>
                      <call function="'testCase_Preamble'"/>
                      <call function="'testStep'">
                        { 'stepMessage' : 'Get default SNMP Connection Handler properties' }
                      </call>
                      <script>
                        options = '--handler-name "SNMP Connection Handler"'
                      </script>
                      <call function="'GetDSConfigProperties'">
                        {
                        'dsInstanceHost'  : DIRECTORY_INSTANCE_HOST ,
                        'dsInstanceDn'    : DIRECTORY_INSTANCE_DN ,
                        'dsInstancePswd'  : DIRECTORY_INSTANCE_PSWD ,
                        'subcommand'      : 'get-connection-handler-prop' ,
                        'optionsString'   : options ,
                        'myVariableName'  : 'DEFAULT_PROPERTIES'
                        }
                      </call>
                    </sequence>
                    <catch exception="'STAXException'" typevar="eType" var="eInfo">
                      <message log="1" level="'fatal'">
                        '%s: Test failed. eInfo(%s)' % (eType,eInfo)
                      </message>
                    </catch>
                    <finally>
                      <sequence>
                        <call function="'testCase_Postamble'"/>
                      </sequence>
                    </finally>
                  </try>
                </sequence>
              </testcase>
              <!--- Test Case information
                #@TestMarker          setup
                #@TestName            setup: check SNMP Connection Handler is
                                      disabled
                #@TestIssue           none
                #@TestPurpose         Check SNMP Connection Handler is disabled.
                #@TestPreamble        none
                #@TestStep            check SNMP Connection Handler is
                                      disabled using status command
                #@TestPostamble       none
                #@TestResult          Success if output of status is correct.
              -->
              <testcase name="getTestCaseName
              ('setup: check SNMP Connection Handler is disabled')">
                <sequence>
                  <try>
                    <sequence>
                      <call function="'testCase_Preamble'"/>
                      <call function="'testStep'">
                        { 'stepMessage' : 'Check SNMP Connection Handler is disabled' }
                      </call>
                      <call function="'StatusWithScript'">
                        {
                        'dsBindDN'  : DIRECTORY_INSTANCE_DN ,
                        'dsBindPwd' : DIRECTORY_INSTANCE_PSWD
                        }
                      </call>
                      <script>
                        returnString = STAXResult[0][1]
                      </script>
                      <call function="'checktestString'">
                        {
                        'returnString'   : returnString ,
                        'expectedString' : ': SNMP     : Disabled'
                        }
                      </call>
                    </sequence>
                    <catch exception="'STAXException'" typevar="eType" var="eInfo">
                      <message log="1" level="'fatal'">
                        '%s: Test failed. eInfo(%s)' % (eType,eInfo)
                      </message>
                    </catch>
                    <finally>
                      <sequence>
                        <call function="'testCase_Postamble'"/>
                      </sequence>
                    </finally>
                  </try>
                </sequence>
              </testcase>
              <!--- Test Case information
                #@TestMarker          setup
                #@TestName            setup: enable SNMP Connection Handler
                #@TestIssue           none
                #@TestPurpose         Enable SNMP Connection Handler.
                #@TestPreamble        none
                #@TestStep            enable SNMP Connection Handler using
                                      dsconfig.
                #@TestPostamble       none
                #@TestResult          Success if dsconfig returns 0.
              -->
              <testcase name="getTestCaseName
              ('setup: enable SNMP Connection Handler')">
                <sequence>
                  <try>
                    <sequence>
                      <call function="'testCase_Preamble'"/>
                      <call function="'testStep'">
                        { 'stepMessage' : 'Enable SNMP Connection Handler' }
                      </call>
                      <call function="'dsconfig'">
                        {
                        'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
                        'dsInstanceDn'     : DIRECTORY_INSTANCE_DN ,
                        'dsInstancePswd'   : DIRECTORY_INSTANCE_PSWD ,
                        'subcommand'       : 'set-connection-handler-prop' ,
                        'objectType'       : 'handler-name' ,
                        'objectName'       : 'SNMP Connection Handler' ,
                        'optionsString'    : '--set enabled:true \
                                              --set listen-port:%s \
                                              --set trap-port:%s \
                                              --set opendmk-jarfile:%s' \
                                         % (SNMP_PORT, SNMP_TRAP_PORT, opendmkPath)
                        }
                      </call>
                    </sequence>
                    <catch exception="'STAXException'" typevar="eType" var="eInfo">
                      <message log="1" level="'fatal'">
                        '%s: Test failed. eInfo(%s)' % (eType,eInfo)
                      </message>
                    </catch>
                    <finally>
                      <sequence>
                        <call function="'testCase_Postamble'"/>
                      </sequence>
                    </finally>
                  </try>
                </sequence>
              </testcase>
              <!--- Test Case information
                #@TestMarker          setup
                #@TestName            setup: check SNMP Connection Handler is
                                      enabled
                #@TestIssue           none
                #@TestPurpose         Check SNMP Connection Handler is enabled.
                #@TestPreamble        none
                #@TestStep            check SNMP Connection Handler is
                                      enabled using status command
                #@TestPostamble       none
                #@TestResult          Success if output of status is correct.
              -->
              <testcase name="getTestCaseName
              ('setup: check SNMP Connection Handler is enabled')">
                <sequence>
                  <try>
                    <sequence>
                      <call function="'testCase_Preamble'"/>
                      <call function="'testStep'">
                        { 'stepMessage' : 'Check SNMP Connection Handler is enabled' }
                      </call>
                      <call function="'StatusWithScript'">
                        {
                        'dsBindDN'  : DIRECTORY_INSTANCE_DN ,
                        'dsBindPwd' : DIRECTORY_INSTANCE_PSWD
                        }
                      </call>
                      <script>
                        returnString = STAXResult[0][1]
                      </script>
                      <call function="'checktestString'">
                        {
                        'returnString'   : returnString ,
                        'expectedString' : ': SNMP     : Enabled'
                        }
                      </call>
                    </sequence>
                    <catch exception="'STAXException'" typevar="eType" var="eInfo">
                      <message log="1" level="'fatal'">
                        '%s: Test failed. eInfo(%s)' % (eType,eInfo)
                      </message>
                    </catch>
                    <finally>
                      <sequence>
                        <call function="'testCase_Postamble'"/>
                      </sequence>
                    </finally>
                  </try>
                </sequence>
              </testcase>
              <!--- Test Case information
                #@TestMarker          setup
                #@TestName            setup: get SNMP connection handler
                                      properties
                #@TestIssue           none
                #@TestPurpose         Get SNMP connection handler properties.
                #@TestPreamble        none
                #@TestStep            get SNMP connection handler properties
                                      using dsconfig.
                #@TestPostamble       none
                #@TestResult          Success if GetDSConfigProperties returns 0
              -->
              <testcase name="getTestCaseName
              ('setup: get SNMP Connection Handler properties')">
                <sequence>
                  <try>
                    <sequence>
                      <call function="'testCase_Preamble'"/>
                      <call function="'testStep'">
                        { 'stepMessage' : 'Get SNMP Connection Handler properties' }
                      </call>
                      <script>
                        options = '--handler-name "SNMP Connection Handler"'
                      </script>
                      <call function="'GetDSConfigProperties'">
                        {
                        'dsInstanceHost'  : DIRECTORY_INSTANCE_HOST ,
                        'dsInstanceDn'    : DIRECTORY_INSTANCE_DN ,
                        'dsInstancePswd'  : DIRECTORY_INSTANCE_PSWD ,
                        'subcommand'      : 'get-connection-handler-prop' ,
                        'optionsString'   : options ,
                        'myVariableName'  : 'SNMP_PROPERTIES'
                        }
                      </call>
                    </sequence>
                    <catch exception="'STAXException'" typevar="eType" var="eInfo">
                      <message log="1" level="'fatal'">
                        '%s: Test failed. eInfo(%s)' % (eType,eInfo)
                      </message>
                    </catch>
                    <finally>
                      <sequence>
                        <call function="'testCase_Postamble'"/>
                      </sequence>
                    </finally>
                  </try>
                </sequence>
              </testcase>
            </sequence>
            <else>
              <sequence>
                <!--- Test Case information
                  #@TestMarker          setup
                  #@TestName            setup: warning
                  #@TestIssue           none
                  #@TestPurpose         Warning
                  #@TestPreamble        none
                  #@TestStep            Print a warning message to indicate that
                                        the SNMP_OPENDMK_LIBDIR is not set.
                  #@TestPostamble       none
                  #@TestResult          Always fails.
                -->
                <testcase name="getTestCaseName('setup: Warning')">
                  <sequence>
                    <try>
                      <sequence>
                        <call function="'testCase_Preamble'"/>
                        <script>
                          STOP_RUN = 'True'
                        </script>
                        <call function="'testStep'">
                          { 'stepMessage' : 'Print a warning message' }
                        </call>
                        <message log="1" level="'Error'">
                          'WARNING: Check if SNMP_OPENDMK_LIBDIR is set \
                          in the config.py.stubs file.'
                        </message>
                        <tcstatus result="'fail'"></tcstatus>
                      </sequence>
                      <catch exception="'STAXException'" typevar="eType" var="eInfo">
                        <message log="1" level="'fatal'">
                          '%s: Test failed. eInfo(%s)' % (eType,eInfo)
                        </message>
                      </catch>
                      <finally>
                        <sequence>
                          <call function="'testCase_Postamble'"/>
                        </sequence>
                      </finally>
                    </try>
                  </sequence>
                </testcase>
              </sequence>
            </else>
          </if>
        </sequence>
        <finally>
          <call function="'testSuite_Postamble'"/>
        </finally>
        </try>
      </block>
    </sequence>
  </function>
</stax>
opends/tests/staf-tests/functional-tests/testcases/snmp/traps/snmp_traps.xml
New file
@@ -0,0 +1,148 @@
<?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/CDDLv1_0.txt
 ! or http://forgerock.org/license/CDDLv1.0.html.
 ! 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/CDDLv1_0.txt.  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 2012 ForgeRock AS.
 ! -->
<stax>
  <defaultcall function="main_snmp_traps"/>
  <function name="main_snmp_traps" scope="local">
    <sequence>
      <block name="'main_snmp_traps'">
        <try>
          <sequence>
            <script>
              CurrentTestPath['group']='snmp'
              CurrentTestPath['suite']='traps'
              __group=CurrentTestPath['group']
              __groupdir='%s/testcases/%s' % (TESTS_DIR,__group)
            </script>
            <!--- Test Suite information
            #@TestSuiteName       SNMP default properties test suite
            #@TestSuitePurpose    Verify SNMP default properties
            #@TestSuiteID         traps
            #@TestSuiteGroup      snmp
            #@TestGroup           snmp
            #@TestScript          snmp.xml
            #@TestHTMLLink        http://www.forgerock.org/
            -->
            <call function="'testSuite_Preamble'"/>
            <try>
              <sequence>
                <!-- List of Import of Test Functions -->
                <script>
                  importList=[]
                  importList.append('traps/snmp_traps_defaultconf_tests')
                  importList.append('traps/snmp_traps_customconf_tests')
                </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>
                <!-- Specific to traps SNMP tests -->
                <script>
                  # Default
                  trapsCommunity = '%s' % SNMP_PROPERTIES['traps-community']
                  outputFile = '%s/timer.out' % DIRECTORY_INSTANCE_DIR
                  timerDuration = '5m'
                  # Custom
                  defTrapsCommunityProp = '%s' % SNMP_PROPERTIES['traps-community']
                  newTrapsCommunityProp = 'myCommunity'
                  newTrapsDestProp = DIRECTORY_INSTANCE_HOST
                  wrongTrapsDestProp = 'wrongtrapdestination'
                  outputFile2 = '%s/timer.out' % DIRECTORY_INSTANCE_DIR
                  timerDuration2 = '5m'
                  serverLogFile = '%s/%s/logs/server.out' \
                    % (DIRECTORY_INSTANCE_DIR, OPENDSNAME)
                </script>
                <!-- List of Test Cases -->
                <script>
                  testsList=[]
                  testsList.append('snmp_traps_default_001')
                  testsList.append('snmp_traps_default_002')
                  testsList.append('snmp_traps_default_003')
                  testsList.append('snmp_traps_custom_001')
                  testsList.append('snmp_traps_custom_002')
                  testsList.append('snmp_traps_custom_003')
                  testsList.append('snmp_traps_custom_004')
                  testsList.append('snmp_traps_custom_005')
                </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: Global Schema Cleanup.'</message>
              <try>
                <message>'No Test Suite Cleanup'</message>
              <catch exception="'STAFException'">
                <sequence>
                  <message log="1" level="'fatal'">'Cleanup of test suite failed.'</message>
                </sequence>
              </catch>
              <finally>
                <call function="'testSuite_Postamble'"/>
              </finally>
              </try>
            </sequence>
          </finally>
        </try>
      </block>
    </sequence>
  </function>
</stax>
opends/tests/staf-tests/functional-tests/testcases/snmp/traps/snmp_traps_customconf_tests.xml
New file
@@ -0,0 +1,974 @@
<?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-2010 Sun Microsystems, Inc.
 !      Portions Copyright 2012 ForgeRock AS
 ! -->
<stax>
  <!--- Test Case information
    #@TestMarker          SNMP traps with custom configuration
    #@TestName            traps_customconf: TODO
    #@TestIssue           3435
    #@TestPurpose         TODO.
    #@TestPreamble        none
    #@TestStep            TODO.
    #@TestPostamble       none
    #@TestResult          TODO.
  -->
  <function name="snmp_traps_custom_001" scope="local">
    <testcase name="getTestCaseName('Change the community property')">
      <sequence>
        <try>
          <sequence>
            <call function="'testCase_Preamble'"/>
            <call function="'testStep'">
              { 'stepMessage' : 'Change the community property' }
            </call>
            <call function="'dsconfig'">
              {
              'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
              'dsInstanceDn'     : DIRECTORY_INSTANCE_DN ,
              'dsInstancePswd'   : DIRECTORY_INSTANCE_PSWD ,
              'subcommand'       : 'set-connection-handler-prop' ,
              'objectType'       : 'handler-name' ,
              'objectName'       : 'SNMP Connection Handler' ,
              'optionsString'    : '--set traps-community:%s' \
                                   % newTrapsCommunityProp
              }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : 'Restart the SNMP Connection Handler' }
            </call>
            <call function="'restartSNMPConnectionHandler'">
              {
              'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
              'dsInstanceDn'     : DIRECTORY_INSTANCE_DN ,
              'dsInstancePswd'   : DIRECTORY_INSTANCE_PSWD
              }
            </call>
            <timer duration="timerDuration2">
              <sequence>
                <parallel>
                  <sequence>
                    <call function="'testStep'">
                      { 'stepMessage' : 'Run the trap listener' }
                    </call>
                    <call function="'SNMPTrapListener'">
                      {
                      'location'          : STAF_REMOTE_HOSTNAME ,
                      'snmpHost'          : DIRECTORY_INSTANCE_HOST ,
                      'snmpTrapPort'      : SNMP_TRAP_PORT ,
                      'snmpTrapCommunity' : defTrapsCommunityProp ,
                      'snmpTrapNumber'    : '0,2,0,0,0,0' ,
                      'outputFile'        : outputFile2 ,
                      'knownIssue'        : '3435'
                      }
                    </call>
                  </sequence>
                  <sequence>
                    <call function="'testStep'">
                      { 'stepMessage' : 'Wait event from the trap listener' }
                    </call>
                    <call function="'WaitEvent'">
                      {
                      'location' : STAF_REMOTE_HOSTNAME ,
                      'name'     : 'SNMPTrapListener/Ready'
                      }
                    </call>
                    <call function="'testStep'">
                      { 'stepMessage' : 'Delete event from the trap listener' }
                    </call>
                    <call function="'DeleteEvent'">
                      {
                      'location' : STAF_REMOTE_HOSTNAME ,
                      'name'     : 'SNMPTrapListener/Ready'
                      }
                    </call>
                    <call function="'testStep'">
                      { 'stepMessage' : 'Restart the server' }
                    </call>
                    <call function="'StopDsWithScript'">
                      { 'location'  : STAF_REMOTE_HOSTNAME }
                    </call>
                    <call function="'StartDsWithScript'">
                      { 'location'  : STAF_REMOTE_HOSTNAME }
                    </call>
                    <!--- Check that DS started -->
                    <call function="'isAlive'">
                      {
                      'noOfLoops'        : 10 ,
                      'noOfMilliSeconds' : 2000
                      }
                    </call>
                    <call function="'testStep'">
                      { 'stepMessage' : 'Send event to the trap listener' }
                    </call>
                    <call function="'SendEvent'">
                      {
                      'location' : STAF_REMOTE_HOSTNAME ,
                      'name'     : 'SendTrap/Complete'
                      }
                    </call>
                  </sequence>
                </parallel>
              </sequence>
            </timer>
            <script>timerRC2 = RC</script>
            <call function="'checkTimerResult'">
              {
              'location'      : STAF_REMOTE_HOSTNAME ,
              'outputFile'    : outputFile2 ,
              'timerDuration' : timerDuration2 ,
              'timerRC'       : timerRC2
              }
            </call>
            <timer duration="timerDuration2">
              <sequence>
                <parallel>
                  <sequence>
                    <call function="'testStep'">
                      { 'stepMessage' : 'Run the trap listener' }
                    </call>
                    <call function="'SNMPTrapListener'">
                      {
                      'location'          : STAF_REMOTE_HOSTNAME ,
                      'snmpHost'          : DIRECTORY_INSTANCE_HOST ,
                      'snmpTrapPort'      : SNMP_TRAP_PORT ,
                      'snmpTrapCommunity' : newTrapsCommunityProp ,
                      'snmpTrapNumber'    : '2,0,0,0,0,0' ,
                      'outputFile'        : outputFile2 ,
                      'knownIssue'       : '3435'
                      }
                    </call>
                  </sequence>
                  <sequence>
                    <call function="'testStep'">
                      { 'stepMessage' : 'Wait event from the trap listener' }
                    </call>
                    <call function="'WaitEvent'">
                      {
                      'location' : STAF_REMOTE_HOSTNAME ,
                      'name'     : 'SNMPTrapListener/Ready'
                      }
                    </call>
                    <call function="'testStep'">
                      { 'stepMessage' : 'Delete event from the trap listener' }
                    </call>
                    <call function="'DeleteEvent'">
                      {
                      'location' : STAF_REMOTE_HOSTNAME ,
                      'name'     : 'SNMPTrapListener/Ready'
                      }
                    </call>
                    <call function="'testStep'">
                      { 'stepMessage' : 'Restart the server' }
                    </call>
                    <call function="'StopDsWithScript'">
                      { 'location'  : STAF_REMOTE_HOSTNAME }
                    </call>
                    <call function="'StartDsWithScript'">
                      { 'location'  : STAF_REMOTE_HOSTNAME }
                    </call>
                    <!--- Check that DS started -->
                    <call function="'isAlive'">
                      {
                      'noOfLoops'        : 10 ,
                      'noOfMilliSeconds' : 2000
                      }
                    </call>
                    <call function="'testStep'">
                      { 'stepMessage' : 'Send event to the trap listener' }
                    </call>
                    <call function="'SendEvent'">
                      {
                      'location' : STAF_REMOTE_HOSTNAME ,
                      'name'     : 'SendTrap/Complete'
                      }
                    </call>
                  </sequence>
                </parallel>
              </sequence>
            </timer>
            <script>timerRC2 = RC</script>
            <call function="'checkTimerResult'">
              {
              'location'      : STAF_REMOTE_HOSTNAME ,
              'outputFile'    : outputFile2 ,
              'timerDuration' : timerDuration2 ,
              'timerRC'       : timerRC2
              }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : 'Restore the traps-community property' }
            </call>
            <call function="'dsconfig'">
              {
              'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
              'dsInstanceDn'     : DIRECTORY_INSTANCE_DN ,
              'dsInstancePswd'   : DIRECTORY_INSTANCE_PSWD ,
              'subcommand'       : 'set-connection-handler-prop' ,
              'objectType'       : 'handler-name' ,
              'objectName'       : 'SNMP Connection Handler' ,
              'optionsString'    : '--set traps-community:%s' \
                                   % defTrapsCommunityProp
              }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : 'Restart the SNMP Connection Handler' }
            </call>
            <call function="'restartSNMPConnectionHandler'">
              {
              'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
              'dsInstanceDn'     : DIRECTORY_INSTANCE_DN ,
              'dsInstancePswd'   : DIRECTORY_INSTANCE_PSWD
              }
            </call>
          </sequence>
          <catch exception="'STAXException'" typevar="eType" var="eInfo">
            <message log="1" level="'fatal'">
              '%s: Test failed. eInfo(%s)' % (eType,eInfo)
            </message>
          </catch>
          <finally>
            <sequence>
              <call function="'testCase_Postamble'"/>
            </sequence>
          </finally>
        </try>
      </sequence>
    </testcase>
  </function>
  <!--- Test Case information
    #@TestMarker          SNMP traps with custom configuration
    #@TestName            traps_customconf: TODO
    #@TestIssue           3435
    #@TestPurpose         TODO.
    #@TestPreamble        none
    #@TestStep            TODO.
    #@TestPostamble       none
    #@TestResult          TODO.
  -->
  <function name="snmp_traps_custom_002" scope="local">
    <testcase name="getTestCaseName('Set traps-destination property to correct value')">
      <sequence>
        <try>
          <sequence>
            <call function="'testCase_Preamble'"/>
            <call function="'testStep'">
              { 'stepMessage' : 'Change the traps-destination property' }
            </call>
            <call function="'dsconfig'">
              {
              'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
              'dsInstanceDn'     : DIRECTORY_INSTANCE_DN ,
              'dsInstancePswd'   : DIRECTORY_INSTANCE_PSWD ,
              'subcommand'       : 'set-connection-handler-prop' ,
              'objectType'       : 'handler-name' ,
              'objectName'       : 'SNMP Connection Handler' ,
              'optionsString'    : '--set traps-destination:%s' \
                                   % newTrapsDestProp
              }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : 'Restart the SNMP Connection Handler' }
            </call>
            <call function="'restartSNMPConnectionHandler'">
              {
              'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
              'dsInstanceDn'     : DIRECTORY_INSTANCE_DN ,
              'dsInstancePswd'   : DIRECTORY_INSTANCE_PSWD
              }
            </call>
            <timer duration="timerDuration2">
              <sequence>
                <parallel>
                  <sequence>
                    <call function="'testStep'">
                      { 'stepMessage' : 'Run the trap listener' }
                    </call>
                    <call function="'SNMPTrapListener'">
                      {
                      'location'          : STAF_REMOTE_HOSTNAME ,
                      'snmpHost'          : DIRECTORY_INSTANCE_HOST ,
                      'snmpTrapPort'      : SNMP_TRAP_PORT ,
                      'snmpTrapCommunity' : defTrapsCommunityProp ,
                      'snmpTrapNumber'    : '2,0,0,0,0,0' ,
                      'outputFile'        : outputFile2 ,
                      'knownIssue'        : '3435'
                      }
                    </call>
                  </sequence>
                  <sequence>
                    <call function="'testStep'">
                      { 'stepMessage' : 'Wait event from the trap listener' }
                    </call>
                    <call function="'WaitEvent'">
                      {
                      'location' : STAF_REMOTE_HOSTNAME ,
                      'name'     : 'SNMPTrapListener/Ready'
                      }
                    </call>
                    <call function="'testStep'">
                      { 'stepMessage' : 'Delete event from the trap listener' }
                    </call>
                    <call function="'DeleteEvent'">
                      {
                      'location' : STAF_REMOTE_HOSTNAME ,
                      'name'     : 'SNMPTrapListener/Ready'
                      }
                    </call>
                    <call function="'testStep'">
                      { 'stepMessage' : 'Restart the server' }
                    </call>
                    <call function="'StopDsWithScript'">
                      { 'location'  : STAF_REMOTE_HOSTNAME }
                    </call>
                    <call function="'StartDsWithScript'">
                      { 'location'  : STAF_REMOTE_HOSTNAME }
                    </call>
                    <!--- Check that DS started -->
                    <call function="'isAlive'">
                      {
                      'noOfLoops'        : 10 ,
                      'noOfMilliSeconds' : 2000
                      }
                    </call>
                    <call function="'testStep'">
                      { 'stepMessage' : 'Send event to the trap listener' }
                    </call>
                    <call function="'SendEvent'">
                      {
                      'location' : STAF_REMOTE_HOSTNAME ,
                      'name'     : 'SendTrap/Complete'
                      }
                    </call>
                  </sequence>
                </parallel>
              </sequence>
            </timer>
            <script>timerRC2 = RC</script>
            <call function="'checkTimerResult'">
              {
              'location'      : STAF_REMOTE_HOSTNAME ,
              'outputFile'    : outputFile2 ,
              'timerDuration' : timerDuration2 ,
              'timerRC'       : timerRC2
              }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : 'Restore the traps-destination property' }
            </call>
            <call function="'dsconfig'">
              {
              'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
              'dsInstanceDn'     : DIRECTORY_INSTANCE_DN ,
              'dsInstancePswd'   : DIRECTORY_INSTANCE_PSWD ,
              'subcommand'       : 'set-connection-handler-prop' ,
              'objectType'       : 'handler-name' ,
              'objectName'       : 'SNMP Connection Handler' ,
              'optionsString'    : '--reset traps-destination'
              }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : 'Restart the SNMP Connection Handler' }
            </call>
            <call function="'restartSNMPConnectionHandler'">
              {
              'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
              'dsInstanceDn'     : DIRECTORY_INSTANCE_DN ,
              'dsInstancePswd'   : DIRECTORY_INSTANCE_PSWD
              }
            </call>
          </sequence>
          <catch exception="'STAXException'" typevar="eType" var="eInfo">
            <message log="1" level="'fatal'">
              '%s: Test failed. eInfo(%s)' % (eType,eInfo)
            </message>
          </catch>
          <finally>
            <sequence>
              <call function="'testCase_Postamble'"/>
            </sequence>
          </finally>
        </try>
      </sequence>
    </testcase>
  </function>
  <!--- Test Case information
    #@TestMarker          SNMP traps with custom configuration
    #@TestName            traps_customconf: TODO
    #@TestIssue           none
    #@TestPurpose         TODO.
    #@TestPreamble        none
    #@TestStep            TODO.
    #@TestPostamble       none
    #@TestResult          TODO.
  -->
  <function name="snmp_traps_custom_003" scope="local">
    <testcase name="getTestCaseName('Set traps-destination property to a wrong value')">
      <sequence>
        <try>
          <sequence>
            <call function="'testCase_Preamble'"/>
            <call function="'testStep'">
              { 'stepMessage' : 'Change the traps-destination property' }
            </call>
            <call function="'dsconfig'">
              {
              'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
              'dsInstanceDn'     : DIRECTORY_INSTANCE_DN ,
              'dsInstancePswd'   : DIRECTORY_INSTANCE_PSWD ,
              'subcommand'       : 'set-connection-handler-prop' ,
              'objectType'       : 'handler-name' ,
              'objectName'       : 'SNMP Connection Handler' ,
              'optionsString'    : '--set traps-destination:%s' \
                                   % wrongTrapsDestProp
              }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : 'Restart the SNMP Connection Handler' }
            </call>
            <call function="'restartSNMPConnectionHandler'">
              {
              'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
              'dsInstanceDn'     : DIRECTORY_INSTANCE_DN ,
              'dsInstancePswd'   : DIRECTORY_INSTANCE_PSWD
              }
            </call>
            <timer duration="timerDuration2">
              <sequence>
                <parallel>
                  <sequence>
                    <call function="'testStep'">
                      { 'stepMessage' : 'Run the trap listener' }
                    </call>
                    <call function="'SNMPTrapListener'">
                      {
                      'location'          : STAF_REMOTE_HOSTNAME ,
                      'snmpHost'          : DIRECTORY_INSTANCE_HOST ,
                      'snmpTrapPort'      : SNMP_TRAP_PORT ,
                      'snmpTrapCommunity' : defTrapsCommunityProp ,
                      'snmpTrapNumber'    : '0,0,0,0,0,0' ,
                      'outputFile'        : outputFile2
                      }
                    </call>
                  </sequence>
                  <sequence>
                    <call function="'testStep'">
                      { 'stepMessage' : 'Wait event from the trap listener' }
                    </call>
                    <call function="'WaitEvent'">
                      {
                      'location' : STAF_REMOTE_HOSTNAME ,
                      'name'     : 'SNMPTrapListener/Ready'
                      }
                    </call>
                    <call function="'testStep'">
                      { 'stepMessage' : 'Delete event from the trap listener' }
                    </call>
                    <call function="'DeleteEvent'">
                      {
                      'location' : STAF_REMOTE_HOSTNAME ,
                      'name'     : 'SNMPTrapListener/Ready'
                      }
                    </call>
                    <call function="'testStep'">
                      { 'stepMessage' : 'Restart the server' }
                    </call>
                    <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="'StartDsWithScript'">
                      { 'location' : STAF_REMOTE_HOSTNAME }
                    </call>
                    <!--- Check that DS started -->
                    <call function="'isAlive'">
                      {
                      'noOfLoops'        : 10 ,
                      'noOfMilliSeconds' : 2000
                      }
                    </call>
                    <script>
                      msg1 = 'Traps Destination %s is an unknown host.' \
                             % wrongTrapsDestProp
                      msg2 = 'Traps will not be sent to this destination'
                      msg = '%s %s' % (msg1, msg2)
                    </script>
                    <call function="'grep'">
                      {
                      'location'  : STAF_REMOTE_HOSTNAME ,
                      'filename'  : serverLogFile ,
                      'testString': msg
                      }
                    </call>
                    <script>
                      msg1 = 'No valid trap destinations has been found.'
                      msg2 = 'No trap will be sent'
                      msg = '%s %s' % (msg1, msg2)
                    </script>
                    <call function="'grep'">
                      {
                      'location'  : STAF_REMOTE_HOSTNAME ,
                      'filename'  : serverLogFile ,
                      'testString': msg
                      }
                    </call>
                    <call function="'testStep'">
                      { 'stepMessage' : 'Send event to the trap listener' }
                    </call>
                    <call function="'SendEvent'">
                      {
                      'location' : STAF_REMOTE_HOSTNAME ,
                      'name'     : 'SendTrap/Complete'
                      }
                    </call>
                  </sequence>
                </parallel>
              </sequence>
            </timer>
            <script>timerRC2 = RC</script>
            <call function="'checkTimerResult'">
              {
              'location'      : STAF_REMOTE_HOSTNAME ,
              'outputFile'    : outputFile2 ,
              'timerDuration' : timerDuration2 ,
              'timerRC'       : timerRC2
              }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : 'Restore the traps-destination property' }
            </call>
            <call function="'dsconfig'">
              {
              'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
              'dsInstanceDn'     : DIRECTORY_INSTANCE_DN ,
              'dsInstancePswd'   : DIRECTORY_INSTANCE_PSWD ,
              'subcommand'       : 'set-connection-handler-prop' ,
              'objectType'       : 'handler-name' ,
              'objectName'       : 'SNMP Connection Handler' ,
              'optionsString'    : '--reset traps-destination'
              }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : 'Restart the SNMP Connection Handler' }
            </call>
            <call function="'restartSNMPConnectionHandler'">
              {
              'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
              'dsInstanceDn'     : DIRECTORY_INSTANCE_DN ,
              'dsInstancePswd'   : DIRECTORY_INSTANCE_PSWD
              }
            </call>
          </sequence>
          <catch exception="'STAXException'" typevar="eType" var="eInfo">
            <message log="1" level="'fatal'">
              '%s: Test failed. eInfo(%s)' % (eType,eInfo)
            </message>
          </catch>
          <finally>
            <sequence>
              <call function="'testCase_Postamble'"/>
            </sequence>
          </finally>
        </try>
      </sequence>
    </testcase>
  </function>
  <!--- Test Case information
    #@TestMarker          SNMP traps with custom configuration
    #@TestName            traps_customconf: TODO
    #@TestIssue           3435
    #@TestPurpose         TODO.
    #@TestPreamble        none
    #@TestStep            TODO.
    #@TestPostamble       none
    #@TestResult          TODO.
  -->
  <function name="snmp_traps_custom_004" scope="local">
    <testcase name="getTestCaseName('Set traps-destination property to a list')">
      <sequence>
        <try>
          <sequence>
            <call function="'testCase_Preamble'"/>
            <call function="'testStep'">
              { 'stepMessage' : 'Set traps-destination property to a list' }
            </call>
            <call function="'dsconfig'">
              {
              'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
              'dsInstanceDn'     : DIRECTORY_INSTANCE_DN ,
              'dsInstancePswd'   : DIRECTORY_INSTANCE_PSWD ,
              'subcommand'       : 'set-connection-handler-prop' ,
              'objectType'       : 'handler-name' ,
              'objectName'       : 'SNMP Connection Handler' ,
              'optionsString'    : '--set traps-destination:%s' \
                                   % wrongTrapsDestProp
              }
            </call>
            <call function="'dsconfig'">
              {
              'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
              'dsInstanceDn'     : DIRECTORY_INSTANCE_DN ,
              'dsInstancePswd'   : DIRECTORY_INSTANCE_PSWD ,
              'subcommand'       : 'set-connection-handler-prop' ,
              'objectType'       : 'handler-name' ,
              'objectName'       : 'SNMP Connection Handler' ,
              'optionsString'    : '--add traps-destination:%s' \
                                   % newTrapsDestProp
              }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : 'Restart the SNMP Connection Handler' }
            </call>
            <call function="'restartSNMPConnectionHandler'">
              {
              'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
              'dsInstanceDn'     : DIRECTORY_INSTANCE_DN ,
              'dsInstancePswd'   : DIRECTORY_INSTANCE_PSWD
              }
            </call>
            <timer duration="timerDuration2">
              <sequence>
                <parallel>
                  <sequence>
                    <call function="'testStep'">
                      { 'stepMessage' : 'Run the trap listener' }
                    </call>
                    <call function="'SNMPTrapListener'">
                      {
                      'location'          : STAF_REMOTE_HOSTNAME ,
                      'snmpHost'          : DIRECTORY_INSTANCE_HOST ,
                      'snmpTrapPort'      : SNMP_TRAP_PORT ,
                      'snmpTrapCommunity' : defTrapsCommunityProp ,
                      'snmpTrapNumber'    : '2,0,0,0,0,0' ,
                      'outputFile'        : outputFile2 ,
                      'knownIssue'        : '3435'
                      }
                    </call>
                  </sequence>
                  <sequence>
                    <call function="'testStep'">
                      { 'stepMessage' : 'Wait event from the trap listener' }
                    </call>
                    <call function="'WaitEvent'">
                      {
                      'location' : STAF_REMOTE_HOSTNAME ,
                      'name'     : 'SNMPTrapListener/Ready'
                      }
                    </call>
                    <call function="'testStep'">
                      { 'stepMessage' : 'Delete event from the trap listener' }
                    </call>
                    <call function="'DeleteEvent'">
                      {
                      'location' : STAF_REMOTE_HOSTNAME ,
                      'name'     : 'SNMPTrapListener/Ready'
                      }
                    </call>
                    <call function="'testStep'">
                      { 'stepMessage' : 'Restart the server' }
                    </call>
                    <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="'StartDsWithScript'">
                      { 'location' : STAF_REMOTE_HOSTNAME }
                    </call>
                    <!--- Check that DS started -->
                    <call function="'isAlive'">
                      {
                      'noOfLoops'        : 10 ,
                      'noOfMilliSeconds' : 2000
                      }
                    </call>
                    <script>
                      msg1 = 'Traps Destination %s is an unknown host.' \
                             % wrongTrapsDestProp
                      msg2 = 'Traps will not be sent to this destination'
                      msg = '%s %s' % (msg1, msg2)
                    </script>
                    <call function="'grep'">
                      {
                      'location'  : STAF_REMOTE_HOSTNAME ,
                      'filename'  : serverLogFile ,
                      'testString': msg
                      }
                    </call>
                    <call function="'testStep'">
                      { 'stepMessage' : 'Send event to the trap listener' }
                    </call>
                    <call function="'SendEvent'">
                      {
                      'location' : STAF_REMOTE_HOSTNAME ,
                      'name'     : 'SendTrap/Complete'
                      }
                    </call>
                  </sequence>
                </parallel>
              </sequence>
            </timer>
            <script>timerRC2 = RC</script>
            <call function="'checkTimerResult'">
              {
              'location'      : STAF_REMOTE_HOSTNAME ,
              'outputFile'    : outputFile2 ,
              'timerDuration' : timerDuration2 ,
              'timerRC'       : timerRC2
              }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : 'Restore the traps-destination property' }
            </call>
            <call function="'dsconfig'">
              {
              'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
              'dsInstanceDn'     : DIRECTORY_INSTANCE_DN ,
              'dsInstancePswd'   : DIRECTORY_INSTANCE_PSWD ,
              'subcommand'       : 'set-connection-handler-prop' ,
              'objectType'       : 'handler-name' ,
              'objectName'       : 'SNMP Connection Handler' ,
              'optionsString'    : '--reset traps-destination'
              }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : 'Restart the SNMP Connection Handler' }
            </call>
            <call function="'restartSNMPConnectionHandler'">
              {
              'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
              'dsInstanceDn'     : DIRECTORY_INSTANCE_DN ,
              'dsInstancePswd'   : DIRECTORY_INSTANCE_PSWD
              }
            </call>
          </sequence>
          <catch exception="'STAXException'" typevar="eType" var="eInfo">
            <message log="1" level="'fatal'">
              '%s: Test failed. eInfo(%s)' % (eType,eInfo)
            </message>
          </catch>
          <finally>
            <sequence>
              <call function="'testCase_Postamble'"/>
            </sequence>
          </finally>
        </try>
      </sequence>
    </testcase>
  </function>
  <!--- Test Case information
    #@TestMarker          SNMP traps with custom configuration
    #@TestName            traps_customconf: TODO
    #@TestIssue           none
    #@TestPurpose         TODO.
    #@TestPreamble        none
    #@TestStep            TODO.
    #@TestPostamble       none
    #@TestResult          TODO.
  -->
  <function name="snmp_traps_custom_005" scope="local">
    <testcase name="getTestCaseName('Set the traps-community property to a list')">
      <sequence>
        <try>
          <sequence>
            <call function="'testCase_Preamble'"/>
            <call function="'testStep'">
              { 'stepMessage' : 'Set the traps-community property to a list' }
            </call>
            <call function="'dsconfig'">
              {
              'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
              'dsInstanceDn'     : DIRECTORY_INSTANCE_DN ,
              'dsInstancePswd'   : DIRECTORY_INSTANCE_PSWD ,
              'subcommand'       : 'set-connection-handler-prop' ,
              'objectType'       : 'handler-name' ,
              'objectName'       : 'SNMP Connection Handler' ,
              'optionsString'    : '--add traps-community:%s' \
                                   % newTrapsCommunityProp ,
              'expectedRC'       : 1
              }
            </call>
            <script>
              returnString = STAXResult[0][1]
              returnString = STAXResult[0][1]
              msg1 = 'It is not possible to specify multiple values for the'
              msg2 = 'SNMP Connection Handler%sproperty "traps-community"' \
                     % newLine
              msg3 = 'as it is single-valued'
              msg = '%s %s %s' % (msg1, msg2, msg3)
            </script>
            <call function="'checktestString'">
              {
              'returnString'   : returnString ,
              'expectedString' : msg
              }
            </call>
          </sequence>
          <catch exception="'STAXException'" typevar="eType" var="eInfo">
            <message log="1" level="'fatal'">
              '%s: Test failed. eInfo(%s)' % (eType,eInfo)
            </message>
          </catch>
          <finally>
            <sequence>
              <call function="'testCase_Postamble'"/>
            </sequence>
          </finally>
        </try>
      </sequence>
    </testcase>
  </function>
</stax>
opends/tests/staf-tests/functional-tests/testcases/snmp/traps/snmp_traps_defaultconf_tests.xml
New file
@@ -0,0 +1,403 @@
<?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-2010 Sun Microsystems, Inc.
 !      Portions Copyright 2012 ForgeRock AS
 ! -->
<stax>
  <!--- Test Case information
    #@TestMarker          SNMP traps with default configuration
    #@TestName            traps_defaultconf: traps on stop-ds
    #@TestIssue           3435
    #@TestPurpose         Check that a trap is sent on default trap
                          community after stop-ds command.
    #@TestPreamble        none
    #@TestStep            Run the trap listener, it send an event to
                          notify that it is ready.
    #@TestStep            When this event is received, stop-ds command
                          is executed and a another event is sent to
                          notify that the command is completed.
    #@TestStep            The trap listener catches this event and send
                          a result.
    #@TestPostamble       none
    #@TestResult          Success if SNMPTrapListener returns 0.
  -->
  <function name="snmp_traps_default_001" scope="local">
    <testcase name="getTestCaseName('Trap on stop-ds')">
      <sequence>
        <try>
          <sequence>
            <call function="'testCase_Preamble'"/>
            <timer duration="timerDuration">
              <sequence>
                <parallel>
                  <sequence>
                    <call function="'testStep'">
                      { 'stepMessage' : 'Run the trap listener' }
                    </call>
                    <call function="'SNMPTrapListener'">
                      {
                      'location'          : STAF_REMOTE_HOSTNAME ,
                      'snmpHost'          : DIRECTORY_INSTANCE_HOST ,
                      'snmpTrapPort'      : SNMP_TRAP_PORT ,
                      'snmpTrapCommunity' : trapsCommunity ,
                      'snmpTrapNumber'    : '1,0,0,0,0,0' ,
                      'outputFile'        : outputFile ,
                      'knownIssue'        : '3435'
                      }
                    </call>
                  </sequence>
                  <sequence>
                    <call function="'testStep'">
                      { 'stepMessage' : 'Wait event from the trap listener' }
                    </call>
                    <call function="'WaitEvent'">
                      {
                      'location' : STAF_REMOTE_HOSTNAME ,
                      'name'     : 'SNMPTrapListener/Ready'
                      }
                    </call>
                    <call function="'testStep'">
                      { 'stepMessage' : 'Delete event from the trap listener' }
                    </call>
                    <call function="'DeleteEvent'">
                      {
                      'location' : STAF_REMOTE_HOSTNAME ,
                      'name'     : 'SNMPTrapListener/Ready'
                      }
                    </call>
                    <call function="'testStep'">
                      { 'stepMessage' : 'Stop the server' }
                    </call>
                    <call function="'StopDsWithScript'">
                      { 'location' : STAF_REMOTE_HOSTNAME }
                    </call>
                    <call function="'testStep'">
                      { 'stepMessage' : 'Send event to the trap listener' }
                    </call>
                    <call function="'SendEvent'">
                      {
                      'location' : STAF_REMOTE_HOSTNAME ,
                      'name'     : 'SendTrap/Complete'
                      }
                    </call>
                  </sequence>
                </parallel>
              </sequence>
            </timer>
            <script>timerRC = RC</script>
            <call function="'checkTimerResult'">
              {
              'location'      : STAF_REMOTE_HOSTNAME ,
              'outputFile'    : outputFile ,
              'timerDuration' : timerDuration ,
              'timerRC'       : timerRC
              }
            </call>
          </sequence>
          <catch exception="'STAXException'" typevar="eType" var="eInfo">
            <message log="1" level="'fatal'">
              '%s: Test failed. eInfo(%s)' % (eType,eInfo)
            </message>
          </catch>
          <finally>
            <sequence>
              <call function="'testCase_Postamble'"/>
            </sequence>
          </finally>
        </try>
      </sequence>
    </testcase>
  </function>
  <!--- Test Case information
    #@TestMarker          SNMP traps with default configuration
    #@TestName            traps_defaultconf: trap on start-ds
    #@TestIssue           none
    #@TestPurpose         Check that a trap is sent on default trap
                          community after start-ds command.
    #@TestPreamble        none
    #@TestStep            Run the trap listener, it send an event to
                          notify that it is ready.
    #@TestStep            When this event is received, start-ds command
                          is executed and a another event is sent to
                          notify that the command is completed.
    #@TestStep            The trap listener catches this event and send
                          a result.
    #@TestPostamble       none
    #@TestResult          Success if SNMPTrapListener returns 0.
  -->
  <function name="snmp_traps_default_002" scope="local">
    <testcase name="getTestCaseName('Trap on start-ds')">
      <sequence>
        <try>
          <sequence>
            <call function="'testCase_Preamble'"/>
            <timer duration="timerDuration">
              <sequence>
                <parallel>
                  <sequence>
                    <call function="'testStep'">
                      { 'stepMessage' : 'Run the trap listener' }
                    </call>
                    <call function="'SNMPTrapListener'">
                      {
                      'snmpHost'          : DIRECTORY_INSTANCE_HOST ,
                      'snmpTrapPort'      : SNMP_TRAP_PORT ,
                      'snmpTrapCommunity' : trapsCommunity ,
                      'snmpTrapNumber'    : '1,0,0,0,0,0' ,
                      'outputFile'        : outputFile
                      }
                    </call>
                  </sequence>
                  <sequence>
                    <call function="'testStep'">
                      { 'stepMessage' : 'Wait event from the trap listener' }
                    </call>
                    <call function="'WaitEvent'">
                      {
                      'location' : STAF_REMOTE_HOSTNAME ,
                      'name'     : 'SNMPTrapListener/Ready'
                      }
                    </call>
                    <call function="'testStep'">
                      { 'stepMessage' : 'Delete event from the trap listener' }
                    </call>
                    <call function="'DeleteEvent'">
                      {
                      'location' : STAF_REMOTE_HOSTNAME ,
                      'name'     : 'SNMPTrapListener/Ready'
                      }
                    </call>
                    <call function="'testStep'">
                      { 'stepMessage' : 'Start the server' }
                    </call>
                    <call function="'StartDsWithScript'">
                      { 'location' : STAF_REMOTE_HOSTNAME }
                    </call>
                    <!--- Check that DS started -->
                    <call function="'isAlive'">
                      {
                      'noOfLoops'        : 10 ,
                      'noOfMilliSeconds' : 2000
                      }
                    </call>
                    <call function="'testStep'">
                      { 'stepMessage' : 'Send event to the trap listener' }
                    </call>
                    <call function="'SendEvent'">
                      {
                      'location' : STAF_REMOTE_HOSTNAME ,
                      'name'     : 'SendTrap/Complete'
                      }
                    </call>
                  </sequence>
                </parallel>
              </sequence>
            </timer>
            <script>timerRC = RC</script>
            <call function="'checkTimerResult'">
              {
              'location'      : STAF_REMOTE_HOSTNAME ,
              'outputFile'    : outputFile ,
              'timerDuration' : timerDuration ,
              'timerRC'       : timerRC
              }
            </call>
          </sequence>
          <catch exception="'STAXException'" typevar="eType" var="eInfo">
            <message log="1" level="'fatal'">
              '%s: Test failed. eInfo(%s)' % (eType,eInfo)
            </message>
          </catch>
          <finally>
            <sequence>
              <call function="'testCase_Postamble'"/>
            </sequence>
          </finally>
        </try>
      </sequence>
    </testcase>
  </function>
  <!--- Test Case information
    #@TestMarker          SNMP traps with default configuration
    #@TestName            traps_defaultconf: trap on stop-ds -R
    #@TestIssue           3435
    #@TestPurpose         Check that 2 traps are sent on default trap
                          community after stop-ds -R command.
    #@TestPreamble        none
    #@TestStep            Run the trap listener, it send an event to
                          notify that it is ready.
    #@TestStep            When this event is received, stop-ds -R
                          command is executed and a another event is
                          sent to notify that the command is completed.
    #@TestStep            The trap listener catches this event and send
                          a result.
    #@TestPostamble       none
    #@TestResult          Success if SNMPTrapListener returns 0.
  -->
  <function name="snmp_traps_default_003" scope="local">
    <testcase name="getTestCaseName('Trap on stop-ds -R')">
      <sequence>
        <try>
          <sequence>
            <call function="'testCase_Preamble'"/>
            <timer duration="timerDuration">
              <sequence>
                <parallel>
                  <sequence>
                    <call function="'testStep'">
                      { 'stepMessage' : 'Run the trap listener' }
                    </call>
                    <call function="'SNMPTrapListener'">
                      {
                      'snmpHost'          : DIRECTORY_INSTANCE_HOST ,
                      'snmpTrapPort'      : SNMP_TRAP_PORT ,
                      'snmpTrapCommunity' : trapsCommunity ,
                      'snmpTrapNumber'    : '2,0,0,0,0,0' ,
                      'outputFile'        : outputFile ,
                      'knownIssue'        : '3435'
                      }
                    </call>
                  </sequence>
                  <sequence>
                    <call function="'testStep'">
                      { 'stepMessage' : 'Wait event from the trap listener' }
                    </call>
                    <call function="'WaitEvent'">
                      {
                      'location' : STAF_REMOTE_HOSTNAME ,
                      'name'     : 'SNMPTrapListener/Ready'
                      }
                    </call>
                    <call function="'testStep'">
                      { 'stepMessage' : 'Delete event from the trap listener' }
                    </call>
                    <call function="'DeleteEvent'">
                      {
                      'location' : STAF_REMOTE_HOSTNAME ,
                      'name'     : 'SNMPTrapListener/Ready'
                      }
                    </call>
                    <call function="'testStep'">
                      { 'stepMessage' : 'Restart the server' }
                    </call>
                    <call function="'StopDsWithScript'">
                      { 'location'  : STAF_REMOTE_HOSTNAME }
                    </call>
                    <call function="'StartDsWithScript'">
                      { 'location'  : STAF_REMOTE_HOSTNAME }
                    </call>
                    <!--- Check that DS started -->
                    <call function="'isAlive'">
                      {
                      'noOfLoops'        : 10 ,
                      'noOfMilliSeconds' : 2000
                      }
                    </call>
                    <call function="'testStep'">
                      { 'stepMessage' : 'Send event to the trap listener' }
                    </call>
                    <call function="'SendEvent'">
                      {
                      'location' : STAF_REMOTE_HOSTNAME ,
                      'name'     : 'SendTrap/Complete'
                      }
                    </call>
                  </sequence>
                </parallel>
              </sequence>
            </timer>
            <script>timerRC = RC</script>
            <call function="'checkTimerResult'">
              {
              'location'      : STAF_REMOTE_HOSTNAME ,
              'outputFile'    : outputFile ,
              'timerDuration' : timerDuration ,
              'timerRC'       : timerRC
              }
            </call>
          </sequence>
          <catch exception="'STAXException'" typevar="eType" var="eInfo">
            <message log="1" level="'fatal'">
              '%s: Test failed. eInfo(%s)' % (eType,eInfo)
            </message>
          </catch>
          <finally>
            <sequence>
              <call function="'testCase_Postamble'"/>
            </sequence>
          </finally>
        </try>
      </sequence>
    </testcase>
  </function>
</stax>
opends/tests/staf-tests/functional-tests/testcases/snmp/v1/snmp_v1.xml
New file
@@ -0,0 +1,149 @@
<?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/CDDLv1_0.txt
 ! or http://forgerock.org/license/CDDLv1.0.html.
 ! 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/CDDLv1_0.txt.  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 2012 ForgeRock AS.
 ! -->
<stax>
  <defaultcall function="main_snmp_v1"/>
  <function name="main_snmp_v1" scope="local">
    <sequence>
      <block name="'main_snmp_v1'">
        <try>
          <sequence>
            <script>
              CurrentTestPath['group']='snmp'
              CurrentTestPath['suite']='v1'
              __group=CurrentTestPath['group']
              __groupdir='%s/testcases/%s' % (TESTS_DIR,__group)
            </script>
            <!--- Test Suite information
            #@TestSuiteName       SNMP default properties test suite
            #@TestSuitePurpose    Verify SNMP default properties
            #@TestSuiteID         v1
            #@TestSuiteGroup      snmp
            #@TestGroup           snmp
            #@TestScript          snmp.xml
            #@TestHTMLLink        http://www.forgerock.org/
            -->
            <call function="'testSuite_Preamble'"/>
            <try>
              <sequence>
                <!-- List of Import of Test Functions -->
                <script>
                  importList=[]
                  importList.append('v1/snmp_v1_defaultconf_tests')
                  importList.append('v1/snmp_v1_customconf_tests')
                </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>
                <!-- Specific to v1 SNMP tests -->
                <script>
                  # Default
                  community = '%s@%s' \
                    % (SNMP_PROPERTIES['community'], SNMP_PROPERTIES['community'])
                  oid = 'dsServerType.1'
                  # Custom
                  defCommunityProp = SNMP_PROPERTIES['community']
                  defCommunity = '%s@%s' %(defCommunityProp, defCommunityProp)
                  defManagerProp = SNMP_PROPERTIES['allowed-manager']
                  newCommunityProp = 'myCommunity'
                  newCommunity = '%s@%s' %(newCommunityProp, newCommunityProp)
                  newManagerProp = DIRECTORY_INSTANCE_HOST
                  wrongManagerProp = 'myManager'
                  oid = 'dsServerType.1'
                </script>
                <!-- List of Test Cases -->
                <script>
                  testsList=[]
                  testsList.append('snmp_v1_default_001')
                  testsList.append('snmp_v1_default_002')
                  testsList.append('snmp_v1_default_003')
                  testsList.append('snmp_v1_default_004')
                  testsList.append('snmp_v1_custom_001')
                  testsList.append('snmp_v1_custom_002')
                  testsList.append('snmp_v1_custom_003')
                  testsList.append('snmp_v1_custom_004')
                  testsList.append('snmp_v1_custom_005')
                </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: Global Schema Cleanup.'</message>
              <try>
                <message>'No Test Suite Cleanup'</message>
              <catch exception="'STAFException'">
                <sequence>
                  <message log="1" level="'fatal'">'Cleanup of test suite failed.'</message>
                </sequence>
              </catch>
              <finally>
                <call function="'testSuite_Postamble'"/>
              </finally>
              </try>
            </sequence>
          </finally>
        </try>
      </block>
    </sequence>
  </function>
</stax>
opends/tests/staf-tests/functional-tests/testcases/snmp/v1/snmp_v1_customconf_tests.xml
New file
@@ -0,0 +1,695 @@
<?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-2009 Sun Microsystems, Inc.
 !      Portions Copyright 2012 ForgeRock AS
 ! -->
<stax>
  <!--- Test Case information
    #@TestMarker          SNMP v1 with custom configuration
    #@TestName            v1_customconf: TODO
    #@TestIssue           none
    #@TestPurpose         TODO.
    #@TestPreamble        none
    #@TestStep            TODO.
    #@TestPostamble       none
    #@TestResult          TODO.
  -->
  <function name="snmp_v1_custom_001" scope="local">
    <testcase name="getTestCaseName('v1 change the community property')">
      <sequence>
        <try>
          <sequence>
            <call function="'testCase_Preamble'"/>
            <!-- @Step1: Display default SNMP Connection Handler -->
            <call function="'testStep'">
              { 'stepMessage' : 'Display default SNMP Connection Handler.' }
            </call>
            <call function="'dsconfig'">
              {
                'dsInstanceHost' : DIRECTORY_INSTANCE_HOST ,
                'dsInstanceDn'   : DIRECTORY_INSTANCE_DN ,
                'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD ,
                'subcommand'     : 'get-connection-handler-prop' ,
                'objectType'     : 'handler-name' ,
                'objectName'     : 'SNMP Connection Handler'
              }
            </call>
            <!-- @Step2: Change the community property -->
            <call function="'testStep'">
              { 'stepMessage' : 'Change the community property.' }
            </call>
            <call function="'dsconfig'">
              {
              'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
              'dsInstanceDn'     : DIRECTORY_INSTANCE_DN ,
              'dsInstancePswd'   : DIRECTORY_INSTANCE_PSWD ,
              'subcommand'       : 'set-connection-handler-prop' ,
              'objectType'       : 'handler-name' ,
              'objectName'       : 'SNMP Connection Handler' ,
              'optionsString'    : '--set community:%s' % newCommunityProp
              }
            </call>
            <call function="'dsconfig'">
              {
                'dsInstanceHost' : DIRECTORY_INSTANCE_HOST ,
                'dsInstanceDn'   : DIRECTORY_INSTANCE_DN ,
                'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD ,
                'subcommand'     : 'get-connection-handler-prop' ,
                'objectType'     : 'handler-name' ,
                'objectName'     : 'SNMP Connection Handler'
              }
            </call>
            <!-- @Step3: Restart the SNMP Connection Handler -->
            <call function="'testStep'">
              { 'stepMessage' : 'Restart the SNMP Connection Handler.' }
            </call>
            <call function="'restartSNMPConnectionHandler'">
              {
              'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
              'dsInstanceDn'     : DIRECTORY_INSTANCE_DN ,
              'dsInstancePswd'   : DIRECTORY_INSTANCE_PSWD
              }
            </call>
            <!-- @Step4: SNMPGet with the old community -->
            <call function="'testStep'">
              { 'stepMessage' : 'SNMPGet with the old community.' }
            </call>
            <call function="'SNMPGet'">
              {
              'snmpVersion'   : '1',
              'snmpHost'      : DIRECTORY_INSTANCE_HOST ,
              'snmpPort'      : SNMP_PORT ,
              'snmpCommunity' : defCommunity ,
              'snmpOIDs'      : oid ,
              'snmpStatus'    : 'reqTimeout'
              }
            </call>
            <!-- @Step5: SNMPGet with the new community -->
            <call function="'testStep'">
              { 'stepMessage' : 'SNMPGet with the new community.' }
            </call>
            <call function="'SNMPGet'">
              {
              'snmpVersion'   : '1',
              'snmpHost'      : DIRECTORY_INSTANCE_HOST ,
              'snmpPort'      : SNMP_PORT ,
              'snmpCommunity' : newCommunity ,
              'snmpOIDs'      : oid ,
              'snmpStatus'    : 'noError'
              }
            </call>
            <!-- @Step6: Restore the community property -->
            <call function="'testStep'">
              { 'stepMessage' : 'Restore the community property.' }
            </call>
            <call function="'dsconfig'">
              {
              'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
              'dsInstanceDn'     : DIRECTORY_INSTANCE_DN ,
              'dsInstancePswd'   : DIRECTORY_INSTANCE_PSWD ,
              'subcommand'       : 'set-connection-handler-prop' ,
              'objectType'       : 'handler-name' ,
              'objectName'       : 'SNMP Connection Handler' ,
              'optionsString'    : '--set community:%s' % defCommunityProp
              }
            </call>
            <call function="'dsconfig'">
              {
                'dsInstanceHost' : DIRECTORY_INSTANCE_HOST ,
                'dsInstanceDn'   : DIRECTORY_INSTANCE_DN ,
                'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD ,
                'subcommand'     : 'get-connection-handler-prop' ,
                'objectType'     : 'handler-name' ,
                'objectName'     : 'SNMP Connection Handler'
              }
            </call>
            <!-- @Step7: Restart the SNMP Connection Handler -->
            <call function="'testStep'">
              { 'stepMessage' : 'Restart the SNMP Connection Handler.' }
            </call>
            <call function="'restartSNMPConnectionHandler'">
              {
              'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
              'dsInstanceDn'     : DIRECTORY_INSTANCE_DN ,
              'dsInstancePswd'   : DIRECTORY_INSTANCE_PSWD
              }
            </call>
          </sequence>
          <catch exception="'STAXException'" typevar="eType" var="eInfo">
            <message log="1" level="'fatal'">
              '%s: Test failed. eInfo(%s)' % (eType,eInfo)
            </message>
          </catch>
          <finally>
            <sequence>
              <call function="'testCase_Postamble'"/>
            </sequence>
          </finally>
        </try>
      </sequence>
    </testcase>
  </function>
  <!--- Test Case information
    #@TestMarker          SNMP v1 with custom configuration
    #@TestName            v1_customconf: TODO
    #@TestIssue           none
    #@TestPurpose         TODO.
    #@TestPreamble        none
    #@TestStep            TODO.
    #@TestPostamble       none
    #@TestResult          TODO.
  -->
  <function name="snmp_v1_custom_002" scope="local">
    <testcase name="getTestCaseName('v1 set allowed-manager property to a correct value')">
      <sequence>
        <try>
          <sequence>
            <!-- @Step1: Change the allowed-manager property -->
            <call function="'testStep'">
              { 'stepMessage' : 'Change the allowed-manager property.' }
            </call>
            <call function="'dsconfig'">
              {
              'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
              'dsInstanceDn'     : DIRECTORY_INSTANCE_DN ,
              'dsInstancePswd'   : DIRECTORY_INSTANCE_PSWD ,
              'subcommand'       : 'set-connection-handler-prop' ,
              'objectType'       : 'handler-name' ,
              'objectName'       : 'SNMP Connection Handler' ,
              'optionsString'    : '--set allowed-manager:%s' % newManagerProp
              }
            </call>
            <call function="'dsconfig'">
              {
                'dsInstanceHost' : DIRECTORY_INSTANCE_HOST ,
                'dsInstanceDn'   : DIRECTORY_INSTANCE_DN ,
                'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD ,
                'subcommand'     : 'get-connection-handler-prop' ,
                'objectType'     : 'handler-name' ,
                'objectName'     : 'SNMP Connection Handler'
              }
            </call>
            <!-- @Step2: Restart the SNMP Connection Handler -->
            <call function="'testStep'">
              { 'stepMessage' : 'Restart the SNMP Connection Handler.' }
            </call>
            <call function="'restartSNMPConnectionHandler'">
              {
              'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
              'dsInstanceDn'     : DIRECTORY_INSTANCE_DN ,
              'dsInstancePswd'   : DIRECTORY_INSTANCE_PSWD
              }
            </call>
            <!-- @Step3: SNMPGet with the new community -->
            <call function="'testStep'">
              { 'stepMessage' : 'SNMPGet with the new community.' }
            </call>
            <call function="'SNMPGet'">
              {
              'snmpVersion'   : '1',
              'snmpHost'      : DIRECTORY_INSTANCE_HOST ,
              'snmpPort'      : SNMP_PORT ,
              'snmpCommunity' : defCommunity ,
              'snmpOIDs'      : oid ,
              'snmpStatus'    : 'noError'
              }
            </call>
            <!-- @Step4: Restore the community property -->
            <call function="'testStep'">
              { 'stepMessage' : 'Restore the community property.' }
            </call>
            <call function="'dsconfig'">
              {
              'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
              'dsInstanceDn'     : DIRECTORY_INSTANCE_DN ,
              'dsInstancePswd'   : DIRECTORY_INSTANCE_PSWD ,
              'subcommand'       : 'set-connection-handler-prop' ,
              'objectType'       : 'handler-name' ,
              'objectName'       : 'SNMP Connection Handler' ,
              'optionsString'    : '--set allowed-manager:%s' % defManagerProp
              }
            </call>
            <call function="'dsconfig'">
              {
                'dsInstanceHost' : DIRECTORY_INSTANCE_HOST ,
                'dsInstanceDn'   : DIRECTORY_INSTANCE_DN ,
                'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD ,
                'subcommand'     : 'get-connection-handler-prop' ,
                'objectType'     : 'handler-name' ,
                'objectName'     : 'SNMP Connection Handler'
              }
            </call>
            <!-- @Step5: Restart the SNMP Connection Handler -->
            <call function="'testStep'">
              { 'stepMessage' : 'Restart the SNMP Connection Handler.' }
            </call>
            <call function="'restartSNMPConnectionHandler'">
              {
              'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
              'dsInstanceDn'     : DIRECTORY_INSTANCE_DN ,
              'dsInstancePswd'   : DIRECTORY_INSTANCE_PSWD
              }
            </call>
          </sequence>
          <catch exception="'STAXException'" typevar="eType" var="eInfo">
            <message log="1" level="'fatal'">
              '%s: Test failed. eInfo(%s)' % (eType,eInfo)
            </message>
          </catch>
          <finally>
            <sequence>
              <call function="'testCase_Postamble'"/>
            </sequence>
          </finally>
        </try>
      </sequence>
    </testcase>
  </function>
  <!--- Test Case information
    #@TestMarker          SNMP v1 with custom configuration
    #@TestName            v1_customconf: TODO
    #@TestIssue           none
    #@TestPurpose         TODO.
    #@TestPreamble        none
    #@TestStep            TODO.
    #@TestPostamble       none
    #@TestResult          TODO.
  -->
  <function name="snmp_v1_custom_003" scope="local">
    <testcase name="getTestCaseName('v1 set allowed-manager property to a wrong value')">
      <sequence>
        <try>
          <sequence>
            <call function="'testCase_Preamble'"/>
            <!-- @Step1: Change the allowed-manager property -->
            <call function="'testStep'">
              { 'stepMessage' : 'Change the allowed-manager property.' }
            </call>
            <call function="'dsconfig'">
              {
              'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
              'dsInstanceDn'     : DIRECTORY_INSTANCE_DN ,
              'dsInstancePswd'   : DIRECTORY_INSTANCE_PSWD ,
              'subcommand'       : 'set-connection-handler-prop' ,
              'objectType'       : 'handler-name' ,
              'objectName'       : 'SNMP Connection Handler' ,
              'optionsString'    : '--set allowed-manager:%s' \
                                   % wrongManagerProp
              }
            </call>
            <call function="'dsconfig'">
              {
                'dsInstanceHost' : DIRECTORY_INSTANCE_HOST ,
                'dsInstanceDn'   : DIRECTORY_INSTANCE_DN ,
                'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD ,
                'subcommand'     : 'get-connection-handler-prop' ,
                'objectType'     : 'handler-name' ,
                'objectName'     : 'SNMP Connection Handler'
              }
            </call>
            <!-- @Step2: Restart the SNMP Connection Handler -->
            <call function="'testStep'">
              { 'stepMessage' : 'Restart the SNMP Connection Handler.' }
            </call>
            <call function="'restartSNMPConnectionHandler'">
              {
              'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
              'dsInstanceDn'     : DIRECTORY_INSTANCE_DN ,
              'dsInstancePswd'   : DIRECTORY_INSTANCE_PSWD
              }
            </call>
            <!-- @Step3: SNMPGet with the old community -->
            <call function="'testStep'">
              { 'stepMessage' : 'SNMPGet with the old community.' }
            </call>
            <call function="'SNMPGet'">
              {
              'snmpVersion'   : '1',
              'snmpHost'      : DIRECTORY_INSTANCE_HOST ,
              'snmpPort'      : SNMP_PORT ,
              'snmpCommunity' : defCommunity ,
              'snmpOIDs'      : oid ,
              'snmpStatus'    : 'noSuchName'
              }
            </call>
            <!-- @Step4: Restore the community property -->
            <call function="'testStep'">
              { 'stepMessage' : 'Restore the community property.' }
            </call>
            <call function="'dsconfig'">
              {
              'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
              'dsInstanceDn'     : DIRECTORY_INSTANCE_DN ,
              'dsInstancePswd'   : DIRECTORY_INSTANCE_PSWD ,
              'subcommand'       : 'set-connection-handler-prop' ,
              'objectType'       : 'handler-name' ,
              'objectName'       : 'SNMP Connection Handler' ,
              'optionsString'    : '--set allowed-manager:%s' \
                                   % defManagerProp
              }
            </call>
            <call function="'dsconfig'">
              {
                'dsInstanceHost' : DIRECTORY_INSTANCE_HOST ,
                'dsInstanceDn'   : DIRECTORY_INSTANCE_DN ,
                'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD ,
                'subcommand'     : 'get-connection-handler-prop' ,
                'objectType'     : 'handler-name' ,
                'objectName'     : 'SNMP Connection Handler'
              }
            </call>
            <!-- @Step5: Restart the SNMP Connection Handler -->
            <call function="'testStep'">
              { 'stepMessage' : 'Restart the SNMP Connection Handler.' }
            </call>
            <call function="'restartSNMPConnectionHandler'">
              {
              'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
              'dsInstanceDn'     : DIRECTORY_INSTANCE_DN ,
              'dsInstancePswd'   : DIRECTORY_INSTANCE_PSWD
              }
            </call>
          </sequence>
          <catch exception="'STAXException'" typevar="eType" var="eInfo">
            <message log="1" level="'fatal'">
              '%s: Test failed. eInfo(%s)' % (eType,eInfo)
            </message>
          </catch>
          <finally>
            <sequence>
              <call function="'testCase_Postamble'"/>
            </sequence>
          </finally>
        </try>
      </sequence>
    </testcase>
  </function>
  <!--- Test Case information
    #@TestMarker          SNMP v1 with custom configuration
    #@TestName            v1_customconf: TODO
    #@TestIssue           none
    #@TestPurpose         TODO.
    #@TestPreamble        none
    #@TestStep            TODO.
    #@TestPostamble       none
    #@TestResult          TODO.
  -->
  <function name="snmp_v1_custom_004" scope="local">
    <testcase name="getTestCaseName('v1 set allowed-manager property to a list')">
      <sequence>
        <try>
          <sequence>
            <call function="'testCase_Preamble'"/>
            <!-- @Step1: Set allowed-manager property to a list -->
            <call function="'testStep'">
              { 'stepMessage' : 'Set allowed-manager property to a list.' }
            </call>
            <call function="'dsconfig'">
              {
              'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
              'dsInstanceDn'     : DIRECTORY_INSTANCE_DN ,
              'dsInstancePswd'   : DIRECTORY_INSTANCE_PSWD ,
              'subcommand'       : 'set-connection-handler-prop' ,
              'objectType'       : 'handler-name' ,
              'objectName'       : 'SNMP Connection Handler' ,
              'optionsString'    : '--set allowed-manager:%s' \
                                   % wrongManagerProp
              }
            </call>
            <call function="'dsconfig'">
              {
              'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
              'dsInstanceDn'     : DIRECTORY_INSTANCE_DN ,
              'dsInstancePswd'   : DIRECTORY_INSTANCE_PSWD ,
              'subcommand'       : 'set-connection-handler-prop' ,
              'objectType'       : 'handler-name' ,
              'objectName'       : 'SNMP Connection Handler' ,
              'optionsString'    : '--add allowed-manager:%s' \
                                   % newManagerProp
              }
            </call>
            <call function="'dsconfig'">
              {
                'dsInstanceHost' : DIRECTORY_INSTANCE_HOST ,
                'dsInstanceDn'   : DIRECTORY_INSTANCE_DN ,
                'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD ,
                'subcommand'     : 'get-connection-handler-prop' ,
                'objectType'     : 'handler-name' ,
                'objectName'     : 'SNMP Connection Handler'
              }
            </call>
            <!-- @Step2: Restart the SNMP Connection Handler -->
            <call function="'testStep'">
              { 'stepMessage' : 'Restart the SNMP Connection Handler.' }
            </call>
            <call function="'restartSNMPConnectionHandler'">
              {
              'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
              'dsInstanceDn'     : DIRECTORY_INSTANCE_DN ,
              'dsInstancePswd'   : DIRECTORY_INSTANCE_PSWD
              }
            </call>
            <!-- @Step3: SNMPGet from a not allowed manager -->
            <call function="'testStep'">
              { 'stepMessage' : 'SNMPGet from a not allowed manager.' }
            </call>
            <call function="'SNMPGet'">
              {
              'snmpVersion'   : '1',
              'snmpHost'      : DIRECTORY_INSTANCE_HOST ,
              'snmpPort'      : SNMP_PORT ,
              'snmpCommunity' : defCommunity ,
              'snmpOIDs'      : oid ,
              'snmpStatus'    : 'noError'
              }
            </call>
            <!-- @Step4: Restore the community property -->
            <call function="'testStep'">
              { 'stepMessage' : 'Restore the community property.' }
            </call>
            <call function="'dsconfig'">
              {
              'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
              'dsInstanceDn'     : DIRECTORY_INSTANCE_DN ,
              'dsInstancePswd'   : DIRECTORY_INSTANCE_PSWD ,
              'subcommand'       : 'set-connection-handler-prop' ,
              'objectType'       : 'handler-name' ,
              'objectName'       : 'SNMP Connection Handler' ,
              'optionsString'    : '--set allowed-manager:%s' \
                                   % defManagerProp
              }
            </call>
            <call function="'dsconfig'">
              {
                'dsInstanceHost' : DIRECTORY_INSTANCE_HOST ,
                'dsInstanceDn'   : DIRECTORY_INSTANCE_DN ,
                'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD ,
                'subcommand'     : 'get-connection-handler-prop' ,
                'objectType'     : 'handler-name' ,
                'objectName'     : 'SNMP Connection Handler'
              }
            </call>
            <!-- @Step5: Restart the SNMP Connection Handler -->
            <call function="'testStep'">
              { 'stepMessage' : 'Restart the SNMP Connection Handler.' }
            </call>
            <call function="'restartSNMPConnectionHandler'">
              {
              'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
              'dsInstanceDn'     : DIRECTORY_INSTANCE_DN ,
              'dsInstancePswd'   : DIRECTORY_INSTANCE_PSWD
              }
            </call>
          </sequence>
          <catch exception="'STAXException'" typevar="eType" var="eInfo">
            <message log="1" level="'fatal'">
              '%s: Test failed. eInfo(%s)' % (eType,eInfo)
            </message>
          </catch>
          <finally>
            <sequence>
              <call function="'testCase_Postamble'"/>
            </sequence>
          </finally>
        </try>
      </sequence>
    </testcase>
  </function>
  <!--- Test Case information
    #@TestMarker          SNMP v1 with custom configuration
    #@TestName            v1_customconf: TODO
    #@TestIssue           none
    #@TestPurpose         TODO.
    #@TestPreamble        none
    #@TestStep            TODO.
    #@TestPostamble       none
    #@TestResult          TODO.
  -->
  <function name="snmp_v1_custom_005" scope="local">
    <testcase name="getTestCaseName('v1 set the community property to a list')">
      <sequence>
        <try>
          <sequence>
            <call function="'testCase_Preamble'"/>
            <!-- @Step1: Set the community property to a list -->
            <call function="'testStep'">
              { 'stepMessage' : 'Set the community property to a list.' }
            </call>
            <call function="'dsconfig'">
              {
              'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
              'dsInstanceDn'     : DIRECTORY_INSTANCE_DN ,
              'dsInstancePswd'   : DIRECTORY_INSTANCE_PSWD ,
              'subcommand'       : 'set-connection-handler-prop' ,
              'objectType'       : 'handler-name' ,
              'objectName'       : 'SNMP Connection Handler' ,
              'optionsString'    : '--add community:%s' % newCommunityProp ,
              'expectedRC'       : 1
              }
            </call>
            <script>
              returnString = STAXResult[0][1]
              msg1 = 'It is not possible to specify multiple values for the'
              msg2 = 'SNMP Connection Handler%sproperty "community" as it' \
                     % newLine
              msg3 = 'is single-valued'
              msg = '%s %s %s' % (msg1, msg2, msg3)
            </script>
            <!-- @Step2: Check that the return string is correct -->
            <call function="'testStep'">
              { 'stepMessage' : 'Check that the return string is correct.' }
            </call>
            <call function="'checktestString'">
              {
              'returnString'   : returnString ,
              'expectedString' : msg
              }
            </call>
            <call function="'dsconfig'">
              {
                'dsInstanceHost' : DIRECTORY_INSTANCE_HOST ,
                'dsInstanceDn'   : DIRECTORY_INSTANCE_DN ,
                'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD ,
                'subcommand'     : 'get-connection-handler-prop' ,
                'objectType'     : 'handler-name' ,
                'objectName'     : 'SNMP Connection Handler'
              }
            </call>
          </sequence>
          <catch exception="'STAXException'" typevar="eType" var="eInfo">
            <message log="1" level="'fatal'">
              '%s: Test failed. eInfo(%s)' % (eType,eInfo)
            </message>
          </catch>
          <finally>
            <sequence>
              <call function="'testCase_Postamble'"/>
            </sequence>
          </finally>
        </try>
      </sequence>
    </testcase>
  </function>
</stax>
opends/tests/staf-tests/functional-tests/testcases/snmp/v1/snmp_v1_defaultconf_tests.xml
New file
@@ -0,0 +1,235 @@
<?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.
 !      Portions Copyright 2012 ForgeRock AS
 ! -->
<stax>
  <!--- Test Case information
    #@TestMarker          SNMP v1 with default configuration
    #@TestName            v1_defaultconf: get with default community
    #@TestIssue           none
    #@TestPurpose         Check that a SNMP Get request with default
                          community succeeds.
    #@TestPreamble        none
    #@TestStep            SNMP Get request.
    #@TestPostamble       none
    #@TestResult          Success if SNMPGet returns 0.
  -->
  <function name="snmp_v1_default_001" scope="local">
    <testcase name="getTestCaseName('v1 get with default commnunity')">
      <sequence>
        <try>
          <sequence>
            <call function="'testCase_Preamble'"/>
            <call function="'testStep'">
              { 'stepMessage' : 'Get with default community.' }
            </call>
            <call function="'SNMPGet'">
              {
              'snmpVersion'   : '1',
              'snmpHost'      : DIRECTORY_INSTANCE_HOST ,
              'snmpPort'      : SNMP_PORT ,
              'snmpCommunity' : community ,
              'snmpOIDs'      : oid ,
              'snmpStatus'    : 'noError'
              }
            </call>
          </sequence>
          <catch exception="'STAXException'" typevar="eType" var="eInfo">
            <message log="1" level="'fatal'">
              '%s: Test failed. eInfo(%s)' % (eType,eInfo)
            </message>
          </catch>
          <finally>
            <sequence>
              <call function="'testCase_Postamble'"/>
            </sequence>
          </finally>
        </try>
      </sequence>
    </testcase>
  </function>
  <!--- Test Case information
    #@TestMarker          SNMP v1 with default configuration
    #@TestName            v1_defaultconf: get with wrong community
    #@TestIssue           none
    #@TestPurpose         Check that a SNMP Get request with wrong
                          community fails with noSuchName.
    #@TestPreamble        none
    #@TestStep            SNMP Get request.
    #@TestPostamble       none
    #@TestResult          Success if SNMPGet returns 0.
  -->
  <function name="snmp_v1_default_002" scope="local">
    <testcase name="getTestCaseName('v1 get with wrong community')">
      <sequence>
        <try>
          <sequence>
            <call function="'testCase_Preamble'"/>
            <call function="'testStep'">
              { 'stepMessage' : 'Get with wrong community.' }
            </call>
            <call function="'SNMPGet'">
              {
              'snmpVersion'   : '1',
              'snmpHost'      : DIRECTORY_INSTANCE_HOST ,
              'snmpPort'      : SNMP_PORT ,
              'snmpCommunity' : 'OpenDS' ,
              'snmpOIDs'      : oid ,
              'snmpStatus'    : 'noSuchName'
              }
            </call>
          </sequence>
          <catch exception="'STAXException'" typevar="eType" var="eInfo">
            <message log="1" level="'fatal'">
              '%s: Test failed. eInfo(%s)' % (eType,eInfo)
            </message>
          </catch>
          <finally>
            <sequence>
              <call function="'testCase_Postamble'"/>
            </sequence>
          </finally>
        </try>
      </sequence>
    </testcase>
  </function>
  <!--- Test Case information
    #@TestMarker          SNMP v1 with default configuration
    #@TestName            v1_defaultconf: set with default community
    #@TestIssue           none
    #@TestPurpose         Check that a SNMP Set request with default
                          community fails with noSuchName.
    #@TestPreamble        none
    #@TestStep            SNMP Set request.
    #@TestPostamble       none
    #@TestResult          Success if SNMPSet returns 0.
  -->
  <function name="snmp_v1_default_003" scope="local">
    <testcase name="getTestCaseName('v1 set with default community')">
      <sequence>
        <try>
          <sequence>
            <call function="'testCase_Preamble'"/>
            <call function="'testStep'">
              { 'stepMessage' : 'Set with default community.' }
            </call>
            <call function="'SNMPSet'">
              {
              'snmpVersion'   : '1',
              'snmpHost'      : DIRECTORY_INSTANCE_HOST ,
              'snmpPort'      : SNMP_PORT ,
              'snmpCommunity' : community ,
              'snmpOIDs'      : oid ,
              'snmpStatus'    : 'noSuchName'
              }
            </call>
          </sequence>
          <catch exception="'STAXException'" typevar="eType" var="eInfo">
            <message log="1" level="'fatal'">
              '%s: Test failed. eInfo(%s)' % (eType,eInfo)
            </message>
          </catch>
          <finally>
            <sequence>
              <call function="'testCase_Postamble'"/>
            </sequence>
          </finally>
        </try>
      </sequence>
    </testcase>
  </function>
  <!--- Test Case information
    #@TestMarker          SNMP v1 with default configuration
    #@TestName            v1_defaultconf: set with wrong community
    #@TestIssue           none
    #@TestPurpose         Check that a SNMP Set request with wrong
                          community fails with noSuchName.
    #@TestPreamble        none
    #@TestStep            SNMP Set request.
    #@TestPostamble       none
    #@TestResult          Success if SNMPSet returns 0.
  -->
  <function name="snmp_v1_default_004" scope="local">
    <testcase name="getTestCaseName('v1 set with wrong community')">
      <sequence>
        <try>
          <sequence>
            <call function="'testCase_Preamble'"/>
            <call function="'testStep'">
              { 'stepMessage' : 'Set with wrong community.' }
            </call>
            <call function="'SNMPSet'">
              {
              'snmpVersion'   : '1',
              'snmpHost'      : DIRECTORY_INSTANCE_HOST ,
              'snmpPort'      : SNMP_PORT ,
              'snmpCommunity' : 'OpenDS' ,
              'snmpOIDs'      : oid ,
              'snmpStatus'    : 'noSuchName'
              }
            </call>
          </sequence>
          <catch exception="'STAXException'" typevar="eType" var="eInfo">
            <message log="1" level="'fatal'">
              '%s: Test failed. eInfo(%s)' % (eType,eInfo)
            </message>
          </catch>
          <finally>
            <sequence>
              <call function="'testCase_Postamble'"/>
            </sequence>
          </finally>
        </try>
      </sequence>
    </testcase>
  </function>
</stax>
opends/tests/staf-tests/functional-tests/testcases/snmp/v2c/snmp_v2c.xml
New file
@@ -0,0 +1,149 @@
<?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/CDDLv1_0.txt
 ! or http://forgerock.org/license/CDDLv1.0.html.
 ! 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/CDDLv1_0.txt.  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 2012 ForgeRock AS.
 ! -->
<stax>
  <defaultcall function="main_snmp_v2c"/>
  <function name="main_snmp_v2c" scope="local">
    <sequence>
      <block name="'main_snmp_v2c'">
        <try>
          <sequence>
            <script>
              CurrentTestPath['group']='snmp'
              CurrentTestPath['suite']='v2c'
              __group=CurrentTestPath['group']
              __groupdir='%s/testcases/%s' % (TESTS_DIR,__group)
            </script>
            <!--- Test Suite information
            #@TestSuiteName       SNMP default properties test suite
            #@TestSuitePurpose    Verify SNMP default properties
            #@TestSuiteID         v2c
            #@TestSuiteGroup      snmp
            #@TestGroup           snmp
            #@TestScript          snmp.xml
            #@TestHTMLLink        http://www.forgerock.org/
            -->
            <call function="'testSuite_Preamble'"/>
            <try>
              <sequence>
                <!-- List of Import of Test Functions -->
                <script>
                  importList=[]
                  importList.append('v2c/snmp_v2c_defaultconf_tests')
                  importList.append('v2c/snmp_v2c_customconf_tests')
                </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>
                <!-- Specific to v2c SNMP tests -->
                <script>
                  # Default
                  community = '%s@%s' \
                    % (SNMP_PROPERTIES['community'], SNMP_PROPERTIES['community'])
                  oid = 'dsServerType.1'
                  # Custom
                  defCommunityProp = SNMP_PROPERTIES['community']
                  defCommunity = '%s@%s' %(defCommunityProp, defCommunityProp)
                  defManagerProp = SNMP_PROPERTIES['allowed-manager']
                  newCommunityProp = 'myCommunity'
                  newCommunity = '%s@%s' %(newCommunityProp, newCommunityProp)
                  newManagerProp = DIRECTORY_INSTANCE_HOST
                  wrongManagerProp = 'myManager'
                  oid = 'dsServerType.1'
                </script>
                <!-- List of Test Cases -->
                <script>
                  testsList=[]
                  testsList.append('snmp_v2c_default_001')
                  testsList.append('snmp_v2c_default_002')
                  testsList.append('snmp_v2c_default_003')
                  testsList.append('snmp_v2c_default_004')
                  testsList.append('snmp_v2c_custom_001')
                  testsList.append('snmp_v2c_custom_002')
                  testsList.append('snmp_v2c_custom_003')
                  testsList.append('snmp_v2c_custom_004')
                  testsList.append('snmp_v2c_custom_005')
                </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: Global Schema Cleanup.'</message>
              <try>
                <message>'No Test Suite Cleanup'</message>
              <catch exception="'STAFException'">
                <sequence>
                  <message log="1" level="'fatal'">'Cleanup of test suite failed.'</message>
                </sequence>
              </catch>
              <finally>
                <call function="'testSuite_Postamble'"/>
              </finally>
              </try>
            </sequence>
          </finally>
        </try>
      </block>
    </sequence>
  </function>
</stax>
opends/tests/staf-tests/functional-tests/testcases/snmp/v2c/snmp_v2c_customconf_tests.xml
New file
@@ -0,0 +1,695 @@
<?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-2009 Sun Microsystems, Inc.
 !      Portions Copyright 2012 ForgeRock AS
 ! -->
<stax>
  <!--- Test Case information
    #@TestMarker          SNMP v2c with custom configuration
    #@TestName            v2c_customconf: TODO
    #@TestIssue           none
    #@TestPurpose         TODO.
    #@TestPreamble        none
    #@TestStep            TODO.
    #@TestPostamble       none
    #@TestResult          TODO.
  -->
  <function name="snmp_v2c_custom_001" scope="local">
    <testcase name="getTestCaseName('v2c change the community property')">
      <sequence>
        <try>
          <sequence>
            <call function="'testCase_Preamble'"/>
            <!-- @Step1: Display default SNMP Connection Handler -->
            <call function="'testStep'">
              { 'stepMessage' : 'Display default SNMP Connection Handler.' }
            </call>
            <call function="'dsconfig'">
              {
                'dsInstanceHost' : DIRECTORY_INSTANCE_HOST ,
                'dsInstanceDn'   : DIRECTORY_INSTANCE_DN ,
                'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD ,
                'subcommand'     : 'get-connection-handler-prop' ,
                'objectType'     : 'handler-name' ,
                'objectName'     : 'SNMP Connection Handler'
              }
            </call>
            <!-- @Step2: Change the community property -->
            <call function="'testStep'">
              { 'stepMessage' : 'Change the community property.' }
            </call>
            <call function="'dsconfig'">
              {
              'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
              'dsInstanceDn'     : DIRECTORY_INSTANCE_DN ,
              'dsInstancePswd'   : DIRECTORY_INSTANCE_PSWD ,
              'subcommand'       : 'set-connection-handler-prop' ,
              'objectType'       : 'handler-name' ,
              'objectName'       : 'SNMP Connection Handler' ,
              'optionsString'    : '--set community:%s' % newCommunityProp
              }
            </call>
            <call function="'dsconfig'">
              {
                'dsInstanceHost' : DIRECTORY_INSTANCE_HOST ,
                'dsInstanceDn'   : DIRECTORY_INSTANCE_DN ,
                'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD ,
                'subcommand'     : 'get-connection-handler-prop' ,
                'objectType'     : 'handler-name' ,
                'objectName'     : 'SNMP Connection Handler'
              }
            </call>
            <!-- @Step3: Restart the SNMP Connection Handler -->
            <call function="'testStep'">
              { 'stepMessage' : 'Restart the SNMP Connection Handler.' }
            </call>
            <call function="'restartSNMPConnectionHandler'">
              {
              'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
              'dsInstanceDn'     : DIRECTORY_INSTANCE_DN ,
              'dsInstancePswd'   : DIRECTORY_INSTANCE_PSWD
              }
            </call>
            <!-- @Step4: SNMPGet with the old community -->
            <call function="'testStep'">
              { 'stepMessage' : 'SNMPGet with the old community.' }
            </call>
            <call function="'SNMPGet'">
              {
              'snmpVersion'   : '2',
              'snmpHost'      : DIRECTORY_INSTANCE_HOST ,
              'snmpPort'      : SNMP_PORT ,
              'snmpCommunity' : defCommunity ,
              'snmpOIDs'      : oid ,
              'snmpStatus'    : 'reqTimeout'
              }
            </call>
            <!-- @Step5: SNMPGet with the new community -->
            <call function="'testStep'">
              { 'stepMessage' : 'SNMPGet with the new community.' }
            </call>
            <call function="'SNMPGet'">
              {
              'snmpVersion'   : '2',
              'snmpHost'      : DIRECTORY_INSTANCE_HOST ,
              'snmpPort'      : SNMP_PORT ,
              'snmpCommunity' : newCommunity ,
              'snmpOIDs'      : oid ,
              'snmpStatus'    : 'noError'
              }
            </call>
            <!-- @Step6: Restore the community property -->
            <call function="'testStep'">
              { 'stepMessage' : 'Restore the community property.' }
            </call>
            <call function="'dsconfig'">
              {
              'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
              'dsInstanceDn'     : DIRECTORY_INSTANCE_DN ,
              'dsInstancePswd'   : DIRECTORY_INSTANCE_PSWD ,
              'subcommand'       : 'set-connection-handler-prop' ,
              'objectType'       : 'handler-name' ,
              'objectName'       : 'SNMP Connection Handler' ,
              'optionsString'    : '--set community:%s' % defCommunityProp
              }
            </call>
            <call function="'dsconfig'">
              {
                'dsInstanceHost' : DIRECTORY_INSTANCE_HOST ,
                'dsInstanceDn'   : DIRECTORY_INSTANCE_DN ,
                'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD ,
                'subcommand'     : 'get-connection-handler-prop' ,
                'objectType'     : 'handler-name' ,
                'objectName'     : 'SNMP Connection Handler'
              }
            </call>
            <!-- @Step7: Restart the SNMP Connection Handler -->
            <call function="'testStep'">
              { 'stepMessage' : 'Restart the SNMP Connection Handler.' }
            </call>
            <call function="'restartSNMPConnectionHandler'">
              {
              'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
              'dsInstanceDn'     : DIRECTORY_INSTANCE_DN ,
              'dsInstancePswd'   : DIRECTORY_INSTANCE_PSWD
              }
            </call>
          </sequence>
          <catch exception="'STAXException'" typevar="eType" var="eInfo">
            <message log="1" level="'fatal'">
              '%s: Test failed. eInfo(%s)' % (eType,eInfo)
            </message>
          </catch>
          <finally>
            <sequence>
              <call function="'testCase_Postamble'"/>
            </sequence>
          </finally>
        </try>
      </sequence>
    </testcase>
  </function>
  <!--- Test Case information
    #@TestMarker          SNMP v2c with custom configuration
    #@TestName            v2c_customconf: TODO
    #@TestIssue           none
    #@TestPurpose         TODO.
    #@TestPreamble        none
    #@TestStep            TODO.
    #@TestPostamble       none
    #@TestResult          TODO.
  -->
  <function name="snmp_v2c_custom_002" scope="local">
    <testcase name="getTestCaseName('v2c set allowed-manager property to a correct value')">
      <sequence>
        <try>
          <sequence>
            <!-- @Step1: Change the allowed-manager property -->
            <call function="'testStep'">
              { 'stepMessage' : 'Change the allowed-manager property.' }
            </call>
            <call function="'dsconfig'">
              {
              'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
              'dsInstanceDn'     : DIRECTORY_INSTANCE_DN ,
              'dsInstancePswd'   : DIRECTORY_INSTANCE_PSWD ,
              'subcommand'       : 'set-connection-handler-prop' ,
              'objectType'       : 'handler-name' ,
              'objectName'       : 'SNMP Connection Handler' ,
              'optionsString'    : '--set allowed-manager:%s' % newManagerProp
              }
            </call>
            <call function="'dsconfig'">
              {
                'dsInstanceHost' : DIRECTORY_INSTANCE_HOST ,
                'dsInstanceDn'   : DIRECTORY_INSTANCE_DN ,
                'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD ,
                'subcommand'     : 'get-connection-handler-prop' ,
                'objectType'     : 'handler-name' ,
                'objectName'     : 'SNMP Connection Handler'
              }
            </call>
            <!-- @Step2: Restart the SNMP Connection Handler -->
            <call function="'testStep'">
              { 'stepMessage' : 'Restart the SNMP Connection Handler.' }
            </call>
            <call function="'restartSNMPConnectionHandler'">
              {
              'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
              'dsInstanceDn'     : DIRECTORY_INSTANCE_DN ,
              'dsInstancePswd'   : DIRECTORY_INSTANCE_PSWD
              }
            </call>
            <!-- @Step3: SNMPGet with the new community -->
            <call function="'testStep'">
              { 'stepMessage' : 'SNMPGet with the new community.' }
            </call>
            <call function="'SNMPGet'">
              {
              'snmpVersion'   : '2',
              'snmpHost'      : DIRECTORY_INSTANCE_HOST ,
              'snmpPort'      : SNMP_PORT ,
              'snmpCommunity' : defCommunity ,
              'snmpOIDs'      : oid ,
              'snmpStatus'    : 'noError'
              }
            </call>
            <!-- @Step4: Restore the community property -->
            <call function="'testStep'">
              { 'stepMessage' : 'Restore the community property.' }
            </call>
            <call function="'dsconfig'">
              {
              'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
              'dsInstanceDn'     : DIRECTORY_INSTANCE_DN ,
              'dsInstancePswd'   : DIRECTORY_INSTANCE_PSWD ,
              'subcommand'       : 'set-connection-handler-prop' ,
              'objectType'       : 'handler-name' ,
              'objectName'       : 'SNMP Connection Handler' ,
              'optionsString'    : '--set allowed-manager:%s' % defManagerProp
              }
            </call>
            <call function="'dsconfig'">
              {
                'dsInstanceHost' : DIRECTORY_INSTANCE_HOST ,
                'dsInstanceDn'   : DIRECTORY_INSTANCE_DN ,
                'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD ,
                'subcommand'     : 'get-connection-handler-prop' ,
                'objectType'     : 'handler-name' ,
                'objectName'     : 'SNMP Connection Handler'
              }
            </call>
            <!-- @Step5: Restart the SNMP Connection Handler -->
            <call function="'testStep'">
              { 'stepMessage' : 'Restart the SNMP Connection Handler.' }
            </call>
            <call function="'restartSNMPConnectionHandler'">
              {
              'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
              'dsInstanceDn'     : DIRECTORY_INSTANCE_DN ,
              'dsInstancePswd'   : DIRECTORY_INSTANCE_PSWD
              }
            </call>
          </sequence>
          <catch exception="'STAXException'" typevar="eType" var="eInfo">
            <message log="1" level="'fatal'">
              '%s: Test failed. eInfo(%s)' % (eType,eInfo)
            </message>
          </catch>
          <finally>
            <sequence>
              <call function="'testCase_Postamble'"/>
            </sequence>
          </finally>
        </try>
      </sequence>
    </testcase>
  </function>
  <!--- Test Case information
    #@TestMarker          SNMP v2c with custom configuration
    #@TestName            v2c_customconf: TODO
    #@TestIssue           none
    #@TestPurpose         TODO.
    #@TestPreamble        none
    #@TestStep            TODO.
    #@TestPostamble       none
    #@TestResult          TODO.
  -->
  <function name="snmp_v2c_custom_003" scope="local">
    <testcase name="getTestCaseName('v2c set allowed-manager property to a wrong value')">
      <sequence>
        <try>
          <sequence>
            <call function="'testCase_Preamble'"/>
            <!-- @Step1: Change the allowed-manager property -->
            <call function="'testStep'">
              { 'stepMessage' : 'Change the allowed-manager property.' }
            </call>
            <call function="'dsconfig'">
              {
              'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
              'dsInstanceDn'     : DIRECTORY_INSTANCE_DN ,
              'dsInstancePswd'   : DIRECTORY_INSTANCE_PSWD ,
              'subcommand'       : 'set-connection-handler-prop' ,
              'objectType'       : 'handler-name' ,
              'objectName'       : 'SNMP Connection Handler' ,
              'optionsString'    : '--set allowed-manager:%s' \
                                   % wrongManagerProp
              }
            </call>
            <call function="'dsconfig'">
              {
                'dsInstanceHost' : DIRECTORY_INSTANCE_HOST ,
                'dsInstanceDn'   : DIRECTORY_INSTANCE_DN ,
                'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD ,
                'subcommand'     : 'get-connection-handler-prop' ,
                'objectType'     : 'handler-name' ,
                'objectName'     : 'SNMP Connection Handler'
              }
            </call>
            <!-- @Step2: Restart the SNMP Connection Handler -->
            <call function="'testStep'">
              { 'stepMessage' : 'Restart the SNMP Connection Handler.' }
            </call>
            <call function="'restartSNMPConnectionHandler'">
              {
              'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
              'dsInstanceDn'     : DIRECTORY_INSTANCE_DN ,
              'dsInstancePswd'   : DIRECTORY_INSTANCE_PSWD
              }
            </call>
            <!-- @Step3: SNMPGet with the old community -->
            <call function="'testStep'">
              { 'stepMessage' : 'SNMPGet with the old community.' }
            </call>
            <call function="'SNMPGet'">
              {
              'snmpVersion'   : '2',
              'snmpHost'      : DIRECTORY_INSTANCE_HOST ,
              'snmpPort'      : SNMP_PORT ,
              'snmpCommunity' : defCommunity ,
              'snmpOIDs'      : oid ,
              'snmpStatus'    : 'authorizationError'
              }
            </call>
            <!-- @Step4: Restore the community property -->
            <call function="'testStep'">
              { 'stepMessage' : 'Restore the community property.' }
            </call>
            <call function="'dsconfig'">
              {
              'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
              'dsInstanceDn'     : DIRECTORY_INSTANCE_DN ,
              'dsInstancePswd'   : DIRECTORY_INSTANCE_PSWD ,
              'subcommand'       : 'set-connection-handler-prop' ,
              'objectType'       : 'handler-name' ,
              'objectName'       : 'SNMP Connection Handler' ,
              'optionsString'    : '--set allowed-manager:%s' \
                                   % defManagerProp
              }
            </call>
            <call function="'dsconfig'">
              {
                'dsInstanceHost' : DIRECTORY_INSTANCE_HOST ,
                'dsInstanceDn'   : DIRECTORY_INSTANCE_DN ,
                'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD ,
                'subcommand'     : 'get-connection-handler-prop' ,
                'objectType'     : 'handler-name' ,
                'objectName'     : 'SNMP Connection Handler'
              }
            </call>
            <!-- @Step5: Restart the SNMP Connection Handler -->
            <call function="'testStep'">
              { 'stepMessage' : 'Restart the SNMP Connection Handler.' }
            </call>
            <call function="'restartSNMPConnectionHandler'">
              {
              'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
              'dsInstanceDn'     : DIRECTORY_INSTANCE_DN ,
              'dsInstancePswd'   : DIRECTORY_INSTANCE_PSWD
              }
            </call>
          </sequence>
          <catch exception="'STAXException'" typevar="eType" var="eInfo">
            <message log="1" level="'fatal'">
              '%s: Test failed. eInfo(%s)' % (eType,eInfo)
            </message>
          </catch>
          <finally>
            <sequence>
              <call function="'testCase_Postamble'"/>
            </sequence>
          </finally>
        </try>
      </sequence>
    </testcase>
  </function>
  <!--- Test Case information
    #@TestMarker          SNMP v2c with custom configuration
    #@TestName            v2c_customconf: TODO
    #@TestIssue           none
    #@TestPurpose         TODO.
    #@TestPreamble        none
    #@TestStep            TODO.
    #@TestPostamble       none
    #@TestResult          TODO.
  -->
  <function name="snmp_v2c_custom_004" scope="local">
    <testcase name="getTestCaseName('v2c set allowed-manager property to a list')">
      <sequence>
        <try>
          <sequence>
            <call function="'testCase_Preamble'"/>
            <!-- @Step1: Set allowed-manager property to a list -->
            <call function="'testStep'">
              { 'stepMessage' : 'Set allowed-manager property to a list.' }
            </call>
            <call function="'dsconfig'">
              {
              'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
              'dsInstanceDn'     : DIRECTORY_INSTANCE_DN ,
              'dsInstancePswd'   : DIRECTORY_INSTANCE_PSWD ,
              'subcommand'       : 'set-connection-handler-prop' ,
              'objectType'       : 'handler-name' ,
              'objectName'       : 'SNMP Connection Handler' ,
              'optionsString'    : '--set allowed-manager:%s' \
                                   % wrongManagerProp
              }
            </call>
            <call function="'dsconfig'">
              {
              'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
              'dsInstanceDn'     : DIRECTORY_INSTANCE_DN ,
              'dsInstancePswd'   : DIRECTORY_INSTANCE_PSWD ,
              'subcommand'       : 'set-connection-handler-prop' ,
              'objectType'       : 'handler-name' ,
              'objectName'       : 'SNMP Connection Handler' ,
              'optionsString'    : '--add allowed-manager:%s' \
                                   % newManagerProp
              }
            </call>
            <call function="'dsconfig'">
              {
                'dsInstanceHost' : DIRECTORY_INSTANCE_HOST ,
                'dsInstanceDn'   : DIRECTORY_INSTANCE_DN ,
                'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD ,
                'subcommand'     : 'get-connection-handler-prop' ,
                'objectType'     : 'handler-name' ,
                'objectName'     : 'SNMP Connection Handler'
              }
            </call>
            <!-- @Step2: Restart the SNMP Connection Handler -->
            <call function="'testStep'">
              { 'stepMessage' : 'Restart the SNMP Connection Handler.' }
            </call>
            <call function="'restartSNMPConnectionHandler'">
              {
              'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
              'dsInstanceDn'     : DIRECTORY_INSTANCE_DN ,
              'dsInstancePswd'   : DIRECTORY_INSTANCE_PSWD
              }
            </call>
            <!-- @Step3: SNMPGet from a not allowed manager -->
            <call function="'testStep'">
              { 'stepMessage' : 'SNMPGet from a not allowed manager.' }
            </call>
            <call function="'SNMPGet'">
              {
              'snmpVersion'   : '2',
              'snmpHost'      : DIRECTORY_INSTANCE_HOST ,
              'snmpPort'      : SNMP_PORT ,
              'snmpCommunity' : defCommunity ,
              'snmpOIDs'      : oid ,
              'snmpStatus'    : 'noError'
              }
            </call>
            <!-- @Step4: Restore the community property -->
            <call function="'testStep'">
              { 'stepMessage' : 'Restore the community property.' }
            </call>
            <call function="'dsconfig'">
              {
              'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
              'dsInstanceDn'     : DIRECTORY_INSTANCE_DN ,
              'dsInstancePswd'   : DIRECTORY_INSTANCE_PSWD ,
              'subcommand'       : 'set-connection-handler-prop' ,
              'objectType'       : 'handler-name' ,
              'objectName'       : 'SNMP Connection Handler' ,
              'optionsString'    : '--set allowed-manager:%s' \
                                   % defManagerProp
              }
            </call>
            <call function="'dsconfig'">
              {
                'dsInstanceHost' : DIRECTORY_INSTANCE_HOST ,
                'dsInstanceDn'   : DIRECTORY_INSTANCE_DN ,
                'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD ,
                'subcommand'     : 'get-connection-handler-prop' ,
                'objectType'     : 'handler-name' ,
                'objectName'     : 'SNMP Connection Handler'
              }
            </call>
            <!-- @Step5: Restart the SNMP Connection Handler -->
            <call function="'testStep'">
              { 'stepMessage' : 'Restart the SNMP Connection Handler.' }
            </call>
            <call function="'restartSNMPConnectionHandler'">
              {
              'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
              'dsInstanceDn'     : DIRECTORY_INSTANCE_DN ,
              'dsInstancePswd'   : DIRECTORY_INSTANCE_PSWD
              }
            </call>
          </sequence>
          <catch exception="'STAXException'" typevar="eType" var="eInfo">
            <message log="1" level="'fatal'">
              '%s: Test failed. eInfo(%s)' % (eType,eInfo)
            </message>
          </catch>
          <finally>
            <sequence>
              <call function="'testCase_Postamble'"/>
            </sequence>
          </finally>
        </try>
      </sequence>
    </testcase>
  </function>
  <!--- Test Case information
    #@TestMarker          SNMP v2c with custom configuration
    #@TestName            v2c_customconf: TODO
    #@TestIssue           none
    #@TestPurpose         TODO.
    #@TestPreamble        none
    #@TestStep            TODO.
    #@TestPostamble       none
    #@TestResult          TODO.
  -->
  <function name="snmp_v2c_custom_005" scope="local">
    <testcase name="getTestCaseName('v2c set the community property to a list')">
      <sequence>
        <try>
          <sequence>
            <call function="'testCase_Preamble'"/>
            <!-- @Step1: Set the community property to a list -->
            <call function="'testStep'">
              { 'stepMessage' : 'Set the community property to a list.' }
            </call>
            <call function="'dsconfig'">
              {
              'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
              'dsInstanceDn'     : DIRECTORY_INSTANCE_DN ,
              'dsInstancePswd'   : DIRECTORY_INSTANCE_PSWD ,
              'subcommand'       : 'set-connection-handler-prop' ,
              'objectType'       : 'handler-name' ,
              'objectName'       : 'SNMP Connection Handler' ,
              'optionsString'    : '--add community:%s' % newCommunityProp ,
              'expectedRC'       : 1
              }
            </call>
            <script>
              returnString = STAXResult[0][1]
              msg1 = 'It is not possible to specify multiple values for the'
              msg2 = 'SNMP Connection Handler%sproperty "community" as it' \
                     % newLine
              msg3 = 'is single-valued'
              msg = '%s %s %s' % (msg1, msg2, msg3)
            </script>
            <!-- @Step2: Check that the return string is correct -->
            <call function="'testStep'">
              { 'stepMessage' : 'Check that the return string is correct.' }
            </call>
            <call function="'checktestString'">
              {
              'returnString'   : returnString ,
              'expectedString' : msg
              }
            </call>
            <call function="'dsconfig'">
              {
                'dsInstanceHost' : DIRECTORY_INSTANCE_HOST ,
                'dsInstanceDn'   : DIRECTORY_INSTANCE_DN ,
                'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD ,
                'subcommand'     : 'get-connection-handler-prop' ,
                'objectType'     : 'handler-name' ,
                'objectName'     : 'SNMP Connection Handler'
              }
            </call>
          </sequence>
          <catch exception="'STAXException'" typevar="eType" var="eInfo">
            <message log="1" level="'fatal'">
              '%s: Test failed. eInfo(%s)' % (eType,eInfo)
            </message>
          </catch>
          <finally>
            <sequence>
              <call function="'testCase_Postamble'"/>
            </sequence>
          </finally>
        </try>
      </sequence>
    </testcase>
  </function>
</stax>
opends/tests/staf-tests/functional-tests/testcases/snmp/v2c/snmp_v2c_defaultconf_tests.xml
New file
@@ -0,0 +1,236 @@
<?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.
 !      Portions Copyright 2012 ForgeRock AS
 ! -->
<stax>
  <!--- Test Case information
    #@TestMarker          SNMP v2c with default configuration
    #@TestName            v2c_defaultconf: get with default community
    #@TestIssue           none
    #@TestPurpose         Check that a SNMP Get request with default
                          community succeeds.
    #@TestPreamble        none
    #@TestStep            SNMP Get request.
    #@TestPostamble       none
    #@TestResult          Success if SNMPGet returns 0.
  -->
  <function name="snmp_v2c_default_001" scope="local">
    <testcase name="getTestCaseName('v2c get with default community')">
      <sequence>
        <try>
          <sequence>
            <call function="'testCase_Preamble'"/>
            <call function="'testStep'">
              { 'stepMessage' : 'Get with default community.' }
            </call>
            <call function="'SNMPGet'">
              {
              'snmpVersion'   : '2',
              'snmpHost'      : DIRECTORY_INSTANCE_HOST ,
              'snmpPort'      : SNMP_PORT ,
              'snmpCommunity' : community ,
              'snmpOIDs'      : oid ,
              'snmpStatus'    : 'noError'
              }
            </call>
          </sequence>
          <catch exception="'STAXException'" typevar="eType" var="eInfo">
            <message log="1" level="'fatal'">
              '%s: Test failed. eInfo(%s)' % (eType,eInfo)
            </message>
          </catch>
          <finally>
            <sequence>
              <call function="'testCase_Postamble'"/>
            </sequence>
          </finally>
        </try>
      </sequence>
    </testcase>
  </function>
  <!--- Test Case information
    #@TestMarker          SNMP v2c with default configuration
    #@TestName            v2c_defaultconf: get with wrong community
    #@TestIssue           none
    #@TestPurpose         Check that a SNMP Get request with wrong
                          community fails with noSuchName.
    #@TestPreamble        none
    #@TestStep            SNMP Get request.
    #@TestPostamble       none
    #@TestResult          Success if SNMPGet returns 0.
  -->
  <function name="snmp_v2c_default_002" scope="local">
    <testcase name="getTestCaseName('v2c get with wrong community')">
      <sequence>
        <try>
          <sequence>
            <call function="'testCase_Preamble'"/>
            <call function="'testStep'">
              { 'stepMessage' : 'Get with wrong community.' }
            </call>
            <call function="'SNMPGet'">
              {
              'snmpVersion'   : '2',
              'snmpHost'      : DIRECTORY_INSTANCE_HOST ,
              'snmpPort'      : SNMP_PORT ,
              'snmpCommunity' : 'OpenDS' ,
              'snmpOIDs'      : oid ,
              'snmpStatus'    : 'noError' ,
              'snmpValidOIDs' : 'False'
              }
            </call>
          </sequence>
          <catch exception="'STAXException'" typevar="eType" var="eInfo">
            <message log="1" level="'fatal'">
              '%s: Test failed. eInfo(%s)' % (eType,eInfo)
            </message>
          </catch>
          <finally>
            <sequence>
              <call function="'testCase_Postamble'"/>
            </sequence>
          </finally>
        </try>
      </sequence>
    </testcase>
  </function>
  <!--- Test Case information
    #@TestMarker          SNMP v2c with default configuration
    #@TestName            v2c_defaultconf: set with default community
    #@TestIssue           none
    #@TestPurpose         Check that a SNMP Set request with default
                          community fails with noSuchName.
    #@TestPreamble        none
    #@TestStep            SNMP Set request.
    #@TestPostamble       none
    #@TestResult          Success if SNMPSet returns 0.
  -->
  <function name="snmp_v2c_default_003" scope="local">
    <testcase name="getTestCaseName('v2c set with default community')">
      <sequence>
        <try>
          <sequence>
            <call function="'testCase_Preamble'"/>
            <call function="'testStep'">
              { 'stepMessage' : 'Set with default community.' }
            </call>
            <call function="'SNMPSet'">
              {
              'snmpVersion'   : '2',
              'snmpHost'      : DIRECTORY_INSTANCE_HOST ,
              'snmpPort'      : SNMP_PORT ,
              'snmpCommunity' : community ,
              'snmpOIDs'      : oid ,
              'snmpStatus'    : 'authorizationError'
              }
            </call>
          </sequence>
          <catch exception="'STAXException'" typevar="eType" var="eInfo">
            <message log="1" level="'fatal'">
              '%s: Test failed. eInfo(%s)' % (eType,eInfo)
            </message>
          </catch>
          <finally>
            <sequence>
              <call function="'testCase_Postamble'"/>
            </sequence>
          </finally>
        </try>
      </sequence>
    </testcase>
  </function>
  <!--- Test Case information
    #@TestMarker          SNMP v2c with default configuration
    #@TestName            v2c_defaultconf: set with wrong community
    #@TestIssue           none
    #@TestPurpose         Check that a SNMP Set request with wrong
                          community fails with noSuchName.
    #@TestPreamble        none
    #@TestStep            SNMP Set request.
    #@TestPostamble       none
    #@TestResult          Success if SNMPSet returns 0.
  -->
  <function name="snmp_v2c_default_004" scope="local">
    <testcase name="getTestCaseName('v2c set with wrong community')">
      <sequence>
        <try>
          <sequence>
            <call function="'testCase_Preamble'"/>
            <call function="'testStep'">
              { 'stepMessage' : 'Set with wrong community.' }
            </call>
            <call function="'SNMPSet'">
              {
              'snmpVersion'   : '2',
              'snmpHost'      : DIRECTORY_INSTANCE_HOST ,
              'snmpPort'      : SNMP_PORT ,
              'snmpCommunity' : 'OpenDS' ,
              'snmpOIDs'      : oid ,
              'snmpStatus'    : 'noAccess'
              }
            </call>
          </sequence>
          <catch exception="'STAXException'" typevar="eType" var="eInfo">
            <message log="1" level="'fatal'">
              '%s: Test failed. eInfo(%s)' % (eType,eInfo)
            </message>
          </catch>
          <finally>
            <sequence>
              <call function="'testCase_Postamble'"/>
            </sequence>
          </finally>
        </try>
      </sequence>
    </testcase>
  </function>
</stax>
opends/tests/staf-tests/functional-tests/testcases/snmp/v3/snmp_v3.xml
New file
@@ -0,0 +1,167 @@
<?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/CDDLv1_0.txt
 ! or http://forgerock.org/license/CDDLv1.0.html.
 ! 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/CDDLv1_0.txt.  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 2012 ForgeRock AS.
 ! -->
<stax>
  <defaultcall function="main_snmp_v3"/>
  <function name="main_snmp_v3" scope="local">
    <sequence>
      <block name="'main_snmp_v3'">
        <try>
          <sequence>
            <script>
              CurrentTestPath['group']='snmp'
              CurrentTestPath['suite']='v3'
              __group=CurrentTestPath['group']
              __groupdir='%s/testcases/%s' % (TESTS_DIR,__group)
            </script>
            <!--- Test Suite information
            #@TestSuiteName       SNMP v3 with default configuration
            #@TestSuitePurpose    Check SNMP v3 with default configuration.
            #@TestSuiteGroup      SNMP v3 with default configuration
            #@TestScript          snmp_v3.xml
            #@TestHTMLLink        http://www.forgerock.org/
            -->
            <call function="'testSuite_Preamble'"/>
            <try>
              <sequence>
                <!-- List of Import of Test Functions -->
                <script>
                  importList=[]
                  importList.append('v3/snmp_v3_defaultconf_tests')
                  importList.append('v3/snmp_v3_customconf_tests')
                </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>
                <!-- Specific to v3 SNMP tests -->
                <script>
                   # Default
                  securityFile = '%s/snmp/manager.security' % remote.data
                  securityLevel = SNMP_PROPERTIES['security-level']
                  context = SNMP_PROPERTIES['community']
                  oid = 'dsServerType.1'
                  # Custom
                  defContextProp = SNMP_PROPERTIES['community']
                  defUserProp = SNMP_PROPERTIES['allowed-user']
                  defSecurityFileProp = SNMP_PROPERTIES['security-agent-file']
                  defSecurityLevelProp = SNMP_PROPERTIES['security-level']
                  newContextProp = 'myContext'
                  newSecurityFileProp = '%s/snmp/agent.security' % remote.data
                  lowUser = 'myUser1'
                  defUser = 'myUser2'
                  highUser = 'myUser3'
                  otherUser = 'myUser4'
                  lowSecurityLevelProp = 'noauthnopriv'
                  highSecurityLevelProp = 'authpriv'
                  wrongSecurityLevelProp = 'mySecurityLevel'
                  mySecurityFile = '%s/snmp/manager.security' % remote.data
                  oid = 'dsServerType.1'
                </script>
                <!-- List of Test Cases -->
                <script>
                  testsList=[]
                  testsList.append('snmp_v3_default_001')
                  testsList.append('snmp_v3_default_002')
                  testsList.append('snmp_v3_default_003')
                  testsList.append('snmp_v3_default_004')
                  testsList.append('snmp_v3_default_005')
                  testsList.append('snmp_v3_default_006')
                  testsList.append('snmp_v3_default_007')
                  testsList.append('snmp_v3_default_008')
                  testsList.append('snmp_v3_default_009')
                  testsList.append('snmp_v3_default_010')
                  testsList.append('snmp_v3_default_011')
                  testsList.append('snmp_v3_default_012')
                  testsList.append('snmp_v3_custom_001')
                  testsList.append('snmp_v3_custom_002')
                  testsList.append('snmp_v3_custom_003')
                  testsList.append('snmp_v3_custom_004')
                  testsList.append('snmp_v3_custom_005')
                  testsList.append('snmp_v3_custom_006')
                  testsList.append('snmp_v3_custom_007')
                  testsList.append('snmp_v3_custom_008')
                  testsList.append('snmp_v3_custom_009')
                </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: Global SNMP Cleanup.'</message>
              <try>
                <message>'No Test Suite Cleanup'</message>
              <catch exception="'STAFException'">
                <sequence>
                  <message log="1" level="'fatal'">'Cleanup of test suite failed.'</message>
                </sequence>
              </catch>
              <finally>
                <call function="'testSuite_Postamble'"/>
              </finally>
              </try>
            </sequence>
          </finally>
        </try>
      </block>
    </sequence>
  </function>
</stax>
opends/tests/staf-tests/functional-tests/testcases/snmp/v3/snmp_v3_customconf_tests.xml
New file
@@ -0,0 +1,1004 @@
<?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.
 !      Portions Copyright 2012 ForgeRock AS
 ! -->
<stax>
  <!--- Test Case information
    #@TestMarker          SNMP v3 with custom configuration
    #@TestName            v3_customconf: TODO
    #@TestIssue           none
    #@TestPurpose         TODO.
    #@TestPreamble        none
    #@TestStep            TODO.
    #@TestPostamble       none
    #@TestResult          TODO.
  -->
  <function name="snmp_v3_custom_001" scope="local">
    <testcase name="getTestCaseName('v3 change the security-agent-file property')">
      <sequence>
        <try>
          <sequence>
            <call function="'testCase_Preamble'"/>
            <call function="'testStep'">
              { 'stepMessage' : 'Change the security-agent-file property' }
            </call>
            <call function="'dsconfig'">
              {
              'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
              'dsInstanceDn'     : DIRECTORY_INSTANCE_DN ,
              'dsInstancePswd'   : DIRECTORY_INSTANCE_PSWD ,
              'subcommand'       : 'set-connection-handler-prop' ,
              'objectType'       : 'handler-name' ,
              'objectName'       : 'SNMP Connection Handler' ,
              'optionsString'    : '--set security-agent-file:%s' \
                                   % newSecurityFileProp
              }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : 'Restart the SNMP Connection Handler' }
            </call>
            <call function="'restartSNMPConnectionHandler'">
              {
              'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
              'dsInstanceDn'     : DIRECTORY_INSTANCE_DN ,
              'dsInstancePswd'   : DIRECTORY_INSTANCE_PSWD
              }
            </call>
          </sequence>
          <catch exception="'STAXException'" typevar="eType" var="eInfo">
            <message log="1" level="'fatal'">
              '%s: Test failed. eInfo(%s)' % (eType,eInfo)
            </message>
          </catch>
          <finally>
            <sequence>
              <call function="'testCase_Postamble'"/>
            </sequence>
          </finally>
        </try>
      </sequence>
    </testcase>
  </function>
  <!--- Test Case information
    #@TestMarker          SNMP v3 with custom configuration
    #@TestName            v3_customconf: TODO
    #@TestIssue           none
    #@TestPurpose         TODO.
    #@TestPreamble        none
    #@TestStep            TODO.
    #@TestPostamble       none
    #@TestResult          TODO.
  -->
  <function name="snmp_v3_custom_002" scope="local">
    <testcase name="getTestCaseName('v3 check the current security level (def)')">
      <sequence>
        <try>
          <sequence>
            <call function="'testCase_Preamble'"/>
            <call function="'testStep'">
              { 'stepMessage' : 'Get with the lowUser and low security level' }
            </call>
            <call function="'SNMPGet'">
              {
              'snmpVersion'       : '3',
              'snmpHost'          : DIRECTORY_INSTANCE_HOST ,
              'snmpPort'          : SNMP_PORT ,
              'snmpUser'          : lowUser ,
              'snmpCommunity'     : defContextProp ,
              'snmpSecurityLevel' : lowSecurityLevelProp ,
              'snmpSecurityFile'  : mySecurityFile ,
              'snmpOIDs'          : oid ,
              'snmpStatus'        : 'authorizationError'
              }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : 'Get with the defUser and def security level' }
            </call>
            <call function="'SNMPGet'">
              {
              'snmpVersion'       : '3',
              'snmpHost'          : DIRECTORY_INSTANCE_HOST ,
              'snmpPort'          : SNMP_PORT ,
              'snmpUser'          : defUser ,
              'snmpCommunity'     : defContextProp ,
              'snmpSecurityLevel' : defSecurityLevelProp ,
              'snmpSecurityFile'  : mySecurityFile ,
              'snmpOIDs'          : oid ,
              'snmpStatus'        : 'noError'
              }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : 'Get with the highUser and high security level' }
            </call>
            <call function="'SNMPGet'">
              {
              'snmpVersion'       : '3',
              'snmpHost'          : DIRECTORY_INSTANCE_HOST ,
              'snmpPort'          : SNMP_PORT ,
              'snmpUser'          : highUser ,
              'snmpCommunity'     : defContextProp ,
              'snmpSecurityLevel' : highSecurityLevelProp ,
              'snmpSecurityFile'  : mySecurityFile ,
              'snmpOIDs'          : oid ,
              'snmpStatus'        : 'noError'
              }
            </call>
          </sequence>
          <catch exception="'STAXException'" typevar="eType" var="eInfo">
            <message log="1" level="'fatal'">
              '%s: Test failed. eInfo(%s)' % (eType,eInfo)
            </message>
          </catch>
          <finally>
            <sequence>
              <call function="'testCase_Postamble'"/>
            </sequence>
          </finally>
        </try>
      </sequence>
    </testcase>
  </function>
  <!--- Test Case information
    #@TestMarker          SNMP v3 with custom configuration
    #@TestName            v3_customconf: TODO
    #@TestIssue           none
    #@TestPurpose         TODO.
    #@TestPreamble        none
    #@TestStep            TODO.
    #@TestPostamble       none
    #@TestResult          TODO.
  -->
  <function name="snmp_v3_custom_003" scope="local">
    <testcase name="getTestCaseName('v3 change the context property')">
      <sequence>
        <try>
          <sequence>
            <call function="'testCase_Preamble'"/>
            <call function="'testStep'">
              { 'stepMessage' : 'Change the context property' }
            </call>
            <call function="'dsconfig'">
              {
              'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
              'dsInstanceDn'     : DIRECTORY_INSTANCE_DN ,
              'dsInstancePswd'   : DIRECTORY_INSTANCE_PSWD ,
              'subcommand'       : 'set-connection-handler-prop' ,
              'objectType'       : 'handler-name' ,
              'objectName'       : 'SNMP Connection Handler' ,
              'optionsString'    : '--set community:%s' % newContextProp
              }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : 'Restart the SNMP Connection Handler' }
            </call>
            <call function="'restartSNMPConnectionHandler'">
              {
              'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
              'dsInstanceDn'     : DIRECTORY_INSTANCE_DN ,
              'dsInstancePswd'   : DIRECTORY_INSTANCE_PSWD
              }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : 'Get with the old context' }
            </call>
            <call function="'SNMPGet'">
              {
              'snmpVersion'       : '3',
              'snmpHost'          : DIRECTORY_INSTANCE_HOST ,
              'snmpPort'          : SNMP_PORT ,
              'snmpUser'          : defUser ,
              'snmpCommunity'     : defContextProp ,
              'snmpSecurityLevel' : defSecurityLevelProp ,
              'snmpSecurityFile'  : mySecurityFile ,
              'snmpOIDs'          : oid ,
              'snmpStatus'        : 'reqTimeout'
              }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : 'Get with the context' }
            </call>
            <call function="'SNMPGet'">
              {
              'snmpVersion'       : '3',
              'snmpHost'          : DIRECTORY_INSTANCE_HOST ,
              'snmpPort'          : SNMP_PORT ,
              'snmpUser'          : otherUser ,
              'snmpCommunity'     : newContextProp ,
              'snmpSecurityLevel' : defSecurityLevelProp ,
              'snmpSecurityFile'  : mySecurityFile ,
              'snmpOIDs'          : oid ,
              'snmpStatus'        : 'noError'
              }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : 'Restore the context property' }
            </call>
            <call function="'dsconfig'">
              {
              'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
              'dsInstanceDn'     : DIRECTORY_INSTANCE_DN ,
              'dsInstancePswd'   : DIRECTORY_INSTANCE_PSWD ,
              'subcommand'       : 'set-connection-handler-prop' ,
              'objectType'       : 'handler-name' ,
              'objectName'       : 'SNMP Connection Handler' ,
              'optionsString'    : '--set community:%s' % defContextProp
              }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : 'Restart the SNMP Connection Handler' }
            </call>
            <call function="'restartSNMPConnectionHandler'">
              {
              'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
              'dsInstanceDn'     : DIRECTORY_INSTANCE_DN ,
              'dsInstancePswd'   : DIRECTORY_INSTANCE_PSWD
              }
            </call>
          </sequence>
          <catch exception="'STAXException'" typevar="eType" var="eInfo">
            <message log="1" level="'fatal'">
              '%s: Test failed. eInfo(%s)' % (eType,eInfo)
            </message>
          </catch>
          <finally>
            <sequence>
              <call function="'testCase_Postamble'"/>
            </sequence>
          </finally>
        </try>
      </sequence>
    </testcase>
  </function>
  <!--- Test Case information
    #@TestMarker          SNMP v3 with custom configuration
    #@TestName            v3_customconf: TODO
    #@TestIssue           none
    #@TestPurpose         TODO.
    #@TestPreamble        none
    #@TestStep            TODO.
    #@TestPostamble       none
    #@TestResult          TODO.
  -->
  <function name="snmp_v3_custom_004" scope="local">
    <testcase name="getTestCaseName('v3 set the allowed-user property to a list')">
      <sequence>
        <try>
          <sequence>
            <call function="'testCase_Preamble'"/>
            <call function="'testStep'">
              { 'stepMessage' : 'Set the allowed-user property to a list' }
            </call>
            <call function="'dsconfig'">
              {
              'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
              'dsInstanceDn'     : DIRECTORY_INSTANCE_DN ,
              'dsInstancePswd'   : DIRECTORY_INSTANCE_PSWD ,
              'subcommand'       : 'set-connection-handler-prop' ,
              'objectType'       : 'handler-name' ,
              'objectName'       : 'SNMP Connection Handler' ,
              'optionsString'    : '--set allowed-user:%s' % defUser
              }
            </call>
            <call function="'dsconfig'">
              {
              'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
              'dsInstanceDn'     : DIRECTORY_INSTANCE_DN ,
              'dsInstancePswd'   : DIRECTORY_INSTANCE_PSWD ,
              'subcommand'       : 'set-connection-handler-prop' ,
              'objectType'       : 'handler-name' ,
              'objectName'       : 'SNMP Connection Handler' ,
              'optionsString'    : '--add allowed-user:%s' % otherUser
              }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : 'Restart the SNMP Connection Handler' }
            </call>
            <call function="'restartSNMPConnectionHandler'">
              {
              'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
              'dsInstanceDn'     : DIRECTORY_INSTANCE_DN ,
              'dsInstancePswd'   : DIRECTORY_INSTANCE_PSWD
              }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : 'Get with the myUser community' }
            </call>
            <call function="'SNMPGet'">
              {
              'snmpVersion'       : '3',
              'snmpHost'          : DIRECTORY_INSTANCE_HOST ,
              'snmpPort'          : SNMP_PORT ,
              'snmpUser'          : defUser ,
              'snmpCommunity'     : defContextProp ,
              'snmpSecurityLevel' : defSecurityLevelProp ,
              'snmpSecurityFile'  : mySecurityFile ,
              'snmpOIDs'          : oid ,
              'snmpStatus'        : 'noError'
              }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : 'Get with the myUser2 community' }
            </call>
            <call function="'SNMPGet'">
              {
              'snmpVersion'       : '3',
              'snmpHost'          : DIRECTORY_INSTANCE_HOST ,
              'snmpPort'          : SNMP_PORT ,
              'snmpUser'          : otherUser ,
              'snmpCommunity'     : defContextProp ,
              'snmpSecurityLevel' : defSecurityLevelProp ,
              'snmpSecurityFile'  : mySecurityFile ,
              'snmpOIDs'          : oid ,
              'snmpStatus'        : 'noError'
              }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : 'Restore the allowed-user property' }
            </call>
            <call function="'dsconfig'">
              {
              'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
              'dsInstanceDn'     : DIRECTORY_INSTANCE_DN ,
              'dsInstancePswd'   : DIRECTORY_INSTANCE_PSWD ,
              'subcommand'       : 'set-connection-handler-prop' ,
              'objectType'       : 'handler-name' ,
              'objectName'       : 'SNMP Connection Handler' ,
              'optionsString'    : '--set allowed-user:%s' % defUserProp
              }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : 'Restart the SNMP Connection Handler' }
            </call>
            <call function="'restartSNMPConnectionHandler'">
              {
              'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
              'dsInstanceDn'     : DIRECTORY_INSTANCE_DN ,
              'dsInstancePswd'   : DIRECTORY_INSTANCE_PSWD
              }
            </call>
          </sequence>
          <catch exception="'STAXException'" typevar="eType" var="eInfo">
            <message log="1" level="'fatal'">
              '%s: Test failed. eInfo(%s)' % (eType,eInfo)
            </message>
          </catch>
          <finally>
            <sequence>
              <call function="'testCase_Postamble'"/>
            </sequence>
          </finally>
        </try>
      </sequence>
    </testcase>
  </function>
  <!--- Test Case information
    #@TestMarker          SNMP v3 with custom configuration
    #@TestName            v3_customconf: TODO
    #@TestIssue           none
    #@TestPurpose         TODO.
    #@TestPreamble        none
    #@TestStep            TODO.
    #@TestPostamble       none
    #@TestResult          TODO.
  -->
  <function name="snmp_v3_custom_005" scope="local">
    <testcase name="getTestCaseName('v3 set the allowed-user property to otherUser')">
      <sequence>
        <try>
          <sequence>
            <call function="'testCase_Preamble'"/>
            <call function="'testStep'">
              { 'stepMessage' : 'Set the allowed-user property to otherUser' }
            </call>
            <call function="'dsconfig'">
              {
              'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
              'dsInstanceDn'     : DIRECTORY_INSTANCE_DN ,
              'dsInstancePswd'   : DIRECTORY_INSTANCE_PSWD ,
              'subcommand'       : 'set-connection-handler-prop' ,
              'objectType'       : 'handler-name' ,
              'objectName'       : 'SNMP Connection Handler' ,
              'optionsString'    : '--set allowed-user:%s' % otherUser
              }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : 'Restart the SNMP Connection Handler' }
            </call>
            <call function="'restartSNMPConnectionHandler'">
              {
              'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
              'dsInstanceDn'     : DIRECTORY_INSTANCE_DN ,
              'dsInstancePswd'   : DIRECTORY_INSTANCE_PSWD
              }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : 'Get with the defUser' }
            </call>
            <call function="'SNMPGet'">
              {
              'snmpVersion'       : '3',
              'snmpHost'          : DIRECTORY_INSTANCE_HOST ,
              'snmpPort'          : SNMP_PORT ,
              'snmpUser'          : defUser ,
              'snmpCommunity'     : defContextProp ,
              'snmpSecurityLevel' : defSecurityLevelProp ,
              'snmpSecurityFile'  : mySecurityFile ,
              'snmpOIDs'          : oid ,
              'snmpStatus'        : 'authorizationError'
              }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : 'Get with the otherUser' }
            </call>
            <call function="'SNMPGet'">
              {
              'snmpVersion'       : '3',
              'snmpHost'          : DIRECTORY_INSTANCE_HOST ,
              'snmpPort'          : SNMP_PORT ,
              'snmpUser'          : otherUser ,
              'snmpCommunity'     : defContextProp ,
              'snmpSecurityLevel' : defSecurityLevelProp ,
              'snmpSecurityFile'  : mySecurityFile ,
              'snmpOIDs'          : oid ,
              'snmpStatus'        : 'noError'
              }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : 'Restore the security-agent-file property' }
            </call>
            <call function="'dsconfig'">
              {
              'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
              'dsInstanceDn'     : DIRECTORY_INSTANCE_DN ,
              'dsInstancePswd'   : DIRECTORY_INSTANCE_PSWD ,
              'subcommand'       : 'set-connection-handler-prop' ,
              'objectType'       : 'handler-name' ,
              'objectName'       : 'SNMP Connection Handler' ,
              'optionsString'    : '--set allowed-user:%s' % defUserProp
              }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : 'Restart the SNMP Connection Handler' }
            </call>
            <call function="'restartSNMPConnectionHandler'">
              {
              'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
              'dsInstanceDn'     : DIRECTORY_INSTANCE_DN ,
              'dsInstancePswd'   : DIRECTORY_INSTANCE_PSWD
              }
            </call>
          </sequence>
          <catch exception="'STAXException'" typevar="eType" var="eInfo">
            <message log="1" level="'fatal'">
              '%s: Test failed. eInfo(%s)' % (eType,eInfo)
            </message>
          </catch>
          <finally>
            <sequence>
              <call function="'testCase_Postamble'"/>
            </sequence>
          </finally>
        </try>
      </sequence>
    </testcase>
  </function>
  <!--- Test Case information
    #@TestMarker          SNMP v3 with custom configuration
    #@TestName            v3_customconf: TODO
    #@TestIssue           none
    #@TestPurpose         TODO.
    #@TestPreamble        none
    #@TestStep            TODO.
    #@TestPostamble       none
    #@TestResult          TODO.
  -->
  <function name="snmp_v3_custom_006" scope="local">
    <testcase name="getTestCaseName('v3 set the security-level property to low')">
      <sequence>
        <try>
          <sequence>
            <call function="'testCase_Preamble'"/>
            <call function="'testStep'">
              { 'stepMessage' : 'Set the security-level property to low' }
            </call>
            <call function="'dsconfig'">
              {
              'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
              'dsInstanceDn'     : DIRECTORY_INSTANCE_DN ,
              'dsInstancePswd'   : DIRECTORY_INSTANCE_PSWD ,
              'subcommand'       : 'set-connection-handler-prop' ,
              'objectType'       : 'handler-name' ,
              'objectName'       : 'SNMP Connection Handler' ,
              'optionsString'    : '--set security-level:%s' \
                                   % lowSecurityLevelProp
              }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : 'Restart the SNMP Connection Handler' }
            </call>
            <call function="'restartSNMPConnectionHandler'">
              {
              'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
              'dsInstanceDn'     : DIRECTORY_INSTANCE_DN ,
              'dsInstancePswd'   : DIRECTORY_INSTANCE_PSWD
              }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : 'Get with the myUser1 and low security level' }
            </call>
            <call function="'SNMPGet'">
              {
              'snmpVersion'       : '3',
              'snmpHost'          : DIRECTORY_INSTANCE_HOST ,
              'snmpPort'          : SNMP_PORT ,
              'snmpUser'          : lowUser ,
              'snmpCommunity'     : defContextProp ,
              'snmpSecurityLevel' : lowSecurityLevelProp ,
              'snmpSecurityFile'  : mySecurityFile ,
              'snmpOIDs'          : oid ,
              'snmpStatus'        : 'noError'
              }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : 'Get with the myUser2 and med security level' }
            </call>
            <call function="'SNMPGet'">
              {
              'snmpVersion'       : '3',
              'snmpHost'          : DIRECTORY_INSTANCE_HOST ,
              'snmpPort'          : SNMP_PORT ,
              'snmpUser'          : defUser ,
              'snmpCommunity'     : defContextProp ,
              'snmpSecurityLevel' : defSecurityLevelProp ,
              'snmpSecurityFile'  : mySecurityFile ,
              'snmpOIDs'          : oid ,
              'snmpStatus'        : 'noError'
              }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : 'Get with the myUser3 and high security level' }
            </call>
            <call function="'SNMPGet'">
              {
              'snmpVersion'       : '3',
              'snmpHost'          : DIRECTORY_INSTANCE_HOST ,
              'snmpPort'          : SNMP_PORT ,
              'snmpUser'          : highUser ,
              'snmpCommunity'     : defContextProp ,
              'snmpSecurityLevel' : highSecurityLevelProp ,
              'snmpSecurityFile'  : mySecurityFile ,
              'snmpOIDs'          : oid ,
              'snmpStatus'        : 'noError'
              }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : 'Restore the security-level property' }
            </call>
            <call function="'dsconfig'">
              {
              'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
              'dsInstanceDn'     : DIRECTORY_INSTANCE_DN ,
              'dsInstancePswd'   : DIRECTORY_INSTANCE_PSWD ,
              'subcommand'       : 'set-connection-handler-prop' ,
              'objectType'       : 'handler-name' ,
              'objectName'       : 'SNMP Connection Handler' ,
              'optionsString'    : '--set security-level:%s' \
                                   % defSecurityLevelProp
              }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : 'Restart the SNMP Connection Handler' }
            </call>
            <call function="'restartSNMPConnectionHandler'">
              {
              'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
              'dsInstanceDn'     : DIRECTORY_INSTANCE_DN ,
              'dsInstancePswd'   : DIRECTORY_INSTANCE_PSWD
              }
            </call>
          </sequence>
          <catch exception="'STAXException'" typevar="eType" var="eInfo">
            <message log="1" level="'fatal'">
              '%s: Test failed. eInfo(%s)' % (eType,eInfo)
            </message>
          </catch>
          <finally>
            <sequence>
              <call function="'testCase_Postamble'"/>
            </sequence>
          </finally>
        </try>
      </sequence>
    </testcase>
  </function>
  <!--- Test Case information
    #@TestMarker          SNMP v3 with custom configuration
    #@TestName            v3_customconf: TODO
    #@TestIssue           none
    #@TestPurpose         TODO.
    #@TestPreamble        none
    #@TestStep            TODO.
    #@TestPostamble       none
    #@TestResult          TODO.
  -->
  <function name="snmp_v3_custom_007" scope="local">
    <testcase name="getTestCaseName('v3 set the security-level property to high')">
      <sequence>
        <try>
          <sequence>
            <call function="'testCase_Preamble'"/>
            <call function="'testStep'">
              { 'stepMessage' : 'Set the security-level property to high' }
            </call>
            <call function="'dsconfig'">
              {
              'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
              'dsInstanceDn'     : DIRECTORY_INSTANCE_DN ,
              'dsInstancePswd'   : DIRECTORY_INSTANCE_PSWD ,
              'subcommand'       : 'set-connection-handler-prop' ,
              'objectType'       : 'handler-name' ,
              'objectName'       : 'SNMP Connection Handler' ,
              'optionsString'    : '--set security-level:%s' \
                                   % highSecurityLevelProp
              }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : 'Restart the SNMP Connection Handler' }
            </call>
            <call function="'restartSNMPConnectionHandler'">
              {
              'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
              'dsInstanceDn'     : DIRECTORY_INSTANCE_DN ,
              'dsInstancePswd'   : DIRECTORY_INSTANCE_PSWD
              }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : 'Get with the myUser1 and low security level' }
            </call>
            <call function="'SNMPGet'">
              {
              'snmpVersion'       : '3',
              'snmpHost'          : DIRECTORY_INSTANCE_HOST ,
              'snmpPort'          : SNMP_PORT ,
              'snmpUser'          : lowUser ,
              'snmpCommunity'     : defContextProp ,
              'snmpSecurityLevel' : lowSecurityLevelProp ,
              'snmpSecurityFile'  : mySecurityFile ,
              'snmpOIDs'          : oid ,
              'snmpStatus'        : 'authorizationError'
              }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : 'Get with the myUser2 and med security level' }
            </call>
            <call function="'SNMPGet'">
              {
              'snmpVersion'       : '3',
              'snmpHost'          : DIRECTORY_INSTANCE_HOST ,
              'snmpPort'          : SNMP_PORT ,
              'snmpUser'          : defUser ,
              'snmpCommunity'     : defContextProp ,
              'snmpSecurityLevel' : defSecurityLevelProp ,
              'snmpSecurityFile'  : mySecurityFile ,
              'snmpOIDs'          : oid ,
              'snmpStatus'        : 'authorizationError'
              }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : 'Get with the myUser3 and high security level' }
            </call>
            <call function="'SNMPGet'">
              {
              'snmpVersion'       : '3',
              'snmpHost'          : DIRECTORY_INSTANCE_HOST ,
              'snmpPort'          : SNMP_PORT ,
              'snmpUser'          : highUser ,
              'snmpCommunity'     : defContextProp ,
              'snmpSecurityLevel' : highSecurityLevelProp ,
              'snmpSecurityFile'  : mySecurityFile ,
              'snmpOIDs'          : oid ,
              'snmpStatus'        : 'noError'
              }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : 'Restore the security-level property' }
            </call>
            <call function="'dsconfig'">
              {
              'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
              'dsInstanceDn'     : DIRECTORY_INSTANCE_DN ,
              'dsInstancePswd'   : DIRECTORY_INSTANCE_PSWD ,
              'subcommand'       : 'set-connection-handler-prop' ,
              'objectType'       : 'handler-name' ,
              'objectName'       : 'SNMP Connection Handler' ,
              'optionsString'    : '--set security-level:%s' \
                                   % defSecurityLevelProp
              }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : 'Restart the SNMP Connection Handler' }
            </call>
            <call function="'restartSNMPConnectionHandler'">
              {
              'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
              'dsInstanceDn'     : DIRECTORY_INSTANCE_DN ,
              'dsInstancePswd'   : DIRECTORY_INSTANCE_PSWD
              }
            </call>
          </sequence>
          <catch exception="'STAXException'" typevar="eType" var="eInfo">
            <message log="1" level="'fatal'">
              '%s: Test failed. eInfo(%s)' % (eType,eInfo)
            </message>
          </catch>
          <finally>
            <sequence>
              <call function="'testCase_Postamble'"/>
            </sequence>
          </finally>
        </try>
      </sequence>
    </testcase>
  </function>
  <!--- Test Case information
    #@TestMarker          SNMP v3 with custom configuration
    #@TestName            v3_customconf: TODO
    #@TestIssue           none
    #@TestPurpose         TODO.
    #@TestPreamble        none
    #@TestStep            TODO.
    #@TestPostamble       none
    #@TestResult          TODO.
  -->
  <function name="snmp_v3_custom_008" scope="local">
    <testcase name="getTestCaseName('v3 set the security-level property to wrong')">
      <sequence>
        <try>
          <sequence>
            <call function="'testCase_Preamble'"/>
            <call function="'testStep'">
              { 'stepMessage' : 'Set the security-level property to wrong' }
            </call>
            <call function="'dsconfig'">
              {
              'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
              'dsInstanceDn'     : DIRECTORY_INSTANCE_DN ,
              'dsInstancePswd'   : DIRECTORY_INSTANCE_PSWD ,
              'subcommand'       : 'set-connection-handler-prop' ,
              'objectType'       : 'handler-name' ,
              'objectName'       : 'SNMP Connection Handler' ,
              'optionsString'    : '--set security-level:%s' \
                                   % wrongSecurityLevelProp ,
              'expectedRC'       : 1
              }
            </call>
            <script>
              returnString = STAXResult[0][1]
              msg1 = 'The value "%s" is not a valid value for the' \
                     % wrongSecurityLevelProp
              msg2 = 'SNMP Connection Handler property "security-level"'
              msg3 = 'which has the following syntax:'
              msg4 = 'authnopriv | authpriv | noauthnopriv'
              msg = '%s %s %s %s' % (msg1, msg2, msg3, msg4)
            </script>
            <call function="'checktestString'">
              {
              'returnString'   : returnString ,
              'expectedString' : msg
              }
            </call>
          </sequence>
          <catch exception="'STAXException'" typevar="eType" var="eInfo">
            <message log="1" level="'fatal'">
              '%s: Test failed. eInfo(%s)' % (eType,eInfo)
            </message>
          </catch>
          <finally>
            <sequence>
              <call function="'testCase_Postamble'"/>
            </sequence>
          </finally>
        </try>
      </sequence>
    </testcase>
  </function>
  <!--- Test Case information
    #@TestMarker          SNMP v3 with custom configuration
    #@TestName            v3_customconf: TODO
    #@TestIssue           none
    #@TestPurpose         TODO.
    #@TestPreamble        none
    #@TestStep            TODO.
    #@TestPostamble       none
    #@TestResult          TODO.
  -->
  <function name="snmp_v3_custom_009" scope="local">
    <testcase name="getTestCaseName('v3 restore the security-agent-file property')">
      <sequence>
        <try>
          <sequence>
            <call function="'testCase_Preamble'"/>
            <call function="'testStep'">
              { 'stepMessage' : 'Restore the security-agent-file property' }
            </call>
            <call function="'dsconfig'">
              {
              'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
              'dsInstanceDn'     : DIRECTORY_INSTANCE_DN ,
              'dsInstancePswd'   : DIRECTORY_INSTANCE_PSWD ,
              'subcommand'       : 'set-connection-handler-prop' ,
              'objectType'       : 'handler-name' ,
              'objectName'       : 'SNMP Connection Handler' ,
              'optionsString'    : '--set security-agent-file:%s' \
                                   % defSecurityFileProp
              }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : 'Restart the SNMP Connection Handler' }
            </call>
            <call function="'restartSNMPConnectionHandler'">
              {
              'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
              'dsInstanceDn'     : DIRECTORY_INSTANCE_DN ,
              'dsInstancePswd'   : DIRECTORY_INSTANCE_PSWD
              }
            </call>
          </sequence>
          <catch exception="'STAXException'" typevar="eType" var="eInfo">
            <message log="1" level="'fatal'">
              '%s: Test failed. eInfo(%s)' % (eType,eInfo)
            </message>
          </catch>
          <finally>
            <sequence>
              <call function="'testCase_Postamble'"/>
            </sequence>
          </finally>
        </try>
      </sequence>
    </testcase>
  </function>
</stax>
opends/tests/staf-tests/functional-tests/testcases/snmp/v3/snmp_v3_defaultconf_tests.xml
New file
@@ -0,0 +1,703 @@
<?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.
 !      Portions Copyright 2012 ForgeRock AS
 ! -->
<stax>
  <!--- Test Case information
    #@TestMarker          SNMP v3 with default configuration
    #@TestName            v3_defaultconf: get with snmpAdmin user
                          and default context
    #@TestIssue           none
    #@TestPurpose         Check that a SNMP Get request with snmpAdmin
                          user and default context fails with
                          authorizationError.
    #@TestPreamble        none
    #@TestStep            SNMP Get request.
    #@TestPostamble       none
    #@TestResult          Success if SNMPGet returns 0.
  -->
  <function name="snmp_v3_default_001" scope="local">
    <testcase name="getTestCaseName('v3 get with snmpAdmin and default context')">
      <sequence>
        <try>
          <sequence>
            <call function="'testCase_Preamble'"/>
            <call function="'testStep'">
              { 'stepMessage' : 'Get with snmpAdmin and default context' }
            </call>
            <call function="'SNMPGet'">
              {
              'snmpVersion'       : '3',
              'snmpHost'          : DIRECTORY_INSTANCE_HOST ,
              'snmpPort'          : SNMP_PORT ,
              'snmpUser'          : 'snmpAdmin' ,
              'snmpCommunity'     : context ,
              'snmpSecurityLevel' : securityLevel ,
              'snmpSecurityFile'  : securityFile ,
              'snmpOIDs'          : oid ,
              'snmpStatus'        : 'authorizationError'
              }
            </call>
          </sequence>
          <catch exception="'STAXException'" typevar="eType" var="eInfo">
            <message log="1" level="'fatal'">
              '%s: Test failed. eInfo(%s)' % (eType,eInfo)
            </message>
          </catch>
          <finally>
            <sequence>
              <call function="'testCase_Postamble'"/>
            </sequence>
          </finally>
        </try>
      </sequence>
    </testcase>
  </function>
  <!--- Test Case information
    #@TestMarker          SNMP v3 with default configuration
    #@TestName            v3_defaultconf: get with snmpAdmin user
                          and null context
    #@TestIssue           none
    #@TestPurpose         Check that a SNMP Get request with snmpAdmin
                          user and null context succeeds but the OIDs
                          values are not correct.
    #@TestPreamble        none
    #@TestStep            SNMP Get request.
    #@TestPostamble       none
    #@TestResult          Success if SNMPGet returns 0.
  -->
  <function name="snmp_v3_default_002" scope="local">
    <testcase name="getTestCaseName('v3 get with snmpAdmin and null context')">
      <sequence>
        <try>
          <sequence>
            <call function="'testCase_Preamble'"/>
            <call function="'testStep'">
              { 'stepMessage' : 'Get with snmpAdmin and null context' }
            </call>
            <call function="'SNMPGet'">
              {
              'snmpVersion'       : '3',
              'snmpHost'          : DIRECTORY_INSTANCE_HOST ,
              'snmpPort'          : SNMP_PORT ,
              'snmpUser'          : 'snmpAdmin' ,
              'snmpCommunity'     : 'null' ,
              'snmpSecurityLevel' : securityLevel ,
              'snmpSecurityFile'  : securityFile ,
              'snmpOIDs'          : oid ,
              'snmpStatus'        : 'noError' ,
              'snmpValidOIDs'     : 'False'
              }
            </call>
          </sequence>
          <catch exception="'STAXException'" typevar="eType" var="eInfo">
            <message log="1" level="'fatal'">
              '%s: Test failed. eInfo(%s)' % (eType,eInfo)
            </message>
          </catch>
          <finally>
            <sequence>
              <call function="'testCase_Postamble'"/>
            </sequence>
          </finally>
        </try>
      </sequence>
    </testcase>
  </function>
  <!--- Test Case information
    #@TestMarker          SNMP v3 with default configuration
    #@TestName            v3_defaultconf: det with snmpAdmin user
                          and OpenDS context
    #@TestIssue           none
    #@TestPurpose         Check that a SNMP Set request with snmpAdmin
                          user and default context fails with
                          authorizationError.
    #@TestPreamble        none
    #@TestStep            SNMP Set request.
    #@TestPostamble       none
    #@TestResult          Success if SNMPSet returns 0.
  -->
  <function name="snmp_v3_default_003" scope="local">
    <testcase name="getTestCaseName('v3 set with snmpAdmin and default context')">
      <sequence>
        <try>
          <sequence>
            <call function="'testCase_Preamble'"/>
            <call function="'testStep'">
              { 'stepMessage' : 'Set with snmpAdmin and default context' }
            </call>
            <call function="'SNMPSet'">
              {
              'snmpVersion'       : '3',
              'snmpHost'          : DIRECTORY_INSTANCE_HOST ,
              'snmpPort'          : SNMP_PORT ,
              'snmpUser'          : 'snmpAdmin' ,
              'snmpCommunity'     : context ,
              'snmpSecurityLevel' : securityLevel ,
              'snmpSecurityFile'  : securityFile ,
              'snmpOIDs'          : oid ,
              'snmpStatus'        : 'authorizationError'
              }
            </call>
          </sequence>
          <catch exception="'STAXException'" typevar="eType" var="eInfo">
            <message log="1" level="'fatal'">
              '%s: Test failed. eInfo(%s)' % (eType,eInfo)
            </message>
          </catch>
          <finally>
            <sequence>
              <call function="'testCase_Postamble'"/>
            </sequence>
          </finally>
        </try>
      </sequence>
    </testcase>
  </function>
  <!--- Test Case information
    #@TestMarker          SNMP v3 with default configuration
    #@TestName            v3_defaultconf: set with snmpAdmin user
                          and null context
    #@TestIssue           none
    #@TestPurpose         Check that a SNMP Set request with snmpAdmin
                          user and null context fails with noAccess.
    #@TestPreamble        none
    #@TestStep            SNMP Set request.
    #@TestPostamble       none
    #@TestResult          Success if SNMPSet returns 0.
  -->
  <function name="snmp_v3_default_004" scope="local">
    <testcase name="getTestCaseName('v3 set with snmpAdmin and null context')">
      <sequence>
        <try>
          <sequence>
            <call function="'testCase_Preamble'"/>
            <call function="'testStep'">
              { 'stepMessage' : 'Set with snmpAdmin and null context' }
            </call>
            <call function="'SNMPSet'">
              {
              'snmpVersion'       : '3',
              'snmpHost'          : DIRECTORY_INSTANCE_HOST ,
              'snmpPort'          : SNMP_PORT ,
              'snmpUser'          : 'snmpAdmin' ,
              'snmpCommunity'     : 'null' ,
              'snmpSecurityLevel' : securityLevel ,
              'snmpSecurityFile'  : securityFile ,
              'snmpOIDs'          : oid ,
              'snmpStatus'        : 'noAccess'
              }
            </call>
          </sequence>
          <catch exception="'STAXException'" typevar="eType" var="eInfo">
            <message log="1" level="'fatal'">
              '%s: Test failed. eInfo(%s)' % (eType,eInfo)
            </message>
          </catch>
          <finally>
            <sequence>
              <call function="'testCase_Postamble'"/>
            </sequence>
          </finally>
        </try>
      </sequence>
    </testcase>
  </function>
  <!--- Test Case information
    #@TestMarker          SNMP v3 with default configuration
    #@TestName            v3_defaultconf: get with defaultUser user
                          and default context
    #@TestIssue           none
    #@TestPurpose         Check that a SNMP Get request with defaultUser
                          user and default context fails with
                          authorizationError.
    #@TestPreamble        none
    #@TestStep            SNMP Get request.
    #@TestPostamble       none
    #@TestResult          Success if SNMPGet returns 0.
  -->
  <function name="snmp_v3_default_005" scope="local">
    <testcase name="getTestCaseName('v3 get with defaultUser and default context')">
      <sequence>
        <try>
          <sequence>
            <call function="'testCase_Preamble'"/>
            <call function="'testStep'">
              { 'stepMessage' : 'Get with defaultUser and default context' }
            </call>
            <call function="'SNMPGet'">
              {
              'snmpVersion'       : '3',
              'snmpHost'          : DIRECTORY_INSTANCE_HOST ,
              'snmpPort'          : SNMP_PORT ,
              'snmpUser'          : 'defaultUser' ,
              'snmpCommunity'     : context ,
              'snmpSecurityLevel' : securityLevel ,
              'snmpSecurityFile'  : securityFile ,
              'snmpOIDs'          : oid ,
              'snmpStatus'        : 'authorizationError'
              }
            </call>
          </sequence>
          <catch exception="'STAXException'" typevar="eType" var="eInfo">
            <message log="1" level="'fatal'">
              '%s: Test failed. eInfo(%s)' % (eType,eInfo)
            </message>
          </catch>
          <finally>
            <sequence>
              <call function="'testCase_Postamble'"/>
            </sequence>
          </finally>
        </try>
      </sequence>
    </testcase>
  </function>
  <!--- Test Case information
    #@TestMarker          SNMP v3 with default configuration
    #@TestName            v3_defaultconf: get with defaultUser user
                          and null context
    #@TestIssue           none
    #@TestPurpose         Check that a SNMP Get request with defaultUser
                          user and null context succeeds but the OIDs
                          values are not correct.
    #@TestPreamble        none
    #@TestStep            SNMP Get request.
    #@TestPostamble       none
    #@TestResult          Success if SNMPGet returns 0.
  -->
  <function name="snmp_v3_default_006" scope="local">
    <testcase name="getTestCaseName('v3 get with defaultUser and null context')">
      <sequence>
        <try>
          <sequence>
            <call function="'testCase_Preamble'"/>
            <call function="'testStep'">
              { 'stepMessage' : 'Get with defaultUser and null context' }
            </call>
            <call function="'SNMPGet'">
              {
              'snmpVersion'       : '3',
              'snmpHost'          : DIRECTORY_INSTANCE_HOST ,
              'snmpPort'          : SNMP_PORT ,
              'snmpUser'          : 'defaultUser' ,
              'snmpCommunity'     : 'null' ,
              'snmpSecurityLevel' : securityLevel ,
              'snmpSecurityFile'  : securityFile ,
              'snmpOIDs'          : oid ,
              'snmpStatus'        : 'noError' ,
              'snmpValidOIDs'     : 'False'
              }
            </call>
          </sequence>
          <catch exception="'STAXException'" typevar="eType" var="eInfo">
            <message log="1" level="'fatal'">
              '%s: Test failed. eInfo(%s)' % (eType,eInfo)
            </message>
          </catch>
          <finally>
            <sequence>
              <call function="'testCase_Postamble'"/>
            </sequence>
          </finally>
        </try>
      </sequence>
    </testcase>
  </function>
  <!--- Test Case information
    #@TestMarker          SNMP v3 with default configuration
    #@TestName            v3_defaultconf: set with defaultUser user
                          and default context
    #@TestIssue           none
    #@TestPurpose         Check that a SNMP Set request with defaultUser
                          user and default context fails with
                          authorizationError.
    #@TestPreamble        none
    #@TestStep            SNMP Set request.
    #@TestPostamble       none
    #@TestResult          Success if SNMPSet returns 0.
  -->
  <function name="snmp_v3_default_007" scope="local">
    <testcase name="getTestCaseName('v3 set with defaultUser and default context')">
      <sequence>
        <try>
          <sequence>
            <call function="'testCase_Preamble'"/>
            <call function="'testStep'">
              { 'stepMessage' : 'Set with defaultUser and default context' }
            </call>
            <call function="'SNMPSet'">
              {
              'snmpVersion'       : '3',
              'snmpHost'          : DIRECTORY_INSTANCE_HOST ,
              'snmpPort'          : SNMP_PORT ,
              'snmpUser'          : 'defaultUser' ,
              'snmpCommunity'     : context ,
              'snmpSecurityLevel' : securityLevel ,
              'snmpSecurityFile'  : securityFile ,
              'snmpOIDs'          : oid ,
              'snmpStatus'        : 'authorizationError'
              }
            </call>
          </sequence>
          <catch exception="'STAXException'" typevar="eType" var="eInfo">
            <message log="1" level="'fatal'">
              '%s: Test failed. eInfo(%s)' % (eType,eInfo)
            </message>
          </catch>
          <finally>
            <sequence>
              <call function="'testCase_Postamble'"/>
            </sequence>
          </finally>
        </try>
      </sequence>
    </testcase>
  </function>
  <!--- Test Case information
    #@TestMarker          SNMP v3 with default configuration
    #@TestName            v3_defaultconf: set with defaultUser user
                          and null context
    #@TestIssue           none
    #@TestPurpose         Check that a SNMP Set request with defaultUser
                          user and null context fails with noAccess.
    #@TestPreamble        none
    #@TestStep            SNMP Set request.
    #@TestPostamble       none
    #@TestResult          Success if SNMPSet returns 0.
  -->
  <function name="snmp_v3_default_008" scope="local">
    <testcase name="getTestCaseName('v3 set with defaultUser and null context')">
      <sequence>
        <try>
          <sequence>
            <call function="'testCase_Preamble'"/>
            <call function="'testStep'">
              { 'stepMessage' : 'Set with defaultUser and null context' }
            </call>
            <call function="'SNMPSet'">
              {
              'snmpVersion'       : '3',
              'snmpHost'          : DIRECTORY_INSTANCE_HOST ,
              'snmpPort'          : SNMP_PORT ,
              'snmpUser'          : 'defaultUser' ,
              'snmpCommunity'     : 'null' ,
              'snmpSecurityLevel' : securityLevel ,
              'snmpSecurityFile'  : securityFile ,
              'snmpOIDs'          : oid ,
              'snmpStatus'        : 'noAccess'
              }
            </call>
          </sequence>
          <catch exception="'STAXException'" typevar="eType" var="eInfo">
            <message log="1" level="'fatal'">
              '%s: Test failed. eInfo(%s)' % (eType,eInfo)
            </message>
          </catch>
          <finally>
            <sequence>
              <call function="'testCase_Postamble'"/>
            </sequence>
          </finally>
        </try>
      </sequence>
    </testcase>
  </function>
  <!--- Test Case information
    #@TestMarker          SNMP v3 with default configuration
    #@TestName            v3_defaultconf: get with unknown user
                          and default context
    #@TestIssue           none
    #@TestPurpose         Check that a SNMP Get request with unknown
                          user and default context fails with
                          SnmpStatusException.
    #@TestPreamble        none
    #@TestStep            SNMP Get request.
    #@TestPostamble       none
    #@TestResult          Success if SNMPGet returns 0.
  -->
  <function name="snmp_v3_default_009" scope="local">
    <testcase name="getTestCaseName('v3 get with unknown user and default context')">
      <sequence>
        <try>
          <sequence>
            <call function="'testCase_Preamble'"/>
            <call function="'testStep'">
              { 'stepMessage' : 'Get with unknown user and default context' }
            </call>
            <call function="'SNMPGet'">
              {
              'snmpVersion'       : '3',
              'snmpHost'          : DIRECTORY_INSTANCE_HOST ,
              'snmpPort'          : SNMP_PORT ,
              'snmpUser'          : 'myUser' ,
              'snmpCommunity'     : context ,
              'snmpSecurityLevel' : securityLevel ,
              'snmpSecurityFile'  : securityFile ,
              'snmpOIDs'          : oid ,
              'snmpStatus'        : 'SnmpStatusException'
              }
            </call>
          </sequence>
          <catch exception="'STAXException'" typevar="eType" var="eInfo">
            <message log="1" level="'fatal'">
              '%s: Test failed. eInfo(%s)' % (eType,eInfo)
            </message>
          </catch>
          <finally>
            <sequence>
              <call function="'testCase_Postamble'"/>
            </sequence>
          </finally>
        </try>
      </sequence>
    </testcase>
  </function>
  <!--- Test Case information
    #@TestMarker          SNMP v3 with default configuration
    #@TestName            v3_defaultconf: get with unknown user
                          and null context
    #@TestIssue           none
    #@TestPurpose         Check that a SNMP Get request with unknown
                          user and null context fails with
                          SnmpStatusException.
    #@TestPreamble        none
    #@TestStep            SNMP Get request.
    #@TestPostamble       none
    #@TestResult          Success if SNMPGet returns 0.
  -->
  <function name="snmp_v3_default_010" scope="local">
    <testcase name="getTestCaseName('v3 get with unknown user and default context')">
      <sequence>
        <try>
          <sequence>
            <call function="'testCase_Preamble'"/>
            <call function="'testStep'">
              { 'stepMessage' : 'Get with unknown user and default context' }
            </call>
            <call function="'SNMPGet'">
              {
              'snmpVersion'       : '3',
              'snmpHost'          : DIRECTORY_INSTANCE_HOST ,
              'snmpPort'          : SNMP_PORT ,
              'snmpUser'          : 'myUser' ,
              'snmpCommunity'     : 'null' ,
              'snmpSecurityLevel' : securityLevel ,
              'snmpSecurityFile'  : securityFile ,
              'snmpOIDs'          : oid ,
              'snmpStatus'        : 'SnmpStatusException'
              }
            </call>
          </sequence>
          <catch exception="'STAXException'" typevar="eType" var="eInfo">
            <message log="1" level="'fatal'">
              '%s: Test failed. eInfo(%s)' % (eType,eInfo)
            </message>
          </catch>
          <finally>
            <sequence>
              <call function="'testCase_Postamble'"/>
            </sequence>
          </finally>
        </try>
      </sequence>
    </testcase>
  </function>
  <!--- Test Case information
    #@TestMarker          SNMP v3 with default configuration
    #@TestName            v3_defaultconf: set with unknown user
                          and default context
    #@TestIssue           none
    #@TestPurpose         Check that a SNMP Set request with unknown
                          user and default context fails with
                          SnmpStatusException.
    #@TestPreamble        none
    #@TestStep            SNMP Set request.
    #@TestPostamble       none
    #@TestResult          Success if SNMPSet returns 0.
  -->
  <function name="snmp_v3_default_011" scope="local">
    <testcase name="getTestCaseName('v3 set with unknown user and default context')">
      <sequence>
        <try>
          <sequence>
            <call function="'testCase_Preamble'"/>
            <call function="'testStep'">
              { 'stepMessage' : 'Set with unknown user and OpenDS context' }
            </call>
            <call function="'SNMPSet'">
              {
              'snmpVersion'       : '3',
              'snmpHost'          : DIRECTORY_INSTANCE_HOST ,
              'snmpPort'          : SNMP_PORT ,
              'snmpUser'          : 'myUser' ,
              'snmpCommunity'     : context ,
              'snmpSecurityLevel' : securityLevel ,
              'snmpSecurityFile'  : securityFile ,
              'snmpOIDs'          : oid ,
              'snmpStatus'        : 'SnmpStatusException'
              }
            </call>
          </sequence>
          <catch exception="'STAXException'" typevar="eType" var="eInfo">
            <message log="1" level="'fatal'">
              '%s: Test failed. eInfo(%s)' % (eType,eInfo)
            </message>
          </catch>
          <finally>
            <sequence>
              <call function="'testCase_Postamble'"/>
            </sequence>
          </finally>
        </try>
      </sequence>
    </testcase>
  </function>
  <!--- Test Case information
    #@TestMarker          SNMP v3 with default configuration
    #@TestName            v3_defaultconf: set with unknown user
                          and null context
    #@TestIssue           none
    #@TestPurpose         Check that a SNMP Set request with unknown
                          user and default context fails with
                          SnmpStatusException.
    #@TestPreamble        none
    #@TestStep            SNMP Set request.
    #@TestPostamble       none
    #@TestResult          Success if SNMPSet returns 0.
  -->
  <function name="snmp_v3_default_012" scope="local">
    <testcase name="getTestCaseName('v3 set with unknown user and null context')">
      <sequence>
        <try>
          <sequence>
            <call function="'testCase_Preamble'"/>
            <call function="'testStep'">
              { 'stepMessage' : 'Set with unknown user and null context' }
            </call>
            <call function="'SNMPSet'">
              {
              'snmpVersion'       : '3',
              'snmpHost'          : DIRECTORY_INSTANCE_HOST ,
              'snmpPort'          : SNMP_PORT ,
              'snmpUser'          : 'myUser' ,
              'snmpCommunity'     : 'null' ,
              'snmpSecurityLevel' : securityLevel ,
              'snmpSecurityFile'  : securityFile ,
              'snmpOIDs'          : oid ,
              'snmpStatus'        : 'SnmpStatusException'
              }
            </call>
          </sequence>
          <catch exception="'STAXException'" typevar="eType" var="eInfo">
            <message log="1" level="'fatal'">
              '%s: Test failed. eInfo(%s)' % (eType,eInfo)
            </message>
          </catch>
          <finally>
            <sequence>
              <call function="'testCase_Postamble'"/>
            </sequence>
          </finally>
        </try>
      </sequence>
    </testcase>
  </function>
</stax>
opends/tests/staf-tests/shared/functions/utils.xml
@@ -190,15 +190,16 @@
        <script>
          try:
            if issueId.__class__ is org.python.core.PyList:
            from org.python.core import PyList
            if issueId.__class__ is PyList:
                for issue in issueId:
                  if issue not in issuesList:
                    issuesList.append(issue)
            else:
              if issueId not in issuesList:
                issuesList.append(issueId)
          except:
            print 'Issues list undefined. Unable to add issue %s' % issueId
          except Exception,e:
            print 'Issues list undefined. Unable to add issue %s. Reason=%s' % (issueId,e)
        </script>
        <message log="1" level="'Error'">
          'ERROR: HIT **** Known Issue (%s) ****' % issueId