{ 'topologyFile' : '%s/config/replication/basic_topology.txt'\
% TESTS_DIR,
'dataFile' : 'Short_Example.ldif',
'isolateLdapServers' : True,
'enableDebugLogs' : False
}
'Replication: Conflict: Basic check 0. \
Check replication assures synchronization after a simultaneous \
conflictuous modify on 2 different servers (regardless of the \
prevailing modify)'
{ 'location' : server1Host,
'dsPath' : server1Path,
'dsInstanceHost' : server1Host,
'dsInstancePort' : server1.getPort(),
'dsInstanceDn' : server1.getRootDn(),
'dsInstancePswd' : server1.getRootPwd(),
'DNToAdd' : entry.getDn(),
'listAttributes' : entry.getAttrList()
}
{ 'sleepForMilliSeconds' : 2000 }
{ 'location' : server.getHostname(),
'dsPath' : '%s/%s' \
% (server.getDir(), OPENDSNAME),
'dsInstanceHost' : server.getHostname(),
'dsInstancePort' : server.getPort(),
'dsInstanceDn' : server.getRootDn(),
'dsInstancePswd' : server.getRootPwd(),
'DNToModify' : entry.getDn(),
'attributeName' : 'employeeNumber',
'newAttributeValue' : '%i' % (i + 1),
'changetype' : 'replace'
}
{ 'location' : server.getHostname(),
'dsPath' : '%s/%s' \
% (server.getDir(), OPENDSNAME),
'dsInstanceHost' : server.getHostname(),
'dsInstancePort' : server.getPort(),
'dsInstanceDn' : server.getRootDn(),
'dsInstancePswd' : server.getRootPwd(),
'dsBaseDN' : entry.getDn(),
'dsFilter' : 'objectclass=*',
'dsAttributes' : 'employeeNumber'
}
'+++++++++++ LDAPSEARCH RESULT for %s:%s ++++++++\n%s' \
% (server.getHostname(), server.getPort(), searchResult)
[ clientHost, clientPath, server1, [server2], synchroSuffix ]
{ 'location' : clientHost,
'dsPath' : clientPath,
'dsInstanceHost' : server1Host,
'dsInstancePort' : server1.getPort(),
'dsInstanceDn' : server1.getRootDn(),
'dsInstancePswd' : server1.getRootPwd(),
'dsDn' : [entry.getDn()]
}
'Replication: Conflict: double_replace_multi. \
Double replace a multi-valued attribute'
{ 'location' : server1Host,
'dsPath' : server1Path,
'dsInstanceHost' : server1Host,
'dsInstancePort' : server1.getPort(),
'dsInstanceDn' : server1.getRootDn(),
'dsInstancePswd' : server1.getRootPwd(),
'DNToAdd' : entry.getDn(),
'listAttributes' : entry.getAttrList()
}
[ clientHost, clientPath, [server1, server2] ]
{ 'location' : server.getHostname(),
'dsPath' : '%s/%s' \
% (server.getDir(), OPENDSNAME),
'dsInstanceHost' : server.getHostname(),
'dsInstancePort' : server.getPort(),
'dsInstanceDn' : server.getRootDn(),
'dsInstancePswd' : server.getRootPwd(),
'DNToModify' : entry.getDn(),
'listAttributes' : mods[i],
'changetype' : 'replace'
}
{ 'location' : server.getHostname(),
'dsPath' : '%s/%s' \
% (server.getDir(), OPENDSNAME),
'dsInstanceHost' : server.getHostname(),
'dsInstancePort' : server.getPort(),
'dsInstanceDn' : server.getRootDn(),
'dsInstancePswd' : server.getRootPwd(),
'dsBaseDN' : entry.getDn(),
'dsFilter' : 'objectclass=*',
'dsAttributes' : 'description'
}
'+++++++++++ LDAPSEARCH RESULT for %s:%s ++++++++\n%s' \
% (server.getHostname(), server.getPort(), searchResult)
[ clientHost, clientPath, [server1, server2] ]
{ 'location' : server.getHostname(),
'dsPath' : '%s/%s' \
% (server.getDir(), OPENDSNAME),
'dsInstanceHost' : server.getHostname(),
'dsInstancePort' : server.getPort(),
'dsInstanceDn' : server.getRootDn(),
'dsInstancePswd' : server.getRootPwd(),
'dsBaseDN' : entry.getDn(),
'dsFilter' : 'objectclass=*',
'dsAttributes' : 'description'
}
'+++++++++++ LDAPSEARCH RESULT for %s:%s ++++++++\n%s' \
% (server.getHostname(), server.getPort(), searchResult)
[ clientHost, clientPath, server1, [server2], synchroSuffix ]
{ 'location' : clientHost,
'dsPath' : clientPath,
'dsInstanceHost' : server1Host,
'dsInstancePort' : server1.getPort(),
'dsInstanceDn' : server1.getRootDn(),
'dsInstancePswd' : server1.getRootPwd(),
'dsDn' : [entry.getDn()]
}
'Replication: Conflict: double_replace_single. \
Double replace a single-valued attribute'
{ 'location' : server1Host,
'dsPath' : server1Path,
'dsInstanceHost' : server1Host,
'dsInstancePort' : server1.getPort(),
'dsInstanceDn' : server1.getRootDn(),
'dsInstancePswd' : server1.getRootPwd(),
'DNToAdd' : entry.getDn(),
'listAttributes' : entry.getAttrList()
}
[ clientHost, clientPath, [server1, server2] ]
{ 'location' : server.getHostname(),
'dsPath' : '%s/%s' \
% (server.getDir(), OPENDSNAME),
'dsInstanceHost' : server.getHostname(),
'dsInstancePort' : server.getPort(),
'dsInstanceDn' : server.getRootDn(),
'dsInstancePswd' : server.getRootPwd(),
'DNToModify' : entry.getDn(),
'attributeName' : 'employeeNumber',
'newAttributeValue' : '%i' % (i + 1),
'changetype' : 'replace'
}
{ 'location' : server.getHostname(),
'dsPath' : '%s/%s' \
% (server.getDir(), OPENDSNAME),
'dsInstanceHost' : server.getHostname(),
'dsInstancePort' : server.getPort(),
'dsInstanceDn' : server.getRootDn(),
'dsInstancePswd' : server.getRootPwd(),
'dsBaseDN' : entry.getDn(),
'dsFilter' : 'objectclass=*',
'dsAttributes' : 'employeeNumber'
}
'+++++++++++ LDAPSEARCH RESULT for %s:%s ++++++++\n%s' \
% (server.getHostname(), server.getPort(), searchResult)
[ clientHost, clientPath, [server1, server2] ]
{ 'location' : server.getHostname(),
'dsPath' : '%s/%s' \
% (server.getDir(), OPENDSNAME),
'dsInstanceHost' : server.getHostname(),
'dsInstancePort' : server.getPort(),
'dsInstanceDn' : server.getRootDn(),
'dsInstancePswd' : server.getRootPwd(),
'dsBaseDN' : entry.getDn(),
'dsFilter' : 'objectclass=*',
'dsAttributes' : 'employeeNumber'
}
'+++++++++++ LDAPSEARCH RESULT for %s:%s ++++++++\n%s' \
% (server.getHostname(), server.getPort(), searchResult)
[ clientHost, clientPath, server1, [server2], synchroSuffix ]
{ 'location' : clientHost,
'dsPath' : clientPath,
'dsInstanceHost' : server1Host,
'dsInstancePort' : server1.getPort(),
'dsInstanceDn' : server1.getRootDn(),
'dsInstancePswd' : server1.getRootPwd(),
'dsDn' : [entry.getDn()]
}
'Replication: Conflict: double_mod_del_add_multi_1. \
Double replace (del+add) same value with any value of a \
multi-valued attribute'
{ 'location' : server1Host,
'dsPath' : server1Path,
'dsInstanceHost' : server1Host,
'dsInstancePort' : server1.getPort(),
'dsInstanceDn' : server1.getRootDn(),
'dsInstancePswd' : server1.getRootPwd(),
'DNToAdd' : entry.getDn(),
'listAttributes' : entry.getAttrList()
}
[ clientHost, clientPath, [server1, server2] ]
{ 'location' : server.getHostname(),
'dsPath' : '%s/%s' \
% (server.getDir(), OPENDSNAME),
'dsInstanceHost' : server.getHostname(),
'dsInstancePort' : server.getPort(),
'dsInstanceDn' : server.getRootDn(),
'dsInstancePswd' : server.getRootPwd(),
'DNToModify' : entry.getDn(),
'listAttributes' : mods[i][0],
'changetype' : 'delete'
}
{ 'location' : server.getHostname(),
'dsPath' : '%s/%s' \
% (server.getDir(), OPENDSNAME),
'dsInstanceHost' : server.getHostname(),
'dsInstancePort' : server.getPort(),
'dsInstanceDn' : server.getRootDn(),
'dsInstancePswd' : server.getRootPwd(),
'DNToModify' : entry.getDn(),
'listAttributes' : mods[i][1],
'changetype' : 'add'
}
{ 'location' : server.getHostname(),
'dsPath' : '%s/%s' \
% (server.getDir(), OPENDSNAME),
'dsInstanceHost' : server.getHostname(),
'dsInstancePort' : server.getPort(),
'dsInstanceDn' : server.getRootDn(),
'dsInstancePswd' : server.getRootPwd(),
'dsBaseDN' : entry.getDn(),
'dsFilter' : 'objectclass=*',
'dsAttributes' : 'description'
}
'+++++++++++ LDAPSEARCH RESULT for %s:%s ++++++++\n%s' \
% (server.getHostname(), server.getPort(), searchResult)
[ clientHost, clientPath, [server1, server2] ]
{ 'location' : server.getHostname(),
'dsPath' : '%s/%s' \
% (server.getDir(), OPENDSNAME),
'dsInstanceHost' : server.getHostname(),
'dsInstancePort' : server.getPort(),
'dsInstanceDn' : server.getRootDn(),
'dsInstancePswd' : server.getRootPwd(),
'dsBaseDN' : entry.getDn(),
'dsFilter' : 'objectclass=*',
'dsAttributes' : 'description'
}
'+++++++++++ LDAPSEARCH RESULT for %s:%s ++++++++\n%s' \
% (server.getHostname(), server.getPort(), searchResult)
[ clientHost, clientPath, server1, [server2], synchroSuffix ]
{ 'location' : clientHost,
'dsPath' : clientPath,
'dsInstanceHost' : server1Host,
'dsInstancePort' : server1.getPort(),
'dsInstanceDn' : server1.getRootDn(),
'dsInstancePswd' : server1.getRootPwd(),
'dsDn' : [entry.getDn()]
}
'Replication: Conflict: double_mod_del_add_multi_2. \
Double replace (del+add) any value with same value of a \
multi-valued attribute'
{ 'location' : server1Host,
'dsPath' : server1Path,
'dsInstanceHost' : server1Host,
'dsInstancePort' : server1.getPort(),
'dsInstanceDn' : server1.getRootDn(),
'dsInstancePswd' : server1.getRootPwd(),
'DNToAdd' : entry.getDn(),
'listAttributes' : entry.getAttrList()
}
[ clientHost, clientPath, [server1, server2] ]
{ 'location' : server.getHostname(),
'dsPath' : '%s/%s' \
% (server.getDir(), OPENDSNAME),
'dsInstanceHost' : server.getHostname(),
'dsInstancePort' : server.getPort(),
'dsInstanceDn' : server.getRootDn(),
'dsInstancePswd' : server.getRootPwd(),
'DNToModify' : entry.getDn(),
'listAttributes' : mods[i][0],
'changetype' : 'delete'
}
{ 'location' : server.getHostname(),
'dsPath' : '%s/%s' \
% (server.getDir(), OPENDSNAME),
'dsInstanceHost' : server.getHostname(),
'dsInstancePort' : server.getPort(),
'dsInstanceDn' : server.getRootDn(),
'dsInstancePswd' : server.getRootPwd(),
'DNToModify' : entry.getDn(),
'listAttributes' : mods[i][1],
'changetype' : 'add'
}
{ 'location' : server.getHostname(),
'dsPath' : '%s/%s' \
% (server.getDir(), OPENDSNAME),
'dsInstanceHost' : server.getHostname(),
'dsInstancePort' : server.getPort(),
'dsInstanceDn' : server.getRootDn(),
'dsInstancePswd' : server.getRootPwd(),
'dsBaseDN' : entry.getDn(),
'dsFilter' : 'objectclass=*',
'dsAttributes' : 'description'
}
'+++++++++++ LDAPSEARCH RESULT for %s:%s ++++++++\n%s' \
% (server.getHostname(), server.getPort(), searchResult)
[ clientHost, clientPath, [server1, server2] ]
{ 'location' : server.getHostname(),
'dsPath' : '%s/%s' \
% (server.getDir(), OPENDSNAME),
'dsInstanceHost' : server.getHostname(),
'dsInstancePort' : server.getPort(),
'dsInstanceDn' : server.getRootDn(),
'dsInstancePswd' : server.getRootPwd(),
'dsBaseDN' : entry.getDn(),
'dsFilter' : 'objectclass=*',
'dsAttributes' : 'description'
}
'+++++++++++ LDAPSEARCH RESULT for %s:%s ++++++++\n%s' \
% (server.getHostname(), server.getPort(), searchResult)
[ clientHost, clientPath, server1, [server2], synchroSuffix ]
{ 'location' : clientHost,
'dsPath' : clientPath,
'dsInstanceHost' : server1Host,
'dsInstancePort' : server1.getPort(),
'dsInstanceDn' : server1.getRootDn(),
'dsInstancePswd' : server1.getRootPwd(),
'dsDn' : [entry.getDn()]
}
'Replication: Conflict: double_mod_add_multi. \
Double mod_add a multi-valued attribute'
{ 'location' : server1Host,
'dsPath' : server1Path,
'dsInstanceHost' : server1Host,
'dsInstancePort' : server1.getPort(),
'dsInstanceDn' : server1.getRootDn(),
'dsInstancePswd' : server1.getRootPwd(),
'DNToAdd' : entry.getDn(),
'listAttributes' : entry.getAttrList()
}
[ clientHost, clientPath, [server1, server2] ]
{ 'location' : server.getHostname(),
'dsPath' : '%s/%s' \
% (server.getDir(), OPENDSNAME),
'dsInstanceHost' : server.getHostname(),
'dsInstancePort' : server.getPort(),
'dsInstanceDn' : server.getRootDn(),
'dsInstancePswd' : server.getRootPwd(),
'DNToModify' : entry.getDn(),
'listAttributes' : mods[i][0],
'changetype' : 'add'
}
{ 'location' : server.getHostname(),
'dsPath' : '%s/%s' \
% (server.getDir(), OPENDSNAME),
'dsInstanceHost' : server.getHostname(),
'dsInstancePort' : server.getPort(),
'dsInstanceDn' : server.getRootDn(),
'dsInstancePswd' : server.getRootPwd(),
'dsBaseDN' : entry.getDn(),
'dsFilter' : 'objectclass=*',
'dsAttributes' : 'description'
}
'+++++++++++ LDAPSEARCH RESULT for %s:%s ++++++++\n%s' \
% (server.getHostname(), server.getPort(), searchResult)
[ clientHost, clientPath, [server1, server2] ]
{ 'location' : server.getHostname(),
'dsPath' : '%s/%s' \
% (server.getDir(), OPENDSNAME),
'dsInstanceHost' : server.getHostname(),
'dsInstancePort' : server.getPort(),
'dsInstanceDn' : server.getRootDn(),
'dsInstancePswd' : server.getRootPwd(),
'dsBaseDN' : entry.getDn(),
'dsFilter' : 'objectclass=*',
'dsAttributes' : 'description'
}
'+++++++++++ LDAPSEARCH RESULT for %s:%s ++++++++\n%s' \
% (server.getHostname(), server.getPort(), searchResult)
[ clientHost, clientPath, server1, [server2], synchroSuffix ]
{ 'location' : clientHost,
'dsPath' : clientPath,
'dsInstanceHost' : server1Host,
'dsInstancePort' : server1.getPort(),
'dsInstanceDn' : server1.getRootDn(),
'dsInstancePswd' : server1.getRootPwd(),
'dsDn' : [entry.getDn()]
}
'Replication: Conflict: double_mod_add_single. \
Double mod_add a single-valued attribute'
{ 'location' : server1Host,
'dsPath' : server1Path,
'dsInstanceHost' : server1Host,
'dsInstancePort' : server1.getPort(),
'dsInstanceDn' : server1.getRootDn(),
'dsInstancePswd' : server1.getRootPwd(),
'DNToAdd' : entry.getDn(),
'listAttributes' : entry.getAttrList()
}
[ clientHost, clientPath, [server1, server2] ]
{ 'location' : server.getHostname(),
'dsPath' : '%s/%s' \
% (server.getDir(), OPENDSNAME),
'dsInstanceHost' : server.getHostname(),
'dsInstancePort' : server.getPort(),
'dsInstanceDn' : server.getRootDn(),
'dsInstancePswd' : server.getRootPwd(),
'DNToModify' : entry.getDn(),
'listAttributes' : mods[i][0],
'changetype' : 'add'
}
{ 'location' : server.getHostname(),
'dsPath' : '%s/%s' \
% (server.getDir(), OPENDSNAME),
'dsInstanceHost' : server.getHostname(),
'dsInstancePort' : server.getPort(),
'dsInstanceDn' : server.getRootDn(),
'dsInstancePswd' : server.getRootPwd(),
'dsBaseDN' : entry.getDn(),
'dsFilter' : 'objectclass=*',
'dsAttributes' : 'employeeNumber'
}
'+++++++++++ LDAPSEARCH RESULT for %s:%s ++++++++\n%s' \
% (server.getHostname(), server.getPort(), searchResult)
[ clientHost, clientPath, [server1, server2] ]
{ 'location' : server.getHostname(),
'dsPath' : '%s/%s' \
% (server.getDir(), OPENDSNAME),
'dsInstanceHost' : server.getHostname(),
'dsInstancePort' : server.getPort(),
'dsInstanceDn' : server.getRootDn(),
'dsInstancePswd' : server.getRootPwd(),
'dsBaseDN' : entry.getDn(),
'dsFilter' : 'objectclass=*',
'dsAttributes' : 'employeeNumber'
}
'+++++++++++ LDAPSEARCH RESULT for %s:%s ++++++++\n%s' \
% (server.getHostname(), server.getPort(), searchResult)
[ clientHost, clientPath, server1, [server2], synchroSuffix ]
{ 'location' : clientHost,
'dsPath' : clientPath,
'dsInstanceHost' : server1Host,
'dsInstancePort' : server1.getPort(),
'dsInstanceDn' : server1.getRootDn(),
'dsInstancePswd' : server1.getRootPwd(),
'dsDn' : [entry.getDn()]
}
'Replication: Conflict: double_mod_del_multi. \
Double mod_delete a multi-valued attribute'
{ 'location' : server1Host,
'dsPath' : server1Path,
'dsInstanceHost' : server1Host,
'dsInstancePort' : server1.getPort(),
'dsInstanceDn' : server1.getRootDn(),
'dsInstancePswd' : server1.getRootPwd(),
'DNToAdd' : entry.getDn(),
'listAttributes' : entry.getAttrList()
}
[ clientHost, clientPath, [server1, server2] ]
{ 'location' : server.getHostname(),
'dsPath' : '%s/%s' \
% (server.getDir(), OPENDSNAME),
'dsInstanceHost' : server.getHostname(),
'dsInstancePort' : server.getPort(),
'dsInstanceDn' : server.getRootDn(),
'dsInstancePswd' : server.getRootPwd(),
'DNToModify' : entry.getDn(),
'listAttributes' : mods[i][0],
'changetype' : 'delete'
}
{ 'location' : server.getHostname(),
'dsPath' : '%s/%s' \
% (server.getDir(), OPENDSNAME),
'dsInstanceHost' : server.getHostname(),
'dsInstancePort' : server.getPort(),
'dsInstanceDn' : server.getRootDn(),
'dsInstancePswd' : server.getRootPwd(),
'dsBaseDN' : entry.getDn(),
'dsFilter' : 'objectclass=*',
'dsAttributes' : 'description'
}
'+++++++++++ LDAPSEARCH RESULT for %s:%s ++++++++\n%s' \
% (server.getHostname(), server.getPort(), searchResult)
[ clientHost, clientPath, [server1, server2] ]
{ 'location' : server.getHostname(),
'dsPath' : '%s/%s' \
% (server.getDir(), OPENDSNAME),
'dsInstanceHost' : server.getHostname(),
'dsInstancePort' : server.getPort(),
'dsInstanceDn' : server.getRootDn(),
'dsInstancePswd' : server.getRootPwd(),
'dsBaseDN' : entry.getDn(),
'dsFilter' : 'objectclass=*',
'dsAttributes' : 'description'
}
'+++++++++++ LDAPSEARCH RESULT for %s:%s ++++++++\n%s' \
% (server.getHostname(), server.getPort(), searchResult)
[ clientHost, clientPath, server1, [server2], synchroSuffix ]
{ 'location' : clientHost,
'dsPath' : clientPath,
'dsInstanceHost' : server1Host,
'dsInstancePort' : server1.getPort(),
'dsInstanceDn' : server1.getRootDn(),
'dsInstancePswd' : server1.getRootPwd(),
'dsDn' : [entry.getDn()]
}
'Replication: Conflict: double_mod_del_single. \
Double mod_delete a single-valued attribute'
{ 'location' : server1Host,
'dsPath' : server1Path,
'dsInstanceHost' : server1Host,
'dsInstancePort' : server1.getPort(),
'dsInstanceDn' : server1.getRootDn(),
'dsInstancePswd' : server1.getRootPwd(),
'DNToAdd' : entry.getDn(),
'listAttributes' : entry.getAttrList()
}
[ clientHost, clientPath, [server1, server2] ]
{ 'location' : server.getHostname(),
'dsPath' : '%s/%s' \
% (server.getDir(), OPENDSNAME),
'dsInstanceHost' : server.getHostname(),
'dsInstancePort' : server.getPort(),
'dsInstanceDn' : server.getRootDn(),
'dsInstancePswd' : server.getRootPwd(),
'DNToModify' : entry.getDn(),
'listAttributes' : mods[i][0],
'changetype' : 'delete'
}
{ 'location' : server.getHostname(),
'dsPath' : '%s/%s' \
% (server.getDir(), OPENDSNAME),
'dsInstanceHost' : server.getHostname(),
'dsInstancePort' : server.getPort(),
'dsInstanceDn' : server.getRootDn(),
'dsInstancePswd' : server.getRootPwd(),
'dsBaseDN' : entry.getDn(),
'dsFilter' : 'objectclass=*',
'dsAttributes' : 'employeeNumber'
}
'+++++++++++ LDAPSEARCH RESULT for %s:%s ++++++++\n%s' \
% (server.getHostname(), server.getPort(), searchResult)
[ clientHost, clientPath, [server1, server2] ]
{ 'location' : server.getHostname(),
'dsPath' : '%s/%s' \
% (server.getDir(), OPENDSNAME),
'dsInstanceHost' : server.getHostname(),
'dsInstancePort' : server.getPort(),
'dsInstanceDn' : server.getRootDn(),
'dsInstancePswd' : server.getRootPwd(),
'dsBaseDN' : entry.getDn(),
'dsFilter' : 'objectclass=*',
'dsAttributes' : 'employeeNumber'
}
'+++++++++++ LDAPSEARCH RESULT for %s:%s ++++++++\n%s' \
% (server.getHostname(), server.getPort(), searchResult)
[ clientHost, clientPath, server1, [server2], synchroSuffix ]
{ 'location' : clientHost,
'dsPath' : clientPath,
'dsInstanceHost' : server1Host,
'dsInstancePort' : server1.getPort(),
'dsInstanceDn' : server1.getRootDn(),
'dsInstancePswd' : server1.getRootPwd(),
'dsDn' : [entry.getDn()]
}
'Replication: Conflict: mod_del_add_vs_mod_add_del_multi. \
Modify: Delete+Add then Add+Delete on 2 multi-valued attributes'
{ 'location' : server1Host,
'dsPath' : server1Path,
'dsInstanceHost' : server1Host,
'dsInstancePort' : server1.getPort(),
'dsInstanceDn' : server1.getRootDn(),
'dsInstancePswd' : server1.getRootPwd(),
'DNToAdd' : entry.getDn(),
'listAttributes' : entry.getAttrList()
}
[ clientHost, clientPath, [server1, server2] ]
{ 'location' : server.getHostname(),
'dsPath' : '%s/%s' \
% (server.getDir(), OPENDSNAME),
'dsInstanceHost' : server.getHostname(),
'dsInstancePort' : server.getPort(),
'dsInstanceDn' : server.getRootDn(),
'dsInstancePswd' : server.getRootPwd(),
'DNToModify' : entry.getDn(),
'listAttributes' : mods[i][0],
'changetype' : changetypes[i][0]
}
{ 'location' : server.getHostname(),
'dsPath' : '%s/%s' \
% (server.getDir(), OPENDSNAME),
'dsInstanceHost' : server.getHostname(),
'dsInstancePort' : server.getPort(),
'dsInstanceDn' : server.getRootDn(),
'dsInstancePswd' : server.getRootPwd(),
'DNToModify' : entry.getDn(),
'listAttributes' : mods[i][1],
'changetype' : changetypes[i][1]
}
{ 'location' : server.getHostname(),
'dsPath' : '%s/%s' \
% (server.getDir(), OPENDSNAME),
'dsInstanceHost' : server.getHostname(),
'dsInstancePort' : server.getPort(),
'dsInstanceDn' : server.getRootDn(),
'dsInstancePswd' : server.getRootPwd(),
'dsBaseDN' : entry.getDn(),
'dsFilter' : 'objectclass=*',
'dsAttributes' : 'description telephoneNumber'
}
'+++++++++++ LDAPSEARCH RESULT for %s:%s ++++++++\n%s' \
% (server.getHostname(), server.getPort(), searchResult)
[ clientHost, clientPath, [server1, server2] ]
{ 'location' : server.getHostname(),
'dsPath' : '%s/%s' \
% (server.getDir(), OPENDSNAME),
'dsInstanceHost' : server.getHostname(),
'dsInstancePort' : server.getPort(),
'dsInstanceDn' : server.getRootDn(),
'dsInstancePswd' : server.getRootPwd(),
'dsBaseDN' : entry.getDn(),
'dsFilter' : 'objectclass=*',
'dsAttributes' : 'description telephoneNumber'
}
'+++++++++++ LDAPSEARCH RESULT for %s:%s ++++++++\n%s' \
% (server.getHostname(), server.getPort(), searchResult)
[ clientHost, clientPath, server1, [server2], synchroSuffix ]
{ 'location' : clientHost,
'dsPath' : clientPath,
'dsInstanceHost' : server1Host,
'dsInstancePort' : server1.getPort(),
'dsInstanceDn' : server1.getRootDn(),
'dsInstancePswd' : server1.getRootPwd(),
'dsDn' : [entry.getDn()]
}
'Replication: Conflict: mod_add_vs_mod_replace_multi. \
mod_add vs mod_replace on a multi-valued attribute'
{ 'location' : server1Host,
'dsPath' : server1Path,
'dsInstanceHost' : server1Host,
'dsInstancePort' : server1.getPort(),
'dsInstanceDn' : server1.getRootDn(),
'dsInstancePswd' : server1.getRootPwd(),
'DNToAdd' : entry.getDn(),
'listAttributes' : entry.getAttrList()
}
[ clientHost, clientPath, [server1, server2] ]
{ 'location' : server.getHostname(),
'dsPath' : '%s/%s' \
% (server.getDir(), OPENDSNAME),
'dsInstanceHost' : server.getHostname(),
'dsInstancePort' : server.getPort(),
'dsInstanceDn' : server.getRootDn(),
'dsInstancePswd' : server.getRootPwd(),
'DNToModify' : entry.getDn(),
'listAttributes' : mods[i][0],
'changetype' : changetypes[i][0]
}
{ 'location' : server.getHostname(),
'dsPath' : '%s/%s' \
% (server.getDir(), OPENDSNAME),
'dsInstanceHost' : server.getHostname(),
'dsInstancePort' : server.getPort(),
'dsInstanceDn' : server.getRootDn(),
'dsInstancePswd' : server.getRootPwd(),
'dsBaseDN' : entry.getDn(),
'dsFilter' : 'objectclass=*',
'dsAttributes' : 'description'
}
'+++++++++++ LDAPSEARCH RESULT for %s:%s ++++++++\n%s' \
% (server.getHostname(), server.getPort(), searchResult)
[ clientHost, clientPath, [server1, server2] ]
{ 'location' : server.getHostname(),
'dsPath' : '%s/%s' \
% (server.getDir(), OPENDSNAME),
'dsInstanceHost' : server.getHostname(),
'dsInstancePort' : server.getPort(),
'dsInstanceDn' : server.getRootDn(),
'dsInstancePswd' : server.getRootPwd(),
'dsBaseDN' : entry.getDn(),
'dsFilter' : 'objectclass=*',
'dsAttributes' : 'description'
}
'+++++++++++ LDAPSEARCH RESULT for %s:%s ++++++++\n%s' \
% (server.getHostname(), server.getPort(), searchResult)
[ clientHost, clientPath, server1, [server2], synchroSuffix ]
{ 'location' : clientHost,
'dsPath' : clientPath,
'dsInstanceHost' : server1Host,
'dsInstancePort' : server1.getPort(),
'dsInstanceDn' : server1.getRootDn(),
'dsInstancePswd' : server1.getRootPwd(),
'dsDn' : [entry.getDn()]
}
'Replication: Conflict: mod_replace_vs_mod_add_multi. \
mod_replace vs mod_add on a multi-valued attribute'
{ 'location' : server1Host,
'dsPath' : server1Path,
'dsInstanceHost' : server1Host,
'dsInstancePort' : server1.getPort(),
'dsInstanceDn' : server1.getRootDn(),
'dsInstancePswd' : server1.getRootPwd(),
'DNToAdd' : entry.getDn(),
'listAttributes' : entry.getAttrList()
}
[ clientHost, clientPath, [server1, server2] ]
{ 'location' : server.getHostname(),
'dsPath' : '%s/%s' \
% (server.getDir(), OPENDSNAME),
'dsInstanceHost' : server.getHostname(),
'dsInstancePort' : server.getPort(),
'dsInstanceDn' : server.getRootDn(),
'dsInstancePswd' : server.getRootPwd(),
'DNToModify' : entry.getDn(),
'listAttributes' : mods[i][0],
'changetype' : changetypes[i][0]
}
{ 'location' : server.getHostname(),
'dsPath' : '%s/%s' \
% (server.getDir(), OPENDSNAME),
'dsInstanceHost' : server.getHostname(),
'dsInstancePort' : server.getPort(),
'dsInstanceDn' : server.getRootDn(),
'dsInstancePswd' : server.getRootPwd(),
'dsBaseDN' : entry.getDn(),
'dsFilter' : 'objectclass=*',
'dsAttributes' : 'description'
}
'+++++++++++ LDAPSEARCH RESULT for %s:%s ++++++++\n%s' \
% (server.getHostname(), server.getPort(), searchResult)
[ clientHost, clientPath, [server1, server2] ]
{ 'location' : server.getHostname(),
'dsPath' : '%s/%s' \
% (server.getDir(), OPENDSNAME),
'dsInstanceHost' : server.getHostname(),
'dsInstancePort' : server.getPort(),
'dsInstanceDn' : server.getRootDn(),
'dsInstancePswd' : server.getRootPwd(),
'dsBaseDN' : entry.getDn(),
'dsFilter' : 'objectclass=*',
'dsAttributes' : 'description'
}
'+++++++++++ LDAPSEARCH RESULT for %s:%s ++++++++\n%s' \
% (server.getHostname(), server.getPort(), searchResult)
[ clientHost, clientPath, server1, [server2], synchroSuffix ]
{ 'location' : clientHost,
'dsPath' : clientPath,
'dsInstanceHost' : server1Host,
'dsInstancePort' : server1.getPort(),
'dsInstanceDn' : server1.getRootDn(),
'dsInstancePswd' : server1.getRootPwd(),
'dsDn' : [entry.getDn()]
}
'Replication: Conflict: mod_del_vs_mod_replace_multi. \
mod_del vs mod_replace on a multi-valued attribute'
{ 'location' : server1Host,
'dsPath' : server1Path,
'dsInstanceHost' : server1Host,
'dsInstancePort' : server1.getPort(),
'dsInstanceDn' : server1.getRootDn(),
'dsInstancePswd' : server1.getRootPwd(),
'DNToAdd' : entry.getDn(),
'listAttributes' : entry.getAttrList()
}
[ clientHost, clientPath, [server1, server2] ]
{ 'location' : server.getHostname(),
'dsPath' : '%s/%s' \
% (server.getDir(), OPENDSNAME),
'dsInstanceHost' : server.getHostname(),
'dsInstancePort' : server.getPort(),
'dsInstanceDn' : server.getRootDn(),
'dsInstancePswd' : server.getRootPwd(),
'DNToModify' : entry.getDn(),
'listAttributes' : mods[i][0],
'changetype' : changetypes[i][0]
}
{ 'location' : server.getHostname(),
'dsPath' : '%s/%s' \
% (server.getDir(), OPENDSNAME),
'dsInstanceHost' : server.getHostname(),
'dsInstancePort' : server.getPort(),
'dsInstanceDn' : server.getRootDn(),
'dsInstancePswd' : server.getRootPwd(),
'dsBaseDN' : entry.getDn(),
'dsFilter' : 'objectclass=*',
'dsAttributes' : 'description'
}
'+++++++++++ LDAPSEARCH RESULT for %s:%s ++++++++\n%s' \
% (server.getHostname(), server.getPort(), searchResult)
[ clientHost, clientPath, [server1, server2] ]
{ 'location' : server.getHostname(),
'dsPath' : '%s/%s' \
% (server.getDir(), OPENDSNAME),
'dsInstanceHost' : server.getHostname(),
'dsInstancePort' : server.getPort(),
'dsInstanceDn' : server.getRootDn(),
'dsInstancePswd' : server.getRootPwd(),
'dsBaseDN' : entry.getDn(),
'dsFilter' : 'objectclass=*',
'dsAttributes' : 'description'
}
'+++++++++++ LDAPSEARCH RESULT for %s:%s ++++++++\n%s' \
% (server.getHostname(), server.getPort(), searchResult)
[ clientHost, clientPath, server1, [server2], synchroSuffix ]
{ 'location' : clientHost,
'dsPath' : clientPath,
'dsInstanceHost' : server1Host,
'dsInstancePort' : server1.getPort(),
'dsInstanceDn' : server1.getRootDn(),
'dsInstancePswd' : server1.getRootPwd(),
'dsDn' : [entry.getDn()]
}
'Replication: Conflict: mod_replace_vs_mod_del_multi. \
mod_replace vs mod_del on a multi-valued attribute'
{ 'location' : server1Host,
'dsPath' : server1Path,
'dsInstanceHost' : server1Host,
'dsInstancePort' : server1.getPort(),
'dsInstanceDn' : server1.getRootDn(),
'dsInstancePswd' : server1.getRootPwd(),
'DNToAdd' : entry.getDn(),
'listAttributes' : entry.getAttrList()
}
[ clientHost, clientPath, [server1, server2] ]
{ 'location' : server.getHostname(),
'dsPath' : '%s/%s' \
% (server.getDir(), OPENDSNAME),
'dsInstanceHost' : server.getHostname(),
'dsInstancePort' : server.getPort(),
'dsInstanceDn' : server.getRootDn(),
'dsInstancePswd' : server.getRootPwd(),
'DNToModify' : entry.getDn(),
'listAttributes' : mods[i][0],
'changetype' : changetypes[i][0]
}
{ 'location' : server.getHostname(),
'dsPath' : '%s/%s' \
% (server.getDir(), OPENDSNAME),
'dsInstanceHost' : server.getHostname(),
'dsInstancePort' : server.getPort(),
'dsInstanceDn' : server.getRootDn(),
'dsInstancePswd' : server.getRootPwd(),
'dsBaseDN' : entry.getDn(),
'dsFilter' : 'objectclass=*',
'dsAttributes' : 'description'
}
'+++++++++++ LDAPSEARCH RESULT for %s:%s ++++++++\n%s' \
% (server.getHostname(), server.getPort(), searchResult)
[ clientHost, clientPath, [server1, server2] ]
{ 'location' : server.getHostname(),
'dsPath' : '%s/%s' \
% (server.getDir(), OPENDSNAME),
'dsInstanceHost' : server.getHostname(),
'dsInstancePort' : server.getPort(),
'dsInstanceDn' : server.getRootDn(),
'dsInstancePswd' : server.getRootPwd(),
'dsBaseDN' : entry.getDn(),
'dsFilter' : 'objectclass=*',
'dsAttributes' : 'description'
}
'+++++++++++ LDAPSEARCH RESULT for %s:%s ++++++++\n%s' \
% (server.getHostname(), server.getPort(), searchResult)
[ clientHost, clientPath, server1, [server2], synchroSuffix ]
{ 'location' : clientHost,
'dsPath' : clientPath,
'dsInstanceHost' : server1Host,
'dsInstancePort' : server1.getPort(),
'dsInstanceDn' : server1.getRootDn(),
'dsInstancePswd' : server1.getRootPwd(),
'dsDn' : [entry.getDn()]
}
'Replication: Conflict: add_child_del_parent. \
Add a child vs delete his parent'
{ 'location' : server1Host,
'dsPath' : server1Path,
'dsInstanceHost' : server1Host,
'dsInstancePort' : server1.getPort(),
'dsInstanceDn' : server1.getRootDn(),
'dsInstancePswd' : server1.getRootPwd(),
'DNToAdd' : parentEntry.getDn(),
'listAttributes' : parentEntry.getAttrList()
}
[ clientHost, clientPath, [server1, server2] ]
{ 'location' : server2Host,
'dsPath' : server2Path,
'dsInstanceHost' : server2Host,
'dsInstancePort' : server2.getPort(),
'dsInstanceDn' : server2.getRootDn(),
'dsInstancePswd' : server2.getRootPwd(),
'DNToAdd' : childEntry.getDn(),
'listAttributes' : childEntry.getAttrList()
}
{ 'location' : clientHost,
'dsPath' : clientPath,
'dsInstanceHost' : server1Host,
'dsInstancePort' : server1.getPort(),
'dsInstanceDn' : server1.getRootDn(),
'dsInstancePswd' : server1.getRootPwd(),
'dsDn' : [parentEntry.getDn()]
}
{ 'location' : server.getHostname(),
'dsPath' : '%s/%s' \
% (server.getDir(), OPENDSNAME),
'dsInstanceHost' : server.getHostname(),
'dsInstancePort' : server.getPort(),
'dsInstanceDn' : server.getRootDn(),
'dsInstancePswd' : server.getRootPwd(),
'dsBaseDN' : synchroSuffix,
'dsFilter' : 'givenname=DUMMY ENTRY',
'dsAttributes' : 'ds-sync-conflict cn'
}
'+++++++++++ LDAPSEARCH RESULT for %s:%s ++++++++\n%s' \
% (server.getHostname(), server.getPort(), searchResult)
{ 'location' : server.getHostname(),
'dsPath' : '%s/%s' \
% (server.getDir(), OPENDSNAME),
'dsInstanceHost' : server.getHostname(),
'dsInstancePort' : server.getPort(),
'dsInstanceDn' : server.getRootDn(),
'dsInstancePswd' : server.getRootPwd(),
'dsBaseDN' : 'cn=monitor',
'dsFilter' : monitorFilter,
'dsAttributes' : monitorCounters
}
'+++++++++++ LDAPSEARCH RESULT for %s:%s ++++++++\n%s' \
% (server.getHostname(), server.getPort(), searchResult)
[ clientHost, clientPath, [server1, server2] ]
{ 'location' : server.getHostname(),
'dsPath' : '%s/%s' \
% (server.getDir(), OPENDSNAME),
'dsInstanceHost' : server.getHostname(),
'dsInstancePort' : server.getPort(),
'dsInstanceDn' : server.getRootDn(),
'dsInstancePswd' : server.getRootPwd(),
'dsBaseDN' : synchroSuffix,
'dsFilter' : 'givenname=DUMMY ENTRY',
'dsAttributes' : 'ds-sync-conflict cn'
}
'+++++++++++ LDAPSEARCH RESULT for %s:%s ++++++++\n%s' \
% (server.getHostname(), server.getPort(), searchResult)
{ 'location' : server.getHostname(),
'dsPath' : '%s/%s' \
% (server.getDir(), OPENDSNAME),
'dsInstanceHost' : server.getHostname(),
'dsInstancePort' : server.getPort(),
'dsInstanceDn' : server.getRootDn(),
'dsInstancePswd' : server.getRootPwd(),
'dsBaseDN' : 'cn=monitor',
'dsFilter' : monitorFilter,
'dsAttributes' : monitorCounters
}
'+++++++++++ LDAPSEARCH RESULT for %s:%s ++++++++\n%s' \
% (server.getHostname(), server.getPort(), searchResult)
[ clientHost, clientPath, server1, [server2], synchroSuffix ]
{ 'location' : clientHost,
'dsPath' : clientPath,
'dsInstanceHost' : server.getHostname(),
'dsInstancePort' : server.getPort(),
'dsInstanceDn' : server.getRootDn(),
'dsInstancePswd' : server.getRootPwd(),
'dsDn' : addedEntries[i]
}
'Replication: Conflict: del_parent_add_child. \
Delete a parent vs add his child'
{ 'location' : server1Host,
'dsPath' : server1Path,
'dsInstanceHost' : server1Host,
'dsInstancePort' : server1.getPort(),
'dsInstanceDn' : server1.getRootDn(),
'dsInstancePswd' : server1.getRootPwd(),
'DNToAdd' : parentEntry.getDn(),
'listAttributes' : parentEntry.getAttrList()
}
[ clientHost, clientPath, [server1, server2] ]
{ 'location' : clientHost,
'dsPath' : clientPath,
'dsInstanceHost' : server1Host,
'dsInstancePort' : server1.getPort(),
'dsInstanceDn' : server1.getRootDn(),
'dsInstancePswd' : server1.getRootPwd(),
'dsDn' : [parentEntry.getDn()]
}
{ 'location' : server2Host,
'dsPath' : server2Path,
'dsInstanceHost' : server2Host,
'dsInstancePort' : server2.getPort(),
'dsInstanceDn' : server2.getRootDn(),
'dsInstancePswd' : server2.getRootPwd(),
'DNToAdd' : childEntry.getDn(),
'listAttributes' : childEntry.getAttrList()
}
{ 'location' : server.getHostname(),
'dsPath' : '%s/%s' \
% (server.getDir(), OPENDSNAME),
'dsInstanceHost' : server.getHostname(),
'dsInstancePort' : server.getPort(),
'dsInstanceDn' : server.getRootDn(),
'dsInstancePswd' : server.getRootPwd(),
'dsBaseDN' : synchroSuffix,
'dsFilter' : 'givenname=DUMMY ENTRY',
'dsAttributes' : 'ds-sync-conflict cn'
}
'+++++++++++ LDAPSEARCH RESULT for %s:%s ++++++++\n%s' \
% (server.getHostname(), server.getPort(), searchResult)
{ 'location' : server.getHostname(),
'dsPath' : '%s/%s' \
% (server.getDir(), OPENDSNAME),
'dsInstanceHost' : server.getHostname(),
'dsInstancePort' : server.getPort(),
'dsInstanceDn' : server.getRootDn(),
'dsInstancePswd' : server.getRootPwd(),
'dsBaseDN' : 'cn=monitor',
'dsFilter' : monitorFilter,
'dsAttributes' : monitorCounters
}
'+++++++++++ LDAPSEARCH RESULT for %s:%s ++++++++\n%s' \
% (server.getHostname(), server.getPort(), searchResult)
[ clientHost, clientPath, [server1, server2] ]
{ 'location' : server.getHostname(),
'dsPath' : '%s/%s' \
% (server.getDir(), OPENDSNAME),
'dsInstanceHost' : server.getHostname(),
'dsInstancePort' : server.getPort(),
'dsInstanceDn' : server.getRootDn(),
'dsInstancePswd' : server.getRootPwd(),
'dsBaseDN' : synchroSuffix,
'dsFilter' : 'givenname=DUMMY ENTRY',
'dsAttributes' : 'ds-sync-conflict cn'
}
'+++++++++++ LDAPSEARCH RESULT for %s:%s ++++++++\n%s' \
% (server.getHostname(), server.getPort(), searchResult)
{ 'location' : server.getHostname(),
'dsPath' : '%s/%s' \
% (server.getDir(), OPENDSNAME),
'dsInstanceHost' : server.getHostname(),
'dsInstancePort' : server.getPort(),
'dsInstanceDn' : server.getRootDn(),
'dsInstancePswd' : server.getRootPwd(),
'dsBaseDN' : 'cn=monitor',
'dsFilter' : monitorFilter,
'dsAttributes' : monitorCounters
}
'+++++++++++ LDAPSEARCH RESULT for %s:%s ++++++++\n%s' \
% (server.getHostname(), server.getPort(), searchResult)
[ clientHost, clientPath, server1, [server2], synchroSuffix ]
{ 'location' : clientHost,
'dsPath' : clientPath,
'dsInstanceHost' : server.getHostname(),
'dsInstancePort' : server.getPort(),
'dsInstanceDn' : server.getRootDn(),
'dsInstancePswd' : server.getRootPwd(),
'dsDn' : addedEntries[i]
}