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

smaguin
20.49.2007 182bf900f0472c90615e7e5c8a4258b6c400ada3
new testsuite on logging
7 files added
2150 ■■■■■ changed files
opendj-sdk/opends/tests/functional-tests/testcases/logging/logging.xml 86 ●●●●● patch | view | raw | blame | history
opendj-sdk/opends/tests/functional-tests/testcases/logging/logging_cleanup.xml 94 ●●●●● patch | view | raw | blame | history
opendj-sdk/opends/tests/functional-tests/testcases/logging/logging_properties.xml 1104 ●●●●● patch | view | raw | blame | history
opendj-sdk/opends/tests/functional-tests/testcases/logging/logging_retention.xml 203 ●●●●● patch | view | raw | blame | history
opendj-sdk/opends/tests/functional-tests/testcases/logging/logging_rotation.xml 262 ●●●●● patch | view | raw | blame | history
opendj-sdk/opends/tests/functional-tests/testcases/logging/logging_setup.xml 99 ●●●●● patch | view | raw | blame | history
opendj-sdk/opends/tests/functional-tests/testcases/logging/logging_writer.xml 302 ●●●●● patch | view | raw | blame | history
opendj-sdk/opends/tests/functional-tests/testcases/logging/logging.xml
New file
@@ -0,0 +1,86 @@
<?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
 !
 !      Portions Copyright 2006-2007 Sun Microsystems, Inc.
 ! -->
<stax>
  <defaultcall function="main_logging"/>
  <function name="main_logging">
    <sequence>
      <block name="'logging'">
         <sequence>
          <script>
            CurrentTestPath['group']='security'
            CurrentTestPath['suite']=STAXCurrentBlock
          </script>
          <call function="'testSuite_Preamble'"/>
          <import machine="'%s' % (STAF_LOCAL_HOSTNAME)"
           file="'%s/testcases/logging/logging_lib.xml' % (TESTS_DIR)" />
          <import machine="'%s' % (STAF_LOCAL_HOSTNAME)"
            file="'%s/testcases/logging/logging_setup.xml' % (TESTS_DIR)"/>
          <call function="'logging_setup'"/>
          <import machine="'%s' % STAF_LOCAL_HOSTNAME"
            file="'%s/testcases/logging/logging_rotation.xml' % (TESTS_DIR)"/>
          <call function="'logging_rotation'" />
          <import machine="'%s' % STAF_LOCAL_HOSTNAME"
            file="'%s/testcases/logging/logging_properties.xml' % (TESTS_DIR)"/>
          <call function="'logging_properties'" />
          <import machine="'%s' % STAF_LOCAL_HOSTNAME"
            file="'%s/testcases/logging/logging_writer.xml' % (TESTS_DIR)"/>
          <call function="'logging_writer'" />
          <import machine="'%s' % STAF_LOCAL_HOSTNAME"
            file="'%s/testcases/logging/logging_retention.xml' % (TESTS_DIR)"/>
          <call function="'logging_retention'" />
          <import machine="'%s' % (STAF_LOCAL_HOSTNAME)"
            file="'%s/testcases/logging/logging_cleanup.xml' % (TESTS_DIR)"/>
          <call function="'logging_cleanup'"/>
          <call function="'testSuite_Postamble'"/>
        </sequence>
      </block>
    </sequence>
  </function>
</stax>
opendj-sdk/opends/tests/functional-tests/testcases/logging/logging_cleanup.xml
New file
@@ -0,0 +1,94 @@
<?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
 !
 !      Portions Copyright 2007 Sun Microsystems, Inc.
 ! -->
<stax>
  <defaultcall function="logging_cleanup"/>
  <function name="logging_cleanup">
    <sequence>
      <block name="'cleanup'">
        <sequence>
          <block name="'Block DS Process Stop'">
          <!--- Stop DS -->
            <sequence>
              <message>
                 'Stop DS running on port %s' % (DIRECTORY_INSTANCE_PORT)
              </message>
              <call function="'StopDsWithScript'">
                { 'location'  : STAF_REMOTE_HOSTNAME,
                  'dsHost'    : DIRECTORY_INSTANCE_HOST,
                  'dsPort'    : DIRECTORY_INSTANCE_PORT,
                  'dsBindDN'  : DIRECTORY_INSTANCE_DN,
                  'dsBindPwd' : DIRECTORY_INSTANCE_PSWD }
              </call>
              <call function="'checkRC'">
                  { 'returncode' : RC ,
                    'result'     : STAXResult }
              </call>
            </sequence>
          <!--- End Block DS Process Stop -->
          </block>
          <block name="'Block Remove DS Topology'">
          <!-- Remove  the topology created for the test suite -->
            <sequence>
              <message>
                 'Remove DS topology created for the Test Suite'
              </message>
              <call function="'removeTopology'"/>
              <call function="'checkRC'">
                  { 'returncode' : RC ,
                    'result'     : STAXResult }
              </call>
            </sequence>
          <!-- End Block Remove DS Topology-->
          </block>
        </sequence>
      </block>
     </sequence>
  </function>
</stax>
opendj-sdk/opends/tests/functional-tests/testcases/logging/logging_properties.xml
New file
@@ -0,0 +1,1104 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE stax SYSTEM "../../../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
 !
 !      Portions Copyright 2006-2007 Sun Microsystems, Inc.
 ! -->
<stax>
<defaultcall function="logging_properties"/>
<function name="logging_properties" scope="local">
<sequence>
       <!--- Test Case : access logger -->
       <!---
    #@TestMarker             access logger
    #@TestName               access logger properties check
    #@TestIssue
    #@TestPurpose           check the access logger properties.
    #@TestPreamble           none
    #@TestStep                 Check the  Access Logger's properties are correctly set and get using dsconfig
    #@TestStep                 Set a property
    #@TestStep                 Get the property and check it has been correctly updated
    #@TestPostamble          none
    #@TestResult                Success if OpenDS returns 0 for all operations
      -->
  <testcase name="'logging : properties checks:  Access logger '">
   <sequence>
    <call function="'testCase_Preamble'"/>
    <message>
        '----  Check the Access logger s properties  -----'
    </message>
    <!--   create a logger  publisher-->
    <message>'------  create logger publisher --' </message>
       <!-- DESACTRIVATED : bug 2107]-->
       <call function="'testIsFAIL'"/>
       <script>
           bug=2107
       </script>
       <if expr="bug == 0">
           <sequence>
        <call function="'dsconfig'">
      { 'dsInstanceHost'       : DIRECTORY_INSTANCE_HOST,
        'dsInstancePort'         : DIRECTORY_INSTANCE_PORT ,
        'dsInstanceDn'           : DIRECTORY_INSTANCE_DN ,
        'dsInstancePswd'       : DIRECTORY_INSTANCE_PSWD ,
        'subcommand'           : 'create-log-publisher' ,
        'objectType'              : 'publisher-name' ,
        'objectName'             :  'File-Based Access Logger',
        'optionsString'           : '--type file-based-access --set asynchronous:false --set log-file-mode:555 --set log-file:logs/access --set enabled:true ',
        'expectedRC'             : 0 }
         </call>
             </sequence>
        </if>
    <!--   auto-flush  -->
    <message>'------  set auto-flush to true --' </message>
    <call function="'dsconfig'">
      { 'dsInstanceHost'       : DIRECTORY_INSTANCE_HOST,
        'dsInstancePort'         : DIRECTORY_INSTANCE_PORT ,
        'dsInstanceDn'           : DIRECTORY_INSTANCE_DN ,
        'dsInstancePswd'       : DIRECTORY_INSTANCE_PSWD ,
        'subcommand'           : 'set-log-publisher-prop' ,
        'objectType'              : 'publisher-name' ,
        'objectName'             :   'File-Based Access Logger',
        'optionsString'           : '--set auto-flush:true',
        'expectedRC'             : 0 }
    </call>
    <message>'------  get auto-flush --' </message>
    <call function="'dsconfigGet'">
      { 'dsInstanceHost'       : DIRECTORY_INSTANCE_HOST,
        'dsInstancePort'         : DIRECTORY_INSTANCE_PORT ,
        'dsInstanceDn'           : DIRECTORY_INSTANCE_DN ,
        'dsInstancePswd'       : DIRECTORY_INSTANCE_PSWD ,
        'objectName'             : 'log-publisher' ,
        'propertyType'           : 'publisher' ,
        'propertyName'           :  'File-Based Access Logger',
        'attributeName'          : 'auto-flush',
        'expectedAttributeValue'         : 'true'  }
    </call>
    <!--   append  -->
    <message>'------  set append  to false  --' </message>
    <call function="'dsconfig'">
      { 'dsInstanceHost'       : DIRECTORY_INSTANCE_HOST,
        'dsInstancePort'         : DIRECTORY_INSTANCE_PORT ,
        'dsInstanceDn'           : DIRECTORY_INSTANCE_DN ,
        'dsInstancePswd'       : DIRECTORY_INSTANCE_PSWD ,
        'subcommand'           : 'set-log-publisher-prop' ,
        'objectType'              : 'publisher-name' ,
        'objectName'             :  'File-Based Access Logger',
        'optionsString'           : '--set append:false',
        'expectedRC'             : 0 }
    </call>
    <message>'------  get append --' </message>
    <call function="'dsconfigGet'">
      { 'dsInstanceHost'       : DIRECTORY_INSTANCE_HOST,
        'dsInstancePort'         : DIRECTORY_INSTANCE_PORT ,
        'dsInstanceDn'           : DIRECTORY_INSTANCE_DN ,
        'dsInstancePswd'       : DIRECTORY_INSTANCE_PSWD ,
        'objectName'             : 'log-publisher' ,
        'propertyType'           : 'publisher' ,
        'propertyName'           :  'File-Based Access Logger',
        'attributeName'          : 'append',
        'expectedAttributeValue'         : 'false'  }
    </call>
    <!--   asynchronous  -->
    <message>'------  set asynchronous  to true  --' </message>
    <call function="'dsconfig'">
      { 'dsInstanceHost'       : DIRECTORY_INSTANCE_HOST,
        'dsInstancePort'         : DIRECTORY_INSTANCE_PORT ,
        'dsInstanceDn'           : DIRECTORY_INSTANCE_DN ,
        'dsInstancePswd'       : DIRECTORY_INSTANCE_PSWD ,
        'subcommand'           : 'set-log-publisher-prop' ,
        'objectType'              : 'publisher-name' ,
        'objectName'             :  'File-Based Access Logger',
        'optionsString'           : '--set asynchronous:true',
        'expectedRC'             : 0 }
    </call>
    <message>'------  get asynchronous --' </message>
    <call function="'dsconfigGet'">
      { 'dsInstanceHost'       : DIRECTORY_INSTANCE_HOST,
        'dsInstancePort'         : DIRECTORY_INSTANCE_PORT ,
        'dsInstanceDn'           : DIRECTORY_INSTANCE_DN ,
        'dsInstancePswd'       : DIRECTORY_INSTANCE_PSWD ,
        'objectName'             : 'log-publisher' ,
        'propertyType'           : 'publisher' ,
        'propertyName'           : 'File-Based Access Logger',
        'attributeName'          : 'asynchronous',
        'expectedAttributeValue'         : 'true'  }
    </call>
    <!--   buffer-size  -->
    <message>'------  set buffer-size  to 10mb  --' </message>
    <call function="'dsconfig'">
      { 'dsInstanceHost'       : DIRECTORY_INSTANCE_HOST,
        'dsInstancePort'         : DIRECTORY_INSTANCE_PORT ,
        'dsInstanceDn'           : DIRECTORY_INSTANCE_DN ,
        'dsInstancePswd'       : DIRECTORY_INSTANCE_PSWD ,
        'subcommand'           : 'set-log-publisher-prop' ,
        'objectType'              : 'publisher-name' ,
        'objectName'             :  'File-Based Access Logger',
        'optionsString'           : '--set buffer-size:10mb',
        'expectedRC'             : 0 }
    </call>
    <message>'------  get buffer-size --' </message>
    <call function="'dsconfigGet'">
      { 'dsInstanceHost'       : DIRECTORY_INSTANCE_HOST,
        'dsInstancePort'         : DIRECTORY_INSTANCE_PORT ,
        'dsInstanceDn'           : DIRECTORY_INSTANCE_DN ,
        'dsInstancePswd'       : DIRECTORY_INSTANCE_PSWD ,
        'objectName'             : 'log-publisher' ,
        'propertyType'           : 'publisher' ,
        'propertyName'           : 'File-Based Access Logger',
        'attributeName'          : 'buffer-size',
        'expectedAttributeValue'         : '10 mb'  }
    </call>
    <!--   time-interval  -->
    <message>'------  set time-interval  to 3m  --' </message>
    <call function="'dsconfig'">
      { 'dsInstanceHost'       : DIRECTORY_INSTANCE_HOST,
        'dsInstancePort'         : DIRECTORY_INSTANCE_PORT ,
        'dsInstanceDn'           : DIRECTORY_INSTANCE_DN ,
        'dsInstancePswd'       : DIRECTORY_INSTANCE_PSWD ,
        'subcommand'           : 'set-log-publisher-prop' ,
        'objectType'              : 'publisher-name' ,
        'objectName'             :  'File-Based Access Logger',
        'optionsString'           : '--set time-interval:3m',
        'expectedRC'             : 0 }
    </call>
    <message>'------  get time-interval --' </message>
    <call function="'dsconfigGet'">
      { 'dsInstanceHost'       : DIRECTORY_INSTANCE_HOST,
        'dsInstancePort'         : DIRECTORY_INSTANCE_PORT ,
        'dsInstanceDn'           : DIRECTORY_INSTANCE_DN ,
        'dsInstancePswd'       : DIRECTORY_INSTANCE_PSWD ,
        'objectName'             : 'log-publisher' ,
        'propertyType'           : 'publisher' ,
        'propertyName'           : 'File-Based Access Logger',
        'attributeName'          : 'time-interval',
        'extraParams'             : '-M s',
        'expectedAttributeValue'         : '180 s'  }
    </call>
    <!--   log-file  -->
    <message>'------  set log-file  to logs/testaccess  --' </message>
    <call function="'dsconfig'">
      { 'dsInstanceHost'       : DIRECTORY_INSTANCE_HOST,
        'dsInstancePort'         : DIRECTORY_INSTANCE_PORT ,
        'dsInstanceDn'           : DIRECTORY_INSTANCE_DN ,
        'dsInstancePswd'       : DIRECTORY_INSTANCE_PSWD ,
        'subcommand'           : 'set-log-publisher-prop' ,
        'objectType'              : 'publisher-name' ,
        'objectName'             :  'File-Based Access Logger',
        'optionsString'           : '--set log-file:logs/testaccess',
        'expectedRC'             : 0 }
    </call>
    <message>'------  get log-file --' </message>
    <call function="'dsconfigGet'">
      { 'dsInstanceHost'       : DIRECTORY_INSTANCE_HOST,
        'dsInstancePort'         : DIRECTORY_INSTANCE_PORT ,
        'dsInstanceDn'           : DIRECTORY_INSTANCE_DN ,
        'dsInstancePswd'       : DIRECTORY_INSTANCE_PSWD ,
        'objectName'             : 'log-publisher' ,
        'propertyType'           : 'publisher' ,
        'propertyName'           : 'File-Based Access Logger',
        'attributeName'          : 'log-file',
        'expectedAttributeValue'         : 'logs/testaccess'  }
    </call>
    <!--   log-file  -->
    <message>'------  set log-file  to logs/access  --' </message>
    <call function="'dsconfig'">
      { 'dsInstanceHost'       : DIRECTORY_INSTANCE_HOST,
        'dsInstancePort'         : DIRECTORY_INSTANCE_PORT ,
        'dsInstanceDn'           : DIRECTORY_INSTANCE_DN ,
        'dsInstancePswd'       : DIRECTORY_INSTANCE_PSWD ,
        'subcommand'           : 'set-log-publisher-prop' ,
        'objectType'              : 'publisher-name' ,
        'objectName'             :  'File-Based Access Logger',
        'optionsString'           : '--set log-file:logs/access',
        'expectedRC'             : 0 }
    </call>
    <!--   log-file-mode  -->
    <message>'------  set log-file-mode  to 777  --' </message>
    <call function="'dsconfig'">
      { 'dsInstanceHost'       : DIRECTORY_INSTANCE_HOST,
        'dsInstancePort'         : DIRECTORY_INSTANCE_PORT ,
        'dsInstanceDn'           : DIRECTORY_INSTANCE_DN ,
        'dsInstancePswd'       : DIRECTORY_INSTANCE_PSWD ,
        'subcommand'           : 'set-log-publisher-prop' ,
        'objectType'              : 'publisher-name' ,
        'objectName'             :  'File-Based Access Logger',
        'optionsString'           : '--set log-file-mode:777',
        'expectedRC'             : 0 }
    </call>
    <message>'------  get log-file-mode --' </message>
    <call function="'dsconfigGet'">
      { 'dsInstanceHost'       : DIRECTORY_INSTANCE_HOST,
        'dsInstancePort'         : DIRECTORY_INSTANCE_PORT ,
        'dsInstanceDn'           : DIRECTORY_INSTANCE_DN ,
        'dsInstancePswd'       : DIRECTORY_INSTANCE_PSWD ,
        'objectName'             : 'log-publisher' ,
        'propertyType'           : 'publisher' ,
        'propertyName'           : 'File-Based Access Logger',
        'attributeName'          : 'log-file-mode',
        'expectedAttributeValue'         : '777'  }
    </call>
    <!--   queue-size  -->
    <message>'------  set queue-size  to 1000  --' </message>
    <call function="'dsconfig'">
      { 'dsInstanceHost'       : DIRECTORY_INSTANCE_HOST,
        'dsInstancePort'         : DIRECTORY_INSTANCE_PORT ,
        'dsInstanceDn'           : DIRECTORY_INSTANCE_DN ,
        'dsInstancePswd'       : DIRECTORY_INSTANCE_PSWD ,
        'subcommand'           : 'set-log-publisher-prop' ,
        'objectType'              : 'publisher-name' ,
        'objectName'             :  'File-Based Access Logger',
        'optionsString'           : '--set queue-size:1000',
        'expectedRC'             : 0 }
    </call>
    <message>'------  get queue-size --' </message>
    <call function="'dsconfigGet'">
      { 'dsInstanceHost'       : DIRECTORY_INSTANCE_HOST,
        'dsInstancePort'         : DIRECTORY_INSTANCE_PORT ,
        'dsInstanceDn'           : DIRECTORY_INSTANCE_DN ,
        'dsInstancePswd'       : DIRECTORY_INSTANCE_PSWD ,
        'objectName'             : 'log-publisher' ,
        'propertyType'           : 'publisher' ,
        'propertyName'           : 'File-Based Access Logger',
        'attributeName'          : 'queue-size',
        'expectedAttributeValue'         : '1000'  }
    </call>
    <!--   suppress-synchronization-operations  -->
    <message>'------  set suppress-synchronization-operations  to 1000  --' </message>
    <call function="'dsconfig'">
      { 'dsInstanceHost'       : DIRECTORY_INSTANCE_HOST,
        'dsInstancePort'         : DIRECTORY_INSTANCE_PORT ,
        'dsInstanceDn'           : DIRECTORY_INSTANCE_DN ,
        'dsInstancePswd'       : DIRECTORY_INSTANCE_PSWD ,
        'subcommand'           : 'set-log-publisher-prop' ,
        'objectType'              : 'publisher-name' ,
        'objectName'             :  'File-Based Access Logger',
        'optionsString'           : '--set suppress-synchronization-operations:true',
        'expectedRC'             : 0 }
    </call>
    <message>'------  get suppress-synchronization-operations --' </message>
    <call function="'dsconfigGet'">
      { 'dsInstanceHost'       : DIRECTORY_INSTANCE_HOST,
        'dsInstancePort'         : DIRECTORY_INSTANCE_PORT ,
        'dsInstanceDn'           : DIRECTORY_INSTANCE_DN ,
        'dsInstancePswd'       : DIRECTORY_INSTANCE_PSWD ,
        'objectName'             : 'log-publisher' ,
        'propertyType'           : 'publisher' ,
        'propertyName'           : 'File-Based Access Logger',
        'attributeName'          : 'suppress-synchronization-operations',
        'expectedAttributeValue'         : 'true'  }
    </call>
    <!--   suppress-internal-operations  -->
    <message>'------  set suppress-internal-operations  to false  --' </message>
    <call function="'dsconfig'">
      { 'dsInstanceHost'       : DIRECTORY_INSTANCE_HOST,
        'dsInstancePort'         : DIRECTORY_INSTANCE_PORT ,
        'dsInstanceDn'           : DIRECTORY_INSTANCE_DN ,
        'dsInstancePswd'       : DIRECTORY_INSTANCE_PSWD ,
        'subcommand'           : 'set-log-publisher-prop' ,
        'objectType'              : 'publisher-name' ,
        'objectName'             :  'File-Based Access Logger',
        'optionsString'           : '--set suppress-internal-operations:false',
        'expectedRC'             : 0 }
    </call>
    <message>'------  get suppress-synchronization-operations --' </message>
    <call function="'dsconfigGet'">
      { 'dsInstanceHost'       : DIRECTORY_INSTANCE_HOST,
        'dsInstancePort'         : DIRECTORY_INSTANCE_PORT ,
        'dsInstanceDn'           : DIRECTORY_INSTANCE_DN ,
        'dsInstancePswd'       : DIRECTORY_INSTANCE_PSWD ,
        'objectName'             : 'log-publisher' ,
        'propertyType'           : 'publisher' ,
        'propertyName'           : 'File-Based Access Logger',
        'attributeName'          : 'suppress-internal-operations',
        'expectedAttributeValue'         : 'false'  }
    </call>
    <!--   delete  a logger  publisher-->
       <if expr="bug == 0">
           <sequence>
         <message>'------  delete logger publisher --' </message>
        <call function="'dsconfig'">
      { 'dsInstanceHost'       : DIRECTORY_INSTANCE_HOST,
        'dsInstancePort'         : DIRECTORY_INSTANCE_PORT ,
        'dsInstanceDn'           : DIRECTORY_INSTANCE_DN ,
        'dsInstancePswd'       : DIRECTORY_INSTANCE_PSWD ,
        'subcommand'           : 'delete-log-publisher' ,
        'objectType'              : 'publisher-name' ,
        'objectName'             :  'File-Based Access Logger',
        'expectedRC'             : 0 }
        </call>
            </sequence>
       </if>
    <call function="'testCase_Postamble'"/>
  </sequence>
 </testcase>
       <!--- Test Case : Error logger -->
       <!---
    #@TestMarker             error logger
    #@TestName               error logger properties check
    #@TestIssue
    #@TestPurpose           check the error logger properties.
    #@TestPreamble           none
    #@TestStep                 Check the  error Logger's properties are correctly set and get using dsconfig
    #@TestStep                 Set a property
    #@TestStep                 Get the property and check it has been correctly updated
    #@TestPostamble          none
    #@TestResult                Success if OpenDS returns 0 for all operations
      -->
  <testcase name="'logging : properties checks:  Error logger '">
   <sequence>
    <call function="'testCase_Preamble'"/>
    <message>
        '----  Check the Error logger s properties  -----'
    </message>
    <!--    default-severity  -->
    <message>'------  set default-severity to mild-error --' </message>
    <call function="'dsconfig'">
      { 'dsInstanceHost'       : DIRECTORY_INSTANCE_HOST,
        'dsInstancePort'         : DIRECTORY_INSTANCE_PORT ,
        'dsInstanceDn'           : DIRECTORY_INSTANCE_DN ,
        'dsInstancePswd'       : DIRECTORY_INSTANCE_PSWD ,
        'subcommand'           : 'set-log-publisher-prop' ,
        'objectType'              : 'publisher-name' ,
        'objectName'             :   'File-Based Error Logger',
        'optionsString'           : '--set default-severity:mild-error',
        'expectedRC'             : 0 }
    </call>
    <message>'------  get default-severity --' </message>
    <call function="'dsconfigGet'">
      { 'dsInstanceHost'       : DIRECTORY_INSTANCE_HOST,
        'dsInstancePort'         : DIRECTORY_INSTANCE_PORT ,
        'dsInstanceDn'           : DIRECTORY_INSTANCE_DN ,
        'dsInstancePswd'       : DIRECTORY_INSTANCE_PSWD ,
        'objectName'             : 'log-publisher' ,
        'propertyType'           : 'publisher' ,
        'propertyName'           :  'File-Based Error Logger',
        'attributeName'          : 'default-severity',
        'expectedAttributeValue'         : 'mild-error'  }
    </call>
    <!--  override-severity -->
    <message>'------  set override-severity    --' </message>
    <call function="'dsconfig'">
      { 'dsInstanceHost'       : DIRECTORY_INSTANCE_HOST,
        'dsInstancePort'         : DIRECTORY_INSTANCE_PORT ,
        'dsInstanceDn'           : DIRECTORY_INSTANCE_DN ,
        'dsInstancePswd'       : DIRECTORY_INSTANCE_PSWD ,
        'subcommand'           : 'set-log-publisher-prop' ,
        'objectType'              : 'publisher-name' ,
        'objectName'             :  'File-Based Error Logger',
        'optionsString'           : '--set "override-severity:request=info,schema"',
        'expectedRC'             : 0 }
    </call>
    <message>'------  get override-severity --' </message>
    <call function="'dsconfigGet'">
      { 'dsInstanceHost'       : DIRECTORY_INSTANCE_HOST,
        'dsInstancePort'         : DIRECTORY_INSTANCE_PORT ,
        'dsInstanceDn'           : DIRECTORY_INSTANCE_DN ,
        'dsInstancePswd'       : DIRECTORY_INSTANCE_PSWD ,
        'objectName'             : 'log-publisher' ,
        'propertyType'           : 'publisher' ,
        'propertyName'           :  'File-Based Error Logger',
        'attributeName'          : 'override-severity',
        'expectedAttributeValue'         : 'request=info,schema'  }
    </call>
    <call function="'testCase_Postamble'"/>
  </sequence>
 </testcase>
       <!--- Test Case : Debug logger -->
       <!---
    #@TestMarker             Debug logger
    #@TestName               Debug logger properties check
    #@TestIssue
    #@TestPurpose           check the Debug logger properties.
    #@TestPreamble           none
    #@TestStep                 Check the  Debug Logger's properties are correctly set and get using dsconfig
    #@TestStep                 Set a property
    #@TestStep                 Get the property and check it has been correctly updated
    #@TestPostamble          none
    #@TestResult                Success if OpenDS returns 0 for all operations
      -->
  <testcase name="'logging : properties checks:  Debug logger '">
   <sequence>
    <call function="'testCase_Preamble'"/>
    <message>
        '----  Check the Debug loggers properties  -----'
    </message>
    <!--    default-debug-category  -->
    <message>'------  set default-debug-category  --' </message>
    <call function="'dsconfig'">
      { 'dsInstanceHost'       : DIRECTORY_INSTANCE_HOST,
        'dsInstancePort'         : DIRECTORY_INSTANCE_PORT ,
        'dsInstanceDn'           : DIRECTORY_INSTANCE_DN ,
        'dsInstancePswd'       : DIRECTORY_INSTANCE_PSWD ,
        'subcommand'           : 'set-log-publisher-prop' ,
        'objectType'              : 'publisher-name' ,
        'objectName'             :   'File-Based Debug Logger',
        'optionsString'           : '--set default-debug-category:thrown',
        'expectedRC'             : 0 }
    </call>
    <message>'------  get default-debug-category --' </message>
    <call function="'dsconfigGet'">
      { 'dsInstanceHost'       : DIRECTORY_INSTANCE_HOST,
        'dsInstancePort'         : DIRECTORY_INSTANCE_PORT ,
        'dsInstanceDn'           : DIRECTORY_INSTANCE_DN ,
        'dsInstancePswd'       : DIRECTORY_INSTANCE_PSWD ,
        'objectName'             : 'log-publisher' ,
        'propertyType'           : 'publisher' ,
        'propertyName'           :  'File-Based Debug Logger',
        'attributeName'          : 'default-debug-category',
        'expectedAttributeValue'         : 'thrown'  }
    </call>
    <!--  default-debug-level -->
    <message>'------  set default-debug-level    --' </message>
    <call function="'dsconfig'">
      { 'dsInstanceHost'       : DIRECTORY_INSTANCE_HOST,
        'dsInstancePort'         : DIRECTORY_INSTANCE_PORT ,
        'dsInstanceDn'           : DIRECTORY_INSTANCE_DN ,
        'dsInstancePswd'       : DIRECTORY_INSTANCE_PSWD ,
        'subcommand'           : 'set-log-publisher-prop' ,
        'objectType'              : 'publisher-name' ,
        'objectName'             :  'File-Based Debug Logger',
        'optionsString'           : '--set default-debug-level:verbose',
        'expectedRC'             : 0 }
    </call>
    <message>'------  get default-debug-level --' </message>
    <call function="'dsconfigGet'">
      { 'dsInstanceHost'       : DIRECTORY_INSTANCE_HOST,
        'dsInstancePort'         : DIRECTORY_INSTANCE_PORT ,
        'dsInstanceDn'           : DIRECTORY_INSTANCE_DN ,
        'dsInstancePswd'       : DIRECTORY_INSTANCE_PSWD ,
        'objectName'             : 'log-publisher' ,
        'propertyType'           : 'publisher' ,
        'propertyName'           :  'File-Based Debug Logger',
        'attributeName'          : 'default-debug-level',
        'expectedAttributeValue'         : 'verbose'  }
    </call>
    <!--  default-include-throwable-cause -->
    <message>'------  set default-include-throwable-cause    --' </message>
    <call function="'dsconfig'">
      { 'dsInstanceHost'       : DIRECTORY_INSTANCE_HOST,
        'dsInstancePort'         : DIRECTORY_INSTANCE_PORT ,
        'dsInstanceDn'           : DIRECTORY_INSTANCE_DN ,
        'dsInstancePswd'       : DIRECTORY_INSTANCE_PSWD ,
        'subcommand'           : 'set-log-publisher-prop' ,
        'objectType'              : 'publisher-name' ,
        'objectName'             :  'File-Based Debug Logger',
        'optionsString'           : '--set default-include-throwable-cause:true',
        'expectedRC'             : 0 }
    </call>
    <message>'------  get default-include-throwable-cause --' </message>
    <call function="'dsconfigGet'">
      { 'dsInstanceHost'       : DIRECTORY_INSTANCE_HOST,
        'dsInstancePort'         : DIRECTORY_INSTANCE_PORT ,
        'dsInstanceDn'           : DIRECTORY_INSTANCE_DN ,
        'dsInstancePswd'       : DIRECTORY_INSTANCE_PSWD ,
        'objectName'             : 'log-publisher' ,
        'propertyType'           : 'publisher' ,
        'propertyName'           :  'File-Based Debug Logger',
        'attributeName'          : 'default-include-throwable-cause',
        'expectedAttributeValue'         : 'true'  }
    </call>
    <!--  default-omit-method-entry-arguments -->
    <message>'------  set default-omit-method-entry-arguments    --' </message>
    <call function="'dsconfig'">
      { 'dsInstanceHost'       : DIRECTORY_INSTANCE_HOST,
        'dsInstancePort'         : DIRECTORY_INSTANCE_PORT ,
        'dsInstanceDn'           : DIRECTORY_INSTANCE_DN ,
        'dsInstancePswd'       : DIRECTORY_INSTANCE_PSWD ,
        'subcommand'           : 'set-log-publisher-prop' ,
        'objectType'              : 'publisher-name' ,
        'objectName'             :  'File-Based Debug Logger',
        'optionsString'           : '--set default-omit-method-entry-arguments:true',
        'expectedRC'             : 0 }
    </call>
    <message>'------  get default-omit-method-entry-arguments --' </message>
    <call function="'dsconfigGet'">
      { 'dsInstanceHost'       : DIRECTORY_INSTANCE_HOST,
        'dsInstancePort'         : DIRECTORY_INSTANCE_PORT ,
        'dsInstanceDn'           : DIRECTORY_INSTANCE_DN ,
        'dsInstancePswd'       : DIRECTORY_INSTANCE_PSWD ,
        'objectName'             : 'log-publisher' ,
        'propertyType'           : 'publisher' ,
        'propertyName'           :  'File-Based Debug Logger',
        'attributeName'          : 'default-omit-method-entry-arguments',
        'expectedAttributeValue'         : 'true'  }
    </call>
    <!--  default-omit-method-return-value -->
    <message>'------  set default-include-throwable-cause    --' </message>
    <call function="'dsconfig'">
      { 'dsInstanceHost'       : DIRECTORY_INSTANCE_HOST,
        'dsInstancePort'         : DIRECTORY_INSTANCE_PORT ,
        'dsInstanceDn'           : DIRECTORY_INSTANCE_DN ,
        'dsInstancePswd'       : DIRECTORY_INSTANCE_PSWD ,
        'subcommand'           : 'set-log-publisher-prop' ,
        'objectType'              : 'publisher-name' ,
        'objectName'             :  'File-Based Debug Logger',
        'optionsString'           : '--set default-omit-method-return-value:true',
        'expectedRC'             : 0 }
    </call>
    <message>'------  get default-omit-method-return-value --' </message>
    <call function="'dsconfigGet'">
      { 'dsInstanceHost'       : DIRECTORY_INSTANCE_HOST,
        'dsInstancePort'         : DIRECTORY_INSTANCE_PORT ,
        'dsInstanceDn'           : DIRECTORY_INSTANCE_DN ,
        'dsInstancePswd'       : DIRECTORY_INSTANCE_PSWD ,
        'objectName'             : 'log-publisher' ,
        'propertyType'           : 'publisher' ,
        'propertyName'           :  'File-Based Debug Logger',
        'attributeName'          : 'default-omit-method-return-value',
        'expectedAttributeValue'         : 'true'  }
    </call>
    <!--  default-throwable-stack-frames -->
    <message>'------  set default-throwable-stack-frames    --' </message>
    <call function="'dsconfig'">
      { 'dsInstanceHost'       : DIRECTORY_INSTANCE_HOST,
        'dsInstancePort'         : DIRECTORY_INSTANCE_PORT ,
        'dsInstanceDn'           : DIRECTORY_INSTANCE_DN ,
        'dsInstancePswd'       : DIRECTORY_INSTANCE_PSWD ,
        'subcommand'           : 'set-log-publisher-prop' ,
        'objectType'              : 'publisher-name' ,
        'objectName'             :  'File-Based Debug Logger',
        'optionsString'           : '--set default-throwable-stack-frames:2',
        'expectedRC'             : 0 }
    </call>
    <message>'------  get default-throwable-stack-frames --' </message>
    <call function="'dsconfigGet'">
      { 'dsInstanceHost'       : DIRECTORY_INSTANCE_HOST,
        'dsInstancePort'         : DIRECTORY_INSTANCE_PORT ,
        'dsInstanceDn'           : DIRECTORY_INSTANCE_DN ,
        'dsInstancePswd'       : DIRECTORY_INSTANCE_PSWD ,
        'objectName'             : 'log-publisher' ,
        'propertyType'           : 'publisher' ,
        'propertyName'           :  'File-Based Debug Logger',
        'attributeName'          : 'default-throwable-stack-frames',
        'expectedAttributeValue'         : '2'  }
    </call>
    <call function="'testCase_Postamble'"/>
  </sequence>
 </testcase>
       <!--- Test Case : Rotation policy -->
       <!---
    #@TestMarker             Rotation policy
    #@TestName               Check dsconfig properties of Rotation policy
    #@TestIssue
    #@TestPurpose           check the rotation policy properties.
    #@TestPreamble         none
    #@TestStep                 Check the rotation policy's properties are correctly set and get using dsconfig
    #@TestStep                 Set a property
    #@TestStep                 Get the property and check it has been correctly updated
    #@TestPostamble         none
    #@TestResult               Success if OpenDS returns 0 for all operations
      -->
  <testcase name="'logging : properties checks:  Rotation policy '">
   <sequence>
    <call function="'testCase_Preamble'"/>
    <message>
        '----  Check the Rotation policy properties  -----'
    </message>
    <!-- create-log-rotation-policy  with the type size-limit -->
    <message>'------  create a size limit rotation policy --' </message>
    <call function="'dsconfig'">
      { 'dsInstanceHost'       : DIRECTORY_INSTANCE_HOST,
        'dsInstancePort'         : DIRECTORY_INSTANCE_PORT ,
        'dsInstanceDn'           : DIRECTORY_INSTANCE_DN ,
        'dsInstancePswd'       : DIRECTORY_INSTANCE_PSWD ,
        'subcommand'           : 'create-log-rotation-policy' ,
        'objectType'              : 'policy-name' ,
        'objectName'             :  'my size rotation policy',
        'optionsString'           : '--type size-limit --set file-size-limit:5mb',
        'expectedRC'             : 0 }
    </call>
    <message>'------  get file-size-limit --' </message>
    <call function="'dsconfigGet'">
      { 'dsInstanceHost'       : DIRECTORY_INSTANCE_HOST,
        'dsInstancePort'         : DIRECTORY_INSTANCE_PORT ,
        'dsInstanceDn'           : DIRECTORY_INSTANCE_DN ,
        'dsInstancePswd'       : DIRECTORY_INSTANCE_PSWD ,
        'objectName'             : 'log-rotation-policy' ,
        'propertyType'           : 'policy' ,
        'propertyName'           : 'my size rotation policy',
        'attributeName'          : 'file-size-limit',
        'expectedAttributeValue'         : '5 mb'  }
    </call>
    <!--   set file-size-limit  -->
    <message>'------  set file-size-limit  to 6kb  --' </message>
    <call function="'dsconfig'">
      { 'dsInstanceHost'       : DIRECTORY_INSTANCE_HOST,
        'dsInstancePort'         : DIRECTORY_INSTANCE_PORT ,
        'dsInstanceDn'           : DIRECTORY_INSTANCE_DN ,
        'dsInstancePswd'       : DIRECTORY_INSTANCE_PSWD ,
        'subcommand'           : 'set-log-rotation-policy-prop' ,
        'objectType'              : 'policy-name' ,
        'objectName'             :   'my size rotation policy',
        'optionsString'           : '--set file-size-limit:5kb',
        'expectedRC'             : 0 }
    </call>
    <message>'------  get file-size-limit --' </message>
    <call function="'dsconfigGet'">
      { 'dsInstanceHost'       : DIRECTORY_INSTANCE_HOST,
        'dsInstancePort'         : DIRECTORY_INSTANCE_PORT ,
        'dsInstanceDn'           : DIRECTORY_INSTANCE_DN ,
        'dsInstancePswd'       : DIRECTORY_INSTANCE_PSWD ,
        'objectName'             : 'log-rotation-policy' ,
        'propertyType'           : 'policy' ,
        'propertyName'           : 'my size rotation policy',
        'attributeName'          : 'file-size-limit',
        'expectedAttributeValue'         : '5 kb'  }
    </call>
    <message>'------  delete a size limit rotation policy --' </message>
    <call function="'dsconfig'">
      { 'dsInstanceHost'       : DIRECTORY_INSTANCE_HOST,
        'dsInstancePort'         : DIRECTORY_INSTANCE_PORT ,
        'dsInstanceDn'           : DIRECTORY_INSTANCE_DN ,
        'dsInstancePswd'       : DIRECTORY_INSTANCE_PSWD ,
        'subcommand'           : 'delete-log-rotation-policy' ,
        'objectType'              : 'policy-name' ,
        'objectName'             :  'my size rotation policy',
        'expectedRC'             : 0 }
    </call>
    <!-- ################################-->
    <!-- create-log-rotation-policy  with the type time-limit -->
    <message>'------  create a time limit rotation policy --' </message>
    <call function="'dsconfig'">
      { 'dsInstanceHost'       : DIRECTORY_INSTANCE_HOST,
        'dsInstancePort'         : DIRECTORY_INSTANCE_PORT ,
        'dsInstanceDn'           : DIRECTORY_INSTANCE_DN ,
        'dsInstancePswd'       : DIRECTORY_INSTANCE_PSWD ,
        'subcommand'           : 'create-log-rotation-policy' ,
        'objectType'              : 'policy-name' ,
        'objectName'             :  'my time rotation policy',
        'optionsString'           : '--type time-limit --set rotation-interval:3d',
        'expectedRC'             : 0 }
    </call>
    <message>'------  get rotation-interval --' </message>
    <call function="'dsconfigGet'">
      { 'dsInstanceHost'       : DIRECTORY_INSTANCE_HOST,
        'dsInstancePort'         : DIRECTORY_INSTANCE_PORT ,
        'dsInstanceDn'           : DIRECTORY_INSTANCE_DN ,
        'dsInstancePswd'       : DIRECTORY_INSTANCE_PSWD ,
        'objectName'             : 'log-rotation-policy' ,
        'propertyType'           : 'policy' ,
        'propertyName'           : 'my time rotation policy',
        'attributeName'          : 'rotation-interval',
        'extraParams'            : '-M d',
        'expectedAttributeValue'         : '3 d'  }
    </call>
    <!--   set rotation-interval  -->
    <message>'------  set rotation-interval  to 3s  --' </message>
    <call function="'dsconfig'">
      { 'dsInstanceHost'       : DIRECTORY_INSTANCE_HOST,
        'dsInstancePort'         : DIRECTORY_INSTANCE_PORT ,
        'dsInstanceDn'           : DIRECTORY_INSTANCE_DN ,
        'dsInstancePswd'       : DIRECTORY_INSTANCE_PSWD ,
        'subcommand'           : 'set-log-rotation-policy-prop' ,
        'objectType'              : 'policy-name' ,
        'objectName'             :   'my time rotation policy',
        'optionsString'           : '--set rotation-interval:3s',
        'expectedRC'             : 0 }
    </call>
    <message>'------  get rotation-interval --' </message>
    <call function="'dsconfigGet'">
      { 'dsInstanceHost'       : DIRECTORY_INSTANCE_HOST,
        'dsInstancePort'         : DIRECTORY_INSTANCE_PORT ,
        'dsInstanceDn'           : DIRECTORY_INSTANCE_DN ,
        'dsInstancePswd'       : DIRECTORY_INSTANCE_PSWD ,
        'objectName'             : 'log-rotation-policy' ,
        'propertyType'           : 'policy' ,
        'propertyName'           : 'my time rotation policy',
        'attributeName'          : 'rotation-interval',
        'extraParams'            : '-M s',
        'expectedAttributeValue'         : '3 s'  }
    </call>
    <message>'------  delete a time limit rotation policy --' </message>
    <call function="'dsconfig'">
      { 'dsInstanceHost'       : DIRECTORY_INSTANCE_HOST,
        'dsInstancePort'         : DIRECTORY_INSTANCE_PORT ,
        'dsInstanceDn'           : DIRECTORY_INSTANCE_DN ,
        'dsInstancePswd'       : DIRECTORY_INSTANCE_PSWD ,
        'subcommand'           : 'delete-log-rotation-policy' ,
        'objectType'              : 'policy-name' ,
        'objectName'             :  'my time rotation policy',
        'expectedRC'             : 0 }
    </call>
    <!-- ################################-->
    <!-- create-log-rotation-policy  with the type fixed-time -->
    <message>'------  create a fixed time limit rotation policy --' </message>
    <call function="'dsconfig'">
      { 'dsInstanceHost'       : DIRECTORY_INSTANCE_HOST,
        'dsInstancePort'         : DIRECTORY_INSTANCE_PORT ,
        'dsInstanceDn'           : DIRECTORY_INSTANCE_DN ,
        'dsInstancePswd'       : DIRECTORY_INSTANCE_PSWD ,
        'subcommand'           : 'create-log-rotation-policy' ,
        'objectType'              : 'policy-name' ,
        'objectName'             :  'my fixedtime rotation policy',
        'optionsString'           : '--type fixed-time --set time-of-day:1203',
        'expectedRC'             : 0 }
    </call>
    <message>'------  get time-of-day --' </message>
    <call function="'dsconfigGet'">
      { 'dsInstanceHost'       : DIRECTORY_INSTANCE_HOST,
        'dsInstancePort'         : DIRECTORY_INSTANCE_PORT ,
        'dsInstanceDn'           : DIRECTORY_INSTANCE_DN ,
        'dsInstancePswd'       : DIRECTORY_INSTANCE_PSWD ,
        'objectName'             : 'log-rotation-policy' ,
        'propertyType'           : 'policy' ,
        'propertyName'           :  'my fixedtime rotation policy',
        'attributeName'          : 'time-of-day',
        'expectedAttributeValue'         : '1203'  }
    </call>
    <!--   set time-of-day  -->
    <message>'------  set time-of-day  to 3s  --' </message>
    <call function="'dsconfig'">
      { 'dsInstanceHost'       : DIRECTORY_INSTANCE_HOST,
        'dsInstancePort'         : DIRECTORY_INSTANCE_PORT ,
        'dsInstanceDn'           : DIRECTORY_INSTANCE_DN ,
        'dsInstancePswd'       : DIRECTORY_INSTANCE_PSWD ,
        'subcommand'           : 'set-log-rotation-policy-prop' ,
        'objectType'              : 'policy-name' ,
        'objectName'             :   'my fixedtime rotation policy',
        'optionsString'           : '--set time-of-day:0934',
        'expectedRC'             : 0 }
    </call>
    <message>'------  get time-of-day --' </message>
    <call function="'dsconfigGet'">
      { 'dsInstanceHost'       : DIRECTORY_INSTANCE_HOST,
        'dsInstancePort'         : DIRECTORY_INSTANCE_PORT ,
        'dsInstanceDn'           : DIRECTORY_INSTANCE_DN ,
        'dsInstancePswd'       : DIRECTORY_INSTANCE_PSWD ,
        'objectName'             : 'log-rotation-policy' ,
        'propertyType'           : 'policy' ,
        'propertyName'           :  'my fixedtime rotation policy',
        'attributeName'          : 'time-of-day',
        'expectedAttributeValue'         : '0934'  }
    </call>
    <!-- delete-log-rotation-policy  with the type fixed-time -->
    <message>'------  delete a fixed time limit rotation policy --' </message>
    <call function="'dsconfig'">
      { 'dsInstanceHost'       : DIRECTORY_INSTANCE_HOST,
        'dsInstancePort'         : DIRECTORY_INSTANCE_PORT ,
        'dsInstanceDn'           : DIRECTORY_INSTANCE_DN ,
        'dsInstancePswd'       : DIRECTORY_INSTANCE_PSWD ,
        'subcommand'           : 'delete-log-rotation-policy' ,
        'objectType'              : 'policy-name' ,
        'objectName'             :  'my fixedtime rotation policy',
        'expectedRC'             : 0 }
    </call>
    <call function="'testCase_Postamble'"/>
  </sequence>
 </testcase>
       <!--- Test Case : Retention policy -->
       <!---
    #@TestMarker             retention policy
    #@TestName               Check dsconfig properties of retention policy
    #@TestIssue
    #@TestPurpose           check the retention policy properties.
    #@TestPreamble         none
    #@TestStep                 Check the retention policy's properties are correctly set and get using dsconfig
    #@TestStep                 Set a property
    #@TestStep                 Get the property and check it has been correctly updated
    #@TestPostamble         none
    #@TestResult               Success if OpenDS returns 0 for all operations
      -->
  <testcase name="'logging : properties checks:  retention policy '">
   <sequence>
    <call function="'testCase_Preamble'"/>
    <message>
        '----  Check the retention policy properties  -----'
    </message>
    <!-- create-log-retention-policy  with the type size-limit -->
    <message>'------  create a size limit retention policy --' </message>
    <call function="'dsconfig'">
      { 'dsInstanceHost'       : DIRECTORY_INSTANCE_HOST,
        'dsInstancePort'         : DIRECTORY_INSTANCE_PORT ,
        'dsInstanceDn'           : DIRECTORY_INSTANCE_DN ,
        'dsInstancePswd'       : DIRECTORY_INSTANCE_PSWD ,
        'subcommand'           : 'create-log-retention-policy' ,
        'objectType'              : 'policy-name' ,
        'objectName'             :  'my size retention policy',
        'optionsString'           : '--type size-limit --set disk-space-used:5mb',
        'expectedRC'             : 0 }
    </call>
    <message>'------  get file-size-limit --' </message>
    <call function="'dsconfigGet'">
      { 'dsInstanceHost'       : DIRECTORY_INSTANCE_HOST,
        'dsInstancePort'         : DIRECTORY_INSTANCE_PORT ,
        'dsInstanceDn'           : DIRECTORY_INSTANCE_DN ,
        'dsInstancePswd'       : DIRECTORY_INSTANCE_PSWD ,
        'objectName'             : 'log-retention-policy' ,
        'propertyType'           : 'policy' ,
        'propertyName'           : 'my size retention policy',
        'attributeName'          : 'disk-space-used',
        'expectedAttributeValue'         : '5 mb'  }
    </call>
    <!--   set disk-space-used  -->
    <message>'------  set file-size-limit  to 5kb  --' </message>
    <call function="'dsconfig'">
      { 'dsInstanceHost'       : DIRECTORY_INSTANCE_HOST,
        'dsInstancePort'         : DIRECTORY_INSTANCE_PORT ,
        'dsInstanceDn'           : DIRECTORY_INSTANCE_DN ,
        'dsInstancePswd'       : DIRECTORY_INSTANCE_PSWD ,
        'subcommand'           : 'set-log-retention-policy-prop' ,
        'objectType'              : 'policy-name' ,
        'objectName'             :   'my size retention policy',
        'optionsString'           : '--set disk-space-used:5kb',
        'expectedRC'             : 0 }
    </call>
    <message>'------  get disk-space-used --' </message>
    <call function="'dsconfigGet'">
      { 'dsInstanceHost'       : DIRECTORY_INSTANCE_HOST,
        'dsInstancePort'         : DIRECTORY_INSTANCE_PORT ,
        'dsInstanceDn'           : DIRECTORY_INSTANCE_DN ,
        'dsInstancePswd'       : DIRECTORY_INSTANCE_PSWD ,
        'objectName'             : 'log-retention-policy' ,
        'propertyType'           : 'policy' ,
        'propertyName'           : 'my size retention policy',
        'attributeName'          : 'disk-space-used',
        'expectedAttributeValue'         : '5 kb'  }
    </call>
    <message>'------  delete a size limit retention policy --' </message>
    <call function="'dsconfig'">
      { 'dsInstanceHost'       : DIRECTORY_INSTANCE_HOST,
        'dsInstancePort'         : DIRECTORY_INSTANCE_PORT ,
        'dsInstanceDn'           : DIRECTORY_INSTANCE_DN ,
        'dsInstancePswd'       : DIRECTORY_INSTANCE_PSWD ,
        'subcommand'           : 'delete-log-retention-policy' ,
        'objectType'              : 'policy-name' ,
        'objectName'             :  'my size retention policy',
        'expectedRC'             : 0 }
    </call>
    <!-- ################################-->
    <!-- create-log-retention-policy  with the type  free-disk-space -->
    <message>'------  create a free-disk-space limit retention policy --' </message>
    <call function="'dsconfig'">
      { 'dsInstanceHost'       : DIRECTORY_INSTANCE_HOST,
        'dsInstancePort'         : DIRECTORY_INSTANCE_PORT ,
        'dsInstanceDn'           : DIRECTORY_INSTANCE_DN ,
        'dsInstancePswd'       : DIRECTORY_INSTANCE_PSWD ,
        'subcommand'           : 'create-log-retention-policy' ,
        'objectType'              : 'policy-name' ,
        'objectName'             :  'my free-disk-space retention policy',
        'optionsString'           : '--type free-disk-space --set free-disk-space:6Gb',
        'expectedRC'             : 0 }
    </call>
    <message>'------  get free_disk-space --' </message>
    <call function="'dsconfigGet'">
      { 'dsInstanceHost'       : DIRECTORY_INSTANCE_HOST,
        'dsInstancePort'         : DIRECTORY_INSTANCE_PORT ,
        'dsInstanceDn'           : DIRECTORY_INSTANCE_DN ,
        'dsInstancePswd'       : DIRECTORY_INSTANCE_PSWD ,
        'objectName'             : 'log-retention-policy' ,
        'propertyType'           : 'policy' ,
        'propertyName'           : 'my free-disk-space retention policy',
        'attributeName'          : 'free-disk-space',
        'expectedAttributeValue'         : '6 gb'  }
    </call>
    <!--   set free_disk-space  -->
    <message>'------  set free_disk-space  to 4mb --' </message>
    <call function="'dsconfig'">
      { 'dsInstanceHost'       : DIRECTORY_INSTANCE_HOST,
        'dsInstancePort'         : DIRECTORY_INSTANCE_PORT ,
        'dsInstanceDn'           : DIRECTORY_INSTANCE_DN ,
        'dsInstancePswd'       : DIRECTORY_INSTANCE_PSWD ,
        'subcommand'           : 'set-log-retention-policy-prop' ,
        'objectType'              : 'policy-name' ,
        'objectName'             :   'my free-disk-space retention policy',
        'optionsString'           : '--set free-disk-space:4mb',
        'expectedRC'             : 0 }
    </call>
    <message>'------  get free_disk-space --' </message>
    <call function="'dsconfigGet'">
      { 'dsInstanceHost'       : DIRECTORY_INSTANCE_HOST,
        'dsInstancePort'         : DIRECTORY_INSTANCE_PORT ,
        'dsInstanceDn'           : DIRECTORY_INSTANCE_DN ,
        'dsInstancePswd'       : DIRECTORY_INSTANCE_PSWD ,
        'objectName'             : 'log-retention-policy' ,
        'propertyType'           : 'policy' ,
        'propertyName'           : 'my free-disk-space retention policy',
        'attributeName'          : 'free-disk-space',
        'expectedAttributeValue'         : '4 mb'  }
    </call>
    <message>'------  delete a free-disk-space retention policy --' </message>
    <call function="'dsconfig'">
      { 'dsInstanceHost'       : DIRECTORY_INSTANCE_HOST,
        'dsInstancePort'         : DIRECTORY_INSTANCE_PORT ,
        'dsInstanceDn'           : DIRECTORY_INSTANCE_DN ,
        'dsInstancePswd'       : DIRECTORY_INSTANCE_PSWD ,
        'subcommand'           : 'delete-log-retention-policy' ,
        'objectType'              : 'policy-name' ,
        'objectName'             :  'my free-disk-space retention policy',
        'expectedRC'             : 0 }
    </call>
    <!-- ################################-->
    <!-- create-log-retention-policy  with the type  file-count -->
    <message>'------  create a fixed time limit retention policy --' </message>
    <call function="'dsconfig'">
      { 'dsInstanceHost'       : DIRECTORY_INSTANCE_HOST,
        'dsInstancePort'         : DIRECTORY_INSTANCE_PORT ,
        'dsInstanceDn'           : DIRECTORY_INSTANCE_DN ,
        'dsInstancePswd'       : DIRECTORY_INSTANCE_PSWD ,
        'subcommand'           : 'create-log-retention-policy' ,
        'objectType'              : 'policy-name' ,
        'objectName'             :  'my filecount retention policy',
        'optionsString'           : '--type file-count --set number-of-files:10',
        'expectedRC'             : 0 }
    </call>
    <message>'------  get number-of-files --' </message>
    <call function="'dsconfigGet'">
      { 'dsInstanceHost'       : DIRECTORY_INSTANCE_HOST,
        'dsInstancePort'         : DIRECTORY_INSTANCE_PORT ,
        'dsInstanceDn'           : DIRECTORY_INSTANCE_DN ,
        'dsInstancePswd'       : DIRECTORY_INSTANCE_PSWD ,
        'objectName'             : 'log-retention-policy' ,
        'propertyType'           : 'policy' ,
        'propertyName'           :  'my filecount retention policy',
        'attributeName'          : 'number-of-files',
        'expectedAttributeValue'         : '10'  }
    </call>
    <!--   set number-of-files  -->
    <message>'------  set number-of-files  to 32  --' </message>
    <call function="'dsconfig'">
      { 'dsInstanceHost'       : DIRECTORY_INSTANCE_HOST,
        'dsInstancePort'         : DIRECTORY_INSTANCE_PORT ,
        'dsInstanceDn'           : DIRECTORY_INSTANCE_DN ,
        'dsInstancePswd'       : DIRECTORY_INSTANCE_PSWD ,
        'subcommand'           : 'set-log-retention-policy-prop' ,
        'objectType'              : 'policy-name' ,
        'objectName'             :   'my filecount retention policy',
        'optionsString'           : '--set number-of-files:32',
        'expectedRC'             : 0 }
    </call>
    <message>'------  get number-of-files --' </message>
    <call function="'dsconfigGet'">
      { 'dsInstanceHost'       : DIRECTORY_INSTANCE_HOST,
        'dsInstancePort'         : DIRECTORY_INSTANCE_PORT ,
        'dsInstanceDn'           : DIRECTORY_INSTANCE_DN ,
        'dsInstancePswd'       : DIRECTORY_INSTANCE_PSWD ,
        'objectName'             : 'log-retention-policy' ,
        'propertyType'           : 'policy' ,
        'propertyName'           :  'my filecount retention policy',
        'attributeName'          : 'number-of-files',
        'expectedAttributeValue'         : '32'  }
    </call>
    <!-- delete-log-retention-policy  with the type file-count -->
    <message>'------  delete a fixed file-count  retention policy --' </message>
    <call function="'dsconfig'">
      { 'dsInstanceHost'       : DIRECTORY_INSTANCE_HOST,
        'dsInstancePort'         : DIRECTORY_INSTANCE_PORT ,
        'dsInstanceDn'           : DIRECTORY_INSTANCE_DN ,
        'dsInstancePswd'       : DIRECTORY_INSTANCE_PSWD ,
        'subcommand'           : 'delete-log-retention-policy' ,
        'objectType'              : 'policy-name' ,
        'objectName'             :  'my filecount retention policy',
        'expectedRC'             : 0 }
    </call>
    <call function="'testCase_Postamble'"/>
  </sequence>
 </testcase>
</sequence>
</function>
</stax>
opendj-sdk/opends/tests/functional-tests/testcases/logging/logging_retention.xml
New file
@@ -0,0 +1,203 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE stax SYSTEM "../../../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
 !
 !      Portions Copyright 2006-2007 Sun Microsystems, Inc.
 ! -->
<stax>
<defaultcall function="logging_retention"/>
<function name="logging_retention" scope="local">
<sequence>
<!--- Test Case : retention policy -->
<!---
#@TestMarker            size limit  retention
#@TestName              size limit  retention
#@TestIssue               Check the size limit retention policy
#@TestPreamble         none
#@TestStep                Create a new size limit retention policy
#@TestStep                Configure the Size Limit retention policy with a Max file to 3
#@TestStep                Execute ldapsearch request until the log are cleaned
#@TestPostamble       none
#@TestResult              the number of logs must not exceed 3
      -->
  <testcase name="'logging : Retention policy :  file count  '">
   <sequence>
    <call function="'testCase_Preamble'"/>
    <message>
        '----  Check the file count  -----'
    </message>
    <!-- set the max number of files to keep -->
    <script>
        numberFiles=5
        maxFiles=6
    </script>
<call function="'ldapSearchWithScript'">
            { 'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
               'dsInstancePort'   : DIRECTORY_INSTANCE_PORT ,
               'dsBaseDN'       : DIRECTORY_INSTANCE_SFX,
               'dsInstanceDn'   :  DIRECTORY_INSTANCE_DN,
               'dsInstancePswd'   :      DIRECTORY_INSTANCE_PSWD,
               'dsFilter'       : 'objectclass=*',
               'dsScope'            : 'base',
               'expectedRC'      :  0 }
             </call>
    <message>'-- create a new  file count  retention policy --'</message>
    <call function="'dsconfig'">
      { 'dsInstanceHost'       : DIRECTORY_INSTANCE_HOST,
        'dsInstancePort'         : DIRECTORY_INSTANCE_PORT ,
        'dsInstanceDn'           : DIRECTORY_INSTANCE_DN ,
        'dsInstancePswd'       : DIRECTORY_INSTANCE_PSWD ,
        'subcommand'           : 'create-log-retention-policy' ,
        'objectType'              : 'policy-name' ,
        'objectName'             : 'my file count retention policy',
        'optionsString'           : '--type  file-count  --set number-of-files:%s' % (numberFiles),
        'expectedRC'             : 0 }
    </call>
    <message>'------  Add this retention policy to the Access log publisher --' </message>
    <call function="'dsconfig'">
      { 'dsInstanceHost'       : DIRECTORY_INSTANCE_HOST,
        'dsInstancePort'         : DIRECTORY_INSTANCE_PORT ,
        'dsInstanceDn'           : DIRECTORY_INSTANCE_DN ,
        'dsInstancePswd'       : DIRECTORY_INSTANCE_PSWD ,
        'subcommand'           : 'set-log-publisher-prop' ,
        'objectType'              : 'publisher-name' ,
        'objectName'             :  'File-Based Access Logger',
        'optionsString'           : '--add retention-policy-dn:"cn=my file count retention policy,cn=Log Retention Policies,cn=config"',
        'expectedRC'             : 0 }
    </call>
    <message>'-- create a new size limit rotation policy --'</message>
    <call function="'dsconfig'">
      { 'dsInstanceHost'       : DIRECTORY_INSTANCE_HOST,
        'dsInstancePort'         : DIRECTORY_INSTANCE_PORT ,
        'dsInstanceDn'           : DIRECTORY_INSTANCE_DN ,
        'dsInstancePswd'       : DIRECTORY_INSTANCE_PSWD ,
        'subcommand'           : 'create-log-rotation-policy' ,
        'objectType'              : 'policy-name' ,
        'objectName'             : 'my size Limit Rotation Policy',
        'optionsString'           : '--type size-limit --set file-size-limit:4kb',
        'expectedRC'             : 0 }
    </call>
    <message>'------  Add this rotation policy to the Access log publisher --' </message>
    <call function="'dsconfig'">
    { 'dsInstanceHost'  : DIRECTORY_INSTANCE_HOST,
    'dsInstancePort'     : DIRECTORY_INSTANCE_PORT ,
    'dsInstanceDn'       : DIRECTORY_INSTANCE_DN ,
    'dsInstancePswd'    : DIRECTORY_INSTANCE_PSWD ,
    'subcommand'        : 'set-log-publisher-prop' ,
    'objectType'          : 'publisher-name' ,
    'objectName'         :  'File-Based Access Logger',
    'optionsString'       : '--add rotation-policy-dn:"cn=my size Limit Rotation Policy,cn=Log Rotation Policies,cn=config"',
    'expectedRC'         : 0 }
    </call>
    <call function="'dsconfig'">
    { 'dsInstanceHost'  : DIRECTORY_INSTANCE_HOST,
    'dsInstancePort'     : DIRECTORY_INSTANCE_PORT ,
    'dsInstanceDn'       : DIRECTORY_INSTANCE_DN ,
    'dsInstancePswd'    : DIRECTORY_INSTANCE_PSWD ,
    'subcommand'        : 'set-log-publisher-prop' ,
    'objectType'          : 'publisher-name' ,
    'objectName'         :  'File-Based Access Logger',
    'optionsString'       : '--add  auto-flush:true --set append:true --set asynchronous:false',
    'expectedRC'         : 0 }
    </call>
    <!--  Starting loop -->
     <!--  Execute ldapsearch until we detect a log rotation -->
     <!--  Check the number of logs files never exceed the number-of-files -->
    <script>
        cpt=0
        error=0
    </script>
     <loop from="1" to="10" until="error != 0">
        <sequence>
            <message>'###########################'</message>
            <message>'          LOOP %s :' % cpt </message>
            <message>'###########################'</message>
            <message>'--- Execute a Search request ---'</message>
             <call function="'ldapSearchWithScript'">
            { 'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
               'dsInstancePort'   : DIRECTORY_INSTANCE_PORT ,
               'dsBaseDN'       : DIRECTORY_INSTANCE_SFX,
               'dsInstanceDn'   :  DIRECTORY_INSTANCE_DN,
               'dsInstancePswd'   :      DIRECTORY_INSTANCE_PSWD,
               'dsFilter'       : 'objectclass=*',
               'dsScope'            : 'base',
               'expectedRC'      :  0 }
             </call>
             <call function="'listFolder'">
              { 'location' : '%s' % (DIRECTORY_INSTANCE_HOST),
                 'foldername' : '%s/%s/logs' % (DIRECTORY_INSTANCE_DIR,OPENDSNAME),
                 'filename' : 'access'
              }
             </call>
             <if expr="int(len(cmdResult)) > maxFiles">
                <sequence>
                  <script>
                      error=1
                  </script>
                  <message>'Error, the number of logs files exceed the retention policy'</message>
                  <call function="'testIsFAIL'"/>
                </sequence>
             </if>
             <script>
                  cpt=cpt+1
             </script>
        </sequence>
      </loop>
      <if expr="error == 0" >
          <sequence>
             <message>'SUCCESS:  the retention policy has been checked'</message>
             <call function="'testIsPASS'"/>
          </sequence>
      </if>
    <call function="'testCase_Postamble'"/>
  </sequence>
 </testcase>
</sequence>
</function>
</stax>
opendj-sdk/opends/tests/functional-tests/testcases/logging/logging_rotation.xml
New file
@@ -0,0 +1,262 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE stax SYSTEM "../../../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
 !
 !      Portions Copyright 2006-2007 Sun Microsystems, Inc.
 ! -->
<stax>
<defaultcall function="logging_rotation"/>
<function name="logging_rotation" scope="local">
<sequence>
       <!---
    #@TestMarker            size limit  rotation
    #@TestName              size limit  rotation
    #@TestIssue               Check the size limit rotation policy
    #@TestPreamble         none
    #@TestStep                Create a new size limit rotation policy
    #@TestStep                Configure the Size Limit rotation policy with a Max size to 4kb
    #@TestStep                Execute ldapsearch request until the log are rotate
    #@TestPostamble       none
    #@TestResult             the logs size must match the rotation size
      -->
  <testcase name="'logging : Rotation  policy : size limit  '">
   <sequence>
    <call function="'testCase_Preamble'"/>
    <message>
        '----  Check the size limit rotation -----'
    </message>
    <message>'-- create a new size limit rotation policy --'</message>
    <call function="'dsconfig'">
      { 'dsInstanceHost'       : DIRECTORY_INSTANCE_HOST,
        'dsInstancePort'         : DIRECTORY_INSTANCE_PORT ,
        'dsInstanceDn'           : DIRECTORY_INSTANCE_DN ,
        'dsInstancePswd'       : DIRECTORY_INSTANCE_PSWD ,
        'subcommand'           : 'create-log-rotation-policy' ,
        'objectType'              : 'policy-name' ,
        'objectName'             : 'my size Limit Rotation Policy',
        'optionsString'           : '--type size-limit --set file-size-limit:4kb',
        'expectedRC'             : 0 }
    </call>
    <message>'------  Add this rotation policy to the Access log publisher --' </message>
    <call function="'dsconfig'">
      { 'dsInstanceHost'       : DIRECTORY_INSTANCE_HOST,
        'dsInstancePort'         : DIRECTORY_INSTANCE_PORT ,
        'dsInstanceDn'           : DIRECTORY_INSTANCE_DN ,
        'dsInstancePswd'       : DIRECTORY_INSTANCE_PSWD ,
        'subcommand'           : 'set-log-publisher-prop' ,
        'objectType'              : 'publisher-name' ,
        'objectName'             :  'File-Based Access Logger',
        'optionsString'           : '--add rotation-policy-dn:"cn=my size Limit Rotation Policy,cn=Log Rotation Policies,cn=config"',
        'expectedRC'             : 0 }
    </call>
  <call function="'dsconfig'">
      { 'dsInstanceHost'       : DIRECTORY_INSTANCE_HOST,
        'dsInstancePort'         : DIRECTORY_INSTANCE_PORT ,
        'dsInstanceDn'           : DIRECTORY_INSTANCE_DN ,
        'dsInstancePswd'       : DIRECTORY_INSTANCE_PSWD ,
        'subcommand'           : 'set-log-publisher-prop' ,
        'objectType'              : 'publisher-name' ,
        'objectName'             :  'File-Based Access Logger',
        'optionsString'           : '--add  auto-flush:true --set append:true --set asynchronous:false --set buffer-size:64kb',
        'expectedRC'             : 0 }
    </call>
    <call function="'dsconfigGet'">
      { 'dsInstanceHost'       : DIRECTORY_INSTANCE_HOST,
        'dsInstancePort'         : DIRECTORY_INSTANCE_PORT ,
        'dsInstanceDn'           : DIRECTORY_INSTANCE_DN ,
        'dsInstancePswd'       : DIRECTORY_INSTANCE_PSWD ,
        'objectName'             : 'log-publisher' ,
        'propertyType'           : 'publisher' ,
        'propertyName'           : 'File-Based Access Logger',
        'attributeName'          : 'rotation-policy-dn'
      }
    </call>
     <call function="'Sleep'">
            { 'sleepForMilliSeconds'  : 20000 }
     </call>
     <!--  Starting loop -->
     <script>
          listName=[]
          listSize=[]
     </script>
     <script>
         cpt=0
         nbLog=0
     </script>
     <!--  Execute ldapsearch until we detect a log rotation -->
     <!--   Stop when the first rotation is done -->
     <loop from="1" to="50" until="RC != 0">
         <sequence>
         <message>'###########################'</message>
         <message>'                  LOOP %s :' % cpt </message>
         <message>'###########################'</message>
         <message>'--- Execute a Search request ---'</message>
          <call function="'ldapSearchWithScript'">
        { 'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
          'dsInstancePort'   : DIRECTORY_INSTANCE_PORT ,
          'dsBaseDN'         : DIRECTORY_INSTANCE_SFX,
          'dsInstanceDn'   :  DIRECTORY_INSTANCE_DN,
          'dsInstancePswd'   :       DIRECTORY_INSTANCE_PSWD,
          'dsFilter'        : 'objectclass=*',
          'dsScope'                 : 'base',
          'expectedRC'           :  0 }
          </call>
        <call function="'dsconfigGet'">
        { 'dsInstanceHost'       : DIRECTORY_INSTANCE_HOST,
        'dsInstancePort'         : DIRECTORY_INSTANCE_PORT ,
        'dsInstanceDn'           : DIRECTORY_INSTANCE_DN ,
        'dsInstancePswd'       : DIRECTORY_INSTANCE_PSWD ,
        'objectName'             : 'log-publisher' ,
        'propertyType'           : 'publisher' ,
        'propertyName'           : 'File-Based Access Logger',
        'attributeName'          : 'rotation-policy-dn'
        }
         </call>
         <message>'--- Check log files ---'</message>
         <call function="'listFolder'">
          { 'location' : '%s' % (DIRECTORY_INSTANCE_HOST),
           'foldername' : '%s/%s/logs' % (DIRECTORY_INSTANCE_DIR,OPENDSNAME),
           'filename' : 'access'
           }
        </call>
        <if expr="len(cmdResult) > 0">
          <sequence>
          <iterate var="result" in="cmdResult">
           <sequence>
               <script>
                   logname=result["name"]
                   logsize=result["size"]
                   found=0
               </script>
               <message>'the log file status for file  "%s" is %s ' % (logname,logsize)</message>
               <script>
                   for currentLog in listName:
                       if currentLog == logname:
                          found=1
                          currentIndex=listName.index(currentLog)
                          currentSize=listSize[currentIndex]
                          if currentSize != logsize:
                              listSize[currentIndex]=logsize
                  if found == 0:
                     if nbLog != 0:
                        RC=1
                        newlogName=logname
                        newlogSize=logsize
                     listName.append(logname)
                     listSize.append(logsize)
               </script>
           </sequence>
          </iterate>
          <!--  set nbLog  when we find a log file -->
          <script>
              nbLog=1
          </script>
          <message>'The new log file status is : %s : %s' % (listName,listSize)</message>
          </sequence>
         </if>
         <script>
             cpt=cpt+1
         </script>
         </sequence>
     </loop>
     <!-- ############################### -->
     <!-- Check log file size                                                -->
     <!-- all the log file size must be around 4kb                  -->
    <!-- ############################### -->
     <if expr="RC == 1">
       <sequence>
         <message>'A log rotation has been done. The new rotation file is "%s" (size = %s) ' % (newlogName,newlogSize)</message>
           <if expr="int(newlogSize) &lt;  4100 and int(newlogSize) > 4000" >
             <sequence>
               <message>'SUCCESS. The rotation based on size limit is successfull.  The file "%s" (size = %s) ' % (newlogName,newlogSize)</message>
               <call function="'testIsPASS'"/>
             </sequence>
           <else>
             <sequence>
               <message>'ERROR in the rotation. The file "%s" (size = %s) does not match the rotation size ' % (newlogName,newlogSize)</message>
               <call function="'testIsFAIL'"/>
             </sequence>
         </else>
         </if>
       </sequence>
     <else>
         <sequence>
         <message>'ERROR. The rotation process didn t work.'</message>
         <call function="'testIsFAIL'"/>
         </sequence>
     </else>
     </if>
    <!-- ############################### -->
    <!--   clean rotation policy -->
    <!-- ############################### -->
    <message>'------  remove this rotation policy to the Access log publisher --' </message>
    <call function="'dsconfig'">
      { 'dsInstanceHost'       : DIRECTORY_INSTANCE_HOST,
        'dsInstancePort'         : DIRECTORY_INSTANCE_PORT ,
        'dsInstanceDn'           : DIRECTORY_INSTANCE_DN ,
        'dsInstancePswd'       : DIRECTORY_INSTANCE_PSWD ,
        'subcommand'           : 'set-log-publisher-prop' ,
        'objectType'              : 'publisher-name' ,
        'objectName'             :  'File-Based Access Logger',
        'optionsString'           : '--remove rotation-policy-dn:"cn=my size Limit Rotation Policy,cn=Log Rotation Policies,cn=config"',
        'expectedRC'             : 0 }
    </call>
    <call function="'testCase_Postamble'"/>
  </sequence>
 </testcase>
</sequence>
</function>
</stax>
opendj-sdk/opends/tests/functional-tests/testcases/logging/logging_setup.xml
New file
@@ -0,0 +1,99 @@
<?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
 !
 !      Portions Copyright 2007 Sun Microsystems, Inc.
 ! -->
<stax>
  <defaultcall function="logging_setup"/>
  <function name="logging_setup">
    <sequence>
      <block name="'setup'">
        <sequence>
          <block name="'Block Create DS Topology'">
          <!-- Create the topology necessary to the test group/suite -->
            <sequence>
              <message>
                 'Create DS topology as described in config.py'
              </message>
              <call function="'createTopology'">
                { 'initialiseInstance' : True }
              </call>
              <call function="'checkRC'">
                  { 'returncode' : RC ,
                    'result'     : STAXResult }
              </call>
            </sequence>
          <!--- End Block Create DS Topology -->
          </block>
          <block name="'Block DS Process Active'">
          <!--- Start DS -->
            <sequence>
              <message>
                 'Start DS to run on port %s' % (DIRECTORY_INSTANCE_PORT)
              </message>
              <!--- Start DS -->
              <call function="'StartDsWithScript'">
               { 'location'  : STAF_REMOTE_HOSTNAME }
              </call>
              <call function="'checkRC'">
                  { 'returncode' : RC ,
                    'result'     : STAXResult }
              </call>
              <!--- Check that DS started -->
              <call function="'isAlive'">
                { 'noOfLoops'        : 5 ,
                  'noOfMilliSeconds' : 2000 }
              </call>
            </sequence>
          <!--- End Block DS Process Active -->
          </block>
        </sequence>
      </block>
     </sequence>
  </function>
</stax>
opendj-sdk/opends/tests/functional-tests/testcases/logging/logging_writer.xml
New file
@@ -0,0 +1,302 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE stax SYSTEM "../../../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
 !
 !      Portions Copyright 2006-2007 Sun Microsystems, Inc.
 ! -->
<stax>
<defaultcall function="logging_writer"/>
<function name="logging_writer" scope="local">
<sequence>
<!-- #################################### -->
<!--
    #@TestMarker             access logger
    #@TestName               access logger properties check
    #@TestIssue
    #@TestPurpose           check the asynchronous mode with auto-flush works
    #@TestPreamble         none
    #@TestStep                 Set the Access Logger's properties to be an asynchronous mode
    #@TestStep                 Set the auto-flush to TRUE
    #@TestStep                 Set the append property to false
    #@TestStep                 Configure the Size Limit rotation policy with a Max size to 1mb
    #@TestStep                 Execute ldapsearch request until the log are writen in the disk
    #@TestPostamble         none
    #@TestResult               The recors must be written to disk after each operation
      -->
<!-- #################################### -->
<testcase name="'logging : Synchronous mode- auto-flush=true :  Access logger '">
  <sequence>
    <call function="'testCase_Preamble'"/>
    <message>
        '----  Check the Synchronous mode for Access loggers -----'
    </message>
    <message>
        '  asynchronous:false  -  auto-flush:true  -  append:false -  buffer-size:20kb '
    </message>
    <message>'------  set properties --' </message>
    <call function="'dsconfig'">
      { 'dsInstanceHost'       : DIRECTORY_INSTANCE_HOST,
        'dsInstancePort'         : DIRECTORY_INSTANCE_PORT ,
        'dsInstanceDn'           : DIRECTORY_INSTANCE_DN ,
        'dsInstancePswd'       : DIRECTORY_INSTANCE_PSWD ,
        'subcommand'           : 'set-log-publisher-prop' ,
        'objectType'              : 'publisher-name' ,
        'objectName'             :  'File-Based Access Logger',
        'optionsString'           : '--set auto-flush:true --set append:false --set asynchronous:false --set buffer-size:20kb',
        'expectedRC'             : 0 }
    </call>
    <call function="'dsconfig'">
      { 'dsInstanceHost'       : DIRECTORY_INSTANCE_HOST,
        'dsInstancePort'         : DIRECTORY_INSTANCE_PORT ,
        'dsInstanceDn'           : DIRECTORY_INSTANCE_DN ,
        'dsInstancePswd'       : DIRECTORY_INSTANCE_PSWD ,
        'subcommand'           : 'set-log-rotation-policy-prop' ,
        'objectType'              : 'policy-name' ,
        'objectName'             :  'Size Limit Rotation Policy',
        'optionsString'           : '--set file-size-limit:1mb',
        'expectedRC'             : 0 }
    </call>
     <!--  Starting loop -->
     <script>
          listName=[]
          listSize=[]
     </script>
     <script>
         cpt=0
     </script>
     <!--  Execute ldapsearch until logs are written to disk -->
     <!-- as auto-flush is true, the logs must be written after each operation  -->
     <loop from="1" to="5" until="RC != 0">
         <sequence>
         <message>'###########################'</message>
         <message>'                  LOOP %s :' % cpt </message>
         <message>'###########################'</message>
         <message>'--- Execute a Search request ---'</message>
          <call function="'ldapSearchWithScript'">
        { 'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
          'dsInstancePort'   : DIRECTORY_INSTANCE_PORT ,
          'dsBaseDN'         : DIRECTORY_INSTANCE_SFX,
          'dsInstanceDn'   :  DIRECTORY_INSTANCE_DN,
          'dsInstancePswd'   :       DIRECTORY_INSTANCE_PSWD,
          'dsFilter'        : 'objectclass=*'   ,
          'dsScope'                 : 'base',
          'expectedRC'           :  0 }
          </call>
        <call function="'dsconfigGet'">
        { 'dsInstanceHost'       : DIRECTORY_INSTANCE_HOST,
        'dsInstancePort'         : DIRECTORY_INSTANCE_PORT ,
        'dsInstanceDn'           : DIRECTORY_INSTANCE_DN ,
        'dsInstancePswd'       : DIRECTORY_INSTANCE_PSWD ,
        'objectName'             : 'log-publisher' ,
        'propertyType'           : 'publisher' ,
        'propertyName'           : 'File-Based Access Logger',
        'attributeName'          : 'rotation-policy-dn'
        }
         </call>
          <message>'--- Check log files ---'</message>
          <call function="'listFolder'">
          { 'location' : '%s' % (DIRECTORY_INSTANCE_HOST),
           'foldername' : '%s/%s/logs' % (DIRECTORY_INSTANCE_DIR,OPENDSNAME),
           'filename' : 'access'
           }
        </call>
        <if expr="len(cmdResult) > 0">
          <sequence>
          <iterate var="result" in="cmdResult">
           <sequence>
               <script>
                   logname=result["name"]
                   logsize=result["size"]
                   found=0
               </script>
               <message>'log file status for file  %s is %s ' % (logname,logsize)</message>
               <script>
                   for currentLog in listName:
                       if currentLog == logname:
                          found=1
                          currentIndex=listName.index(currentLog)
                          currentSize=listSize[currentIndex]
                          if currentSize != logsize:
                              RC=1
                              listSize[currentIndex]=logsize
                              break
                  if found == 0:
                     listName.append(logname)
                     listSize.append(logsize)
               </script>
           </sequence>
        </iterate>
        </sequence>
        </if>
        <message>'The new log file status is : %s : %s' % (listName,listSize)</message>
         <script>
             cpt=cpt+1
         </script>
         </sequence>
     </loop>
     <message>'The log file status of the file "%s" has changed ' % logname</message>
     <!-- Check log file -->
     <!-- records must be writen after each operation -->
     <!-- we should exit the loop after the first ldapsearch -->
     <if expr="cpt != 2">
         <sequence>
         <message>'ERROR.  The writer are not flushed after every log records'</message>
         <call function="'testIsFAIL'"/>
         </sequence>
     <else>
          <sequence>
          <message>'SUCCESS. The writer are flushed after every log records' </message>
          <call function="'testIsPASS'"/>
          </sequence>
     </else>
     </if>
  </sequence>
 </testcase>
<!-- #################################### -->
<!--
    #@TestMarker            Debug logger
    #@TestName              Debug logger properties check
    #@TestIssue
    #@TestPurpose          Basic tests on the Debug logger
    #@TestPreamble        none
    #@TestStep                Enabled the Debug  Logger
    #@TestStep                Define a spefic log file for debug message
    #@TestStep                set the debug-log-level to All
    #@TestStep                Restart the server
    #@TestStep                Execute a ldapsearch request
    #@TestPostamble         none
    #@TestResult              Check the debug log file has been created and contains datas
      -->
<!-- #################################### -->
<testcase name="'logging :   basic tests on Debug logger '">
  <sequence>
    <call function="'testCase_Preamble'"/>
    <message>
        '----  Basic tests on Debug loggers -----'
    </message>
    <message>'------  Enabled Debug logger --' </message>
    <call function="'dsconfig'">
      { 'dsInstanceHost'       : DIRECTORY_INSTANCE_HOST,
        'dsInstancePort'         : DIRECTORY_INSTANCE_PORT ,
        'dsInstanceDn'           : DIRECTORY_INSTANCE_DN ,
        'dsInstancePswd'       : DIRECTORY_INSTANCE_PSWD ,
        'subcommand'           : 'set-log-publisher-prop' ,
        'objectType'              : 'publisher-name' ,
        'objectName'             :  'File-Based Debug Logger',
        'optionsString'           : '--set enabled:true --set default-debug-level:all --set log-file:logs/mydebug',
        'expectedRC'             : 0 }
    </call>
    <call function="'RestartDs'">
        {   'dsHost'    : DIRECTORY_INSTANCE_HOST,
             'dsPort'    : DIRECTORY_INSTANCE_PORT,
             'dsBindDN'  : DIRECTORY_INSTANCE_DN,
             'dsBindPwd' : DIRECTORY_INSTANCE_PSWD }
     </call>
     <message>'--- Check log files ---'</message>
     <call function="'listFolder'">
          { 'location' : '%s' % (DIRECTORY_INSTANCE_HOST),
           'foldername' : '%s/%s/logs' % (DIRECTORY_INSTANCE_DIR,OPENDSNAME),
           'filename' : 'mydebug'
           }
     </call>
     <script>
         error=0
     </script>
     <if expr="len(cmdResult) == 0">
         <sequence>
         <message>'ERROR.  The Debug logger should be created'</message>
          <script>
              error=1
          </script>
         </sequence>
     <else>
          <sequence>
             <iterate var="result" in="cmdResult">
                <sequence>
                 <script>
                   logsize=result["size"]
                 </script>
                 <if expr="logsize == 0">
                   <sequence>
                      <message>'ERROR.  The Debug logger should contain data'</message>
                      <script>
                          error=1
                      </script>
                   </sequence>
                 </if>
                 </sequence>
             </iterate>
           </sequence>
     </else>
     </if>
     <if expr="error == 0">
         <sequence>
           <call function="'testIsPASS'"/>
         </sequence>
     <else>
         <sequence>
         <call function="'testIsFAIL'"/>
         </sequence>
     </else>
     </if>
  </sequence>
 </testcase>
</sequence>
</function>
</stax>