-
Notifications
You must be signed in to change notification settings - Fork 27
/
bug233642-3.py
111 lines (98 loc) · 2.79 KB
/
bug233642-3.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
from bug_harness import DSAdminHarness as DSAdmin
from dsadmin import Entry
import os
import sys
import time
import ldap
host1 = "localhost.localdomain"
host2 = host1
cfgport = 1100
m1replargs = {
'suffix': "dc=example,dc=com",
'bename': "userRoot",
'binddn': "cn=replrepl,cn=config",
'bindcn': "replrepl",
'bindpw': "replrepl",
'log' : True
}
#os.environ['USE_DBX'] = "1"
m1 = DSAdmin.createAndSetupReplica({
'newrootpw': 'password',
'newhost': host1,
'newport': cfgport+10,
'newinst': 'm1',
'newsuffix': 'dc=example,dc=com',
'verbose': True,
'no_admin': True
}, m1replargs
)
#del os.environ['USE_DBX']
m2replargs = {
'suffix': "dc=example,dc=com",
'bename': "userRoot",
'binddn': "cn=replrepl,cn=config",
'bindcn': "replrepl",
'bindpw': "replrepl"
}
#os.environ['USE_DBX'] = 1
m2 = DSAdmin.createAndSetupReplica({
'newrootpw': 'password',
'newhost': host2,
'newport': cfgport+20,
'newinst': 'm2',
'newsuffix': 'dc=example,dc=com',
'verbose': True,
'no_admin': True
}, m2replargs
)
#del os.environ['USE_DBX']
initfile = ''
if os.environ.has_key('SERVER_ROOT'):
initfile = "%s/slapd-%s/ldif/Example.ldif" % (m1.sroot,m1.inst)
else:
initfile = "%s/share/dirsrv/data/Example.ldif" % os.environ.get('PREFIX', '/usr')
#m1.importLDIF(initfile, '', "userRoot", True)
print "create agreements and init consumers"
agmtm1tom2 = m1.setupAgreement(m2, m1replargs)
time.sleep(5)
m1.startReplication_async(agmtm1tom2)
print "waiting for init to finish"
time.sleep(5)
m1.waitForReplInit(agmtm1tom2)
agmtm2tom1 = m2.setupAgreement(m1, m2replargs)
basedn = "dc=example,dc=com"
nents = 2
print "Add %d entries alternately . . ." % nents
svrs = (m1, m2)
nsvrs = len(svrs)
for ii in range(0,nents):
dn = "cn=%d, %s" % (ii, basedn)
ent = Entry(dn)
ent.setValues('objectclass', 'person')
ent.setValues('sn', 'testuser')
svr = svrs[ii % nsvrs]
svr.add_s(ent)
print "Added %s to %s" % (dn, svr)
print "see if all entries are on both servers . . ."
time.sleep(5)
for ii in range(0,nents):
dn = "cn=%d, %s" % (ii, basedn)
ent = m1.getEntry(dn, ldap.SCOPE_BASE)
ent = m2.getEntry(dn, ldap.SCOPE_BASE)
print """
Do add description, modify description, delete description to each entry alternately . . .
"""
dn = "cn=%d, %s" % (0, basedn)
for ii in range(0,100):
descstr = "this is description %d" % ii
modadd = [(ldap.MOD_ADD, 'description', descstr)]
moddel = [(ldap.MOD_DELETE, 'description', descstr)]
m1.modify_s(dn, modadd)
time.sleep(1)
m2.modify_s(dn, moddel)
ent = m1.getEntry(dn, ldap.SCOPE_BASE)
if ent.description:
print "Error: m1 has description attribute: %s" % str(ent.getValues("description"))
ent = m2.getEntry(dn, ldap.SCOPE_BASE)
if ent.description:
print "Error: m2 has description attribute: %s" % str(ent.getValues("description"))