From af61aa3566c776bed852df12f338ffbbf773ad6e Mon Sep 17 00:00:00 2001
From: mkeyes <mkeyes@localhost>
Date: Mon, 29 Oct 2007 15:03:24 +0000
Subject: [PATCH] First commit for stress tests. The first tests concern import functionality.
---
opendj-sdk/opends/tests/stress-tests/shared/data/import_ldif/import_ldif_start.ldif | 2797 +++++++++++++++++++
opendj-sdk/opends/tests/stress-tests/staf-installer/failure.html | 7
opendj-sdk/opends/tests/stress-tests/testcases/import_ldif/import_ldif_many_thrds.xml | 227 +
opendj-sdk/opends/tests/stress-tests/config/replication/basic_topology.txt | 25
opendj-sdk/opends/tests/stress-tests/testcases/import_ldif/import_ldif_low_index_entry_limit.xml | 227 +
opendj-sdk/opends/tests/stress-tests/staf-installer/SunOS.properties | 0
opendj-sdk/opends/tests/stress-tests/staf-installer/stress-tests.cfg | 51
opendj-sdk/opends/tests/stress-tests/testcases/import_ldif/import_ldif_many_indexes.xml | 267 +
opendj-sdk/opends/tests/stress-tests/staf-installer/SunOS-sparc.properties | 1
opendj-sdk/opends/tests/stress-tests/testcases/import_ldif/import_ldif_out-of-box.xml | 191 +
opendj-sdk/opends/tests/stress-tests/testcases/import_ldif/import_ldif_bin_attr.xml | 210 +
opendj-sdk/opends/tests/stress-tests/testcases/import_ldif/import_ldif_tasks_bin_attr_with_load.xml | 266 +
opendj-sdk/opends/tests/stress-tests/staf-installer/staf-installer.properties | 83
opendj-sdk/opends/tests/stress-tests/staf-installer/windows.properties | 2
opendj-sdk/opends/tests/stress-tests/staf-installer/config.py.stubs | 30
opendj-sdk/opends/tests/stress-tests/staf-installer/windows-x86-64.properties | 1
opendj-sdk/opends/tests/stress-tests/staf-installer/Linux.properties | 1
opendj-sdk/opends/tests/stress-tests/shared/data/quickstart/quickstart.ldif | 220 +
opendj-sdk/opends/tests/stress-tests/staf-installer/SunOS-x86.properties | 1
opendj-sdk/opends/tests/stress-tests/staf-installer/windows-x86-32.properties | 2
opendj-sdk/opends/tests/stress-tests/shared/stax.dtd | 1148 +++++++
opendj-sdk/opends/tests/stress-tests/staf-installer/replay.bat | 11
opendj-sdk/opends/tests/stress-tests/staf-installer.xml | 1185 ++++++++
opendj-sdk/opends/tests/stress-tests/testcases/import_ldif/import_ldif_setup.xml | 140
opendj-sdk/opends/tests/stress-tests/staf-installer/replay.sh | 10
opendj-sdk/opends/tests/stress-tests/testcases/import_ldif/runStressTests.xml | 245 +
opendj-sdk/opends/tests/stress-tests/config/config.py | 30
opendj-sdk/opends/tests/stress-tests/testcases/import_ldif/import_ldif.xml | 85
opendj-sdk/opends/tests/stress-tests/testcases/import_ldif/import_ldif_cleanup.xml | 94
opendj-sdk/opends/tests/stress-tests/testcases/quickstart/quickstart.xml | 82
opendj-sdk/opends/tests/stress-tests/testcases/import_ldif/import_ldif_tasks_bin_attr.xml | 172 +
opendj-sdk/opends/tests/stress-tests/build.bat | 52
opendj-sdk/opends/tests/stress-tests/testcases/import_ldif/runTestJob.xml | 524 +++
opendj-sdk/opends/tests/stress-tests/testcases/import_ldif/import_ldif_large_import_buffer.xml | 214 +
34 files changed, 8,601 insertions(+), 0 deletions(-)
diff --git a/opendj-sdk/opends/tests/stress-tests/build.bat b/opendj-sdk/opends/tests/stress-tests/build.bat
new file mode 100755
index 0000000..ba744d9
--- /dev/null
+++ b/opendj-sdk/opends/tests/stress-tests/build.bat
@@ -0,0 +1,52 @@
+@echo off
+
+rem CDDL HEADER START
+rem
+rem The contents of this file are subject to the terms of the
+rem Common Development and Distribution License, Version 1.0 only
+rem (the "License"). You may not use this file except in compliance
+rem with the License.
+rem
+rem You can obtain a copy of the license at
+rem trunk/opends/resource/legal-notices/OpenDS.LICENSE
+rem or https://OpenDS.dev.java.net/OpenDS.LICENSE.
+rem See the License for the specific language governing permissions
+rem and limitations under the License.
+rem
+rem When distributing Covered Code, include this CDDL HEADER in each
+rem file and include the License file at
+rem trunk/opends/resource/legal-notices/OpenDS.LICENSE. If applicable,
+rem add the following below this CDDL HEADER, with the fields enclosed
+rem information:
+rem Portions Copyright [yyyy] [name of copyright owner]
+rem
+rem CDDL HEADER END
+rem
+rem
+rem Portions Copyright 2007 Sun Microsystems, Inc.
+
+setlocal
+
+rem These are the variables we need to run the functional tests
+set FT_HOME=%~dP0
+set ANT_HOME=%FT_HOME%\..\..\ext\ant
+
+if "%JAVA_HOME%" == "" goto noJavaHome
+goto runAnt
+
+:noJavaHome
+echo Error: JAVA_HOME environment variable is not set.
+echo Please set it to a valid Java 5 Development Kit installation.
+goto end
+
+:runAnt
+rem echo a quick summary of what this script did
+echo using the following variables:
+echo ANT_HOME=%ANT_HOME%
+echo JAVA_HOME=%JAVA_HOME%
+if not "%*" == "" echo your parameters=%*
+echo Now running ant ...
+set OPENDS_LIB=%FT_HOME%\..\..\lib
+"%ANT_HOME%\bin\ant" -lib "%OPENDS_LIB%\mail.jar;%OPENDS_LIB%\activation.jar" -f staf-installer.xml %*
+
+:end
diff --git a/opendj-sdk/opends/tests/stress-tests/config/config.py b/opendj-sdk/opends/tests/stress-tests/config/config.py
new file mode 100755
index 0000000..2c499f2
--- /dev/null
+++ b/opendj-sdk/opends/tests/stress-tests/config/config.py
@@ -0,0 +1,30 @@
+TEST_OS_STRING = 'Linux'
+TEST_HW_STRING = 'i386'
+TEST_JVM_STRING = '1.6.0_01(32 bits)'
+STAF_LOCAL_HOSTNAME = 'localhost'
+STAF_REMOTE_HOSTNAME = 'localhost'
+TMPDIR = '/path/to/opends/tests/functional-run/tmp'
+PSWDFILE = '%s/password' % TMPDIR
+OPENDSDIR = '/path/to/opends'
+OPENDSNAME = 'OpenDS-0.9.0'
+ZIPNAME = 'OpenDS-0.9.0.zip'
+ZIPPATH = '/path/to/opends/build/package'
+TESTS_ROOT = '%s/tests' % OPENDSDIR
+TESTS_DIR = '%s/functional-tests' % TESTS_ROOT
+TESTS_SHARED_DIR = '%s/shared' % TESTS_DIR
+TESTS_FUNCTIONS_DIR = '%s/functions' % TESTS_SHARED_DIR
+TESTS_DATA_DIR = '%s/data' % TESTS_SHARED_DIR
+TESTS_JAVA_DIR = '%s/java' % TESTS_SHARED_DIR
+DIRECTORY_INSTANCE_DN = 'cn=myself'
+DIRECTORY_INSTANCE_PSWD = 'password'
+DIRECTORY_INSTANCE_DIR = '%s' % TMPDIR
+DIRECTORY_INSTANCE_HOST = 'localhost'
+DIRECTORY_INSTANCE_PORT = '1389'
+DIRECTORY_INSTANCE_SSL_PORT = '1636'
+DIRECTORY_INSTANCE_SFX = 'dc=com'
+DIRECTORY_INSTANCE_BE = 'userRoot'
+JAVA_HOME = '/path/to/java/6/jdk1.6.0_01/jre'
+LOGS_ROOT = '%s' % TMPDIR
+LOGS_URI = ''
+SEND_MAIL_AFTER_TEST_RUN = 'false'
+SEND_MAIL_TO = ''
diff --git a/opendj-sdk/opends/tests/stress-tests/config/replication/basic_topology.txt b/opendj-sdk/opends/tests/stress-tests/config/replication/basic_topology.txt
new file mode 100755
index 0000000..916500e
--- /dev/null
+++ b/opendj-sdk/opends/tests/stress-tests/config/replication/basic_topology.txt
@@ -0,0 +1,25 @@
+Hostname: localhost
+Directory: /tmp/opends-synchro-tests/server1
+Port: 11389
+Sslport: 11636
+Jmxport: 11689
+RootDn: cn=directory manager
+RootPwd: secret12
+BaseDn: o=example
+Changelogport: 11111
+SynchronizedSuffix: o=example
+ChangelogServer: localhost:11111
+ChangelogServer: localhost:22222
+
+Hostname: localhost
+Directory: /tmp/opends-synchro-tests/server2
+Port: 22389
+Sslport: 22636
+Jmxport: 22689
+RootDn: cn=directory manager
+RootPwd: secret12
+BaseDn: o=example
+Changelogport: 22222
+SynchronizedSuffix: o=example
+ChangelogServer: localhost:11111
+ChangelogServer: localhost:22222
diff --git a/opendj-sdk/opends/tests/stress-tests/shared/data/import_ldif/import_ldif_start.ldif b/opendj-sdk/opends/tests/stress-tests/shared/data/import_ldif/import_ldif_start.ldif
new file mode 100755
index 0000000..b51e911
--- /dev/null
+++ b/opendj-sdk/opends/tests/stress-tests/shared/data/import_ldif/import_ldif_start.ldif
@@ -0,0 +1,2797 @@
+# 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.
+#
+
+dn: o=import ldif stress test,dc=example,dc=com
+o: import ldif stress test
+objectclass: top
+objectclass: organization
+
+dn: ou=People,o=import ldif stress test,dc=example,dc=com
+ou: People
+objectclass: top
+objectclass: organizationalunit
+
+dn: ou=Groups, o=import ldif stress test,dc=example,dc=com
+objectclass: top
+objectclass: organizationalunit
+ou: Groups
+
+dn: cn=Directory Administrators, ou=Groups, o=import ldif stress test,dc=example,dc=com
+cn: Directory Administrators
+objectclass: top
+objectclass: groupofuniquenames
+ou: Groups
+uniquemember: uid=kvaughan, ou=People, o=import ldif stress test,dc=example,dc=com
+uniquemember: uid=rdaugherty, ou=People, o=import ldif stress test,dc=example,dc=com
+uniquemember: uid=hmiller, ou=People, o=import ldif stress test,dc=example,dc=com
+
+dn: ou=Special Users,o=import ldif stress test,dc=example,dc=com
+objectclass: top
+objectclass: organizationalUnit
+ou: Special Users
+description: Special Administrative Accounts
+
+dn: uid=scarter, ou=People, o=import ldif stress test,dc=example,dc=com
+cn: Sam Carter
+sn: Carter
+givenname: Sam
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Accounting
+ou: People
+l: Sunnyvale
+uid: scarter
+mail: scarter@example.com
+telephonenumber: +1 408 555 4798
+facsimiletelephonenumber: +1 408 555 9751
+roomnumber: 4612
+userpassword: sprain
+
+dn: uid=tmorris, ou=People, o=import ldif stress test,dc=example,dc=com
+cn: Ted Morris
+sn: Morris
+givenname: Ted
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Accounting
+ou: People
+l: Santa Clara
+uid: tmorris
+mail: tmorris@example.com
+telephonenumber: +1 408 555 9187
+facsimiletelephonenumber: +1 408 555 8473
+roomnumber: 4117
+userpassword: irrefutable
+
+dn: uid=kvaughan, ou=People, o=import ldif stress test,dc=example,dc=com
+cn: Kirsten Vaughan
+sn: Vaughan
+givenname: Kirsten
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Human Resources
+ou: People
+l: Sunnyvale
+uid: kvaughan
+mail: kvaughan@example.com
+telephonenumber: +1 408 555 5625
+facsimiletelephonenumber: +1 408 555 3372
+roomnumber: 2871
+userpassword: bribery
+
+dn: uid=abergin, ou=People, o=import ldif stress test,dc=example,dc=com
+cn: Andy Bergin
+sn: Bergin
+givenname: Andy
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Product Testing
+ou: People
+l: Cupertino
+uid: abergin
+mail: abergin@example.com
+telephonenumber: +1 408 555 8585
+facsimiletelephonenumber: +1 408 555 7472
+roomnumber: 3472
+userpassword: inflict
+
+dn: uid=dmiller, ou=People, o=import ldif stress test,dc=example,dc=com
+cn: David Miller
+sn: Miller
+givenname: David
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Accounting
+ou: People
+l: Sunnyvale
+uid: dmiller
+mail: dmiller@example.com
+telephonenumber: +1 408 555 9423
+facsimiletelephonenumber: +1 408 555 0111
+roomnumber: 4135
+userpassword: gosling
+
+dn: uid=gfarmer, ou=People, o=import ldif stress test,dc=example,dc=com
+cn: Gern Farmer
+sn: Farmer
+givenname: Gern
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Accounting
+ou: People
+l: Cupertino
+uid: gfarmer
+mail: gfarmer@example.com
+telephonenumber: +1 408 555 6201
+facsimiletelephonenumber: +1 408 555 8473
+roomnumber: 1269
+userpassword: ruling
+
+dn: uid=kwinters, ou=People, o=import ldif stress test,dc=example,dc=com
+cn: Kelly Winters
+sn: Winters
+givenname: Kelly
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Product Development
+ou: People
+l: Santa Clara
+uid: kwinters
+mail: kwinters@example.com
+telephonenumber: +1 408 555 9069
+facsimiletelephonenumber: +1 408 555 1992
+roomnumber: 4178
+userpassword: forsook
+
+dn: uid=trigden, ou=People, o=import ldif stress test,dc=example,dc=com
+cn: Torrey Rigden
+sn: Rigden
+givenname: Torrey
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Product Development
+ou: People
+l: Santa Clara
+uid: trigden
+mail: trigden@example.com
+telephonenumber: +1 408 555 9280
+facsimiletelephonenumber: +1 408 555 8473
+roomnumber: 3584
+userpassword: sensitive
+
+dn: uid=cschmith, ou=People, o=import ldif stress test,dc=example,dc=com
+cn: Chris Schmith
+sn: Schmith
+givenname: Chris
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Human Resources
+ou: People
+l: Santa Clara
+uid: cschmith
+mail: cschmith@example.com
+telephonenumber: +1 408 555 8011
+facsimiletelephonenumber: +1 408 555 4774
+roomnumber: 0416
+userpassword: hypotenuse
+
+dn: uid=jwallace, ou=People, o=import ldif stress test,dc=example,dc=com
+cn: Judy Wallace
+sn: Wallace
+givenname: Judy
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Accounting
+ou: People
+l: Sunnyvale
+uid: jwallace
+mail: jwallace@example.com
+telephonenumber: +1 408 555 0319
+facsimiletelephonenumber: +1 408 555 8473
+roomnumber: 1033
+userpassword: linear
+
+dn: uid=jwalker, ou=People, o=import ldif stress test,dc=example,dc=com
+cn: John Walker
+sn: Walker
+givenname: John
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Product Testing
+ou: People
+l: Cupertino
+uid: jwalker
+mail: jwalker@example.com
+telephonenumber: +1 408 555 1476
+facsimiletelephonenumber: +1 408 555 1992
+roomnumber: 3915
+userpassword: dogleg
+
+dn: uid=tclow, ou=People, o=import ldif stress test,dc=example,dc=com
+cn: Torrey Clow
+sn: Clow
+givenname: Torrey
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Human Resources
+ou: People
+l: Santa Clara
+uid: tclow
+mail: tclow@example.com
+telephonenumber: +1 408 555 8825
+facsimiletelephonenumber: +1 408 555 1992
+roomnumber: 4376
+userpassword: cardreader
+
+dn: uid=rdaugherty, ou=People, o=import ldif stress test,dc=example,dc=com
+cn: Robert Daugherty
+sn: Daugherty
+givenname: Robert
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Human Resources
+ou: People
+l: Sunnyvale
+uid: rdaugherty
+mail: rdaugherty@example.com
+telephonenumber: +1 408 555 1296
+facsimiletelephonenumber: +1 408 555 1992
+roomnumber: 0194
+userpassword: apples
+
+dn: uid=jreuter, ou=People, o=import ldif stress test,dc=example,dc=com
+cn: Jayne Reuter
+sn: Reuter
+givenname: Jayne
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Product Testing
+ou: People
+l: Cupertino
+uid: jreuter
+mail: jreuter@example.com
+telephonenumber: +1 408 555 1122
+facsimiletelephonenumber: +1 408 555 8721
+roomnumber: 2942
+userpassword: destroy
+
+dn: uid=tmason, ou=People, o=import ldif stress test,dc=example,dc=com
+cn: Torrey Mason
+sn: Mason
+givenname: Torrey
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Human Resources
+ou: People
+l: Sunnyvale
+uid: tmason
+mail: tmason@example.com
+telephonenumber: +1 408 555 1596
+facsimiletelephonenumber: +1 408 555 9751
+roomnumber: 1124
+userpassword: squatted
+
+dn: uid=bhall, ou=People, o=import ldif stress test,dc=example,dc=com
+cn: Benjamin Hall
+sn: Hall
+givenname: Benjamin
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Product Development
+ou: People
+l: Santa Clara
+uid: bhall
+mail: bhall@example.com
+telephonenumber: +1 408 555 6067
+facsimiletelephonenumber: +1 408 555 0111
+roomnumber: 2511
+userpassword: oranges
+
+dn: uid=btalbot, ou=People, o=import ldif stress test,dc=example,dc=com
+cn: Brad Talbot
+sn: Talbot
+givenname: Brad
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Human Resources
+ou: People
+l: Cupertino
+uid: btalbot
+mail: btalbot@example.com
+telephonenumber: +1 408 555 4992
+facsimiletelephonenumber: +1 408 555 8473
+roomnumber: 3532
+userpassword: trident
+
+dn: uid=mward, ou=People, o=import ldif stress test,dc=example,dc=com
+cn: Marcus Ward
+sn: Ward
+givenname: Marcus
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Accounting
+ou: People
+l: Santa Clara
+uid: mward
+mail: mward@example.com
+telephonenumber: +1 408 555 5688
+facsimiletelephonenumber: +1 408 555 0111
+roomnumber: 1707
+userpassword: normal
+
+dn: uid=bjablons, ou=People, o=import ldif stress test,dc=example,dc=com
+cn: Barbara Jablonski
+sn: Jablonski
+givenname: Barbara
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Human Resources
+ou: People
+l: Sunnyvale
+uid: bjablons
+mail: bjablons@example.com
+telephonenumber: +1 408 555 8815
+facsimiletelephonenumber: +1 408 555 4774
+roomnumber: 0906
+userpassword: strawberry
+
+dn: uid=jmcFarla, ou=People, o=import ldif stress test,dc=example,dc=com
+cn: Judy McFarland
+sn: McFarland
+givenname: Judy
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Accounting
+ou: People
+l: Santa Clara
+uid: jmcFarla
+mail: jmcFarla@example.com
+telephonenumber: +1 408 555 2567
+facsimiletelephonenumber: +1 408 555 4774
+roomnumber: 2359
+userpassword: walnut
+
+dn: uid=llabonte, ou=People, o=import ldif stress test,dc=example,dc=com
+cn: Lee Labonte
+sn: Labonte
+givenname: Lee
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Product Development
+ou: People
+l: Santa Clara
+uid: llabonte
+mail: llabonte@example.com
+telephonenumber: +1 408 555 0957
+facsimiletelephonenumber: +1 408 555 8473
+roomnumber: 2854
+userpassword: sourdough
+
+dn: uid=jcampaig, ou=People, o=import ldif stress test,dc=example,dc=com
+cn: Jody Campaigne
+sn: Campaigne
+givenname: Jody
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Product Development
+ou: People
+l: Cupertino
+uid: jcampaig
+mail: jcampaig@example.com
+telephonenumber: +1 408 555 1660
+facsimiletelephonenumber: +1 408 555 9751
+roomnumber: 4385
+userpassword: grapevine
+
+dn: uid=bhal2, ou=People, o=import ldif stress test,dc=example,dc=com
+cn: Barbara Hall
+sn: Hall
+givenname: Barbara
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Accounting
+ou: People
+l: Sunnyvale
+uid: bhal2
+mail: bhal2@example.com
+telephonenumber: +1 408 555 4491
+facsimiletelephonenumber: +1 408 555 8473
+roomnumber: 2758
+userpassword: truths
+
+dn: uid=alutz, ou=People, o=import ldif stress test,dc=example,dc=com
+cn: Alexander Lutz
+sn: Lutz
+givenname: Alexander
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Product Development
+ou: People
+l: Santa Clara
+uid: alutz
+mail: alutz@example.com
+telephonenumber: +1 408 555 6505
+facsimiletelephonenumber: +1 408 555 4774
+roomnumber: 1327
+userpassword: northward
+
+dn: uid=btalbo2, ou=People, o=import ldif stress test,dc=example,dc=com
+cn: Bjorn Talbot
+sn: Talbot
+givenname: Bjorn
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Product Development
+ou: People
+l: Santa Clara
+uid: btalbo2
+mail: btalbo2@example.com
+telephonenumber: +1 408 555 4234
+facsimiletelephonenumber: +1 408 555 9332
+roomnumber: 1205
+userpassword: corduroy
+
+dn: uid=achassin, ou=People, o=import ldif stress test,dc=example,dc=com
+cn: Ashley Chassin
+sn: Chassin
+givenname: Ashley
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Payroll
+ou: People
+l: Santa Clara
+uid: achassin
+mail: achassin@example.com
+telephonenumber: +1 408 555 9972
+facsimiletelephonenumber: +1 408 555 3372
+roomnumber: 0466
+userpassword: duopolist
+
+dn: uid=hmiller, ou=People, o=import ldif stress test,dc=example,dc=com
+cn: Harry Miller
+sn: Miller
+givenname: Harry
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Human Resources
+ou: People
+l: Santa Clara
+uid: hmiller
+mail: hmiller@example.com
+telephonenumber: +1 408 555 9804
+facsimiletelephonenumber: +1 408 555 9332
+roomnumber: 4304
+userpassword: hillock
+
+dn: uid=jcampai2, ou=People, o=import ldif stress test,dc=example,dc=com
+cn: Jeffrey Campaigne
+sn: Campaigne
+givenname: Jeffrey
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Human Resources
+ou: People
+l: Santa Clara
+uid: jcampai2
+mail: jcampai2@example.com
+telephonenumber: +1 408 555 7393
+facsimiletelephonenumber: +1 408 555 3372
+roomnumber: 1377
+userpassword: nominee
+
+dn: uid=lulrich, ou=People, o=import ldif stress test,dc=example,dc=com
+cn: Lee Ulrich
+sn: Ulrich
+givenname: Lee
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Product Testing
+ou: People
+l: Sunnyvale
+uid: lulrich
+mail: lulrich@example.com
+telephonenumber: +1 408 555 8652
+facsimiletelephonenumber: +1 408 555 3825
+roomnumber: 0985
+userpassword: attribution
+
+dn: uid=mlangdon, ou=People, o=import ldif stress test,dc=example,dc=com
+cn: Marcus Langdon
+sn: Langdon
+givenname: Marcus
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Product Development
+ou: People
+l: Cupertino
+uid: mlangdon
+mail: mlangdon@example.com
+telephonenumber: +1 408 555 6249
+facsimiletelephonenumber: +1 408 555 9332
+roomnumber: 4471
+userpassword: threat
+
+dn: uid=striplet, ou=People, o=import ldif stress test,dc=example,dc=com
+cn: Stephen Triplett
+sn: Triplett
+givenname: Stephen
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Human Resources
+ou: People
+l: Santa Clara
+uid: striplet
+mail: striplet@example.com
+telephonenumber: +1 408 555 4519
+facsimiletelephonenumber: +1 408 555 4661
+roomnumber: 3083
+userpassword: compactify
+
+dn: uid=gtriplet, ou=People, o=import ldif stress test,dc=example,dc=com
+cn: Gern Triplett
+sn: Triplett
+givenname: Gern
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Accounting
+ou: People
+l: Sunnyvale
+uid: gtriplet
+mail: gtriplet@example.com
+telephonenumber: +1 408 555 2582
+facsimiletelephonenumber: +1 408 555 3372
+roomnumber: 4023
+userpassword: placeable
+
+dn: uid=jfalena, ou=People, o=import ldif stress test,dc=example,dc=com
+cn: John Falena
+sn: Falena
+givenname: John
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Human Resources
+ou: People
+l: Santa Clara
+uid: jfalena
+mail: jfalena@example.com
+telephonenumber: +1 408 555 8133
+facsimiletelephonenumber: +1 408 555 7472
+roomnumber: 1917
+userpassword: nightly
+
+dn: uid=speterso, ou=People, o=import ldif stress test,dc=example,dc=com
+cn: Sue Peterson
+sn: Peterson
+givenname: Sue
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Product Development
+ou: People
+l: Cupertino
+uid: speterso
+mail: speterso@example.com
+telephonenumber: +1 408 555 3613
+facsimiletelephonenumber: +1 408 555 9332
+roomnumber: 3073
+userpassword: quinine
+
+dn: uid=ejohnson, ou=People, o=import ldif stress test,dc=example,dc=com
+cn: Emanuel Johnson
+sn: Johnson
+givenname: Emanuel
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Accounting
+ou: People
+l: Santa Clara
+uid: ejohnson
+mail: ejohnson@example.com
+telephonenumber: +1 408 555 3287
+facsimiletelephonenumber: +1 408 555 9332
+roomnumber: 3737
+userpassword: marketwise
+
+dn: uid=prigden, ou=People, o=import ldif stress test,dc=example,dc=com
+cn: Peter Rigden
+sn: Rigden
+givenname: Peter
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Human Resources
+ou: People
+l: Sunnyvale
+uid: prigden
+mail: prigden@example.com
+telephonenumber: +1 408 555 5099
+facsimiletelephonenumber: +1 408 555 8473
+roomnumber: 1271
+userpassword: epiphyseal
+
+dn: uid=bwalker, ou=People, o=import ldif stress test,dc=example,dc=com
+cn: Brad Walker
+sn: Walker
+givenname: Brad
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Accounting
+ou: People
+l: Santa Clara
+uid: bwalker
+mail: bwalker@example.com
+telephonenumber: +1 408 555 5476
+facsimiletelephonenumber: +1 408 555 0111
+roomnumber: 3529
+userpassword: interruptible
+
+dn: uid=kjensen, ou=People, o=import ldif stress test,dc=example,dc=com
+cn: Kurt Jensen
+sn: Jensen
+givenname: Kurt
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Product Development
+ou: People
+l: Santa Clara
+uid: kjensen
+mail: kjensen@example.com
+telephonenumber: +1 408 555 6127
+facsimiletelephonenumber: +1 408 555 8721
+roomnumber: 1944
+userpassword: regulatory
+
+dn: uid=mlott, ou=People, o=import ldif stress test,dc=example,dc=com
+cn: Mike Lott
+sn: Lott
+givenname: Mike
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Human Resources
+ou: People
+l: Sunnyvale
+uid: mlott
+mail: mlott@example.com
+telephonenumber: +1 408 555 2234
+facsimiletelephonenumber: +1 408 555 9332
+roomnumber: 0498
+userpassword: cognac
+
+dn: uid=cwallace, ou=People, o=import ldif stress test,dc=example,dc=com
+cn: Cecil Wallace
+sn: Wallace
+givenname: Cecil
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Product Development
+ou: People
+l: Cupertino
+uid: cwallace
+mail: cwallace@example.com
+telephonenumber: +1 408 555 6438
+facsimiletelephonenumber: +1 408 555 8721
+roomnumber: 0349
+userpassword: quintus
+
+dn: uid=tpierce, ou=People, o=import ldif stress test,dc=example,dc=com
+cn: Tobias Pierce
+sn: Pierce
+givenname: Tobias
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Accounting
+ou: People
+l: Sunnyvale
+uid: tpierce
+mail: tpierce@example.com
+telephonenumber: +1 408 555 1531
+facsimiletelephonenumber: +1 408 555 9332
+roomnumber: 1383
+userpassword: rascal
+
+dn: uid=rbannist, ou=People, o=import ldif stress test,dc=example,dc=com
+cn: Richard Bannister
+sn: Bannister
+givenname: Richard
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Human Resources
+ou: People
+l: Santa Clara
+uid: rbannist
+mail: rbannist@example.com
+telephonenumber: +1 408 555 1833
+facsimiletelephonenumber: +1 408 555 4661
+roomnumber: 0983
+userpassword: demonstrate
+
+dn: uid=bplante, ou=People, o=import ldif stress test,dc=example,dc=com
+cn: Brian Plante
+sn: Plante
+givenname: Brian
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Human Resources
+ou: People
+l: Cupertino
+uid: bplante
+mail: bplante@example.com
+telephonenumber: +1 408 555 3550
+facsimiletelephonenumber: +1 408 555 3825
+roomnumber: 4654
+userpassword: tangerine
+
+dn: uid=rmills, ou=People, o=import ldif stress test,dc=example,dc=com
+cn: Randy Mills
+sn: Mills
+givenname: Randy
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Accounting
+ou: People
+l: Santa Clara
+uid: rmills
+mail: rmills@example.com
+telephonenumber: +1 408 555 2072
+facsimiletelephonenumber: +1 408 555 3372
+roomnumber: 3823
+userpassword: condescend
+
+dn: uid=bschneid, ou=People, o=import ldif stress test,dc=example,dc=com
+cn: Benjamin Schneider
+sn: Schneider
+givenname: Benjamin
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Product Testing
+ou: People
+l: Santa Clara
+uid: bschneid
+mail: bschneid@example.com
+telephonenumber: +1 408 555 1012
+facsimiletelephonenumber: +1 408 555 7472
+roomnumber: 4471
+userpassword: biblical
+
+dn: uid=skellehe, ou=People, o=import ldif stress test,dc=example,dc=com
+cn: Sue Kelleher
+sn: Kelleher
+givenname: Sue
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Payroll
+ou: People
+l: Santa Clara
+uid: skellehe
+mail: skellehe@example.com
+telephonenumber: +1 408 555 3480
+facsimiletelephonenumber: +1 408 555 8721
+roomnumber: 1608
+userpassword: sweltering
+
+dn: uid=brentz, ou=People, o=import ldif stress test,dc=example,dc=com
+cn: Bertram Rentz
+sn: Rentz
+givenname: Bertram
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Product Testing
+ou: People
+l: Sunnyvale
+uid: brentz
+mail: brentz@example.com
+telephonenumber: +1 408 555 5526
+facsimiletelephonenumber: +1 408 555 1992
+roomnumber: 0617
+userpassword: diachronic
+
+dn: uid=dsmith, ou=People, o=import ldif stress test,dc=example,dc=com
+cn: Daniel Smith
+sn: Smith
+givenname: Daniel
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Human Resources
+ou: People
+l: Santa Clara
+uid: dsmith
+mail: dsmith@example.com
+telephonenumber: +1 408 555 9519
+facsimiletelephonenumber: +1 408 555 3372
+roomnumber: 0368
+userpassword: quantitative
+
+dn: uid=scarte2, ou=People, o=import ldif stress test,dc=example,dc=com
+cn: Stephen Carter
+sn: Carter
+givenname: Stephen
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Product Development
+ou: People
+l: Santa Clara
+uid: scarte2
+mail: scarte2@example.com
+telephonenumber: +1 408 555 6022
+facsimiletelephonenumber: +1 408 555 9751
+roomnumber: 2013
+userpassword: scooter
+
+dn: uid=dthorud, ou=People, o=import ldif stress test,dc=example,dc=com
+cn: David Thorud
+sn: Thorud
+givenname: David
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Accounting
+ou: People
+l: Cupertino
+uid: dthorud
+mail: dthorud@example.com
+telephonenumber: +1 408 555 6185
+facsimiletelephonenumber: +1 408 555 7472
+roomnumber: 1128
+userpassword: fulcrum
+
+dn: uid=ekohler, ou=People, o=import ldif stress test,dc=example,dc=com
+cn: Elba Kohler
+sn: Kohler
+givenname: Elba
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Accounting
+ou: People
+l: Sunnyvale
+uid: ekohler
+mail: ekohler@example.com
+telephonenumber: +1 408 555 1926
+facsimiletelephonenumber: +1 408 555 9332
+roomnumber: 2721
+userpassword: guildhall
+
+dn: uid=lcampbel, ou=People, o=import ldif stress test,dc=example,dc=com
+cn: Laurel Campbell
+sn: Campbell
+givenname: Laurel
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Accounting
+ou: People
+l: Santa Clara
+uid: lcampbel
+mail: lcampbel@example.com
+telephonenumber: +1 408 555 2537
+facsimiletelephonenumber: +1 408 555 1992
+roomnumber: 2073
+userpassword: impress
+
+dn: uid=tlabonte, ou=People, o=import ldif stress test,dc=example,dc=com
+cn: Tim Labonte
+sn: Labonte
+givenname: Tim
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Human Resources
+ou: People
+l: Cupertino
+uid: tlabonte
+mail: tlabonte@example.com
+telephonenumber: +1 408 555 0058
+facsimiletelephonenumber: +1 408 555 9751
+roomnumber: 1426
+userpassword: express
+
+dn: uid=slee, ou=People, o=import ldif stress test,dc=example,dc=com
+cn: Scott Lee
+sn: Lee
+givenname: Scott
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Human Resources
+ou: People
+l: Santa Clara
+uid: slee
+mail: slee@example.com
+telephonenumber: +1 408 555 2335
+facsimiletelephonenumber: +1 408 555 4774
+roomnumber: 1806
+userpassword: revertive
+
+dn: uid=bfree, ou=People, o=import ldif stress test,dc=example,dc=com
+cn: Bjorn Free
+sn: Free
+givenname: Bjorn
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Human Resources
+ou: People
+l: Santa Clara
+uid: bfree
+mail: bfree@example.com
+telephonenumber: +1 408 555 8588
+facsimiletelephonenumber: +1 408 555 4774
+roomnumber: 3307
+userpassword: etiquette
+
+dn: uid=tschneid, ou=People, o=import ldif stress test,dc=example,dc=com
+cn: Torrey Schneider
+sn: Schneider
+givenname: Torrey
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Accounting
+ou: People
+l: Sunnyvale
+uid: tschneid
+mail: tschneid@example.com
+telephonenumber: +1 408 555 7086
+facsimiletelephonenumber: +1 408 555 8473
+roomnumber: 2292
+userpassword: chaperone
+
+dn: uid=prose, ou=People, o=import ldif stress test,dc=example,dc=com
+cn: Paula Rose
+sn: Rose
+givenname: Paula
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Accounting
+ou: People
+l: Cupertino
+uid: prose
+mail: prose@example.com
+telephonenumber: +1 408 555 9998
+facsimiletelephonenumber: +1 408 555 3825
+roomnumber: 0542
+userpassword: regatta
+
+dn: uid=jhunter, ou=People, o=import ldif stress test,dc=example,dc=com
+cn: Janet Hunter
+sn: Hunter
+givenname: Janet
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Product Development
+ou: People
+l: Santa Clara
+uid: jhunter
+mail: jhunter@example.com
+telephonenumber: +1 408 555 7665
+facsimiletelephonenumber: +1 408 555 8473
+roomnumber: 4856
+userpassword: nanometer
+
+dn: uid=ashelton, ou=People, o=import ldif stress test,dc=example,dc=com
+cn: Alexander Shelton
+sn: Shelton
+givenname: Alexander
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Human Resources
+ou: People
+l: Santa Clara
+uid: ashelton
+mail: ashelton@example.com
+telephonenumber: +1 408 555 1081
+facsimiletelephonenumber: +1 408 555 7472
+roomnumber: 1987
+userpassword: appointe
+
+dn: uid=mmcinnis, ou=People, o=import ldif stress test,dc=example,dc=com
+cn: Marcus Mcinnis
+sn: Mcinnis
+givenname: Marcus
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Product Development
+ou: People
+l: Santa Clara
+uid: mmcinnis
+mail: mmcinnis@example.com
+telephonenumber: +1 408 555 9655
+facsimiletelephonenumber: +1 408 555 8721
+roomnumber: 4818
+userpassword: calcify
+
+dn: uid=falbers, ou=People, o=import ldif stress test,dc=example,dc=com
+cn: Frank Albers
+sn: Albers
+givenname: Frank
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Accounting
+ou: People
+l: Sunnyvale
+uid: falbers
+mail: falbers@example.com
+telephonenumber: +1 408 555 3094
+facsimiletelephonenumber: +1 408 555 9751
+roomnumber: 1439
+userpassword: degradation
+
+dn: uid=mschneid, ou=People, o=import ldif stress test,dc=example,dc=com
+cn: Martin Schneider
+sn: Schneider
+givenname: Martin
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Accounting
+ou: People
+l: Cupertino
+uid: mschneid
+mail: mschneid@example.com
+telephonenumber: +1 408 555 5017
+facsimiletelephonenumber: +1 408 555 3372
+roomnumber: 3153
+userpassword: motorcycle
+
+dn: uid=pcruse, ou=People, o=import ldif stress test,dc=example,dc=com
+cn: Patricia Cruse
+sn: Cruse
+givenname: Patricia
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Product Testing
+ou: People
+l: Santa Clara
+uid: pcruse
+mail: pcruse@example.com
+telephonenumber: +1 408 555 8641
+facsimiletelephonenumber: +1 408 555 9751
+roomnumber: 3967
+userpassword: pauper
+
+dn: uid=tkelly, ou=People, o=import ldif stress test,dc=example,dc=com
+cn: Timothy Kelly
+sn: Kelly
+givenname: Timothy
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Product Development
+l: Santa Clara
+uid: tkelly
+mail: tkelly@example.com
+telephonenumber: +1 408 555 4295
+facsimiletelephonenumber: +1 408 555 1992
+roomnumber: 3107
+userpassword: risible
+
+dn: uid=ahel, ou=People, o=import ldif stress test,dc=example,dc=com
+cn: Andrew Hel
+sn: Hel
+givenname: Andrew
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Accounting
+ou: People
+l: Santa Clara
+uid: ahel
+mail: ahel@example.com
+telephonenumber: +1 408 555 2666
+facsimiletelephonenumber: +1 408 555 8721
+roomnumber: 0572
+userpassword: sarsaparilla
+
+dn: uid=jburrell, ou=People, o=import ldif stress test,dc=example,dc=com
+cn: James Burrell
+sn: Burrell
+givenname: James
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Human Resources
+ou: People
+l: Sunnyvale
+uid: jburrell
+mail: jburrell@example.com
+telephonenumber: +1 408 555 0751
+facsimiletelephonenumber: +1 408 555 4774
+roomnumber: 4926
+userpassword: degrease
+
+dn: uid=smason, ou=People, o=import ldif stress test,dc=example,dc=com
+cn: Sue Mason
+sn: Mason
+givenname: Sue
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Product Development
+ou: People
+l: Cupertino
+uid: smason
+mail: smason@example.com
+telephonenumber: +1 408 555 9780
+facsimiletelephonenumber: +1 408 555 0111
+roomnumber: 4971
+userpassword: sensible
+
+dn: uid=ptyler, ou=People, o=import ldif stress test,dc=example,dc=com
+cn: Pete Tyler
+sn: Tyler
+givenname: Pete
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Accounting
+ou: People
+l: Santa Clara
+uid: ptyler
+mail: ptyler@example.com
+telephonenumber: +1 408 555 3335
+facsimiletelephonenumber: +1 408 555 4774
+roomnumber: 0327
+userpassword: vinegar
+
+dn: uid=calexand, ou=People, o=import ldif stress test,dc=example,dc=com
+cn: Chris Alexander
+sn: Alexander
+givenname: Chris
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Product Development
+ou: People
+l: Sunnyvale
+uid: calexand
+mail: calexand@example.com
+telephonenumber: +1 408 555 9438
+facsimiletelephonenumber: +1 408 555 3825
+roomnumber: 2884
+userpassword: dauphin
+
+dn: uid=jcruse, ou=People, o=import ldif stress test,dc=example,dc=com
+cn: Jim Cruse
+sn: Cruse
+givenname: Jim
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Payroll
+ou: People
+l: Santa Clara
+uid: jcruse
+mail: jcruse@example.com
+telephonenumber: +1 408 555 9482
+facsimiletelephonenumber: +1 408 555 0111
+roomnumber: 0083
+userpassword: bridgework
+
+dn: uid=kcarter, ou=People, o=import ldif stress test,dc=example,dc=com
+cn: Karen Carter
+sn: Carter
+givenname: Karen
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Human Resources
+ou: People
+l: Cupertino
+uid: kcarter
+mail: kcarter@example.com
+telephonenumber: +1 408 555 4675
+facsimiletelephonenumber: +1 408 555 0111
+roomnumber: 2320
+userpassword: radiosonde
+
+dn: uid=rfish, ou=People, o=import ldif stress test,dc=example,dc=com
+cn: Randy Fish
+sn: Fish
+givenname: Randy
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Human Resources
+ou: People
+l: Santa Clara
+uid: rfish
+mail: rfish@example.com
+telephonenumber: +1 408 555 9865
+facsimiletelephonenumber: +1 408 555 8473
+roomnumber: 2317
+userpassword: mailbox
+
+dn: uid=phunt, ou=People, o=import ldif stress test,dc=example,dc=com
+cn: Philip Hunt
+sn: Hunt
+givenname: Philip
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Human Resources
+ou: People
+l: Sunnyvale
+uid: phunt
+mail: phunt@example.com
+telephonenumber: +1 408 555 1242
+facsimiletelephonenumber: +1 408 555 0111
+roomnumber: 1183
+userpassword: wastewater
+
+dn: uid=rschneid, ou=People, o=import ldif stress test,dc=example,dc=com
+cn: Rachel Schneider
+sn: Schneider
+givenname: Rachel
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Human Resources
+ou: People
+l: Santa Clara
+uid: rschneid
+mail: rschneid@example.com
+telephonenumber: +1 408 555 9908
+facsimiletelephonenumber: +1 408 555 9332
+roomnumber: 4183
+userpassword: decorous
+
+dn: uid=bjensen, ou=People, o=import ldif stress test,dc=example,dc=com
+cn: Barbara Jensen
+cn: Babs Jensen
+sn: Jensen
+givenname: Barbara
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Product Development
+ou: People
+l: Cupertino
+uid: bjensen
+mail: bjensen@example.com
+telephonenumber: +1 408 555 1862
+facsimiletelephonenumber: +1 408 555 1992
+roomnumber: 0209
+userpassword: hifalutin
+
+dn: uid=jlange, ou=People, o=import ldif stress test,dc=example,dc=com
+cn: Jim Lange
+sn: Lange
+givenname: Jim
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Product Testing
+ou: People
+l: Santa Clara
+uid: jlange
+mail: jlange@example.com
+telephonenumber: +1 408 555 0488
+facsimiletelephonenumber: +1 408 555 1992
+roomnumber: 3798
+userpassword: chastity
+
+dn: uid=rulrich, ou=People, o=import ldif stress test,dc=example,dc=com
+cn: Randy Ulrich
+sn: Ulrich
+givenname: Randy
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Accounting
+ou: People
+l: Sunnyvale
+uid: rulrich
+mail: rulrich@example.com
+telephonenumber: +1 408 555 5311
+facsimiletelephonenumber: +1 408 555 8721
+roomnumber: 1282
+userpassword: twinkle
+
+dn: uid=rfrancis, ou=People, o=import ldif stress test,dc=example,dc=com
+cn: Richard Francis
+sn: Francis
+givenname: Richard
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Accounting
+ou: People
+l: Santa Clara
+uid: rfrancis
+mail: rfrancis@example.com
+telephonenumber: +1 408 555 8157
+facsimiletelephonenumber: +1 408 555 4774
+roomnumber: 3482
+userpassword: hacienda
+
+dn: uid=mwhite, ou=People, o=import ldif stress test,dc=example,dc=com
+cn: Morgan White
+sn: White
+givenname: Morgan
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Accounting
+ou: People
+l: Cupertino
+uid: mwhite
+mail: mwhite@example.com
+telephonenumber: +1 408 555 9620
+facsimiletelephonenumber: +1 408 555 4661
+roomnumber: 3088
+userpassword: staple
+
+dn: uid=gjensen, ou=People, o=import ldif stress test,dc=example,dc=com
+cn: Gern Jensen
+sn: Jensen
+givenname: Gern
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Human Resources
+ou: People
+l: Santa Clara
+uid: gjensen
+mail: gjensen@example.com
+telephonenumber: +1 408 555 3299
+facsimiletelephonenumber: +1 408 555 9751
+roomnumber: 4609
+userpassword: primitive
+
+dn: uid=awhite, ou=People, o=import ldif stress test,dc=example,dc=com
+cn: Alan White
+sn: White
+givenname: Alan
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Product Testing
+ou: People
+l: Sunnyvale
+uid: awhite
+mail: awhite@example.com
+telephonenumber: +1 408 555 3232
+facsimiletelephonenumber: +1 408 555 8721
+roomnumber: 0142
+userpassword: placeholder
+
+dn: uid=bmaddox, ou=People, o=import ldif stress test,dc=example,dc=com
+cn: Barbara Maddox
+sn: Maddox
+givenname: Barbara
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Accounting
+ou: People
+l: Santa Clara
+uid: bmaddox
+mail: bmaddox@example.com
+telephonenumber: +1 408 555 7783
+facsimiletelephonenumber: +1 408 555 7472
+roomnumber: 2207
+userpassword: feedback
+
+dn: uid=mtalbot, ou=People, o=import ldif stress test,dc=example,dc=com
+cn: Martin Talbot
+sn: Talbot
+givenname: Martin
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Product Development
+ou: People
+l: Cupertino
+uid: mtalbot
+mail: mtalbot@example.com
+telephonenumber: +1 408 555 9228
+facsimiletelephonenumber: +1 408 555 8473
+roomnumber: 1415
+userpassword: currant
+
+dn: uid=jbrown, ou=People, o=import ldif stress test,dc=example,dc=com
+cn: Judy Brown
+sn: Brown
+givenname: Judy
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Payroll
+ou: People
+l: Santa Clara
+uid: jbrown
+mail: jbrown@example.com
+telephonenumber: +1 408 555 6885
+facsimiletelephonenumber: +1 408 555 3825
+roomnumber: 4224
+userpassword: militiamen
+
+dn: uid=jjensen, ou=People, o=import ldif stress test,dc=example,dc=com
+cn: Jody Jensen
+sn: Jensen
+givenname: Jody
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Accounting
+ou: People
+l: Sunnyvale
+uid: jjensen
+mail: jjensen@example.com
+telephonenumber: +1 408 555 7587
+facsimiletelephonenumber: +1 408 555 8721
+roomnumber: 4882
+userpassword: borderland
+
+dn: uid=mcarter, ou=People, o=import ldif stress test,dc=example,dc=com
+cn: Mike Carter
+sn: Carter
+givenname: Mike
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Accounting
+ou: People
+l: Santa Clara
+uid: mcarter
+mail: mcarter@example.com
+telephonenumber: +1 408 555 1846
+facsimiletelephonenumber: +1 408 555 4661
+roomnumber: 3819
+userpassword: mainland
+
+dn: uid=dakers, ou=People, o=import ldif stress test,dc=example,dc=com
+cn: David Akers
+sn: Akers
+givenname: David
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Human Resources
+ou: People
+l: Cupertino
+uid: dakers
+mail: dakers@example.com
+telephonenumber: +1 408 555 4812
+facsimiletelephonenumber: +1 408 555 8721
+roomnumber: 4944
+userpassword: integument
+
+dn: uid=sfarmer, ou=People, o=import ldif stress test,dc=example,dc=com
+cn: Scott Farmer
+sn: Farmer
+givenname: Scott
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Product Development
+ou: People
+l: Santa Clara
+uid: sfarmer
+mail: sfarmer@example.com
+telephonenumber: +1 408 555 4228
+facsimiletelephonenumber: +1 408 555 4661
+roomnumber: 0019
+userpassword: triumphal
+
+dn: uid=dward, ou=People, o=import ldif stress test,dc=example,dc=com
+cn: Daniel Ward
+sn: Ward
+givenname: Daniel
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Product Testing
+ou: People
+l: Sunnyvale
+uid: dward
+mail: dward@example.com
+telephonenumber: +1 408 555 5322
+facsimiletelephonenumber: +1 408 555 7472
+roomnumber: 3927
+userpassword: armload
+
+dn: uid=tward, ou=People, o=import ldif stress test,dc=example,dc=com
+cn: Tobias Ward
+sn: Ward
+givenname: Tobias
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Human Resources
+ou: People
+l: Santa Clara
+uid: tward
+mail: tward@example.com
+telephonenumber: +1 408 555 7202
+facsimiletelephonenumber: +1 408 555 4661
+roomnumber: 2238
+userpassword: cedilla
+
+dn: uid=pshelton, ou=People, o=import ldif stress test,dc=example,dc=com
+cn: Patricia Shelton
+sn: Shelton
+givenname: Patricia
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Payroll
+ou: People
+l: Cupertino
+uid: pshelton
+mail: pshelton@example.com
+telephonenumber: +1 408 555 6442
+facsimiletelephonenumber: +1 408 555 4661
+roomnumber: 2918
+userpassword: nosedive
+
+dn: uid=jrentz, ou=People, o=import ldif stress test,dc=example,dc=com
+cn: Jody Rentz
+sn: Rentz
+givenname: Jody
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Human Resources
+ou: People
+l: Santa Clara
+uid: jrentz
+mail: jrentz@example.com
+telephonenumber: +1 408 555 5829
+facsimiletelephonenumber: +1 408 555 1992
+roomnumber: 3025
+userpassword: meander
+
+dn: uid=plorig, ou=People, o=import ldif stress test,dc=example,dc=com
+cn: Peter Lorig
+sn: Lorig
+givenname: Peter
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Human Resources
+ou: People
+l: Sunnyvale
+uid: plorig
+mail: plorig@example.com
+telephonenumber: +1 408 555 0624
+facsimiletelephonenumber: +1 408 555 7472
+roomnumber: 1276
+userpassword: calorimeter
+
+dn: uid=ajensen, ou=People, o=import ldif stress test,dc=example,dc=com
+cn: Allison Jensen
+sn: Jensen
+givenname: Allison
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Product Development
+ou: People
+l: Santa Clara
+uid: ajensen
+mail: ajensen@example.com
+telephonenumber: +1 408 555 7892
+facsimiletelephonenumber: +1 408 555 0111
+roomnumber: 0784
+userpassword: coltsfoot
+
+dn: uid=kschmith, ou=People, o=import ldif stress test,dc=example,dc=com
+cn: Kelly Schmith
+sn: Schmith
+givenname: Kelly
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Human Resources
+ou: People
+l: Cupertino
+uid: kschmith
+mail: kschmith@example.com
+telephonenumber: +1 408 555 9749
+facsimiletelephonenumber: +1 408 555 3372
+roomnumber: 2221
+userpassword: purvey
+
+dn: uid=pworrell, ou=People, o=import ldif stress test,dc=example,dc=com
+cn: Pete Worrell
+sn: Worrell
+givenname: Pete
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Human Resources
+ou: People
+l: Santa Clara
+uid: pworrell
+mail: pworrell@example.com
+telephonenumber: +1 408 555 1637
+facsimiletelephonenumber: +1 408 555 7472
+roomnumber: 2449
+userpassword: solicitous
+
+dn: uid=mreuter, ou=People, o=import ldif stress test,dc=example,dc=com
+cn: Matthew Reuter
+sn: Reuter
+givenname: Matthew
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Human Resources
+ou: People
+l: Sunnyvale
+uid: mreuter
+mail: mreuter@example.com
+telephonenumber: +1 408 555 6879
+facsimiletelephonenumber: +1 408 555 3825
+roomnumber: 1356
+userpassword: oblivious
+
+dn: uid=gtyler, ou=People, o=import ldif stress test,dc=example,dc=com
+cn: Gern Tyler
+sn: Tyler
+givenname: Gern
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Accounting
+ou: People
+l: Santa Clara
+uid: gtyler
+mail: gtyler@example.com
+telephonenumber: +1 408 555 1020
+facsimiletelephonenumber: +1 408 555 4774
+roomnumber: 0312
+userpassword: typology
+
+dn: uid=tschmith, ou=People, o=import ldif stress test,dc=example,dc=com
+cn: Tobias Schmith
+sn: Schmith
+givenname: Tobias
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Human Resources
+ou: People
+l: Cupertino
+uid: tschmith
+mail: tschmith@example.com
+telephonenumber: +1 408 555 9626
+facsimiletelephonenumber: +1 408 555 1992
+roomnumber: 4607
+userpassword: compost
+
+dn: uid=bjense2, ou=People, o=import ldif stress test,dc=example,dc=com
+cn: Bjorn Jensen
+sn: Jensen
+givenname: Bjorn
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Accounting
+ou: People
+l: Santa Clara
+uid: bjense2
+mail: bjense2@example.com
+telephonenumber: +1 408 555 5655
+facsimiletelephonenumber: +1 408 555 4774
+roomnumber: 4294
+userpassword: mortgage
+
+dn: uid=dswain, ou=People, o=import ldif stress test,dc=example,dc=com
+cn: Dietrich Swain
+sn: Swain
+givenname: Dietrich
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Payroll
+ou: People
+l: Sunnyvale
+uid: dswain
+mail: dswain@example.com
+telephonenumber: +1 408 555 9222
+facsimiletelephonenumber: +1 408 555 1992
+roomnumber: 4396
+userpassword: freedom
+
+dn: uid=ahall, ou=People, o=import ldif stress test,dc=example,dc=com
+cn: Andy Hall
+sn: Hall
+givenname: Andy
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Accounting
+ou: People
+l: Santa Clara
+uid: ahall
+mail: ahall@example.com
+telephonenumber: +1 408 555 6169
+facsimiletelephonenumber: +1 408 555 4774
+roomnumber: 3050
+userpassword: slater
+
+dn: uid=jmuffly, ou=People, o=import ldif stress test,dc=example,dc=com
+cn: Jeff Muffly
+sn: Muffly
+givenname: Jeff
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Product Development
+ou: People
+l: Cupertino
+uid: jmuffly
+mail: jmuffly@example.com
+telephonenumber: +1 408 555 5287
+facsimiletelephonenumber: +1 408 555 9751
+roomnumber: 0997
+userpassword: dictate
+
+dn: uid=tjensen, ou=People, o=import ldif stress test,dc=example,dc=com
+cn: Ted Jensen
+sn: Jensen
+givenname: Ted
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Accounting
+ou: People
+l: Santa Clara
+uid: tjensen
+mail: tjensen@example.com
+telephonenumber: +1 408 555 8622
+facsimiletelephonenumber: +1 408 555 3825
+roomnumber: 4717
+userpassword: ecosystem
+
+dn: uid=ahunter, ou=People, o=import ldif stress test,dc=example,dc=com
+cn: Allison Hunter
+sn: Hunter
+givenname: Allison
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Payroll
+ou: People
+l: Sunnyvale
+uid: ahunter
+mail: ahunter@example.com
+telephonenumber: +1 408 555 7713
+facsimiletelephonenumber: +1 408 555 8473
+roomnumber: 1213
+userpassword: egregious
+
+dn: uid=jgoldste, ou=People, o=import ldif stress test,dc=example,dc=com
+cn: Jon Goldstein
+sn: Goldstein
+givenname: Jon
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Human Resources
+ou: People
+l: Santa Clara
+uid: jgoldste
+mail: jgoldste@example.com
+telephonenumber: +1 408 555 5769
+facsimiletelephonenumber: +1 408 555 7472
+roomnumber: 1454
+userpassword: yellow
+
+dn: uid=aworrell, ou=People, o=import ldif stress test,dc=example,dc=com
+cn: Alan Worrell
+sn: Worrell
+givenname: Alan
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Product Development
+ou: People
+l: Cupertino
+uid: aworrell
+mail: aworrell@example.com
+telephonenumber: +1 408 555 1591
+facsimiletelephonenumber: +1 408 555 3825
+roomnumber: 3966
+userpassword: gargoyle
+
+dn: uid=wlutz, ou=People, o=import ldif stress test,dc=example,dc=com
+cn: Wendy Lutz
+sn: Lutz
+givenname: Wendy
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Accounting
+ou: People
+l: Santa Clara
+uid: wlutz
+mail: wlutz@example.com
+telephonenumber: +1 408 555 3358
+facsimiletelephonenumber: +1 408 555 9332
+roomnumber: 4912
+userpassword: bassinet
+
+dn: uid=jlutz, ou=People, o=import ldif stress test,dc=example,dc=com
+cn: Janet Lutz
+sn: Lutz
+givenname: Janet
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Human Resources
+ou: People
+l: Sunnyvale
+uid: jlutz
+mail: jlutz@example.com
+telephonenumber: +1 408 555 4902
+facsimiletelephonenumber: +1 408 555 3825
+roomnumber: 2544
+userpassword: autumn
+
+dn: uid=dlangdon, ou=People, o=import ldif stress test,dc=example,dc=com
+cn: Dan Langdon
+sn: Langdon
+givenname: Dan
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Product Development
+ou: People
+l: Santa Clara
+uid: dlangdon
+mail: dlangdon@example.com
+telephonenumber: +1 408 555 7044
+facsimiletelephonenumber: +1 408 555 8473
+roomnumber: 3263
+userpassword: botulin
+
+dn: uid=aknutson, ou=People, o=import ldif stress test,dc=example,dc=com
+cn: Ashley Knutson
+sn: Knutson
+givenname: Ashley
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Product Development
+ou: People
+l: Cupertino
+uid: aknutson
+mail: aknutson@example.com
+telephonenumber: +1 408 555 2169
+facsimiletelephonenumber: +1 408 555 4774
+roomnumber: 4736
+userpassword: maltose
+
+dn: uid=kmcinnis, ou=People, o=import ldif stress test,dc=example,dc=com
+cn: Kelly Mcinnis
+sn: Mcinnis
+givenname: Kelly
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Accounting
+ou: People
+l: Santa Clara
+uid: kmcinnis
+mail: kmcinnis@example.com
+telephonenumber: +1 408 555 8596
+facsimiletelephonenumber: +1 408 555 0111
+roomnumber: 4312
+userpassword: stargaze
+
+dn: uid=tcouzens, ou=People, o=import ldif stress test,dc=example,dc=com
+cn: Trent Couzens
+sn: Couzens
+givenname: Trent
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Accounting
+ou: People
+l: Sunnyvale
+uid: tcouzens
+mail: tcouzens@example.com
+telephonenumber: +1 408 555 8401
+facsimiletelephonenumber: +1 408 555 4661
+roomnumber: 3994
+userpassword: tambourine
+
+dn: uid=lstockto, ou=People, o=import ldif stress test,dc=example,dc=com
+cn: Lee Stockton
+sn: Stockton
+givenname: Lee
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Product Testing
+ou: People
+l: Santa Clara
+uid: lstockto
+mail: lstockto@example.com
+telephonenumber: +1 408 555 0518
+facsimiletelephonenumber: +1 408 555 4774
+roomnumber: 0169
+userpassword: brooklyn
+
+dn: uid=jbourke, ou=People, o=import ldif stress test,dc=example,dc=com
+cn: Jon Bourke
+sn: Bourke
+givenname: Jon
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Product Development
+ou: People
+l: Cupertino
+uid: jbourke
+mail: jbourke@example.com
+telephonenumber: +1 408 555 8541
+facsimiletelephonenumber: +1 408 555 4774
+roomnumber: 0034
+userpassword: brainwash
+
+dn: uid=dlanoway, ou=People, o=import ldif stress test,dc=example,dc=com
+cn: Dan Lanoway
+sn: Lanoway
+givenname: Dan
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Accounting
+ou: People
+l: Santa Clara
+uid: dlanoway
+mail: dlanoway@example.com
+telephonenumber: +1 408 555 2017
+facsimiletelephonenumber: +1 408 555 8473
+roomnumber: 3540
+userpassword: manhattan
+
+dn: uid=kcope, ou=People, o=import ldif stress test,dc=example,dc=com
+cn: Karl Cope
+sn: Cope
+givenname: Karl
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Human Resources
+ou: People
+l: Sunnyvale
+uid: kcope
+mail: kcope@example.com
+telephonenumber: +1 408 555 2709
+facsimiletelephonenumber: +1 408 555 8721
+roomnumber: 3040
+userpassword: forfeiture
+
+dn: uid=abarnes, ou=People, o=import ldif stress test,dc=example,dc=com
+cn: Anne-Louise Barnes
+sn: Barnes
+givenname: Anne-Louise
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Payroll
+ou: People
+l: Santa Clara
+uid: abarnes
+mail: abarnes@example.com
+telephonenumber: +1 408 555 9445
+facsimiletelephonenumber: +1 408 555 4661
+roomnumber: 2290
+userpassword: chevron
+
+dn: uid=rjensen, ou=People, o=import ldif stress test,dc=example,dc=com
+cn: Richard Jensen
+sn: Jensen
+givenname: Richard
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Accounting
+ou: People
+l: Cupertino
+uid: rjensen
+mail: rjensen@example.com
+telephonenumber: +1 408 555 5957
+facsimiletelephonenumber: +1 408 555 3825
+roomnumber: 2631
+userpassword: disciplinarian
+
+dn: uid=phun2, ou=People, o=import ldif stress test,dc=example,dc=com
+cn: Pete Hunt
+sn: Hunt
+givenname: Pete
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Product Development
+ou: People
+l: Santa Clara
+uid: phun2
+mail: phun2@example.com
+telephonenumber: +1 408 555 0342
+facsimiletelephonenumber: +1 408 555 4661
+roomnumber: 0087
+userpassword: absorb
+
+dn: uid=mvaughan, ou=People, o=import ldif stress test,dc=example,dc=com
+cn: Matthew Vaughan
+sn: Vaughan
+givenname: Matthew
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Product Testing
+ou: People
+l: Sunnyvale
+uid: mvaughan
+mail: mvaughan@example.com
+telephonenumber: +1 408 555 4692
+facsimiletelephonenumber: +1 408 555 0111
+roomnumber: 4508
+userpassword: submitted
+
+dn: uid=jlut2, ou=People, o=import ldif stress test,dc=example,dc=com
+cn: James Lutz
+sn: Lutz
+givenname: James
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Human Resources
+ou: People
+l: Santa Clara
+uid: jlut2
+mail: jlut2@example.com
+telephonenumber: +1 408 555 9689
+facsimiletelephonenumber: +1 408 555 3825
+roomnumber: 3541
+userpassword: shrank
+
+dn: uid=mjablons, ou=People, o=import ldif stress test,dc=example,dc=com
+cn: Morgan Jablonski
+sn: Jablonski
+givenname: Morgan
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Accounting
+ou: People
+l: Cupertino
+uid: mjablons
+mail: mjablons@example.com
+telephonenumber: +1 408 555 0813
+facsimiletelephonenumber: +1 408 555 7472
+roomnumber: 3160
+userpassword: minimal
+
+dn: uid=pchassin, ou=People, o=import ldif stress test,dc=example,dc=com
+cn: Peter Chassin
+sn: Chassin
+givenname: Peter
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Payroll
+ou: People
+l: Santa Clara
+uid: pchassin
+mail: pchassin@example.com
+telephonenumber: +1 408 555 2816
+facsimiletelephonenumber: +1 408 555 3372
+roomnumber: 4524
+userpassword: barbital
+
+dn: uid=dcope, ou=People, o=import ldif stress test,dc=example,dc=com
+cn: Dan Cope
+sn: Cope
+givenname: Dan
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Product Development
+ou: People
+l: Sunnyvale
+uid: dcope
+mail: dcope@example.com
+telephonenumber: +1 408 555 9813
+facsimiletelephonenumber: +1 408 555 8721
+roomnumber: 1737
+userpassword: snifter
+
+dn: uid=jrent2, ou=People, o=import ldif stress test,dc=example,dc=com
+cn: Judy Rentz
+sn: Rentz
+givenname: Judy
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Payroll
+ou: People
+l: Santa Clara
+uid: jrent2
+mail: jrent2@example.com
+telephonenumber: +1 408 555 2523
+facsimiletelephonenumber: +1 408 555 8473
+roomnumber: 4405
+userpassword: tachistoscope
+
+dn: uid=tcruse, ou=People, o=import ldif stress test,dc=example,dc=com
+cn: Tobias Cruse
+sn: Cruse
+givenname: Tobias
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Human Resources
+ou: People
+l: Cupertino
+uid: tcruse
+mail: tcruse@example.com
+telephonenumber: +1 408 555 5980
+facsimiletelephonenumber: +1 408 555 4774
+roomnumber: 4191
+userpassword: flinty
+
+dn: uid=eward, ou=People, o=import ldif stress test,dc=example,dc=com
+cn: Eric Ward
+sn: Ward
+givenname: Eric
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Human Resources
+ou: People
+l: Santa Clara
+uid: eward
+mail: eward@example.com
+telephonenumber: +1 408 555 2320
+facsimiletelephonenumber: +1 408 555 7472
+roomnumber: 4874
+userpassword: episcopal
+
+dn: uid=ttully, ou=People, o=import ldif stress test,dc=example,dc=com
+cn: Torrey Tully
+sn: Tully
+givenname: Torrey
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Human Resources
+ou: People
+l: Sunnyvale
+uid: ttully
+mail: ttully@example.com
+telephonenumber: +1 408 555 2274
+facsimiletelephonenumber: +1 408 555 0111
+roomnumber: 3924
+userpassword: schooner
+
+dn: uid=charvey, ou=People, o=import ldif stress test,dc=example,dc=com
+cn: Cecil Harvey
+sn: Harvey
+givenname: Cecil
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Product Development
+ou: People
+l: Santa Clara
+uid: charvey
+mail: charvey@example.com
+telephonenumber: +1 408 555 1815
+facsimiletelephonenumber: +1 408 555 3825
+roomnumber: 4583
+userpassword: journalese
+
+dn: uid=rfisher, ou=People, o=import ldif stress test,dc=example,dc=com
+cn: Randy Fisher
+sn: Fisher
+givenname: Randy
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Human Resources
+ou: People
+l: Cupertino
+uid: rfisher
+mail: rfisher@example.com
+telephonenumber: +1 408 555 1506
+facsimiletelephonenumber: +1 408 555 1992
+roomnumber: 1579
+userpassword: pomegranate
+
+dn: uid=alangdon, ou=People, o=import ldif stress test,dc=example,dc=com
+cn: Andrew Langdon
+sn: Langdon
+givenname: Andrew
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Product Development
+ou: People
+l: Santa Clara
+uid: alangdon
+mail: alangdon@example.com
+telephonenumber: +1 408 555 8289
+facsimiletelephonenumber: +1 408 555 9332
+roomnumber: 2254
+userpassword: muzzle
+
+dn: uid=drose, ou=People, o=import ldif stress test,dc=example,dc=com
+cn: David Rose
+sn: Rose
+givenname: David
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Product Testing
+ou: People
+l: Sunnyvale
+uid: drose
+mail: drose@example.com
+telephonenumber: +1 408 555 3963
+facsimiletelephonenumber: +1 408 555 0111
+roomnumber: 4012
+userpassword: gubernatorial
+
+dn: uid=polfield, ou=People, o=import ldif stress test,dc=example,dc=com
+cn: Peter Olfield
+sn: Olfield
+givenname: Peter
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Human Resources
+ou: People
+l: Santa Clara
+uid: polfield
+mail: polfield@example.com
+telephonenumber: +1 408 555 8231
+facsimiletelephonenumber: +1 408 555 8473
+roomnumber: 1376
+userpassword: monologue
+
+dn: uid=awalker, ou=People, o=import ldif stress test,dc=example,dc=com
+cn: Andy Walker
+sn: Walker
+givenname: Andy
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Accounting
+ou: People
+l: Cupertino
+uid: awalker
+mail: awalker@example.com
+telephonenumber: +1 408 555 9199
+facsimiletelephonenumber: +1 408 555 3372
+roomnumber: 0061
+userpassword: detonable
+
+dn: uid=lrentz, ou=People, o=import ldif stress test,dc=example,dc=com
+cn: Lex Rentz
+sn: Rentz
+givenname: Lex
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Human Resources
+ou: People
+l: Santa Clara
+uid: lrentz
+mail: lrentz@example.com
+telephonenumber: +1 408 555 2019
+facsimiletelephonenumber: +1 408 555 8473
+roomnumber: 2203
+userpassword: calcium
+
+dn: uid=jvaughan, ou=People, o=import ldif stress test,dc=example,dc=com
+cn: Jeff Vaughan
+sn: Vaughan
+givenname: Jeff
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Human Resources
+ou: People
+l: Sunnyvale
+uid: jvaughan
+mail: jvaughan@example.com
+telephonenumber: +1 408 555 4543
+facsimiletelephonenumber: +1 408 555 9751
+roomnumber: 1734
+userpassword: appoint
+
+dn: uid=bfrancis, ou=People, o=import ldif stress test,dc=example,dc=com
+cn: Barbara Francis
+sn: Francis
+givenname: Barbara
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Human Resources
+ou: People
+l: Santa Clara
+uid: bfrancis
+mail: bfrancis@example.com
+telephonenumber: +1 408 555 9111
+facsimiletelephonenumber: +1 408 555 9751
+roomnumber: 3743
+userpassword: holystone
+
+dn: uid=ewalker, ou=People, o=import ldif stress test,dc=example,dc=com
+cn: Eric Walker
+sn: Walker
+givenname: Eric
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Payroll
+ou: People
+l: Cupertino
+uid: ewalker
+mail: ewalker@example.com
+telephonenumber: +1 408 555 6387
+facsimiletelephonenumber: +1 408 555 8721
+roomnumber: 2295
+userpassword: beguile
+
+dn: uid=tjames, ou=People, o=import ldif stress test,dc=example,dc=com
+cn: Tobias James
+sn: James
+givenname: Tobias
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Accounting
+ou: People
+l: Santa Clara
+uid: tjames
+mail: tjames@example.com
+telephonenumber: +1 408 555 2458
+facsimiletelephonenumber: +1 408 555 9751
+roomnumber: 0730
+userpassword: turtle
+
+dn: uid=brigden, ou=People, o=import ldif stress test,dc=example,dc=com
+cn: Bjorn Rigden
+sn: Rigden
+givenname: Bjorn
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Human Resources
+ou: People
+l: Sunnyvale
+uid: brigden
+mail: brigden@example.com
+telephonenumber: +1 408 555 5263
+facsimiletelephonenumber: +1 408 555 1992
+roomnumber: 1643
+userpassword: purple
+
+dn: uid=ecruse, ou=People, o=import ldif stress test,dc=example,dc=com
+cn: Eric Cruse
+sn: Cruse
+givenname: Eric
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Product Testing
+ou: People
+l: Santa Clara
+uid: ecruse
+mail: ecruse@example.com
+telephonenumber: +1 408 555 0648
+facsimiletelephonenumber: +1 408 555 9751
+roomnumber: 4233
+userpassword: platelet
+
+dn: uid=rjense2, ou=People, o=import ldif stress test,dc=example,dc=com
+cn: Randy Jensen
+sn: Jensen
+givenname: Randy
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Product Testing
+ou: People
+l: Sunnyvale
+uid: rjense2
+mail: rjense2@example.com
+telephonenumber: +1 408 555 9045
+facsimiletelephonenumber: +1 408 555 1992
+roomnumber: 1984
+userpassword: transpose
+
+dn: uid=rhunt, ou=People, o=import ldif stress test,dc=example,dc=com
+cn: Richard Hunt
+sn: Hunt
+givenname: Richard
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Accounting
+ou: People
+l: Santa Clara
+uid: rhunt
+mail: rhunt@example.com
+telephonenumber: +1 408 555 0139
+facsimiletelephonenumber: +1 408 555 8473
+roomnumber: 0718
+userpassword: becloud
+
+dn: uid=bparker, ou=People, o=import ldif stress test,dc=example,dc=com
+cn: Barry Parker
+sn: Parker
+givenname: Barry
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Product Development
+ou: People
+l: Sunnyvale
+uid: bparker
+mail: bparker@example.com
+telephonenumber: +1 408 555 4647
+facsimiletelephonenumber: +1 408 555 9332
+roomnumber: 1148
+userpassword: lenticular
+
+dn: uid=ealexand, ou=People, o=import ldif stress test,dc=example,dc=com
+cn: Erin Alexander
+sn: Alexander
+givenname: Erin
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Product Testing
+ou: People
+l: Santa Clara
+uid: ealexand
+mail: ealexand@example.com
+telephonenumber: +1 408 555 5563
+facsimiletelephonenumber: +1 408 555 9751
+roomnumber: 2434
+userpassword: galactose
+
+dn: uid=mtyler, ou=People, o=import ldif stress test,dc=example,dc=com
+cn: Matthew Tyler
+sn: Tyler
+givenname: Matthew
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Human Resources
+ou: People
+l: Cupertino
+uid: mtyler
+mail: mtyler@example.com
+telephonenumber: +1 408 555 7907
+facsimiletelephonenumber: +1 408 555 4661
+roomnumber: 2701
+userpassword: instantiate
+
+dn: uid=elott, ou=People, o=import ldif stress test,dc=example,dc=com
+cn: Emanuel Lott
+sn: Lott
+givenname: Emanuel
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Product Testing
+ou: People
+l: Santa Clara
+uid: elott
+mail: elott@example.com
+telephonenumber: +1 408 555 0932
+facsimiletelephonenumber: +1 408 555 9751
+roomnumber: 3906
+userpassword: holdout
+
+dn: uid=cnewport, ou=People, o=import ldif stress test,dc=example,dc=com
+cn: Christoph Newport
+sn: Newport
+givenname: Christoph
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Product Development
+ou: People
+l: Sunnyvale
+uid: cnewport
+mail: cnewport@example.com
+telephonenumber: +1 408 555 0066
+facsimiletelephonenumber: +1 408 555 9332
+roomnumber: 0056
+userpassword: expertise
+
+dn: uid=jvedder, ou=People, o=import ldif stress test,dc=example,dc=com
+cn: Jeff Vedder
+sn: Vedder
+givenname: Jeff
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Product Development
+ou: People
+l: Santa Clara
+uid: jvedder
+mail: jvedder@example.com
+telephonenumber: +1 408 555 4668
+facsimiletelephonenumber: +1 408 555 0111
+roomnumber: 3445
+userpassword: befitting
+
+dn: cn=Accounting Managers,ou=groups,o=import ldif stress test,dc=example,dc=com
+objectclass: top
+objectclass: groupOfUniqueNames
+cn: Accounting Managers
+ou: groups
+uniquemember: uid=scarter, ou=People, o=import ldif stress test,dc=example,dc=com
+uniquemember: uid=tmorris, ou=People, o=import ldif stress test,dc=example,dc=com
+description: People who can manage accounting entries
+
+dn: cn=HR Managers,ou=groups,o=import ldif stress test,dc=example,dc=com
+objectclass: top
+objectclass: groupOfUniqueNames
+cn: HR Managers
+ou: groups
+uniquemember: uid=kvaughan, ou=People, o=import ldif stress test,dc=example,dc=com
+uniquemember: uid=cschmith, ou=People, o=import ldif stress test,dc=example,dc=com
+description: People who can manage HR entries
+
+dn: cn=QA Managers,ou=groups,o=import ldif stress test,dc=example,dc=com
+objectclass: top
+objectclass: groupOfUniqueNames
+cn: QA Managers
+ou: groups
+uniquemember: uid=abergin, ou=People, o=import ldif stress test,dc=example,dc=com
+uniquemember: uid=jwalker, ou=People, o=import ldif stress test,dc=example,dc=com
+description: People who can manage QA entries
+
+dn: cn=PD Managers,ou=groups,o=import ldif stress test,dc=example,dc=com
+objectclass: top
+objectclass: groupOfUniqueNames
+cn: PD Managers
+ou: groups
+uniquemember: uid=kwinters, ou=People, o=import ldif stress test,dc=example,dc=com
+uniquemember: uid=trigden, ou=People, o=import ldif stress test,dc=example,dc=com
+description: People who can manage engineer entries
+
+dn: ou=Netscape Servers,o=import ldif stress test,dc=example,dc=com
+objectclass: top
+objectclass: organizationalUnit
+ou: Netscape Servers
+description: Standard branch for SuiteSpot Server registration
+
diff --git a/opendj-sdk/opends/tests/stress-tests/shared/data/quickstart/quickstart.ldif b/opendj-sdk/opends/tests/stress-tests/shared/data/quickstart/quickstart.ldif
new file mode 100755
index 0000000..bc83cd0
--- /dev/null
+++ b/opendj-sdk/opends/tests/stress-tests/shared/data/quickstart/quickstart.ldif
@@ -0,0 +1,220 @@
+# 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.
+#
+
+dn: dc=com
+dc: com
+objectclass: top
+objectclass: domain
+
+dn: dc=example,dc=com
+dc: example
+objectclass: top
+objectclass: domain
+
+dn: ou=People,dc=example,dc=com
+ou: people
+objectclass: top
+objectclass: organizationalunit
+
+dn: uid=tmorris, ou=People,dc=example,dc=com
+cn: Ted Morris
+sn: Morris
+givenname: Ted
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Accounting
+ou: People
+l: Santa Clara
+uid: tmorris
+mail: tmorris@example.com
+telephonenumber: +1 408 555 9187
+facsimiletelephonenumber: +1 408 555 8473
+roomnumber: 4117
+userpassword: irrefutable
+
+dn: uid=kvaughan, ou=People,dc=example,dc=com
+cn: Kirsten Vaughan
+sn: Vaughan
+givenname: Kirsten
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Human Resources
+ou: People
+l: Sunnyvale
+uid: kvaughan
+mail: kvaughan@example.com
+telephonenumber: +1 408 555 5625
+facsimiletelephonenumber: +1 408 555 3372
+roomnumber: 2871
+userpassword: bribery
+
+dn: uid=abergin, ou=People,dc=example,dc=com
+cn: Andy Bergin
+sn: Bergin
+givenname: Andy
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Product Testing
+ou: People
+l: Cupertino
+uid: abergin
+mail: abergin@example.com
+telephonenumber: +1 408 555 8585
+facsimiletelephonenumber: +1 408 555 7472
+roomnumber: 3472
+userpassword: inflict
+
+dn: uid=dmiller, ou=People,dc=example,dc=com
+cn: David Miller
+sn: Miller
+givenname: David
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Accounting
+ou: People
+l: Sunnyvale
+uid: dmiller
+mail: dmiller@example.com
+telephonenumber: +1 408 555 9423
+facsimiletelephonenumber: +1 408 555 0111
+roomnumber: 4135
+userpassword: gosling
+
+dn: uid=gfarmer, ou=People,dc=example,dc=com
+cn: Gern Farmer
+sn: Farmer
+givenname: Gern
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Accounting
+ou: People
+l: Cupertino
+uid: gfarmer
+mail: gfarmer@example.com
+telephonenumber: +1 408 555 6201
+facsimiletelephonenumber: +1 408 555 8473
+roomnumber: 1269
+userpassword: ruling
+
+dn: uid=kwinters, ou=People,dc=example,dc=com
+cn: Kelly Winters
+sn: Winters
+givenname: Kelly
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Product Development
+ou: People
+l: Santa Clara
+uid: kwinters
+mail: kwinters@example.com
+telephonenumber: +1 408 555 9069
+facsimiletelephonenumber: +1 408 555 1992
+roomnumber: 4178
+userpassword: forsook
+
+dn: uid=trigden, ou=People,dc=example,dc=com
+cn: Torrey Rigden
+sn: Rigden
+givenname: Torrey
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Product Development
+ou: People
+l: Santa Clara
+uid: trigden
+mail: trigden@example.com
+telephonenumber: +1 408 555 9280
+facsimiletelephonenumber: +1 408 555 8473
+roomnumber: 3584
+userpassword: sensitive
+
+dn: uid=cschmith, ou=People,dc=example,dc=com
+cn: Chris Schmith
+sn: Schmith
+givenname: Chris
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Human Resources
+ou: People
+l: Santa Clara
+uid: cschmith
+mail: cschmith@example.com
+telephonenumber: +1 408 555 8011
+facsimiletelephonenumber: +1 408 555 4774
+roomnumber: 0416
+userpassword: hypotenuse
+
+dn: uid=jwallace, ou=People,dc=example,dc=com
+cn: Judy Wallace
+sn: Wallace
+givenname: Judy
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Accounting
+ou: People
+l: Sunnyvale
+uid: jwallace
+mail: jwallace@example.com
+telephonenumber: +1 408 555 0319
+facsimiletelephonenumber: +1 408 555 8473
+roomnumber: 1033
+userpassword: linear
+
+dn: uid=jwalker, ou=People,dc=example,dc=com
+cn: John Walker
+sn: Walker
+givenname: John
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+ou: Product Testing
+ou: People
+l: Cupertino
+uid: jwalker
+mail: jwalker@example.com
+telephonenumber: +1 408 555 1476
+facsimiletelephonenumber: +1 408 555 1992
+roomnumber: 3915
+userpassword: dogleg
+
diff --git a/opendj-sdk/opends/tests/stress-tests/shared/stax.dtd b/opendj-sdk/opends/tests/stress-tests/shared/stax.dtd
new file mode 100755
index 0000000..e8f2135
--- /dev/null
+++ b/opendj-sdk/opends/tests/stress-tests/shared/stax.dtd
@@ -0,0 +1,1148 @@
+<!--
+ STAf eXecution (STAX) Document Type Definition (DTD)
+
+ Generated Date: 20070622-12:02:15
+
+ This DTD module is identified by the SYSTEM identifier:
+
+ SYSTEM 'stax.dtd'
+
+-->
+
+<!-- Parameter entities referenced in Element declarations -->
+
+<!ENTITY % stax-elems 'function | script | signalhandler'>
+
+<!ENTITY % task 'call | terminate | raise |
+ block | iterate | throw |
+ break | paralleliterate | timer |
+ if | loop | import |
+ tcstatus | rethrow | parallel |
+ hold | return | job |
+ call-with-list | script | log |
+ stafcmd | nop | testcase |
+ message | process | signalhandler |
+ call-with-map | sequence | continue |
+ release | try'>
+
+<!--================= STAX Job Definition ========================== -->
+<!--
+ The root element STAX contains all other elements. It consists
+ of an optional defaultcall element and any number of function,
+ script, and/or signalhandler elements.
+-->
+<!ELEMENT stax ((%stax-elems;)*, defaultcall?, (%stax-elems;)*)>
+
+<!--================= The Default Call Function Element ============ -->
+<!--
+ The defaultcall element defines the function to call by default
+ to start the job. This can be overridden by the 'FUNCTION'
+ parameter when submitting the job to be executed.
+ The function attribute's value is a literal.
+-->
+<!ELEMENT defaultcall (#PCDATA)>
+<!ATTLIST defaultcall
+ function IDREF #REQUIRED
+>
+
+<!--================= The Call Element ============================= -->
+<!--
+ Perform a function with the referenced name.
+ The function attribute value is evaluated via Python.
+ Arguments can be specified as data to the call element.
+ Arguments are evaluated via Python.
+-->
+<!ELEMENT call (#PCDATA)>
+<!ATTLIST call
+ function CDATA #REQUIRED
+>
+
+
+<!--================= The Terminate Element ======================== -->
+<!--
+ The terminate element specifies to terminate a block in the job.
+ If an if attribute is specified and it evaluates via Python to
+ false, the terminate element is ignored.
+-->
+<!ELEMENT terminate EMPTY>
+<!ATTLIST terminate
+ block CDATA #IMPLIED
+ if CDATA "1"
+>
+
+<!--================= The Raise Element ============================ -->
+<!--
+ A raise signal element raises a specified signal.
+ Signals can also be raised by the STAX execution engine.
+ The signal attribute value is evaluated via Python.
+-->
+<!ELEMENT raise EMPTY>
+<!ATTLIST raise
+ signal CDATA #REQUIRED
+>
+
+<!--================= The Block Element ============================ -->
+<!--
+ Defines a task block that can be held, released, or terminated.
+ Used in conjunction with the hold/terminate/release elements to
+ define a task block that can be held, terminated, or released.
+ The name attribute value is evaluated via Python.
+-->
+<!ELEMENT block (%task;)>
+<!ATTLIST block
+ name CDATA #REQUIRED
+>
+
+<!--================= The Function Element ========================= -->
+<!--
+ The function element defines a named task which can be called.
+ The name and scope attribute values are literals.
+ If desired, the function can be described using a function-prolog
+ element (or the deprecated function-description element) and/or a
+ function-epilog element. Also, if desired, the function element
+ can define the arguments that can be passed to the function.
+-->
+<!ELEMENT function ((function-prolog | function-description)?,
+ (function-epilog)?,
+ (function-no-args | function-single-arg |
+ function-list-args | function-map-args)?,
+ (%task;))>
+<!ATTLIST function
+ name ID #REQUIRED
+ requires IDREFS #IMPLIED
+ scope (local | global) "global"
+>
+
+<!ELEMENT function-prolog (#PCDATA)>
+
+<!ELEMENT function-epilog (#PCDATA)>
+
+<!ELEMENT function-description (#PCDATA)>
+
+<!ELEMENT function-no-args EMPTY>
+
+<!ELEMENT function-single-arg (function-required-arg |
+ function-optional-arg |
+ function-arg-def)>
+
+<!ELEMENT function-list-args ((((function-required-arg+,
+ function-optional-arg*) |
+ (function-required-arg*,
+ function-optional-arg+)),
+ (function-other-args)?) |
+ function-arg-def+)>
+
+<!ELEMENT function-map-args (((function-required-arg |
+ function-optional-arg)+,
+ (function-other-args+)?) |
+ function-arg-def+)>
+
+<!ELEMENT function-required-arg (#PCDATA)>
+<!ATTLIST function-required-arg
+ name CDATA #REQUIRED
+>
+
+<!ELEMENT function-optional-arg (#PCDATA)>
+<!ATTLIST function-optional-arg
+ name CDATA #REQUIRED
+ default CDATA "None"
+>
+
+<!ELEMENT function-other-args (#PCDATA)>
+<!ATTLIST function-other-args
+ name CDATA #REQUIRED
+>
+
+<!ELEMENT function-arg-def (function-arg-description?,
+ function-arg-private?,
+ function-arg-property*)>
+<!ATTLIST function-arg-def
+ name CDATA #REQUIRED
+ type (required | optional | other) "required"
+ default CDATA "None"
+>
+
+<!ELEMENT function-arg-description (#PCDATA)>
+
+<!ELEMENT function-arg-private EMPTY>
+
+<!ELEMENT function-arg-property (function-arg-property-description?,
+ function-arg-property-data*)>
+<!ATTLIST function-arg-property
+ name CDATA #REQUIRED
+ value CDATA #IMPLIED
+>
+
+<!ELEMENT function-arg-property-description (#PCDATA)>
+
+<!ELEMENT function-arg-property-data (function-arg-property-data)*>
+<!ATTLIST function-arg-property-data
+ type CDATA #REQUIRED
+ value CDATA #IMPLIED
+>
+
+<!--================= The Iterate Element ========================= -->
+<!--
+ The iterate element iterates through a list of items, performing
+ its contained task while substituting each item in the list.
+ The iterated tasks are performed in sequence.
+-->
+<!ELEMENT iterate (%task;)>
+<!-- var is the name of the variable which will contain the
+ current item in the list or tuple being iterated.
+ It is a literal.
+ in is the list or tuple to be iterated. It is evaluated
+ via Python and must evaluate to be a list or tuple.
+ indexvar is the name of a variable which will contain the index of
+ the current item in the list or tuple being iterated.
+ It is a literal. The value for the first index is 0.
+-->
+<!ATTLIST iterate
+ var CDATA #REQUIRED
+ in CDATA #REQUIRED
+ indexvar CDATA #IMPLIED
+>
+
+<!--================= The Throw Element ============================ -->
+<!--
+ The throw element specifies an exception to throw.
+ The exception attribute value and any additional information
+ is evaluated via Python.
+-->
+<!ELEMENT throw (#PCDATA)>
+<!ATTLIST throw
+ exception CDATA #REQUIRED
+>
+
+<!--================= Break Element ================================ -->
+<!--
+ The break element can be used to break out of a loop or iterate
+ element.
+-->
+<!ELEMENT break EMPTY>
+
+<!--================= The Parallel Iterate Element ================ -->
+<!--
+ The parallel iterate element iterates through a list of items,
+ performing its contained task while substituting each item in
+ the list. The iterated tasks are performed in parallel.
+-->
+<!ELEMENT paralleliterate (%task;)>
+<!-- var is the name of a variable which will contain the current
+ item in the list or tuple being iterated.
+ It is a literal.
+ in is the list or tuple to be iterated. It is evaluated
+ via Python and must evaluate to be a list or tuple.
+ indexvar is the name of a variable which will contain the index of
+ the current item in the list or tuple being iterated.
+ It is a literal. The value of the first index is 0.
+-->
+<!ATTLIST paralleliterate
+ var CDATA #REQUIRED
+ in CDATA #REQUIRED
+ indexvar CDATA #IMPLIED
+>
+
+<!--================= The Timer Element ============================ -->
+<!--
+ The timer element runs a task for a specified duration.
+ If the task is still running at the end of the specified duration,
+ then the RC variable is set to 1, else if the task ended before
+ the specified duration, the RC variable is set to 0, else if the
+ timer could not start due to an invalid duration, the RC variable
+ is set to -1.
+-->
+<!ELEMENT timer (%task;)>
+<!-- duration is the maximum length of time to run the task.
+ Time can be expressed in milliseconds, seconds, minutes,
+ hours, days, weeks, or years. It is evaluated via Python.
+ Examples: duration='50' (50 milliseconds)
+ duration='90s' (90 seconds)
+ duration='5m' ( 5 minutes)
+ duration='36h' (36 hours)
+ duration='3d' ( 3 days)
+ duration='1w' ( 1 week)
+ duration='1y' ( 1 year)
+-->
+<!ATTLIST timer
+ duration CDATA #REQUIRED
+>
+
+<!--================= The Conditional Element (if-then-else) ======= -->
+<!--
+ Allows you to write an if or a case construct with zero or more
+ elseifs and one or no else statements.
+
+ The expr attribute value is evaluated via Python and must evaluate
+ to a boolean value.
+-->
+<!ELEMENT if ((%task;), elseif*, else?)>
+<!ATTLIST if
+ expr CDATA #REQUIRED
+>
+<!ELEMENT elseif (%task;)>
+<!ATTLIST elseif
+ expr CDATA #REQUIRED
+>
+<!ELEMENT else (%task;)>
+
+<!--================= The Loop Element ============================= -->
+<!--
+ The loop element performs a task a specified number of times,
+ allowing specification of an upper and lower bound with an
+ increment value and where the index counter is available to
+ sub-tasks. Also, while and/or until expressions can be
+ specified.
+-->
+<!ELEMENT loop (%task;)>
+<!-- var is the name of a variable which will contain the loop
+ index variable. It is a literal.
+ from is the starting value of the loop index variable.
+ It must evaluate to an integer value via Python.
+ to is the maximum value of the loop index variable
+ It must evaluate to an integer value via Python.
+ by is the increment value for the loop index variable
+ It must evaluate to an integer value via Python.
+ while is an expression that must evaluate to a boolean value
+ and is performed at the top of each loop. If it
+ evaluates to false, it breaks out of the loop.
+ until is an expression that must evaluate to a boolean value
+ and is performed at the bottom of each loop. If it
+ evaluates to false, it breaks out of the loop.
+-->
+<!ATTLIST loop
+ var CDATA #IMPLIED
+ from CDATA '1'
+ to CDATA #IMPLIED
+ by CDATA '1'
+ while CDATA #IMPLIED
+ until CDATA #IMPLIED
+>
+
+<!--================= The Import Element ========================== -->
+<!--
+ Allows importing of functions from another STAX XML job file.
+-->
+<!ELEMENT import (import-include?, import-exclude?)?>
+<!ATTLIST import
+ machine CDATA #REQUIRED
+ file CDATA #REQUIRED
+ mode CDATA "'error'"
+>
+<!ELEMENT import-include (#PCDATA)>
+<!ELEMENT import-exclude (#PCDATA)>
+
+
+<!--================= The Testcase Status Element ================== -->
+<!--
+ Marks status result ('pass' or 'fail' or 'info') for a testcase
+ and allows additional information to be specified. The status
+ result and the additional info is evaluated via Python.
+-->
+<!ELEMENT tcstatus (#PCDATA)>
+<!ATTLIST tcstatus
+ result CDATA #REQUIRED
+>
+
+<!--================= The Rethrow Element ========================= -->
+<!--
+ The rethrow element specifies to rethrow the current exception.
+-->
+<!ELEMENT rethrow EMPTY>
+
+<!--================= The Parallel Element ========================= -->
+<!--
+ The parallel element performs one or more tasks in parallel.
+-->
+<!ELEMENT parallel (%task;)+>
+
+<!--================= The Hold Element ============================= -->
+<!--
+ The hold element specifies to hold a block in the job.
+ If an if attribute is specified and it evaluates via Python to
+ false, the hold element is ignored.
+-->
+<!ELEMENT hold EMPTY>
+<!ATTLIST hold
+ block CDATA #IMPLIED
+ if CDATA "1"
+>
+
+<!--================= The Return Element =========================== -->
+<!--
+ Specifies a value to return from a function.
+-->
+<!ELEMENT return (#PCDATA)>
+
+<!--================== The STAX Job Element ===================== -->
+<!--
+ Specifies a STAX sub-job to be executed. This element is equivalent
+ to a STAX EXECUTE request.
+
+ The name attribute specifies the name of the job. The job name
+ defaults to the value of the function name called to start the job.
+ Its name and all of its element values are evaluated via Python.
+ The job element must contain a location element and either a
+ file or data element. This attribute is equivalent to the
+ JOBNAME option for a STAX EXECUTE command.
+
+ The clearlogs attribute specifies to delete the STAX Job and Job
+ User logs before the job is executed to ensure that only one job's
+ contents are in the log. This attribute is equivalent to the
+ CLEARLOGS option for a STAX EXECUTE command. The default is the
+ same option that was specified for the parent job. Valid values
+ include 'parent', 'default', 'enabled', and 'disabled'.
+
+ The monitor attribute specifies whether to automatically monitor the
+ subjob. Note that 'Automatically monitor recommended sub-jobs' must
+ be selected in the STAX Job Monitor properties in order for it to be
+ used. The default value for the monitor attribute is 0, a false
+ value.
+
+ The logtcelapsedtime attribute specifies to log the elapsed time
+ for a testcase in the summary record in the STAX Job log and on a
+ LIST TESTCASES request. This attribute is equivalent to the
+ LOGTCELAPSEDTIME option for a STAX EXECUTE command. The default is
+ the same option that was specified for the parent job. Valid values
+ include 'parent', 'default', 'enabled', and 'disabled'.
+
+ The logtcnumstarts attribute specifies to log the number of starts
+ for a testcase in the summary record in the STAX Job log and on a
+ LIST TESTCASES request. This attribute is equivalent to the
+ LOGNUMSTARTS option for a STAX EXECUTE command. The default is
+ the same option that was specified for the parent job. Valid values
+ include 'parent', 'default', 'enabled', and 'disabled'.
+
+ The logtcstartstop attribute specifies to log start/stop records
+ for testcases in the STAX Job log. This attribute is equivalent to
+ the LOGTCSTARTSTOP option for a STAX EXECUTE command. The default
+ is the same option that was specified for the parent job. Valid
+ values include 'parent', 'default', 'enabled', and 'disabled'.
+
+ The job element must contain either a job-file or job-data element.
+
+ The job element has the following optional elements:
+ job-function, job-function-args, job-scriptfile(s), and job-script
+
+ Each of these optional elements may specify an if attribute.
+ The if attribute must evaluate via Python to a true or false value.
+ If it does not evaluate to a true value, the element is ignored.
+ The default value for the if attribute is 1, a true value.
+ Note that in Python, true means any nonzero number or nonempty
+ object; false means not true, such as a zero number, an empty
+ object, or None. Comparisons and equality tests return 1 or 0
+ (true or false).
+-->
+<!ELEMENT job ((job-file | job-data),
+ job-function?, job-function-args?,
+ (job-scriptfile | job-scriptfiles)?,
+ job-script*, job-action?)>
+<!ATTLIST job
+ name CDATA #IMPLIED
+ clearlogs CDATA "'parent'"
+ monitor CDATA #IMPLIED
+ logtcelapsedtime CDATA "'parent'"
+ logtcnumstarts CDATA "'parent'"
+ logtcstartstop CDATA "'parent'"
+>
+
+<!--
+ The job-file element specifies the fully qualified name of a file
+ containing the XML document for the STAX job to be executed.
+ The job-file element is equivalent to the FILE option for a STAX
+ EXECUTE command.
+
+ The machine attribute specifies the name of the machine where the
+ xml file is located. If not specified, it defaults to Python
+ variable STAXJobXMLMachine. The machine attribute is equivalent
+ to the MACHINE option for a STAX EXECUTE command.
+ -->
+<!ELEMENT job-file (#PCDATA)>
+<!ATTLIST job-file
+ machine CDATA "STAXJobXMLMachine"
+>
+
+<!--
+ The job-data element specifies a string containing the XML document
+ for the job to be executed. This element is equivalent to the
+ DATA option for a STAX EXECUTE command.
+
+ The eval attribute specifies whether the data is be evaluated by
+ Python in the parent job. For example, if the job-data information
+ is dynamically generated and assigned to a Python variable, rather
+ than just containing the literal XML information, then you would
+ need to set the eval attribute to true (e.g. eval="1").
+ The default for the eval attribute is false ("0").
+ -->
+<!ELEMENT job-data (#PCDATA)>
+<!ATTLIST job-data
+ eval CDATA "0"
+>
+
+<!--
+ The job-function element specifies the name of the function element
+ to call to start the job, overriding the defaultcall element, if any,
+ specified in the XML document. The <function name> must be the name
+ of a function element specified in the XML document. This element is
+ equivalent to the FUNCTION option for a STAX EXECUTE command.
+-->
+<!ELEMENT job-function (#PCDATA)>
+<!ATTLIST job-function
+ if CDATA "1"
+>
+
+<!--
+ The job-function-args element specifies arguments to pass to the
+ function element called to start the job, overriding the arguments,
+ if any, specified for the defaultcall element in the XML document.
+ This element is equivalent to the ARGS option for a STAX EXECUTE
+ command.
+
+ The eval attribute specifies whether the data is to be evaluated
+ by Python in the parent job. The default for the eval attribute
+ is false ("0").
+-->
+<!ELEMENT job-function-args (#PCDATA)>
+<!ATTLIST job-function-args
+ if CDATA "1"
+ eval CDATA "0"
+>
+
+<!--
+ The job-script element specifies Python code to be executed.
+ This element is equivalent to the SCRIPT option for a STAX
+ EXECUTE command. Multiple job-script elements may be specified.
+
+ The eval attribute specifies whether the data is to be evaluated
+ by Python in the parent job. The default for the eval attribute
+ is false ("0").
+-->
+<!ELEMENT job-script (#PCDATA)>
+<!ATTLIST job-script
+ if CDATA "1"
+ eval CDATA "0"
+>
+
+<!--
+ The job-scriptfile element (equivalent to the job-scriptfiles
+ element) specifies the fully qualified name of a file containing
+ Python code to be executed, or a list of file names containing
+ Python code to be executed. The value must evaluate via Python to
+ a string or a list of strings. This element is equivalent to the
+ SCRIPTFILE option for a STAX EXECUTE command.
+
+ Specifying only one scriptfile could look like either:
+ ['C:/stax/scriptfiles/scriptfile1.py'] or
+ 'C:/stax/scriptfiles/scriptfiel1.py'
+ Specifying a list containing 3 scriptfiles could look like:
+ ['C:/stax/scriptfiles/scriptfile1.py',
+ 'C:/stax/scriptfiles/scriptfile2.py',
+ C:/stax/scriptfiles/scriptfile2.py' ]
+
+ The machine attribute specifies the name of the machine where the
+ SCRIPTFILE(s) are located. If not specified, it defaults to Python
+ variable STAXJobScriptFileMachine. This attribute is equivalent
+ to the SCRIPTFILEMACHINE option for a STAX EXECUTE command.
+-->
+<!ELEMENT job-scriptfile (#PCDATA)>
+<!ATTLIST job-scriptfile
+ if CDATA "1"
+ machine CDATA "STAXJobScriptFileMachine"
+>
+
+<!ELEMENT job-scriptfiles (#PCDATA)>
+<!ATTLIST job-scriptfiles
+ if CDATA "1"
+ machine CDATA "STAXJobScriptFileMachine"
+>
+
+<!--
+ The job-action element specifies a task to be executed after the
+ sub-job has started. This task will be executed in parallel with
+ the sub-job via a new STAX-Thread. The task will be able to use the
+ STAXSubJobID variable to obtain the sub-job ID in order to interact
+ with the job. If the job completes before the task completes, the
+ job will remain in a non-complete state until the task completes.
+ If the job cannot be started, the job-action task is not executed.
+-->
+<!ELEMENT job-action (%task;)>
+<!ATTLIST job-action
+ if CDATA "1"
+>
+
+<!--================= The Call-With-List Element =================== -->
+<!--
+ Perform a function with the referenced name with any number of
+ arguments in the form of a list. The function attribute value
+ and argument values are evaluated via Python.
+-->
+<!ELEMENT call-with-list (call-list-arg*)>
+<!ATTLIST call-with-list
+ function CDATA #REQUIRED
+>
+
+<!ELEMENT call-list-arg (#PCDATA)>
+
+
+<!--================= The Script Element =========================== -->
+<!--
+ Specifies Python code to be executed.
+-->
+<!ELEMENT script (#PCDATA)>
+
+<!--================= The Log Element ============================== -->
+<!--
+ Writes a message and its log level to a STAX Job User Log file.
+ The message must evaluate via Python to a string.
+
+ The log level specified defaults to 'info'. If specified, it
+ must evaluate via Python to a string containing one of the
+ following STAF Log Service Log levels:
+ fatal, warning, info, trace, trace2, trace3, debug, debug2,
+ debug3, start, stop, pass, fail, status, user1, user2, user3,
+ user4, user5, user6, user7, user8
+ The message attribute is evaluated via Python. If it evaluates
+ to true, the message text will also be sent to the STAX Job Monitor.
+ The message attribute defaults to the STAXMessageLog variable whose
+ value defaults to 0 (false) but can by changed within the STAX job
+ to turn on messaging.
+
+ If an if attribute is specified and it evaluates via Python to
+ false, then the log element is ignored.
+-->
+<!ELEMENT log (#PCDATA)>
+<!ATTLIST log
+ level CDATA "'info'"
+ message CDATA "STAXMessageLog"
+ if CDATA "1"
+>
+
+<!--================= The STAF Command Element ===================== -->
+<!--
+ Specifies a STAF command to be executed.
+ Its name and all of its element values are evaluated via Python.
+-->
+<!ELEMENT stafcmd (location, service, request)>
+<!ATTLIST stafcmd
+ name CDATA #IMPLIED
+>
+<!ELEMENT service (#PCDATA)>
+<!ELEMENT request (#PCDATA)>
+
+<!--================= The No Operation Element ===================== -->
+<!--
+ No operation action.
+-->
+<!ELEMENT nop EMPTY>
+
+<!--================= The Testcase Element ========================= -->
+<!--
+ Defines a testcase. Used in conjunction with the tcstatus
+ element to mark the status for a testcase.
+ The name attribute value is evaluated via Python.
+-->
+<!ELEMENT testcase (%task;)>
+<!ATTLIST testcase
+ name CDATA #REQUIRED
+ mode CDATA "'default'"
+>
+
+<!--================= The Message Element ========================== -->
+<!--
+ Generates an event and makes the message value available to the
+ STAX Job Monitor. The message must evaluate via Python to a string.
+
+ The log attribute is evaluated via Python to a boolean. If it
+ evaluates to true, the message text will also be logged in the STAX
+ Job User log. The log attribute defaults to the STAXLogMessage
+ variable whose value defaults to 0 (false) but can by changed within
+ the STAX job to turn on logging.
+
+ The log level is ignored if the log attribute does not evaluate to
+ true. It defaults to 'info'. If specified, it must evaluate via
+ Python to a string containing one of the following STAF Log Service
+ logging levels:
+ fatal, warning, info, trace, trace2, trace3, debug, debug2,
+ debug3, start, stop, pass, fail, status, user1, user2, user3,
+ user4, user5, user6, user7, user8
+
+ If an if attribute is specified and it evaluates via Python to
+ false, the message element is ignored.
+-->
+<!ELEMENT message (#PCDATA)>
+<!ATTLIST message
+ log CDATA "STAXLogMessage"
+ level CDATA "'info'"
+ if CDATA "1"
+>
+
+<!--================= The STAF Process Element ===================== -->
+<!--
+ Specifies a STAF process to be started.
+ All of its non-empty element values are evaluated via Python.
+-->
+<!ENTITY % procgroup1 '((parms?, workdir?) | (workdir?, parms?))'>
+<!ENTITY % procgroup2 '((title?, workload?) | (workload?, title?))'>
+<!ENTITY % procgroup1a '((parms?, workload?) | (workload?, parms?))'>
+<!ENTITY % procgroup2a '((title?, workdir?) | (workdir?, title?))'>
+<!ENTITY % procgroup3 '(((vars | var | envs | env)*, useprocessvars?) |
+ (useprocessvars?, (vars | var | envs | env)*))'>
+<!ENTITY % procgroup4 '(((username, password?)?, disabledauth?) |
+ ((disabledauth?, (username, password?)?)))'>
+<!ENTITY % procgroup5 '((stdin?, stdout?, stderr?) |
+ (stdout?, stderr?, stdin?) |
+ (stderr?, stdin?, stdout?) |
+ (stdin?, stderr?, stdout?) |
+ (stdout?, stdin?, stderr?) |
+ (stderr?, stdout?, stdin?))'>
+<!ENTITY % returnfileinfo '(returnfiles | returnfile)*'>
+<!ENTITY % procgroup5a '((%returnfileinfo;, returnstdout?, returnstderr?) |
+ (returnstdout?, returnstderr?, %returnfileinfo;) |
+ (returnstderr?, %returnfileinfo;, returnstdout?) |
+ (%returnfileinfo;, returnstderr?, returnstdout?) |
+ (returnstdout?, %returnfileinfo;, returnstderr?) |
+ (returnstderr?, returnstdout?, %returnfileinfo;))'>
+<!ENTITY % procgroup6 '((stopusing?, console?, focus?, statichandlename?) |
+ (stopusing?, console?, statichandlename?, focus?) |
+ (stopusing?, focus?, console?, statichandlename?) |
+ (stopusing?, focus?, statichandlename?, console?) |
+ (stopusing?, statichandlename?, console?, focus?) |
+ (stopusing?, statichandlename?, focus?, console?) |
+ (console?, focus?, stopusing?, statichandlename?) |
+ (console?, focus?, statichandlename?, stopusing?) |
+ (console?, stopusing?, focus?, statichandlename?) |
+ (console?, stopusing?, statichandlename?, focus?) |
+ (console?, statichandlename?, focus?, stopusing?) |
+ (console?, statichandlename?, stopusing?, focus?) |
+ (focus?, console?, stopusing?, statichandlename?) |
+ (focus?, console?, statichandlename?, stopusing?) |
+ (focus?, stopusing?, console?, statichandlename?) |
+ (focus?, stopusing?, statichandlename?, console?) |
+ (focus?, statichandlename?, console?, stopusing?) |
+ (focus?, statichandlename?, stopusing?, console?) |
+ (statichandlename?, stopusing?, console?, focus?) |
+ (statichandlename?, stopusing?, focus?, console?) |
+ (statichandlename?, console?, focus?, stopusing?) |
+ (statichandlename?, console?, stopusing?, focus?) |
+ (statichandlename?, focus?, console?, stopusing?) |
+ (statichandlename?, focus?, stopusing?, console?))'>
+<!ELEMENT process (location, command,
+ ((%procgroup1;, %procgroup2;) |
+ (%procgroup2;, %procgroup1;) |
+ (%procgroup1a;, %procgroup2a;) |
+ (%procgroup2a;, %procgroup1a;)),
+ %procgroup3;,
+ ((%procgroup4;, %procgroup5;, %procgroup5a;, %procgroup6;) |
+ (%procgroup4;, %procgroup6;, %procgroup5;, %procgroup5a;) |
+ (%procgroup5;, %procgroup5a;, %procgroup4;, %procgroup6;) |
+ (%procgroup5;, %procgroup5a;, %procgroup6;, %procgroup4;) |
+ (%procgroup6;, %procgroup4;, %procgroup5;, %procgroup5a;) |
+ (%procgroup6;, %procgroup5;, %procgroup5a;, %procgroup4;)),
+ other?, process-action?)>
+<!ATTLIST process
+ name CDATA #IMPLIED
+>
+
+<!--
+ The process element must contain a location element and a
+ command element.
+-->
+<!ELEMENT location (#PCDATA)>
+<!ELEMENT command (#PCDATA)>
+<!ATTLIST command
+ mode CDATA "'default'"
+ shell CDATA #IMPLIED
+>
+
+<!--
+ The parms element specifies any parameters that you wish to
+ pass to the command.
+ The value is evaluated via Python to a string.
+-->
+<!ELEMENT parms (#PCDATA)>
+<!ATTLIST parms
+ if CDATA "1"
+>
+
+<!--
+ The workload element specifies the name of the workload for
+ which this process is a member. This may be useful in
+ conjunction with other process elements.
+ The value is evaluated via Python to a string.
+-->
+<!ELEMENT workload (#PCDATA)>
+<!ATTLIST workload
+ if CDATA "1"
+>
+
+<!--
+ The title element specifies the program title of the process.
+ Unless overridden by the process, the title will be the text
+ that is displayed on the title bar of the application.
+ The value is evaluated via Python to a string.
+-->
+<!ELEMENT title (#PCDATA)>
+<!ATTLIST title
+ if CDATA "1"
+>
+
+<!--
+ The workdir element specifies the directory from which the
+ command should be executed. If you do not specify this
+ element, the command will be started from whatever directory
+ STAFProc is currently in.
+ The value is evaluated via Python to a string.
+-->
+<!ELEMENT workdir (#PCDATA)>
+<!ATTLIST workdir
+ if CDATA "1"
+>
+
+<!--
+ The vars (and var) elements specify STAF variables that go into the
+ process specific STAF variable pool.
+ The value must evaluate via Python to a string or a list of
+ strings. Multiple vars elements may be specified for a process.
+ The format for each variable is:
+ 'varname=value'
+ So, a list containing 3 variables could look like:
+ ['var1=value1', 'var2=value2', 'var3=value3']
+ Specifying only one variable could look like either:
+ ['var1=value1'] or
+ 'var1=value1'
+-->
+<!ELEMENT vars (#PCDATA)>
+<!ATTLIST vars
+ if CDATA "1"
+>
+
+<!ELEMENT var (#PCDATA)>
+<!ATTLIST var
+ if CDATA "1"
+>
+
+<!--
+ The envs (and env) elements specify environment variables that will
+ be set for the process. Environment variables may be mixed case,
+ however most programs assume environment variable names will
+ be uppercase, so, in most cases, ensure that your environment
+ variable names are uppercase.
+ The value must evaluate via Python to a string or a list of
+ strings. Multiple envs elements may be specified for a process.
+ The format for each variable is:
+ 'varname=value'
+ So, a list containing 3 variables could look like:
+ ['ENV_VAR_1=value1', 'ENV_VAR_2=value2', 'ENV_VAR_3=value3']
+ Specifying only one variable could look like either:
+ ['ENV_VAR_1=value1'] or
+ 'ENV_VAR_1=value1'
+-->
+<!ELEMENT envs (#PCDATA)>
+<!ATTLIST envs
+ if CDATA "1"
+>
+
+<!ELEMENT env (#PCDATA)>
+<!ATTLIST env
+ if CDATA "1"
+>
+<!--
+ The useprocessvars element specifies that STAF variable
+ references should try to be resolved from the STAF variable
+ pool associated with the process being started first.
+ If the STAF variable is not found in this pool, the STAF
+ global variable pool should then be searched.
+-->
+<!ELEMENT useprocessvars EMPTY>
+<!ATTLIST useprocessvars
+ if CDATA "1"
+>
+
+<!--
+ The stopusing element allows you to specify the method by
+ which this process will be STOPed, if not overridden on the
+ STOP command.
+ The value is evaluated via Python to a string.
+-->
+<!ELEMENT stopusing (#PCDATA)>
+<!ATTLIST stopusing
+ if CDATA "1"
+>
+
+<!--
+ The console element allows you to specify if the process should
+ get a new console window or share the STAFProc console.
+
+ use Must evaluate via Python to a string containing either:
+ - 'new' specifies that the process should get a new console
+ window. This option only has effect on Windows systems.
+ This is the default for Windows systems.
+ - 'same' specifies that the process should share the
+ STAFProc console. This option only has effect on Windows
+ systems. This is the default for Unix systems.
+-->
+<!ELEMENT console EMPTY>
+<!ATTLIST console
+ if CDATA "1"
+ use CDATA #REQUIRED
+>
+
+<!--
+ The focus element allows you to specify the focus that is to be
+ given to any new windows opened when starting a process on a Windows
+ system. The window(s) it effects depends on whether you are using
+ the 'default' or the 'shell' command mode:
+ - Default command mode (no SHELL option): The focus specified is
+ given to any new windows opened by the command specified.
+ - Shell command mode: The focus specified is given only to the
+ new shell command window opened, not to any windows opened by
+ the specified command.
+
+ The focus element only has effect on Windows systems and requires
+ STAF V3.1.4 or later on the machine where the process is run.
+
+ mode Must evaluate via Python to a string containing one of the
+ following values:
+ - 'background' specifies to display a window in the background
+ (e.g. not give it focus) in its most recent size and position.
+ This is the default.
+ - 'foreground' specifies to display a window in the foreground
+ (e.g. give it focus) in its most recent size and position.
+ - 'minimized' specifies to display a window as minimized.
+-->
+<!ELEMENT focus EMPTY>
+<!ATTLIST focus
+ if CDATA "1"
+ mode CDATA #REQUIRED
+>
+
+<!--
+ The username element specifies the username under which
+ the process should be started.
+ The value is evaluated via Python to a string.
+-->
+<!ELEMENT username (#PCDATA)>
+<!ATTLIST username
+ if CDATA "1"
+>
+
+<!--
+ The password element specifies the password with which to
+ authenticate the user specified with the username element.
+ The value is evaluated via Python to a string.
+-->
+<!ELEMENT password (#PCDATA)>
+<!ATTLIST password
+ if CDATA "1"
+>
+
+<!-- The disabledauth element specifies the action to take if a
+ username/password is specified but authentication has been disabled.
+
+ action Must evaluate via Python to a string containing either:
+ - 'error' specifies that an error should be returned.
+ - 'ignore' specifies that any username/password specified
+ is ignored if authentication is desabled.
+ This action overrides any default specified in the STAF
+ configuration file.
+-->
+<!ELEMENT disabledauth EMPTY>
+<!ATTLIST disabledauth
+ if CDATA "1"
+ action CDATA #REQUIRED
+>
+
+<!--
+ Specifies that a static handle should be created for this process.
+ The value is evaluated via Python to a string. It will be the
+ registered name of the static handle. Using this option will also
+ cause the environment variable STAF_STATIC_HANDLE to be set
+ appropriately for the process.
+-->
+<!ELEMENT statichandlename (#PCDATA)>
+<!ATTLIST statichandlename
+ if CDATA "1"
+>
+
+<!--
+ The stdin element specifies the name of the file from which
+ standard input will be read. The value is evaluated via
+ Python to a string.
+-->
+<!ELEMENT stdin (#PCDATA)>
+<!ATTLIST stdin
+ if CDATA "1"
+>
+
+<!--
+ The stdout element specifies the name of the file to which
+ standard output will be redirected.
+ The mode and filename are evaluated via Python to a string.
+-->
+<!ELEMENT stdout (#PCDATA)>
+<!-- mode specifies what to do if the file already exists.
+ The value must evaluate via Python to one of the
+ following:
+ 'replace' - specifies that the file will be replaced.
+ 'append' - specifies that the process' standard
+ output will be appended to the file.
+-->
+<!ATTLIST stdout
+ if CDATA "1"
+ mode CDATA "'replace'"
+>
+
+<!--
+ The stderr element specifies the file to which standard error will
+ be redirected. The mode and filename are evaluated via Python to a
+ string.
+-->
+<!ELEMENT stderr (#PCDATA)>
+<!-- mode specifies what to do if the file already exists or to
+ redirect standard error to the same file as standard output.
+ The value must evaluate via Python to one of the following:
+ 'replace' - specifies that the file will be replaced.
+ 'append' - specifies that the process's standard error will
+ be appended to the file.
+ 'stdout' - specifies to redirect standard error to the
+ same file to which standard output is redirected.
+ If a file name is specified, it is ignored.
+-->
+<!ATTLIST stderr
+ if CDATA "1"
+ mode CDATA "'replace'"
+>
+
+<!--
+ The returnstdout element specifies to return in STAXResult
+ the contents of the file where standard output was redirected
+ when the process completes.
+-->
+<!ELEMENT returnstdout EMPTY>
+<!ATTLIST returnstdout
+ if CDATA "1"
+>
+
+<!--
+ The returnstderr element specifies to return in STAXResult
+ the contents of the file where standard error was redirected
+ when the process completes.
+-->
+<!ELEMENT returnstderr EMPTY>
+<!ATTLIST returnstderr
+ if CDATA "1"
+>
+
+<!--
+ The returnfiles (and returnfile) elements specify that the
+ contents of the specified file(s) should be returned in
+ STAXResult when the process completes. The value must evaluate
+ via Python to a string or a list of strings. Multiple returnfile(s)
+ elements may be specified for a process.
+-->
+<!ELEMENT returnfiles (#PCDATA)>
+<!ATTLIST returnfiles
+ if CDATA "1"
+>
+
+<!ELEMENT returnfile (#PCDATA)>
+<!ATTLIST returnfile
+ if CDATA "1"
+>
+
+<!--
+ The process-action element specifies a task to be executed
+ when a process has started.
+-->
+<!ELEMENT process-action (%task;)>
+<!ATTLIST process-action
+ if CDATA "1"
+>
+<!--
+ The other element specifies any other STAF parameters that
+ may arise in the future. It is used to pass additional data
+ to the STAF PROCESS START request.
+ The value is evaluated via Python to a string.
+-->
+<!ELEMENT other (#PCDATA)>
+<!ATTLIST other
+ if CDATA "1"
+>
+
+<!--================= The Signal Handler Element =================== -->
+<!--
+ The signalhandler element defines how to handle a specified signal.
+ The signal attribute value is evaluated via Python.
+-->
+<!ELEMENT signalhandler (%task;)>
+<!ATTLIST signalhandler
+ signal CDATA #REQUIRED
+>
+
+<!--================= The Call-With-Map Element ==================== -->
+<!--
+ Perform a function with the referenced name with any number of
+ arguments in the form of a map of named arguments. The function
+ and name attribute values as well as the argument value are
+ evaluated via Python.
+-->
+<!ELEMENT call-with-map (call-map-arg*)>
+<!ATTLIST call-with-map
+ function CDATA #REQUIRED
+>
+
+<!ELEMENT call-map-arg (#PCDATA)>
+<!ATTLIST call-map-arg
+ name CDATA #REQUIRED
+>
+
+<!--================= The Sequence Element ========================= -->
+<!--
+ The sequence element performs one or more tasks in sequence.
+-->
+<!ELEMENT sequence (%task;)+>
+
+<!--================= Continue Element ============================= -->
+<!--
+ The continue element can be used to continue to the top of a loop
+ or iterate element.
+-->
+<!ELEMENT continue EMPTY>
+
+<!--================= The Release Element ========================== -->
+<!--
+ The release element specifies to release a block in the job.
+ If an if attribute is specified and it evaluates via Python to
+ false, the release element is ignored.
+-->
+<!ELEMENT release EMPTY>
+<!ATTLIST release
+ block CDATA #IMPLIED
+ if CDATA "1"
+>
+
+<!--=============== The Try / Catch / Finally Elements ============= -->
+<!--
+ The try element allows you to perform a task and to catch
+ exceptions that are thrown. Also, if a finally element is
+ specified, then the finally task is executed, no matter whether
+ the try task completes normally or abruptly, and no matter whether
+ a catch element is first given control.
+-->
+<!ELEMENT try ((%task;), ((catch+) | ((catch*), finally)))>
+<!--
+ The catch element performs a task when the specified exception is
+ caught. The var attribute specifies the name of the variable to
+ receive the data specified within the throw element. The typevar
+ attribute specifies the name of the variable to receive the type
+ of the exception.
+
+-->
+<!ELEMENT catch (%task;)>
+<!ATTLIST catch
+ exception CDATA #REQUIRED
+ var CDATA #IMPLIED
+ typevar CDATA #IMPLIED
+>
+<!ELEMENT finally (%task;)>
+
diff --git a/opendj-sdk/opends/tests/stress-tests/staf-installer.xml b/opendj-sdk/opends/tests/stress-tests/staf-installer.xml
new file mode 100755
index 0000000..b0b5648
--- /dev/null
+++ b/opendj-sdk/opends/tests/stress-tests/staf-installer.xml
@@ -0,0 +1,1185 @@
+<!--
+ ! 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.
+ ! -->
+
+<project name="opends-staf-installer" basedir="." default="usage">
+ <description>
+ Installer ant file for the staf platform
+ This allows tests that need a running instance of staf to easily
+ get one and hides all the complexity under the hood
+ </description>
+ <dirname file="${basedir}/.." property="project.home"/>
+
+ <!-- installer wide settings - top -->
+ <property file="${project.home}/PRODUCT"/>
+ <property name="product.name"
+ value="${SHORT_NAME}-${MAJOR_VERSION}.${MINOR_VERSION}.${POINT_VERSION}" />
+ <!-- load user properties first if they have been set -->
+ <property file="user.properties"/>
+ <!-- this is the file where the default values are defined -->
+ <property file="staf-installer/staf-installer.properties" />
+
+ <!-- Define the os name in case we're on windows
+ why do this ?
+ the jvm returns different strings for os.name on different flavors
+ of windows ('Windows 2000', 'Windows 2003', 'Windows XP', ...)
+ -->
+ <condition property="os.myname" value="windows" else="${os.name}">
+ <os family="windows"/>
+ </condition>
+
+ <!-- Check if the current platform is supported -->
+ <condition property="platform.supported">
+ <available file="staf-installer/${os.myname}.properties"/>
+ </condition>
+
+ <!-- Load architecture specific properties
+ loading this one first allows to override common properties with platform
+ specific properties
+ -->
+ <property file="staf-installer/${os.myname}-${os.arch}-${sun.arch.data.model}.properties" />
+ <property file="staf-installer/${os.myname}-${os.arch}.properties" />
+ <!-- Load properties common to the OS regardless of architecture -->
+ <property file="staf-installer/${os.myname}.properties" />
+
+ <!-- Daily build properties -->
+ <tstamp>
+ <format property="todays.date" pattern="yyyyMMdd"/>
+ </tstamp>
+ <tstamp>
+ <format property="yesterdays.date" pattern="yyyyMMdd" offset="-24" unit="hour"/>
+ </tstamp>
+ <condition property="daily.date" value="${todays.date}" else="${yesterdays.date}">
+ <http url="${daily.build.url}/${todays.date}${daily.build.time}/${SHORT_NAME}/build/package/${product.name}.zip"/>
+ </condition>
+ <property name="daily.package.dir"
+ value="${staf.home}/daily-builds/${daily.date}"/>
+ <property name="daily.package"
+ value="${daily.package.dir}/${product.name}.zip"/>
+ <property name="daily.package.url"
+ value="${daily.build.url}/${daily.date}${daily.build.time}/${SHORT_NAME}/build/package/${product.name}.zip"/>
+
+ <!-- installer wide settings - bottom -->
+
+<!-- Usage section - top -->
+ <!-- Default target => how to use this file -->
+ <target name="usage"
+ description="Gives a message that helps using this file">
+ <echo>Installer usage:
+ main targets=
+ usage : print this message
+ status : report if the staf is installed and running
+ bootstrap : install and start the framework
+ run-tests : run the stress tests (requires staf installed and started)
+ run-daily : run the stress tests on today's build
+ wipeout : stop and uninstall the framework
+ gui tools:
+ gui : start the STAX gui
+ jvm-log : start the STAF jvm log viewer
+ subtargets=
+ download : download the archives necessary to install the staf
+ install : install the staf
+ start : start the staf unless it is already running
+ stop : stop the staf if it is already running
+ uninstall : uninstall the staf if it is installed</echo>
+ </target>
+<!-- Usage section - bottom -->
+
+<!-- Downloader section - top -->
+ <target name="download-do-prepare-check-proxy" unless="proxy.disabled">
+ <echo>Checking for proxy [${proxy.host}:${proxy.port}] as user [${proxy.user}].</echo>
+ <echo>Note: If these values do not match your environment, </echo>
+ <echo> please use the 'configure' target</echo>
+ <condition property="proxy.enabled">
+ <and>
+ <not>
+ <http url="${bits.download.url}"/>
+ </not>
+ <isreachable host="${proxy.host}" timeout="5"/>
+ </and>
+ </condition>
+ </target>
+ <target name="download-do-prepare-set-proxy" if="proxy.enabled" >
+ <echo>Proxy detected. Configuring.</echo>
+ <setproxy
+ proxyhost="${proxy.host}"
+ proxyport="${proxy.port}"
+ proxyuser="${proxy.user}"
+ proxypassword="${proxy.pass}"/>
+ </target>
+ <target
+ name="download-do-prepare"
+ depends="download-do-prepare-check-proxy,download-do-prepare-set-proxy">
+ <mkdir dir="${bits.download.dir}" />
+ </target>
+ <target name="download-do-failed" unless="bits.all.downloaded" >
+ <echo>Couldn't get the bits, sorry.</echo>
+ </target>
+ <target name="download-do-succeeded" if="bits.all.downloaded" >
+ <echo>Successfully downloaded all the archives needed for installation.</echo>
+ </target>
+
+ <target name="download-do-get-staf" unless="bits.staf.downloaded.before">
+ <get src="${bits.download.url}/${bits.staf.archive}"
+ dest="${bits.download.dir}/${bits.staf.archive}" />
+ <property name="bits.staf.downloaded" value="true"/>
+ </target>
+
+ <target name="download-do-get-services" unless="bits.services.downloaded.before">
+ <get src="${bits.download.url}/${bits.email.archive}"
+ dest="${bits.download.dir}/${bits.email.archive}" />
+ <get src="${bits.download.url}/${bits.event.archive}"
+ dest="${bits.download.dir}/${bits.event.archive}" />
+ <get src="${bits.download.url}/${bits.eventmanager.archive}"
+ dest="${bits.download.dir}/${bits.eventmanager.archive}" />
+ <get src="${bits.download.url}/${bits.stax.archive}"
+ dest="${bits.download.dir}/${bits.stax.archive}" />
+ <property name="bits.services.downloaded" value="true" />
+ </target>
+
+ <target name="download-do"
+ if="platform.supported"
+ depends="status-do,download-do-prepare,download-do-get-staf,download-do-get-services">
+ <condition property="bits.all.downloaded" >
+ <and>
+ <or>
+ <isset property="bits.staf.downloaded"/>
+ <isset property="bits.staf.downloaded.before" />
+ </or>
+ <or>
+ <isset property="bits.services.downloaded"/>
+ <isset property="bits.services.downloaded.before" />
+ </or>
+ </and>
+ </condition>
+ <antcall target="download-do-succeeded" />
+ <antcall target="download-do-failed" />
+ </target>
+
+ <target name="download-dont" unless="platform.supported">
+ <echo>${os.myname}-${os.arch} is not a supported platform</echo>
+ </target>
+
+ <target name="download"
+ depends="status-do,download-do,download-dont"
+ description="Download the bits necessary to install staf"/>
+
+ <target name="download-daily" depends="status-do,download-do-prepare" unless="daily.package.downloaded">
+ <mkdir dir="${daily.package.dir}"/>
+ <get src="${daily.package.url}"
+ dest="${daily.package}"/>
+ </target>
+
+ <target name="remove-bits">
+ <delete dir="${bits.download.dir}"/>
+ </target>
+
+ <target name="re-download" depends="remove-bits,download"/>
+<!-- Downloader section - bottom -->
+
+<!-- Installation section - top -->
+ <target name="install-config" if="staf.install.successful">
+ <copy file="${staf.config.stubs}" tofile="${staf.config}">
+ <filterchain>
+ <expandproperties/>
+ </filterchain>
+ </copy>
+ </target>
+
+ <target name="install-services" if="staf.install.successful">
+ <unzip
+ src="${bits.download.dir}/${bits.email.archive}"
+ dest="${staf.install.dir}/services"/>
+ <unzip
+ src="${bits.download.dir}/${bits.event.archive}"
+ dest="${staf.install.dir}/services"/>
+ <unzip
+ src="${bits.download.dir}/${bits.eventmanager.archive}"
+ dest="${staf.install.dir}/services"/>
+ <unzip
+ src="${bits.download.dir}/${bits.stax.archive}"
+ dest="${staf.install.dir}/services"/>
+ </target>
+
+ <target name="install-staf-jar"
+ description="deploy the staf bits"
+ if="staf.archive.is.jar">
+ <echo message="Installing staf, please wait, it'll take some time..." />
+ <java jar="${bits.download.dir}/${bits.staf.archive}" fork="true">
+ <arg value="-silent" />
+ <arg line="-W license.selection="Accept"" />
+ <arg line="-W stafinstalldirectory.defaultInstallLocation="${staf.install.dir}""/>
+ </java>
+ <condition property="staf.install.successful">
+ <available file="${staf.install.dir}/bin/STAF.cfg"/>
+ </condition>
+ </target>
+
+ <target name="install-staf-tar" if="staf.archive.is.tar">
+ <delete dir="${bits.download.dir}/staf"/>
+ <gunzip
+ src="${bits.download.dir}/${bits.staf.archive}"
+ dest="${bits.download.dir}"/>
+ <untar dest="${bits.download.dir}">
+ <fileset dir="${bits.download.dir}">
+ <include name="*.tar"/>
+ </fileset>
+ </untar>
+ <chmod file="${bits.download.dir}/staf/STAFInst" perm="755"/>
+ <exec executable="${bits.download.dir}/staf/STAFInst">
+ <arg value="-source"/>
+ <arg value="${bits.download.dir}/staf"/>
+ <arg value="-target"/>
+ <arg value="${staf.install.dir}"/>
+ <arg value="-acceptlicense"/>
+ </exec>
+ <condition property="staf.install.successful">
+ <available file="${staf.install.dir}/bin/STAF.cfg"/>
+ </condition>
+ </target>
+
+ <target name="install-staf"
+ depends="install-staf-jar,install-staf-tar">
+ <fail unless="staf.install.successful" />
+ </target>
+
+ <target name="install-prepare" >
+ <mkdir dir="${staf.install.dir}"/>
+ <mkdir dir="${staf.install.dir}/services"/>
+ <mkdir dir="${staf.config.dir}"/>
+ </target>
+
+ <target name="install"
+ description="Perform framework installation"
+ depends="status-do,install-prepare,install-staf,install-services,install-config"
+ if="bits.all.downloaded"/>
+<!-- Installation section - bottom -->
+
+<!-- Gui section - top -->
+ <target name="gui"
+ depends="status-do"
+ description="brings up the stax gui" >
+ <condition property="gui.spawn" value="false" else="true">
+ <isset property="DEBUG"/>
+ </condition>
+ <exec
+ dir="${staf.install.dir}"
+ executable="${java.home}/bin/java"
+ spawn="${gui.spawn}">
+ <env key="${path.var}" path="${java.home}${file.separator}bin${path.separator}${staf.install.dir}${file.separator}bin${path.separator}${path.current}"/>
+ <env key="LD_LIBRARY_PATH" path="${staf.lib.dir}"/>
+ <env key="CLASSPATH" path="${staf.lib.dir}/JSTAF.jar${path.separator}${e.CLASSPATH}"/>
+ <env key="STAFCONVDIR" value="${staf.install.dir}/codepage"/>
+ <env key="STAFCODEPAGE" value="LATIN_1"/>
+ <arg value="-classpath"/>
+ <arg value="${staf.install.dir}/services/stax/STAXMon.jar${path.separator}${staf.lib.dir}/JSTAF.jar"/>
+ <arg value="com.ibm.staf.service.stax.STAXMonitor"/>
+ </exec>
+ </target>
+<!-- Gui section - bottom -->
+<!-- Jvmlog section - top -->
+ <target name="jvm-log"
+ depends="status-do"
+ description="brings up the jvmlog gui" >
+
+ <exec
+ dir="${staf.install.dir}"
+ executable="${java.home}/bin/java"
+ spawn="true">
+ <env key="${path.var}" path="${java.home}${file.separator}bin${path.separator}${staf.install.dir}${file.separator}bin${path.separator}${path.current}"/>
+ <env key="LD_LIBRARY_PATH" path="${staf.lib.dir}"/>
+ <env key="CLASSPATH" path="${staf.lib.dir}/JSTAF.jar${path.separator}${e.CLASSPATH}"/>
+ <env key="STAFCONVDIR" value="${staf.install.dir}/codepage"/>
+ <env key="STAFCODEPAGE" value="LATIN_1"/>
+ <arg value="-classpath"/>
+ <arg value="${staf.lib.dir}${path.separator}${staf.lib.dir}/JSTAF.jar"/>
+ <arg value="com.ibm.staf.STAFJVMLogViewer"/>
+ </exec>
+ </target>
+<!-- Jvmlog section - bottom -->
+
+<!-- Configure section - top -->
+ <target name="configure">
+ <echo>I. STAF configuration</echo>
+ <input
+ message="I [1/1] STAF port"
+ defaultvalue="${staf.port}"
+ addproperty="staf.port.input"
+ />
+ <input
+ message="I [2/2] Host name"
+ defaultvalue="${host.name}"
+ addproperty="host.name.input"
+ />
+ <echo>II. HTTP proxy (to download the framework and/or daily builds)</echo>
+ <input
+ message="II [1/4] Proxy host"
+ defaultvalue="${proxy.host}"
+ addproperty="proxy.host.input"
+ />
+ <input
+ message="II [2/4] Proxy port"
+ defaultvalue="${proxy.port}"
+ addproperty="proxy.port.input"
+ />
+ <input
+ message="II [3/4] Proxy user"
+ defaultvalue="${proxy.user}"
+ addproperty="proxy.user.input"
+ />
+ <input
+ message="II [4/4] Proxy password"
+ defaultvalue="${proxy.pass}"
+ addproperty="proxy.pass.input"
+ />
+ <echo>III. OpenDS configuration</echo>
+ <input
+ message="III [1/5] OpenDS ldap port"
+ defaultvalue="${opends.port.ldap}"
+ addproperty="opends.port.ldap.input"
+ />
+ <input
+ message="III [2/5] OpenDS secure ldap port"
+ defaultvalue="${opends.port.ldaps}"
+ addproperty="opends.port.ldaps.input"
+ />
+ <input
+ message="III [3/5] OpenDS jmx port"
+ defaultvalue="${opends.port.jmx}"
+ addproperty="opends.port.jmx.input"
+ />
+ <input
+ message="III [4/5] OpenDS admin DN (also called root DN)"
+ defaultvalue="${opends.admin.dn}"
+ addproperty="opends.admin.dn.input"
+ />
+ <input
+ message="III [5/5] OpenDS admin password"
+ defaultvalue="${opends.admin.pwd}"
+ addproperty="opends.admin.pwd.input"
+ />
+ <echo>IV. Email configuration</echo>
+ <input
+ message="IV [1/7] Send report email?"
+ defaultvalue="${email.enabled}"
+ validargs="y,n"
+ addproperty="email.enabled.input"
+ />
+ <input
+ message="IV [2/7] Email will appear to be from"
+ defaultvalue="${email.from}"
+ addproperty="email.from.input"
+ />
+ <input
+ message="IV [3/7] Send email to"
+ defaultvalue="${email.to}"
+ addproperty="email.to.input"
+ />
+ <input
+ message="IV [4/7] SMTP server host"
+ defaultvalue="${email.server.host}"
+ addproperty="email.server.host.input"
+ />
+ <input
+ message="IV [5/7] SMTP server port"
+ defaultvalue="${email.server.port}"
+ addproperty="email.server.port.input"
+ />
+ <input
+ message="IV [6/7] SMTP server user"
+ defaultvalue="${email.server.user}"
+ addproperty="email.server.user.input"
+ />
+ <input
+ message="IV [7/7] SMTP server password"
+ defaultvalue="${email.server.pwd}"
+ addproperty="email.server.pwd.input"
+ />
+
+ <echo>Saving ...</echo>
+ <echo
+ file="user.properties">staf.port=${staf.port.input}
+host.name=${host.name.input}
+proxy.host=${proxy.host.input}
+proxy.port=${proxy.port.input}
+proxy.user=${proxy.user.input}
+proxy.pass=${proxy.pass.input}
+opends.port.ldap=${opends.port.ldap.input}
+opends.port.ldaps=${opends.port.ldaps.input}
+opends.port.jmx=${opends.port.jmx.input}
+opends.admin.dn=${opends.admin.dn.input}
+opends.admin.pwd=${opends.admin.pwd.input}
+email.enabled=${email.enabled.input}
+email.from=${email.from.input}
+email.to=${email.to.input}
+email.server.host=${email.server.host.input}
+email.server.port=${email.server.port.input}
+email.server.user=${email.server.user.input}
+email.server.pwd=${email.server.pwd.input}
+</echo>
+ </target>
+ <target name="unconfigure">
+ <delete file="user.properties"/>
+ </target>
+<!-- Configure section - bottom -->
+
+<!-- Run tests section - top -->
+ <target name="run-tests-build-pkg"
+ if="product.package.build"
+ depends="run-tests-get-pkg">
+ <ant dir="${project.home}"
+ antfile="${project.home}/build.xml"
+ target="package"/>
+ </target>
+
+ <target name="run-tests-get-pkg">
+ <condition property="product.package.dir"
+ value="${daily.package.dir}"
+ else="${project.home}/build/package">
+ <isset property="tests.run.daily"/>
+ </condition>
+ <property name="product.package"
+ value="${product.package.dir}/${product.name}.zip"/>
+ <condition property="product.package.build">
+ <and>
+ <not>
+ <isset property="tests.run.daily"/>
+ </not>
+ <not>
+ <available file="${product.package}"/>
+ </not>
+ </and>
+ </condition>
+ </target>
+
+ <target name="run-tests-check" depends="run-tests-build-pkg">
+ <condition property="opends.port.ldap.taken">
+ <socket port="${opends.port.ldap}" server="${host.name}"/>
+ </condition>
+ <condition property="opends.port.ldaps.taken">
+ <socket port="${opends.port.ldaps}" server="${host.name}"/>
+ </condition>
+ <condition property="opends.port.jmx.taken">
+ <socket port="${opends.port.jmx}" server="${host.name}"/>
+ </condition>
+ <condition property="product.package.available">
+ <available file="${product.package}"/>
+ </condition>
+ <condition property="run-tests.proceed">
+ <and>
+ <not>
+ <or>
+ <isset property="opends.port.ldap.taken"/>
+ <isset property="opends.port.ldaps.taken"/>
+ <isset property="opends.port.jmx.taken"/>
+ </or>
+ </not>
+ <isset property="staf.running"/>
+ <isset property="product.package.available"/>
+ </and>
+ </condition>
+ </target>
+
+ <target name="run-tests-prepare"
+ depends="status-do,run-tests-build-pkg"
+ if="run-tests.proceed">
+ <!-- python config - top -->
+ <!-- 1. get a timestamp for step 3 -->
+ <tstamp>
+ <format property="tests.run.time" pattern="yyyy.MM.dd-HH.mm.ss"/>
+ </tstamp>
+ <!-- clean up some -->
+ <delete dir="${staf.logs.dir}"/>
+ <delete dir="${staf.tmp.dir}"/>
+ <!-- make all the necessary directories for this test run -->
+ <mkdir dir="${staf.tmp.dir}"/>
+ <mkdir dir="${tests.run.dir}/${tests.run.time}"/>
+ <mkdir dir="${tests.run.dir}/${tests.run.time}/config"/>
+ <mkdir dir="${tests.run.dir}/${tests.run.time}/report"/>
+ <!-- these will serve for after-the-fact archiving the logs -->
+ <mkdir dir="${tests.run.dir}/${tests.run.time}/staf-logs"/>
+ <mkdir dir="${tests.run.dir}/${tests.run.time}/server-logs"/>
+ <mkdir dir="${tests.run.dir}/${tests.run.time}/coverage"/>
+
+ <!-- 3. perform the config back up if necessary -->
+ <copy file="${tests.config}"
+ tofile="${tests.config.backup}"
+ overwrite="false"/>
+ <!-- 4. generate the timestamped config file that will be used for this run -->
+ <copy file="${tests.config.stubs}"
+ tofile="${tests.run.dir}/${tests.run.time}/config/${tests.config.file}">
+ <filterchain>
+ <expandproperties/>
+ </filterchain>
+ </copy>
+ <!-- 5. this is a windows-specific measure to replace the windows file
+ separator by a forward slash. Staf otherwise fails to find the
+ files.
+ -->
+ <replace file="${tests.run.dir}/${tests.run.time}/config/${tests.config.file}" token="\" value="/"/>
+ <!-- 6. copy the generated config in place of the previous one -->
+ <copy file="${tests.run.dir}/${tests.run.time}/config/${tests.config.file}"
+ tofile="${tests.config}"
+ overwrite="true"/>
+ <!-- python config - bottom -->
+ </target>
+
+ <target name="run-tests-cant-ldap" if="opends.port.ldap.taken">
+ <echo>Port [${opends.port.ldap}] already used</echo>
+ </target>
+ <target name="run-tests-cant-ldaps" if="opends.port.ldaps.taken">
+ <echo>Port [${opends.port.ldaps}] already used</echo>
+ </target>
+ <target name="run-tests-cant-jmx" if="opends.port.jmx.taken">
+ <echo>Port [${opends.port.jmx}] already used</echo>
+ </target>
+ <target name="run-tests-cant-staf" unless="staf.running">
+ <echo>Staf is NOT running. Use the start target and try again</echo>
+ </target>
+ <target name="run-tests-cant-package" unless="product.package.available">
+ <echo>the package [${product.package}] is not available</echo>
+ </target>
+ <target name="run-tests-cant"
+ depends="run-tests-cant-ldap,run-tests-cant-ldaps,run-tests-cant-jmx,run-tests-cant-staf,run-tests-cant-package"
+ unless="run-tests.proceed">
+ <echo>Could not run the tests for the afore mentioned reasons</echo>
+ <fail message="Could not run the stress tests"/>
+ </target>
+ <target name="run-tests"
+ depends="status-do,run-tests-check,run-tests-cant,run-tests-prepare,run-my-tests-default-plan"
+ if="run-tests.proceed">
+ <property name="tests.request" value="EXECUTE FILE ${tests.xml} JOBNAME OpenDS_stress_Tests SCRIPTFILE ${tests.config} SCRIPTFILE ${tests.python} WAIT CLEARLOGS"/>
+ <condition property="tests.replay.script" value="replay.bat" else="replay.sh">
+ <os family="windows"/>
+ </condition>
+ <echo>Generating replay script to allow you to re-execute the tests in the same conditions</echo>
+ <copy file="${staf.installer.dir}${file.separator}${tests.replay.script}"
+ tofile="${tests.run.dir}${file.separator}${tests.run.time}${file.separator}${tests.replay.script}">
+ <filterchain>
+ <expandproperties/>
+ </filterchain>
+ </copy>
+ <echo>While the tests are running you may tail the job logs at</echo>
+ <echo>${staf.home}/logs/MACHINE/</echo>
+ <echo>Running tests. This will take more than a while.</echo>
+ <property name="CLASSPATH" value="${staf.lib.dir}/JSTAF.jar${path.separator}${e.CLASSPATH}"/>
+ <exec
+ dir="${staf.bin.dir}"
+ executable="${staf.executable}"
+ >
+ <arg line="LOCAL STAX ${tests.request}"/>
+ <env key="CLASSPATH" path="${staf.lib.dir}/JSTAF.jar${path.separator}${e.CLASSPATH}"/>
+ <env key="LD_LIBRARY_PATH" value="${staf.lib.dir}"/>
+ <env key="STAFCONVDIR" value="${staf.install.dir}/codepage"/>
+ <env key="STAFCODEPAGE" value="LATIN_1"/>
+ </exec>
+ <!-- restore the original config file to avoid it to be mistakenly commited
+ with the generated values -->
+ <delete file="${tests.config}"/>
+ <move file="${tests.config.backup}"
+ tofile="${tests.config}"/>
+ <echo file="${tests.run.dir}/last.run">${tests.run.time}</echo>
+ <echo>Saving server logs</echo>
+ <copy todir="${tests.run.dir}/${tests.run.time}/server-logs">
+ <fileset dir="${staf.tmp.dir}/${product.name}/logs"/>
+ </copy>
+ <echo>Saving Staf/Stax logs</echo>
+ <copy todir="${tests.run.dir}/${tests.run.time}/staf-logs">
+ <fileset dir="${staf.home}/logs"/>
+ </copy>
+ <!--<delete dir="${staf.home}/logs" />-->
+ <echo>Saving report</echo>
+ <copy todir="${tests.run.dir}/${tests.run.time}/report">
+ <fileset dir="${staf.tmp.dir}">
+ <include name="r*"/>
+ </fileset>
+ </copy>
+ <echo>You may access the tests report at</echo>
+ <echo>${tests.run.dir}/${tests.run.time}/report/my-report.html</echo>
+ <antcall target="send-mail"/>
+ </target>
+
+ <target name="run-my-tests-get-contrib-check">
+ <available file="ant-contrib.zip" property="ant-contrib.downloaded" />
+ </target>
+ <target name="run-my-tests-get-contrib" depends="run-my-tests-get-contrib-check,download-do-prepare-check-proxy,download-do-prepare-set-proxy" unless="ant-contrib.downloaded">
+ <get src="http://easynews.dl.sourceforge.net/sourceforge/ant-contrib/ant-contrib-1.0b3-bin.zip" dest="ant-contrib.zip"/>
+ </target>
+ <target name="run-my-tests-expand-check">
+ <available file="ant-contrib" property="ant-contrib.expanded" />
+ </target>
+ <target name="run-my-tests-expand" depends="run-my-tests-get-contrib,run-my-tests-expand-check" unless="ant-contrib.expanded">
+ <unzip src="ant-contrib.zip" dest="." />
+ </target>
+
+ <target name="run-my-tests-define" depends="run-my-tests-expand">
+ <taskdef resource="net/sf/antcontrib/antlib.xml">
+ <classpath>
+ <fileset dir="ant-contrib">
+ <include name="**/*.jar"/>
+ </fileset>
+ </classpath>
+ </taskdef>
+ </target>
+
+ <target name="run-my-tests" depends="run-my-tests-define">
+ <condition property="already.customized" value="true" else="false">
+ <available file="${test.plan.custom}" />
+ </condition>
+ <if>
+ <equals arg1="${already.customized}" arg2="true" />
+ <then>
+ <input message="A previously customized test plan was detected. Do you want to change the list of suites to run?" validargs="y,n" defaultvalue="n" addproperty="prompt.do" />
+ </then>
+ <else>
+ <echo>No previous customized test plan found.</echo>
+ <property name="prompt.do" value="y" />
+ </else>
+ </if>
+
+ <if>
+ <equals arg1="${prompt.do}" arg2="y" />
+ <then>
+ <delete file="${test.plan.custom}" />
+ <foreach list="${test.plan.list}" param="test" target="run-my-tests-prompt"/>
+ </then>
+ </if>
+
+ <echo>You may now run those tests simply by calling 'build run-tests'</echo>
+ <!-- <antcall target="run-tests" /> -->
+ </target>
+
+ <target name="run-my-tests-prompt">
+ <input message="Do you want to execute ${test}?" validargs="y,n" defaultvalue="y" addproperty="answer"/>
+ <if>
+ <equals arg1="${answer}" arg2="y" />
+ <then>
+ <echo file="${test.plan.custom}" append="true">${test}
+</echo>
+ </then>
+ </if>
+ </target>
+ <target name="run-my-tests-default-plan" depends="run-my-tests-define" unless="custom-suites.on">
+ <delete file="${test.plan.default}"/>
+ <foreach list="${test.plan.list}" param="test" target="run-my-tests-default-plan-add"/>
+ </target>
+ <target name="run-my-tests-default-plan-add">
+ <echo file="${test.plan.default}" append="true">${test}
+</echo>
+ </target>
+
+
+ <target name="send-mail-prepare">
+ <condition property="test.successful">
+ <available file="${staf.tmp.dir}/my-report.html"/>
+ </condition>
+ <condition property="email.send">
+ <equals arg1="${email.enabled}" arg2="y"
+ casesensitive="false" trim="true"/>
+ </condition>
+ </target>
+
+ <target name="send-mail-get-percentage" depends="send-mail-prepare" if="test.successful">
+ <echo>test report found.Proceeding...</echo>
+ <delete file="${staf.tmp.dir}/percentage.properties"/>
+ <copy file="${staf.tmp.dir}/my-report.html" tofile="${staf.tmp.dir}/percentage.properties">
+ <filterchain>
+ <linecontains>
+ <contains value='font size="+2'/>
+ </linecontains>
+ <tokenfilter>
+ <replaceregex pattern=".*font size=.+2..(\d+)%./font.*" replace="test.percentage=\1"/>
+ </tokenfilter>
+ </filterchain>
+ </copy>
+ <property file="${staf.tmp.dir}/percentage.properties"/>
+ <echo>Test Success Rate: ${test.percentage}%</echo>
+ </target>
+
+ <target name="send-mail" if="email.send" depends="send-mail-get-percentage">
+ <condition property="email.send.noauth">
+ <or>
+ <not>
+ <isset property="email.server.user"/>
+ </not>
+ <not>
+ <length string="${email.server.user}" when="greater"
+ trim="true" length="0"/>
+ </not>
+ </or>
+ </condition>
+ <condition property="email.file"
+ value="${staf.tmp.dir}/my-report.html"
+ else="staf-installer/failure.html">
+ <available file="${staf.tmp.dir}/my-report.html"/>
+ </condition>
+ <condition property="email.subject"
+ value="FT - Run - ${daily.date} - ${os.name} - ${os.arch} - ${test.percentage}%"
+ else="FT - Failed -${daily.date} - ${os.name} - ${os.arch}">
+ <available file="${staf.tmp.dir}/my-report.html"/>
+ </condition>
+ <antcall target="send-mail-noauth"/>
+ <antcall target="send-mail-withauth"/>
+ </target>
+ <target name="send-mail-noauth" if="email.send.noauth">
+ <mail from="${email.from}"
+ tolist="${email.to}"
+ subject="${email.subject}"
+ mailhost="${email.server.host}"
+ mailport="${email.server.port}"
+ messagefile="${email.file}"
+ messagemimetype="text/html" />
+ </target>
+ <target name="send-mail-withauth" unless="email.send.noauth">
+ <mail from="${email.from}"
+ tolist="${email.to}"
+ subject="${email.subject}"
+ mailhost="${email.server.host}"
+ mailport="${email.server.port}"
+ user="${email.server.user}"
+ password="${email.server.pwd}"
+ messagefile="${email.file}"
+ messagemimetype="text/html" />
+ </target>
+
+ <target name="daily">
+ <property name="tests.run.daily" value="true"/>
+ </target>
+
+ <target name="run-daily" depends="status-do,daily,download-daily,coverage-instrument,run-tests"/>
+
+ <target name="coverage-init">
+ <path id="emma.lib">
+ <pathelement location="${project.home}/ext/emma/lib/emma.jar" />
+ <pathelement location="${project.home}/ext/emma/lib/emma_ant.jar" />
+ </path>
+
+ <taskdef resource="emma_ant.properties" classpathref="emma.lib" />
+ </target>
+
+ <target name="coverage-on" depends="coverage-init">
+ <property name="coverage.on" value="true"/>
+ </target>
+
+ <target name="coverage-instrument" depends="status-do,run-tests-get-pkg" if="coverage.on">
+ <delete dir="${staf.tmp.dir}/coverage-instr" />
+ <mkdir dir="${staf.tmp.dir}/coverage-instr" />
+ <!-- unzip the original package in a temporary location to make the
+ changes necessary so that the coverage tool is called
+ -->
+ <unzip src="${product.package}"
+ dest="${staf.tmp.dir}/coverage-instr"/>
+
+ <!-- Add emma in the package along with the other librairies
+ this has the advantage of being automatically picked up by the scripts
+ -->
+ <copy file="${project.home}/ext/emma/lib/emma.jar"
+ tofile="${staf.tmp.dir}/coverage-instr/${product.name}/lib/emma.jar"/>
+
+ <!-- move the original product package to make room for the coverage
+ enabled package
+ -->
+ <move file="${product.package}" tofile="${product.package}.nocov"/>
+
+ <!-- intrument the OpenDS java archive to gather coverage -->
+ <java classpath="${staf.tmp.dir}${file.separator}coverage-instr${file.separator}${product.name}${file.separator}lib${file.separator}emma.jar"
+ classname="emma" fork="true">
+ <jvmarg value="-Demma.metadata.out.file=${staf.tmp.dir}${file.separator}coverage-instr${file.separator}${product.name}${file.separator}coverage.em" />
+ <arg value="instr" />
+ <arg value="-m" />
+ <arg value="overwrite" />
+ <arg value="-cp" />
+ <arg value="${staf.tmp.dir}${file.separator}coverage-instr${file.separator}${product.name}${file.separator}lib${file.separator}OpenDS.jar" />
+ </java>
+ <echo>Writing properties file</echo>
+ <echo file="${staf.tmp.dir}/coverage-instr/${product.name}/classes/emma.properties">coverage.out.file=${staf.tmp.dir}/emma.coverage</echo>
+ <!-- Repackage the product with coverage enabled scripts -->
+ <zip basedir="${staf.tmp.dir}/coverage-instr" destfile="${product.package}">
+ <zipfileset dir="${staf.tmp.dir}/coverage-instr"
+ includes="${product.name}/setup,${product.name}/uninstall,${product.name}/upgrade,${product.name}/bin/*,${product.name}/lib/*.sh"
+ filemode="755" dirmode="755" />
+ </zip>
+ <!-- <delete dir="${staf.tmp.dir}/coverage-instr"/> -->
+ </target>
+
+ <target name="coverage-report" if="coverage.on">
+ <delete dir="${staf.tmp.dir}/coverage/all" />
+ <mkdir dir="${staf.tmp.dir}/coverage/all" />
+ <emma enabled="${coverage.on}" >
+ <report >
+ <infileset dir="${staf.tmp.dir}" includes="**/*.em,**/*.ec" />
+
+ <sourcepath>
+ <dirset dir="${project.home}" >
+ <include name="src" />
+ </dirset>
+ </sourcepath>
+
+ <html outfile="${staf.tmp.dir}/coverage/all/index.html"
+ columns="name, method, line"
+ sort="+line, +name"
+ metrics="line:80"
+ />
+ </report>
+ </emma>
+ </target>
+
+ <target name="restore-pkg" if="coverage.on">
+ <delete file="${product.package}"/>
+ <move file="${product.package}.nocov" tofile="${product.package}"/>
+ </target>
+
+ <target name="daily-coverage" depends="coverage-on,run-daily,restore-pkg,coverage-report"/>
+
+ <target name="testwithcoverage" depends="coverage-on,coverage-instrument,run-tests,restore-pkg,coverage-report"/>
+<!-- Run tests section - bottom -->
+
+<!-- Uninstallation section - top -->
+ <target name="uninstall-do-jar"
+ description="Uninstall the staf"
+ if="staf.install.is.jar">
+ <echo message="Uninstalling staf, please wait..." />
+ <java jar="${staf.install.dir}/_uninst/uninstall.jar" fork="true">
+ <arg value="-silent" />
+ </java>
+ <sleep seconds="5" />
+ <delete dir="${staf.install.dir}" />
+ </target>
+ <target name="uninstall-do-tar"
+ description="Uninstall the staf"
+ unless="staf.install.is.jar">
+ <echo message="Uninstalling staf, please wait..." />
+ <exec executable="${staf.install.dir}/STAFUninst"/>
+ <sleep seconds="5" />
+ <delete dir="${staf.install.dir}" />
+ </target>
+
+ <target name="uninstall-do" if="staf.installed">
+ <condition property="staf.install.is.jar">
+ <available file="${staf.install.dir}/_uninst/uninstall.jar"/>
+ </condition>
+ <antcall target="uninstall-do-jar"/>
+ <antcall target="uninstall-do-tar"/>
+ </target>
+ <target name="uninstall-dont-not-installed" unless="staf.installed">
+ <echo>Staf is not installed.</echo>
+ </target>
+ <target name="uninstall-dont-running" if="staf.running">
+ <echo>Staf is running. Stop staf before uninstalling.</echo>
+ <echo>Use either the 'stop' or the 'wipeout' target.</echo>
+ </target>
+ <target
+ name="uninstall-dont"
+ depends="uninstall-dont-running,uninstall-dont-not-installed" />
+
+ <target name="uninstall" depends="status-do,uninstall-do,uninstall-dont">
+ </target>
+<!-- Uninstallation section - bottom -->
+
+<!-- Start section - top -->
+ <target name="start-do"
+ description="start the staf"
+ if="staf.installed"
+ unless="staf.running" >
+ <echo message="Starting staf daemon ... on ${os.myname}" />
+ <condition property="staf.spawn">
+ <not>
+ <isset property="staf.spawn"/>
+ </not>
+ </condition>
+ <echo message="Starting STAF..."/>
+ <exec
+ dir="${staf.bin.dir}"
+ executable="${staf.daemon}"
+ spawn="${staf.spawn}">
+ <arg value="${staf.config}"/>
+ <env key="${path.var}" path="${java.home}${file.separator}bin${path.separator}${staf.install.dir}${file.separator}bin${path.separator}${path.current}"/>
+ <env key="LD_LIBRARY_PATH" path="${staf.install.dir}/lib"/>
+ <env key="CLASSPATH" path="${staf.lib.dir}/JSTAF.jar${path.separator}${e.CLASSPATH}"/>
+ <env key="STAFCONVDIR" value="${staf.install.dir}/codepage"/>
+ <env key="STAFCODEPAGE" value="LATIN_1"/>
+ <env key="STAF_INSTANCE_NAME" value="STAF"/>
+ </exec>
+ <echo message="Waiting for service to become available..."/>
+ <waitfor>
+ <socket server="${host.name}" port="${staf.port}"/>
+ </waitfor>
+ <echo message="STAF is now ready to serve requests"/>
+ </target>
+ <target name="start-dont" if="staf.running">
+ <echo>Staf is already running.</echo>
+ </target>
+ <target name="start" depends="status-do">
+ <antcall target="start-do"/>
+ <antcall target="start-dont"/>
+ </target>
+ <target name="start-nodetach">
+ <property name="staf.spawn" value="false"/>
+ <antcall target="start"/>
+ </target>
+
+<!-- Start section - bottom -->
+
+<!-- Stop section - top -->
+ <target name="stop-do" if="staf.running">
+ <echo>Stopping staf...</echo>
+ <exec
+ executable="${staf.executable}"
+ >
+ <env key="${path.var}" path="${java.home}${file.separator}bin${path.separator}${staf.install.dir}${file.separator}bin${path.separator}${path.current}"/>
+ <env key="LD_LIBRARY_PATH" path="${staf.lib.dir}"/>
+ <env key="CLASSPATH" path="${staf.lib.dir}/JSTAF.jar${path.separator}${e.CLASSPATH}"/>
+ <env key="STAFCONVDIR" value="${staf.install.dir}/codepage"/>
+ <env key="STAFCODEPAGE" value="LATIN_1"/>
+ <arg line="local shutdown shutdown"/>
+ </exec>
+ <echo message="Waiting for service to shutdown gracefully..."/>
+ <waitfor>
+ <not>
+ <socket server="${host.name}" port="${staf.port}"/>
+ </not>
+ </waitfor>
+ <echo message="STAF stopped"/>
+ </target>
+ <target name="stop-dont" unless="staf.running">
+ <echo>Staf is not running.</echo>
+ </target>
+ <target name="stop" depends="status-do">
+ <antcall target="stop-do"/>
+ <antcall target="stop-dont"/>
+ </target>
+<!-- Stop section - bottom -->
+
+<!-- Status section - top -->
+ <!-- Bits status section - top -->
+ <target name="status-archive-downloaded?" if="bits.all.downloaded.before">
+ <echo>Staf bits are ready to be installed. Use 'install' target.</echo>
+ </target>
+ <target name="status-archive-not-downloaded?" unless="bits.all.downloaded.before">
+ <echo>No staf bits found. Use the get-bits or bootstrap target.</echo>
+ </target>
+ <!-- Bits status section - bottom -->
+
+ <!-- Installation status section - top -->
+ <target name="status-staf-installed?" if="staf.installed">
+ <echo>Found staf installed in [${staf.install.dir}]</echo>
+ <antcall target="status-staf-running?" />
+ <antcall target="status-staf-not-running?" />
+ </target>
+ <target name="status-staf-not-installed?" unless="staf.installed">
+ <echo>Could not find staf installation.</echo>
+ <echo>Checking if the bits here and ready for installation...</echo>
+ <antcall target="status-archive-downloaded?" />
+ <antcall target="status-archive-not-downloaded?" />
+ </target>
+ <!-- Installation status section - bottom -->
+
+ <!-- Running status section - top -->
+ <target name="status-staf-running?" if="staf.running">
+ <echo>staf is listening on port [${staf.port.default}]</echo>
+ <echo>You're all set to run the stress tests.</echo>
+ </target>
+ <target name="status-staf-not-running?" unless="staf.running">
+ <echo>staf is NOT running. Use the 'start' target.</echo>
+ </target>
+ <!-- Running status section - bottom -->
+
+
+ <!-- Get status section - top -->
+ <target name="status-do" unless="status-do.already.run" >
+ <!-- check if the various archives needed have already been downloaded -->
+ <condition property="bits.staf.downloaded.before">
+ <available file="${bits.download.dir}/${bits.staf.archive}"/>
+ </condition>
+ <condition property="bits.services.downloaded.before" >
+ <available file="${bits.download.dir}/${bits.stax.archive}" />
+ </condition>
+ <condition property="bits.all.downloaded.before">
+ <and>
+ <isset property="bits.staf.downloaded.before"/>
+ <isset property="bits.services.downloaded.before"/>
+ </and>
+ </condition>
+ <available file="${daily.package}" property="daily.package.downloaded"/>
+ <available file="testcases/run-custom-suites.dat" property="custom-suites.on" />
+ <available file="${staf.install.dir}"
+ type="dir"
+ property="staf.installed" />
+ <condition property="staf.lib.dir"
+ value="${staf.install.dir}${file.separator}bin"
+ else="${staf.install.dir}${file.separator}lib">
+ <os family="windows"/>
+ </condition>
+
+ <condition property="staf.running">
+ <socket port="${staf.port}" server="${host.name}"/>
+ </condition>
+
+ <condition property="staf.archive.is.jar">
+ <contains string="${bits.staf.archive}" substring=".jar"/>
+ </condition>
+ <condition property="staf.archive.is.tar">
+ <not>
+ <contains string="${bits.staf.archive}" substring=".jar"/>
+ </not>
+ </condition>
+ <condition property="binary.extension" value=".exe" else="">
+ <os family="windows"/>
+ </condition>
+ <condition property="script.extension" value=".bat" else="">
+ <os family="windows"/>
+ </condition>
+
+ <condition property="path.var" value="Path" else="PATH">
+ <os family="windows"/>
+ </condition>
+ <macrodef name="propertycopy">
+ <attribute name="name"/>
+ <attribute name="from"/>
+ <sequential>
+ <property name="@{name}" value="${@{from}}"/>
+ </sequential>
+ </macrodef>
+ <property environment="e"/>
+ <propertycopy name="path.current" from="e.${path.var}"/>
+
+ <property name="staf.executable"
+ value="${staf.bin.dir}${file.separator}STAF${binary.extension}"/>
+ <property name="staf.daemon"
+ value="${staf.bin.dir}${file.separator}STAFProc${binary.extension}"/>
+
+ <property name="status-do.already.run" value="true"/>
+ </target>
+ <!-- Get status section - bottom -->
+
+ <!-- Status cli section - top -->
+ <target name="status" depends="status-do">
+ <condition property="is.platform.supported" value="yes" else="no" >
+ <isset property="platform.supported"/>
+ </condition>
+ <echo>Operating System Family - ${os.myname}</echo>
+ <echo>Operating System Name - ${os.name}</echo>
+ <echo>Operating System Version - ${os.version}</echo>
+ <echo>Machine Architecture - ${os.arch}</echo>
+ <echo>Platform Supported - ${is.platform.supported}</echo>
+ <echo>Java Home - ${java.home}</echo>
+ <echo>Java Version - ${java.version}</echo>
+ <!--
+ <echo>PATH - ${path.current}</echo>
+ <echo>CLASSPATH - ${e.CLASSPATH}</echo>
+ -->
+ <antcall target="status-staf-installed?" />
+ <antcall target="status-staf-not-installed?" />
+ </target>
+ <!-- Status cli section - bottom -->
+<!-- Status section - bottom -->
+
+<!-- Macros section - top -->
+ <target name="bootstrap">
+ <antcall target="download" />
+ <antcall target="install" />
+ <antcall target="start" />
+ </target>
+
+ <target name="wipeout">
+ <antcall target="stop"/>
+ <echo>Allow a minute for STAF to bring all the JVMs down</echo>
+ <sleep seconds="60"/>
+ <antcall target="uninstall"/>
+ </target>
+
+ <target name="restart">
+ <antcall target="stop" inheritAll="false" />
+ <sleep seconds="10" />
+ <antcall target="start" inheritAll="false" />
+ </target>
+<!-- Macros section - bottom -->
+ <target name="javadoc" depends="status-do" if="staf.installed">
+ <delete dir="${staf.home}/doc"/>
+ <mkdir dir="${staf.home}/doc"/>
+ <java jar="${staf.install.dir}/services/stax/STAXDoc.jar" fork="true">
+ <arg value="-d"/>
+ <arg value="${staf.home}/doc"/>
+ <!--<arg value="testcases"/>
+ <arg value="testcases/aci"/>
+ <arg value="testcases/backends"/>
+ <arg value="testcases/core"/>
+ <arg value="testcases/schema"/>
+ <arg value="testcases/security"/>
+ <arg value="testcases/security/account_activation"/>
+ <arg value="testcases/security/auth_pwd_syntax"/>
+ <arg value="testcases/security/bind_no_pwd"/>
+ <arg value="testcases/security/jks"/>
+ <arg value="testcases/security/pkcs12"/>
+ <arg value="testcases/security/pwd_policy"/>
+ <arg value="testcases/security/pwd_policy_root"/>
+ <arg value="testcases/security/pwd_storage"/>
+ <arg value="testcases/security/pwd_validator"/>
+ <arg value="testcases/security/sasl"/>
+ <arg value="testcases/security/startTLS"/>-->
+ <arg value="shared/functions"/>
+ <arg value="testcases/sample" />
+ </java>
+ </target>
+
+ <target name="properties">
+ <echoproperties/>
+ </target>
+
+ <target name="get-dtd" depends="status-do">
+ <property name="stax.dtd" value="${staf.home}/stax.dtd"/>
+ <exec
+ dir="${staf.bin.dir}"
+ executable="${staf.executable}"
+ output="${stax.dtd}"
+ >
+ <arg line="LOCAL STAX get dtd"/>
+ <env key="CLASSPATH" path="${staf.lib.dir}/JSTAF.jar${path.separator}${e.CLASSPATH}"/>
+ <env key="LD_LIBRARY_PATH" value="${staf.lib.dir}"/>
+ <env key="STAFCONVDIR" value="${staf.install.dir}/codepage"/>
+ <env key="STAFCODEPAGE" value="LATIN_1"/>
+ </exec>
+ <replace file="${stax.dtd}">
+ <replacetoken>Response
+--------
+</replacetoken>
+ <replacevalue></replacevalue>
+ </replace>
+ </target>
+
+ <target name="generate-report">
+ <delete file="${staf.tmp.dir}/my-report.html"/>
+ <xslt processor="trax"
+ in="${staf.tmp.dir}/tests-log.xml"
+ out="${staf.tmp.dir}/my-report.html"
+ style="shared/xsl/my-report.xsl">
+ </xslt>
+ </target>
+
+ <target name="opends">
+ <ant dir="../.." target="package" inheritAll="false" />
+ </target>
+</project>
diff --git a/opendj-sdk/opends/tests/stress-tests/staf-installer/Linux.properties b/opendj-sdk/opends/tests/stress-tests/staf-installer/Linux.properties
new file mode 100755
index 0000000..45ba8dc
--- /dev/null
+++ b/opendj-sdk/opends/tests/stress-tests/staf-installer/Linux.properties
@@ -0,0 +1 @@
+bits.staf.archive=STAF323-setup-linux.jar
diff --git a/opendj-sdk/opends/tests/stress-tests/staf-installer/SunOS-sparc.properties b/opendj-sdk/opends/tests/stress-tests/staf-installer/SunOS-sparc.properties
new file mode 100755
index 0000000..890ca80
--- /dev/null
+++ b/opendj-sdk/opends/tests/stress-tests/staf-installer/SunOS-sparc.properties
@@ -0,0 +1 @@
+bits.staf.archive=STAF322-setup-solaris-sparc.jar
diff --git a/opendj-sdk/opends/tests/stress-tests/staf-installer/SunOS-x86.properties b/opendj-sdk/opends/tests/stress-tests/staf-installer/SunOS-x86.properties
new file mode 100755
index 0000000..18ee7f9
--- /dev/null
+++ b/opendj-sdk/opends/tests/stress-tests/staf-installer/SunOS-x86.properties
@@ -0,0 +1 @@
+bits.staf.archive=STAF323-setup-solaris-x86.jar
diff --git a/opendj-sdk/opends/tests/stress-tests/staf-installer/SunOS.properties b/opendj-sdk/opends/tests/stress-tests/staf-installer/SunOS.properties
new file mode 100755
index 0000000..e69de29
--- /dev/null
+++ b/opendj-sdk/opends/tests/stress-tests/staf-installer/SunOS.properties
diff --git a/opendj-sdk/opends/tests/stress-tests/staf-installer/config.py.stubs b/opendj-sdk/opends/tests/stress-tests/staf-installer/config.py.stubs
new file mode 100755
index 0000000..ebb44cf
--- /dev/null
+++ b/opendj-sdk/opends/tests/stress-tests/staf-installer/config.py.stubs
@@ -0,0 +1,30 @@
+TEST_OS_STRING = '${os.name}'
+TEST_HW_STRING = '${os.arch}'
+TEST_JVM_STRING = '${java.version}(${sun.arch.data.model} bits)'
+STAF_LOCAL_HOSTNAME = 'localhost'
+STAF_REMOTE_HOSTNAME = 'localhost'
+TMPDIR = '${staf.tmp.dir}'
+PSWDFILE = '%s/password' % TMPDIR
+OPENDSDIR = '${project.home}'
+OPENDSNAME = '${product.name}'
+ZIPNAME = '${product.name}.zip'
+ZIPPATH = '${product.package.dir}'
+TESTS_ROOT = '%s/tests' % OPENDSDIR
+TESTS_DIR = '%s/stress-tests' % TESTS_ROOT
+TESTS_SHARED_DIR = '%s/shared' % TESTS_DIR
+TESTS_FUNCTIONS_DIR = '%s/shared/functions' % TESTS_ROOT
+TESTS_DATA_DIR = '%s/data' % TESTS_SHARED_DIR
+TESTS_JAVA_DIR = '%s/java' % TESTS_SHARED_DIR
+DIRECTORY_INSTANCE_DN = '${opends.admin.dn}'
+DIRECTORY_INSTANCE_PSWD = '${opends.admin.pwd}'
+DIRECTORY_INSTANCE_DIR = '%s' % TMPDIR
+DIRECTORY_INSTANCE_HOST = 'localhost'
+DIRECTORY_INSTANCE_PORT = '${opends.port.ldap}'
+DIRECTORY_INSTANCE_SSL_PORT = '${opends.port.ldaps}'
+DIRECTORY_INSTANCE_SFX = 'dc=com'
+DIRECTORY_INSTANCE_BE = 'userRoot'
+JAVA_HOME = '${java.home}'
+LOGS_ROOT = '%s' % TMPDIR
+LOGS_URI = ''
+SEND_MAIL_AFTER_TEST_RUN = '${staf.email.send}'
+SEND_MAIL_TO = '${staf.email.to}'
diff --git a/opendj-sdk/opends/tests/stress-tests/staf-installer/failure.html b/opendj-sdk/opends/tests/stress-tests/staf-installer/failure.html
new file mode 100755
index 0000000..f30fbbc
--- /dev/null
+++ b/opendj-sdk/opends/tests/stress-tests/staf-installer/failure.html
@@ -0,0 +1,7 @@
+<html>
+ <body>
+ <center>
+ <img src="http://pangea.stanford.edu/courses/GES41L/motivation/failure.gif">
+ </center>
+ </body>
+</html>
diff --git a/opendj-sdk/opends/tests/stress-tests/staf-installer/replay.bat b/opendj-sdk/opends/tests/stress-tests/staf-installer/replay.bat
new file mode 100755
index 0000000..bae6bdb
--- /dev/null
+++ b/opendj-sdk/opends/tests/stress-tests/staf-installer/replay.bat
@@ -0,0 +1,11 @@
+@echo off
+echo Backing configuration up
+move "${tests.config}" "${tests.config.backup}"
+echo Loading configuration as of ${tests.run.time}
+copy "${tests.run.dir}${file.separator}${tests.run.time}${file.separator}config${file.separator}${tests.config.file}" "${tests.config}"
+echo Starting test run
+"${staf.install.dir}${file.separator}bin${file.separator}STAF.exe" local STAX "${tests.request}"
+echo Removing configuration of ${tests.run.time}
+del /f "${tests.config}"
+echo Restoring original configuration
+move "${tests.config.backup}" "${tests.config}"
diff --git a/opendj-sdk/opends/tests/stress-tests/staf-installer/replay.sh b/opendj-sdk/opends/tests/stress-tests/staf-installer/replay.sh
new file mode 100755
index 0000000..9ebd467
--- /dev/null
+++ b/opendj-sdk/opends/tests/stress-tests/staf-installer/replay.sh
@@ -0,0 +1,10 @@
+echo "Backing configuration up"
+me "${tests.config}" "${tests.config.backup}"
+echo "Loading configuration as of ${tests.run.time}"
+cp "${tests.run.dir}${file.separator}${tests.run.time}${file.separator}config${file.separator}${tests.config.file}" "${tests.config}"
+echo "Starting test run"
+"${staf.install.dir}${file.separator}bin${file.separator}STAF" local STAX "${tests.request}"
+echo "Removing configuration of ${tests.run.time}"
+rm -f "${tests.config}"
+echo "Restoring original configuration"
+mv "${tests.config.backup}" "${tests.config}"
diff --git a/opendj-sdk/opends/tests/stress-tests/staf-installer/staf-installer.properties b/opendj-sdk/opends/tests/stress-tests/staf-installer/staf-installer.properties
new file mode 100755
index 0000000..bc5cebb
--- /dev/null
+++ b/opendj-sdk/opends/tests/stress-tests/staf-installer/staf-installer.properties
@@ -0,0 +1,83 @@
+# Global section - top
+host.name=localhost
+# Global section - bottom
+
+# Staf section - top
+staf.home=${project.home}${file.separator}tests${file.separator}stress-run
+staf.installer.dir=${basedir}${file.separator}staf-installer
+staf.install.dir=${staf.home}${file.separator}staf
+staf.bin.dir=${staf.install.dir}${file.separator}bin
+staf.config.dir=${staf.home}${file.separator}config
+staf.config.file=stress-tests.cfg
+staf.config=${staf.config.dir}${file.separator}${staf.config.file}
+staf.config.stubs=${staf.installer.dir}${file.separator}${staf.config.file}
+staf.tmp.dir=${staf.home}${file.separator}tmp
+staf.logs.dir=${staf.home}${file.separator}logs
+#
+staf.email.send=false
+staf.email.to=
+
+daily.build.time=213000
+daily.build.url=http://builds.opends.org/daily-builds/
+
+## TCP port on which to configure staf to listen
+## leave as is unless this port is already in use on your test machine
+staf.port.default=6500
+staf.port=${staf.port.default}
+# Staf section - bottom
+
+#opends section - top
+opends.port.ldap=1389
+opends.port.ldaps=1636
+opends.port.jmx=1689
+opends.admin.dn=cn=myself
+opends.admin.pwd=password
+# opends section - bottom
+
+# email section - top
+email.enabled=n
+email.to=${user.name}@${host.name}
+email.from=${user.name}@${host.name}
+email.server.host=${host.name}
+email.server.port=25
+email.server.user=
+email.server.pwd=
+# email section - bottom
+
+# Downloader section - top
+## where to download the staf bits before install
+bits.download.dir=${staf.home}${file.separator}staf-bits
+bits.download.url=http://superb-east.dl.sourceforge.net/sourceforge/staf
+bits.email.archive=EmailV320.zip
+bits.event.archive=EventV310.zip
+bits.eventmanager.archive=EventManagerV322.zip
+bits.stax.archive=STAXV321.zip
+# Downloader section - bottom
+
+
+# Proxy section - top
+## set to match your own proxy if any
+proxy.host=webcache.central.sun.com
+proxy.port=8080
+proxy.user=
+proxy.pass=
+# Proxy section - bottom
+
+# Tests section - top
+tests.dir=${basedir}
+tests.run.dir=${staf.home}${file.separator}run
+tests.config.dir=${tests.dir}${file.separator}config
+tests.config.file=config.py
+tests.config.stubs=${staf.installer.dir}${file.separator}${tests.config.file}.stubs
+tests.config=${tests.config.dir}${file.separator}${tests.config.file}
+tests.config.backup=${tests.config}.orig
+tests.python=${tests.dir}${file.separator}..${file.separator}shared${file.separator}python${file.separator}security.py
+tests.xml=${tests.dir}${file.separator}testcases${file.separator}runTestJob.xml
+# Tests section - bottom
+
+# test plan customization - top <property name="test.plan.file" value="${basedir}/testcases/run-custom-suites.dat" />
+test.plan.list=main_import_ldif
+test.plan.dir=testcases
+test.plan.custom=${test.plan.dir}/run-custom-suites.dat
+test.plan.default=${test.plan.dir}/run-default-suites.dat
+# test plan customization - bottom
diff --git a/opendj-sdk/opends/tests/stress-tests/staf-installer/stress-tests.cfg b/opendj-sdk/opends/tests/stress-tests/staf-installer/stress-tests.cfg
new file mode 100755
index 0000000..b1f25a0
--- /dev/null
+++ b/opendj-sdk/opends/tests/stress-tests/staf-installer/stress-tests.cfg
@@ -0,0 +1,51 @@
+# Turn on tracing of internal errors and deprecated options
+trace enable tracepoints "error deprecated"
+
+# Enable TCP/IP connections
+interface tcp library STAFTCP option port=${staf.port}
+
+# Set default local trust
+trust machine local://local level 5
+trust level 5 machine tcp://localhost
+# this is required for the Zip Service to be able to expand archives
+trust level 5 user anonymous
+
+# Default Service Loader Service
+serviceloader library STAFDSLS
+
+# LOG SERVICE CONFIGURATION
+SERVICE Log LIBRARY STAFLog \
+ PARMS "Directory {STAF/Config/STAFRoot}/../logs"
+
+# ZIP SERVICE CONFIGURATION
+SERVICE Zip LIBRARY STAFZip
+
+# EVENT SERVICE CONFIGURATION
+# PARMS "MAXATTEMPTS 5 ACKNOWLEDGETIMEOUT 30000" \
+# OPTION JVMName=EventJVM \
+# OPTION JVM=${java.home}${file.separator}bin${file.separator}java${binary.extension}
+SERVICE Event LIBRARY JSTAF \
+ EXECUTE {STAF/Config/STAFRoot}/services/event/STAFEvent.jar
+
+# EVENTMANAGER SERVICE CONFIGURATION
+# OPTION JVMName=EventManagerJVM \
+# OPTION JVM=${java.home}${file.separator}bin${file.separator}java${binary.extension}
+# PARMS "EVENTSERVICENAME=Event" \
+SERVICE EventManager LIBRARY JSTAF \
+ EXECUTE {STAF/Config/STAFRoot}/services/eventmanager/STAFEventManager.jar
+
+# STAX SERVICE CONFIGURATION
+# OPTION JVMName=StaxJVM \
+# OPTION JVM=${java.home}${file.separator}bin${file.separator}java${binary.extension} \
+# OPTION J2=-Xmx384m
+SERVICE Stax LIBRARY JSTAF \
+ EXECUTE {STAF/Config/STAFRoot}/services/stax/STAX.jar
+
+#EMAIL SERVICE CONFIGURATION
+# OPTION JVMName=EmailJVM \
+# OPTION JVM=${java.home}${file.separator}bin${file.separator}java${binary.extension}
+SERVICE Email LIBRARY JSTAF \
+ EXECUTE {STAF/Config/STAFRoot}/services/email/STAFEmail.jar
+
+SET MAXQUEUESIZE 10000
+
diff --git a/opendj-sdk/opends/tests/stress-tests/staf-installer/windows-x86-32.properties b/opendj-sdk/opends/tests/stress-tests/staf-installer/windows-x86-32.properties
new file mode 100755
index 0000000..fd85f74
--- /dev/null
+++ b/opendj-sdk/opends/tests/stress-tests/staf-installer/windows-x86-32.properties
@@ -0,0 +1,2 @@
+bits.staf.archive=STAF323-setup-win32.jar
+
diff --git a/opendj-sdk/opends/tests/stress-tests/staf-installer/windows-x86-64.properties b/opendj-sdk/opends/tests/stress-tests/staf-installer/windows-x86-64.properties
new file mode 100755
index 0000000..7b829d2
--- /dev/null
+++ b/opendj-sdk/opends/tests/stress-tests/staf-installer/windows-x86-64.properties
@@ -0,0 +1 @@
+staf.archive.name=STAF323-setup-win64.jar
diff --git a/opendj-sdk/opends/tests/stress-tests/staf-installer/windows.properties b/opendj-sdk/opends/tests/stress-tests/staf-installer/windows.properties
new file mode 100755
index 0000000..fd85f74
--- /dev/null
+++ b/opendj-sdk/opends/tests/stress-tests/staf-installer/windows.properties
@@ -0,0 +1,2 @@
+bits.staf.archive=STAF323-setup-win32.jar
+
diff --git a/opendj-sdk/opends/tests/stress-tests/testcases/import_ldif/import_ldif.xml b/opendj-sdk/opends/tests/stress-tests/testcases/import_ldif/import_ldif.xml
new file mode 100755
index 0000000..4787118
--- /dev/null
+++ b/opendj-sdk/opends/tests/stress-tests/testcases/import_ldif/import_ldif.xml
@@ -0,0 +1,85 @@
+<?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_import_ldif"/>
+ <function name="main_import_ldif">
+ <sequence>
+
+ <block name="'import-ldif'">
+
+ <sequence>
+
+ <script>
+ CurrentTestPath['group']='import-ldif'
+ bin_attr_filename='import_entries_100k_bin_attr.ldif'
+ </script>
+
+ <call function="'testGroup_Preamble'"/>
+
+ <import machine="STAF_LOCAL_HOSTNAME"
+ file="'%s/testcases/import_ldif/import_ldif_bin_attr.xml' % (TESTS_DIR)"/>
+ <call function="'bin_attr'" />
+
+ <!-- Uncomment when Issue 2323 is fixed.
+ <import machine="STAF_LOCAL_HOSTNAME"
+ file="'%s/testcases/import_ldif/import_ldif_large_import_buffer.xml' % (TESTS_DIR)"/>
+ <call function="'large_import_buffer'" />
+ -->
+
+ <import machine="STAF_LOCAL_HOSTNAME"
+ file="'%s/testcases/import_ldif/import_ldif_many_thrds.xml' % (TESTS_DIR)"/>
+ <call function="'many_thrds'" />
+
+ <import machine="STAF_LOCAL_HOSTNAME"
+ file="'%s/testcases/import_ldif/import_ldif_low_index_entry_limit.xml' % (TESTS_DIR)"/>
+ <call function="'low_index_entry_limit'" />
+
+ <!-- Uncomment when Issues 2258 and 2262 are fixed.
+ <import machine="STAF_LOCAL_HOSTNAME"
+ file="'%s/testcases/import_ldif/import_ldif_out-of-box.xml' % (TESTS_DIR)"/>
+ <call function="'out-of-box'" />
+
+ <import machine="STAF_LOCAL_HOSTNAME"
+ file="'%s/testcases/import_ldif/import_ldif_many_indexes.xml' % (TESTS_DIR)"/>
+ <call function="'many_indexes'" />
+ -->
+
+ <import machine="STAF_LOCAL_HOSTNAME"
+ file="'%s/testcases/import_ldif/import_ldif_tasks_bin_attr.xml' % (TESTS_DIR)"/>
+ <call function="'tasks_bin_attr'" />
+
+ <import machine="STAF_LOCAL_HOSTNAME"
+ file="'%s/testcases/import_ldif/import_ldif_tasks_bin_attr_with_load.xml' % (TESTS_DIR)"/>
+ <call function="'tasks_bin_attr_with_load'" />
+
+ <call function="'testGroup_Postamble'"/>
+ </sequence>
+ </block>
+ </sequence>
+ </function>
+</stax>
diff --git a/opendj-sdk/opends/tests/stress-tests/testcases/import_ldif/import_ldif_bin_attr.xml b/opendj-sdk/opends/tests/stress-tests/testcases/import_ldif/import_ldif_bin_attr.xml
new file mode 100755
index 0000000..cb6e3b2
--- /dev/null
+++ b/opendj-sdk/opends/tests/stress-tests/testcases/import_ldif/import_ldif_bin_attr.xml
@@ -0,0 +1,210 @@
+<?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="bin_attr"/>
+
+ <function name="bin_attr">
+
+ <sequence>
+
+ <block name="'bin-attr'">
+
+ <sequence>
+
+ <script>
+ if not CurrentTestPath.has_key('group'):
+ CurrentTestPath['group']='bin_attr'
+ CurrentTestPath['suite']=STAXCurrentBlock
+ </script>
+
+ <call function="'testSuite_Preamble'"/>
+
+ <import machine="STAF_LOCAL_HOSTNAME"
+ file="'%s/testcases/import_ldif/import_ldif_setup.xml' % (TESTS_DIR)"/>
+ <call function="'import_ldif_setup'" />
+
+ <testcase name="getTestCaseName('Preamble')">
+ <sequence>
+ <call function="'testCase_Preamble'"/>
+ <message>
+ 'Import Ldif: Binary Attribute: Preamble - 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>
+
+ <script>
+ import os.path
+ curr_filename=logsRemoteDataDir + r"/../../" + bin_attr_filename
+ curr_file_exists='0'
+ if os.path.exists(curr_filename):
+ curr_file_exists='1'
+
+ numberOfEntries='100000'
+ </script>
+
+ <message>
+ 'Import Ldif: Binary Attribute: Looking for file, %s. File exists? (0=false, 1=true) %s' % (curr_filename, curr_file_exists)
+ </message>
+
+ <if expr="curr_file_exists=='0'">
+ <sequence>
+ <message>
+ 'Import Ldif Tasks: Binary Attribute: Preamble - Make an make-ldif template file'
+ </message>
+ <call function="'MakeAMakeLdifTemplate'">
+ { 'numEntries' : numberOfEntries ,
+ 'templateFile' : '%s/quickstart/import_Entries.template' % (logsRemoteDataDir) ,
+ 'extraLine' : 'jpegPhoto;binary:: <random:base64:38000>'}
+ </call>
+
+ <message>
+ 'Import Ldif Tasks: Binary Attribute: Preamble - Make the ldif file'
+ </message>
+
+ <call function="'MakeLdif'">
+ { 'templateFile' : '%s/quickstart/import_Entries.template' % (logsRemoteDataDir) ,
+ 'ldifFile' : curr_filename }
+ </call>
+ </sequence>
+ </if>
+
+ <call function="'testCase_Postamble'"/>
+
+ </sequence>
+ </testcase>
+
+
+ <testcase name="getTestCaseName('Import Large Ldif File')">
+ <sequence>
+ <call function="'testCase_Preamble'"/>
+
+ <message>
+ 'Import Ldif: Binary Attribute: Import large ldif file'
+ </message>
+
+ <call function="'ImportLdifWithScript'">
+ { 'location' : STAF_REMOTE_HOSTNAME ,
+ 'dsLdifFile' : curr_filename ,
+ 'dsBackEnd' : 'userRoot'}
+ </call>
+
+ <script>
+ returnString = STAXResult[0][1]
+ </script>
+
+ <call function="'checktestString'">
+ { 'returnString' : returnString ,
+ 'expectedString' : 'Processed 100002 entries' }
+ </call>
+
+ <call function="'testCase_Postamble'"/>
+
+ </sequence>
+ </testcase>
+
+ <testcase name="getTestCaseName('Start Directory After Import')">
+ <sequence>
+ <call function="'testCase_Preamble'"/>
+
+ <message>
+ 'Import Ldif: Binary Attribute: Start DS running on port %s' % (DIRECTORY_INSTANCE_PORT)
+ </message>
+
+ <call function="'StartDsWithScript'">
+ { 'location' : STAF_REMOTE_HOSTNAME }
+ </call>
+
+ <call function="'checktestRC'">
+ { 'returncode' : RC ,
+ 'result' : STAXResult }
+ </call>
+
+ <!--- Check that DS started -->
+ <call function="'isAlive'">
+ { 'noOfLoops' : 5 ,
+ 'noOfMilliSeconds' : 5000 }
+ </call>
+
+ <call function="'testCase_Postamble'"/>
+
+ </sequence>
+ </testcase>
+
+ <testcase name="getTestCaseName('Search For Imported Entries')">
+ <sequence>
+ <call function="'testCase_Preamble'"/>
+
+ <message>
+ 'Import Ldif: Binary Attribute: Search for certain entries that were imported'
+ </message>
+
+ <call function="'checkImport'">
+ { 'expectedEntries' : ['uid=user.1,ou=People,dc=com' ,
+ 'uid=user.10000,ou=People,dc=com' ,
+ 'uid=user.20000,ou=People,dc=com' ,
+ 'uid=user.30000,ou=People,dc=com' ,
+ 'uid=user.40000,ou=People,dc=com' ,
+ 'uid=user.50000,ou=People,dc=com' ,
+ 'uid=user.60000,ou=People,dc=com' ,
+ 'uid=user.70000,ou=People,dc=com' ,
+ 'uid=user.80000,ou=People,dc=com' ,
+ 'uid=user.90000,ou=People,dc=com' ,
+ 'uid=user.99999,ou=People,dc=com'] ,
+ 'startDS' : 'no'
+ }
+ </call>
+
+ <call function="'testCase_Postamble'"/>
+
+ </sequence>
+ </testcase>
+
+
+ <import machine="STAF_LOCAL_HOSTNAME"
+ file="'%s/testcases/import_ldif/import_ldif_cleanup.xml' % (TESTS_DIR)"/>
+ <call function="'import_ldif_cleanup'" />
+
+
+ <call function="'testSuite_Postamble'"/>
+
+ </sequence>
+
+ </block>
+
+ </sequence>
+
+ </function>
+
+</stax>
diff --git a/opendj-sdk/opends/tests/stress-tests/testcases/import_ldif/import_ldif_cleanup.xml b/opendj-sdk/opends/tests/stress-tests/testcases/import_ldif/import_ldif_cleanup.xml
new file mode 100755
index 0000000..6e222c5
--- /dev/null
+++ b/opendj-sdk/opends/tests/stress-tests/testcases/import_ldif/import_ldif_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="import_ldif_cleanup"/>
+
+ <function name="import_ldif_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/opendj-sdk/opends/tests/stress-tests/testcases/import_ldif/import_ldif_large_import_buffer.xml b/opendj-sdk/opends/tests/stress-tests/testcases/import_ldif/import_ldif_large_import_buffer.xml
new file mode 100755
index 0000000..8eba36d
--- /dev/null
+++ b/opendj-sdk/opends/tests/stress-tests/testcases/import_ldif/import_ldif_large_import_buffer.xml
@@ -0,0 +1,214 @@
+<?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="large_import_buffer"/>
+
+ <function name="large_import_buffer">
+
+ <sequence>
+
+ <block name="'large-import-buffer'">
+
+ <sequence>
+
+ <script>
+ if not CurrentTestPath.has_key('group'):
+ CurrentTestPath['group']='large_import_buffer'
+ CurrentTestPath['suite']=STAXCurrentBlock
+ </script>
+
+ <call function="'testSuite_Preamble'"/>
+
+ <import machine="STAF_LOCAL_HOSTNAME"
+ file="'%s/testcases/import_ldif/import_ldif_setup.xml' % (TESTS_DIR)"/>
+ <call function="'import_ldif_setup'" />
+
+ <testcase name="getTestCaseName('Preamble')">
+ <sequence>
+ <call function="'testCase_Preamble'"/>
+
+ <message>
+ 'Import Ldif: Large Import Buffer: Preamble - Change import buffer size'
+ </message>
+
+ <call function="'dsconfig'">
+ { 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST,
+ 'dsInstancePort' : DIRECTORY_INSTANCE_PORT ,
+ 'dsInstanceDn' : DIRECTORY_INSTANCE_DN ,
+ 'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD ,
+ 'subcommand' : 'set-backend-prop' ,
+ 'objectType' : 'backend-name' ,
+ 'objectName' : 'userRoot',
+ 'optionsString' : '--set "backend-import-buffer-size:5 gb" --set backend-import-pass-size:10000 --set backend-import-queue-size:1000' ,
+ 'expectedRC' : 0 }
+ </call>
+
+ <message>
+ 'Import Ldif: Large Import Buffer: Preamble - 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>
+
+ <message>
+ 'Import Ldif: Large Import Buffer: Preamble - Make an make-ldif template file'
+ </message>
+
+ <script>
+ numberOfEntries='100000'
+ </script>
+
+ <call function="'MakeAMakeLdifTemplate'">
+ { 'numEntries' : numberOfEntries ,
+ 'templateFile' : '%s/quickstart/import_Entries.template' % (logsRemoteDataDir) ,
+ 'extraLine' : 'jpegPhoto;binary:: <random:base64:38000>'}
+ </call>
+
+ <message>
+ 'Import Ldif: Large Import Buffer: Preamble - Make the ldif file'
+ </message>
+
+ <call function="'MakeLdif'">
+ { 'templateFile' : '%s/quickstart/import_Entries.template' % (logsRemoteDataDir) ,
+ 'ldifFile' : '%s/quickstart/import_Entries.ldif' % (logsRemoteDataDir) }
+ </call>
+
+ <call function="'testCase_Postamble'"/>
+
+ </sequence>
+ </testcase>
+
+
+ <testcase name="getTestCaseName('Import Large Ldif File')">
+ <sequence>
+ <call function="'testCase_Preamble'"/>
+
+ <message>
+ 'Import Ldif: Large Import Buffer: Import large ldif file'
+ </message>
+
+ <call function="'ImportLdifWithScript'">
+ { 'location' : STAF_REMOTE_HOSTNAME ,
+ 'dsLdifFile' : '%s/quickstart/import_Entries.ldif' % logsRemoteDataDir,
+ 'dsBackEnd' : 'userRoot'}
+ </call>
+
+ <script>
+ returnString = STAXResult[0][1]
+ </script>
+
+ <call function="'checktestString'">
+ { 'returnString' : returnString ,
+ 'expectedString' : 'Processed 100002 entries' }
+ </call>
+
+ <call function="'testCase_Postamble'"/>
+
+ </sequence>
+ </testcase>
+
+ <testcase name="getTestCaseName('Start Directory After Import')">
+ <sequence>
+ <call function="'testCase_Preamble'"/>
+
+ <message>
+ 'Import Ldif: Large Import Buffer: Start DS running on port %s' % (DIRECTORY_INSTANCE_PORT)
+ </message>
+
+ <call function="'StartDsWithScript'">
+ { 'location' : STAF_REMOTE_HOSTNAME }
+ </call>
+
+ <call function="'checktestRC'">
+ { 'returncode' : RC ,
+ 'result' : STAXResult }
+ </call>
+
+ <!--- Check that DS started -->
+ <call function="'isAlive'">
+ { 'noOfLoops' : 5 ,
+ 'noOfMilliSeconds' : 5000 }
+ </call>
+
+ <call function="'testCase_Postamble'"/>
+
+ </sequence>
+ </testcase>
+
+ <testcase name="getTestCaseName('Search For Imported Entries')">
+ <sequence>
+ <call function="'testCase_Preamble'"/>
+
+ <message>
+ 'Import Ldif: Large Import Buffer: Search for certain entries that were imported'
+ </message>
+
+ <call function="'checkImport'">
+ { 'expectedEntries' : ['uid=user.1,ou=People,dc=com' ,
+ 'uid=user.10000,ou=People,dc=com' ,
+ 'uid=user.20000,ou=People,dc=com' ,
+ 'uid=user.30000,ou=People,dc=com' ,
+ 'uid=user.40000,ou=People,dc=com' ,
+ 'uid=user.50000,ou=People,dc=com' ,
+ 'uid=user.60000,ou=People,dc=com' ,
+ 'uid=user.70000,ou=People,dc=com' ,
+ 'uid=user.80000,ou=People,dc=com' ,
+ 'uid=user.90000,ou=People,dc=com' ,
+ 'uid=user.99999,ou=People,dc=com'] ,
+ 'startDS' : 'no'
+ }
+ </call>
+
+ <call function="'testCase_Postamble'"/>
+
+ </sequence>
+ </testcase>
+
+
+ <import machine="STAF_LOCAL_HOSTNAME"
+ file="'%s/testcases/import_ldif/import_ldif_cleanup.xml' % (TESTS_DIR)"/>
+ <call function="'import_ldif_cleanup'" />
+
+
+ <call function="'testSuite_Postamble'"/>
+
+ </sequence>
+
+ </block>
+
+ </sequence>
+
+ </function>
+
+</stax>
diff --git a/opendj-sdk/opends/tests/stress-tests/testcases/import_ldif/import_ldif_low_index_entry_limit.xml b/opendj-sdk/opends/tests/stress-tests/testcases/import_ldif/import_ldif_low_index_entry_limit.xml
new file mode 100755
index 0000000..6fbe9ff
--- /dev/null
+++ b/opendj-sdk/opends/tests/stress-tests/testcases/import_ldif/import_ldif_low_index_entry_limit.xml
@@ -0,0 +1,227 @@
+<?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="low_index_entry_limit"/>
+
+ <function name="low_index_entry_limit">
+
+ <sequence>
+
+ <block name="'low-index-entry-limit'">
+
+ <sequence>
+
+ <script>
+ if not CurrentTestPath.has_key('group'):
+ CurrentTestPath['group']='low_index_entry_limit'
+ CurrentTestPath['suite']=STAXCurrentBlock
+ </script>
+
+ <call function="'testSuite_Preamble'"/>
+
+ <import machine="STAF_LOCAL_HOSTNAME"
+ file="'%s/testcases/import_ldif/import_ldif_setup.xml' % (TESTS_DIR)"/>
+ <call function="'import_ldif_setup'" />
+
+ <testcase name="getTestCaseName('Preamble')">
+ <sequence>
+ <call function="'testCase_Preamble'"/>
+
+ <message>
+ 'Import Ldif: Low Index Entry Limit: Preamble - Change import thread count'
+ </message>
+
+ <call function="'dsconfig'">
+ { 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST,
+ 'dsInstancePort' : DIRECTORY_INSTANCE_PORT ,
+ 'dsInstanceDn' : DIRECTORY_INSTANCE_DN ,
+ 'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD ,
+ 'subcommand' : 'set-backend-prop' ,
+ 'objectType' : 'backend-name' ,
+ 'objectName' : 'userRoot',
+ 'optionsString' : '--set index-entry-limit:4' ,
+ 'expectedRC' : 0 }
+ </call>
+
+ <message>
+ 'Import Ldif: Low Index Entry Limit: Preamble - 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>
+
+ <script>
+ import os.path
+ curr_filename=logsRemoteDataDir + r"/../../" + bin_attr_filename
+ curr_file_exists='0'
+ if os.path.exists(curr_filename):
+ curr_file_exists='1'
+
+ numberOfEntries='100000'
+ </script>
+
+ <message>
+ 'Import Ldif Tasks: Low Index Entry Limit: Looking for file, %s. File exists? (0=false, 1=true) %s' % (curr_filename, curr_file_exists)
+ </message>
+
+ <if expr="curr_file_exists=='0'">
+ <sequence>
+ <message>
+ 'Import Ldif Tasks: Low Index Entry Limit: Preamble - Make an make-ldif template file'
+ </message>
+ <call function="'MakeAMakeLdifTemplate'">
+ { 'numEntries' : numberOfEntries ,
+ 'templateFile' : '%s/quickstart/import_Entries.template' % (logsRemoteDataDir) ,
+ 'extraLine' : 'jpegPhoto;binary:: <random:base64:38000>'}
+ </call>
+
+ <message>
+ 'Import Ldif Tasks: Low Index Entry Limit: Preamble - Make the ldif file'
+ </message>
+
+ <call function="'MakeLdif'">
+ { 'templateFile' : '%s/quickstart/import_Entries.template' % (logsRemoteDataDir) ,
+ 'ldifFile' : curr_filename }
+ </call>
+ </sequence>
+ </if>
+
+ <call function="'testCase_Postamble'"/>
+
+ </sequence>
+ </testcase>
+
+
+ <testcase name="getTestCaseName('Import Large Ldif File')">
+ <sequence>
+ <call function="'testCase_Preamble'"/>
+
+ <message>
+ 'Import Ldif: Low Index Entry Limit: Import large ldif file'
+ </message>
+
+ <call function="'ImportLdifWithScript'">
+ { 'location' : STAF_REMOTE_HOSTNAME ,
+ 'dsLdifFile' : curr_filename ,
+ 'dsBackEnd' : 'userRoot'}
+ </call>
+
+ <script>
+ returnString = STAXResult[0][1]
+ </script>
+
+ <call function="'checktestString'">
+ { 'returnString' : returnString ,
+ 'expectedString' : 'Processed 100002 entries' }
+ </call>
+
+ <call function="'testCase_Postamble'"/>
+
+ </sequence>
+ </testcase>
+
+ <testcase name="getTestCaseName('Start Directory After Import')">
+ <sequence>
+ <call function="'testCase_Preamble'"/>
+
+ <message>
+ 'Import Ldif: Low Index Entry Limit: Start DS running on port %s' % (DIRECTORY_INSTANCE_PORT)
+ </message>
+
+ <call function="'StartDsWithScript'">
+ { 'location' : STAF_REMOTE_HOSTNAME }
+ </call>
+
+ <call function="'checktestRC'">
+ { 'returncode' : RC ,
+ 'result' : STAXResult }
+ </call>
+
+ <!--- Check that DS started -->
+ <call function="'isAlive'">
+ { 'noOfLoops' : 12 ,
+ 'noOfMilliSeconds' : 300000 }
+ </call>
+
+ <call function="'testCase_Postamble'"/>
+
+ </sequence>
+ </testcase>
+
+ <testcase name="getTestCaseName('Search For Imported Entries')">
+ <sequence>
+ <call function="'testCase_Preamble'"/>
+
+ <message>
+ 'Import Ldif: Low Index Entry Limit: Search for certain entries that were imported'
+ </message>
+
+ <call function="'checkImport'">
+ { 'expectedEntries' : ['uid=user.1,ou=People,dc=com' ,
+ 'uid=user.10000,ou=People,dc=com' ,
+ 'uid=user.20000,ou=People,dc=com' ,
+ 'uid=user.30000,ou=People,dc=com' ,
+ 'uid=user.40000,ou=People,dc=com' ,
+ 'uid=user.50000,ou=People,dc=com' ,
+ 'uid=user.60000,ou=People,dc=com' ,
+ 'uid=user.70000,ou=People,dc=com' ,
+ 'uid=user.80000,ou=People,dc=com' ,
+ 'uid=user.90000,ou=People,dc=com' ,
+ 'uid=user.99999,ou=People,dc=com'] ,
+ 'startDS' : 'no'
+ }
+ </call>
+
+ <call function="'testCase_Postamble'"/>
+
+ </sequence>
+ </testcase>
+
+
+ <import machine="STAF_LOCAL_HOSTNAME"
+ file="'%s/testcases/import_ldif/import_ldif_cleanup.xml' % (TESTS_DIR)"/>
+ <call function="'import_ldif_cleanup'" />
+
+
+ <call function="'testSuite_Postamble'"/>
+
+ </sequence>
+
+ </block>
+
+ </sequence>
+
+ </function>
+
+</stax>
diff --git a/opendj-sdk/opends/tests/stress-tests/testcases/import_ldif/import_ldif_many_indexes.xml b/opendj-sdk/opends/tests/stress-tests/testcases/import_ldif/import_ldif_many_indexes.xml
new file mode 100755
index 0000000..b69e041
--- /dev/null
+++ b/opendj-sdk/opends/tests/stress-tests/testcases/import_ldif/import_ldif_many_indexes.xml
@@ -0,0 +1,267 @@
+<?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="many_indexes"/>
+
+ <function name="many_indexes">
+
+ <sequence>
+
+ <block name="'many-indexes'">
+
+ <sequence>
+
+ <script>
+ if not CurrentTestPath.has_key('group'):
+ CurrentTestPath['group']='many-indexes'
+ CurrentTestPath['suite']=STAXCurrentBlock
+ </script>
+
+ <call function="'testSuite_Preamble'"/>
+
+ <import machine="STAF_LOCAL_HOSTNAME"
+ file="'%s/testcases/import_ldif/import_ldif_setup.xml' % (TESTS_DIR)"/>
+ <call function="'import_ldif_setup'" />
+
+ <testcase name="getTestCaseName('Preamble')">
+ <sequence>
+ <call function="'testCase_Preamble'"/>
+ <message>
+ 'Import Ldif: Many Indexes: Preamble - Create many indexes'
+ </message>
+
+ <script>
+ indexes_five = ['cn', 'givenName', 'sn', 'uid']
+ </script>
+
+ <iterate var="currIndex" in="indexes_five" indexvar="index">
+ <call function="'dsconfig'">
+ { 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST,
+ 'dsInstancePort' : DIRECTORY_INSTANCE_PORT ,
+ 'dsInstanceDn' : DIRECTORY_INSTANCE_DN ,
+ 'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD ,
+ 'subcommand' : 'set-je-index-prop' ,
+ 'objectType' : 'backend-name' ,
+ 'objectName' : 'userRoot',
+ 'optionsString' : '--index-name %s --set index-type:approximate --set index-type:equality --set index-type:ordering --set index-type:presence --set index-type:substring ' % currIndex ,
+ 'expectedRC' : 0 }
+ </call>
+ </iterate>
+
+ <script>
+ indexes_three = ['aci', 'mail', 'member', 'objectclass', 'telephonenumber', 'uniquemember']
+ </script>
+
+ <iterate var="currIndex" in="indexes_three" indexvar="index">
+ <call function="'dsconfig'">
+ { 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST,
+ 'dsInstancePort' : DIRECTORY_INSTANCE_PORT ,
+ 'dsInstanceDn' : DIRECTORY_INSTANCE_DN ,
+ 'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD ,
+ 'subcommand' : 'set-je-index-prop' ,
+ 'objectType' : 'backend-name' ,
+ 'objectName' : 'userRoot',
+ 'optionsString' : '--index-name %s --set index-type:equality --set index-type:presence --set index-type:substring ' % currIndex ,
+ 'expectedRC' : 0 }
+ </call>
+ </iterate>
+
+ <call function="'dsconfig'">
+ { 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST,
+ 'dsInstancePort' : DIRECTORY_INSTANCE_PORT ,
+ 'dsInstanceDn' : DIRECTORY_INSTANCE_DN ,
+ 'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD ,
+ 'subcommand' : 'create-je-index' ,
+ 'objectType' : 'backend-name' ,
+ 'objectName' : 'userRoot',
+ 'optionsString' : '--index-name description --set index-type:approximate --set index-type:equality --set index-type:presence --set index-type:substring ' ,
+ 'expectedRC' : 0 }
+ </call>
+
+ <call function="'dsconfig'">
+ { 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST,
+ 'dsInstancePort' : DIRECTORY_INSTANCE_PORT ,
+ 'dsInstanceDn' : DIRECTORY_INSTANCE_DN ,
+ 'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD ,
+ 'subcommand' : 'create-je-index' ,
+ 'objectType' : 'backend-name' ,
+ 'objectName' : 'userRoot',
+ 'optionsString' : '--index-name employeeNumber --set index-type:approximate --set index-type:equality --set index-type:ordering --set index-type:presence --set index-type:substring ' ,
+ 'expectedRC' : 0 }
+ </call>
+
+ <message>
+ 'Import Ldif: Many Indexes: Preamble - List indexes'
+ </message>
+
+ <call function="'dsconfig'">
+ { 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST,
+ 'dsInstancePort' : DIRECTORY_INSTANCE_PORT ,
+ 'dsInstanceDn' : DIRECTORY_INSTANCE_DN ,
+ 'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD ,
+ 'subcommand' : 'list-je-indexes' ,
+ 'objectType' : 'backend-name' ,
+ 'objectName' : 'userRoot',
+ 'expectedRC' : 0 }
+ </call>
+
+ <message>
+ 'Import Ldif: Many Indexes: Preamble - 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>
+
+ <message>
+ 'Import Ldif: Many Indexes: Preamble - Make an make-ldif template file'
+ </message>
+
+ <script>
+ numberOfEntries='160'
+ </script>
+
+ <call function="'MakeAMakeLdifTemplate'">
+ { 'numEntries' : numberOfEntries ,
+ 'templateFile' : '%s/quickstart/import_Entries.template' % (logsRemoteDataDir) }
+ </call>
+
+ <message>
+ 'Import Ldif: Many Indexes: Preamble - Make the ldif file'
+ </message>
+
+ <call function="'MakeLdif'">
+ { 'templateFile' : '%s/quickstart/import_Entries.template' % (logsRemoteDataDir) ,
+ 'ldifFile' : '%s/quickstart/import_Entries.ldif' % (logsRemoteDataDir) }
+ </call>
+
+ <call function="'testCase_Postamble'"/>
+
+ </sequence>
+ </testcase>
+
+
+ <testcase name="getTestCaseName('Import Large Ldif File')">
+ <sequence>
+ <call function="'testCase_Preamble'"/>
+
+ <message>
+ 'Import Ldif: Many Indexes: Import large ldif file'
+ </message>
+
+ <call function="'ImportLdifWithScript'">
+ { 'location' : STAF_REMOTE_HOSTNAME ,
+ 'dsLdifFile' : '%s/quickstart/import_Entries.ldif' % logsRemoteDataDir,
+ 'dsBackEnd' : 'userRoot'}
+ </call>
+
+ <script>
+ returnString = STAXResult[0][1]
+ </script>
+
+ <call function="'checktestString'">
+ { 'returnString' : returnString ,
+ 'expectedString' : 'skipped 0, rejected 0' }
+ </call>
+
+ <call function="'testCase_Postamble'"/>
+
+ </sequence>
+ </testcase>
+
+ <testcase name="getTestCaseName('Start Directory After Import')">
+ <sequence>
+ <call function="'testCase_Preamble'"/>
+
+ <message>
+ 'Import Ldif: Many Indexes: Start DS running on port %s' % (DIRECTORY_INSTANCE_PORT)
+ </message>
+
+ <call function="'StartDsWithScript'">
+ { 'location' : STAF_REMOTE_HOSTNAME }
+ </call>
+
+ <call function="'checktestRC'">
+ { 'returncode' : RC ,
+ 'result' : STAXResult }
+ </call>
+
+ <!--- Check that DS started -->
+ <call function="'isAlive'">
+ { 'noOfLoops' : 5 ,
+ 'noOfMilliSeconds' : 2000 }
+ </call>
+
+ <call function="'testCase_Postamble'"/>
+
+ </sequence>
+ </testcase>
+
+ <testcase name="getTestCaseName('Search For Imported Entries')">
+ <sequence>
+ <call function="'testCase_Preamble'"/>
+
+ <message>
+ 'Import Ldif: Many Indexes: Search for certain entries that were imported'
+ </message>
+
+ <call function="'checkImport'">
+ { 'expectedEntries' : ['uid=user.1,ou=People,dc=com' ,
+ 'uid=user.100,ou=People,dc=com' ,
+ 'uid=user.159,ou=People,dc=com'] ,
+ 'startDS' : 'no'
+ }
+ </call>
+
+ <call function="'testCase_Postamble'"/>
+
+ </sequence>
+ </testcase>
+
+
+ <import machine="STAF_LOCAL_HOSTNAME"
+ file="'%s/testcases/import_ldif/import_ldif_cleanup.xml' % (TESTS_DIR)"/>
+ <call function="'import_ldif_cleanup'" />
+
+
+ <call function="'testSuite_Postamble'"/>
+
+ </sequence>
+
+ </block>
+
+ </sequence>
+
+ </function>
+
+</stax>
diff --git a/opendj-sdk/opends/tests/stress-tests/testcases/import_ldif/import_ldif_many_thrds.xml b/opendj-sdk/opends/tests/stress-tests/testcases/import_ldif/import_ldif_many_thrds.xml
new file mode 100755
index 0000000..7f2ca79
--- /dev/null
+++ b/opendj-sdk/opends/tests/stress-tests/testcases/import_ldif/import_ldif_many_thrds.xml
@@ -0,0 +1,227 @@
+<?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="many_thrds"/>
+
+ <function name="many_thrds">
+
+ <sequence>
+
+ <block name="'many-thrds'">
+
+ <sequence>
+
+ <script>
+ if not CurrentTestPath.has_key('group'):
+ CurrentTestPath['group']='many_thrds'
+ CurrentTestPath['suite']=STAXCurrentBlock
+ </script>
+
+ <call function="'testSuite_Preamble'"/>
+
+ <import machine="STAF_LOCAL_HOSTNAME"
+ file="'%s/testcases/import_ldif/import_ldif_setup.xml' % (TESTS_DIR)"/>
+ <call function="'import_ldif_setup'" />
+
+ <testcase name="getTestCaseName('Preamble')">
+ <sequence>
+ <call function="'testCase_Preamble'"/>
+
+ <message>
+ 'Import Ldif: Many Threads: Preamble - Change import thread count'
+ </message>
+
+ <call function="'dsconfig'">
+ { 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST,
+ 'dsInstancePort' : DIRECTORY_INSTANCE_PORT ,
+ 'dsInstanceDn' : DIRECTORY_INSTANCE_DN ,
+ 'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD ,
+ 'subcommand' : 'set-backend-prop' ,
+ 'objectType' : 'backend-name' ,
+ 'objectName' : 'userRoot',
+ 'optionsString' : '--set import-thread-count:2048' ,
+ 'expectedRC' : 0 }
+ </call>
+
+ <message>
+ 'Import Ldif: Many Threads: Preamble - 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>
+
+ <script>
+ import os.path
+ curr_filename=logsRemoteDataDir + r"/../../" + bin_attr_filename
+ curr_file_exists='0'
+ if os.path.exists(curr_filename):
+ curr_file_exists='1'
+
+ numberOfEntries='100000'
+ </script>
+
+ <message>
+ 'Import Ldif Tasks: Many Threads: Looking for file, %s. File exists? (0=false, 1=true) %s' % (curr_filename, curr_file_exists)
+ </message>
+
+ <if expr="curr_file_exists=='0'">
+ <sequence>
+ <message>
+ 'Import Ldif Tasks: Many Threads: Preamble - Make an make-ldif template file'
+ </message>
+ <call function="'MakeAMakeLdifTemplate'">
+ { 'numEntries' : numberOfEntries ,
+ 'templateFile' : '%s/quickstart/import_Entries.template' % (logsRemoteDataDir) ,
+ 'extraLine' : 'jpegPhoto;binary:: <random:base64:38000>'}
+ </call>
+
+ <message>
+ 'Import Ldif Tasks: Many Threads: Preamble - Make the ldif file'
+ </message>
+
+ <call function="'MakeLdif'">
+ { 'templateFile' : '%s/quickstart/import_Entries.template' % (logsRemoteDataDir) ,
+ 'ldifFile' : curr_filename }
+ </call>
+ </sequence>
+ </if>
+
+ <call function="'testCase_Postamble'"/>
+
+ </sequence>
+ </testcase>
+
+
+ <testcase name="getTestCaseName('Import Large Ldif File')">
+ <sequence>
+ <call function="'testCase_Preamble'"/>
+
+ <message>
+ 'Import Ldif: Many Threads: Import large ldif file'
+ </message>
+
+ <call function="'ImportLdifWithScript'">
+ { 'location' : STAF_REMOTE_HOSTNAME ,
+ 'dsLdifFile' : curr_filename ,
+ 'dsBackEnd' : 'userRoot'}
+ </call>
+
+ <script>
+ returnString = STAXResult[0][1]
+ </script>
+
+ <call function="'checktestString'">
+ { 'returnString' : returnString ,
+ 'expectedString' : 'Processed 100002 entries' }
+ </call>
+
+ <call function="'testCase_Postamble'"/>
+
+ </sequence>
+ </testcase>
+
+ <testcase name="getTestCaseName('Start Directory After Import')">
+ <sequence>
+ <call function="'testCase_Preamble'"/>
+
+ <message>
+ 'Import Ldif: Many Threads: Start DS running on port %s' % (DIRECTORY_INSTANCE_PORT)
+ </message>
+
+ <call function="'StartDsWithScript'">
+ { 'location' : STAF_REMOTE_HOSTNAME }
+ </call>
+
+ <call function="'checktestRC'">
+ { 'returncode' : RC ,
+ 'result' : STAXResult }
+ </call>
+
+ <!--- Check that DS started -->
+ <call function="'isAlive'">
+ { 'noOfLoops' : 12 ,
+ 'noOfMilliSeconds' : 300000 }
+ </call>
+
+ <call function="'testCase_Postamble'"/>
+
+ </sequence>
+ </testcase>
+
+ <testcase name="getTestCaseName('Search For Imported Entries')">
+ <sequence>
+ <call function="'testCase_Preamble'"/>
+
+ <message>
+ 'Import Ldif: Many Threads: Search for certain entries that were imported'
+ </message>
+
+ <call function="'checkImport'">
+ { 'expectedEntries' : ['uid=user.1,ou=People,dc=com' ,
+ 'uid=user.10000,ou=People,dc=com' ,
+ 'uid=user.20000,ou=People,dc=com' ,
+ 'uid=user.30000,ou=People,dc=com' ,
+ 'uid=user.40000,ou=People,dc=com' ,
+ 'uid=user.50000,ou=People,dc=com' ,
+ 'uid=user.60000,ou=People,dc=com' ,
+ 'uid=user.70000,ou=People,dc=com' ,
+ 'uid=user.80000,ou=People,dc=com' ,
+ 'uid=user.90000,ou=People,dc=com' ,
+ 'uid=user.99999,ou=People,dc=com'] ,
+ 'startDS' : 'no'
+ }
+ </call>
+
+ <call function="'testCase_Postamble'"/>
+
+ </sequence>
+ </testcase>
+
+
+ <import machine="STAF_LOCAL_HOSTNAME"
+ file="'%s/testcases/import_ldif/import_ldif_cleanup.xml' % (TESTS_DIR)"/>
+ <call function="'import_ldif_cleanup'" />
+
+
+ <call function="'testSuite_Postamble'"/>
+
+ </sequence>
+
+ </block>
+
+ </sequence>
+
+ </function>
+
+</stax>
diff --git a/opendj-sdk/opends/tests/stress-tests/testcases/import_ldif/import_ldif_out-of-box.xml b/opendj-sdk/opends/tests/stress-tests/testcases/import_ldif/import_ldif_out-of-box.xml
new file mode 100755
index 0000000..dc08dd2
--- /dev/null
+++ b/opendj-sdk/opends/tests/stress-tests/testcases/import_ldif/import_ldif_out-of-box.xml
@@ -0,0 +1,191 @@
+<?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="out-of-box"/>
+
+ <function name="out-of-box">
+
+ <sequence>
+
+ <block name="'out-of-box'">
+
+ <sequence>
+
+ <script>
+ if not CurrentTestPath.has_key('group'):
+ CurrentTestPath['group']='out-of-box'
+ CurrentTestPath['suite']=STAXCurrentBlock
+ </script>
+
+ <call function="'testSuite_Preamble'"/>
+
+ <import machine="STAF_LOCAL_HOSTNAME"
+ file="'%s/testcases/import_ldif/import_ldif_setup.xml' % (TESTS_DIR)"/>
+ <call function="'import_ldif_setup'" />
+
+ <testcase name="getTestCaseName('Preamble')">
+ <sequence>
+ <call function="'testCase_Preamble'"/>
+ <message>
+ 'Import Ldif: Out-Of-Box: Preamble - 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>
+
+ <message>
+ 'Import Ldif: Out-Of-Box: Preamble - Make an make-ldif template file'
+ </message>
+
+ <script>
+ numberOfEntries='15000000'
+ </script>
+
+ <call function="'MakeAMakeLdifTemplate'">
+ { 'numEntries' : numberOfEntries ,
+ 'templateFile' : '%s/quickstart/import_Entries.template' % (logsRemoteDataDir) }
+ </call>
+
+ <message>
+ 'Import Ldif: Out-Of-Box: Preamble - Make the ldif file'
+ </message>
+
+ <call function="'MakeLdif'">
+ { 'templateFile' : '%s/quickstart/import_Entries.template' % (logsRemoteDataDir) ,
+ 'ldifFile' : '%s/quickstart/import_Entries.ldif' % (logsRemoteDataDir) }
+ </call>
+
+ <call function="'testCase_Postamble'"/>
+
+ </sequence>
+ </testcase>
+
+
+ <testcase name="getTestCaseName('Import Large Ldif File')">
+ <sequence>
+ <call function="'testCase_Preamble'"/>
+
+ <message>
+ 'Import Ldif: Out-Of-Box: Import large ldif file'
+ </message>
+
+ <call function="'ImportLdifWithScript'">
+ { 'location' : STAF_REMOTE_HOSTNAME ,
+ 'dsLdifFile' : '%s/quickstart/import_Entries.ldif' % logsRemoteDataDir,
+ 'dsBackEnd' : 'userRoot'}
+ </call>
+
+ <script>
+ returnString = STAXResult[0][1]
+ </script>
+
+ <call function="'checktestString'">
+ { 'returnString' : returnString ,
+ 'expectedString' : 'skipped 0, rejected 0' }
+ </call>
+
+ <call function="'testCase_Postamble'"/>
+
+ </sequence>
+ </testcase>
+
+ <testcase name="getTestCaseName('Start Directory After Import')">
+ <sequence>
+ <call function="'testCase_Preamble'"/>
+
+ <message>
+ 'Import Ldif: Out-Of-Box: Start DS running on port %s' % (DIRECTORY_INSTANCE_PORT)
+ </message>
+
+ <call function="'StartDsWithScript'">
+ { 'location' : STAF_REMOTE_HOSTNAME }
+ </call>
+
+ <call function="'checktestRC'">
+ { 'returncode' : RC ,
+ 'result' : STAXResult }
+ </call>
+
+ <!--- Check that DS started -->
+ <call function="'isAlive'">
+ { 'noOfLoops' : 120 ,
+ 'noOfMilliSeconds' : 600000 }
+ </call>
+
+ <call function="'testCase_Postamble'"/>
+
+ </sequence>
+ </testcase>
+
+ <testcase name="getTestCaseName('Search For Imported Entries')">
+ <sequence>
+ <call function="'testCase_Preamble'"/>
+
+ <message>
+ 'Import Ldif: Out-Of-Box: Search for certain entries that were imported'
+ </message>
+
+ <call function="'checkImport'">
+ { 'expectedEntries' : ['uid=user.1,ou=People,dc=com' ,
+ 'uid=user.10000,ou=People,dc=com' ,
+ 'uid=user.100000,ou=People,dc=com' ,
+ 'uid=user.1000000,ou=People,dc=com' ,
+ 'uid=user.14000000,ou=People,dc=com' ,
+ 'uid=user.14999999,ou=People,dc=com'] ,
+ 'startDS' : 'no'
+ }
+ </call>
+
+ <call function="'testCase_Postamble'"/>
+
+ </sequence>
+ </testcase>
+
+
+ <import machine="STAF_LOCAL_HOSTNAME"
+ file="'%s/testcases/import_ldif/import_ldif_cleanup.xml' % (TESTS_DIR)"/>
+ <call function="'import_ldif_cleanup'" />
+
+
+ <call function="'testSuite_Postamble'"/>
+
+ </sequence>
+
+ </block>
+
+ </sequence>
+
+ </function>
+
+</stax>
diff --git a/opendj-sdk/opends/tests/stress-tests/testcases/import_ldif/import_ldif_setup.xml b/opendj-sdk/opends/tests/stress-tests/testcases/import_ldif/import_ldif_setup.xml
new file mode 100755
index 0000000..c47d8c4
--- /dev/null
+++ b/opendj-sdk/opends/tests/stress-tests/testcases/import_ldif/import_ldif_setup.xml
@@ -0,0 +1,140 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE stax SYSTEM "../../shared/stax.dtd">
+<!--
+ ! CDDL HEADER START
+ !
+ ! The contents of this file are subject to the terms of the
+ ! Common Development and Distribution License, Version 1.0 only
+ ! (the "License"). You may not use this file except in compliance
+ ! with the License.
+ !
+ ! You can obtain a copy of the license at
+ ! trunk/opends/resource/legal-notices/OpenDS.LICENSE
+ ! or https://OpenDS.dev.java.net/OpenDS.LICENSE.
+ ! See the License for the specific language governing permissions
+ ! and limitations under the License.
+ !
+ ! When distributing Covered Code, include this CDDL HEADER in each
+ ! file and include the License file at
+ ! trunk/opends/resource/legal-notices/OpenDS.LICENSE. If applicable,
+ ! add the following below this CDDL HEADER, with the fields enclosed
+ ! by brackets "[]" replaced with your own identifying information:
+ ! Portions Copyright [yyyy] [name of copyright owner]
+ !
+ ! CDDL HEADER END
+ !
+ ! Portions Copyright 2007 Sun Microsystems, Inc.
+ ! -->
+<stax>
+
+ <defaultcall function="import_ldif_setup"/>
+
+ <function name="import_ldif_setup">
+ <function-map-args>
+ <function-arg-def name="startDS" type="optional" default="True">
+ <function-arg-description>
+ Optional start the Directory Server
+ </function-arg-description>
+ <function-arg-property name="type" value="boolean"/>
+ </function-arg-def>
+ <function-arg-def name="loadBackend" type="optional" default="False">
+ <function-arg-description>
+ Specifies whether the backend should be loaded with some data.
+ </function-arg-description>
+ <function-arg-property name="type" value="boolean"/>
+ </function-arg-def>
+ </function-map-args>
+
+ <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' : False }
+ </call>
+
+ <call function="'checkRC'">
+ { 'returncode' : RC ,
+ 'result' : STAXResult }
+ </call>
+
+ </sequence>
+ <!--- End Block Create DS Topology -->
+ </block>
+
+
+
+ <if expr="loadBackend == True">
+ <block name="'Block DS Load Data'">
+ <!-- Load the data needed by the test suite -->
+ <sequence>
+
+ <message>
+ 'Import Ldif: Small Initial Import'
+ </message>
+ <call function="'importLdif'">
+ { 'ldifFile' : '%s/import_ldif/import_ldif_start.ldif' % logsRemoteDataDir }
+ </call>
+
+ <call function="'checkRC'">
+ { 'returncode' : RC ,
+ 'result' : STAXResult }
+ </call>
+
+ </sequence>
+ <!--- End Block DS Load Data -->
+ </block>
+ </if>
+
+
+ <if expr="startDS == True">
+ <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>
+ </if>
+
+
+
+ </sequence>
+ </block>
+
+ </sequence>
+
+ </function>
+
+</stax>
diff --git a/opendj-sdk/opends/tests/stress-tests/testcases/import_ldif/import_ldif_tasks_bin_attr.xml b/opendj-sdk/opends/tests/stress-tests/testcases/import_ldif/import_ldif_tasks_bin_attr.xml
new file mode 100755
index 0000000..1524936
--- /dev/null
+++ b/opendj-sdk/opends/tests/stress-tests/testcases/import_ldif/import_ldif_tasks_bin_attr.xml
@@ -0,0 +1,172 @@
+<?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="tasks_bin_attr"/>
+
+ <function name="tasks_bin_attr">
+
+ <sequence>
+
+ <block name="'tasks-bin-attr'">
+
+ <sequence>
+
+ <script>
+ if not CurrentTestPath.has_key('group'):
+ CurrentTestPath['group']='tasks_bin_attr'
+ CurrentTestPath['suite']=STAXCurrentBlock
+ </script>
+
+ <call function="'testSuite_Preamble'"/>
+
+ <import machine="STAF_LOCAL_HOSTNAME"
+ file="'%s/testcases/import_ldif/import_ldif_setup.xml' % (TESTS_DIR)"/>
+ <call function="'import_ldif_setup'" />
+
+ <testcase name="getTestCaseName('Preamble')">
+ <sequence>
+ <call function="'testCase_Preamble'"/>
+ <script>
+ import os.path
+ curr_filename=logsRemoteDataDir + r"/../../" + bin_attr_filename
+ curr_file_exists='0'
+ if os.path.exists(curr_filename):
+ curr_file_exists='1'
+
+ numberOfEntries='100000'
+ </script>
+
+ <message>
+ 'Import Ldif Tasks: Binary Attribute: Looking for file, %s. File exists? (0=false, 1=true) %s' % (curr_filename, curr_file_exists)
+ </message>
+
+ <if expr="curr_file_exists=='0'">
+ <sequence>
+ <message>
+ 'Import Ldif Tasks: Binary Attribute: Preamble - Make an make-ldif template file'
+ </message>
+ <call function="'MakeAMakeLdifTemplate'">
+ { 'numEntries' : numberOfEntries ,
+ 'templateFile' : '%s/quickstart/import_Entries.template' % (logsRemoteDataDir) ,
+ 'extraLine' : 'jpegPhoto;binary:: <random:base64:38000>'}
+ </call>
+
+ <message>
+ 'Import Ldif Tasks: Binary Attribute: Preamble - Make the ldif file'
+ </message>
+
+ <call function="'MakeLdif'">
+ { 'templateFile' : '%s/quickstart/import_Entries.template' % (logsRemoteDataDir) ,
+ 'ldifFile' : curr_filename }
+ </call>
+ </sequence>
+ </if>
+
+ <call function="'testCase_Postamble'"/>
+
+ </sequence>
+ </testcase>
+
+
+ <testcase name="getTestCaseName('Import Large Ldif File')">
+ <sequence>
+ <call function="'testCase_Preamble'"/>
+
+ <message>
+ 'Import Ldif Tasks: Binary Attribute: Import large ldif file'
+ </message>
+
+ <call function="'importLdifTask'">
+ { 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST,
+ 'dsInstancePort' : DIRECTORY_INSTANCE_PORT,
+ 'dsInstanceDn' : DIRECTORY_INSTANCE_DN,
+ 'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD,
+ 'taskID' : STAXCurrentTestcase,
+ 'ldifFile' : curr_filename ,
+ 'numLdapCheckTries' : 1000,
+ 'sleepBetweenLdapCheckTries' : 300000
+ }
+ </call>
+ <call function="'checktestRC'">
+ { 'returncode' : RC ,
+ 'result' : STAXResult
+ }
+ </call>
+
+ <call function="'testCase_Postamble'"/>
+
+ </sequence>
+ </testcase>
+
+ <testcase name="getTestCaseName('Search For Imported Entries')">
+ <sequence>
+ <call function="'testCase_Preamble'"/>
+
+ <message>
+ 'Import Ldif Tasks: Binary Attribute: Search for certain entries that were imported'
+ </message>
+
+ <call function="'checkImport'">
+ { 'expectedEntries' : ['uid=user.1,ou=People,dc=com' ,
+ 'uid=user.10000,ou=People,dc=com' ,
+ 'uid=user.20000,ou=People,dc=com' ,
+ 'uid=user.30000,ou=People,dc=com' ,
+ 'uid=user.40000,ou=People,dc=com' ,
+ 'uid=user.50000,ou=People,dc=com' ,
+ 'uid=user.60000,ou=People,dc=com' ,
+ 'uid=user.70000,ou=People,dc=com' ,
+ 'uid=user.80000,ou=People,dc=com' ,
+ 'uid=user.90000,ou=People,dc=com' ,
+ 'uid=user.99999,ou=People,dc=com'] ,
+ 'startDS' : 'no'
+ }
+ </call>
+
+ <call function="'testCase_Postamble'"/>
+
+ </sequence>
+ </testcase>
+
+
+ <import machine="STAF_LOCAL_HOSTNAME"
+ file="'%s/testcases/import_ldif/import_ldif_cleanup.xml' % (TESTS_DIR)"/>
+ <call function="'import_ldif_cleanup'" />
+
+
+ <call function="'testSuite_Postamble'"/>
+
+ </sequence>
+
+ </block>
+
+ </sequence>
+
+ </function>
+
+</stax>
diff --git a/opendj-sdk/opends/tests/stress-tests/testcases/import_ldif/import_ldif_tasks_bin_attr_with_load.xml b/opendj-sdk/opends/tests/stress-tests/testcases/import_ldif/import_ldif_tasks_bin_attr_with_load.xml
new file mode 100755
index 0000000..337618a
--- /dev/null
+++ b/opendj-sdk/opends/tests/stress-tests/testcases/import_ldif/import_ldif_tasks_bin_attr_with_load.xml
@@ -0,0 +1,266 @@
+<?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="tasks_bin_attr_with_load"/>
+
+ <function name="tasks_bin_attr_with_load">
+
+ <sequence>
+
+ <block name="'tasks-bin-attr-with-load'">
+
+ <sequence>
+
+ <script>
+ if not CurrentTestPath.has_key('group'):
+ CurrentTestPath['group']='tasks_bin_attr_with_load'
+ CurrentTestPath['suite']=STAXCurrentBlock
+ </script>
+
+ <call function="'testSuite_Preamble'"/>
+
+ <import machine="STAF_LOCAL_HOSTNAME"
+ file="'%s/testcases/import_ldif/import_ldif_setup.xml' % (TESTS_DIR)"/>
+ <call function="'import_ldif_setup'" />
+
+ <testcase name="getTestCaseName('Preamble - import 100 entries')">
+ <sequence>
+ <call function="'testCase_Preamble'"/>
+ <message>
+ 'Import Ldif Tasks: Binary Attribute With Load: Preamble - Make an make-ldif template file'
+ </message>
+
+ <script>
+ numberOfEntries='100'
+ </script>
+
+ <call function="'MakeAMakeLdifTemplate'">
+ { 'numEntries' : numberOfEntries ,
+ 'templateFile' : '%s/quickstart/import_100Entries.template' % (logsRemoteDataDir) }
+ </call>
+
+ <message>
+ 'Import Ldif Tasks: Binary Attribute With Load: Preamble - Make the ldif file'
+ </message>
+
+ <call function="'MakeLdif'">
+ { 'templateFile' : '%s/quickstart/import_100Entries.template' % (logsRemoteDataDir) ,
+ 'ldifFile' : '%s/quickstart/import_100Entries.ldif' % (logsRemoteDataDir) }
+ </call>
+
+ <message>
+ 'Import Ldif Tasks: Binary Attribute With Load: Import large ldif file'
+ </message>
+
+ <call function="'importLdifTask'">
+ { 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST,
+ 'dsInstancePort' : DIRECTORY_INSTANCE_PORT,
+ 'dsInstanceDn' : DIRECTORY_INSTANCE_DN,
+ 'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD,
+ 'taskID' : STAXCurrentTestcase,
+ 'ldifFile' : '%s/quickstart/import_100Entries.ldif' % logsRemoteDataDir
+ }
+ </call>
+ <call function="'checktestRC'">
+ { 'returncode' : RC ,
+ 'result' : STAXResult
+ }
+ </call>
+ <call function="'testCase_Postamble'"/>
+
+ </sequence>
+ </testcase>
+
+ <testcase name="getTestCaseName('Preamble - prepare many entries for import')">
+ <sequence>
+ <call function="'testCase_Preamble'"/>
+ <script>
+ import os.path
+ curr_filename=logsRemoteDataDir + r"/../../" + bin_attr_filename
+ curr_file_exists='0'
+ if os.path.exists(curr_filename):
+ curr_file_exists='1'
+
+ numberOfEntries='100000'
+ </script>
+
+ <message>
+ 'Import Ldif Tasks: Binary Attribute: Looking for file, %s. File exists? (0=false, 1=true) %s' % (curr_filename, curr_file_exists)
+ </message>
+
+ <if expr="curr_file_exists=='0'">
+ <sequence>
+ <message>
+ 'Import Ldif Tasks: Binary Attribute: Preamble - Make an make-ldif template file'
+ </message>
+ <call function="'MakeAMakeLdifTemplate'">
+ { 'numEntries' : numberOfEntries ,
+ 'templateFile' : '%s/quickstart/import_Entries.template' % (logsRemoteDataDir) ,
+ 'extraLine' : 'jpegPhoto;binary:: <random:base64:38000>'}
+ </call>
+
+ <message>
+ 'Import Ldif Tasks: Binary Attribute: Preamble - Make the ldif file'
+ </message>
+
+ <call function="'MakeLdif'">
+ { 'templateFile' : '%s/quickstart/import_Entries.template' % (logsRemoteDataDir) ,
+ 'ldifFile' : curr_filename }
+ </call>
+ </sequence>
+ </if>
+
+ <call function="'testCase_Postamble'"/>
+
+ </sequence>
+ </testcase>
+
+ <script>
+ clientList = ['dummyClient1', 'dummyClient2', 'dummyClient3', 'dummyClient4',
+ 'dummyClient5', 'dummyClient6', 'dummyClient7', 'dummyClient8',
+ 'dummyClient9', 'dummyClient10', 'dummyClient11', 'dummyClient12',
+ 'dummyClient13', 'dummyClient14', 'dummyClient15', 'dummyClient16']
+ </script>
+
+ <testcase name="getTestCaseName('Import Large Ldif File')">
+ <parallel>
+ <sequence>
+ <call function="'testCase_Preamble'"/>
+
+ <message>
+ 'Import Ldif Tasks: Binary Attribute With Load: Import Large Ldif File - Sleep 2 s to ensure modify load starts'
+ </message>
+
+ <call function="'Sleep'">
+ { 'sleepForMilliSeconds' : 2000 }
+ </call>
+
+ <message>
+ 'Import Ldif Tasks: Binary Attribute With Load: Import Large Ldif File - Add import task'
+ </message>
+
+ <call function="'importLdifTask'">
+ { 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST,
+ 'dsInstancePort' : DIRECTORY_INSTANCE_PORT,
+ 'dsInstanceDn' : DIRECTORY_INSTANCE_DN,
+ 'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD,
+ 'taskID' : STAXCurrentTestcase,
+ 'ldifFile' : curr_filename ,
+ 'numLdapCheckTries' : 1000,
+ 'sleepBetweenLdapCheckTries' : 300000
+ }
+ </call>
+ <call function="'checktestRC'">
+ { 'returncode' : RC ,
+ 'result' : STAXResult
+ }
+ </call>
+ <iterate var="mlClient" in="clientList" indexvar="index">
+ <terminate block="'main.import-ldif.tasks-bin-attr-with-load.ModifyLoad_%s' % mlClient"/>
+ </iterate>
+ <call function="'testCase_Postamble'"/>
+
+ </sequence>
+
+ <paralleliterate var="client" in="clientList">
+ <sequence>
+ <block name="'ModifyLoad_%s' % client">
+ <loop>
+ <sequence>
+ <call function="'loadOfModifies'">
+ { 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST ,
+ 'dsInstancePort' : DIRECTORY_INSTANCE_PORT ,
+ 'dsInstanceDn' : DIRECTORY_INSTANCE_DN ,
+ 'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD ,
+ 'partialDNToModify' : 'ou=People,dc=com' ,
+ 'attributeName' : 'description' ,
+ 'newAttributeValue' : 'Modify load forever' ,
+ 'changetype' : 'replace',
+ 'numEntries' : '100' ,
+ 'clientID' : client }
+ </call>
+
+ <if expr="STAXCode == 32" >
+ <break/>
+ </if>
+ </sequence>
+ </loop>
+ </block>
+ </sequence>
+ </paralleliterate>
+ </parallel>
+
+ </testcase>
+
+ <testcase name="getTestCaseName('Search For Imported Entries')">
+ <sequence>
+ <call function="'testCase_Preamble'"/>
+
+ <message>
+ 'Import Ldif Tasks: Binary Attribute With Load: Search for certain entries that were imported'
+ </message>
+
+ <call function="'checkImport'">
+ { 'expectedEntries' : ['uid=user.1,ou=People,dc=com' ,
+ 'uid=user.10000,ou=People,dc=com' ,
+ 'uid=user.20000,ou=People,dc=com' ,
+ 'uid=user.30000,ou=People,dc=com' ,
+ 'uid=user.40000,ou=People,dc=com' ,
+ 'uid=user.50000,ou=People,dc=com' ,
+ 'uid=user.60000,ou=People,dc=com' ,
+ 'uid=user.70000,ou=People,dc=com' ,
+ 'uid=user.80000,ou=People,dc=com' ,
+ 'uid=user.90000,ou=People,dc=com' ,
+ 'uid=user.99999,ou=People,dc=com'] ,
+ 'startDS' : 'no'
+ }
+ </call>
+
+ <call function="'testCase_Postamble'"/>
+
+ </sequence>
+ </testcase>
+
+
+ <import machine="STAF_LOCAL_HOSTNAME"
+ file="'%s/testcases/import_ldif/import_ldif_cleanup.xml' % (TESTS_DIR)"/>
+ <call function="'import_ldif_cleanup'" />
+
+
+ <call function="'testSuite_Postamble'"/>
+
+ </sequence>
+
+ </block>
+
+ </sequence>
+
+ </function>
+
+</stax>
diff --git a/opendj-sdk/opends/tests/stress-tests/testcases/import_ldif/runStressTests.xml b/opendj-sdk/opends/tests/stress-tests/testcases/import_ldif/runStressTests.xml
new file mode 100755
index 0000000..9b883b8
--- /dev/null
+++ b/opendj-sdk/opends/tests/stress-tests/testcases/import_ldif/runStressTests.xml
@@ -0,0 +1,245 @@
+<?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" />
+ <function name="main">
+ <sequence>
+ <!--- Load the environment for the test suite execution -->
+ <import machine="STAF_LOCAL_HOSTNAME"
+ file="'%s/environment.xml' % TESTS_FUNCTIONS_DIR" />
+ <call function="'loadEnvironment'" />
+
+ <!-- The Functional Tests -->
+ <import machine="STAF_LOCAL_HOSTNAME"
+ file="'%s/testcases/import_ldif/import_ldif.xml' % TESTS_DIR" />
+
+ <script>
+ # this function return a well-formatted testcase name
+ def getTestCaseName(name):
+ return '%s: %s: %s' % (CurrentTestPath['group'],CurrentTestPath['suite'],name)
+
+ # this functions adds a known issue to a testcase's known issues list
+ issuesList=[]
+ def knownIssue(issue):
+ issuesList.append(issue)
+
+ class functionToRun:
+ def __init__(self, name):
+ self.name = name
+
+ def getName(self):
+ return self.name
+
+ testlog=open('%s/tests-log.xml' % TMPDIR,'w')
+ testlog.write('<qa>\n')
+ testlog.write(' <functional-tests>\n')
+ testlog.write(' <results>\n')
+ testlog.close()
+
+ suitesFileName='%s/testcases/run-custom-suites.dat' % TESTS_DIR
+
+ if not os.path.exists(suitesFileName):
+ suitesFileName='%s/testcases/run-default-suites.dat' % TESTS_DIR
+
+ f = open(suitesFileName, 'r')
+ functionsToRun = []
+ for line in f.readlines():
+ functionsToRun.append(functionToRun(line.rstrip()))
+ f.close()
+ </script>
+ <iterate var="function" in="functionsToRun">
+ <sequence>
+ <message>'calling function [%s]' % function.getName()</message>
+ <call function="function.getName()" />
+ </sequence>
+ </iterate>
+
+ <!-- in this section we'll compute the coverage for all the tests
+ if coverage is turned on
+ so far I could only get through this on either machines with a lot
+ of memory or small sets of tests
+ -->
+ <if expr="os.path.exists('%s/lib/emma.jar' % dsPath)">
+ <sequence>
+ <script>
+ coverageFiles=''
+ for group in os.listdir('%s/coverage/' % TMPDIR):
+ coverageFiles+='%s/coverage/%s/coverage.ec' % (TMPDIR,group)
+ </script>
+ <call function="'runCommand'">
+ { 'name' : 'Generate global coverage xml report',
+ 'command' : 'java',
+ 'arguments' : ' -Xms64M -Xmx1024M -cp %s/lib/emma.jar emma report -r xml,html -in %s/coverage.em,%s -Dreport.xml.out.file=%s/coverage/coverage.xml -Dreport.html.out.file=%s/coverage/coverage.html -sp %s/../../../src' % (dsPath,dsPath,coverageFiles,TMPDIR,TMPDIR,TMPDIR),
+ 'path' : TMPDIR
+ }
+ </call>
+ <script>
+ from java.io import FileInputStream
+ from javax.xml.transform.stream import StreamSource
+ from javax.xml.transform.stream import StreamResult
+ from javax.xml.parsers import DocumentBuilderFactory
+ from org.w3c.dom import *
+
+ factory = DocumentBuilderFactory.newInstance()
+ builder = factory.newDocumentBuilder()
+
+ input = FileInputStream("%s/coverage/coverage.xml" % TMPDIR)
+ document = builder.parse(input)
+ dom = document.getDocumentElement()
+ coverageNodes = dom.getElementsByTagName("all").item(0).getChildNodes()
+ for coverageNodeIndex in range(coverageNodes.getLength()):
+ thisNode = coverageNodes.item(coverageNodeIndex)
+ if thisNode.getNodeName() == 'coverage':
+ thisNodeAttributes = thisNode.getAttributes()
+ if thisNodeAttributes.getNamedItem("type").getNodeValue() == 'block, %':
+ rawCoverage = thisNodeAttributes.getNamedItem("value").getNodeValue()
+ coverage = rawCoverage.split('%')[0]
+ testlog=open('%s/tests-log.xml' % TMPDIR,'a')
+ testlog.seek(0,2)
+ testlog.write(" <all>\n")
+ testlog.write(" <coverage>\n")
+ testlog.write(" %s\n" % coverage)
+ testlog.write(" </coverage>\n")
+ testlog.write(" </all>\n")
+ testlog.close()
+ </script>
+ </sequence>
+ <else>
+ <script>
+ testlog=open('%s/tests-log.xml' % TMPDIR,'a')
+ testlog.seek(0,2)
+ testlog.write(" <all>\n")
+ testlog.write(" <coverage>\n")
+ testlog.write(" N/A\n")
+ testlog.write(" </coverage>\n")
+ testlog.write(" </all>\n")
+ testlog.close()
+ </script>
+ </else>
+ </if>
+
+ <!-- here goes the section where we get the product's info -->
+ <call function="'GetVar'">
+ { 'location' : STAF_REMOTE_HOSTNAME,
+ 'type' : 'shared',
+ 'variable' : 'Job%s_ServerInfo' % STAXJobID
+ }
+ </call>
+
+ <if expr="RC != 0">
+ <script>
+ STAFResult='{}'
+ </script>
+ </if>
+
+ <!-- Build the Servers Information Dictionary -->
+ <script>
+ ServersInfoDict=eval(STAFResult)
+
+ ServerVersion='unknown'
+ ServerBuildId='unknown'
+ ServerJavaVersion='unknown'
+ ServerJavaVendor='unknown'
+ ServerJVMVersion='unknown'
+ ServerJVMVendor='unknown'
+ ServerSystemOS='unknown'
+ ServerSystemName='unknown'
+ ServerSvnRevision='unknown'
+
+ if ServersInfoDict.has_key('%s/%s' % (DIRECTORY_INSTANCE_DIR,OPENDSNAME)):
+ ServerInfoDict=ServersInfoDict['%s/%s' % (DIRECTORY_INSTANCE_DIR,OPENDSNAME)]
+
+ ServerInfoKey='server version'
+ if ServerInfoDict.has_key(ServerInfoKey):
+ ServerVersion=ServerInfoDict[ServerInfoKey]
+
+ ServerInfoKey='server buildid'
+ if ServerInfoDict.has_key(ServerInfoKey):
+ ServerBuildId=ServerInfoDict[ServerInfoKey]
+
+ ServerInfoKey='java version'
+ if ServerInfoDict.has_key(ServerInfoKey):
+ ServerJavaVersion=ServerInfoDict[ServerInfoKey]
+
+ ServerInfoKey='java vendor'
+ if ServerInfoDict.has_key(ServerInfoKey):
+ ServerJavaVendor=ServerInfoDict[ServerInfoKey]
+
+ ServerInfoKey='jvm version'
+ if ServerInfoDict.has_key(ServerInfoKey):
+ ServerJVMVersion=ServerInfoDict[ServerInfoKey]
+
+ ServerInfoKey='jvm vendor'
+ if ServerInfoDict.has_key(ServerInfoKey):
+ ServerJVMVendor=ServerInfoDict[ServerInfoKey]
+
+ ServerInfoKey='system os'
+ if ServerInfoDict.has_key(ServerInfoKey):
+ ServerSystemOS=ServerInfoDict[ServerInfoKey]
+
+ ServerInfoKey='system name'
+ if ServerInfoDict.has_key(ServerInfoKey):
+ ServerSystemName=ServerInfoDict[ServerInfoKey]
+
+ ServerInfoKey='svn revision'
+ if ServerInfoDict.has_key(ServerInfoKey):
+ ServerSvnRevision=ServerInfoDict[ServerInfoKey]
+
+ else:
+ ServerInfoDict='No key found (%s/%s)' % (DIRECTORY_INSTANCE_DIR,OPENDSNAME)
+
+ testlog=open('%s/tests-log.xml' % TMPDIR,'a')
+ testlog.seek(0,2)
+ testlog.write(' </results>\n')
+ testlog.write(' <identification>\n')
+ testlog.write(' <version>\n')
+ testlog.write(' %s\n' % ServerVersion)
+ testlog.write(' </version>\n')
+ testlog.write(' <buildid>\n')
+ testlog.write(' %s\n' % ServerBuildId)
+ testlog.write(' </buildid>\n')
+ testlog.write(' <revision>\n')
+ testlog.write(' %s\n' % ServerSvnRevision)
+ testlog.write(' </revision>\n')
+ testlog.write(' <platform>\n')
+ testlog.write(' %s\n' % ServerSystemOS)
+ testlog.write(' </platform>\n')
+ testlog.write(' <jvm-version>\n')
+ testlog.write(' %s\n' % ServerJVMVersion)
+ testlog.write(' </jvm-version>\n')
+ testlog.write(' <jvm-vendor>\n')
+ testlog.write(' %s\n' % ServerJVMVendor)
+ testlog.write(' </jvm-vendor>\n')
+ testlog.write(' </identification>\n')
+ testlog.write(' </functional-tests>\n')
+ testlog.write('</qa>\n')
+ testlog.close()
+ </script>
+ </sequence>
+ </function>
+</stax>
diff --git a/opendj-sdk/opends/tests/stress-tests/testcases/import_ldif/runTestJob.xml b/opendj-sdk/opends/tests/stress-tests/testcases/import_ldif/runTestJob.xml
new file mode 100755
index 0000000..5ae3fd8
--- /dev/null
+++ b/opendj-sdk/opends/tests/stress-tests/testcases/import_ldif/runTestJob.xml
@@ -0,0 +1,524 @@
+<?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="start_job"/>
+ <function name="start_job">
+ <function-single-arg>
+ <function-optional-arg name="config" default="''"/>
+ </function-single-arg>
+
+ <sequence>
+ <script>
+ STAXLogMessage = 1
+ </script>
+
+ <script>
+ if config:
+ import os, sys
+ myconfigpath,myconfigfile=os.path.split(config)
+ sys.path.append("%s" % myconfigpath )
+ from config import *
+ else:
+ myconfigpath='%s/config' % TESTS_DIR
+ myconfigfile='config.py'
+ </script>
+
+ <job name="'Job: %s %s' % (STAF_REMOTE_HOSTNAME,TEST_OS_STRING) " monitor="1" clearlogs="'Enabled'" logtcstartstop="'Enabled'">
+ <job-file>'%s/testcases/runStressTests.xml' % TESTS_DIR</job-file>
+ <job-scriptfiles machine="STAF_LOCAL_HOSTNAME">['%s/%s' % (myconfigpath,myconfigfile) ]</job-scriptfiles>
+ <job-action>
+ <log>'Started sub-job %s on %s' % (STAXSubJobID,STAF_REMOTE_HOSTNAME)</log>
+ </job-action>
+ </job>
+
+ <if expr="RC == 0">
+ <message>
+ 'Sub-job %s completed. Result: %s' % (STAXSubJobID, STAXResult)
+ </message>
+ <else>
+ <sequence>
+ <message log="1" level="'Error'">'Sub-job %s could not be started. RC: %s Result: %s' % (STAXSubJobID,RC,STAFResult)</message>
+ <return>1</return>
+ </sequence>
+ </else>
+ </if>
+
+ <!--- Import required shared xml libraries -->
+ <import machine="STAF_LOCAL_HOSTNAME"
+ file="'%s/stafcmd.xml' % TESTS_FUNCTIONS_DIR" />
+
+ <!--
+ dirty workaround because utils.xml now depends on environment.xml
+ to avoid loading environment.xml I'll just set the required vars here
+ allegedly ugly
+ -=arnaud=-
+ -->
+ <script>
+ NO_CHECK = 'noCheck'
+ </script>
+ <import machine="STAF_LOCAL_HOSTNAME"
+ file="'%s/utils.xml' % (TESTS_FUNCTIONS_DIR)" />
+
+ <!-- Get Directory Server Variables -->
+ <call function="'GetVar'">
+ { 'location' : STAF_REMOTE_HOSTNAME,
+ 'type' : 'shared',
+ 'variable' : 'Job%s_ServerInfo' % STAXSubJobID
+ }
+ </call>
+
+ <if expr="RC != 0">
+ <script>
+ STAFResult='{}'
+ </script>
+ </if>
+
+ <!-- Build the Servers Information Dictionary -->
+ <script>
+
+ ServersInfoDict=eval(STAFResult)
+
+ ServerVersion='unknown'
+ ServerBuildId='unknown'
+ ServerJavaVersion='unknown'
+ ServerJavaVendor='unknown'
+ ServerJVMVersion='unknown'
+ ServerJVMVendor='unknown'
+ ServerSystemOS='unknown'
+ ServerSystemName='unknown'
+ ServerSvnRevision='unknown'
+
+ if ServersInfoDict.has_key('%s/%s' % (DIRECTORY_INSTANCE_DIR,OPENDSNAME)):
+ ServerInfoDict=ServersInfoDict['%s/%s' % (DIRECTORY_INSTANCE_DIR,OPENDSNAME)]
+
+ ServerInfoKey='server version'
+ if ServerInfoDict.has_key(ServerInfoKey):
+ ServerVersion=ServerInfoDict[ServerInfoKey]
+
+ ServerInfoKey='server buildid'
+ if ServerInfoDict.has_key(ServerInfoKey):
+ ServerBuildId=ServerInfoDict[ServerInfoKey]
+
+ ServerInfoKey='java version'
+ if ServerInfoDict.has_key(ServerInfoKey):
+ ServerJavaVersion=ServerInfoDict[ServerInfoKey]
+
+ ServerInfoKey='java vendor'
+ if ServerInfoDict.has_key(ServerInfoKey):
+ ServerJavaVendor=ServerInfoDict[ServerInfoKey]
+
+ ServerInfoKey='jvm version'
+ if ServerInfoDict.has_key(ServerInfoKey):
+ ServerJVMVersion=ServerInfoDict[ServerInfoKey]
+
+ ServerInfoKey='jvm vendor'
+ if ServerInfoDict.has_key(ServerInfoKey):
+ ServerJVMVendor=ServerInfoDict[ServerInfoKey]
+
+ ServerInfoKey='system os'
+ if ServerInfoDict.has_key(ServerInfoKey):
+ ServerSystemOS=ServerInfoDict[ServerInfoKey]
+
+ ServerInfoKey='system name'
+ if ServerInfoDict.has_key(ServerInfoKey):
+ ServerSystemName=ServerInfoDict[ServerInfoKey]
+
+ ServerInfoKey='svn revision'
+ if ServerInfoDict.has_key(ServerInfoKey):
+ ServerSvnRevision=ServerInfoDict[ServerInfoKey]
+
+ else:
+ ServerInfoDict='No key found (%s/%s)' % (DIRECTORY_INSTANCE_DIR,OPENDSNAME)
+
+ </script>
+
+ <message>'Server= %s' % ServerInfoDict </message>
+
+ <stafcmd name="'STAF Command: Log Query All'">
+ <location>'%s' % STAF_LOCAL_HOSTNAME </location>
+ <service>'log'</service>
+ <request>
+ 'QUERY ALL MACHINE %s LOGNAME STAX_Job_%s' % (STAXServiceMachine,STAXSubJobID)
+ </request>
+ </stafcmd>
+
+ <if expr="RC == 0">
+ <sequence>
+ <script>
+ resultQuery= STAFResult
+ </script>
+ <message>
+ 'Log Query on STAX_Job_%s Completed. RC=%s' % (STAXSubJobID,RC)
+ </message>
+ </sequence>
+ <else>
+ <sequence>
+ <message log="1" level="'Error'">
+ 'Unable to perform log query on STAX_Job_%s. RC: %s Result: %s' % (STAXSubJobID,RC,STAFResult)
+ </message>
+ <return>1</return>
+ </sequence>
+ </else>
+ </if>
+
+ <!-- Get logsDir Variable -->
+ <call function="'GetVar'">
+ { 'location' : STAF_REMOTE_HOSTNAME,
+ 'type' : 'shared',
+ 'variable' : 'Job%s_LogsDir' % STAXSubJobID
+ }
+ </call>
+
+ <if expr="RC == 0">
+ <script>
+ logsDir=STAFResult
+ </script>
+ <else>
+ <sequence>
+ <message>
+ 'Unable to retrieve LogsDir variable, RC=%s,Result=%s.' % (RC,STAFResult)
+ </message>
+ <script>
+ logsDir='%s' % TMPDIR
+ </script>
+ </sequence>
+ </else>
+ </if>
+
+ <script>
+ logsReportDir='%s/reports' % logsDir
+ </script>
+
+ <call function="'createFolder'">
+ { 'location' : STAF_LOCAL_HOSTNAME,
+ 'foldername' : logsReportDir }
+ </call>
+
+ <!-- Write Text File for results -->
+ <script>
+ textfile= '%s/results.txt' % logsReportDir
+ txtfh=open(textfile,'w')
+ </script>
+
+ <iterate var="line" in="resultQuery">
+
+ <script>
+ txtfh.write('%s\n' % line)
+ </script>
+
+ </iterate>
+
+ <script>
+ txtfh.close()
+ </script>
+
+ <message>
+ 'TEXT Report Written to %s.' % textfile
+ </message>
+
+ <!-- Write XML File for results -->
+ <script>
+ import re
+ xmlfile= '%s/results.xml' % logsReportDir
+ xmlfh=open(xmlfile,'w')
+ errorfile= '%s/results.errors' % logsReportDir
+ errorfh=open(errorfile,'w')
+ </script>
+
+ <!-- Build the test case dictionary object -->
+ <script>
+ testDict={}
+ testCaseList=[]
+ </script>
+
+ <iterate var="element" in="resultQuery">
+ <script>
+ level=element['level']
+ message=element['message']
+ timestamp=element['timestamp']
+
+ startValueDict={}
+ stopValueDict={}
+ statusValueDict={}
+
+ if level == 'Start':
+ tcpattern=re.compile("(Testcase): (.*)")
+ tcmatch = tcpattern.search(message)
+ if tcmatch:
+ tctype=tcmatch.group(1)
+ tcname=tcmatch.group(2)
+ if testDict.has_key(tcname):
+ for key in testDict[tcname].keys():
+ value=testDict[tcname][key]
+ startValueDict[key]=value
+
+ startValueDict['start']=timestamp
+ testDict[tcname]=startValueDict
+
+ testCaseList.append(tcname)
+
+ else:
+ errorfh.write('Warning: No match Start element %s.\n' % element)
+
+ elif level == 'Stop':
+
+ tcpattern=re.compile("(Testcase): (.*), ElapsedTime: (.*)")
+ tcmatch = tcpattern.search(message)
+
+ if tcmatch:
+ tctype=tcmatch.group(1)
+ tcname=tcmatch.group(2)
+ tctime=tcmatch.group(3)
+ if testDict.has_key(tcname):
+ for key in testDict[tcname].keys():
+ value=testDict[tcname][key]
+ stopValueDict[key]=value
+
+ stopValueDict['stop']=timestamp
+ stopValueDict['duration']=tctime
+ testDict[tcname]=stopValueDict
+
+ else:
+ errorfh.write('Warning: No match Stop element %s.\n' % element)
+
+ elif level == 'Status':
+
+ tcpattern=re.compile("(Testcase): (.*), Pass: (.*), Fail: (.*), ElapsedTime: (.*), NumStarts: (.*)")
+ tcmatch = tcpattern.search(message)
+
+ if tcmatch:
+ tctype=tcmatch.group(1)
+ tcname=tcmatch.group(2)
+ tcpass=tcmatch.group(3)
+ tcfail=tcmatch.group(4)
+ tctime=tcmatch.group(5)
+ tcnums=tcmatch.group(6)
+
+ if testDict.has_key(tcname):
+
+ for key in testDict[tcname].keys():
+ value=testDict[tcname][key]
+ statusValueDict[key]=value
+
+ statusValueDict['pass']=tcpass
+ statusValueDict['fail']=tcfail
+ testDict[tcname]=statusValueDict
+
+ else:
+ errorfh.write('Warning: No match Status element %s.\n' % element)
+
+ elif level == 'Info':
+ errorfh.write('Warning: Info element %s.\n' % element)
+
+ else:
+ errorfh.write('Error: Unknown element %s.\n' % element)
+
+ </script>
+ </iterate>
+
+ <!-- XML Report Pre -->
+ <script>
+ xmlfh.write('<qa>\n')
+ xmlfh.write(' <functional-tests>\n')
+ xmlfh.write(' <identification>\n')
+ xmlfh.write(' <version>\n')
+ xmlfh.write(' %s\n' % ServerVersion)
+ xmlfh.write(' </version>\n')
+ xmlfh.write(' <buildid>\n')
+ xmlfh.write(' %s\n' % ServerBuildId)
+ xmlfh.write(' </buildid>\n')
+ xmlfh.write(' <revision>\n')
+ xmlfh.write(' %s\n' % ServerSvnRevision)
+ xmlfh.write(' </revision>\n')
+ xmlfh.write(' <platform>\n')
+ xmlfh.write(' %s\n' % ServerSystemOS)
+ xmlfh.write(' </platform>\n')
+ xmlfh.write(' <jvm-version>\n')
+ xmlfh.write(' %s\n' % ServerJVMVersion)
+ xmlfh.write(' </jvm-version>\n')
+ xmlfh.write(' <jvm-vendor>\n')
+ xmlfh.write(' %s\n' % ServerJVMVendor)
+ xmlfh.write(' </jvm-vendor>\n')
+ xmlfh.write(' </identification>\n')
+ xmlfh.write(' <results>\n')
+ </script>
+
+ <!-- XML Report Results -->
+ <script>
+ for tcname in testCaseList:
+
+ if testDict.has_key(tcname):
+ tcnamesplit=tcname.split(":")
+ if tcnamesplit[0]:
+ testgroup=tcnamesplit[0]
+ if tcnamesplit[1]:
+ testsuite=tcnamesplit[1]
+ else:
+ testsuite=testgroup
+ else:
+ testgroup=tcname
+ testsuite=tcname
+
+ if testDict[tcname].has_key('pass'):
+ tcpass=testDict[tcname]['pass']
+ else:
+ tcpass='0'
+
+ if testDict[tcname].has_key('fail'):
+ tcfail=testDict[tcname]['fail']
+ else:
+ tcfail='0'
+
+ if testDict[tcname].has_key('start'):
+ tcstart=testDict[tcname]['start']
+ else:
+ tcstart='unknown'
+
+ if testDict[tcname].has_key('stop'):
+ tcstop=testDict[tcname]['stop']
+ else:
+ tcstop='unknown'
+
+ if testDict[tcname].has_key('duration'):
+ tcduration=testDict[tcname]['duration']
+ else:
+ duration='unknown'
+
+ else:
+ errorfh.write('No key for testcase %s.\n' % tcname)
+
+ if int(tcfail) == 0 and int(tcpass) > 0:
+ tcresult='pass'
+ elif int(tcfail) == 0 and int(tcpass) == 0:
+ tcresult='unknown'
+ else:
+ tcresult='fail'
+
+ xmlfh.write(' <testgroup name="%s">\n' % testgroup)
+ xmlfh.write(' <testsuite name="%s">\n' % testsuite)
+ xmlfh.write(' <testcase name="%s" result="%s" start="%s" stop="%s" duration="%s"/>\n' % (tcname,tcresult,tcstart,tcstop,tcduration))
+ xmlfh.write(' </testsuite>\n')
+ xmlfh.write(' </testgroup>\n')
+ </script>
+
+ <!-- XML Report Post -->
+ <script>
+ xmlfh.write(' </results>\n')
+ xmlfh.write(' </functional-tests>\n')
+ xmlfh.write('</qa>\n')
+ </script>
+
+ <script>
+ xmlfh.close()
+ errorfh.close()
+ </script>
+
+ <message>
+ 'XML Report Written to %s.' % xmlfile
+ </message>
+
+ <!-- Transform Report XML into HTML -->
+ <script>
+ xslfile= '%s/xsl/gen-alltests-report.xsl' % TESTS_SHARED_DIR
+ htmlfile= '%s/results.html' % logsReportDir
+ </script>
+
+ <message>
+ 'Writing HTML (with stylesheet %s) Report to %s.' % (xslfile,htmlfile)
+ </message>
+
+ <script>
+ _message=''
+ try:
+ from java.io import FileInputStream
+ from java.io import FileOutputStream
+ from java.io import ByteArrayOutputStream
+
+ from javax.xml.transform import TransformerFactory
+ from javax.xml.transform.stream import StreamSource
+ from javax.xml.transform.stream import StreamResult
+
+ xslSource = StreamSource(FileInputStream("%s" % xslfile))
+ xslTemplate = TransformerFactory.newInstance().newTemplates(xslSource)
+ transformer = xslTemplate.newTransformer()
+
+ source = StreamSource(FileInputStream("%s" % xmlfile))
+ result = StreamResult(FileOutputStream("%s" % htmlfile))
+ # the original report
+ transformer.transform(source, result)
+
+ #the new report transformation
+ TransformerFactory.newInstance().newTemplates(StreamSource(FileInputStream("%s/xsl/my-report.xsl" % TESTS_SHARED_DIR))).newTransformer().transform(StreamSource(FileInputStream("%s/tests-log.xml" % TMPDIR)), StreamResult(FileOutputStream("%s/my-report.html" % TMPDIR)))
+ _message='Generated drill-down HTML report'
+ except:
+ _message='Could not generate drill-down HTML report'
+ </script>
+ <message>_message</message>
+ <if expr="SEND_MAIL_AFTER_TEST_RUN == 'TRUE'">
+ <sequence>
+ <message>
+ 'Sending Email Test Report to %s.' % SEND_MAIL_TO
+ </message>
+
+ <script>
+ MailToList= SEND_MAIL_TO.split(",")
+ MailSubject= 'OpenDS Test Report for %s' % STAF_REMOTE_HOSTNAME
+ MailSendTo= ' '
+ </script>
+
+ <iterate var="Recipient" in="MailToList">
+ <script>
+ MailSendTo='to %s %s' % (Recipient,MailSendTo)
+ </script>
+ </iterate>
+
+ <stafcmd name="'STAF Command: Send test report %s' % MailSendTo">
+ <location>'%s' % STAF_LOCAL_HOSTNAME </location>
+ <service>'email'</service>
+ <request>
+ 'send %s contenttype "text/html" file %s subject "%s" noheader' % (MailSendTo,htmlfile,MailSubject)
+ </request>
+ </stafcmd>
+
+ <if expr="RC != 0">
+ <message log="1" level="'Error'">
+ 'Send test report failed. RC: %s STAFResult: %s' % (RC,STAFResult)
+ </message>
+ <else>
+ <message>
+ 'Send test report successful. RC: %s' % (RC)
+ </message>
+ </else>
+ </if>
+ </sequence>
+ </if>
+ </sequence>
+
+ </function>
+</stax>
diff --git a/opendj-sdk/opends/tests/stress-tests/testcases/quickstart/quickstart.xml b/opendj-sdk/opends/tests/stress-tests/testcases/quickstart/quickstart.xml
new file mode 100755
index 0000000..3fc25ef
--- /dev/null
+++ b/opendj-sdk/opends/tests/stress-tests/testcases/quickstart/quickstart.xml
@@ -0,0 +1,82 @@
+<?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_quickstart"/>
+ <function name="main_quickstart">
+ <block name="'quickstart'">
+ <sequence>
+ <!--- 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>
+
+ <message>
+ 'Quickstart: Adding quickstart entries'
+ </message>
+ <call function="'addEntry'">
+ { 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST ,
+ 'dsInstancePort' : DIRECTORY_INSTANCE_PORT ,
+ 'dsInstanceDn' : DIRECTORY_INSTANCE_DN ,
+ 'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD ,
+ 'entryToBeAdded' : '%s/quickstart/quickstart.ldif' % logsRemoteDataDir
+ }
+ </call>
+ <call function="'checkRC'">
+ { 'returncode' : RC ,
+ 'result' : STAXResult }
+ </call>
+
+ <!--- Stop DS -->
+ <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>
+ </block>
+ </function>
+</stax>
--
Gitblit v1.10.0