From b2a31e7655b4e8dbe114d9a21718330b409735f8 Mon Sep 17 00:00:00 2001
From: gary_williams <gary_williams@localhost>
Date: Tue, 05 Jun 2007 09:26:09 +0000
Subject: [PATCH] Issue 606 implement a full re-synchronization through a protocol
---
opends/tests/functional-tests/testcases/replication/basic/replication_basic.xml | 248 +++
opends/tests/functional-tests/shared/functions/staxcmd.xml | 4
opends/tests/functional-tests/testcases/replication/basic/replication_basic_setup.xml | 122 +
opends/tests/functional-tests/testcases/replication/replication.xml | 47
opends/tests/functional-tests/shared/functions/environment.xml | 12
opends/tests/functional-tests/testcases/replication/replication_setup.xml | 114 +
opends/tests/functional-tests/shared/functions/utils.xml | 5
opends/tests/functional-tests/shared/python/replication.py | 38
opends/tests/functional-tests/testcases/setup/setup.xml | 6
opends/tests/functional-tests/config/replication/basic_topology.txt | 0
opends/tests/functional-tests/testcases/runFuncTests.xml | 10
/dev/null | 159 --
opends/tests/functional-tests/shared/functions/baselib.xml | 125
opends/tests/functional-tests/testcases/replication/totalupdate/totalupdate.xml | 172 ++
opends/tests/functional-tests/shared/data/replication/Airius.ldif | 2772 +++++++++++++++++++++++++++++++++++++
opends/tests/functional-tests/shared/functions/dsadm.xml | 330 +++
opends/tests/functional-tests/shared/functions/topology.xml | 82
opends/tests/functional-tests/testcases/replication/replication_cleanup.xml | 93 +
opends/tests/functional-tests/shared/functions/stafcmd.xml | 2
19 files changed, 3,983 insertions(+), 358 deletions(-)
diff --git a/opends/tests/functional-tests/config/synchronization/basic_topology.txt b/opends/tests/functional-tests/config/replication/basic_topology.txt
similarity index 100%
rename from opends/tests/functional-tests/config/synchronization/basic_topology.txt
rename to opends/tests/functional-tests/config/replication/basic_topology.txt
diff --git a/opends/tests/functional-tests/shared/data/replication/Airius.ldif b/opends/tests/functional-tests/shared/data/replication/Airius.ldif
new file mode 100644
index 0000000..a3dd14b
--- /dev/null
+++ b/opends/tests/functional-tests/shared/data/replication/Airius.ldif
@@ -0,0 +1,2772 @@
+dn: o=example
+objectclass: top
+objectclass: organization
+o: example
+
+dn: ou=Groups, o=example
+objectclass: top
+objectclass: organizationalunit
+ou: Groups
+
+dn: cn=Directory Administrators, ou=Groups, o=example
+cn: Directory Administrators
+objectclass: top
+objectclass: groupofuniquenames
+ou: Groups
+uniquemember: uid=kvaughan, ou=People, o=example
+uniquemember: uid=rdaugherty, ou=People, o=example
+uniquemember: uid=hmiller, ou=People, o=example
+
+dn: ou=People, o=example
+objectclass: top
+objectclass: organizationalunit
+ou: People
+
+dn: ou=Special Users,o=example
+objectclass: top
+objectclass: organizationalUnit
+ou: Special Users
+description: Special Administrative Accounts
+
+dn: uid=scarter, ou=People, o=example
+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@airius.com
+telephonenumber: +1 408 555 4798
+facsimiletelephonenumber: +1 408 555 9751
+roomnumber: 4612
+userpassword: sprain
+
+dn: uid=tmorris, ou=People, o=example
+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@airius.com
+telephonenumber: +1 408 555 9187
+facsimiletelephonenumber: +1 408 555 8473
+roomnumber: 4117
+userpassword: irrefutable
+
+dn: uid=kvaughan, ou=People, o=example
+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@airius.com
+telephonenumber: +1 408 555 5625
+facsimiletelephonenumber: +1 408 555 3372
+roomnumber: 2871
+userpassword: bribery
+
+dn: uid=abergin, ou=People, o=example
+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@airius.com
+telephonenumber: +1 408 555 8585
+facsimiletelephonenumber: +1 408 555 7472
+roomnumber: 3472
+userpassword: inflict
+
+dn: uid=dmiller, ou=People, o=example
+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@airius.com
+telephonenumber: +1 408 555 9423
+facsimiletelephonenumber: +1 408 555 0111
+roomnumber: 4135
+userpassword: gosling
+
+dn: uid=gfarmer, ou=People, o=example
+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@airius.com
+telephonenumber: +1 408 555 6201
+facsimiletelephonenumber: +1 408 555 8473
+roomnumber: 1269
+userpassword: ruling
+
+dn: uid=kwinters, ou=People, o=example
+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@airius.com
+telephonenumber: +1 408 555 9069
+facsimiletelephonenumber: +1 408 555 1992
+roomnumber: 4178
+userpassword: forsook
+
+dn: uid=trigden, ou=People, o=example
+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@airius.com
+telephonenumber: +1 408 555 9280
+facsimiletelephonenumber: +1 408 555 8473
+roomnumber: 3584
+userpassword: sensitive
+
+dn: uid=cschmith, ou=People, o=example
+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@airius.com
+telephonenumber: +1 408 555 8011
+facsimiletelephonenumber: +1 408 555 4774
+roomnumber: 0416
+userpassword: hypotenuse
+
+dn: uid=jwallace, ou=People, o=example
+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@airius.com
+telephonenumber: +1 408 555 0319
+facsimiletelephonenumber: +1 408 555 8473
+roomnumber: 1033
+userpassword: linear
+
+dn: uid=jwalker, ou=People, o=example
+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@airius.com
+telephonenumber: +1 408 555 1476
+facsimiletelephonenumber: +1 408 555 1992
+roomnumber: 3915
+userpassword: dogleg
+
+dn: uid=tclow, ou=People, o=example
+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@airius.com
+telephonenumber: +1 408 555 8825
+facsimiletelephonenumber: +1 408 555 1992
+roomnumber: 4376
+userpassword: cardreader
+
+dn: uid=rdaugherty, ou=People, o=example
+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@airius.com
+telephonenumber: +1 408 555 1296
+facsimiletelephonenumber: +1 408 555 1992
+roomnumber: 0194
+userpassword: apples
+
+dn: uid=jreuter, ou=People, o=example
+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@airius.com
+telephonenumber: +1 408 555 1122
+facsimiletelephonenumber: +1 408 555 8721
+roomnumber: 2942
+userpassword: destroy
+
+dn: uid=tmason, ou=People, o=example
+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@airius.com
+telephonenumber: +1 408 555 1596
+facsimiletelephonenumber: +1 408 555 9751
+roomnumber: 1124
+userpassword: squatted
+
+dn: uid=bhall, ou=People, o=example
+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@airius.com
+telephonenumber: +1 408 555 6067
+facsimiletelephonenumber: +1 408 555 0111
+roomnumber: 2511
+userpassword: oranges
+
+dn: uid=btalbot, ou=People, o=example
+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@airius.com
+telephonenumber: +1 408 555 4992
+facsimiletelephonenumber: +1 408 555 8473
+roomnumber: 3532
+userpassword: trident
+
+dn: uid=mward, ou=People, o=example
+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@airius.com
+telephonenumber: +1 408 555 5688
+facsimiletelephonenumber: +1 408 555 0111
+roomnumber: 1707
+userpassword: normal
+
+dn: uid=bjablons, ou=People, o=example
+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@airius.com
+telephonenumber: +1 408 555 8815
+facsimiletelephonenumber: +1 408 555 4774
+roomnumber: 0906
+userpassword: strawberry
+
+dn: uid=jmcFarla, ou=People, o=example
+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@airius.com
+telephonenumber: +1 408 555 2567
+facsimiletelephonenumber: +1 408 555 4774
+roomnumber: 2359
+userpassword: walnut
+
+dn: uid=llabonte, ou=People, o=example
+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@airius.com
+telephonenumber: +1 408 555 0957
+facsimiletelephonenumber: +1 408 555 8473
+roomnumber: 2854
+userpassword: sourdough
+
+dn: uid=jcampaig, ou=People, o=example
+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@airius.com
+telephonenumber: +1 408 555 1660
+facsimiletelephonenumber: +1 408 555 9751
+roomnumber: 4385
+userpassword: grapevine
+
+dn: uid=bhal2, ou=People, o=example
+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@airius.com
+telephonenumber: +1 408 555 4491
+facsimiletelephonenumber: +1 408 555 8473
+roomnumber: 2758
+userpassword: truths
+
+dn: uid=alutz, ou=People, o=example
+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@airius.com
+telephonenumber: +1 408 555 6505
+facsimiletelephonenumber: +1 408 555 4774
+roomnumber: 1327
+userpassword: northward
+
+dn: uid=btalbo2, ou=People, o=example
+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@airius.com
+telephonenumber: +1 408 555 4234
+facsimiletelephonenumber: +1 408 555 9332
+roomnumber: 1205
+userpassword: corduroy
+
+dn: uid=achassin, ou=People, o=example
+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@airius.com
+telephonenumber: +1 408 555 9972
+facsimiletelephonenumber: +1 408 555 3372
+roomnumber: 0466
+userpassword: duopolist
+
+dn: uid=hmiller, ou=People, o=example
+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@airius.com
+telephonenumber: +1 408 555 9804
+facsimiletelephonenumber: +1 408 555 9332
+roomnumber: 4304
+userpassword: hillock
+
+dn: uid=jcampai2, ou=People, o=example
+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@airius.com
+telephonenumber: +1 408 555 7393
+facsimiletelephonenumber: +1 408 555 3372
+roomnumber: 1377
+userpassword: nominee
+
+dn: uid=lulrich, ou=People, o=example
+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@airius.com
+telephonenumber: +1 408 555 8652
+facsimiletelephonenumber: +1 408 555 3825
+roomnumber: 0985
+userpassword: attribution
+
+dn: uid=mlangdon, ou=People, o=example
+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@airius.com
+telephonenumber: +1 408 555 6249
+facsimiletelephonenumber: +1 408 555 9332
+roomnumber: 4471
+userpassword: threat
+
+dn: uid=striplet, ou=People, o=example
+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@airius.com
+telephonenumber: +1 408 555 4519
+facsimiletelephonenumber: +1 408 555 4661
+roomnumber: 3083
+userpassword: compactify
+
+dn: uid=gtriplet, ou=People, o=example
+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@airius.com
+telephonenumber: +1 408 555 2582
+facsimiletelephonenumber: +1 408 555 3372
+roomnumber: 4023
+userpassword: placeable
+
+dn: uid=jfalena, ou=People, o=example
+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@airius.com
+telephonenumber: +1 408 555 8133
+facsimiletelephonenumber: +1 408 555 7472
+roomnumber: 1917
+userpassword: nightly
+
+dn: uid=speterso, ou=People, o=example
+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@airius.com
+telephonenumber: +1 408 555 3613
+facsimiletelephonenumber: +1 408 555 9332
+roomnumber: 3073
+userpassword: quinine
+
+dn: uid=ejohnson, ou=People, o=example
+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@airius.com
+telephonenumber: +1 408 555 3287
+facsimiletelephonenumber: +1 408 555 9332
+roomnumber: 3737
+userpassword: marketwise
+
+dn: uid=prigden, ou=People, o=example
+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@airius.com
+telephonenumber: +1 408 555 5099
+facsimiletelephonenumber: +1 408 555 8473
+roomnumber: 1271
+userpassword: epiphyseal
+
+dn: uid=bwalker, ou=People, o=example
+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@airius.com
+telephonenumber: +1 408 555 5476
+facsimiletelephonenumber: +1 408 555 0111
+roomnumber: 3529
+userpassword: interruptible
+
+dn: uid=kjensen, ou=People, o=example
+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@airius.com
+telephonenumber: +1 408 555 6127
+facsimiletelephonenumber: +1 408 555 8721
+roomnumber: 1944
+userpassword: regulatory
+
+dn: uid=mlott, ou=People, o=example
+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@airius.com
+telephonenumber: +1 408 555 2234
+facsimiletelephonenumber: +1 408 555 9332
+roomnumber: 0498
+userpassword: cognac
+
+dn: uid=cwallace, ou=People, o=example
+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@airius.com
+telephonenumber: +1 408 555 6438
+facsimiletelephonenumber: +1 408 555 8721
+roomnumber: 0349
+userpassword: quintus
+
+dn: uid=tpierce, ou=People, o=example
+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@airius.com
+telephonenumber: +1 408 555 1531
+facsimiletelephonenumber: +1 408 555 9332
+roomnumber: 1383
+userpassword: rascal
+
+dn: uid=rbannist, ou=People, o=example
+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@airius.com
+telephonenumber: +1 408 555 1833
+facsimiletelephonenumber: +1 408 555 4661
+roomnumber: 0983
+userpassword: demonstrate
+
+dn: uid=bplante, ou=People, o=example
+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@airius.com
+telephonenumber: +1 408 555 3550
+facsimiletelephonenumber: +1 408 555 3825
+roomnumber: 4654
+userpassword: tangerine
+
+dn: uid=rmills, ou=People, o=example
+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@airius.com
+telephonenumber: +1 408 555 2072
+facsimiletelephonenumber: +1 408 555 3372
+roomnumber: 3823
+userpassword: condescend
+
+dn: uid=bschneid, ou=People, o=example
+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@airius.com
+telephonenumber: +1 408 555 1012
+facsimiletelephonenumber: +1 408 555 7472
+roomnumber: 4471
+userpassword: biblical
+
+dn: uid=skellehe, ou=People, o=example
+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@airius.com
+telephonenumber: +1 408 555 3480
+facsimiletelephonenumber: +1 408 555 8721
+roomnumber: 1608
+userpassword: sweltering
+
+dn: uid=brentz, ou=People, o=example
+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@airius.com
+telephonenumber: +1 408 555 5526
+facsimiletelephonenumber: +1 408 555 1992
+roomnumber: 0617
+userpassword: diachronic
+
+dn: uid=dsmith, ou=People, o=example
+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@airius.com
+telephonenumber: +1 408 555 9519
+facsimiletelephonenumber: +1 408 555 3372
+roomnumber: 0368
+userpassword: quantitative
+
+dn: uid=scarte2, ou=People, o=example
+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@airius.com
+telephonenumber: +1 408 555 6022
+facsimiletelephonenumber: +1 408 555 9751
+roomnumber: 2013
+userpassword: scooter
+
+dn: uid=dthorud, ou=People, o=example
+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@airius.com
+telephonenumber: +1 408 555 6185
+facsimiletelephonenumber: +1 408 555 7472
+roomnumber: 1128
+userpassword: fulcrum
+
+dn: uid=ekohler, ou=People, o=example
+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@airius.com
+telephonenumber: +1 408 555 1926
+facsimiletelephonenumber: +1 408 555 9332
+roomnumber: 2721
+userpassword: guildhall
+
+dn: uid=lcampbel, ou=People, o=example
+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@airius.com
+telephonenumber: +1 408 555 2537
+facsimiletelephonenumber: +1 408 555 1992
+roomnumber: 2073
+userpassword: impress
+
+dn: uid=tlabonte, ou=People, o=example
+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@airius.com
+telephonenumber: +1 408 555 0058
+facsimiletelephonenumber: +1 408 555 9751
+roomnumber: 1426
+userpassword: express
+
+dn: uid=slee, ou=People, o=example
+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@airius.com
+telephonenumber: +1 408 555 2335
+facsimiletelephonenumber: +1 408 555 4774
+roomnumber: 1806
+userpassword: revertive
+
+dn: uid=bfree, ou=People, o=example
+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@airius.com
+telephonenumber: +1 408 555 8588
+facsimiletelephonenumber: +1 408 555 4774
+roomnumber: 3307
+userpassword: etiquette
+
+dn: uid=tschneid, ou=People, o=example
+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@airius.com
+telephonenumber: +1 408 555 7086
+facsimiletelephonenumber: +1 408 555 8473
+roomnumber: 2292
+userpassword: chaperone
+
+dn: uid=prose, ou=People, o=example
+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@airius.com
+telephonenumber: +1 408 555 9998
+facsimiletelephonenumber: +1 408 555 3825
+roomnumber: 0542
+userpassword: regatta
+
+dn: uid=jhunter, ou=People, o=example
+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@airius.com
+telephonenumber: +1 408 555 7665
+facsimiletelephonenumber: +1 408 555 8473
+roomnumber: 4856
+userpassword: nanometer
+
+dn: uid=ashelton, ou=People, o=example
+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@airius.com
+telephonenumber: +1 408 555 1081
+facsimiletelephonenumber: +1 408 555 7472
+roomnumber: 1987
+userpassword: appointe
+
+dn: uid=mmcinnis, ou=People, o=example
+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@airius.com
+telephonenumber: +1 408 555 9655
+facsimiletelephonenumber: +1 408 555 8721
+roomnumber: 4818
+userpassword: calcify
+
+dn: uid=falbers, ou=People, o=example
+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@airius.com
+telephonenumber: +1 408 555 3094
+facsimiletelephonenumber: +1 408 555 9751
+roomnumber: 1439
+userpassword: degradation
+
+dn: uid=mschneid, ou=People, o=example
+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@airius.com
+telephonenumber: +1 408 555 5017
+facsimiletelephonenumber: +1 408 555 3372
+roomnumber: 3153
+userpassword: motorcycle
+
+dn: uid=pcruse, ou=People, o=example
+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@airius.com
+telephonenumber: +1 408 555 8641
+facsimiletelephonenumber: +1 408 555 9751
+roomnumber: 3967
+userpassword: pauper
+
+dn: uid=tkelly, ou=People, o=example
+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@airius.com
+telephonenumber: +1 408 555 4295
+facsimiletelephonenumber: +1 408 555 1992
+roomnumber: 3107
+userpassword: risible
+
+dn: uid=ahel, ou=People, o=example
+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@airius.com
+telephonenumber: +1 408 555 2666
+facsimiletelephonenumber: +1 408 555 8721
+roomnumber: 0572
+userpassword: sarsaparilla
+
+dn: uid=jburrell, ou=People, o=example
+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@airius.com
+telephonenumber: +1 408 555 0751
+facsimiletelephonenumber: +1 408 555 4774
+roomnumber: 4926
+userpassword: degrease
+
+dn: uid=smason, ou=People, o=example
+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@airius.com
+telephonenumber: +1 408 555 9780
+facsimiletelephonenumber: +1 408 555 0111
+roomnumber: 4971
+userpassword: sensible
+
+dn: uid=ptyler, ou=People, o=example
+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@airius.com
+telephonenumber: +1 408 555 3335
+facsimiletelephonenumber: +1 408 555 4774
+roomnumber: 0327
+userpassword: vinegar
+
+dn: uid=calexand, ou=People, o=example
+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@airius.com
+telephonenumber: +1 408 555 9438
+facsimiletelephonenumber: +1 408 555 3825
+roomnumber: 2884
+userpassword: dauphin
+
+dn: uid=jcruse, ou=People, o=example
+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@airius.com
+telephonenumber: +1 408 555 9482
+facsimiletelephonenumber: +1 408 555 0111
+roomnumber: 0083
+userpassword: bridgework
+
+dn: uid=kcarter, ou=People, o=example
+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@airius.com
+telephonenumber: +1 408 555 4675
+facsimiletelephonenumber: +1 408 555 0111
+roomnumber: 2320
+userpassword: radiosonde
+
+dn: uid=rfish, ou=People, o=example
+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@airius.com
+telephonenumber: +1 408 555 9865
+facsimiletelephonenumber: +1 408 555 8473
+roomnumber: 2317
+userpassword: mailbox
+
+dn: uid=phunt, ou=People, o=example
+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@airius.com
+telephonenumber: +1 408 555 1242
+facsimiletelephonenumber: +1 408 555 0111
+roomnumber: 1183
+userpassword: wastewater
+
+dn: uid=rschneid, ou=People, o=example
+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@airius.com
+telephonenumber: +1 408 555 9908
+facsimiletelephonenumber: +1 408 555 9332
+roomnumber: 4183
+userpassword: decorous
+
+dn: uid=bjensen, ou=People, o=example
+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@airius.com
+telephonenumber: +1 408 555 1862
+facsimiletelephonenumber: +1 408 555 1992
+roomnumber: 0209
+userpassword: hifalutin
+
+dn: uid=jlange, ou=People, o=example
+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@airius.com
+telephonenumber: +1 408 555 0488
+facsimiletelephonenumber: +1 408 555 1992
+roomnumber: 3798
+userpassword: chastity
+
+dn: uid=rulrich, ou=People, o=example
+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@airius.com
+telephonenumber: +1 408 555 5311
+facsimiletelephonenumber: +1 408 555 8721
+roomnumber: 1282
+userpassword: twinkle
+
+dn: uid=rfrancis, ou=People, o=example
+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@airius.com
+telephonenumber: +1 408 555 8157
+facsimiletelephonenumber: +1 408 555 4774
+roomnumber: 3482
+userpassword: hacienda
+
+dn: uid=mwhite, ou=People, o=example
+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@airius.com
+telephonenumber: +1 408 555 9620
+facsimiletelephonenumber: +1 408 555 4661
+roomnumber: 3088
+userpassword: staple
+
+dn: uid=gjensen, ou=People, o=example
+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@airius.com
+telephonenumber: +1 408 555 3299
+facsimiletelephonenumber: +1 408 555 9751
+roomnumber: 4609
+userpassword: primitive
+
+dn: uid=awhite, ou=People, o=example
+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@airius.com
+telephonenumber: +1 408 555 3232
+facsimiletelephonenumber: +1 408 555 8721
+roomnumber: 0142
+userpassword: placeholder
+
+dn: uid=bmaddox, ou=People, o=example
+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@airius.com
+telephonenumber: +1 408 555 7783
+facsimiletelephonenumber: +1 408 555 7472
+roomnumber: 2207
+userpassword: feedback
+
+dn: uid=mtalbot, ou=People, o=example
+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@airius.com
+telephonenumber: +1 408 555 9228
+facsimiletelephonenumber: +1 408 555 8473
+roomnumber: 1415
+userpassword: currant
+
+dn: uid=jbrown, ou=People, o=example
+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@airius.com
+telephonenumber: +1 408 555 6885
+facsimiletelephonenumber: +1 408 555 3825
+roomnumber: 4224
+userpassword: militiamen
+
+dn: uid=jjensen, ou=People, o=example
+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@airius.com
+telephonenumber: +1 408 555 7587
+facsimiletelephonenumber: +1 408 555 8721
+roomnumber: 4882
+userpassword: borderland
+
+dn: uid=mcarter, ou=People, o=example
+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@airius.com
+telephonenumber: +1 408 555 1846
+facsimiletelephonenumber: +1 408 555 4661
+roomnumber: 3819
+userpassword: mainland
+
+dn: uid=dakers, ou=People, o=example
+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@airius.com
+telephonenumber: +1 408 555 4812
+facsimiletelephonenumber: +1 408 555 8721
+roomnumber: 4944
+userpassword: integument
+
+dn: uid=sfarmer, ou=People, o=example
+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@airius.com
+telephonenumber: +1 408 555 4228
+facsimiletelephonenumber: +1 408 555 4661
+roomnumber: 0019
+userpassword: triumphal
+
+dn: uid=dward, ou=People, o=example
+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@airius.com
+telephonenumber: +1 408 555 5322
+facsimiletelephonenumber: +1 408 555 7472
+roomnumber: 3927
+userpassword: armload
+
+dn: uid=tward, ou=People, o=example
+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@airius.com
+telephonenumber: +1 408 555 7202
+facsimiletelephonenumber: +1 408 555 4661
+roomnumber: 2238
+userpassword: cedilla
+
+dn: uid=pshelton, ou=People, o=example
+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@airius.com
+telephonenumber: +1 408 555 6442
+facsimiletelephonenumber: +1 408 555 4661
+roomnumber: 2918
+userpassword: nosedive
+
+dn: uid=jrentz, ou=People, o=example
+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@airius.com
+telephonenumber: +1 408 555 5829
+facsimiletelephonenumber: +1 408 555 1992
+roomnumber: 3025
+userpassword: meander
+
+dn: uid=plorig, ou=People, o=example
+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@airius.com
+telephonenumber: +1 408 555 0624
+facsimiletelephonenumber: +1 408 555 7472
+roomnumber: 1276
+userpassword: calorimeter
+
+dn: uid=ajensen, ou=People, o=example
+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@airius.com
+telephonenumber: +1 408 555 7892
+facsimiletelephonenumber: +1 408 555 0111
+roomnumber: 0784
+userpassword: coltsfoot
+
+dn: uid=kschmith, ou=People, o=example
+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@airius.com
+telephonenumber: +1 408 555 9749
+facsimiletelephonenumber: +1 408 555 3372
+roomnumber: 2221
+userpassword: purvey
+
+dn: uid=pworrell, ou=People, o=example
+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@airius.com
+telephonenumber: +1 408 555 1637
+facsimiletelephonenumber: +1 408 555 7472
+roomnumber: 2449
+userpassword: solicitous
+
+dn: uid=mreuter, ou=People, o=example
+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@airius.com
+telephonenumber: +1 408 555 6879
+facsimiletelephonenumber: +1 408 555 3825
+roomnumber: 1356
+userpassword: oblivious
+
+dn: uid=gtyler, ou=People, o=example
+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@airius.com
+telephonenumber: +1 408 555 1020
+facsimiletelephonenumber: +1 408 555 4774
+roomnumber: 0312
+userpassword: typology
+
+dn: uid=tschmith, ou=People, o=example
+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@airius.com
+telephonenumber: +1 408 555 9626
+facsimiletelephonenumber: +1 408 555 1992
+roomnumber: 4607
+userpassword: compost
+
+dn: uid=bjense2, ou=People, o=example
+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@airius.com
+telephonenumber: +1 408 555 5655
+facsimiletelephonenumber: +1 408 555 4774
+roomnumber: 4294
+userpassword: mortgage
+
+dn: uid=dswain, ou=People, o=example
+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@airius.com
+telephonenumber: +1 408 555 9222
+facsimiletelephonenumber: +1 408 555 1992
+roomnumber: 4396
+userpassword: freedom
+
+dn: uid=ahall, ou=People, o=example
+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@airius.com
+telephonenumber: +1 408 555 6169
+facsimiletelephonenumber: +1 408 555 4774
+roomnumber: 3050
+userpassword: slater
+
+dn: uid=jmuffly, ou=People, o=example
+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@airius.com
+telephonenumber: +1 408 555 5287
+facsimiletelephonenumber: +1 408 555 9751
+roomnumber: 0997
+userpassword: dictate
+
+dn: uid=tjensen, ou=People, o=example
+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@airius.com
+telephonenumber: +1 408 555 8622
+facsimiletelephonenumber: +1 408 555 3825
+roomnumber: 4717
+userpassword: ecosystem
+
+dn: uid=ahunter, ou=People, o=example
+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@airius.com
+telephonenumber: +1 408 555 7713
+facsimiletelephonenumber: +1 408 555 8473
+roomnumber: 1213
+userpassword: egregious
+
+dn: uid=jgoldste, ou=People, o=example
+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@airius.com
+telephonenumber: +1 408 555 5769
+facsimiletelephonenumber: +1 408 555 7472
+roomnumber: 1454
+userpassword: yellow
+
+dn: uid=aworrell, ou=People, o=example
+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@airius.com
+telephonenumber: +1 408 555 1591
+facsimiletelephonenumber: +1 408 555 3825
+roomnumber: 3966
+userpassword: gargoyle
+
+dn: uid=wlutz, ou=People, o=example
+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@airius.com
+telephonenumber: +1 408 555 3358
+facsimiletelephonenumber: +1 408 555 9332
+roomnumber: 4912
+userpassword: bassinet
+
+dn: uid=jlutz, ou=People, o=example
+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@airius.com
+telephonenumber: +1 408 555 4902
+facsimiletelephonenumber: +1 408 555 3825
+roomnumber: 2544
+userpassword: autumn
+
+dn: uid=dlangdon, ou=People, o=example
+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@airius.com
+telephonenumber: +1 408 555 7044
+facsimiletelephonenumber: +1 408 555 8473
+roomnumber: 3263
+userpassword: botulin
+
+dn: uid=aknutson, ou=People, o=example
+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@airius.com
+telephonenumber: +1 408 555 2169
+facsimiletelephonenumber: +1 408 555 4774
+roomnumber: 4736
+userpassword: maltose
+
+dn: uid=kmcinnis, ou=People, o=example
+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@airius.com
+telephonenumber: +1 408 555 8596
+facsimiletelephonenumber: +1 408 555 0111
+roomnumber: 4312
+userpassword: stargaze
+
+dn: uid=tcouzens, ou=People, o=example
+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@airius.com
+telephonenumber: +1 408 555 8401
+facsimiletelephonenumber: +1 408 555 4661
+roomnumber: 3994
+userpassword: tambourine
+
+dn: uid=lstockto, ou=People, o=example
+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@airius.com
+telephonenumber: +1 408 555 0518
+facsimiletelephonenumber: +1 408 555 4774
+roomnumber: 0169
+userpassword: brooklyn
+
+dn: uid=jbourke, ou=People, o=example
+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@airius.com
+telephonenumber: +1 408 555 8541
+facsimiletelephonenumber: +1 408 555 4774
+roomnumber: 0034
+userpassword: brainwash
+
+dn: uid=dlanoway, ou=People, o=example
+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@airius.com
+telephonenumber: +1 408 555 2017
+facsimiletelephonenumber: +1 408 555 8473
+roomnumber: 3540
+userpassword: manhattan
+
+dn: uid=kcope, ou=People, o=example
+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@airius.com
+telephonenumber: +1 408 555 2709
+facsimiletelephonenumber: +1 408 555 8721
+roomnumber: 3040
+userpassword: forfeiture
+
+dn: uid=abarnes, ou=People, o=example
+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@airius.com
+telephonenumber: +1 408 555 9445
+facsimiletelephonenumber: +1 408 555 4661
+roomnumber: 2290
+userpassword: chevron
+
+dn: uid=rjensen, ou=People, o=example
+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@airius.com
+telephonenumber: +1 408 555 5957
+facsimiletelephonenumber: +1 408 555 3825
+roomnumber: 2631
+userpassword: disciplinarian
+
+dn: uid=phun2, ou=People, o=example
+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@airius.com
+telephonenumber: +1 408 555 0342
+facsimiletelephonenumber: +1 408 555 4661
+roomnumber: 0087
+userpassword: absorb
+
+dn: uid=mvaughan, ou=People, o=example
+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@airius.com
+telephonenumber: +1 408 555 4692
+facsimiletelephonenumber: +1 408 555 0111
+roomnumber: 4508
+userpassword: submitted
+
+dn: uid=jlut2, ou=People, o=example
+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@airius.com
+telephonenumber: +1 408 555 9689
+facsimiletelephonenumber: +1 408 555 3825
+roomnumber: 3541
+userpassword: shrank
+
+dn: uid=mjablons, ou=People, o=example
+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@airius.com
+telephonenumber: +1 408 555 0813
+facsimiletelephonenumber: +1 408 555 7472
+roomnumber: 3160
+userpassword: minimal
+
+dn: uid=pchassin, ou=People, o=example
+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@airius.com
+telephonenumber: +1 408 555 2816
+facsimiletelephonenumber: +1 408 555 3372
+roomnumber: 4524
+userpassword: barbital
+
+dn: uid=dcope, ou=People, o=example
+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@airius.com
+telephonenumber: +1 408 555 9813
+facsimiletelephonenumber: +1 408 555 8721
+roomnumber: 1737
+userpassword: snifter
+
+dn: uid=jrent2, ou=People, o=example
+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@airius.com
+telephonenumber: +1 408 555 2523
+facsimiletelephonenumber: +1 408 555 8473
+roomnumber: 4405
+userpassword: tachistoscope
+
+dn: uid=tcruse, ou=People, o=example
+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@airius.com
+telephonenumber: +1 408 555 5980
+facsimiletelephonenumber: +1 408 555 4774
+roomnumber: 4191
+userpassword: flinty
+
+dn: uid=eward, ou=People, o=example
+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@airius.com
+telephonenumber: +1 408 555 2320
+facsimiletelephonenumber: +1 408 555 7472
+roomnumber: 4874
+userpassword: episcopal
+
+dn: uid=ttully, ou=People, o=example
+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@airius.com
+telephonenumber: +1 408 555 2274
+facsimiletelephonenumber: +1 408 555 0111
+roomnumber: 3924
+userpassword: schooner
+
+dn: uid=charvey, ou=People, o=example
+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@airius.com
+telephonenumber: +1 408 555 1815
+facsimiletelephonenumber: +1 408 555 3825
+roomnumber: 4583
+userpassword: journalese
+
+dn: uid=rfisher, ou=People, o=example
+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@airius.com
+telephonenumber: +1 408 555 1506
+facsimiletelephonenumber: +1 408 555 1992
+roomnumber: 1579
+userpassword: pomegranate
+
+dn: uid=alangdon, ou=People, o=example
+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@airius.com
+telephonenumber: +1 408 555 8289
+facsimiletelephonenumber: +1 408 555 9332
+roomnumber: 2254
+userpassword: muzzle
+
+dn: uid=drose, ou=People, o=example
+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@airius.com
+telephonenumber: +1 408 555 3963
+facsimiletelephonenumber: +1 408 555 0111
+roomnumber: 4012
+userpassword: gubernatorial
+
+dn: uid=polfield, ou=People, o=example
+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@airius.com
+telephonenumber: +1 408 555 8231
+facsimiletelephonenumber: +1 408 555 8473
+roomnumber: 1376
+userpassword: monologue
+
+dn: uid=awalker, ou=People, o=example
+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@airius.com
+telephonenumber: +1 408 555 9199
+facsimiletelephonenumber: +1 408 555 3372
+roomnumber: 0061
+userpassword: detonable
+
+dn: uid=lrentz, ou=People, o=example
+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@airius.com
+telephonenumber: +1 408 555 2019
+facsimiletelephonenumber: +1 408 555 8473
+roomnumber: 2203
+userpassword: calcium
+
+dn: uid=jvaughan, ou=People, o=example
+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@airius.com
+telephonenumber: +1 408 555 4543
+facsimiletelephonenumber: +1 408 555 9751
+roomnumber: 1734
+userpassword: appoint
+
+dn: uid=bfrancis, ou=People, o=example
+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@airius.com
+telephonenumber: +1 408 555 9111
+facsimiletelephonenumber: +1 408 555 9751
+roomnumber: 3743
+userpassword: holystone
+
+dn: uid=ewalker, ou=People, o=example
+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@airius.com
+telephonenumber: +1 408 555 6387
+facsimiletelephonenumber: +1 408 555 8721
+roomnumber: 2295
+userpassword: beguile
+
+dn: uid=tjames, ou=People, o=example
+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@airius.com
+telephonenumber: +1 408 555 2458
+facsimiletelephonenumber: +1 408 555 9751
+roomnumber: 0730
+userpassword: turtle
+
+dn: uid=brigden, ou=People, o=example
+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@airius.com
+telephonenumber: +1 408 555 5263
+facsimiletelephonenumber: +1 408 555 1992
+roomnumber: 1643
+userpassword: purple
+
+dn: uid=ecruse, ou=People, o=example
+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@airius.com
+telephonenumber: +1 408 555 0648
+facsimiletelephonenumber: +1 408 555 9751
+roomnumber: 4233
+userpassword: platelet
+
+dn: uid=rjense2, ou=People, o=example
+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@airius.com
+telephonenumber: +1 408 555 9045
+facsimiletelephonenumber: +1 408 555 1992
+roomnumber: 1984
+userpassword: transpose
+
+dn: uid=rhunt, ou=People, o=example
+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@airius.com
+telephonenumber: +1 408 555 0139
+facsimiletelephonenumber: +1 408 555 8473
+roomnumber: 0718
+userpassword: becloud
+
+dn: uid=bparker, ou=People, o=example
+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@airius.com
+telephonenumber: +1 408 555 4647
+facsimiletelephonenumber: +1 408 555 9332
+roomnumber: 1148
+userpassword: lenticular
+
+dn: uid=ealexand, ou=People, o=example
+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@airius.com
+telephonenumber: +1 408 555 5563
+facsimiletelephonenumber: +1 408 555 9751
+roomnumber: 2434
+userpassword: galactose
+
+dn: uid=mtyler, ou=People, o=example
+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@airius.com
+telephonenumber: +1 408 555 7907
+facsimiletelephonenumber: +1 408 555 4661
+roomnumber: 2701
+userpassword: instantiate
+
+dn: uid=elott, ou=People, o=example
+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@airius.com
+telephonenumber: +1 408 555 0932
+facsimiletelephonenumber: +1 408 555 9751
+roomnumber: 3906
+userpassword: holdout
+
+dn: uid=cnewport, ou=People, o=example
+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@airius.com
+telephonenumber: +1 408 555 0066
+facsimiletelephonenumber: +1 408 555 9332
+roomnumber: 0056
+userpassword: expertise
+
+dn: uid=jvedder, ou=People, o=example
+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@airius.com
+telephonenumber: +1 408 555 4668
+facsimiletelephonenumber: +1 408 555 0111
+roomnumber: 3445
+userpassword: befitting
+
+dn: cn=Accounting Managers,ou=groups,o=example
+objectclass: top
+objectclass: groupOfUniqueNames
+cn: Accounting Managers
+ou: groups
+uniquemember: uid=scarter, ou=People, o=example
+uniquemember: uid=tmorris, ou=People, o=example
+description: People who can manage accounting entries
+
+dn: cn=HR Managers,ou=groups,o=example
+objectclass: top
+objectclass: groupOfUniqueNames
+cn: HR Managers
+ou: groups
+uniquemember: uid=kvaughan, ou=People, o=example
+uniquemember: uid=cschmith, ou=People, o=example
+description: People who can manage HR entries
+
+dn: cn=QA Managers,ou=groups,o=example
+objectclass: top
+objectclass: groupOfUniqueNames
+cn: QA Managers
+ou: groups
+uniquemember: uid=abergin, ou=People, o=example
+uniquemember: uid=jwalker, ou=People, o=example
+description: People who can manage QA entries
+
+dn: cn=PD Managers,ou=groups,o=example
+objectclass: top
+objectclass: groupOfUniqueNames
+cn: PD Managers
+ou: groups
+uniquemember: uid=kwinters, ou=People, o=example
+uniquemember: uid=trigden, ou=People, o=example
+description: People who can manage engineer entries
+
+dn: ou=Netscape Servers,o=example
+objectclass: top
+objectclass: organizationalUnit
+ou: Netscape Servers
+description: Standard branch for SuiteSpot Server registration
+
diff --git a/opends/tests/functional-tests/shared/functions/baselib.xml b/opends/tests/functional-tests/shared/functions/baselib.xml
index fc435a0..6435bd8 100755
--- a/opends/tests/functional-tests/shared/functions/baselib.xml
+++ b/opends/tests/functional-tests/shared/functions/baselib.xml
@@ -64,36 +64,45 @@
'dsSystemInfo' : 'true' }
</call>
- <script>
- DSInfo.SystemList=STAXResult[1].split('\n')
+ <if expr="RC != 0">
+ <message>
+ 'Unable to obtain system information variables for %s %s.' % (mylocation,mypath)
+ </message>
+ <else>
+ <script>
+ DSInfo.SystemList=STAXResult[1].split('\n')
+
+ DSInfo.ServerDict['server version']= \
+ DSInfo.getServerVersion(DSInfo.SystemList[0])
+
+ for DSInfo.line in DSInfo.SystemList:
+ DSInfo.key=DSInfo.line[0:DSInfo.line.find(':')].strip()
+ DSInfo.value= \
+ DSInfo.line[DSInfo.line.find(':')+1:len(DSInfo.line)].strip()
+ DSInfo.SystemDict[DSInfo.key]=DSInfo.value
+
+ DSInfo.ServerDict['server buildid']= \
+ DSInfo.getServerValueFromKey('Build ID',DSInfo.SystemDict)
+ DSInfo.ServerDict['java version']= \
+ DSInfo.getServerValueFromKey('Java Version',DSInfo.SystemDict)
+ DSInfo.ServerDict['java vendor']= \
+ DSInfo.getServerValueFromKey('Java Vendor',DSInfo.SystemDict)
+ DSInfo.ServerDict['jvm version']= \
+ DSInfo.getServerValueFromKey('JVM Version',DSInfo.SystemDict)
+ DSInfo.ServerDict['jvm vendor']= \
+ DSInfo.getServerValueFromKey('JVM Vendor',DSInfo.SystemDict)
+ DSInfo.ServerDict['system os']= \
+ DSInfo.getServerValueFromKey('Operating System',DSInfo.SystemDict)
+ DSInfo.ServerDict['system name']= \
+ DSInfo.getServerValueFromKey('System Name',DSInfo.SystemDict)
+
+ DSInfoServersDict[dsPath]=DSInfo.ServerDict
+ </script>
+
+ </else>
- DSInfo.ServerDict['server version']= \
- DSInfo.getServerVersion(DSInfo.SystemList[0])
-
- for DSInfo.line in DSInfo.SystemList:
- DSInfo.key=DSInfo.line[0:DSInfo.line.find(':')].strip()
- DSInfo.value= \
- DSInfo.line[DSInfo.line.find(':')+1:len(DSInfo.line)].strip()
- DSInfo.SystemDict[DSInfo.key]=DSInfo.value
-
- DSInfo.ServerDict['server buildid']= \
- DSInfo.getServerValueFromKey('Build ID',DSInfo.SystemDict)
- DSInfo.ServerDict['java version']= \
- DSInfo.getServerValueFromKey('Java Version',DSInfo.SystemDict)
- DSInfo.ServerDict['java vendor']= \
- DSInfo.getServerValueFromKey('Java Vendor',DSInfo.SystemDict)
- DSInfo.ServerDict['jvm version']= \
- DSInfo.getServerValueFromKey('JVM Version',DSInfo.SystemDict)
- DSInfo.ServerDict['jvm vendor']= \
- DSInfo.getServerValueFromKey('JVM Vendor',DSInfo.SystemDict)
- DSInfo.ServerDict['system os']= \
- DSInfo.getServerValueFromKey('Operating System',DSInfo.SystemDict)
- DSInfo.ServerDict['system name']= \
- DSInfo.getServerValueFromKey('System Name',DSInfo.SystemDict)
-
- DSInfoServersDict[dsPath]=DSInfo.ServerDict
- </script>
-
+ </if>
+
<!-- Obtain the secret variables for the system from start-ds -->
<call function="'StartDsWithScript'">
{ 'location' : mylocation,
@@ -101,30 +110,40 @@
'dsBuildInfo' : 'true' }
</call>
- <script>
- DSInfo.SystemList=STAXResult[1].split('\n')
-
- for DSInfo.line in DSInfo.SystemList:
- DSInfo.key=DSInfo.line[0:DSInfo.line.find(':')].strip()
- DSInfo.value= \
- DSInfo.line[DSInfo.line.find(':')+1:len(DSInfo.line)].strip()
- DSInfo.SystemDict[DSInfo.key]=DSInfo.value
-
- DSInfo.ServerDict['svn revision']= \
- DSInfo.getServerValueFromKey('Revision Number',DSInfo.SystemDict)
- DSInfo.ServerDict['major version']= \
- DSInfo.getServerValueFromKey('Major Version',DSInfo.SystemDict)
- DSInfo.ServerDict['minor version']= \
- DSInfo.getServerValueFromKey('Minor Version',DSInfo.SystemDict)
- DSInfo.ServerDict['point version']= \
- DSInfo.getServerValueFromKey('Point Version',DSInfo.SystemDict)
- DSInfo.ServerDict['version qualifier']= \
- DSInfo.getServerValueFromKey('Version Qualifier',DSInfo.SystemDict)
- DSInfo.ServerDict['fix ids']= \
- DSInfo.getServerValueFromKey('Fix IDs',DSInfo.SystemDict)
- DSInfo.ServerDict['debug build']= \
- DSInfo.getServerValueFromKey('Debug Build',DSInfo.SystemDict)
- </script>
+ <if expr="RC != 0">
+ <message>
+ 'Unable to obtain build information variables for %s %s.' % (mylocation,mypath)
+ </message>
+ <else>
+
+ <script>
+ DSInfo.SystemList=STAXResult[1].split('\n')
+
+ for DSInfo.line in DSInfo.SystemList:
+ DSInfo.key=DSInfo.line[0:DSInfo.line.find(':')].strip()
+ DSInfo.value= \
+ DSInfo.line[DSInfo.line.find(':')+1:len(DSInfo.line)].strip()
+ DSInfo.SystemDict[DSInfo.key]=DSInfo.value
+
+ DSInfo.ServerDict['svn revision']= \
+ DSInfo.getServerValueFromKey('Revision Number',DSInfo.SystemDict)
+ DSInfo.ServerDict['major version']= \
+ DSInfo.getServerValueFromKey('Major Version',DSInfo.SystemDict)
+ DSInfo.ServerDict['minor version']= \
+ DSInfo.getServerValueFromKey('Minor Version',DSInfo.SystemDict)
+ DSInfo.ServerDict['point version']= \
+ DSInfo.getServerValueFromKey('Point Version',DSInfo.SystemDict)
+ DSInfo.ServerDict['version qualifier']= \
+ DSInfo.getServerValueFromKey('Version Qualifier',DSInfo.SystemDict)
+ DSInfo.ServerDict['fix ids']= \
+ DSInfo.getServerValueFromKey('Fix IDs',DSInfo.SystemDict)
+ DSInfo.ServerDict['debug build']= \
+ DSInfo.getServerValueFromKey('Debug Build',DSInfo.SystemDict)
+ </script>
+
+ </else>
+
+ </if>
</sequence>
diff --git a/opends/tests/functional-tests/shared/functions/dsadm.xml b/opends/tests/functional-tests/shared/functions/dsadm.xml
index b1d635b..44c1d3c 100755
--- a/opends/tests/functional-tests/shared/functions/dsadm.xml
+++ b/opends/tests/functional-tests/shared/functions/dsadm.xml
@@ -28,9 +28,9 @@
<stax>
<!-- This function configures DS using the configure-ds script -->
- <function name="ConfigureDsWithScript">
+ <function name="SetUpDsWithScript">
<function-prolog>
- This function configures a Directory Server using a script
+ This function sets up a Directory Server using a script
</function-prolog>
<function-map-args>
<function-arg-def name="location" type="optional" default="'%s' % STAXServiceMachine">
@@ -129,7 +129,7 @@
'%s %s' % (STAFCmd, STAFCmdParams)
</message>
- <process name="'Configure DS Script'">
+ <process name="'Setup DS Script'">
<location>'%s' % location</location>
<command>'%s' % STAFCmd</command>
<parms>'%s' % STAFCmdParams</parms>
@@ -1037,7 +1037,7 @@
<!-- Local variables -->
<script>
- mylocation=location
+ myLocation=location
taskLdif='%s/../functional-tests/shared/data/import-task.ldif' % dsPath
tmpTaskLdif='%s/import-task.ldif' % TMP_DATA_DIR
taskDN='ds-task-id=%s,cn=Scheduled Tasks,cn=Tasks' % taskID
@@ -1102,12 +1102,12 @@
{ 'location' : STAXServiceMachine,
'srcfile' : tmpTaskLdif,
'destfile' : taskLdif,
- 'remotehost' : mylocation }
+ 'remotehost' : myLocation }
</call>
<!-- Start the task using ldap task interface -->
<call function="'StartLdapTask'">
- { 'location' : mylocation,
+ { 'location' : myLocation,
'taskLabel' : 'Online Import Task',
'dsHost' : dsInstanceHost,
'dsPort' : dsInstancePort,
@@ -1118,7 +1118,7 @@
<!-- Check that the ldap task is completed -->
<call function="'CheckLdapTask'">
- { 'location' : mylocation,
+ { 'location' : myLocation,
'dsTaskDn' : taskDN,
'dsHost' : dsInstanceHost,
'dsPort' : dsInstancePort,
@@ -1214,7 +1214,8 @@
<!-- Local variables -->
<script>
- mylocation=location
+ myLocation=location
+ myPath=dsPath
myhost=dsHost
myport=dsPort
mydn=dsDn
@@ -1234,12 +1235,18 @@
<sequence>
<!-- StartDS -->
<call function="'StartDsWithScript'">
- { 'location' : mylocation }
+ { 'location' : myLocation,
+ 'dsPath' : myPath }
</call>
<!-- Wait for DS to start -->
<call function="'isAlive'">
- { 'location' : mylocation,
+ { 'location' : myLocation,
+ 'dsPath' : myPath,
+ 'dsInstanceHost' : myhost ,
+ 'dsInstancePort' : myport ,
+ 'dsInstanceDn' : mydn ,
+ 'dsInstancePswd' : mypswd ,
'noOfLoops' : 5 ,
'noOfMilliSeconds' : 2000 }
</call>
@@ -1251,7 +1258,8 @@
<iterate var="expectedEntry" in="expectedEntries">
<sequence>
<call function="'SearchObject'">
- { 'location' : mylocation ,
+ { 'location' : myLocation ,
+ 'dsPath' : myPath,
'dsInstanceHost' : myhost ,
'dsInstancePort' : myport ,
'dsInstanceDn' : mydn ,
@@ -1274,7 +1282,8 @@
<break/>
</if>
<call function="'SearchObject'">
- { 'location' : mylocation ,
+ { 'location' : myLocation ,
+ 'dsPath' : myPath,
'dsInstanceHost' : myhost ,
'dsInstancePort' : myport ,
'dsInstanceDn' : mydn ,
@@ -1295,10 +1304,11 @@
<if expr="stopDS == 'yes'">
<!-- StopDS -->
<call function="'StopDsWithScript'">
- { 'location' : mylocation ,
- 'dsHost' : myhost ,
- 'dsPort' : myport ,
- 'dsBindDN' : mydn ,
+ { 'location' : myLocation ,
+ 'dsPath' : myPath,
+ 'dsHost' : myhost ,
+ 'dsPort' : myport ,
+ 'dsBindDN' : mydn ,
'dsBindPwd' : mypswd }
</call>
</if>
@@ -1503,7 +1513,7 @@
<!-- Local variables -->
<script>
- mylocation=location
+ myLocation=location
taskLdif='%s/../functional-tests/shared/data/export-task.ldif' % dsPath
tmpTaskLdif='%s/export-task.ldif' % TMP_DATA_DIR
taskDN='ds-task-id=%s,cn=Scheduled Tasks,cn=Tasks' % taskID
@@ -1562,12 +1572,12 @@
{ 'location' : STAXServiceMachine,
'srcfile' : tmpTaskLdif,
'destfile' : taskLdif,
- 'remotehost' : mylocation }
+ 'remotehost' : myLocation }
</call>
<!-- Start the task using ldap task interface -->
<call function="'StartLdapTask'">
- { 'location' : mylocation,
+ { 'location' : myLocation,
'taskLabel' : 'Online Export Task',
'dsHost' : dsInstanceHost,
'dsPort' : dsInstancePort,
@@ -1578,7 +1588,7 @@
<!-- Check that the task is completed -->
<call function="'CheckLdapTask'">
- { 'location' : mylocation,
+ { 'location' : myLocation,
'dsTaskDn' : taskDN,
'dsHost' : dsInstanceHost,
'dsPort' : dsInstancePort,
@@ -1631,13 +1641,13 @@
<!-- Local variables -->
<script>
- mylocation=location
+ myLocation=location
</script>
<message>
'backup%s -n %s -d %s %s' % (fileExt,backEnd,backupDir,extraParams)
</message>
<process name="'Offline Backup'">
- <location>'%s' % mylocation </location>
+ <location>'%s' % myLocation </location>
<command>'%s/backup%s' % (dsBinPath,fileExt)</command>
<parms>'-d %s -n %s %s' % (backupDir,backEnd,extraParams)</parms>
<workdir>'%s' % dsBinPath</workdir>
@@ -1765,7 +1775,7 @@
<sequence>
<script>
- mylocation=location
+ myLocation=location
taskLdif='%s/../functional-tests/shared/data/backup-task.ldif' % dsPath
tmpTaskLdif='%s/backup-task.ldif' % TMP_DATA_DIR
taskDN='ds-task-id=%s,cn=Scheduled Tasks,cn=Tasks' % taskID
@@ -1812,12 +1822,12 @@
{ 'location' : STAXServiceMachine,
'srcfile' : tmpTaskLdif,
'destfile' : taskLdif,
- 'remotehost' : mylocation }
+ 'remotehost' : myLocation }
</call>
<!-- Start the task using ldap task interface -->
<call function="'StartLdapTask'">
- { 'location' : mylocation,
+ { 'location' : myLocation,
'taskLabel' : 'Online Backup Task',
'dsHost' : dsInstanceHost,
'dsPort' : dsInstancePort,
@@ -1828,7 +1838,7 @@
<!-- Check that the ldap task is completed -->
<call function="'CheckLdapTask'">
- { 'location' : mylocation,
+ { 'location' : myLocation,
'dsTaskDn' : taskDN,
'dsHost' : dsInstanceHost,
'dsPort' : dsInstancePort,
@@ -1875,14 +1885,14 @@
<!-- Local variables -->
<script>
- mylocation=location
+ myLocation=location
</script>
<message>
'restore%s -d %s %s' % (fileExt,backupDir,extraParams)
</message>
<process name="'Offline restore'">
- <location>'%s' % mylocation </location>
+ <location>'%s' % myLocation </location>
<command>'%s/restore%s' % (dsBinPath,fileExt)</command>
<parms>'-d %s %s' % (backupDir,extraParams)</parms>
<workdir>'%s' % dsBinPath</workdir>
@@ -1975,7 +1985,7 @@
<sequence>
<script>
- mylocation=location
+ myLocation=location
taskLdif='%s/../functional-tests/shared/data/restore-task.ldif' % dsPath
tmpTaskLdif='%s/restore-task.ldif' % TMP_DATA_DIR
taskDN='ds-task-id=%s,cn=Scheduled Tasks,cn=Tasks' % taskID
@@ -2014,12 +2024,12 @@
{ 'location' : STAXServiceMachine,
'srcfile' : tmpTaskLdif,
'destfile' : taskLdif,
- 'remotehost' : mylocation }
+ 'remotehost' : myLocation }
</call>
<!-- Start the task using ldap task interface -->
<call function="'StartLdapTask'">
- { 'location' : mylocation,
+ { 'location' : myLocation,
'taskLabel' : 'Online Restore Task',
'dsHost' : dsInstanceHost,
'dsPort' : dsInstancePort,
@@ -2030,7 +2040,7 @@
<!-- Check that the ldap task is completed -->
<call function="'CheckLdapTask'">
- { 'location' : mylocation,
+ { 'location' : myLocation,
'dsTaskDn' : taskDN,
'dsHost' : dsInstanceHost,
'dsPort' : dsInstancePort,
@@ -2102,7 +2112,7 @@
<sequence>
<script>
- mylocation=location
+ myLocation=location
taskLdif='%s/../functional-tests/shared/data/schema-task.ldif' % dsPath
tmpTaskLdif='%s/schema-task.ldif' % TMP_DATA_DIR
taskDN='ds-task-id=%s,cn=Scheduled Tasks,cn=Tasks' % taskID
@@ -2138,21 +2148,21 @@
{ 'location' : STAXServiceMachine,
'srcfile' : tmpTaskLdif,
'destfile' : taskLdif,
- 'remotehost' : mylocation }
+ 'remotehost' : myLocation }
</call>
<!-- Copy the schema update ldif to remote host's config/schema directory -->
<message>'Copy schema update ldif file.'</message>
<call function="'copyFile'">
- { 'location' : mylocation,
+ { 'location' : myLocation,
'srcfile' : '%s/schema/ldifs/%s' % (STAGED_DATA_DIR,ldifFile),
'destfile' : '%s/%s/config/schema/%s' % (DIRECTORY_INSTANCE_DIR,OPENDSNAME,ldifFile),
- 'remotehost' : mylocation }
+ 'remotehost' : myLocation }
</call>
<!-- Start the task using ldap task interface -->
<call function="'StartLdapTask'">
- { 'location' : mylocation,
+ { 'location' : myLocation,
'taskLabel' : 'Online Schema Task',
'dsHost' : dsInstanceHost,
'dsPort' : dsInstancePort,
@@ -2163,7 +2173,7 @@
<!-- Check that the ldap task is completed -->
<call function="'CheckLdapTask'">
- { 'location' : mylocation,
+ { 'location' : myLocation,
'dsTaskDn' : taskDN,
'dsHost' : dsInstanceHost,
'dsPort' : dsInstancePort,
@@ -2174,6 +2184,185 @@
</sequence>
</function>
+ <!-- Total Update Task Function -->
+ <function name="TotalUpdateTask">
+
+ <function-prolog>
+ This function performs a total update of a replication domain
+ </function-prolog>
+
+ <function-map-args>
+ <function-arg-def name="location" type="optional" default="'%s' % STAF_REMOTE_HOSTNAME">
+ <function-arg-description>
+ Location of target host
+ </function-arg-description>
+ <function-arg-property name="type" value="hostname"/>
+ </function-arg-def>
+ <function-arg-def name="dsPath" type="optional" default="'%s/%s' % (DIRECTORY_INSTANCE_DIR,OPENDSNAME)">
+ <function-arg-description>
+ Pathname to installation root
+ </function-arg-description>
+ <function-arg-property name="type" value="pathname"/>
+ </function-arg-def>
+ <function-arg-def name="dsInstanceHost" type="optional">
+ <function-arg-description>
+ Directory server host name
+ </function-arg-description>
+ <function-arg-property name="type" value="integer"/>
+ </function-arg-def>
+ <function-arg-def name="dsInstancePort" type="optional">
+ <function-arg-description>
+ Directory server port number
+ </function-arg-description>
+ <function-arg-property name="type" value="integer"/>
+ </function-arg-def>
+ <function-arg-def name="dsInstanceDn" type="optional">
+ <function-arg-description>
+ Bind DN
+ </function-arg-description>
+ <function-arg-property name="type" value="dn"/>
+ </function-arg-def>
+ <function-arg-def name="dsInstancePswd" type="optional">
+ <function-arg-description>
+ Bind password
+ </function-arg-description>
+ </function-arg-def>
+ <function-arg-def name="taskID" type="optional">
+ <function-arg-description>
+ The identifier for the task
+ </function-arg-description>
+ <function-arg-property name="type" value="string"/>
+ </function-arg-def>
+ <function-arg-def name="domainDN" type="required">
+ <function-arg-description>
+ The dn of the domain to be replicated
+ </function-arg-description>
+ <function-arg-property name="type" value="dn"/>
+ </function-arg-def>
+ <function-arg-def name="replicaServerID" type="required">
+ <function-arg-description>
+ The id of the replica server
+ </function-arg-description>
+ <function-arg-property name="type" value="integer"/>
+ </function-arg-def>
+ </function-map-args>
+
+ <sequence>
+
+ <script>
+ myLocation=location
+ myPath=dsPath
+ myDataFolder='shared/data/replication'
+ taskLdif='%s/../functional-tests/shared/data/totalupdate-task.ldif' % dsPath
+ tmpTaskLdif='%s/totalupdate-task.ldif' % TMP_DATA_DIR
+ taskDN='ds-task-id=%s,cn=Scheduled Tasks,cn=Tasks' % taskID
+ </script>
+
+ <!-- Build the total update task configuration object -->
+ <script>
+ ldifLines=[]
+ ldifLines.append('dn: %s' % taskDN)
+ ldifLines.append('objectclass: top')
+ ldifLines.append('objectclass: ds-task')
+ ldifLines.append('objectclass: ds-task-initialize-from-remote-replica')
+ ldifLines.append('ds-task-class-name: org.opends.server.tasks.InitializeTask')
+ ldifLines.append('ds-task-id: %s' % taskID)
+ ldifLines.append('ds-task-initialize-domain-dn: %s' % domainDN)
+ ldifLines.append('ds-task-initialize-replica-server-id: %s' % replicaServerID)
+ </script>
+
+ <!-- Write out the totalupdate-task ldif -->
+ <script>
+ outfile = open(tmpTaskLdif,"w")
+
+ for line in ldifLines:
+ outfile.write("%s\n" % line)
+
+ outfile.close()
+ </script>
+
+ <!-- Copy the totalupdate-task ldif to remote host -->
+ <message>'Copy totalupdate task ldif file.'</message>
+ <call function="'copyFile'">
+ { 'location' : STAXServiceMachine,
+ 'srcfile' : tmpTaskLdif,
+ 'destfile' : taskLdif,
+ 'remotehost' : myLocation }
+ </call>
+
+ <script>
+ STAXCode, STAXReason=STAXResult
+ </script>
+
+ <if expr="STAXCode != 0">
+ <sequence>
+ <message>
+ 'Copy of totalupdate task failed (STAXCode=%s)' % STAXCode
+ </message>
+ <return>[STAXCode, STAXReason]</return>
+ </sequence>
+ </if>
+
+ <!-- Start the task using ldap task interface -->
+ <call function="'StartLdapTask'">
+ { 'location' : myLocation,
+ 'dsPath' : myPath,
+ 'taskLabel' : 'Online Total Update Task',
+ 'dsHost' : dsInstanceHost,
+ 'dsPort' : dsInstancePort,
+ 'dsBindDn' : dsInstanceDn,
+ 'dsBindPswd' : dsInstancePswd,
+ 'dsTaskLdif' : taskLdif }
+ </call>
+
+ <script>
+ STAXCode, STAXReason=STAXResult
+ </script>
+
+ <if expr="STAXCode != 0">
+ <sequence>
+ <message>
+ 'Start of totalupdate task failed (Code=%s)' % STAXCode
+ </message>
+ <return>[STAXCode, STAXReason]</return>
+ </sequence>
+ </if>
+
+ <!-- Check that the ldap task is completed -->
+ <call function="'CheckLdapTask'">
+ { 'location' : myLocation,
+ 'dsPath' : myPath,
+ 'dsTaskDn' : taskDN,
+ 'dsHost' : dsInstanceHost,
+ 'dsPort' : dsInstancePort,
+ 'dsBindDn' : dsInstanceDn,
+ 'dsBindPswd' : dsInstancePswd }
+ </call>
+
+ <script>
+ STAXCode, STAXReason=STAXResult
+ </script>
+
+ <if expr="STAXCode != 0">
+ <sequence>
+ <message>
+ 'Check of totalupdate task failed (Code=%s)' % STAXCode
+ </message>
+ <return>[STAXCode, STAXReason]</return>
+ </sequence>
+ </if>
+
+ <script>
+ STAXCode=0
+ STAXReason='%s: Success' % STAXCurrentFunction
+ </script>
+
+ <return>[STAXCode, STAXReason]</return>
+
+ </sequence>
+
+ </function>
+
<function name="StartLdapTask">
<function-prolog>
This function starts a task using the ldap task interface
@@ -2233,7 +2422,7 @@
<!-- Local variables -->
<script>
- mylocation=location
+ myLocation=location
</script>
<!-- Build the Modify Command -->
@@ -2268,7 +2457,7 @@
<!-- Perform Task with ldapmodify -->
<process name="'%s' % taskLabel">
- <location>'%s' % mylocation</location>
+ <location>'%s' % myLocation</location>
<command>'%s' % STAFCmd</command>
<parms>'%s' % STAFCmdParams</parms>
<workdir>'%s' % dsBinPath</workdir>
@@ -2279,12 +2468,19 @@
<stderr mode="'stdout'"/>
<returnstdout/>
</process>
-
- <call function="'checkRC'">
- { 'returncode' : RC ,
- 'result' : STAXResult }
- </call>
+
+ <script>
+ STAFCmdRC=RC
+ STAFCmdResult=STAXResult
+ </script>
+ <call function="'checkRC'">
+ { 'returncode' : STAFCmdRC ,
+ 'result' : STAFCmdResult }
+ </call>
+
+ <return>[STAFCmdRC, STAFCmdResult[0][1]]</return>
+
</sequence>
</function>
@@ -2342,7 +2538,7 @@
<!-- Local variables -->
<script>
- mylocation=location
+ myLocation=location
</script>
<script>
@@ -2376,17 +2572,21 @@
dsAttribute='ds-task-state'
STAFCmdParamsList.append('%s' % dsAttribute)
+
+ dsAttribute='ds-task-log-message'
+ STAFCmdParamsList.append('%s' % dsAttribute)
STAFCmdParams=' '.join(STAFCmdParamsList)
</script>
<script>
- searchre = re.compile('ds-task-state: COMPLETED_SUCCESSFULLY')
+ successPattern = re.compile('ds-task-state: COMPLETED_SUCCESSFULLY')
+ stopErrPattern = re.compile('ds-task-state: STOPPED_BY_ERROR')
</script>
<!-- Wait for the task to be COMPLETED_SUCCESSFULLY -->
<script>taskRC=1</script>
- <loop from="1" to="5" while="taskRC != 0">
+ <loop from="1" to="10" while="taskRC != 0">
<sequence>
<message>
@@ -2395,7 +2595,7 @@
<!-- Search for task status -->
<process name="'Search On line Import Task'">
- <location>'%s' % mylocation</location>
+ <location>'%s' % myLocation</location>
<command>'%s' % STAFCmd</command>
<parms>'%s' % STAFCmdParams</parms>
<workdir>'%s' % dsBinPath</workdir>
@@ -2407,39 +2607,47 @@
</process>
<script>
- searchRC=RC
- searchResult=STAXResult
+ STAFCmdRC=RC
+ STAFCmdResult=STAXResult
</script>
-
- <script>
- result = STAXResult[0][1]
- </script>
-
- <if expr='re.search(searchre, result) != None'>
+
+ <if expr='re.search(successPattern, STAFCmdResult[0][1]) != None'>
<sequence>
<script>taskRC=0</script>
<message>
- '%s' % searchResult
+ '%s' % STAFCmdResult
</message>
+ <return>[taskRC, STAFCmdResult[0][1]]</return>
</sequence>
+ <elseif expr='re.search(stopErrPattern, STAFCmdResult[0][1]) != None'>
+ <sequence>
+ <message level="'error'">
+ '%s' % STAFCmdResult
+ </message>
+ <return>[taskRC, STAFCmdResult[0][1]]</return>
+ </sequence>
+ </elseif>
<else>
<message level="'Warning'">
- '%s' % searchResult
+ '%s' % STAFCmdResult
</message>
</else>
</if>
<call function="'checkRC'">
- { 'returncode' : searchRC ,
- 'result' : searchResult }
+ { 'returncode' : STAFCmdRC ,
+ 'result' : STAFCmdResult }
</call>
<call function="'Sleep'">
{ 'sleepForMilliSeconds' : '2000' }
</call>
+
</sequence>
</loop>
+ <return>[taskRC, STAFCmdResult[0][1]]</return>
+
</sequence>
</function>
diff --git a/opends/tests/functional-tests/shared/functions/environment.xml b/opends/tests/functional-tests/shared/functions/environment.xml
index 02328b2..4345185 100755
--- a/opends/tests/functional-tests/shared/functions/environment.xml
+++ b/opends/tests/functional-tests/shared/functions/environment.xml
@@ -95,7 +95,7 @@
sys.path.append("%s/python" % TESTS_SHARED_DIR )
from common import *
from security import *
- from synchronization import *
+ from replication import *
</script>
@@ -243,7 +243,13 @@
<call function="'deleteFolder'">
{ 'location' : STAF_REMOTE_HOSTNAME ,
'foldername' : '%s' % InstanceInstallDir }
- </call>
+ </call>
+
+ <call function="'deleteFile'">
+ { 'location' : STAF_REMOTE_HOSTNAME ,
+ 'filename' : '%s.zip' % InstanceInstallDir }
+ </call>
+
</sequence>
</catch>
@@ -289,4 +295,4 @@
-</stax>
\ No newline at end of file
+</stax>
diff --git a/opends/tests/functional-tests/shared/functions/stafcmd.xml b/opends/tests/functional-tests/shared/functions/stafcmd.xml
index 1874910..51c36d7 100755
--- a/opends/tests/functional-tests/shared/functions/stafcmd.xml
+++ b/opends/tests/functional-tests/shared/functions/stafcmd.xml
@@ -70,7 +70,7 @@
{ 'returncode' : cmdRC ,
'result' : cmdResult }
</call>
- <return>cmdRC</return>
+ <return>[cmdRC,cmdResult]</return>
</sequence>
</function>
diff --git a/opends/tests/functional-tests/shared/functions/staxcmd.xml b/opends/tests/functional-tests/shared/functions/staxcmd.xml
index cbc1758..a2424bd 100755
--- a/opends/tests/functional-tests/shared/functions/staxcmd.xml
+++ b/opends/tests/functional-tests/shared/functions/staxcmd.xml
@@ -52,10 +52,6 @@
<request>'%s' % STAXRequest</request>
</stafcmd>
- <call function="'checkRC'">
- { 'returncode' : RC , 'result' : STAFResult }
- </call>
-
<return>RC</return>
</sequence>
diff --git a/opends/tests/functional-tests/shared/functions/topology.xml b/opends/tests/functional-tests/shared/functions/topology.xml
index 012c8c9..1101d36 100755
--- a/opends/tests/functional-tests/shared/functions/topology.xml
+++ b/opends/tests/functional-tests/shared/functions/topology.xml
@@ -43,12 +43,20 @@
Specifies whether the instance should be initialised with some default data.
</function-arg-description>
<function-arg-property name="type" value="boolean"/>
- </function-arg-def>
+ </function-arg-def>
+ <function-arg-def name="sharedDataFolder" type="optional" default="''">
+ <function-arg-description>
+ Specifies a relative folder that holds the shared data for the tests
+ </function-arg-description>
+ <function-arg-property name="type" value="string"/>
+ </function-arg-def>
</function-map-args>
<sequence>
- <call function="'prepareInstanceCreation'"></call>
+ <call function="'prepareInstanceCreation'">
+ { 'groupDataDir' : sharedDataFolder }
+ </call>
<if expr="topologyDescFile == None">
<!-- SINGLE instance deployment: read parameters from config.py (done by default) -->
@@ -103,17 +111,17 @@
'dsBaseDN' : server.getBaseDn() }
</call>
- <!-- Configure synchronization if required so by the server
+ <!-- Configure replication if required so by the server
! (i.e. server is a changelog server and/or has synchronized suffixes) -->
<if expr="server.requiresSynchronization()">
<sequence>
- <message> 'Instance requires SYNCHRONIZATION configuration.' </message>
+ <message> 'Instance requires REPLICATION configuration.' </message>
<script>
serverMap = {}
serverMap['instance'] = server
</script>
- <call function="'configureSynchronization'">
+ <call function="'configureReplication'">
[serverMap]
</call>
</sequence>
@@ -138,9 +146,16 @@
<function name="prepareInstanceCreation">
<function-prolog>
This function prepares locally the necessary
- files to create an instance: data zip file and OpenDS zip file.
+ files to create an instance: data zip file and OpenDS zip file.
</function-prolog>
-
+ <function-map-args>
+ <function-arg-def name="groupDataDir" type="optional" default="''">
+ <function-arg-description>
+ Specifies a relative folder that holds the shared data for the test group
+ </function-arg-description>
+ <function-arg-property name="type" value="string"/>
+ </function-arg-def>
+ </function-map-args>
<sequence>
<!-- ON LOCAL HOST: get data ready to copy to remote host -->
@@ -158,31 +173,42 @@
'filename' : '%s/ldifdata.zip' % TMPDIR }
</call>
-
+ <script>
+ testsGroupDir='%s/shared/data/%s' % (TESTS_DIR,groupDataDir)
+ tmpTestsGroupDir='%s/shared/data/%s' % (TMP_DATA_DIR,groupDataDir)
+ </script>
+
<!-- Locally copy static data files to temporary staging area -->
<!-- LDIF (.ldif) files -->
- <message>'Copy ldif data files'</message>
+ <message>
+ 'Copy ldif data files to %s.' % tmpTestsGroupDir
+ </message>
<call function="'CopyFolderByExtension'">
{ 'location' : STAXServiceMachine,
- 'srcfolder' : TESTS_DIR,
- 'destfolder' : TMP_DATA_DIR,
+ 'srcfolder' : testsGroupDir,
+ 'destfolder' : tmpTestsGroupDir,
'extension' : 'ldif' }
</call>
<!-- PWD (.pwd) files -->
+ <message>
+ 'Copy pwd data files to %s.' % tmpTestsGroupDir
+ </message>
<call function="'CopyFolderByExtension'">
{ 'location' : STAXServiceMachine,
- 'srcfolder' : TESTS_DIR,
- 'destfolder' : TMP_DATA_DIR,
+ 'srcfolder' : testsGroupDir,
+ 'destfolder' : tmpTestsGroupDir,
'extension' : 'pwd' }
</call>
<!-- Archive (.gz) files -->
- <message>'Copy gz data files'</message>
+ <message>
+ 'Copy gz data files to %s.' % tmpTestsGroupDir
+ </message>
<call function="'CopyFolderByExtension'">
{ 'location' : STAXServiceMachine,
- 'srcfolder' : TESTS_DIR,
- 'destfolder' : TMP_DATA_DIR,
+ 'srcfolder' : testsGroupDir,
+ 'destfolder' : tmpTestsGroupDir,
'extension' : 'gz' }
</call>
@@ -336,11 +362,11 @@
'unzipdir' : dsDir }
</call>
- <!--- Configure DS -->
+ <!--- Set up DS -->
<message>
- 'Configure DS on %s : %s/%s' % (dsHost,dsDir,OPENDSNAME)
+ 'Set up DS on %s : %s/%s' % (dsHost,dsDir,OPENDSNAME)
</message>
- <call function="'ConfigureDsWithScript'">
+ <call function="'SetUpDsWithScript'">
{ 'location' : dsHost,
'dsPath' : '%s/%s' % (dsDir, OPENDSNAME),
'dsPort' : dsPort,
@@ -375,9 +401,9 @@
- <function name="configureSynchronization">
+ <function name="configureReplication">
<function-prolog>
- This function configures synchronization in a given server.
+ This function configures replication in a given server.
</function-prolog>
<function-list-args>
@@ -393,18 +419,18 @@
<script>
syncserver = syncserverMap['instance']
- filename = 'synchronization_conf.ldif'
+ filename = 'replication_conf.ldif'
filePath = '%s/%s' % (TMP_DATA_DIR,filename)
dataDir = '%s/functional-tests/shared/data' % syncserver.getDir()
- write_synchronization_conf_ldif_file(filePath, syncserver)
+ write_replication_conf_ldif_file(filePath, syncserver)
</script>
<message>
- 'Configure synchronization on server on host %s at directory %s' % (syncserver.getHostname(),syncserver.getDir())
+ 'Configure replication on server on host %s at directory %s' % (syncserver.getHostname(),syncserver.getDir())
</message>
- <!-- Copy the synchronization_conf ldif to remote host -->
+ <!-- Copy the replication_conf ldif to remote host -->
<message>
'Copy %s file from %s to %s' % (filename,TMP_DATA_DIR,dataDir)
</message>
@@ -415,7 +441,7 @@
</call>
- <!--- Add synchronization configuration entries to config.ldif in server -->
+ <!--- Add replication configuration entries to config.ldif in server -->
<script>
remoteFilePath = '%s/%s' % (dataDir, filename)
@@ -435,7 +461,7 @@
</call>
<message>
- 'Add synchronization configuration entries in %s' % remoteFilePath
+ 'Add replication configuration entries in %s' % remoteFilePath
</message>
<call function="'addEntry'">
@@ -730,4 +756,4 @@
</function>
-</stax>
\ No newline at end of file
+</stax>
diff --git a/opends/tests/functional-tests/shared/functions/utils.xml b/opends/tests/functional-tests/shared/functions/utils.xml
index 892456e..fcd6e91 100755
--- a/opends/tests/functional-tests/shared/functions/utils.xml
+++ b/opends/tests/functional-tests/shared/functions/utils.xml
@@ -74,6 +74,9 @@
</sequence>
</else>
</if>
+
+ <return>RC</return>
+
</sequence>
</function>
@@ -310,6 +313,7 @@
<!-- Local variables -->
<script>
mylocation=location
+ mypath=dsPath
myhost=dsInstanceHost
myport=dsInstancePort
mydn=dsInstanceDn
@@ -321,6 +325,7 @@
<sequence>
<call function="'SearchObject'">
{ 'location' : mylocation,
+ 'dsPath' : mypath,
'dsInstanceHost' : myhost ,
'dsInstancePort' : myport ,
'dsInstanceDn' : mydn ,
diff --git a/opends/tests/functional-tests/shared/python/synchronization.py b/opends/tests/functional-tests/shared/python/replication.py
similarity index 88%
rename from opends/tests/functional-tests/shared/python/synchronization.py
rename to opends/tests/functional-tests/shared/python/replication.py
index 826e38c..af6f6ba 100644
--- a/opends/tests/functional-tests/shared/python/synchronization.py
+++ b/opends/tests/functional-tests/shared/python/replication.py
@@ -134,13 +134,13 @@
-# Define the function that writes a ldif file with the synchronization configuration
+# Define the function that writes a ldif file with the replication configuration
# corresponding to the given server.
-def write_synchronization_conf_ldif_file(path, server):
+def write_replication_conf_ldif_file(path, server):
ldifLines = []
- # write the main synchronization configuration entry
+ # write the main replication configuration entry
ldifLines.append('')
ldifLines.append('dn: cn=Multimaster Synchronization,cn=Synchronization Providers,cn=config')
@@ -172,7 +172,7 @@
ldifLines.append('ds-cfg-replication-server-id: %s' % id)
- # write the domains synchronization configuration entry
+ # write the domains replication configuration entry
ldifLines.append('')
ldifLines.append('dn: cn=domains,cn=Multimaster Synchronization,cn=Synchronization Providers,cn=config')
ldifLines.append('objectClass: top')
@@ -217,7 +217,7 @@
# Define the function that writes a ldif file with the root suffix entry to add
# for a given suffix.
-def write_synchronization_add_root_suffix_ldif_file(path, suffix):
+def write_replication_add_root_suffix_ldif_file(path, suffix):
ldifLines = []
@@ -255,7 +255,7 @@
# Define the function that writes a ldif file with an entry to add
# under a given suffix.
-def write_synchronization_add_single_ldif_file(path, suffix):
+def write_replication_add_single_ldif_file(path, suffix):
ldifLines = []
@@ -293,41 +293,41 @@
# Define the function that writes a ldif file with the entries to add
# under a given suffix.
-def write_synchronization_add_multiple_ldif_file(path, suffix):
+def write_replication_add_multiple_ldif_file(path, suffix):
ldifLines = []
- ldifLines.append('dn: o=synchronization tests,%s' % suffix)
- ldifLines.append('o: synchronization tests')
+ ldifLines.append('dn: o=replication tests,%s' % suffix)
+ ldifLines.append('o: replication tests')
ldifLines.append('objectclass: top')
ldifLines.append('objectclass: organization')
ldifLines.append('')
- ldifLines.append('dn: ou=People,o=synchronization tests,%s' % suffix)
+ ldifLines.append('dn: ou=People,o=replication tests,%s' % suffix)
ldifLines.append('ou: People')
ldifLines.append('objectclass: top')
ldifLines.append('objectclass: organizationalunit')
ldifLines.append('')
- ldifLines.append('dn: ou=Groups, o=synchronization tests,%s' % suffix)
+ ldifLines.append('dn: ou=Groups, o=replication tests,%s' % suffix)
ldifLines.append('objectclass: top')
ldifLines.append('objectclass: organizationalunit')
ldifLines.append('ou: Groups')
ldifLines.append('')
- ldifLines.append('dn: cn=Directory Administrators, ou=Groups, o=synchronization tests,%s' % suffix)
+ ldifLines.append('dn: cn=Directory Administrators, ou=Groups, o=replication tests,%s' % suffix)
ldifLines.append('cn: Directory Administrators')
ldifLines.append('objectclass: top')
ldifLines.append('objectclass: groupofuniquenames')
ldifLines.append('ou: Groups')
- ldifLines.append('uniquemember: uid=kvaughan, ou=People, o=synchronization tests,%s' % suffix)
- ldifLines.append('uniquemember: uid=rdaugherty, ou=People, o=synchronization tests,%s' % suffix)
- ldifLines.append('uniquemember: uid=hmiller, ou=People, o=synchronization tests,%s' % suffix)
+ ldifLines.append('uniquemember: uid=kvaughan, ou=People, o=replication tests,%s' % suffix)
+ ldifLines.append('uniquemember: uid=rdaugherty, ou=People, o=replication tests,%s' % suffix)
+ ldifLines.append('uniquemember: uid=hmiller, ou=People, o=replication tests,%s' % suffix)
ldifLines.append('')
- ldifLines.append('dn: ou=Special Users,o=synchronization tests,%s' % suffix)
+ ldifLines.append('dn: ou=Special Users,o=replication tests,%s' % suffix)
ldifLines.append('objectclass: top')
ldifLines.append('objectclass: organizationalUnit')
ldifLines.append('ou: Special Users')
ldifLines.append('description: Special Administrative Accounts')
ldifLines.append('')
- ldifLines.append('dn: uid=scarter,ou=People,o=synchronization tests,%s' % suffix)
+ ldifLines.append('dn: uid=scarter,ou=People,o=replication tests,%s' % suffix)
ldifLines.append('cn: Sam Carter')
ldifLines.append('sn: Carter')
ldifLines.append('givenname: Sam')
@@ -358,7 +358,7 @@
# Define the function that writes a ldif file with the modify to operate
# on an entry in a given suffix.
-def write_synchronization_mod_ldif_file(path, dn, mod_type, attr_type, attr_value):
+def write_replication_mod_ldif_file(path, dn, mod_type, attr_type, attr_value):
ldifLines = []
@@ -376,4 +376,4 @@
outfile.close()
-
\ No newline at end of file
+
diff --git a/opends/tests/functional-tests/testcases/replication/basic/replication_basic.xml b/opends/tests/functional-tests/testcases/replication/basic/replication_basic.xml
new file mode 100644
index 0000000..8991cb2
--- /dev/null
+++ b/opends/tests/functional-tests/testcases/replication/basic/replication_basic.xml
@@ -0,0 +1,248 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE stax SYSTEM "../../../stax.dtd">
+<!--
+ ! CDDL HEADER START
+ !
+ ! The contents of this file are subject to the terms of the
+ ! Common Development and Distribution License, Version 1.0 only
+ ! (the "License"). You may not use this file except in compliance
+ ! with the License.
+ !
+ ! You can obtain a copy of the license at
+ ! trunk/opends/resource/legal-notices/OpenDS.LICENSE
+ ! or https://OpenDS.dev.java.net/OpenDS.LICENSE.
+ ! See the License for the specific language governing permissions
+ ! and limitations under the License.
+ !
+ ! When distributing Covered Code, include this CDDL HEADER in each
+ ! file and include the License file at
+ ! trunk/opends/resource/legal-notices/OpenDS.LICENSE. If applicable,
+ ! add the following below this CDDL HEADER, with the fields enclosed
+ ! by brackets "[]" replaced with your own identifying information:
+ ! Portions Copyright [yyyy] [name of copyright owner]
+ !
+ ! CDDL HEADER END
+ !
+ ! Portions Copyright 2006-2007 Sun Microsystems, Inc.
+ ! -->
+<stax>
+
+ <defaultcall function="replication_basic"/>
+
+ <function name="replication_basic">
+
+ <sequence>
+
+ <block name="'basic'">
+
+ <sequence>
+
+ <script>
+ if not CurrentTestPath.has_key('group'):
+ CurrentTestPath['group']='replication'
+ CurrentTestPath['suite']=STAXCurrentBlock
+ </script>
+
+ <call function="'testSuite_Preamble'"/>
+
+ <import machine="'%s' % (STAF_LOCAL_HOSTNAME)"
+ file="'%s/testcases/replication/replication_setup.xml' % (TESTS_DIR)"/>
+ <call function="'replication_setup'" />
+
+ <import machine="'%s' % (STAF_LOCAL_HOSTNAME)"
+ file="'%s/testcases/replication/basic/replication_basic_setup.xml' % (TESTS_DIR)"/>
+ <call function="'replication_basic_setup'" />
+
+ <!--- Test Case information
+ #@TestMarker Replication Basic Tests
+ #@TestName Replication: Basic: Add Entry
+ #@TestID Add Entry
+ #@TestPurpose Check that an entry add is well propagated by replication.
+ #@TestPreamble
+ #@TestSteps
+ #@TestPostamble
+ #@TestResult
+ -->
+ <testcase name="'Replication: Basic: Add Entry'">
+ <sequence>
+ <call function="'testCase_Preamble'"/>
+ <message>
+ 'Replication: Basic: Add Entry. Check that an added entry is well propagated by replication.'
+ </message>
+
+ <call function="'addEntry'">
+ { 'location' : clientHost,
+ 'dsPath' : clientPath,
+ 'dsInstanceHost' : server1.getHostname(),
+ 'dsInstancePort' : server1.getPort(),
+ 'dsInstanceDn' : server1.getRootDn(),
+ 'dsInstancePswd' : server1.getRootPwd(),
+ 'entryToBeAdded' : '%s/replication_add_root_suffix.ldif' % clientDataDir }
+ </call>
+
+ <call function="'checkRC'">
+ { 'returncode' : RC,
+ 'result' : STAXResult }
+ </call>
+
+
+ <call function="'SearchObject'">
+ { 'location' : clientHost,
+ 'dsPath' : clientPath,
+ 'dsInstanceHost' : server2.getHostname() ,
+ 'dsInstancePort' : server2.getPort() ,
+ 'dsInstanceDn' : server2.getRootDn() ,
+ 'dsInstancePswd' : server2.getRootPwd() ,
+ 'dsBaseDN' : synchroSuffix ,
+ 'dsFilter' : 'objectclass=*' }
+ </call>
+
+ <call function="'checktestRC'">
+ { 'returncode' : RC,
+ 'result' : STAXResult,
+ 'expected' : 0 }
+ </call>
+ <call function="'testCase_Postamble'"/>
+ </sequence>
+ </testcase>
+
+
+
+ <!--- Test Case information
+ #@TestMarker Replication Basic Tests
+ #@TestName Replication: Basic: Modify Entry
+ #@TestID Modify Entry
+ #@TestPurpose Check that an entry modify is well propagated by replication.
+ #@TestPreamble
+ #@TestSteps
+ #@TestPostamble
+ #@TestResult
+ -->
+ <testcase name="'Replication: Basic: Modify Entry'">
+ <sequence>
+ <call function="'testCase_Preamble'"/>
+ <message>
+ 'Replication: Basic: Modify Entry. Check that an entry modify is well propagated by replication.'
+ </message>
+
+ <call function="'addEntry'">
+ { 'location' : clientHost,
+ 'dsPath' : clientPath,
+ 'dsInstanceHost' : server1.getHostname(),
+ 'dsInstancePort' : server1.getPort() ,
+ 'dsInstanceDn' : server1.getRootDn() ,
+ 'dsInstancePswd' : server1.getRootPwd() ,
+ 'entryToBeAdded' : '%s/replication_add_single.ldif' % clientDataDir }
+ </call>
+
+ <call function="'checkRC'">
+ { 'returncode' : RC ,
+ 'result' : STAXResult }
+ </call>
+
+
+ <call function="'modifyEntry'">
+ { 'location' : clientHost,
+ 'dsPath' : clientPath,
+ 'dsInstanceHost' : server1.getHostname() ,
+ 'dsInstancePort' : server1.getPort() ,
+ 'dsInstanceDn' : server1.getRootDn() ,
+ 'dsInstancePswd' : server1.getRootPwd() ,
+ 'entryToBeModified' : '%s/replication_mod.ldif' % clientDataDir }
+ </call>
+
+ <call function="'checkRC'">
+ { 'returncode' : RC ,
+ 'result' : STAXResult }
+ </call>
+
+
+ <call function="'SearchObject'">
+ { 'location' : clientHost,
+ 'dsPath' : clientPath,
+ 'dsInstanceHost' : server2.getHostname() ,
+ 'dsInstancePort' : server2.getPort() ,
+ 'dsInstanceDn' : server2.getRootDn() ,
+ 'dsInstancePswd' : server2.getRootPwd() ,
+ 'dsBaseDN' : entryDn,
+ 'dsFilter' : '%s=%s' % (attr_type,attr_value) }
+ </call>
+
+ <call function="'checktestRC'">
+ { 'returncode' : RC ,
+ 'result' : STAXResult ,
+ 'expected' : 0 }
+ </call>
+ <call function="'testCase_Postamble'"/>
+ </sequence>
+ </testcase>
+
+
+ <!--- Test Case information
+ #@TestMarker Replication Basic Tests
+ #@TestName Replication: Basic: Delete Entry
+ #@TestID Delete Entry
+ #@TestPurpose Check that an entry delete is well propagated by replication.
+ #@TestPreamble
+ #@TestSteps
+ #@TestPostamble
+ #@TestResult
+ -->
+ <testcase name="'Replication: Basic: Delete Entry'">
+ <sequence>
+ <call function="'testCase_Preamble'"/>
+ <message>
+ 'Replication: Basic: Delete Entry. Check that an entry delete is well propagated by replication.'
+ </message>
+
+ <call function="'DeleteEntry'">
+ { 'location' : clientHost,
+ 'dsPath' : clientPath,
+ 'dsInstanceHost' : server1.getHostname() ,
+ 'dsInstancePort' : server1.getPort() ,
+ 'dsInstanceDn' : server1.getRootDn() ,
+ 'dsInstancePswd' : server1.getRootPwd() ,
+ 'dsBaseDN' : entryDn }
+ </call>
+
+ <call function="'checkRC'">
+ { 'returncode' : RC ,
+ 'result' : STAXResult }
+ </call>
+
+
+ <call function="'SearchObject'">
+ { 'location' : clientHost,
+ 'dsPath' : clientPath,
+ 'dsInstanceHost' : server2.getHostname() ,
+ 'dsInstancePort' : server2.getPort() ,
+ 'dsInstanceDn' : server2.getRootDn() ,
+ 'dsInstancePswd' : server2.getRootPwd() ,
+ 'dsBaseDN' : entryDn,
+ 'dsFilter' : 'objectclass=*' }
+ </call>
+
+ <call function="'checktestRC'">
+ { 'returncode' : RC ,
+ 'result' : STAXResult ,
+ 'expected' : 32 }
+ </call>
+ <call function="'testCase_Postamble'"/>
+ </sequence>
+ </testcase>
+
+ <import machine="'%s' % (STAF_LOCAL_HOSTNAME)"
+ file="'%s/testcases/replication/replication_cleanup.xml' % (TESTS_DIR)"/>
+ <call function="'replication_cleanup'" />
+
+ <call function="'testSuite_Postamble'"/>
+
+ </sequence>
+
+ </block>
+
+ </sequence>
+
+ </function>
+
+</stax>
diff --git a/opends/tests/functional-tests/testcases/replication/basic/replication_basic_setup.xml b/opends/tests/functional-tests/testcases/replication/basic/replication_basic_setup.xml
new file mode 100644
index 0000000..958b36b
--- /dev/null
+++ b/opends/tests/functional-tests/testcases/replication/basic/replication_basic_setup.xml
@@ -0,0 +1,122 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE stax SYSTEM "../../../stax.dtd">
+<!--
+ ! CDDL HEADER START
+ !
+ ! The contents of this file are subject to the terms of the
+ ! Common Development and Distribution License, Version 1.0 only
+ ! (the "License"). You may not use this file except in compliance
+ ! with the License.
+ !
+ ! You can obtain a copy of the license at
+ ! trunk/opends/resource/legal-notices/OpenDS.LICENSE
+ ! or https://OpenDS.dev.java.net/OpenDS.LICENSE.
+ ! See the License for the specific language governing permissions
+ ! and limitations under the License.
+ !
+ ! When distributing Covered Code, include this CDDL HEADER in each
+ ! file and include the License file at
+ ! trunk/opends/resource/legal-notices/OpenDS.LICENSE. If applicable,
+ ! add the following below this CDDL HEADER, with the fields enclosed
+ ! by brackets "[]" replaced with your own identifying information:
+ ! Portions Copyright [yyyy] [name of copyright owner]
+ !
+ ! CDDL HEADER END
+ !
+ ! Portions Copyright 2006-2007 Sun Microsystems, Inc.
+ ! -->
+<stax>
+
+ <defaultcall function="replication_basic_setup"/>
+
+ <function name="replication_basic_setup">
+
+ <sequence>
+
+ <!--- Setup the client for the Basic test suite -->
+ <message>
+ 'Replication: Basic: Setup. Get client ready for Basic tests.'
+ </message>
+
+ <script>
+ synchroSuffix = server1.getSynchronizedSuffixList()[0].getSuffixDn()
+ entryDn = 'uid=scarter,%s' % synchroSuffix
+ mod_type = 'replace'
+ attr_type = 'roomnumber'
+ attr_value = '1111'
+ </script>
+
+ <script>
+ filename = 'replication_add_root_suffix.ldif'
+ filePath = '%s/%s' % (TMP_DATA_DIR,filename)
+ write_replication_add_root_suffix_ldif_file(filePath, synchroSuffix)
+ </script>
+
+ <!-- Copy the replication_add_root_suffix ldif to client host -->
+ <message>
+ 'Copy %s file from %s to %s' % (filename,TMP_DATA_DIR,clientDataDir)
+ </message>
+ <call function="'copyFile'">
+ { 'srcfile' : filePath,
+ 'destfile' : '%s/%s' % (clientDataDir,filename),
+ 'remotehost' : client.getHostname() }
+ </call>
+
+ <script>
+ filename = 'replication_add_single.ldif'
+ filePath = '%s/%s' % (TMP_DATA_DIR,filename)
+ write_replication_add_single_ldif_file(filePath, synchroSuffix)
+ </script>
+
+ <!-- Copy the replication_add_single ldif to client host -->
+ <message>
+ 'Copy %s file from %s to %s' % (filename,TMP_DATA_DIR,clientDataDir)
+ </message>
+ <call function="'copyFile'">
+ { 'srcfile' : filePath,
+ 'destfile' : '%s/%s' % (clientDataDir,filename),
+ 'remotehost' : client.getHostname() }
+ </call>
+
+ <script>
+ filename = 'replication_add_multiple.ldif'
+ filePath = '%s/%s' % (TMP_DATA_DIR,filename)
+ write_replication_add_multiple_ldif_file(filePath, synchroSuffix)
+ </script>
+
+ <!-- Copy the replication_add_multiple ldif to client host -->
+ <message>
+ 'Copy %s file from %s to %s' % (filename,TMP_DATA_DIR,clientDataDir)
+ </message>
+ <call function="'copyFile'">
+ { 'srcfile' : filePath,
+ 'destfile' : '%s/%s' % (clientDataDir,filename),
+ 'remotehost' : client.getHostname() }
+ </call>
+
+ <script>
+ filename = 'replication_mod.ldif'
+ filePath = '%s/%s' % (TMP_DATA_DIR,filename)
+ write_replication_mod_ldif_file(filePath, entryDn, mod_type, attr_type, attr_value)
+ </script>
+
+ <!-- Copy the replication_mod ldif to client host -->
+ <message>
+ 'Copy %s file from %s to %s' % (filename,TMP_DATA_DIR,clientDataDir)
+ </message>
+ <call function="'copyFile'">
+ { 'srcfile' : filePath,
+ 'destfile' : '%s/%s' % (clientDataDir,filename),
+ 'remotehost' : client.getHostname() }
+ </call>
+
+ <call function="'checkRC'">
+ { 'returncode' : RC ,
+ 'result' : STAXResult }
+ </call>
+
+ </sequence>
+
+ </function>
+
+</stax>
diff --git a/opends/tests/functional-tests/testcases/synchronization/synchronization.xml b/opends/tests/functional-tests/testcases/replication/replication.xml
old mode 100755
new mode 100644
similarity index 60%
rename from opends/tests/functional-tests/testcases/synchronization/synchronization.xml
rename to opends/tests/functional-tests/testcases/replication/replication.xml
index 01c97a8..b88f2f0
--- a/opends/tests/functional-tests/testcases/synchronization/synchronization.xml
+++ b/opends/tests/functional-tests/testcases/replication/replication.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE stax SYSTEM "../../stax.dtd">
+<!DOCTYPE stax SYSTEM "../../../stax.dtd">
<!--
! CDDL HEADER START
!
@@ -27,35 +27,42 @@
! -->
<stax>
- <defaultcall function="main_synchronization"/>
+ <defaultcall function="main_replication"/>
- <function name="main_synchronization">
+ <function name="main_replication">
<sequence>
- <block name="'synchronization'">
-
+ <block name="'replication'">
+
<sequence>
-
- <script>
- CurrentTestPath['group']='synchronization'
- </script>
-
- <call function="'testGroup_Preamble'"/>
-
<import machine="'%s' % (STAF_LOCAL_HOSTNAME)"
- file="'%s/testcases/synchronization/basic/synchronization_basic.xml' % (TESTS_DIR)"/>
- <call function="'synchronization_basic'" />
-
-
-
+ file="'%s/environment.xml' % (TESTS_FUNCTIONS_DIR)" />
+ <call function="'loadEnvironment'" />
+
+ <script>
+ CurrentTestPath={}
+ envAlreadyLoaded='true'
+ CurrentTestPath['group']='replication'
+ </script>
+
+ <call function="'testGroup_Preamble'"/>
+
+ <import machine="'%s' % (STAF_LOCAL_HOSTNAME)"
+ file="'%s/testcases/replication/totalupdate/totalupdate.xml' % (TESTS_DIR)"/>
+ <call function="'main_totalupdate'" />
+
+ <import machine="'%s' % (STAF_LOCAL_HOSTNAME)"
+ file="'%s/testcases/replication/basic/replication_basic.xml' % (TESTS_DIR)"/>
+ <call function="'replication_basic'" />
+
<call function="'testGroup_Postamble'"/>
-
+
</sequence>
-
+
</block>
-
+
</sequence>
</function>
diff --git a/opends/tests/functional-tests/testcases/replication/replication_cleanup.xml b/opends/tests/functional-tests/testcases/replication/replication_cleanup.xml
new file mode 100644
index 0000000..7353b3b
--- /dev/null
+++ b/opends/tests/functional-tests/testcases/replication/replication_cleanup.xml
@@ -0,0 +1,93 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE stax SYSTEM "../../../stax.dtd">
+<!--
+ ! CDDL HEADER START
+ !
+ ! The contents of this file are subject to the terms of the
+ ! Common Development and Distribution License, Version 1.0 only
+ ! (the "License"). You may not use this file except in compliance
+ ! with the License.
+ !
+ ! You can obtain a copy of the license at
+ ! trunk/opends/resource/legal-notices/OpenDS.LICENSE
+ ! or https://OpenDS.dev.java.net/OpenDS.LICENSE.
+ ! See the License for the specific language governing permissions
+ ! and limitations under the License.
+ !
+ ! When distributing Covered Code, include this CDDL HEADER in each
+ ! file and include the License file at
+ ! trunk/opends/resource/legal-notices/OpenDS.LICENSE. If applicable,
+ ! add the following below this CDDL HEADER, with the fields enclosed
+ ! by brackets "[]" replaced with your own identifying information:
+ ! Portions Copyright [yyyy] [name of copyright owner]
+ !
+ ! CDDL HEADER END
+ !
+ ! Portions Copyright 2006-2007 Sun Microsystems, Inc.
+ ! -->
+<stax>
+
+ <defaultcall function="replication_cleanup"/>
+
+ <function name="replication_cleanup">
+
+ <sequence>
+
+ <block name="'replication-cleanup'">
+
+ <sequence>
+
+ <script>
+ basicTopologyFile = '%s/config/replication/basic_topology.txt' % TESTS_DIR
+ </script>
+
+ <!-- Stop the servers in the topology -->
+ <iterate var="server" in="_topologyServerList">
+ <sequence>
+
+ <message>
+ 'Stop DS on host %s running on port %s' % (server.getHostname(),server.getPort())
+ </message>
+
+ <!--- Stop DS -->
+ <call function="'StopDsWithScript'">
+ { 'location' : server.getHostname(),
+ 'dsHost' : server.getHostname(),
+ 'dsPath' : '%s/%s' % (server.getDir(),OPENDSNAME),
+ 'dsPort' : server.getPort(),
+ 'dsBindDN' : server.getRootDn(),
+ 'dsBindPwd' : server.getRootPwd() }
+ </call>
+
+ <call function="'checkRC'">
+ { 'returncode' : RC ,
+ 'result' : STAXResult }
+ </call>
+
+ </sequence>
+
+ </iterate>
+
+ <!-- Remove the topology created for the test suite -->
+ <message>
+ 'Remove DS topology created for the Synchronization Basic Test Suite'
+ </message>
+
+ <call function="'removeTopology'">
+ { 'multipleInstanceTopology' : True }
+ </call>
+
+ <call function="'checkRC'">
+ { 'returncode' : RC ,
+ 'result' : STAXResult }
+ </call>
+
+ </sequence>
+
+ </block>
+
+ </sequence>
+
+ </function>
+
+</stax>
diff --git a/opends/tests/functional-tests/testcases/replication/replication_setup.xml b/opends/tests/functional-tests/testcases/replication/replication_setup.xml
new file mode 100644
index 0000000..8f62be8
--- /dev/null
+++ b/opends/tests/functional-tests/testcases/replication/replication_setup.xml
@@ -0,0 +1,114 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE stax SYSTEM "../../../stax.dtd">
+<!--
+ ! CDDL HEADER START
+ !
+ ! The contents of this file are subject to the terms of the
+ ! Common Development and Distribution License, Version 1.0 only
+ ! (the "License"). You may not use this file except in compliance
+ ! with the License.
+ !
+ ! You can obtain a copy of the license at
+ ! trunk/opends/resource/legal-notices/OpenDS.LICENSE
+ ! or https://OpenDS.dev.java.net/OpenDS.LICENSE.
+ ! See the License for the specific language governing permissions
+ ! and limitations under the License.
+ !
+ ! When distributing Covered Code, include this CDDL HEADER in each
+ ! file and include the License file at
+ ! trunk/opends/resource/legal-notices/OpenDS.LICENSE. If applicable,
+ ! add the following below this CDDL HEADER, with the fields enclosed
+ ! by brackets "[]" replaced with your own identifying information:
+ ! Portions Copyright [yyyy] [name of copyright owner]
+ !
+ ! CDDL HEADER END
+ !
+ ! Portions Copyright 2006-2007 Sun Microsystems, Inc.
+ ! -->
+<stax>
+
+ <defaultcall function="replication_setup"/>
+
+ <function name="replication_setup">
+
+ <sequence>
+
+ <block name="'replication-setup'">
+
+ <sequence>
+
+ <script>
+ basicTopologyFile = '%s/config/replication/basic_topology.txt' % TESTS_DIR
+ </script>
+
+ <message>
+ 'Create DS topology as described in %s' % basicTopologyFile
+ </message>
+
+ <call function="'createTopology'">
+ { 'topologyDescFile' : basicTopologyFile,
+ 'sharedDataFolder' : 'replication' }
+ </call>
+
+ <call function="'checkRC'">
+ { 'returncode' : RC ,
+ 'result' : STAXResult }
+ </call>
+
+ <!-- Setup variables -->
+ <script>
+ client = _topologyServerList[0]
+ clientHost = client.getHostname()
+ clientPath = '%s/%s' % (client.getDir(),OPENDSNAME)
+ clientDataDir = '%s/functional-tests/shared/data' % client.getDir()
+
+ server1 = _topologyServerList[0]
+ server2 = _topologyServerList[1]
+ </script>
+
+ <!-- Start the servers in the topology -->
+ <iterate var="server" in="_topologyServerList">
+ <sequence>
+
+ <message>
+ 'Start DS on host %s to run on port %s' % (server.getHostname(),server.getPort())
+ </message>
+
+ <!--- Start DS -->
+ <call function="'StartDsWithScript'">
+ { 'location' : server.getHostname(),
+ 'dsPath' : '%s/%s' % (server.getDir(),OPENDSNAME) }
+ </call>
+
+ <call function="'checkRC'">
+ { 'returncode' : RC ,
+ 'result' : STAXResult }
+ </call>
+
+ </sequence>
+ </iterate>
+
+ <!-- Check that the servers in the topology started -->
+ <iterate var="server" in="_topologyServerList">
+ <!--- Check that DS started -->
+ <call function="'isAlive'">
+ { 'location' : server.getHostname(),
+ 'dsPath' : '%s/%s' % (server.getDir(),OPENDSNAME),
+ 'dsInstanceHost' : server.getHostname(),
+ 'dsInstancePort' : server.getPort(),
+ 'dsInstanceDn' : server.getRootDn(),
+ 'dsInstancePswd' : server.getRootPwd(),
+ 'noOfLoops' : 5 ,
+ 'noOfMilliSeconds' : 2000 }
+ </call>
+ </iterate>
+
+ </sequence>
+
+ </block>
+
+ </sequence>
+
+ </function>
+
+</stax>
diff --git a/opends/tests/functional-tests/testcases/replication/totalupdate/totalupdate.xml b/opends/tests/functional-tests/testcases/replication/totalupdate/totalupdate.xml
new file mode 100644
index 0000000..4c3652e
--- /dev/null
+++ b/opends/tests/functional-tests/testcases/replication/totalupdate/totalupdate.xml
@@ -0,0 +1,172 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE stax SYSTEM "../../../stax.dtd">
+<!--
+ ! CDDL HEADER START
+ !
+ ! The contents of this file are subject to the terms of the
+ ! Common Development and Distribution License, Version 1.0 only
+ ! (the "License"). You may not use this file except in compliance
+ ! with the License.
+ !
+ ! You can obtain a copy of the license at
+ ! trunk/opends/resource/legal-notices/OpenDS.LICENSE
+ ! or https://OpenDS.dev.java.net/OpenDS.LICENSE.
+ ! See the License for the specific language governing permissions
+ ! and limitations under the License.
+ !
+ ! When distributing Covered Code, include this CDDL HEADER in each
+ ! file and include the License file at
+ ! trunk/opends/resource/legal-notices/OpenDS.LICENSE. If applicable,
+ ! add the following below this CDDL HEADER, with the fields enclosed
+ ! by brackets "[]" replaced with your own identifying information:
+ ! Portions Copyright [yyyy] [name of copyright owner]
+ !
+ ! CDDL HEADER END
+ !
+ ! Portions Copyright 2006-2007 Sun Microsystems, Inc.
+ ! -->
+<stax>
+
+ <defaultcall function="main_totalupdate"/>
+
+ <function name="main_totalupdate">
+
+ <sequence>
+
+ <block name="'total-update'">
+
+ <sequence>
+
+ <script>
+ if not CurrentTestPath.has_key('group'):
+ CurrentTestPath['group']='replication'
+ CurrentTestPath['suite']=STAXCurrentBlock
+ </script>
+
+ <call function="'testSuite_Preamble'"/>
+
+ <import machine="'%s' % (STAF_LOCAL_HOSTNAME)"
+ file="'%s/testcases/replication/replication_setup.xml' % (TESTS_DIR)"/>
+ <call function="'replication_setup'" />
+
+ <script>
+ server1DataDir = '%s/functional-tests/shared/data' % server1.getDir()
+ </script>
+
+ <!--- Test Case : Total Update -->
+ <testcase name="'Replication: Total Update: Simple LDIF'">
+ <sequence>
+
+ <call function="'testCase_Preamble'"/>
+
+ <!-- Stop the Directory Server -->
+ <call function="'StopDsWithScript'">
+ { 'location' : server1.getHostname(),
+ 'dsPath' : '%s/%s' % (server1.getDir(),OPENDSNAME),
+ 'dsHost' : server1.getHostname(),
+ 'dsPort' : server1.getPort(),
+ 'dsBindDN' : server1.getRootDn(),
+ 'dsBindPwd' : server1.getRootPwd() }
+ </call>
+
+ <!-- Check that the Directory Server is stopped -->
+
+ <!-- Import data into Directory Server -->
+ <call function="'ImportLdifWithScript'">
+ { 'location' : server1.getHostname() ,
+ 'dsPath' : '%s/%s' % (server1.getDir(),OPENDSNAME),
+ 'dsLdifFile' : '%s/replication/Airius.ldif' % server1DataDir }
+ </call>
+
+ <!-- Check some data was imported into Directory Server -->
+ <call function="'checkImport'">
+ { 'location' : server1.getHostname(),
+ 'dsPath' : '%s/%s' % (server1.getDir(),OPENDSNAME),
+ 'dsHost' : server1.getHostname(),
+ 'dsPort' : server1.getPort(),
+ 'dsDn' : server1.getRootDn(),
+ 'dsPswd' : server1.getRootPwd(),
+ 'expectedEntries' : ['uid=scarter,ou=People,o=example',
+ 'uid=dmiller, ou=People, o=example',
+ 'uid=rhunt, ou=People, o=example'] }
+ </call>
+
+ <!-- Start the Directory Server -->
+ <call function="'StartDsWithScript'">
+ { 'location' : server1.getHostname(),
+ 'dsPath' : '%s/%s' % (server1.getDir(),OPENDSNAME) }
+ </call>
+
+ <!-- Wait for DS to start -->
+ <call function="'isAlive'">
+ { 'location' : server1.getHostname(),
+ 'dsPath' : '%s/%s' % (server1.getDir(),OPENDSNAME),
+ 'dsInstanceHost' : server1.getHostname() ,
+ 'dsInstancePort' : server1.getPort() ,
+ 'dsInstanceDn' : server1.getRootDn() ,
+ 'dsInstancePswd' : server1.getRootPwd() ,
+ 'noOfLoops' : 10 ,
+ 'noOfMilliSeconds' : 2000 }
+ </call>
+
+ <!-- Perform the total update -->
+ <call function="'TotalUpdateTask'">
+ { 'location' : server1.getHostname(),
+ 'dsPath' : '%s/%s' % (server2.getDir(),OPENDSNAME),
+ 'dsInstanceHost' : server2.getHostname(),
+ 'dsInstancePort' : server2.getPort(),
+ 'dsInstanceDn' : server2.getRootDn(),
+ 'dsInstancePswd' : server2.getRootPwd(),
+ 'taskID' : 'task',
+ 'domainDN' : 'o=example',
+ 'replicaServerID' : '1' }
+ </call>
+
+ <script>
+ STAXCode, STAXReason=STAXResult
+ </script>
+
+ <if expr="STAXCode != 0">
+ <sequence>
+ <message>
+ 'Totalupdate failed (Code=%s,Reason=%s)' % (STAXCode,STAXReason)
+ </message>
+ <tcstatus result="'fail'" />
+ </sequence>
+ </if>
+
+ <!-- Verify the total update -->
+ <call function="'checkImport'">
+ { 'location' : server1.getHostname(),
+ 'dsPath' : '%s/%s' % (server1.getDir(),OPENDSNAME),
+ 'dsHost' : server1.getHostname(),
+ 'dsPort' : server1.getPort(),
+ 'dsDn' : server1.getRootDn(),
+ 'dsPswd' : server1.getRootPwd(),
+ 'expectedEntries' : ['uid=scarter,ou=People,o=example',
+ 'uid=dmiller, ou=People, o=example',
+ 'uid=rhunt, ou=People, o=example'],
+ 'startDS' : 'no' }
+ </call>
+
+ <call function="'testCase_Postamble'"/>
+
+ </sequence>
+
+ </testcase>
+
+ <import machine="'%s' % (STAF_LOCAL_HOSTNAME)"
+ file="'%s/testcases/replication/replication_cleanup.xml' % (TESTS_DIR)"/>
+ <call function="'replication_cleanup'" />
+
+ <call function="'testSuite_Postamble'"/>
+
+ </sequence>
+
+ </block>
+
+ </sequence>
+
+ </function>
+
+</stax>
diff --git a/opends/tests/functional-tests/testcases/runFuncTests.xml b/opends/tests/functional-tests/testcases/runFuncTests.xml
index 0a7d798..8ed58b6 100755
--- a/opends/tests/functional-tests/testcases/runFuncTests.xml
+++ b/opends/tests/functional-tests/testcases/runFuncTests.xml
@@ -38,9 +38,7 @@
file="'%s/environment.xml' % (TESTS_FUNCTIONS_DIR)" />
<call function="'loadEnvironment'" />
-
-
- <!--- The Functional Tests -->
+ <!-- The Functional Tests -->
<import machine="'%s' % (STAF_LOCAL_HOSTNAME)"
file="'%s/testcases/security/security.xml' % (TESTS_DIR)" />
@@ -63,10 +61,8 @@
<call function="'main_schema'" />
<import machine="'%s' % (STAF_LOCAL_HOSTNAME)"
- file="'%s/testcases/synchronization/synchronization.xml' % (TESTS_DIR)" />
- <call function="'main_synchronization'" />
-
-
+ file="'%s/testcases/replication/replication.xml' % (TESTS_DIR)" />
+ <call function="'main_replication'" />
</sequence>
</function>
diff --git a/opends/tests/functional-tests/testcases/setup/setup.xml b/opends/tests/functional-tests/testcases/setup/setup.xml
index e3e7f74..ecbd299 100755
--- a/opends/tests/functional-tests/testcases/setup/setup.xml
+++ b/opends/tests/functional-tests/testcases/setup/setup.xml
@@ -147,12 +147,12 @@
'unzipdir' : '%s' % DIRECTORY_INSTANCE_DIR }
</call>
- <!--- Configure DS -->
+ <!--- Setup DS -->
<sequence>
<message>
- 'Configuring DS on %s' % STAF_REMOTE_HOSTNAME
+ 'Set up DS on %s' % STAF_REMOTE_HOSTNAME
</message>
- <call function="'ConfigureDsWithScript'">
+ <call function="'SetUpDsWithScript'">
{ 'location' : STAF_REMOTE_HOSTNAME,
'dsPort' : DIRECTORY_INSTANCE_PORT,
'dsBindDN' : DIRECTORY_INSTANCE_DN,
diff --git a/opends/tests/functional-tests/testcases/synchronization/basic/synchronization_basic.xml b/opends/tests/functional-tests/testcases/synchronization/basic/synchronization_basic.xml
deleted file mode 100644
index 40c89d9..0000000
--- a/opends/tests/functional-tests/testcases/synchronization/basic/synchronization_basic.xml
+++ /dev/null
@@ -1,205 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE stax SYSTEM "../../../stax.dtd">
-<!--
- ! CDDL HEADER START
- !
- ! The contents of this file are subject to the terms of the
- ! Common Development and Distribution License, Version 1.0 only
- ! (the "License"). You may not use this file except in compliance
- ! with the License.
- !
- ! You can obtain a copy of the license at
- ! trunk/opends/resource/legal-notices/OpenDS.LICENSE
- ! or https://OpenDS.dev.java.net/OpenDS.LICENSE.
- ! See the License for the specific language governing permissions
- ! and limitations under the License.
- !
- ! When distributing Covered Code, include this CDDL HEADER in each
- ! file and include the License file at
- ! trunk/opends/resource/legal-notices/OpenDS.LICENSE. If applicable,
- ! add the following below this CDDL HEADER, with the fields enclosed
- ! by brackets "[]" replaced with your own identifying information:
- ! Portions Copyright [yyyy] [name of copyright owner]
- !
- ! CDDL HEADER END
- !
- ! Portions Copyright 2006-2007 Sun Microsystems, Inc.
- ! -->
-<stax>
-
- <defaultcall function="synchronization_basic"/>
-
- <function name="synchronization_basic">
-
- <sequence>
-
- <block name="'basic'">
- <!-- Test Suite Block: Synchronization Basic -->
- <sequence>
-
- <script>
- if not CurrentTestPath.has_key('group'):
- CurrentTestPath['group']='synchronization'
- CurrentTestPath['suite']=STAXCurrentBlock
- </script>
-
- <call function="'testSuite_Preamble'"/>
-
- <!--- Test Suite information
- #@TestSuiteName Synchronization Basic Tests
- #@TestSuitePurpose Verify that the basic operations are synchronized correctly between two serrvers.
- #@TestSuiteID Basic Tests
- #@TestSuiteGroup Basic
- #@TestGroup Synchronization
- #@TestScript synchronization_basic.xml
- #@TestHTMLLink http://opends.dev.java.net/
- -->
-
-
- <block name="'Block Create DS Topology'">
- <!-- Create the topology necessary to the test suite -->
- <sequence>
-
- <script>
- basicTopologyFile = '%s/config/synchronization/basic_topology.txt' % TESTS_DIR
- </script>
-
- <message>
- 'Create DS topology as described in %s' % basicTopologyFile
- </message>
-
- <call function="'createTopology'">
- { 'topologyDescFile' : basicTopologyFile }
- </call>
-
- <call function="'checkRC'">
- { 'returncode' : RC ,
- 'result' : STAXResult }
- </call>
-
- </sequence>
- <!--- End Block Create DS Topology -->
- </block>
-
-
- <block name="'Block DS Process Active'">
- <!-- Start the servers in the topology -->
- <iterate var="server" in="_topologyServerList">
- <sequence>
-
- <message>
- 'Start DS on host %s to run on port %s' % (server.getHostname(),server.getPort())
- </message>
-
- <!--- Start DS -->
- <call function="'StartDsWithScript'">
- { 'location' : server.getHostname(),
- 'dsPath' : '%s/%s' % (server.getDir(),OPENDSNAME) }
- </call>
-
- <call function="'checkRC'">
- { 'returncode' : RC ,
- 'result' : STAXResult }
- </call>
-
- </sequence>
- </iterate>
- <!--- End Block DS Process Active -->
- </block>
-
-
- <block name="'Block Clients'">
- <!-- Execute the tests -->
- <sequence>
-
- <!-- Check that the servers in the topology started -->
- <iterate var="server" in="_topologyServerList">
- <!--- Check that DS started -->
- <call function="'isAlive'">
- { 'location' : server.getHostname(),
- 'dsPath' : '%s/%s' % (server.getDir(),OPENDSNAME),
- 'dsInstanceHost' : server.getHostname(),
- 'dsInstancePort' : server.getPort(),
- 'dsInstanceDn' : server.getRootDn(),
- 'dsInstancePswd' : server.getRootPwd(),
- 'noOfLoops' : 5 ,
- 'noOfMilliSeconds' : 2000 }
- </call>
- </iterate>
-
- <import machine="'%s' % (STAF_LOCAL_HOSTNAME)"
- file="'%s/testcases/synchronization/basic/synchronization_basic_setup.xml' % (TESTS_DIR)"/>
- <call function="'synchronization_basic_setup'" />
-
- <import machine="'%s' % (STAF_LOCAL_HOSTNAME)"
- file="'%s/testcases/synchronization/basic/synchronization_basic_bob.xml' % (TESTS_DIR)"/>
- <call function="'synchronization_basic_bob'" />
-
- </sequence>
- <!--- End Block Clients -->
- </block>
-
-
- <block name="'Block DS Process Stop'">
- <!-- Stop the servers in the topology -->
- <iterate var="server" in="_topologyServerList">
- <sequence>
-
- <message>
- 'Stop DS on host %s running on port %s' % (server.getHostname(),server.getPort())
- </message>
-
- <!--- Stop DS -->
- <call function="'StopDsWithScript'">
- { 'location' : server.getHostname(),
- 'dsHost' : server.getHostname(),
- 'dsPath' : '%s/%s' % (server.getDir(),OPENDSNAME),
- 'dsPort' : server.getPort(),
- 'dsBindDN' : server.getRootDn(),
- 'dsBindPwd' : server.getRootPwd() }
- </call>
-
- <call function="'checkRC'">
- { 'returncode' : RC ,
- 'result' : STAXResult }
- </call>
-
- </sequence>
- </iterate>
- <!--- 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 Synchronization Basic Test Suite'
- </message>
-
- <call function="'removeTopology'">
- { 'multipleInstanceTopology' : True }
- </call>
-
- <call function="'checkRC'">
- { 'returncode' : RC ,
- 'result' : STAXResult }
- </call>
-
- </sequence>
- <!-- End Block Remove DS Topology-->
- </block>
-
-
- <call function="'testSuite_Postamble'"/>
-
- </sequence>
- <!-- End Test Suite Block: Synchronization Basic -->
- </block>
-
- </sequence>
-
- </function>
-
-</stax>
diff --git a/opends/tests/functional-tests/testcases/synchronization/basic/synchronization_basic_bob.xml b/opends/tests/functional-tests/testcases/synchronization/basic/synchronization_basic_bob.xml
deleted file mode 100644
index 4875fb6..0000000
--- a/opends/tests/functional-tests/testcases/synchronization/basic/synchronization_basic_bob.xml
+++ /dev/null
@@ -1,220 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE stax SYSTEM "../../../stax.dtd">
-<!--
- ! CDDL HEADER START
- !
- ! The contents of this file are subject to the terms of the
- ! Common Development and Distribution License, Version 1.0 only
- ! (the "License"). You may not use this file except in compliance
- ! with the License.
- !
- ! You can obtain a copy of the license at
- ! trunk/opends/resource/legal-notices/OpenDS.LICENSE
- ! or https://OpenDS.dev.java.net/OpenDS.LICENSE.
- ! See the License for the specific language governing permissions
- ! and limitations under the License.
- !
- ! When distributing Covered Code, include this CDDL HEADER in each
- ! file and include the License file at
- ! trunk/opends/resource/legal-notices/OpenDS.LICENSE. If applicable,
- ! add the following below this CDDL HEADER, with the fields enclosed
- ! by brackets "[]" replaced with your own identifying information:
- ! Portions Copyright [yyyy] [name of copyright owner]
- !
- ! CDDL HEADER END
- !
- ! Portions Copyright 2006-2007 Sun Microsystems, Inc.
- ! -->
-<stax>
-
- <defaultcall function="synchronization_basic_bob"/>
-
- <function name="synchronization_basic_bob">
-
- <sequence>
-
- <!--- Test Case information
- #@TestMarker Synchronization Basic Tests
- #@TestName Synchronization: Basic: Add Entry
- #@TestID Add Entry
- #@TestPurpose Check that an entry add is well propagated by synchronization.
- #@TestPreamble
- #@TestSteps
- #@TestPostamble
- #@TestResult
- -->
- <testcase name="'Synchronization: Basic: Add Entry'">
- <sequence>
- <call function="'testCase_Preamble'"/>
- <message>
- 'Synchronization: Basic: Add Entry. Check that an added entry is well propagated by synchronization.'
- </message>
-
- <call function="'addEntry'">
- { 'location' : clientHost,
- 'dsPath' : clientPath,
- 'dsInstanceHost' : server1.getHostname(),
- 'dsInstancePort' : server1.getPort(),
- 'dsInstanceDn' : server1.getRootDn(),
- 'dsInstancePswd' : server1.getRootPwd(),
- 'entryToBeAdded' : '%s/synchronization_add_root_suffix.ldif' % clientDataDir }
- </call>
-
- <call function="'checkRC'">
- { 'returncode' : RC,
- 'result' : STAXResult }
- </call>
-
-
- <call function="'SearchObject'">
- { 'location' : clientHost,
- 'dsPath' : clientPath,
- 'dsInstanceHost' : server2.getHostname() ,
- 'dsInstancePort' : server2.getPort() ,
- 'dsInstanceDn' : server2.getRootDn() ,
- 'dsInstancePswd' : server2.getRootPwd() ,
- 'dsBaseDN' : synchroSuffix ,
- 'dsFilter' : 'objectclass=*' }
- </call>
-
- <call function="'checktestRC'">
- { 'returncode' : RC,
- 'result' : STAXResult,
- 'expected' : 0 }
- </call>
- <call function="'testCase_Postamble'"/>
- </sequence>
- </testcase>
-
-
-
- <!--- Test Case information
- #@TestMarker Synchronization Basic Tests
- #@TestName Synchronization: Basic: Modify Entry
- #@TestID Modify Entry
- #@TestPurpose Check that an entry modify is well propagated by synchronization.
- #@TestPreamble
- #@TestSteps
- #@TestPostamble
- #@TestResult
- -->
- <testcase name="'Synchronization: Basic: Modify Entry'">
- <sequence>
- <call function="'testCase_Preamble'"/>
- <message>
- 'Synchronization: Basic: Modify Entry. Check that an entry modify is well propagated by synchronization.'
- </message>
-
- <call function="'addEntry'">
- { 'location' : clientHost,
- 'dsPath' : clientPath,
- 'dsInstanceHost' : server1.getHostname(),
- 'dsInstancePort' : server1.getPort() ,
- 'dsInstanceDn' : server1.getRootDn() ,
- 'dsInstancePswd' : server1.getRootPwd() ,
- 'entryToBeAdded' : '%s/synchronization_add_single.ldif' % clientDataDir }
- </call>
-
- <call function="'checkRC'">
- { 'returncode' : RC ,
- 'result' : STAXResult }
- </call>
-
-
- <call function="'modifyEntry'">
- { 'location' : clientHost,
- 'dsPath' : clientPath,
- 'dsInstanceHost' : server1.getHostname() ,
- 'dsInstancePort' : server1.getPort() ,
- 'dsInstanceDn' : server1.getRootDn() ,
- 'dsInstancePswd' : server1.getRootPwd() ,
- 'entryToBeModified' : '%s/synchronization_mod.ldif' % clientDataDir }
- </call>
-
- <call function="'checkRC'">
- { 'returncode' : RC ,
- 'result' : STAXResult }
- </call>
-
-
- <call function="'SearchObject'">
- { 'location' : clientHost,
- 'dsPath' : clientPath,
- 'dsInstanceHost' : server2.getHostname() ,
- 'dsInstancePort' : server2.getPort() ,
- 'dsInstanceDn' : server2.getRootDn() ,
- 'dsInstancePswd' : server2.getRootPwd() ,
- 'dsBaseDN' : entryDn,
- 'dsFilter' : '%s=%s' % (attr_type,attr_value) }
- </call>
-
- <call function="'checktestRC'">
- { 'returncode' : RC ,
- 'result' : STAXResult ,
- 'expected' : 0 }
- </call>
- <call function="'testCase_Postamble'"/>
- </sequence>
- </testcase>
-
-
- <!--- Test Case information
- #@TestMarker Synchronization Basic Tests
- #@TestName Synchronization: Basic: Delete Entry
- #@TestID Delete Entry
- #@TestPurpose Check that an entry delete is well propagated by synchronization.
- #@TestPreamble
- #@TestSteps
- #@TestPostamble
- #@TestResult
- -->
- <testcase name="'Synchronization: Basic: Delete Entry'">
- <sequence>
- <call function="'testCase_Preamble'"/>
- <message>
- 'Synchronization: Basic: Delete Entry. Check that an entry delete is well propagated by synchronization.'
- </message>
-
- <call function="'DeleteEntry'">
- { 'location' : clientHost,
- 'dsPath' : clientPath,
- 'dsInstanceHost' : server1.getHostname() ,
- 'dsInstancePort' : server1.getPort() ,
- 'dsInstanceDn' : server1.getRootDn() ,
- 'dsInstancePswd' : server1.getRootPwd() ,
- 'dsBaseDN' : entryDn }
- </call>
-
- <call function="'checkRC'">
- { 'returncode' : RC ,
- 'result' : STAXResult }
- </call>
-
-
- <call function="'SearchObject'">
- { 'location' : clientHost,
- 'dsPath' : clientPath,
- 'dsInstanceHost' : server2.getHostname() ,
- 'dsInstancePort' : server2.getPort() ,
- 'dsInstanceDn' : server2.getRootDn() ,
- 'dsInstancePswd' : server2.getRootPwd() ,
- 'dsBaseDN' : entryDn,
- 'dsFilter' : 'objectclass=*' }
- </call>
-
- <call function="'checktestRC'">
- { 'returncode' : RC ,
- 'result' : STAXResult ,
- 'expected' : 32 }
- </call>
- <call function="'testCase_Postamble'"/>
- </sequence>
- </testcase>
-
-
-
- </sequence>
-
- </function>
-
-</stax>
diff --git a/opends/tests/functional-tests/testcases/synchronization/basic/synchronization_basic_setup.xml b/opends/tests/functional-tests/testcases/synchronization/basic/synchronization_basic_setup.xml
deleted file mode 100644
index f540013..0000000
--- a/opends/tests/functional-tests/testcases/synchronization/basic/synchronization_basic_setup.xml
+++ /dev/null
@@ -1,159 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE stax SYSTEM "../../../stax.dtd">
-<!--
- ! CDDL HEADER START
- !
- ! The contents of this file are subject to the terms of the
- ! Common Development and Distribution License, Version 1.0 only
- ! (the "License"). You may not use this file except in compliance
- ! with the License.
- !
- ! You can obtain a copy of the license at
- ! trunk/opends/resource/legal-notices/OpenDS.LICENSE
- ! or https://OpenDS.dev.java.net/OpenDS.LICENSE.
- ! See the License for the specific language governing permissions
- ! and limitations under the License.
- !
- ! When distributing Covered Code, include this CDDL HEADER in each
- ! file and include the License file at
- ! trunk/opends/resource/legal-notices/OpenDS.LICENSE. If applicable,
- ! add the following below this CDDL HEADER, with the fields enclosed
- ! by brackets "[]" replaced with your own identifying information:
- ! Portions Copyright [yyyy] [name of copyright owner]
- !
- ! CDDL HEADER END
- !
- ! Portions Copyright 2006-2007 Sun Microsystems, Inc.
- ! -->
-<stax>
-
- <defaultcall function="synchronization_basic_setup"/>
-
- <function name="synchronization_basic_setup">
-
- <sequence>
-
- <!--- Test Case information
- #@TestMarker Synchronization Basic Tests
- #@TestName Synchronization: Basic: Setup
- #@TestID Setup
- #@TestPurpose Setup the client for the test suite.
- #@TestPreamble
- #@TestSteps
- #@TestPostamble
- #@TestResult
- -->
- <testcase name="'Synchronization: Basic: Setup'">
- <sequence>
- <call function="'testCase_Preamble'"/>
-
- <!--- Setup the client for the Basic test suite -->
- <message>
- 'Synchronization: Basic: Setup. Get client ready for Basic tests.'
- </message>
-
-
- <script>
- client = _topologyServerList[0]
- clientHost = client.getHostname()
- clientPath = '%s/%s' % (client.getDir(),OPENDSNAME)
- clientDataDir = '%s/functional-tests/shared/data' % client.getDir()
-
- server1 = _topologyServerList[0]
- server2 = _topologyServerList[1]
-
- synchroSuffix = server1.getSynchronizedSuffixList()[0].getSuffixDn()
- entryDn = 'uid=scarter,%s' % synchroSuffix
- mod_type = 'replace'
- attr_type = 'roomnumber'
- attr_value = '1111'
- </script>
-
-
-
- <script>
- filename = 'synchronization_add_root_suffix.ldif'
- filePath = '%s/%s' % (TMP_DATA_DIR,filename)
- write_synchronization_add_root_suffix_ldif_file(filePath, synchroSuffix)
- </script>
-
- <!-- Copy the synchronization_add_root_suffix ldif to client host -->
- <message>
- 'Copy %s file from %s to %s' % (filename,TMP_DATA_DIR,clientDataDir)
- </message>
- <call function="'copyFile'">
- { 'srcfile' : filePath,
- 'destfile' : '%s/%s' % (clientDataDir,filename),
- 'remotehost' : client.getHostname() }
- </call>
-
-
- <script>
- filename = 'synchronization_add_single.ldif'
- filePath = '%s/%s' % (TMP_DATA_DIR,filename)
- write_synchronization_add_single_ldif_file(filePath, synchroSuffix)
- </script>
-
- <!-- Copy the synchronization_add_single ldif to client host -->
- <message>
- 'Copy %s file from %s to %s' % (filename,TMP_DATA_DIR,clientDataDir)
- </message>
- <call function="'copyFile'">
- { 'srcfile' : filePath,
- 'destfile' : '%s/%s' % (clientDataDir,filename),
- 'remotehost' : client.getHostname() }
- </call>
-
-
- <script>
- filename = 'synchronization_add_multiple.ldif'
- filePath = '%s/%s' % (TMP_DATA_DIR,filename)
- write_synchronization_add_multiple_ldif_file(filePath, synchroSuffix)
- </script>
-
- <!-- Copy the synchronization_add_multiple ldif to client host -->
- <message>
- 'Copy %s file from %s to %s' % (filename,TMP_DATA_DIR,clientDataDir)
- </message>
- <call function="'copyFile'">
- { 'srcfile' : filePath,
- 'destfile' : '%s/%s' % (clientDataDir,filename),
- 'remotehost' : client.getHostname() }
- </call>
-
-
-
- <script>
- filename = 'synchronization_mod.ldif'
- filePath = '%s/%s' % (TMP_DATA_DIR,filename)
- write_synchronization_mod_ldif_file(filePath, entryDn, mod_type, attr_type, attr_value)
- </script>
-
- <!-- Copy the synchronization_mod ldif to client host -->
- <message>
- 'Copy %s file from %s to %s' % (filename,TMP_DATA_DIR,clientDataDir)
- </message>
- <call function="'copyFile'">
- { 'srcfile' : filePath,
- 'destfile' : '%s/%s' % (clientDataDir,filename),
- 'remotehost' : client.getHostname() }
- </call>
-
-
-
-
- <call function="'checktestRC'">
- { 'returncode' : RC ,
- 'result' : STAXResult }
- </call>
-
- <call function="'testCase_Postamble'"/>
-
- </sequence>
- </testcase>
-
- </sequence>
-
- </function>
-
-</stax>
--
Gitblit v1.10.0