From 4eb6a1bf4a9464e9ee4de8bb82a8a84a6622cbf3 Mon Sep 17 00:00:00 2001
From: smaguin <smaguin@localhost>
Date: Mon, 20 Aug 2007 13:49:47 +0000
Subject: [PATCH] new testsuite on logging
---
opends/tests/functional-tests/testcases/logging/logging_setup.xml | 99 ++
opends/tests/functional-tests/testcases/logging/logging.xml | 86 ++
opends/tests/functional-tests/testcases/logging/logging_cleanup.xml | 94 ++
opends/tests/functional-tests/testcases/logging/logging_properties.xml | 1104 ++++++++++++++++++++++++++++++
opends/tests/functional-tests/testcases/logging/logging_writer.xml | 302 ++++++++
opends/tests/functional-tests/testcases/logging/logging_rotation.xml | 262 +++++++
opends/tests/functional-tests/testcases/logging/logging_retention.xml | 203 +++++
7 files changed, 2,150 insertions(+), 0 deletions(-)
diff --git a/opends/tests/functional-tests/testcases/logging/logging.xml b/opends/tests/functional-tests/testcases/logging/logging.xml
new file mode 100755
index 0000000..a2aa90a
--- /dev/null
+++ b/opends/tests/functional-tests/testcases/logging/logging.xml
@@ -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>
diff --git a/opends/tests/functional-tests/testcases/logging/logging_cleanup.xml b/opends/tests/functional-tests/testcases/logging/logging_cleanup.xml
new file mode 100755
index 0000000..e1c6e5f
--- /dev/null
+++ b/opends/tests/functional-tests/testcases/logging/logging_cleanup.xml
@@ -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>
diff --git a/opends/tests/functional-tests/testcases/logging/logging_properties.xml b/opends/tests/functional-tests/testcases/logging/logging_properties.xml
new file mode 100755
index 0000000..8c8cf2a
--- /dev/null
+++ b/opends/tests/functional-tests/testcases/logging/logging_properties.xml
@@ -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>
+
diff --git a/opends/tests/functional-tests/testcases/logging/logging_retention.xml b/opends/tests/functional-tests/testcases/logging/logging_retention.xml
new file mode 100755
index 0000000..ef89a04
--- /dev/null
+++ b/opends/tests/functional-tests/testcases/logging/logging_retention.xml
@@ -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>
+
\ No newline at end of file
diff --git a/opends/tests/functional-tests/testcases/logging/logging_rotation.xml b/opends/tests/functional-tests/testcases/logging/logging_rotation.xml
new file mode 100755
index 0000000..b1cfabb
--- /dev/null
+++ b/opends/tests/functional-tests/testcases/logging/logging_rotation.xml
@@ -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) < 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>
+
diff --git a/opends/tests/functional-tests/testcases/logging/logging_setup.xml b/opends/tests/functional-tests/testcases/logging/logging_setup.xml
new file mode 100755
index 0000000..8206380
--- /dev/null
+++ b/opends/tests/functional-tests/testcases/logging/logging_setup.xml
@@ -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>
diff --git a/opends/tests/functional-tests/testcases/logging/logging_writer.xml b/opends/tests/functional-tests/testcases/logging/logging_writer.xml
new file mode 100755
index 0000000..4b6c805
--- /dev/null
+++ b/opends/tests/functional-tests/testcases/logging/logging_writer.xml
@@ -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>
\ No newline at end of file
--
Gitblit v1.10.0