| | |
| | | # CDDL HEADER END |
| | | # |
| | | # |
| | | # Copyright 2007-2009 Sun Microsystems, Inc. |
| | | # Copyright 2007-2008 Sun Microsystems, Inc. |
| | | # |
| | | uid subString uid=j* 0 2 INDEXED |
| | | uid subString (uid=j*) 0 2 INDEXED |
| | | l presence l=* 0 10 INDEXED |
| | | l presence (l=*) 0 10 INDEXED |
| | | l equality l=Cupertino 0 3 INDEXED |
| | | l equality (l=Cupertino) 0 3 INDEXED |
| | | l approximate (l~=ertino) 0 11 NOT-INDEXED |
| | | l substring (l=Cup*) 0 3 INDEXED |
| | | l substring l=Cup* 0 3 INDEXED |
| | | l substring l=*tino 0 11 NOT-INDEXED |
| | | l substring (l=*tino) 0 11 NOT-INDEXED |
| | | uid subString uid=j* 0 INDEXED |
| | | uid subString (uid=j*) 0 INDEXED |
| | | l presence l=* 0 INDEXED |
| | | l presence (l=*) 0 INDEXED |
| | | l equality l=Cupertino 0 INDEXED |
| | | l equality (l=Cupertino) 0 INDEXED |
| | | l approximate (l~=ertino) 0 NOT-INDEXED |
| | | l substring (l=Cup*) 0 INDEXED |
| | | l substring l=Cup* 0 INDEXED |
| | | l substring l=*tino 0 NOT-INDEXED |
| | | l substring (l=*tino) 0 NOT-INDEXED |
| | |
| | | # CDDL HEADER END |
| | | # |
| | | # |
| | | # Copyright 2007-2009 Sun Microsystems, Inc. |
| | | # Copyright 2007-2008 Sun Microsystems, Inc. |
| | | # |
| | | uid subString uid=j* 0 2 INDEXED |
| | | uid subString (uid=j*) 0 2 INDEXED |
| | | uid subString uid=*allace 0 1 INDEXED |
| | | uid subString (uid=*allace) 0 1 INDEXED |
| | | uid subString uid=j* 0 INDEXED |
| | | uid subString (uid=j*) 0 INDEXED |
| | | uid subString uid=*allace 0 INDEXED |
| | | uid subString (uid=*allace) 0 INDEXED |
| | |
| | | # CDDL HEADER END |
| | | # |
| | | # |
| | | # Copyright 2007-2009 Sun Microsystems, Inc. |
| | | # Copyright 2007-2008 Sun Microsystems, Inc. |
| | | # |
| | | uid subString uid=j* 0 2 INDEXED |
| | | uid subString (uid=j*) 0 2 INDEXED |
| | | l presence l=* 0 11 NOT-INDEXED |
| | | l presence (l=*) 0 11 NOT-INDEXED |
| | | l equality l=Cupertino 0 11 NOT-INDEXED |
| | | l equality (l=Cupertino) 0 11 NOT-INDEXED |
| | | l approximate (l~=ertino) 0 11 NOT-INDEXED |
| | | l substring (l=Cup*) 0 11 NOT-INDEXED |
| | | l substring l=Cup* 0 11 NOT-INDEXED |
| | | l substring l=*tino 0 11 NOT-INDEXED |
| | | l substring (l=*tino) 0 11 NOT-INDEXED |
| | | uid subString uid=j* 0 INDEXED |
| | | uid subString (uid=j*) 0 INDEXED |
| | | l presence l=* 0 NOT-INDEXED |
| | | l presence (l=*) 0 NOT-INDEXED |
| | | l equality l=Cupertino 0 NOT-INDEXED |
| | | l equality (l=Cupertino) 0 NOT-INDEXED |
| | | l approximate (l~=ertino) 0 NOT-INDEXED |
| | | l substring (l=Cup*) 0 NOT-INDEXED |
| | | l substring l=Cup* 0 NOT-INDEXED |
| | | l substring l=*tino 0 NOT-INDEXED |
| | | l substring (l=*tino) 0 NOT-INDEXED |
| | |
| | | # CDDL HEADER END |
| | | # |
| | | # |
| | | # Copyright 2007-2009 Sun Microsystems, Inc. |
| | | # Copyright 2007-2008 Sun Microsystems, Inc. |
| | | # |
| | | uid subString uid=j* 0 2 INDEXED |
| | | uid subString (uid=j*) 0 2 INDEXED |
| | | l presence l=* 0 11 NOT-INDEXED |
| | | l presence (l=*) 0 11 NOT-INDEXED |
| | | l equality l=Cupertino 0 11 NOT-INDEXED |
| | | l equality (l=Cupertino) 0 11 NOT-INDEXED |
| | | l approximate (l~=ertino) 0 11 NOT-INDEXED |
| | | l substring (l=Cup*) 0 11 NOT-INDEXED |
| | | l substring l=Cup* 0 11 NOT-INDEXED |
| | | l substring l=*tino 0 11 NOT-INDEXED |
| | | l substring (l=*tino) 0 11 NOT-INDEXED |
| | | uid subString uid=j* 0 INDEXED |
| | | uid subString (uid=j*) 0 INDEXED |
| | | l presence l=* 0 NOT-INDEXED |
| | | l presence (l=*) 0 NOT-INDEXED |
| | | l equality l=Cupertino 0 NOT-INDEXED |
| | | l equality (l=Cupertino) 0 NOT-INDEXED |
| | | l approximate (l~=ertino) 0 NOT-INDEXED |
| | | l substring (l=Cup*) 0 NOT-INDEXED |
| | | l substring l=Cup* 0 NOT-INDEXED |
| | | l substring l=*tino 0 NOT-INDEXED |
| | | l substring (l=*tino) 0 NOT-INDEXED |
| | |
| | | # CDDL HEADER END |
| | | # |
| | | # |
| | | # Copyright 2007-2009 Sun Microsystems, Inc. |
| | | # Copyright 2007-2008 Sun Microsystems, Inc. |
| | | # |
| | | uid subString uid=j* 0 2 INDEXED |
| | | uid subString (uid=j*) 0 2 INDEXED |
| | | uid subString uid=*allace 0 11 NOT-INDEXED |
| | | uid subString (uid=*allace) 0 11 NOT-INDEXED |
| | | uid subString uid=j* 0 INDEXED |
| | | uid subString (uid=j*) 0 INDEXED |
| | | uid subString uid=*allace 0 NOT-INDEXED |
| | | uid subString (uid=*allace) 0 NOT-INDEXED |
| | |
| | | # CDDL HEADER END |
| | | # |
| | | # |
| | | # Copyright 2007-2009 Sun Microsystems, Inc. |
| | | # Copyright 2007-2008 Sun Microsystems, Inc. |
| | | # |
| | | uid subString uid=j* 0 2 INDEXED |
| | | uid subString (uid=j*) 0 2 INDEXED |
| | | l presence l=* 0 10 INDEXED |
| | | l presence (l=*) 0 10 INDEXED |
| | | l equality l=Cupertino 0 3 INDEXED |
| | | l equality (l=Cupertino) 0 3 INDEXED |
| | | l approximate (l~=ertino) 0 11 NOT-INDEXED |
| | | l substring (l=Cup*) 0 3 INDEXED |
| | | l substring l=Cup* 0 3 INDEXED |
| | | l substring l=*tino 0 11 NOT-INDEXED |
| | | l substring (l=*tino) 0 11 NOT-INDEXED |
| | | uid subString uid=j* 0 INDEXED |
| | | uid subString (uid=j*) 0 INDEXED |
| | | l presence l=* 0 INDEXED |
| | | l presence (l=*) 0 INDEXED |
| | | l equality l=Cupertino 0 INDEXED |
| | | l equality (l=Cupertino) 0 INDEXED |
| | | l approximate (l~=ertino) 0 NOT-INDEXED |
| | | l substring (l=Cup*) 0 INDEXED |
| | | l substring l=Cup* 0 INDEXED |
| | | l substring l=*tino 0 NOT-INDEXED |
| | | l substring (l=*tino) 0 NOT-INDEXED |
| | |
| | | ! |
| | | ! CDDL HEADER END |
| | | ! |
| | | ! Copyright 2007-2009 Sun Microsystems, Inc. |
| | | ! Copyright 2007-2008 Sun Microsystems, Inc. |
| | | ! --> |
| | | <stax> |
| | | <defaultcall function="main_indexes" /> |
| | |
| | | class indexTest: |
| | | "Describes an index test with indexed attribute, filter to test with \ |
| | | and expected behaviour" |
| | | def __init__(self, attribute,testName,filter,expectedValue,countEntries,isIndexed): |
| | | def __init__(self, attribute,testName,filter,expectedValue,isIndexed): |
| | | self.attribute = attribute |
| | | self.name = testName |
| | | self.filter = filter |
| | | self.rc = expectedValue |
| | | self.count = countEntries |
| | | self.isIndexed=re.compile(r'[\r\n]').sub('',isIndexed) |
| | | self.status='fail' |
| | | |
| | |
| | | |
| | | def getRC(self): |
| | | return self.rc |
| | | |
| | | def getCount(self): |
| | | return self.count |
| | | |
| | | def getSearchString(self): |
| | | if self.isIndexed.startswith('NOT'): |
| | |
| | | description += 'test:: attribute=[%s]\n' % self.attribute |
| | | description += 'test:: filter=[%s]\n' % self.filter |
| | | description += 'test:: rc=[%s]\n' % self.rc |
| | | description += 'test:: count=[%s]\n' % self.count |
| | | description += 'test:: indexed=[%s]\n' % self.isIndexed |
| | | return description |
| | | |
| | |
| | | else: |
| | | testLine = line.split(' ') |
| | | indexTests.append(indexTest(testLine[0], testLine[1], testLine[2], |
| | | testLine[3], testLine[4], testLine[5])) |
| | | testLine[3], testLine[4])) |
| | | f.close() |
| | | |
| | | indexTestNumber=0 |
| | |
| | | 'dsBaseDN' : 'ou=People,dc=example,%s' \ |
| | | % DIRECTORY_INSTANCE_SFX , |
| | | 'dsFilter' : '%s' % test.getFilter(), |
| | | 'extraParams' : '--countEntries' , |
| | | 'attributes' : 'debugsearchindex', |
| | | 'expectedRC' : 'noCheck' |
| | | } |
| | |
| | | % (test.desc(), searchReturnCode, searchResultString, srt, |
| | | test.getSearchString()) |
| | | </message> |
| | | |
| | | <call function="'searchString'"> |
| | | { |
| | | 'expectedString' : '# Total number of matching entries: %s' % test.getCount() , |
| | | 'returnString' : searchResultString , |
| | | 'expectedRC' : 0 |
| | | } |
| | | </call> |
| | | |
| | | <tcstatus result="test.getStatus()" /> |
| | | <call function="'testCase_Postamble'" /> |
| | | <script> |
| | |
| | | # CDDL HEADER END |
| | | # |
| | | # |
| | | # Copyright 2007-2009 Sun Microsystems, Inc. |
| | | # Copyright 2007-2008 Sun Microsystems, Inc. |
| | | # |
| | | uid presence uid=* 0 1 NOT-INDEXED |
| | | uid presence UID=* 0 11 NOT-INDEXED |
| | | uid presence uId=* 0 11 NOT-INDEXED |
| | | uid presence UiD=* 0 11 NOT-INDEXED |
| | | uid equality uid=jwallace 0 1 INDEXED |
| | | uid equality (uid=jwallace) 0 1 INDEXED |
| | | uid equality (&(uid=jwallace)) 0 1 INDEXED |
| | | uid equality (|(uid=jwallace)) 0 1 INDEXED |
| | | uid equality (&(&(uid=jwallace))) 0 1 INDEXED |
| | | uid equality (&(|(uid=jwallace))) 0 1 INDEXED |
| | | uid equality (|(&(uid=jwallace))) 0 1 INDEXED |
| | | uid equality (|(|(uid=jwallace))) 0 1 INDEXED |
| | | uid equality (|(|(uid=jwallace))) 0 1 INDEXED |
| | | uid substring uid=j* 0 2 INDEXED |
| | | uid substring (uid=j*) 0 2 INDEXED |
| | | uid substring uid=*allace 0 11 NOT-INDEXED |
| | | uid substring (uid=*allace) 0 11 NOT-INDEXED |
| | | uid substring (&(uid=*allace)) 0 11 NOT-INDEXED |
| | | uid substring (|(uid=*allace)) 0 11 NOT-INDEXED |
| | | uid substring (&(&(uid=*allace))) 0 11 NOT-INDEXED |
| | | uid substring (&(|(uid=*allace))) 0 11 NOT-INDEXED |
| | | uid substring (|(&(uid=*allace))) 0 11 NOT-INDEXED |
| | | uid substring (|(|(uid=*allace))) 0 11 NOT-INDEXED |
| | | uid substring uid=jw*ce 0 2 INDEXED |
| | | uid substring (uid=jw*ce) 0 2 INDEXED |
| | | uid approximate uid~=wallace 0 11 NOT-INDEXED |
| | | uid approximate uid~=jwalace 0 11 NOT-INDEXED |
| | | uid negate !(uid=jwallace) 0 11 NOT-INDEXED |
| | | uid negate (!(uid=jwallace)) 0 11 NOT-INDEXED |
| | | uid negate (!(&(uid=jwallace))) 0 11 NOT-INDEXED |
| | | uid negate (!(|(uid=jwallace))) 0 11 NOT-INDEXED |
| | | uid complexAnd (uid=j*&l=sunnyvale) 0 2 INDEXED |
| | | uid complexAnd &(uid=j*)(l=sunnyvale) 0 2 NOT-INDEXED |
| | | uid complexAnd (&(uid=j*)(l=~sunyvale)) 0 2 NOT-INDEXED |
| | | uid complexAnd (&(&(uid=j*)(l=~sunyvale))) 0 2 NOT-INDEXED |
| | | uid complexAnd (uid=j*&!l=cupertino) 0 2 INDEXED |
| | | uid complexAnd (uid=j*&l=sun*) 0 2 INDEXED |
| | | uid complexAnd (&(uid=j*)(l=sun*)) 0 2 INDEXED |
| | | uid complexOr (uid=jwallace|uid=jwalker) 0 0 INDEXED |
| | | uid complexOr (uid=jwallace|l=Sun*) 0 0 INDEXED |
| | | uid complexOr (uid=jwallace|l=~unnyvale) 0 0 INDEXED |
| | | uid complexOr (uid=jwallace|!l=Cupertino) 0 0 INDEXED |
| | | uid complexOr (uid=jwallace|!l=Cuper*) 0 0 INDEXED |
| | | uid complexOr (uid=j*|l=sunnyvale) 0 2 INDEXED |
| | | uid complexOr (uid=j*|!l=Cupertino) 0 2 INDEXED |
| | | uid complexOr (uid=j*|!l=Cuper*) 0 2 INDEXED |
| | | uid complexOr (uid=j*|!l~=Cuperino) 0 2 INDEXED |
| | | uid complexOr (uid=j*|l~=sunyvale) 0 2 INDEXED |
| | | uid complexOr (|(uid=j*)(l=sunnyvale)) 0 11 INDEXED |
| | | uid complexOr (|(&(uid=j*)(uid=*lace))) 0 2 INDEXED |
| | | sn presence sn=* 0 11 NOT-INDEXED |
| | | sn presence SN=* 0 11 NOT-INDEXED |
| | | sn presence sN=* 0 11 NOT-INDEXED |
| | | sn presence Sn=* 0 11 NOT-INDEXED |
| | | sn equality sn=Bergin 0 1 INDEXED |
| | | sn equality (sn=Bergin) 0 1 INDEXED |
| | | sn substring sn=Ber* 0 1 INDEXED |
| | | sn substring (sn=Ber*) 0 1 INDEXED |
| | | sn substring sn=*ergin 0 1 INDEXED |
| | | sn substring (sn=*ergin) 0 1 INDEXED |
| | | sn substring sn=*ergi* 0 1 INDEXED |
| | | sn substring (sn=*ergi*) 0 1 INDEXED |
| | | sn approximate sn~=begin 0 11 NOT-INDEXED |
| | | sn approximate (sn~=begin) 0 11 NOT-INDEXED |
| | | mail presence mail=* 0 11 NOT-INDEXED |
| | | mail presence Mail=* 0 11 NOT-INDEXED |
| | | mail presence MAIL=* 0 11 NOT-INDEXED |
| | | mail presence mAiL=* 0 11 NOT-INDEXED |
| | | mail equality mail=kvaughan@example.com 0 1 INDEXED |
| | | mail equality (mail=kvaughan@example.com) 0 1 INDEXED |
| | | mail substring mail=kvaughan* 0 1 INDEXED |
| | | mail substring (mail=kvaughan*) 0 1 INDEXED |
| | | mail substring mail=*aughan@example.com 0 10 INDEXED |
| | | mail substring (mail=*aughan@example.com) 0 10 INDEXED |
| | | mail substring mail=*aughan@example.* 0 10 INDEXED |
| | | mail substring (mail=*aughan@example.*) 0 10 INDEXED |
| | | givenName presence givenName=* 0 11 NOT-INDEXED |
| | | givenName presence (givenName=*) 0 11 NOT-INDEXED |
| | | givenName presence givenname=* 0 11 NOT-INDEXED |
| | | givenName presence (givenname=*) 0 11 NOT-INDEXED |
| | | givenName presence GIVENNAME=* 0 11 NOT-INDEXED |
| | | givenName presence (GIVENNAME=*) 0 11 NOT-INDEXED |
| | | givenName presence GivenName=* 0 11 NOT-INDEXED |
| | | givenName presence (GivenName=*) 0 11 NOT-INDEXED |
| | | givenName presence GiVeNnaMe=* 0 11 NOT-INDEXED |
| | | givenName presence (GiVeNnaMe=*) 0 11 NOT-INDEXED |
| | | givenName presence gIvEnNaMe=* 0 11 NOT-INDEXED |
| | | givenName presence (gIvEnNaMe=*) 0 11 NOT-INDEXED |
| | | givenName equality givenName=kirsten 0 1 INDEXED |
| | | givenName equality (givenName=kirsten) 0 1 INDEXED |
| | | givenName equality givenName=Kirsten 0 1 INDEXED |
| | | givenName equality (givenName=Kirsten) 0 1 INDEXED |
| | | givenName equality givenname=kirsten 0 1 INDEXED |
| | | givenName equality (givenname=kirsten) 0 1 INDEXED |
| | | givenName equality givenname=KIRSTEN 0 1 INDEXED |
| | | givenName equality (givenname=KIRSTEN) 0 1 INDEXED |
| | | givenName equality GIVENNAME=kirsten 0 1 INDEXED |
| | | givenName equality (GIVENNAME=kirsten) 0 1 INDEXED |
| | | givenName equality GIVENNAME=KIRSTEN 0 1 INDEXED |
| | | givenName equality (GIVENNAME=KIRSTEN) 0 1 INDEXED |
| | | givenName equality gIvEnNaMe=kIrStEn 0 1 INDEXED |
| | | givenName equality (gIvEnNaMe=kIrStEn) 0 1 INDEXED |
| | | givenName substring givenName=kirst* 0 1 INDEXED |
| | | givenName substring (givenName=kirst*) 0 1 INDEXED |
| | | givenName substring GivenName=kirst* 0 1 INDEXED |
| | | givenName substring (GivenName=kirst*) 0 1 INDEXED |
| | | givenName substring givenname=kirst* 0 1 INDEXED |
| | | givenName substring (givenname=kirst*) 0 1 INDEXED |
| | | givenName substring GIVENNAME=kirst* 0 1 INDEXED |
| | | givenName substring (GIVENNAME=kirst*) 0 1 INDEXED |
| | | givenName substring givenName=*rsten 0 1 INDEXED |
| | | givenName substring (givenName=*rsten) 0 1 INDEXED |
| | | givenName substring GivenName=*rsten 0 1 INDEXED |
| | | givenName substring (GivenName=*rsten) 0 1 INDEXED |
| | | givenName substring givenname=*rsten 0 1 INDEXED |
| | | givenName substring (givenname=*rsten) 0 1 INDEXED |
| | | givenName substring givenName=*rste* 0 1 INDEXED |
| | | givenName substring (givenName=*rste*) 0 1 INDEXED |
| | | givenName substring GivenName=*rste* 0 1 INDEXED |
| | | givenName substring (GivenName=*rste*) 0 1 INDEXED |
| | | givenName substring GIVENNAME=*rste* 0 1 INDEXED |
| | | givenName substring (GIVENNAME=*rste*) 0 1 INDEXED |
| | | cn presence cn=* 0 11 NOT-INDEXED |
| | | cn presence (cn=*) 0 11 NOT-INDEXED |
| | | cn presence CN=* 0 11 NOT-INDEXED |
| | | cn presence (CN=*) 0 11 NOT-INDEXED |
| | | cn presence Cn=* 0 11 NOT-INDEXED |
| | | cn presence (Cn=*) 0 11 NOT-INDEXED |
| | | cn substring cn=Andy* 0 1 INDEXED |
| | | cn substring (cn=Andy*) 0 1 INDEXED |
| | | cn substring cn=andy* 0 1 INDEXED |
| | | cn substring (cn=andy*) 0 1 INDEXED |
| | | cn substring CN=aNDY* 0 1 INDEXED |
| | | cn substring (CN=aNDY*) 0 1 INDEXED |
| | | cn substring cN=andy* 0 1 INDEXED |
| | | cn substring (cN=andy*) 0 1 INDEXED |
| | | cn substring cn=andy* 0 1 INDEXED |
| | | cn substring cn=*ergin 0 1 INDEXED |
| | | cn substring (cn=*ergin) 0 1 INDEXED |
| | | cn substring cn=*Bergin 0 1 INDEXED |
| | | cn substring (cn=*Bergin) 0 1 INDEXED |
| | | cn substring cN=*Bergin 0 1 INDEXED |
| | | cn substring (cN=*Bergin) 0 1 INDEXED |
| | | cn substring cn=*bERGIN 0 1 INDEXED |
| | | cn substring (cn=*bERGIN) 0 1 INDEXED |
| | | cn substring CN=*bERGIN 0 1 INDEXED |
| | | cn substring (CN=*bERGIN) 0 1 INDEXED |
| | | cn substring (CN=*bERGIN) 0 1 INDEXED |
| | | cn substring (cn=and*rgin) 0 1 INDEXED |
| | | cn substring (cn=aN*bErGiN) 0 1 INDEXED |
| | | telephoneNumber presence telephoneNumber=* 0 11 NOT-INDEXED |
| | | telephoneNumber presence (telephoneNumber=*) 0 11 NOT-INDEXED |
| | | telephoneNumber presence telephonenumber=* 0 11 NOT-INDEXED |
| | | telephoneNumber presence (telephonenumber=*) 0 11 NOT-INDEXED |
| | | telephoneNumber presence TelephoneNumber=* 0 11 NOT-INDEXED |
| | | telephoneNumber presence (TelephoneNumber=*) 0 11 NOT-INDEXED |
| | | telephoneNumber presence TELEPHONENUMBER=* 0 11 NOT-INDEXED |
| | | telephoneNumber presence (TELEPHONENUMBER=*) 0 11 NOT-INDEXED |
| | | telephoneNumber presence (&(TELEPHONENUMBER=*)) 0 11 NOT-INDEXED |
| | | telephoneNumber presence (|(TELEPHONENUMBER=*)) 0 11 NOT-INDEXED |
| | | telephoneNumber presence (&(&(TELEPHONENUMBER=*))) 0 11 NOT-INDEXED |
| | | telephoneNumber presence (|(|(TELEPHONENUMBER=*))) 0 11 NOT-INDEXED |
| | | telephoneNumber presence (&(|(TELEPHONENUMBER=*))) 0 11 NOT-INDEXED |
| | | telephoneNumber presence (|(&(TELEPHONENUMBER=*))) 0 11 NOT-INDEXED |
| | | telephoneNumber substring telephoneNumber=*8585 0 1 INDEXED |
| | | telephoneNumber substring (telephoneNumber=*8585) 0 1 INDEXED |
| | | telephoneNumber substring telephoneNumber=+1* 0 10 INDEXED |
| | | telephoneNumber substring (telephoneNumber=+1*) 0 10 INDEXED |
| | | telephoneNumber substring telephoneNumber=*408* 0 10 INDEXED |
| | | telephoneNumber substring (telephoneNumber=*408*) 0 10 INDEXED |
| | | telephoneNumber substring telephoneNumber=+1*8585 0 10 INDEXED |
| | | telephoneNumber substring (telephoneNumber=+1*8585) 0 10 INDEXED |
| | | telephoneNumber substring telephoneNumber=+1*08*8585 0 10 INDEXED |
| | | telephoneNumber substring (telephoneNumber=+1*08*8585) 0 10 INDEXED |
| | | telephoneNumber substring (&(telephoneNumber=+1*08*8585)) 0 10 INDEXED |
| | | telephoneNumber substring (|(telephoneNumber=+1*08*8585)) 0 10 INDEXED |
| | | telephoneNumber substring (&(&(telephoneNumber=+1*08*8585))) 0 10 INDEXED |
| | | telephoneNumber substring (&(|(telephoneNumber=+1*08*8585))) 0 10 INDEXED |
| | | telephoneNumber substring (|(&(telephoneNumber=+1*08*8585))) 0 10 INDEXED |
| | | telephoneNumber substring (|(|(|(|(|(|(|(telephoneNumber=+1*08*8585)))))))) 0 10 INDEXED |
| | | telephoneNumber substring (&(&(&(&(&(&(&(&(&(&(&(&(&(&(&(telephoneNumber=+1*08*8585)))))))))))))))) 0 10 INDEXED |
| | | telephoneNumber substring (&(|(&(|(&(|(&(|(&(|(&(|(&(|(&(|(telephoneNumber=+1*08*8585))))))))))))))))) 0 10 INDEXED |
| | | uid presence uid=* 0 NOT-INDEXED |
| | | uid presence UID=* 0 NOT-INDEXED |
| | | uid presence uId=* 0 NOT-INDEXED |
| | | uid presence UiD=* 0 NOT-INDEXED |
| | | uid equality uid=jwallace 0 INDEXED |
| | | uid equality (uid=jwallace) 0 INDEXED |
| | | uid equality (&(uid=jwallace)) 0 INDEXED |
| | | uid equality (|(uid=jwallace)) 0 INDEXED |
| | | uid equality (&(&(uid=jwallace))) 0 INDEXED |
| | | uid equality (&(|(uid=jwallace))) 0 INDEXED |
| | | uid equality (|(&(uid=jwallace))) 0 INDEXED |
| | | uid equality (|(|(uid=jwallace))) 0 INDEXED |
| | | uid equality (|(|(uid=jwallace))) 0 INDEXED |
| | | uid substring uid=j* 0 INDEXED |
| | | uid substring (uid=j*) 0 INDEXED |
| | | uid substring uid=*allace 0 NOT-INDEXED |
| | | uid substring (uid=*allace) 0 NOT-INDEXED |
| | | uid substring (&(uid=*allace)) 0 NOT-INDEXED |
| | | uid substring (|(uid=*allace)) 0 NOT-INDEXED |
| | | uid substring (&(&(uid=*allace))) 0 NOT-INDEXED |
| | | uid substring (&(|(uid=*allace))) 0 NOT-INDEXED |
| | | uid substring (|(&(uid=*allace))) 0 NOT-INDEXED |
| | | uid substring (|(|(uid=*allace))) 0 NOT-INDEXED |
| | | uid substring uid=jw*ce 0 INDEXED |
| | | uid substring (uid=jw*ce) 0 INDEXED |
| | | uid approximate uid~=wallace 0 NOT-INDEXED |
| | | uid approximate uid~=jwalace 0 NOT-INDEXED |
| | | uid negate !(uid=jwallace) 0 NOT-INDEXED |
| | | uid negate (!(uid=jwallace)) 0 NOT-INDEXED |
| | | uid negate (!(&(uid=jwallace))) 0 NOT-INDEXED |
| | | uid negate (!(|(uid=jwallace))) 0 NOT-INDEXED |
| | | uid complexAnd (uid=j*&l=sunnyvale) 0 INDEXED |
| | | uid complexAnd &(uid=j*)(l=sunnyvale) 0 NOT-INDEXED |
| | | uid complexAnd (&(uid=j*)(l=~sunyvale)) 0 NOT-INDEXED |
| | | uid complexAnd (&(&(uid=j*)(l=~sunyvale))) 0 NOT-INDEXED |
| | | uid complexAnd (uid=j*&!l=cupertino) 0 INDEXED |
| | | uid complexAnd (uid=j*&l=sun*) 0 INDEXED |
| | | uid complexAnd (&(uid=j*)(l=sun*)) 0 INDEXED |
| | | uid complexOr (uid=jwallace|uid=jwalker) 0 INDEXED |
| | | uid complexOr (uid=jwallace|l=Sun*) 0 INDEXED |
| | | uid complexOr (uid=jwallace|l=~unnyvale) 0 INDEXED |
| | | uid complexOr (uid=jwallace|!l=Cupertino) 0 INDEXED |
| | | uid complexOr (uid=jwallace|!l=Cuper*) 0 INDEXED |
| | | uid complexOr (uid=j*|l=sunnyvale) 0 INDEXED |
| | | uid complexOr (uid=j*|!l=Cupertino) 0 INDEXED |
| | | uid complexOr (uid=j*|!l=Cuper*) 0 INDEXED |
| | | uid complexOr (uid=j*|!l~=Cuperino) 0 INDEXED |
| | | uid complexOr (uid=j*|l~=sunyvale) 0 INDEXED |
| | | uid complexOr (|(uid=j*)(l=sunnyvale)) 0 INDEXED |
| | | uid complexOr (|(&(uid=j*)(uid=*lace))) 0 INDEXED |
| | | sn presence sn=* 0 NOT-INDEXED |
| | | sn presence SN=* 0 NOT-INDEXED |
| | | sn presence sN=* 0 NOT-INDEXED |
| | | sn presence Sn=* 0 NOT-INDEXED |
| | | sn equality sn=Bergin 0 INDEXED |
| | | sn equality (sn=Bergin) 0 INDEXED |
| | | sn substring sn=Ber* 0 INDEXED |
| | | sn substring (sn=Ber*) 0 INDEXED |
| | | sn substring sn=*ergin 0 INDEXED |
| | | sn substring (sn=*ergin) 0 INDEXED |
| | | sn substring sn=*ergi* 0 INDEXED |
| | | sn substring (sn=*ergi*) 0 INDEXED |
| | | sn approximate sn~=begin 0 NOT-INDEXED |
| | | sn approximate (sn~=begin) 0 NOT-INDEXED |
| | | mail presence mail=* 0 NOT-INDEXED |
| | | mail presence Mail=* 0 NOT-INDEXED |
| | | mail presence MAIL=* 0 NOT-INDEXED |
| | | mail presence mAiL=* 0 NOT-INDEXED |
| | | mail equality mail=kvaughan@example.com 0 INDEXED |
| | | mail equality (mail=kvaughan@example.com) 0 INDEXED |
| | | mail substring mail=kvaughan* 0 INDEXED |
| | | mail substring (mail=kvaughan*) 0 INDEXED |
| | | mail substring mail=*aughan@example.com 0 INDEXED |
| | | mail substring (mail=*aughan@example.com) 0 INDEXED |
| | | mail substring mail=*aughan@example.* 0 INDEXED |
| | | mail substring (mail=*aughan@example.*) 0 INDEXED |
| | | givenName presence givenName=* 0 NOT-INDEXED |
| | | givenName presence (givenName=*) 0 NOT-INDEXED |
| | | givenName presence givenname=* 0 NOT-INDEXED |
| | | givenName presence (givenname=*) 0 NOT-INDEXED |
| | | givenName presence GIVENNAME=* 0 NOT-INDEXED |
| | | givenName presence (GIVENNAME=*) 0 NOT-INDEXED |
| | | givenName presence GivenName=* 0 NOT-INDEXED |
| | | givenName presence (GivenName=*) 0 NOT-INDEXED |
| | | givenName presence GiVeNnaMe=* 0 NOT-INDEXED |
| | | givenName presence (GiVeNnaMe=*) 0 NOT-INDEXED |
| | | givenName presence gIvEnNaMe=* 0 NOT-INDEXED |
| | | givenName presence (gIvEnNaMe=*) 0 NOT-INDEXED |
| | | givenName equality givenName=kirsten 0 INDEXED |
| | | givenName equality (givenName=kirsten) 0 INDEXED |
| | | givenName equality givenName=Kirsten 0 INDEXED |
| | | givenName equality (givenName=Kirsten) 0 INDEXED |
| | | givenName equality givenname=kirsten 0 INDEXED |
| | | givenName equality (givenname=kirsten) 0 INDEXED |
| | | givenName equality givenname=KIRSTEN 0 INDEXED |
| | | givenName equality (givenname=KIRSTEN) 0 INDEXED |
| | | givenName equality GIVENNAME=kirsten 0 INDEXED |
| | | givenName equality (GIVENNAME=kirsten) 0 INDEXED |
| | | givenName equality GIVENNAME=KIRSTEN 0 INDEXED |
| | | givenName equality (GIVENNAME=KIRSTEN) 0 INDEXED |
| | | givenName equality gIvEnNaMe=kIrStEn 0 INDEXED |
| | | givenName equality (gIvEnNaMe=kIrStEn) 0 INDEXED |
| | | givenName substring givenName=kirst* 0 INDEXED |
| | | givenName substring (givenName=kirst*) 0 INDEXED |
| | | givenName substring GivenName=kirst* 0 INDEXED |
| | | givenName substring (GivenName=kirst*) 0 INDEXED |
| | | givenName substring givenname=kirst* 0 INDEXED |
| | | givenName substring (givenname=kirst*) 0 INDEXED |
| | | givenName substring GIVENNAME=kirst* 0 INDEXED |
| | | givenName substring (GIVENNAME=kirst*) 0 INDEXED |
| | | givenName substring givenName=*rsten 0 INDEXED |
| | | givenName substring (givenName=*rsten) 0 INDEXED |
| | | givenName substring GivenName=*rsten 0 INDEXED |
| | | givenName substring (GivenName=*rsten) 0 INDEXED |
| | | givenName substring givenname=*rsten 0 INDEXED |
| | | givenName substring (givenname=*rsten) 0 INDEXED |
| | | givenName substring givenName=*rste* 0 INDEXED |
| | | givenName substring (givenName=*rste*) 0 INDEXED |
| | | givenName substring GivenName=*rste* 0 INDEXED |
| | | givenName substring (GivenName=*rste*) 0 INDEXED |
| | | givenName substring GIVENNAME=*rste* 0 INDEXED |
| | | givenName substring (GIVENNAME=*rste*) 0 INDEXED |
| | | cn presence cn=* 0 NOT-INDEXED |
| | | cn presence (cn=*) 0 NOT-INDEXED |
| | | cn presence CN=* 0 NOT-INDEXED |
| | | cn presence (CN=*) 0 NOT-INDEXED |
| | | cn presence Cn=* 0 NOT-INDEXED |
| | | cn presence (Cn=*) 0 NOT-INDEXED |
| | | cn substring cn=Andy* 0 INDEXED |
| | | cn substring (cn=Andy*) 0 INDEXED |
| | | cn substring cn=andy* 0 INDEXED |
| | | cn substring (cn=andy*) 0 INDEXED |
| | | cn substring CN=aNDY* 0 INDEXED |
| | | cn substring (CN=aNDY*) 0 INDEXED |
| | | cn substring cN=andy* 0 INDEXED |
| | | cn substring (cN=andy*) 0 INDEXED |
| | | cn substring cn=andy* 0 INDEXED |
| | | cn substring cn=*ergin 0 INDEXED |
| | | cn substring (cn=*ergin) 0 INDEXED |
| | | cn substring cn=*Bergin 0 INDEXED |
| | | cn substring (cn=*Bergin) 0 INDEXED |
| | | cn substring cN=*Bergin 0 INDEXED |
| | | cn substring (cN=*Bergin) 0 INDEXED |
| | | cn substring cn=*bERGIN 0 INDEXED |
| | | cn substring (cn=*bERGIN) 0 INDEXED |
| | | cn substring CN=*bERGIN 0 INDEXED |
| | | cn substring (CN=*bERGIN) 0 INDEXED |
| | | cn substring (CN=*bERGIN) 0 INDEXED |
| | | cn substring (cn=and*rgin) 0 INDEXED |
| | | cn substring (cn=aN*bErGiN) 0 INDEXED |
| | | telephoneNumber presence telephoneNumber=* 0 NOT-INDEXED |
| | | telephoneNumber presence (telephoneNumber=*) 0 NOT-INDEXED |
| | | telephoneNumber presence telephonenumber=* 0 NOT-INDEXED |
| | | telephoneNumber presence (telephonenumber=*) 0 NOT-INDEXED |
| | | telephoneNumber presence TelephoneNumber=* 0 NOT-INDEXED |
| | | telephoneNumber presence (TelephoneNumber=*) 0 NOT-INDEXED |
| | | telephoneNumber presence TELEPHONENUMBER=* 0 NOT-INDEXED |
| | | telephoneNumber presence (TELEPHONENUMBER=*) 0 NOT-INDEXED |
| | | telephoneNumber presence (&(TELEPHONENUMBER=*)) 0 NOT-INDEXED |
| | | telephoneNumber presence (|(TELEPHONENUMBER=*)) 0 NOT-INDEXED |
| | | telephoneNumber presence (&(&(TELEPHONENUMBER=*))) 0 NOT-INDEXED |
| | | telephoneNumber presence (|(|(TELEPHONENUMBER=*))) 0 NOT-INDEXED |
| | | telephoneNumber presence (&(|(TELEPHONENUMBER=*))) 0 NOT-INDEXED |
| | | telephoneNumber presence (|(&(TELEPHONENUMBER=*))) 0 NOT-INDEXED |
| | | telephoneNumber substring telephoneNumber=*8585 0 INDEXED |
| | | telephoneNumber substring (telephoneNumber=*8585) 0 INDEXED |
| | | telephoneNumber substring telephoneNumber=+1* 0 INDEXED |
| | | telephoneNumber substring (telephoneNumber=+1*) 0 INDEXED |
| | | telephoneNumber substring telephoneNumber=*408* 0 INDEXED |
| | | telephoneNumber substring (telephoneNumber=*408*) 0 INDEXED |
| | | telephoneNumber substring telephoneNumber=+1*8585 0 INDEXED |
| | | telephoneNumber substring (telephoneNumber=+1*8585) 0 INDEXED |
| | | telephoneNumber substring telephoneNumber=+1*08*8585 0 INDEXED |
| | | telephoneNumber substring (telephoneNumber=+1*08*8585) 0 INDEXED |
| | | telephoneNumber substring (&(telephoneNumber=+1*08*8585)) 0 INDEXED |
| | | telephoneNumber substring (|(telephoneNumber=+1*08*8585)) 0 INDEXED |
| | | telephoneNumber substring (&(&(telephoneNumber=+1*08*8585))) 0 INDEXED |
| | | telephoneNumber substring (&(|(telephoneNumber=+1*08*8585))) 0 INDEXED |
| | | telephoneNumber substring (|(&(telephoneNumber=+1*08*8585))) 0 INDEXED |
| | | telephoneNumber substring (|(|(|(|(|(|(|(telephoneNumber=+1*08*8585)))))))) 0 INDEXED |
| | | telephoneNumber substring (&(&(&(&(&(&(&(&(&(&(&(&(&(&(&(telephoneNumber=+1*08*8585)))))))))))))))) 0 INDEXED |
| | | telephoneNumber substring (&(|(&(|(&(|(&(|(&(|(&(|(&(|(&(|(telephoneNumber=+1*08*8585))))))))))))))))) 0 INDEXED |
| | |
| | | |
| | | <!-- Add entry to server1 --> |
| | | <script> |
| | | entry = Entry('uid=tuser-0') |
| | | entry.addAttr('employeeNumber', '0') |
| | | myEntry = Entry('uid=tuser-0') |
| | | myEntry.addAttr('employeeNumber', '0') |
| | | </script> |
| | | <call function="'addAnEntry'"> |
| | | { 'location' : server1Host, |
| | |
| | | 'dsInstancePort' : server1.getPort(), |
| | | 'dsInstanceDn' : server1.getRootDn(), |
| | | 'dsInstancePswd' : server1.getRootPwd(), |
| | | 'DNToAdd' : entry.getDn(), |
| | | 'listAttributes' : entry.getAttrList() |
| | | 'DNToAdd' : myEntry.getDn(), |
| | | 'listAttributes' : myEntry.getAttrList() |
| | | } |
| | | </call> |
| | | |
| | |
| | | 'dsInstancePort' : server.getPort(), |
| | | 'dsInstanceDn' : server.getRootDn(), |
| | | 'dsInstancePswd' : server.getRootPwd(), |
| | | 'DNToModify' : entry.getDn(), |
| | | 'DNToModify' : myEntry.getDn(), |
| | | 'attributeName' : 'employeeNumber', |
| | | 'newAttributeValue' : '%i' % (i + 1), |
| | | 'changetype' : 'replace' |
| | |
| | | 'dsInstancePort' : server.getPort(), |
| | | 'dsInstanceDn' : server.getRootDn(), |
| | | 'dsInstancePswd' : server.getRootPwd(), |
| | | 'dsBaseDN' : entry.getDn(), |
| | | 'dsBaseDN' : myEntry.getDn(), |
| | | 'dsFilter' : 'objectclass=*', |
| | | 'dsAttributes' : 'employeeNumber', |
| | | 'logStderr' : False |
| | |
| | | 'dsInstancePort' : server1.getPort(), |
| | | 'dsInstanceDn' : server1.getRootDn(), |
| | | 'dsInstancePswd' : server1.getRootPwd(), |
| | | 'dsDn' : [entry.getDn()] |
| | | 'dsDn' : [myEntry.getDn()] |
| | | } |
| | | </call> |
| | | |
| | |
| | | |
| | | <!-- Add entry to server1 --> |
| | | <script> |
| | | entry = Entry('cn=A1') |
| | | entry.addAttr('description', '1') |
| | | entry.addAttr('description', '2') |
| | | myEntry = Entry('cn=A1') |
| | | myEntry.addAttr('description', '1') |
| | | myEntry.addAttr('description', '2') |
| | | server1mods = ['description:3', 'description:4'] |
| | | server2mods = ['description:5', 'description:6'] |
| | | mods = [server1mods, server2mods] |
| | |
| | | 'dsInstancePort' : server1.getPort(), |
| | | 'dsInstanceDn' : server1.getRootDn(), |
| | | 'dsInstancePswd' : server1.getRootPwd(), |
| | | 'DNToAdd' : entry.getDn(), |
| | | 'listAttributes' : entry.getAttrList() |
| | | 'DNToAdd' : myEntry.getDn(), |
| | | 'listAttributes' : myEntry.getAttrList() |
| | | } |
| | | </call> |
| | | |
| | |
| | | 'dsInstancePort' : server.getPort(), |
| | | 'dsInstanceDn' : server.getRootDn(), |
| | | 'dsInstancePswd' : server.getRootPwd(), |
| | | 'DNToModify' : entry.getDn(), |
| | | 'DNToModify' : myEntry.getDn(), |
| | | 'listAttributes' : mods[i], |
| | | 'changetype' : 'replace' |
| | | } |
| | |
| | | 'dsInstancePort' : server.getPort(), |
| | | 'dsInstanceDn' : server.getRootDn(), |
| | | 'dsInstancePswd' : server.getRootPwd(), |
| | | 'dsBaseDN' : entry.getDn(), |
| | | 'dsBaseDN' : myEntry.getDn(), |
| | | 'dsFilter' : 'objectclass=*', |
| | | 'dsAttributes' : 'description', |
| | | 'logStderr' : False |
| | |
| | | 'dsInstancePort' : server.getPort(), |
| | | 'dsInstanceDn' : server.getRootDn(), |
| | | 'dsInstancePswd' : server.getRootPwd(), |
| | | 'dsBaseDN' : entry.getDn(), |
| | | 'dsBaseDN' : myEntry.getDn(), |
| | | 'dsFilter' : 'objectclass=*', |
| | | 'dsAttributes' : 'description', |
| | | 'logStderr' : False |
| | |
| | | 'dsInstancePort' : server1.getPort(), |
| | | 'dsInstanceDn' : server1.getRootDn(), |
| | | 'dsInstancePswd' : server1.getRootPwd(), |
| | | 'dsDn' : [entry.getDn()] |
| | | 'dsDn' : [myEntry.getDn()] |
| | | } |
| | | </call> |
| | | |
| | |
| | | |
| | | <!-- Add entry to server1 --> |
| | | <script> |
| | | entry = Entry('cn=A4') |
| | | entry.addAttr('employeeNumber', '0') |
| | | myEntry = Entry('cn=A4') |
| | | myEntry.addAttr('employeeNumber', '0') |
| | | </script> |
| | | <call function="'addAnEntry'"> |
| | | { 'location' : server1Host, |
| | |
| | | 'dsInstancePort' : server1.getPort(), |
| | | 'dsInstanceDn' : server1.getRootDn(), |
| | | 'dsInstancePswd' : server1.getRootPwd(), |
| | | 'DNToAdd' : entry.getDn(), |
| | | 'listAttributes' : entry.getAttrList() |
| | | 'DNToAdd' : myEntry.getDn(), |
| | | 'listAttributes' : myEntry.getAttrList() |
| | | } |
| | | </call> |
| | | |
| | |
| | | 'dsInstancePort' : server.getPort(), |
| | | 'dsInstanceDn' : server.getRootDn(), |
| | | 'dsInstancePswd' : server.getRootPwd(), |
| | | 'DNToModify' : entry.getDn(), |
| | | 'DNToModify' : myEntry.getDn(), |
| | | 'attributeName' : 'employeeNumber', |
| | | 'newAttributeValue' : '%i' % (i + 1), |
| | | 'changetype' : 'replace' |
| | |
| | | 'dsInstancePort' : server.getPort(), |
| | | 'dsInstanceDn' : server.getRootDn(), |
| | | 'dsInstancePswd' : server.getRootPwd(), |
| | | 'dsBaseDN' : entry.getDn(), |
| | | 'dsBaseDN' : myEntry.getDn(), |
| | | 'dsFilter' : 'objectclass=*', |
| | | 'dsAttributes' : 'employeeNumber', |
| | | 'logStderr' : False |
| | |
| | | 'dsInstancePort' : server.getPort(), |
| | | 'dsInstanceDn' : server.getRootDn(), |
| | | 'dsInstancePswd' : server.getRootPwd(), |
| | | 'dsBaseDN' : entry.getDn(), |
| | | 'dsBaseDN' : myEntry.getDn(), |
| | | 'dsFilter' : 'objectclass=*', |
| | | 'dsAttributes' : 'employeeNumber', |
| | | 'logStderr' : False |
| | |
| | | 'dsInstancePort' : server1.getPort(), |
| | | 'dsInstanceDn' : server1.getRootDn(), |
| | | 'dsInstancePswd' : server1.getRootPwd(), |
| | | 'dsDn' : [entry.getDn()] |
| | | 'dsDn' : [myEntry.getDn()] |
| | | } |
| | | </call> |
| | | |
| | |
| | | |
| | | <!-- Add entry to server1 --> |
| | | <script> |
| | | entry = Entry('cn=A2') |
| | | myEntry = Entry('cn=A2') |
| | | for x in range(10): |
| | | entry.addAttr('description', '%i' % (x+1)) |
| | | myEntry.addAttr('description', '%i' % (x+1)) |
| | | server1del = ['description:1'] |
| | | server1add = ['description:11'] |
| | | server2del = ['description:1'] |
| | |
| | | 'dsInstancePort' : server1.getPort(), |
| | | 'dsInstanceDn' : server1.getRootDn(), |
| | | 'dsInstancePswd' : server1.getRootPwd(), |
| | | 'DNToAdd' : entry.getDn(), |
| | | 'listAttributes' : entry.getAttrList() |
| | | 'DNToAdd' : myEntry.getDn(), |
| | | 'listAttributes' : myEntry.getAttrList() |
| | | } |
| | | </call> |
| | | |
| | |
| | | 'dsInstancePort' : server.getPort(), |
| | | 'dsInstanceDn' : server.getRootDn(), |
| | | 'dsInstancePswd' : server.getRootPwd(), |
| | | 'DNToModify' : entry.getDn(), |
| | | 'DNToModify' : myEntry.getDn(), |
| | | 'listAttributes' : mods[i][0], |
| | | 'changetype' : 'delete' |
| | | } |
| | |
| | | 'dsInstancePort' : server.getPort(), |
| | | 'dsInstanceDn' : server.getRootDn(), |
| | | 'dsInstancePswd' : server.getRootPwd(), |
| | | 'DNToModify' : entry.getDn(), |
| | | 'DNToModify' : myEntry.getDn(), |
| | | 'listAttributes' : mods[i][1], |
| | | 'changetype' : 'add' |
| | | } |
| | |
| | | 'dsInstancePort' : server.getPort(), |
| | | 'dsInstanceDn' : server.getRootDn(), |
| | | 'dsInstancePswd' : server.getRootPwd(), |
| | | 'dsBaseDN' : entry.getDn(), |
| | | 'dsBaseDN' : myEntry.getDn(), |
| | | 'dsFilter' : 'objectclass=*', |
| | | 'dsAttributes' : 'description', |
| | | 'logStderr' : False |
| | |
| | | 'dsInstancePort' : server.getPort(), |
| | | 'dsInstanceDn' : server.getRootDn(), |
| | | 'dsInstancePswd' : server.getRootPwd(), |
| | | 'dsBaseDN' : entry.getDn(), |
| | | 'dsBaseDN' : myEntry.getDn(), |
| | | 'dsFilter' : 'objectclass=*', |
| | | 'dsAttributes' : 'description', |
| | | 'logStderr' : False |
| | |
| | | 'dsInstancePort' : server1.getPort(), |
| | | 'dsInstanceDn' : server1.getRootDn(), |
| | | 'dsInstancePswd' : server1.getRootPwd(), |
| | | 'dsDn' : [entry.getDn()] |
| | | 'dsDn' : [myEntry.getDn()] |
| | | } |
| | | </call> |
| | | |
| | |
| | | |
| | | <!-- Add entry to server1 --> |
| | | <script> |
| | | entry = Entry('cn=A3') |
| | | myEntry = Entry('cn=A3') |
| | | for x in range(10): |
| | | entry.addAttr('description', '%i' % (x+1)) |
| | | myEntry.addAttr('description', '%i' % (x+1)) |
| | | server1del = ['description:1'] |
| | | server1add = ['description:11'] |
| | | server2del = ['description:10'] |
| | |
| | | 'dsInstancePort' : server1.getPort(), |
| | | 'dsInstanceDn' : server1.getRootDn(), |
| | | 'dsInstancePswd' : server1.getRootPwd(), |
| | | 'DNToAdd' : entry.getDn(), |
| | | 'listAttributes' : entry.getAttrList() |
| | | 'DNToAdd' : myEntry.getDn(), |
| | | 'listAttributes' : myEntry.getAttrList() |
| | | } |
| | | </call> |
| | | |
| | |
| | | 'dsInstancePort' : server.getPort(), |
| | | 'dsInstanceDn' : server.getRootDn(), |
| | | 'dsInstancePswd' : server.getRootPwd(), |
| | | 'DNToModify' : entry.getDn(), |
| | | 'DNToModify' : myEntry.getDn(), |
| | | 'listAttributes' : mods[i][0], |
| | | 'changetype' : 'delete' |
| | | } |
| | |
| | | 'dsInstancePort' : server.getPort(), |
| | | 'dsInstanceDn' : server.getRootDn(), |
| | | 'dsInstancePswd' : server.getRootPwd(), |
| | | 'DNToModify' : entry.getDn(), |
| | | 'DNToModify' : myEntry.getDn(), |
| | | 'listAttributes' : mods[i][1], |
| | | 'changetype' : 'add' |
| | | } |
| | |
| | | 'dsInstancePort' : server.getPort(), |
| | | 'dsInstanceDn' : server.getRootDn(), |
| | | 'dsInstancePswd' : server.getRootPwd(), |
| | | 'dsBaseDN' : entry.getDn(), |
| | | 'dsBaseDN' : myEntry.getDn(), |
| | | 'dsFilter' : 'objectclass=*', |
| | | 'dsAttributes' : 'description', |
| | | 'logStderr' : False |
| | |
| | | 'dsInstancePort' : server.getPort(), |
| | | 'dsInstanceDn' : server.getRootDn(), |
| | | 'dsInstancePswd' : server.getRootPwd(), |
| | | 'dsBaseDN' : entry.getDn(), |
| | | 'dsBaseDN' : myEntry.getDn(), |
| | | 'dsFilter' : 'objectclass=*', |
| | | 'dsAttributes' : 'description', |
| | | 'logStderr' : False |
| | |
| | | 'dsInstancePort' : server1.getPort(), |
| | | 'dsInstanceDn' : server1.getRootDn(), |
| | | 'dsInstancePswd' : server1.getRootPwd(), |
| | | 'dsDn' : [entry.getDn()] |
| | | 'dsDn' : [myEntry.getDn()] |
| | | } |
| | | </call> |
| | | |
| | |
| | | |
| | | <!-- Add entry to server1 --> |
| | | <script> |
| | | entry = Entry('cn=B1') |
| | | myEntry = Entry('cn=B1') |
| | | server1add = ['description:1'] |
| | | server2add = ['description:1', 'description:2'] |
| | | server1mods = [server1add] |
| | |
| | | 'dsInstancePort' : server1.getPort(), |
| | | 'dsInstanceDn' : server1.getRootDn(), |
| | | 'dsInstancePswd' : server1.getRootPwd(), |
| | | 'DNToAdd' : entry.getDn(), |
| | | 'listAttributes' : entry.getAttrList() |
| | | 'DNToAdd' : myEntry.getDn(), |
| | | 'listAttributes' : myEntry.getAttrList() |
| | | } |
| | | </call> |
| | | |
| | |
| | | 'dsInstancePort' : server.getPort(), |
| | | 'dsInstanceDn' : server.getRootDn(), |
| | | 'dsInstancePswd' : server.getRootPwd(), |
| | | 'DNToModify' : entry.getDn(), |
| | | 'DNToModify' : myEntry.getDn(), |
| | | 'listAttributes' : mods[i][0], |
| | | 'changetype' : 'add' |
| | | } |
| | |
| | | 'dsInstancePort' : server.getPort(), |
| | | 'dsInstanceDn' : server.getRootDn(), |
| | | 'dsInstancePswd' : server.getRootPwd(), |
| | | 'dsBaseDN' : entry.getDn(), |
| | | 'dsBaseDN' : myEntry.getDn(), |
| | | 'dsFilter' : 'objectclass=*', |
| | | 'dsAttributes' : 'description', |
| | | 'logStderr' : False |
| | |
| | | 'dsInstancePort' : server.getPort(), |
| | | 'dsInstanceDn' : server.getRootDn(), |
| | | 'dsInstancePswd' : server.getRootPwd(), |
| | | 'dsBaseDN' : entry.getDn(), |
| | | 'dsBaseDN' : myEntry.getDn(), |
| | | 'dsFilter' : 'objectclass=*', |
| | | 'dsAttributes' : 'description', |
| | | 'logStderr' : False |
| | |
| | | 'dsInstancePort' : server1.getPort(), |
| | | 'dsInstanceDn' : server1.getRootDn(), |
| | | 'dsInstancePswd' : server1.getRootPwd(), |
| | | 'dsDn' : [entry.getDn()] |
| | | 'dsDn' : [myEntry.getDn()] |
| | | } |
| | | </call> |
| | | |
| | |
| | | |
| | | <!-- Add entry to server1 --> |
| | | <script> |
| | | entry = Entry('cn=B2') |
| | | myEntry = Entry('cn=B2') |
| | | server1add = ['employeeNumber:1'] |
| | | server2add = ['employeeNumber:2'] |
| | | server1mods = [server1add] |
| | |
| | | 'dsInstancePort' : server1.getPort(), |
| | | 'dsInstanceDn' : server1.getRootDn(), |
| | | 'dsInstancePswd' : server1.getRootPwd(), |
| | | 'DNToAdd' : entry.getDn(), |
| | | 'listAttributes' : entry.getAttrList() |
| | | 'DNToAdd' : myEntry.getDn(), |
| | | 'listAttributes' : myEntry.getAttrList() |
| | | } |
| | | </call> |
| | | |
| | |
| | | 'dsInstancePort' : server.getPort(), |
| | | 'dsInstanceDn' : server.getRootDn(), |
| | | 'dsInstancePswd' : server.getRootPwd(), |
| | | 'DNToModify' : entry.getDn(), |
| | | 'DNToModify' : myEntry.getDn(), |
| | | 'listAttributes' : mods[i][0], |
| | | 'changetype' : 'add' |
| | | } |
| | |
| | | 'dsInstancePort' : server.getPort(), |
| | | 'dsInstanceDn' : server.getRootDn(), |
| | | 'dsInstancePswd' : server.getRootPwd(), |
| | | 'dsBaseDN' : entry.getDn(), |
| | | 'dsBaseDN' : myEntry.getDn(), |
| | | 'dsFilter' : 'objectclass=*', |
| | | 'dsAttributes' : 'employeeNumber', |
| | | 'logStderr' : False |
| | |
| | | 'dsInstancePort' : server.getPort(), |
| | | 'dsInstanceDn' : server.getRootDn(), |
| | | 'dsInstancePswd' : server.getRootPwd(), |
| | | 'dsBaseDN' : entry.getDn(), |
| | | 'dsBaseDN' : myEntry.getDn(), |
| | | 'dsFilter' : 'objectclass=*', |
| | | 'dsAttributes' : 'employeeNumber', |
| | | 'logStderr' : False |
| | |
| | | 'dsInstancePort' : server1.getPort(), |
| | | 'dsInstanceDn' : server1.getRootDn(), |
| | | 'dsInstancePswd' : server1.getRootPwd(), |
| | | 'dsDn' : [entry.getDn()] |
| | | 'dsDn' : [myEntry.getDn()] |
| | | } |
| | | </call> |
| | | |
| | |
| | | |
| | | <!-- Add entry to server1 --> |
| | | <script> |
| | | entry = Entry('cn=C1') |
| | | myEntry = Entry('cn=C1') |
| | | for x in range(10): |
| | | entry.addAttr('description', '%i' % (x+1)) |
| | | myEntry.addAttr('description', '%i' % (x+1)) |
| | | server1del = [] |
| | | for y in range(1,6): |
| | | server1del.append('description:%i' % y) |
| | |
| | | 'dsInstancePort' : server1.getPort(), |
| | | 'dsInstanceDn' : server1.getRootDn(), |
| | | 'dsInstancePswd' : server1.getRootPwd(), |
| | | 'DNToAdd' : entry.getDn(), |
| | | 'listAttributes' : entry.getAttrList() |
| | | 'DNToAdd' : myEntry.getDn(), |
| | | 'listAttributes' : myEntry.getAttrList() |
| | | } |
| | | </call> |
| | | |
| | |
| | | 'dsInstancePort' : server.getPort(), |
| | | 'dsInstanceDn' : server.getRootDn(), |
| | | 'dsInstancePswd' : server.getRootPwd(), |
| | | 'DNToModify' : entry.getDn(), |
| | | 'DNToModify' : myEntry.getDn(), |
| | | 'listAttributes' : mods[i][0], |
| | | 'changetype' : 'delete' |
| | | } |
| | |
| | | 'dsInstancePort' : server.getPort(), |
| | | 'dsInstanceDn' : server.getRootDn(), |
| | | 'dsInstancePswd' : server.getRootPwd(), |
| | | 'dsBaseDN' : entry.getDn(), |
| | | 'dsBaseDN' : myEntry.getDn(), |
| | | 'dsFilter' : 'objectclass=*', |
| | | 'dsAttributes' : 'description', |
| | | 'logStderr' : False |
| | |
| | | 'dsInstancePort' : server.getPort(), |
| | | 'dsInstanceDn' : server.getRootDn(), |
| | | 'dsInstancePswd' : server.getRootPwd(), |
| | | 'dsBaseDN' : entry.getDn(), |
| | | 'dsBaseDN' : myEntry.getDn(), |
| | | 'dsFilter' : 'objectclass=*', |
| | | 'dsAttributes' : 'description', |
| | | 'logStderr' : False |
| | |
| | | 'dsInstancePort' : server1.getPort(), |
| | | 'dsInstanceDn' : server1.getRootDn(), |
| | | 'dsInstancePswd' : server1.getRootPwd(), |
| | | 'dsDn' : [entry.getDn()] |
| | | 'dsDn' : [myEntry.getDn()] |
| | | } |
| | | </call> |
| | | |
| | |
| | | |
| | | <!-- Add entry to server1 --> |
| | | <script> |
| | | entry = Entry('cn=C2') |
| | | entry.addAttr('employeeNumber', '1') |
| | | myEntry = Entry('cn=C2') |
| | | myEntry.addAttr('employeeNumber', '1') |
| | | server1del = ['employeeNumber:'] |
| | | server2del = ['employeeNumber:1'] |
| | | server1mods = [server1del] |
| | |
| | | 'dsInstancePort' : server1.getPort(), |
| | | 'dsInstanceDn' : server1.getRootDn(), |
| | | 'dsInstancePswd' : server1.getRootPwd(), |
| | | 'DNToAdd' : entry.getDn(), |
| | | 'listAttributes' : entry.getAttrList() |
| | | 'DNToAdd' : myEntry.getDn(), |
| | | 'listAttributes' : myEntry.getAttrList() |
| | | } |
| | | </call> |
| | | |
| | |
| | | 'dsInstancePort' : server.getPort(), |
| | | 'dsInstanceDn' : server.getRootDn(), |
| | | 'dsInstancePswd' : server.getRootPwd(), |
| | | 'DNToModify' : entry.getDn(), |
| | | 'DNToModify' : myEntry.getDn(), |
| | | 'listAttributes' : mods[i][0], |
| | | 'changetype' : 'delete' |
| | | } |
| | |
| | | 'dsInstancePort' : server.getPort(), |
| | | 'dsInstanceDn' : server.getRootDn(), |
| | | 'dsInstancePswd' : server.getRootPwd(), |
| | | 'dsBaseDN' : entry.getDn(), |
| | | 'dsBaseDN' : myEntry.getDn(), |
| | | 'dsFilter' : 'objectclass=*', |
| | | 'dsAttributes' : 'employeeNumber', |
| | | 'logStderr' : False |
| | |
| | | 'dsInstancePort' : server.getPort(), |
| | | 'dsInstanceDn' : server.getRootDn(), |
| | | 'dsInstancePswd' : server.getRootPwd(), |
| | | 'dsBaseDN' : entry.getDn(), |
| | | 'dsBaseDN' : myEntry.getDn(), |
| | | 'dsFilter' : 'objectclass=*', |
| | | 'dsAttributes' : 'employeeNumber', |
| | | 'logStderr' : False |
| | |
| | | 'dsInstancePort' : server1.getPort(), |
| | | 'dsInstanceDn' : server1.getRootDn(), |
| | | 'dsInstancePswd' : server1.getRootPwd(), |
| | | 'dsDn' : [entry.getDn()] |
| | | 'dsDn' : [myEntry.getDn()] |
| | | } |
| | | </call> |
| | | |
| | |
| | | |
| | | <!-- Add entry to server1 --> |
| | | <script> |
| | | entry = Entry('cn=D1') |
| | | entry.addAttr('description', '1') |
| | | entry.addAttr('telephoneNumber', '1') |
| | | myEntry = Entry('cn=D1') |
| | | myEntry.addAttr('description', '1') |
| | | myEntry.addAttr('telephoneNumber', '1') |
| | | server1add = ['description:2'] |
| | | server1del = ['telephoneNumber:'] |
| | | server2del = ['description:'] |
| | |
| | | 'dsInstancePort' : server1.getPort(), |
| | | 'dsInstanceDn' : server1.getRootDn(), |
| | | 'dsInstancePswd' : server1.getRootPwd(), |
| | | 'DNToAdd' : entry.getDn(), |
| | | 'listAttributes' : entry.getAttrList() |
| | | 'DNToAdd' : myEntry.getDn(), |
| | | 'listAttributes' : myEntry.getAttrList() |
| | | } |
| | | </call> |
| | | |
| | |
| | | 'dsInstancePort' : server.getPort(), |
| | | 'dsInstanceDn' : server.getRootDn(), |
| | | 'dsInstancePswd' : server.getRootPwd(), |
| | | 'DNToModify' : entry.getDn(), |
| | | 'DNToModify' : myEntry.getDn(), |
| | | 'listAttributes' : mods[i][0], |
| | | 'changetype' : changetypes[i][0] |
| | | } |
| | |
| | | 'dsInstancePort' : server.getPort(), |
| | | 'dsInstanceDn' : server.getRootDn(), |
| | | 'dsInstancePswd' : server.getRootPwd(), |
| | | 'DNToModify' : entry.getDn(), |
| | | 'DNToModify' : myEntry.getDn(), |
| | | 'listAttributes' : mods[i][1], |
| | | 'changetype' : changetypes[i][1] |
| | | } |
| | |
| | | 'dsInstancePort' : server.getPort(), |
| | | 'dsInstanceDn' : server.getRootDn(), |
| | | 'dsInstancePswd' : server.getRootPwd(), |
| | | 'dsBaseDN' : entry.getDn(), |
| | | 'dsBaseDN' : myEntry.getDn(), |
| | | 'dsFilter' : 'objectclass=*', |
| | | 'dsAttributes' : 'description telephoneNumber', |
| | | 'logStderr' : False |
| | |
| | | 'dsInstancePort' : server.getPort(), |
| | | 'dsInstanceDn' : server.getRootDn(), |
| | | 'dsInstancePswd' : server.getRootPwd(), |
| | | 'dsBaseDN' : entry.getDn(), |
| | | 'dsBaseDN' : myEntry.getDn(), |
| | | 'dsFilter' : 'objectclass=*', |
| | | 'dsAttributes' : 'description telephoneNumber', |
| | | 'logStderr' : False |
| | |
| | | 'dsInstancePort' : server1.getPort(), |
| | | 'dsInstanceDn' : server1.getRootDn(), |
| | | 'dsInstancePswd' : server1.getRootPwd(), |
| | | 'dsDn' : [entry.getDn()] |
| | | 'dsDn' : [myEntry.getDn()] |
| | | } |
| | | </call> |
| | | |
| | |
| | | |
| | | <!-- Add entry to server1 --> |
| | | <script> |
| | | entry = Entry('cn=E1') |
| | | entry.addAttr('description', '1') |
| | | myEntry = Entry('cn=E1') |
| | | myEntry.addAttr('description', '1') |
| | | server1add = ['description:2', 'description:3'] |
| | | server2replace = ['description:4', 'description:5'] |
| | | server1mods = [server1add] |
| | |
| | | 'dsInstancePort' : server1.getPort(), |
| | | 'dsInstanceDn' : server1.getRootDn(), |
| | | 'dsInstancePswd' : server1.getRootPwd(), |
| | | 'DNToAdd' : entry.getDn(), |
| | | 'listAttributes' : entry.getAttrList() |
| | | 'DNToAdd' : myEntry.getDn(), |
| | | 'listAttributes' : myEntry.getAttrList() |
| | | } |
| | | </call> |
| | | |
| | |
| | | 'dsInstancePort' : server.getPort(), |
| | | 'dsInstanceDn' : server.getRootDn(), |
| | | 'dsInstancePswd' : server.getRootPwd(), |
| | | 'DNToModify' : entry.getDn(), |
| | | 'DNToModify' : myEntry.getDn(), |
| | | 'listAttributes' : mods[i][0], |
| | | 'changetype' : changetypes[i][0] |
| | | } |
| | |
| | | 'dsInstancePort' : server.getPort(), |
| | | 'dsInstanceDn' : server.getRootDn(), |
| | | 'dsInstancePswd' : server.getRootPwd(), |
| | | 'dsBaseDN' : entry.getDn(), |
| | | 'dsBaseDN' : myEntry.getDn(), |
| | | 'dsFilter' : 'objectclass=*', |
| | | 'dsAttributes' : 'description', |
| | | 'logStderr' : False |
| | |
| | | 'dsInstancePort' : server.getPort(), |
| | | 'dsInstanceDn' : server.getRootDn(), |
| | | 'dsInstancePswd' : server.getRootPwd(), |
| | | 'dsBaseDN' : entry.getDn(), |
| | | 'dsBaseDN' : myEntry.getDn(), |
| | | 'dsFilter' : 'objectclass=*', |
| | | 'dsAttributes' : 'description', |
| | | 'logStderr' : False |
| | |
| | | 'dsInstancePort' : server1.getPort(), |
| | | 'dsInstanceDn' : server1.getRootDn(), |
| | | 'dsInstancePswd' : server1.getRootPwd(), |
| | | 'dsDn' : [entry.getDn()] |
| | | 'dsDn' : [myEntry.getDn()] |
| | | } |
| | | </call> |
| | | |
| | |
| | | |
| | | <!-- Add entry to server1 --> |
| | | <script> |
| | | entry = Entry('cn=E2') |
| | | entry.addAttr('description', '1') |
| | | myEntry = Entry('cn=E2') |
| | | myEntry.addAttr('description', '1') |
| | | server1replace = ['description:2', 'description:3'] |
| | | server2add = ['description:4', 'description:5'] |
| | | server1mods = [server1replace] |
| | |
| | | 'dsInstancePort' : server1.getPort(), |
| | | 'dsInstanceDn' : server1.getRootDn(), |
| | | 'dsInstancePswd' : server1.getRootPwd(), |
| | | 'DNToAdd' : entry.getDn(), |
| | | 'listAttributes' : entry.getAttrList() |
| | | 'DNToAdd' : myEntry.getDn(), |
| | | 'listAttributes' : myEntry.getAttrList() |
| | | } |
| | | </call> |
| | | |
| | |
| | | 'dsInstancePort' : server.getPort(), |
| | | 'dsInstanceDn' : server.getRootDn(), |
| | | 'dsInstancePswd' : server.getRootPwd(), |
| | | 'DNToModify' : entry.getDn(), |
| | | 'DNToModify' : myEntry.getDn(), |
| | | 'listAttributes' : mods[i][0], |
| | | 'changetype' : changetypes[i][0] |
| | | } |
| | |
| | | 'dsInstancePort' : server.getPort(), |
| | | 'dsInstanceDn' : server.getRootDn(), |
| | | 'dsInstancePswd' : server.getRootPwd(), |
| | | 'dsBaseDN' : entry.getDn(), |
| | | 'dsBaseDN' : myEntry.getDn(), |
| | | 'dsFilter' : 'objectclass=*', |
| | | 'dsAttributes' : 'description', |
| | | 'logStderr' : False |
| | |
| | | 'dsInstancePort' : server.getPort(), |
| | | 'dsInstanceDn' : server.getRootDn(), |
| | | 'dsInstancePswd' : server.getRootPwd(), |
| | | 'dsBaseDN' : entry.getDn(), |
| | | 'dsBaseDN' : myEntry.getDn(), |
| | | 'dsFilter' : 'objectclass=*', |
| | | 'dsAttributes' : 'description', |
| | | 'logStderr' : False |
| | |
| | | 'dsInstancePort' : server1.getPort(), |
| | | 'dsInstanceDn' : server1.getRootDn(), |
| | | 'dsInstancePswd' : server1.getRootPwd(), |
| | | 'dsDn' : [entry.getDn()] |
| | | 'dsDn' : [myEntry.getDn()] |
| | | } |
| | | </call> |
| | | |
| | |
| | | |
| | | <!-- Add entry to server1 --> |
| | | <script> |
| | | entry = Entry('cn=F1') |
| | | myEntry = Entry('cn=F1') |
| | | for x in range(4): |
| | | entry.addAttr('description', '%i' % (x+1)) |
| | | myEntry.addAttr('description', '%i' % (x+1)) |
| | | server1del = ['description:2', 'description:3'] |
| | | server2replace = [] |
| | | for y in range(6,11): |
| | |
| | | 'dsInstancePort' : server1.getPort(), |
| | | 'dsInstanceDn' : server1.getRootDn(), |
| | | 'dsInstancePswd' : server1.getRootPwd(), |
| | | 'DNToAdd' : entry.getDn(), |
| | | 'listAttributes' : entry.getAttrList() |
| | | 'DNToAdd' : myEntry.getDn(), |
| | | 'listAttributes' : myEntry.getAttrList() |
| | | } |
| | | </call> |
| | | |
| | |
| | | 'dsInstancePort' : server.getPort(), |
| | | 'dsInstanceDn' : server.getRootDn(), |
| | | 'dsInstancePswd' : server.getRootPwd(), |
| | | 'DNToModify' : entry.getDn(), |
| | | 'DNToModify' : myEntry.getDn(), |
| | | 'listAttributes' : mods[i][0], |
| | | 'changetype' : changetypes[i][0] |
| | | } |
| | |
| | | 'dsInstancePort' : server.getPort(), |
| | | 'dsInstanceDn' : server.getRootDn(), |
| | | 'dsInstancePswd' : server.getRootPwd(), |
| | | 'dsBaseDN' : entry.getDn(), |
| | | 'dsBaseDN' : myEntry.getDn(), |
| | | 'dsFilter' : 'objectclass=*', |
| | | 'dsAttributes' : 'description', |
| | | 'logStderr' : False |
| | |
| | | 'dsInstancePort' : server.getPort(), |
| | | 'dsInstanceDn' : server.getRootDn(), |
| | | 'dsInstancePswd' : server.getRootPwd(), |
| | | 'dsBaseDN' : entry.getDn(), |
| | | 'dsBaseDN' : myEntry.getDn(), |
| | | 'dsFilter' : 'objectclass=*', |
| | | 'dsAttributes' : 'description', |
| | | 'logStderr' : False |
| | |
| | | 'dsInstancePort' : server1.getPort(), |
| | | 'dsInstanceDn' : server1.getRootDn(), |
| | | 'dsInstancePswd' : server1.getRootPwd(), |
| | | 'dsDn' : [entry.getDn()] |
| | | 'dsDn' : [myEntry.getDn()] |
| | | } |
| | | </call> |
| | | |
| | |
| | | |
| | | <!-- Add entry to server1 --> |
| | | <script> |
| | | entry = Entry('cn=F2') |
| | | myEntry = Entry('cn=F2') |
| | | for x in range(4): |
| | | entry.addAttr('description', '%i' % (x+1)) |
| | | myEntry.addAttr('description', '%i' % (x+1)) |
| | | server1replace = ['description:1', 'description:2', |
| | | 'description:3'] |
| | | server2del = ['description:3', 'description:4'] |
| | |
| | | 'dsInstancePort' : server1.getPort(), |
| | | 'dsInstanceDn' : server1.getRootDn(), |
| | | 'dsInstancePswd' : server1.getRootPwd(), |
| | | 'DNToAdd' : entry.getDn(), |
| | | 'listAttributes' : entry.getAttrList() |
| | | 'DNToAdd' : myEntry.getDn(), |
| | | 'listAttributes' : myEntry.getAttrList() |
| | | } |
| | | </call> |
| | | |
| | |
| | | 'dsInstancePort' : server.getPort(), |
| | | 'dsInstanceDn' : server.getRootDn(), |
| | | 'dsInstancePswd' : server.getRootPwd(), |
| | | 'DNToModify' : entry.getDn(), |
| | | 'DNToModify' : myEntry.getDn(), |
| | | 'listAttributes' : mods[i][0], |
| | | 'changetype' : changetypes[i][0] |
| | | } |
| | |
| | | 'dsInstancePort' : server.getPort(), |
| | | 'dsInstanceDn' : server.getRootDn(), |
| | | 'dsInstancePswd' : server.getRootPwd(), |
| | | 'dsBaseDN' : entry.getDn(), |
| | | 'dsBaseDN' : myEntry.getDn(), |
| | | 'dsFilter' : 'objectclass=*', |
| | | 'dsAttributes' : 'description', |
| | | 'logStderr' : False |
| | |
| | | 'dsInstancePort' : server.getPort(), |
| | | 'dsInstanceDn' : server.getRootDn(), |
| | | 'dsInstancePswd' : server.getRootPwd(), |
| | | 'dsBaseDN' : entry.getDn(), |
| | | 'dsBaseDN' : myEntry.getDn(), |
| | | 'dsFilter' : 'objectclass=*', |
| | | 'dsAttributes' : 'description', |
| | | 'logStderr' : False |
| | |
| | | 'dsInstancePort' : server1.getPort(), |
| | | 'dsInstanceDn' : server1.getRootDn(), |
| | | 'dsInstancePswd' : server1.getRootPwd(), |
| | | 'dsDn' : [entry.getDn()] |
| | | 'dsDn' : [myEntry.getDn()] |
| | | } |
| | | </call> |
| | | |
| | |
| | | |
| | | <!-- Verify the synchronization of the trees among the servers in |
| | | the topology --> |
| | | <!-- If the trees don't match, we may have come across Issue 4071 |
| | | (Replication conflict: delete parent, add child) --> |
| | | <call function="'verifyTrees'"> |
| | | [ clientHost, clientPath, server1, [server2], synchroSuffix ] |
| | | [ clientHost, clientPath, server1, [server2], synchroSuffix, |
| | | '4071' ] |
| | | </call> |
| | | |
| | | <!-- Delete added entries --> |
| | |
| | | </testcase> |
| | | |
| | | |
| | | |
| | | <import machine="STAF_LOCAL_HOSTNAME" |
| | | file="'%s/testcases/replication/replication_cleanup.xml' |
| | | % (TESTS_DIR)"/> |
| | |
| | | <defaultcall function="replication_cleanup"/> |
| | | |
| | | <function name="replication_cleanup"> |
| | | |
| | | <function-map-args> |
| | | <function-arg-def name="suiteSuffix" |
| | | type="optional" |
| | | default="None"> |
| | | <function-arg-description> |
| | | Test suite suffix used to copy the server logs back to the controller. |
| | | </function-arg-description> |
| | | <function-arg-property name="type" value="string"/> |
| | | </function-arg-def> |
| | | </function-map-args> |
| | | <sequence> |
| | | |
| | | <block name="'replication-cleanup'"> |
| | |
| | | <call function="'stopServers'"> |
| | | [_topologyServerList] |
| | | </call> |
| | | |
| | | <!-- Remove the topology created for the test suite --> |
| | | |
| | | <!-- Copy the server logs to the controller machine --> |
| | | <if expr="suiteSuffix != None"> |
| | | <paralleliterate var="server" in="_topologyServerList" indexvar="i"> |
| | | <sequence> |
| | | <script> |
| | | suffix = suiteSuffix + '_%s' % (i + 1) |
| | | serverHost = server.getHostname() |
| | | serverName = '%s:%s' % (serverHost, server.getPort()) |
| | | serverPath = '%s/%s' % (server.getDir(), OPENDSNAME) |
| | | </script> |
| | | |
| | | <message> |
| | | 'Copy %s/logs/errors from %s to %s/errors_%s on %s' % \ |
| | | (serverPath, serverName, logs.sut, suffix, STAXServiceMachine) |
| | | </message> |
| | | <call function="'copyFile'"> |
| | | { |
| | | 'location' : serverHost, |
| | | 'srcfile' : '%s/logs/errors' % serverPath, |
| | | 'destfile' : '%s/errors_%s' % (logs.sut, suffix), |
| | | 'remotehost' : STAXServiceMachine |
| | | } |
| | | </call> |
| | | <message> |
| | | 'Copy %s/logs/access from %s to %s/access_%s on %s' % \ |
| | | (serverPath, serverName,logs.sut, suffix, STAXServiceMachine) |
| | | </message> |
| | | <call function="'copyFile'"> |
| | | { |
| | | 'location' : serverHost, |
| | | 'srcfile' : '%s/logs/access' % serverPath, |
| | | 'destfile' : '%s/access_%s' % (logs.sut, suffix), |
| | | 'remotehost' : STAXServiceMachine |
| | | } |
| | | </call> |
| | | <message> |
| | | 'Copy %s/logs/replication from %s to %s/replication_%s on %s' % \ |
| | | (serverPath, serverName, logs.sut, suffix, STAXServiceMachine) |
| | | </message> |
| | | <call function="'copyFile'"> |
| | | { |
| | | 'location' : serverHost, |
| | | 'srcfile' : '%s/logs/replication' % serverPath, |
| | | 'destfile' : '%s/replication_%s' % (logs.sut, suffix), |
| | | 'remotehost' : STAXServiceMachine |
| | | } |
| | | </call> |
| | | </sequence> |
| | | </paralleliterate> |
| | | </if> |
| | | |
| | | <!-- Remove the topology created for the test suite --> |
| | | <message> |
| | | 'Remove DS topology created for the Synchronization Basic Test Suite' |
| | | </message> |
| | |
| | | file="'%s/testcases/replication/replication_setup.xml' |
| | | % (TESTS_DIR)"/> |
| | | <call function="'replication_setup'"> |
| | | { 'dataFile' : 'Example.ldif' } |
| | | { 'topologyFile' : '%s/3server_topology.txt' \ |
| | | % REPLICATION_CONFIG_DIR, |
| | | 'dataFile' : 'Example.ldif' |
| | | } |
| | | </call> |
| | | |
| | | <script> |
| | | server3 = _topologyServerList[2] |
| | | replicationServer3 = server3.getChangelogServer() |
| | | |
| | | # Remove 3rd server from replicated servers list until replication |
| | | # is enabled on the 3rd one |
| | | _topologyServerList.remove(server3) |
| | | consumerList.remove(server3) |
| | | </script> |
| | | |
| | | <!-- Remove 3rd server from replication topology (i.e. disable |
| | | replication) --> |
| | | <call function="'disableReplication'"> |
| | | { 'location' : clientHost, |
| | | 'dsPath' : clientPath, |
| | | 'dsInstanceHost' : server3.getHostname(), |
| | | 'dsInstanceAdminPort' : server3.getAdminPort(), |
| | | 'replicationDnList' : [synchroSuffix] |
| | | } |
| | | </call> |
| | | |
| | | |
| | | <!--- Test Case information |
| | | #@TestMarker Replication Re-Synchronization Tests |
| | | #@TestName Replication: Re-Synchronization: Off-line |
| | |
| | | #@TestSteps Call dsreplication pre-external-initialization |
| | | #@TestSteps Import data on server A |
| | | #@TestSteps Back-up server A |
| | | #@TestSteps Call dsreplication post-external-initialization |
| | | #@TestSteps Add entry on server A |
| | | #@TestSteps Restore back-up on other servers |
| | | #@TestSteps Call dsreplication post-external-initialization |
| | | #@TestPostamble |
| | | #@TestResult Success if trees synchronized |
| | | --> |
| | |
| | | 'dsInstancePort' : master.getPort(), |
| | | 'dsInstanceDn' : master.getRootDn(), |
| | | 'dsInstancePswd' : master.getRootPwd(), |
| | | 'taskID' : 'import task', |
| | | 'taskID' : 'import task - tc2', |
| | | 'ldifFile' : '%s/replication/Example.ldif' \ |
| | | % masterDataDir |
| | | } |
| | |
| | | 'dsInstancePort' : master.getPort(), |
| | | 'dsInstanceDn' : master.getRootDn(), |
| | | 'dsInstancePswd' : master.getRootPwd(), |
| | | 'taskID' : 'backup task', |
| | | 'taskID' : 'backup task - tc2', |
| | | 'backupDir' : '%s/replication/master_backup_online' \ |
| | | % masterDataDir |
| | | } |
| | | </call> |
| | | |
| | | <!-- Post-initialise the servers in the topology --> |
| | | <message> |
| | | '+++++ resynchronization on-line: end external server \ |
| | | initialization' |
| | | </message> |
| | | <call function="'postInitializeReplication'"> |
| | | { 'location' : clientHost, |
| | | 'dsPath' : clientPath, |
| | | 'dsInstanceHost' : masterHost, |
| | | 'dsInstanceAdminPort' : master.getAdminPort(), |
| | | 'replicationDnList' : [synchroSuffix], |
| | | 'adminUID' : adminUID, |
| | | 'adminPswd' : adminPswd |
| | | } |
| | | </call> |
| | | |
| | | <!-- Add entry to "master" server --> |
| | | <message> |
| | | '+++++ resynchronization on-line: add entry to %s:%s' \ |
| | |
| | | 'dsInstancePort' : consumer.getPort(), |
| | | 'dsInstanceDn' : consumer.getRootDn(), |
| | | 'dsInstancePswd' : consumer.getRootPwd(), |
| | | 'taskID' : 'restore task', |
| | | 'taskID' : 'restore task - tc2', |
| | | 'backupDir' : '%s/%s/replication/master_backup_online' \ |
| | | % (consumer.getDir(),remote.reldatadir) |
| | | } |
| | | </call> |
| | | </sequence> |
| | | </paralleliterate> |
| | | |
| | | <!-- Post-initialise the servers in the topology --> |
| | | <message> |
| | | '+++++ resynchronization on-line: end external server \ |
| | | initialization' |
| | | </message> |
| | | <call function="'postInitializeReplication'"> |
| | | { 'location' : clientHost, |
| | | 'dsPath' : clientPath, |
| | | 'dsInstanceHost' : masterHost, |
| | | 'dsInstanceAdminPort' : master.getAdminPort(), |
| | | 'replicationDnList' : [synchroSuffix], |
| | | 'adminUID' : adminUID, |
| | | 'adminPswd' : adminPswd |
| | | } |
| | | </call> |
| | | </paralleliterate> |
| | | |
| | | <!-- Verify the synchronization of the trees among the servers in |
| | | the topology --> |
| | |
| | | <call function="'testCase_Postamble'"/> |
| | | </sequence> |
| | | </testcase> |
| | | |
| | | |
| | | <!--- Test Case information |
| | | #@TestMarker Replication Re-Synchronization Tests |
| | | #@TestName Replication: Re-Synchronization: Add new server |
| | | #@TestID Add new server |
| | | #@TestPurpose Initialise newly added replicated server |
| | | using on-line backup/restore |
| | | #@TestPreamble |
| | | #@TestSteps Call dsreplication pre-external-initialization |
| | | #@TestSteps Import data on server A |
| | | #@TestSteps Back-up server A |
| | | #@TestSteps Initialise other servers from server A |
| | | #@TestSteps Add entry on server A |
| | | #@TestSteps Add server: enable replication |
| | | #@TestSteps Restore back-up on new server |
| | | #@TestPostamble |
| | | #@TestResult Success if trees synchronized |
| | | --> |
| | | <testcase name="getTestCaseName('Add new Server')"> |
| | | <sequence> |
| | | <call function="'testCase_Preamble'"/> |
| | | <message> |
| | | 'Replication: Re-Synchronization: Add new server. \ |
| | | Initialise newly added server using on-line backup/restore' |
| | | </message> |
| | | |
| | | <paralleliterate var="server" in="_topologyServerList"> |
| | | <sequence> |
| | | <!-- Search for entry add --> |
| | | <call function="'ldapSearchWithScript'"> |
| | | { 'location' : clientHost, |
| | | 'dsPath' : clientPath, |
| | | 'dsInstanceHost' : server.getHostname(), |
| | | 'dsInstancePort' : server.getPort(), |
| | | 'dsInstanceDn' : server.getRootDn(), |
| | | 'dsInstancePswd' : server.getRootPwd(), |
| | | 'dsBaseDN' : 'dc=replicationChanges', |
| | | 'dsFilter' : 'uid=*' |
| | | } |
| | | </call> |
| | | <script> |
| | | searchRC = STAXResult[0][0] |
| | | searchResult = STAXResult[0][1] |
| | | resultLength = len(searchResult) > 0 |
| | | </script> |
| | | <message> |
| | | '==> REPLICATION CHANGES %s:%s : \n%s\n' % \ |
| | | (server.getHostname(), server.getPort(), searchResult) |
| | | </message> |
| | | </sequence> |
| | | </paralleliterate> |
| | | |
| | | <!-- Pre-initialise the servers in the topology --> |
| | | <message> |
| | | '+++++ resynchronization add server: prepare servers for \ |
| | | external initialization' |
| | | </message> |
| | | <call function="'preInitializeReplication'"> |
| | | { 'location' : clientHost, |
| | | 'dsPath' : clientPath, |
| | | 'dsInstanceHost' : masterHost, |
| | | 'dsInstanceAdminPort' : master.getAdminPort(), |
| | | 'localOnly' : False, |
| | | 'replicationDnList' : [synchroSuffix], |
| | | 'adminUID' : adminUID, |
| | | 'adminPswd' : adminPswd |
| | | } |
| | | </call> |
| | | |
| | | <paralleliterate var="server" in="_topologyServerList"> |
| | | <sequence> |
| | | <!-- Search for entry add --> |
| | | <call function="'ldapSearchWithScript'"> |
| | | { 'location' : clientHost, |
| | | 'dsPath' : clientPath, |
| | | 'dsInstanceHost' : server.getHostname(), |
| | | 'dsInstancePort' : server.getPort(), |
| | | 'dsInstanceDn' : server.getRootDn(), |
| | | 'dsInstancePswd' : server.getRootPwd(), |
| | | 'dsBaseDN' : 'dc=replicationChanges', |
| | | 'dsFilter' : 'uid=*' |
| | | } |
| | | </call> |
| | | <script> |
| | | searchRC = STAXResult[0][0] |
| | | searchResult = STAXResult[0][1] |
| | | resultLength = len(searchResult) > 0 |
| | | </script> |
| | | <message> |
| | | '==> REPLICATION CHANGES %s:%s : \n%s\n' % \ |
| | | (server.getHostname(), server.getPort(), searchResult) |
| | | </message> |
| | | </sequence> |
| | | </paralleliterate> |
| | | |
| | | <!-- Import data into "master" server --> |
| | | <message> |
| | | '+++++ resynchronization add server: import data on %s:%s' \ |
| | | % (masterHost, master.getPort()) |
| | | </message> |
| | | <call function="'importLdifTask'"> |
| | | { 'location' : clientHost, |
| | | 'dsPath' : clientPath, |
| | | 'dsInstanceHost' : masterHost, |
| | | 'dsInstancePort' : master.getPort(), |
| | | 'dsInstanceDn' : master.getRootDn(), |
| | | 'dsInstancePswd' : master.getRootPwd(), |
| | | 'taskID' : 'import task - tc3', |
| | | 'ldifFile' : '%s/replication/Example.ldif' \ |
| | | % masterDataDir |
| | | } |
| | | </call> |
| | | |
| | | <!-- Check some data was imported into "master" server --> |
| | | <call function="'checkImport'"> |
| | | { 'location' : clientHost, |
| | | 'dsPath' : clientPath, |
| | | 'dsHost' : masterHost, |
| | | 'dsPort' : master.getPort(), |
| | | 'dsAdminPort' : master.getAdminPort(), |
| | | 'dsDn' : master.getRootDn(), |
| | | 'dsPswd' : master.getRootPwd(), |
| | | 'expectedEntries' : ['uid=scarter,ou=People,o=example', |
| | | 'uid=dmiller, ou=People, o=example', |
| | | 'uid=rhunt, ou=People, o=example'], |
| | | 'startDS' : 'no' |
| | | } |
| | | </call> |
| | | |
| | | <!-- Backup "master" server --> |
| | | <message> |
| | | '+++++ resynchronization add server: back-up server %s:%s' \ |
| | | % (masterHost, master.getPort()) |
| | | </message> |
| | | <call function="'backupTask'"> |
| | | { 'location' : clientHost, |
| | | 'dsPath' : clientPath, |
| | | 'dsInstanceHost' : masterHost, |
| | | 'dsInstancePort' : master.getPort(), |
| | | 'dsInstanceDn' : master.getRootDn(), |
| | | 'dsInstancePswd' : master.getRootPwd(), |
| | | 'taskID' : 'backup task - tc3', |
| | | 'backupDir' : '%s/replication/master_backup_online' \ |
| | | % masterDataDir |
| | | } |
| | | </call> |
| | | |
| | | <paralleliterate var="server" in="_topologyServerList"> |
| | | <sequence> |
| | | <!-- Search for entry add --> |
| | | <call function="'ldapSearchWithScript'"> |
| | | { 'location' : clientHost, |
| | | 'dsPath' : clientPath, |
| | | 'dsInstanceHost' : server.getHostname(), |
| | | 'dsInstancePort' : server.getPort(), |
| | | 'dsInstanceDn' : server.getRootDn(), |
| | | 'dsInstancePswd' : server.getRootPwd(), |
| | | 'dsBaseDN' : 'dc=replicationChanges', |
| | | 'dsFilter' : 'uid=*' |
| | | } |
| | | </call> |
| | | <script> |
| | | searchRC = STAXResult[0][0] |
| | | searchResult = STAXResult[0][1] |
| | | resultLength = len(searchResult) > 0 |
| | | </script> |
| | | <message> |
| | | '==> REPLICATION CHANGES %s:%s : \n%s\n' % \ |
| | | (server.getHostname(), server.getPort(), searchResult) |
| | | </message> |
| | | </sequence> |
| | | </paralleliterate> |
| | | |
| | | <message> |
| | | '+++++ resynchronization add server: Initialise topology from \ |
| | | %s:%s' % (masterHost, master.getPort()) |
| | | </message> |
| | | <!-- Initialise the servers in the topology --> |
| | | <call function="'initializeReplication'"> |
| | | { 'location' : clientHost, |
| | | 'dsPath' : clientPath, |
| | | 'sourceInstanceHost' : masterHost, |
| | | 'sourceInstanceAdminPort' : master.getAdminPort(), |
| | | 'replicationDnList' : [synchroSuffix] |
| | | } |
| | | </call> |
| | | |
| | | <paralleliterate var="server" in="_topologyServerList"> |
| | | <sequence> |
| | | <!-- Search for entry add --> |
| | | <call function="'ldapSearchWithScript'"> |
| | | { 'location' : clientHost, |
| | | 'dsPath' : clientPath, |
| | | 'dsInstanceHost' : server.getHostname(), |
| | | 'dsInstancePort' : server.getPort(), |
| | | 'dsInstanceDn' : server.getRootDn(), |
| | | 'dsInstancePswd' : server.getRootPwd(), |
| | | 'dsBaseDN' : 'dc=replicationChanges', |
| | | 'dsFilter' : 'uid=*' |
| | | } |
| | | </call> |
| | | <script> |
| | | searchRC = STAXResult[0][0] |
| | | searchResult = STAXResult[0][1] |
| | | resultLength = len(searchResult) > 0 |
| | | </script> |
| | | <message> |
| | | '==> REPLICATION CHANGES %s:%s : \n%s\n' % \ |
| | | (server.getHostname(), server.getPort(), searchResult) |
| | | </message> |
| | | </sequence> |
| | | </paralleliterate> |
| | | |
| | | <!-- Add entry to "master" server --> |
| | | <message> |
| | | '+++++ resynchronization add server: add entry to %s:%s' \ |
| | | % (masterHost, master.getPort()) |
| | | </message> |
| | | <call function="'addEntry'"> |
| | | { 'location' : clientHost, |
| | | 'dsPath' : clientPath, |
| | | 'dsInstanceHost' : masterHost, |
| | | 'dsInstancePort' : master.getPort(), |
| | | 'dsInstanceDn' : master.getRootDn(), |
| | | 'dsInstancePswd' : master.getRootPwd(), |
| | | 'entryToBeAdded' : '%s/replication/tfitter.ldif' \ |
| | | % clientDataDir |
| | | } |
| | | </call> |
| | | |
| | | <paralleliterate var="server" in="_topologyServerList"> |
| | | <sequence> |
| | | <!-- Search for entry add --> |
| | | <call function="'ldapSearchWithScript'"> |
| | | { 'location' : clientHost, |
| | | 'dsPath' : clientPath, |
| | | 'dsInstanceHost' : server.getHostname(), |
| | | 'dsInstancePort' : server.getPort(), |
| | | 'dsInstanceDn' : server.getRootDn(), |
| | | 'dsInstancePswd' : server.getRootPwd(), |
| | | 'dsBaseDN' : 'dc=replicationChanges', |
| | | 'dsFilter' : 'uid=*' |
| | | } |
| | | </call> |
| | | <script> |
| | | searchRC = STAXResult[0][0] |
| | | searchResult = STAXResult[0][1] |
| | | resultLength = len(searchResult) > 0 |
| | | </script> |
| | | <message> |
| | | '==> REPLICATION CHANGES %s:%s : \n%s\n' % \ |
| | | (server.getHostname(), server.getPort(), searchResult) |
| | | </message> |
| | | </sequence> |
| | | </paralleliterate> |
| | | |
| | | <!-- Add new server to topology --> |
| | | <message> |
| | | '+++++ resynchronization add server: Enable replication for \ |
| | | server:\nHost: %s\nLdap port: %s\nReplication port: %s\n\ |
| | | Replicated DN list: %s' \ |
| | | % (server3.getHostname(), server3.getPort(), |
| | | replicationServer3.getPort(), [synchroSuffix]) |
| | | </message> |
| | | <call function="'enableReplication'"> |
| | | { 'location' : clientHost, |
| | | 'dsPath' : clientPath, |
| | | 'dsInstanceHost' : server3.getHostname(), |
| | | 'dsInstanceAdminPort' : server3.getAdminPort(), |
| | | 'dsInstanceDn' : server3.getRootDn(), |
| | | 'dsInstancePswd' : server3.getRootPwd(), |
| | | 'dsReplicationPort' : replicationServer3.getPort(), |
| | | 'refInstanceHost' : masterHost, |
| | | 'refInstanceAdminPort' : master.getAdminPort(), |
| | | 'refInstanceDn' : master.getRootDn(), |
| | | 'refInstancePswd' : master.getRootPwd(), |
| | | 'refReplicationPort' : masterReplicationServer.getPort(), |
| | | 'replicationDnList' : [synchroSuffix] |
| | | } |
| | | </call> |
| | | |
| | | <script> |
| | | # Add 3rd server to replicated servers list now that replication |
| | | # has been enabled on the 3rd one |
| | | _topologyServerList = _topologyServerList + [server3] |
| | | consumerList = consumerList + [server3] |
| | | </script> |
| | | |
| | | <paralleliterate var="server" in="_topologyServerList"> |
| | | <sequence> |
| | | <!-- Search for entry add --> |
| | | <call function="'ldapSearchWithScript'"> |
| | | { 'location' : clientHost, |
| | | 'dsPath' : clientPath, |
| | | 'dsInstanceHost' : server.getHostname(), |
| | | 'dsInstancePort' : server.getPort(), |
| | | 'dsInstanceDn' : server.getRootDn(), |
| | | 'dsInstancePswd' : server.getRootPwd(), |
| | | 'dsBaseDN' : 'dc=replicationChanges', |
| | | 'dsFilter' : 'uid=*' |
| | | } |
| | | </call> |
| | | <script> |
| | | searchRC = STAXResult[0][0] |
| | | searchResult = STAXResult[0][1] |
| | | resultLength = len(searchResult) > 0 |
| | | </script> |
| | | <message> |
| | | '==> REPLICATION CHANGES %s:%s : \n%s\n' % \ |
| | | (server.getHostname(), server.getPort(), searchResult) |
| | | </message> |
| | | </sequence> |
| | | </paralleliterate> |
| | | |
| | | <!-- Copy backup to new server and restore it --> |
| | | <call function="'CopyFolderByExtension'"> |
| | | { 'location' : masterHost, |
| | | 'remotehost' : server3.getHostname(), |
| | | 'srcfolder' : '%s/replication/master_backup_online' \ |
| | | % masterDataDir, |
| | | 'destfolder' : '%s/%s/replication/master_backup_online' \ |
| | | % (server3.getDir(),remote.reldatadir), |
| | | 'extension' : '*' |
| | | } |
| | | </call> |
| | | |
| | | <message> |
| | | '+++++ resynchronization add server: restore back-up on %s:%s'\ |
| | | % (server3.getHostname(), server3.getPort()) |
| | | </message> |
| | | <call function="'restoreTask'"> |
| | | { 'location' : clientHost, |
| | | 'dsPath' : clientPath, |
| | | 'dsInstanceHost' : server3.getHostname(), |
| | | 'dsInstancePort' : server3.getPort(), |
| | | 'dsInstanceDn' : server3.getRootDn(), |
| | | 'dsInstancePswd' : server3.getRootPwd(), |
| | | 'taskID' : 'restore task - tc3', |
| | | 'backupDir' : '%s/%s/replication/master_backup_online' \ |
| | | % (server3.getDir(),remote.reldatadir) |
| | | } |
| | | </call> |
| | | |
| | | <paralleliterate var="server" in="_topologyServerList"> |
| | | <sequence> |
| | | <!-- Search for entry add --> |
| | | <call function="'ldapSearchWithScript'"> |
| | | { 'location' : clientHost, |
| | | 'dsPath' : clientPath, |
| | | 'dsInstanceHost' : server.getHostname(), |
| | | 'dsInstancePort' : server.getPort(), |
| | | 'dsInstanceDn' : server.getRootDn(), |
| | | 'dsInstancePswd' : server.getRootPwd(), |
| | | 'dsBaseDN' : 'dc=replicationChanges', |
| | | 'dsFilter' : 'uid=*' |
| | | } |
| | | </call> |
| | | <script> |
| | | searchRC = STAXResult[0][0] |
| | | searchResult = STAXResult[0][1] |
| | | resultLength = len(searchResult) > 0 |
| | | </script> |
| | | <message> |
| | | '==> REPLICATION CHANGES %s:%s : \n%s\n' % \ |
| | | (server.getHostname(), server.getPort(), searchResult) |
| | | </message> |
| | | </sequence> |
| | | </paralleliterate> |
| | | |
| | | <!-- Verify the synchronization of the trees among the servers in |
| | | the topology --> |
| | | <!-- If the trees don't match, we may have come across Issue 4052 |
| | | (Ghost adds in Replication Server) --> |
| | | <call function="'verifyTrees'"> |
| | | [ clientHost, clientPath, master, consumerList, synchroSuffix, |
| | | '4052' ] |
| | | </call> |
| | | |
| | | <call function="'testCase_Postamble'"/> |
| | | </sequence> |
| | | </testcase> |
| | | |
| | | <import machine="STAF_LOCAL_HOSTNAME" |
| | | file="'%s/testcases/replication/replication_cleanup.xml' |
| | | % (TESTS_DIR)"/> |
| | |
| | | } |
| | | </call> |
| | | |
| | | <!--- |
| | | <call function="'setKnownIssue'"> |
| | | { 'issueId' : '3773' } |
| | | </call> |
| | | --> |
| | | |
| | | <call function="'testCase_Postamble'"/> |
| | | </sequence> |
| | |
| | | eventmanager.archive=EventManagerV${eventmanager.version}.zip |
| | | http.version=301 |
| | | http.archive=HTTPV${http.version}.zip |
| | | tomcat.version=6.0.14 |
| | | tomcat.version=6.0.20 |
| | | tomcat.url=http://archive.apache.org/dist/tomcat/tomcat-6/v${tomcat.version}/bin |
| | | tomcat.archive=apache-tomcat-${tomcat.version}.zip |
| | | |
| | |
| | | } |
| | | </call> |
| | | <call function="'Sleep'"> |
| | | { 'sleepForMilliSeconds' : 3000 } |
| | | { 'sleepForMilliSeconds' : 10000 } |
| | | </call> |
| | | </sequence> |
| | | </function> |
| | |
| | | CurrentTestPath={} |
| | | DSInfoServersDict={} |
| | | True = 1 |
| | | False = 0 |
| | | False = 0 |
| | | # threshold set so that functions such as getFile may not cause staf |
| | | # process to run out of memory (value in bytes) |
| | | MAX_READABLE_SIZE = 104800 |
| | | |
| | | # this function return a well-formatted testcase name |
| | | def getTestCaseName(name): |
| | |
| | | <service>'fs'</service> |
| | | <request>'GET ENTRY %s %s' % (entry,attribute)</request> |
| | | </stafcmd> |
| | | |
| | | <script> |
| | | cmdRC=RC |
| | | cmdResult=STAFResult |
| | | </script> |
| | | <return>[cmdRC,cmdResult]</return> |
| | | </sequence> |
| | | |
| | | </function> |
| | |
| | | </envs> |
| | | <console use="'same'"/> |
| | | <stderr mode="'stdout'"/> |
| | | <returnstdout/> |
| | | <returnfile>outputLdif</returnfile> |
| | | <returnstdout/> |
| | | </process> |
| | | |
| | | <script> |
| | | STAXCode=RC |
| | | STAXReason=STAXResult |
| | | </script> |
| | | <script> |
| | | diffsInfo = STAXReason[1] |
| | | diffs = diffsInfo[1] |
| | | if (diffsInfo[0] == 0) and (diffs.startswith("# No differences were detected between the source and target LDIF files")) : |
| | | diffRC = 0 |
| | | else: |
| | | diffRC = 1 |
| | | </script> |
| | | <if expr="STAXCode == 0"> |
| | | <sequence> |
| | | <!-- Check the size of the diff file, and avoid reading its |
| | | content with getFile if the file is too big to prevent |
| | | the staf process from running out of memory --> |
| | | <call function="'GetEntry'"> |
| | | { |
| | | 'location' : location, |
| | | 'entry' : outputLdif, |
| | | 'attribute' : 'SIZE' |
| | | } |
| | | </call> |
| | | <script> |
| | | # GetEntry returns: STAXResult = [cmdRC, cmdResult] |
| | | if RC == 0: |
| | | diffsFileSize = int(STAXResult[1]['lowerSize']) |
| | | msg = 'File: %s Size (bytes): %s' % (outputLdif, diffsFileSize) |
| | | else: |
| | | diffsFileSize = MAX_READABLE_SIZE |
| | | msg = 'Could not retrieve the size of file %s' % outputLdif |
| | | </script> |
| | | <message log="1"> 'LdifDiffWithScript: %s' % msg </message> |
| | | <if expr="diffsFileSize < MAX_READABLE_SIZE"> |
| | | <sequence> |
| | | <call function="'getFile'"> |
| | | { 'location' : location, |
| | | 'filename' : outputLdif |
| | | } |
| | | </call> |
| | | <script> |
| | | # getFile returns: STAXResult = [cmdRC, cmdResult] |
| | | diffsFileContent = STAXResult[1] |
| | | |
| | | if diffsFileContent.startswith("# No differences were detected between the source and target LDIF files") : |
| | | diffRC = 0 |
| | | else: |
| | | diffRC = 1 |
| | | </script> |
| | | </sequence> |
| | | <else> |
| | | <script> |
| | | # diffs file to big to be read |
| | | diffsFileContent = 'File too big to be read.' |
| | | |
| | | # if the diff file is too big, it means that there ARE |
| | | # actually some diffs, so we may deduce diffRC = 1 |
| | | diffRC = 1 |
| | | </script> |
| | | </else> |
| | | </if> |
| | | </sequence> |
| | | </if> |
| | | |
| | | <if expr="diffRC == 0"> |
| | | <message log="1"> |
| | | 'NO DIFFERENCES were detected between the source and the target \ |
| | | LDIF files.' |
| | | </message> |
| | | <else> |
| | | <message log="1" level="'Error'"> |
| | | 'Source and target LDIF files are DIFFERENT: \n\n%s' % \ |
| | | diffsFileContent |
| | | </message> |
| | | </else> |
| | | </if> |
| | | |
| | | <return> diffRC </return> |
| | | </sequence> |
| | | </function> |
| | |
| | | 'Verify tree %s taking %s as reference.' \ |
| | | % (treeSuffix, referenceServerPath) |
| | | </message> |
| | | <!-- Retrieve the tree from the reference server --> |
| | | <call function="'ldapSearchWithScript'"> |
| | | { 'location' : location, |
| | | 'dsPath' : dsPath, |
| | | 'dsInstanceHost' : referenceServer.getHostname(), |
| | | 'dsInstancePort' : referenceServer.getPort(), |
| | | 'dsInstanceDn' : referenceServer.getRootDn(), |
| | | 'dsInstancePswd' : referenceServer.getRootPwd(), |
| | | 'dsBaseDN' : treeSuffix, |
| | | 'dsFilter' : 'objectclass=*', |
| | | 'outputFile' : referenceTree |
| | | <!-- Retrieve the tree from the reference server --> |
| | | <call function="'exportLdif'"> |
| | | { 'location' : location, |
| | | 'dsPath' : dsPath, |
| | | 'dsInstanceHost' : referenceServer.getHostname(), |
| | | 'dsInstanceAdminPort' : referenceServer.getAdminPort(), |
| | | 'dsInstanceDn' : referenceServer.getRootDn(), |
| | | 'dsInstancePswd' : referenceServer.getRootPwd(), |
| | | 'ldifFile' : '%s/../%s' % (dsPath, referenceTree) |
| | | } |
| | | </call> |
| | | |
| | | <if expr="RC != 0"> |
| | | <!-- If the reference tree could not be retrieved, return an error --> |
| | | <return> [1, None] </return> |
| | |
| | | <iterate var="server" in="serverList"> |
| | | <sequence> |
| | | <!-- Retrieve the same tree for every other server in the list --> |
| | | <call function="'ldapSearchWithScript'"> |
| | | { 'location' : location, |
| | | 'dsPath' : dsPath, |
| | | 'dsInstanceHost' : server.getHostname(), |
| | | 'dsInstancePort' : server.getPort(), |
| | | 'dsInstanceDn' : server.getRootDn(), |
| | | 'dsInstancePswd' : server.getRootPwd(), |
| | | 'dsBaseDN' : treeSuffix, |
| | | 'dsFilter' : 'objectclass=*', |
| | | 'outputFile' : sampleTree, |
| | | 'logStderr' : False |
| | | <if expr="server.getHostname() == location"> |
| | | <script> |
| | | filePath = dsPath |
| | | isSameLocation = True |
| | | </script> |
| | | <else> |
| | | <script> |
| | | filePath = '%s/%s' % (server.getDir(), OPENDSNAME) |
| | | isSameLocation = False |
| | | </script> |
| | | </else> |
| | | </if> |
| | | <call function="'exportLdif'"> |
| | | { 'location' : location, |
| | | 'dsPath' : dsPath, |
| | | 'dsInstanceHost' : server.getHostname(), |
| | | 'dsInstanceAdminPort' : server.getAdminPort(), |
| | | 'dsInstanceDn' : server.getRootDn(), |
| | | 'dsInstancePswd' : server.getRootPwd(), |
| | | 'ldifFile' : '%s/../%s' % (filePath, sampleTree) |
| | | } |
| | | </call> |
| | | |
| | | <if expr="RC == 0"> |
| | | <sequence> |
| | | |
| | | <if expr="not isSameLocation"> |
| | | <!-- Copy sample tree file to reference server --> |
| | | <call function="'copyFile'"> |
| | | { 'location' : server.getHostname(), |
| | | 'remotehost' : location, |
| | | 'srcfile' : '%s/../%s' % (filePath, sampleTree), |
| | | 'destfile' : '%s/../%s' % (dsPath, sampleTree) |
| | | } |
| | | </call> |
| | | </if> |
| | | |
| | | <!-- Compare this tree to the reference one --> |
| | | <call function="'LdifDiffWithScript'"> |
| | | { 'location' : location, |
| | |
| | | 'outputLdif' : '%s/../%s' % (dsPath, treeDiffs) |
| | | } |
| | | </call> |
| | | <script> |
| | | if STAXResult != 0 : |
| | | failedServers.append('%s:%s' % \ |
| | | (server.getHostname(), server.getPort())) |
| | | </script> |
| | | <if expr="STAXResult != 0"> |
| | | <sequence> |
| | | <script> |
| | | failedServers.append('%s:%s' % \ |
| | | (server.getHostname(), server.getPort())) |
| | | </script> |
| | | <message log="1" level="'Error'"> |
| | | 'Tree is DIFFERENT for %s:%s compared to %s:%s' % \ |
| | | (server.getHostname(), server.getPort(), |
| | | referenceServer.getHostname(), referenceServer.getPort()) |
| | | </message> |
| | | </sequence> |
| | | </if> |
| | | </sequence> |
| | | <else> |
| | | <script> |
| | |
| | | </return> |
| | | </sequence> |
| | | </function> |
| | | |
| | | |
| | | |
| | | <function name="verifyReplication"> |
| | | <function-prolog> |
| | | This function verifies that replication is working, that is, the updates |
| | | done on any of the servers in the topology are being pushed to the other |
| | | servers. |
| | | </function-prolog> |
| | | <function-list-args> |
| | | <function-arg-def name="serverList" type="required"> |
| | | <function-arg-description> |
| | | List of the servers to verify against the referenceServer. |
| | | </function-arg-description> |
| | | <function-arg-property name="type" value="Server-list"/> |
| | | </function-arg-def> |
| | | |
| | | <function-arg-def name="replicatedSuffix" type="required"> |
| | | <function-arg-description> |
| | | Suffix of the tree to verify. |
| | | </function-arg-description> |
| | | <function-arg-property name="type" value="DN"/> |
| | | </function-arg-def> |
| | | |
| | | <function-arg-def name="knownIssue" type="optional" default="None"> |
| | | <function-arg-description> |
| | | Known issue. Corresponds to an issue number. |
| | | </function-arg-description> |
| | | <function-arg-property name="type" value="string" /> |
| | | </function-arg-def> |
| | | |
| | | </function-list-args> |
| | | <sequence> |
| | | |
| | | <message> |
| | | 'verifyReplication: Verify updates on the suffix %s are being \ |
| | | replicated.' % replicatedSuffix |
| | | </message> |
| | | |
| | | <iterate var="server" in="serverList" indexvar="i"> |
| | | <sequence> |
| | | |
| | | <script> |
| | | serverHost = server.getHostname() |
| | | serverPath = '%s/%s' % (server.getDir(), OPENDSNAME) |
| | | otherServersList = serverList[:i] + serverList[i+1:] |
| | | entryDn = 'uid=testentry-%s, %s' % (i, replicatedSuffix) |
| | | |
| | | myRC = 0 |
| | | myKnownIssue = knownIssue |
| | | failedServers = STAXGlobal( [] ) |
| | | failingServerList = '' |
| | | </script> |
| | | |
| | | <!-- Add entry to one of the other servers --> |
| | | <script> |
| | | listAttr = [] |
| | | listAttr.append('objectclass:top') |
| | | listAttr.append('objectclass:organizationalperson') |
| | | listAttr.append('objectclass:inetorgperson') |
| | | listAttr.append('objectclass:person') |
| | | listAttr.append('givenname:Test-%s' % i) |
| | | listAttr.append('sn:Entry-%s' % i) |
| | | listAttr.append('cn:Test Entry - %s' % i) |
| | | </script> |
| | | |
| | | <message> |
| | | 'verifyReplication: Add entry %s to server %s:%s' % \ |
| | | (entryDn, serverHost, server.getPort()) |
| | | </message> |
| | | |
| | | <call function="'addAnEntry'"> |
| | | { 'location' : serverHost, |
| | | 'dsPath' : serverPath, |
| | | 'dsInstanceHost' : serverHost, |
| | | 'dsInstancePort' : server.getPort(), |
| | | 'dsInstanceDn' : server.getRootDn(), |
| | | 'dsInstancePswd' : server.getRootPwd(), |
| | | 'DNToAdd' : entryDn, |
| | | 'listAttributes' : listAttr |
| | | } |
| | | </call> |
| | | |
| | | <call function="'Sleep'"> |
| | | { 'sleepForMilliSeconds' : 2000 } |
| | | </call> |
| | | |
| | | <!-- Check the update has been propagated --> |
| | | <paralleliterate var="otherServer" in="otherServersList"> |
| | | <sequence> |
| | | <call function="'ldapSearchWithScript'"> |
| | | { 'location' : otherServer.getHostname(), |
| | | 'dsPath' : '%s/%s' \ |
| | | % (otherServer.getDir(), OPENDSNAME), |
| | | 'dsInstanceHost' : otherServer.getHostname(), |
| | | 'dsInstancePort' : otherServer.getPort(), |
| | | 'dsInstanceDn' : otherServer.getRootDn(), |
| | | 'dsInstancePswd' : otherServer.getRootPwd(), |
| | | 'dsBaseDN' : entryDn, |
| | | 'dsFilter' : 'objectclass=*', |
| | | 'dsAttributes' : 'employeeNumber', |
| | | 'logStderr' : False |
| | | } |
| | | </call> |
| | | <script> |
| | | searchRC = STAXResult[0][0] |
| | | searchResult = STAXResult[0][1] |
| | | resultLength = len(searchResult) > 0 |
| | | </script> |
| | | <if expr="resultLength != 0"> |
| | | <sequence> |
| | | <message> |
| | | '+++++++++++ LDAPSEARCH RESULT for %s:%s ++++++++\n%s' \ |
| | | % (otherServer.getHostname(), otherServer.getPort(), |
| | | searchResult) |
| | | </message> |
| | | </sequence> |
| | | <else> |
| | | <sequence> |
| | | <message> |
| | | 'verifyReplication: Entry %s NOT found in server %s:%s' % \ |
| | | (entryDn, otherServer.getHostname(), otherServer.getPort()) |
| | | </message> |
| | | <script> |
| | | failedServers.append('%s:%s' % \ |
| | | (otherServer.getHostname(), otherServer.getPort())) |
| | | </script> |
| | | </sequence> |
| | | </else> |
| | | </if> |
| | | </sequence> |
| | | </paralleliterate> |
| | | |
| | | <if expr="len(failedServers) > 0"> |
| | | <!-- If at least one server failed to receive the update return an |
| | | ! error, along with the list of the servers that failed to do so |
| | | --> |
| | | <script> |
| | | myRC = 1 |
| | | comma = ',' |
| | | failingServerList = \ |
| | | 'List of non-synchronized servers (replication verify FAILED \ |
| | | for entry %s): %s ' % (entryDn, comma.join(failedServers)) |
| | | </script> |
| | | <else> |
| | | <message> |
| | | 'All servers synchronized (replication verify SUCCEEDED for \ |
| | | entry %s)' % entryDn |
| | | </message> |
| | | </else> |
| | | </if> |
| | | <call function="'checktestRC'"> |
| | | { 'returncode' : myRC, |
| | | 'result' : failingServerList, |
| | | 'expected' : 0, |
| | | 'issue' : myKnownIssue |
| | | } |
| | | </call> |
| | | |
| | | </sequence> |
| | | </iterate> |
| | | |
| | | </sequence> |
| | | </function> |
| | | |
| | | |
| | | </stax> |
| | | |
| | |
| | | </sequence> |
| | | |
| | | </function> |
| | | |
| | | |
| | | |
| | | <!-- Get replication status using dsreplication, and check for missing changes |
| | | or inconsistencies in the number of entries across the topology --> |
| | | <function name="getReplicationStatus"> |
| | | <function-prolog> |
| | | This function gets the replication status of a topology using |
| | | dsreplication. |
| | | </function-prolog> |
| | | <function-map-args> |
| | | <function-arg-def name="location" |
| | | type="optional" |
| | | default="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_BIN,OPENDSNAME)"> |
| | | <function-arg-description> |
| | | Pathname to installation root |
| | | </function-arg-description> |
| | | <function-arg-property name="type" value="filepath" /> |
| | | </function-arg-def> |
| | | |
| | | <function-arg-def name="dsInstanceHost" |
| | | type="optional" |
| | | default="None"> |
| | | <function-arg-description> |
| | | Directory server hostname or IP address |
| | | </function-arg-description> |
| | | <function-arg-property name="type" value="hostname" /> |
| | | </function-arg-def> |
| | | |
| | | <function-arg-def name="dsInstanceAdminPort" |
| | | type="optional" |
| | | default="None"> |
| | | <function-arg-description> |
| | | Directory server admin port number |
| | | </function-arg-description> |
| | | <function-arg-property name="type" value="Port number" /> |
| | | </function-arg-def> |
| | | |
| | | |
| | | |
| | | <function-arg-def name="replicationDnList" type="required"> |
| | | <function-arg-description> |
| | | DN of the replicated suffix |
| | | </function-arg-description> |
| | | <function-arg-property name="type" value="DN list" /> |
| | | </function-arg-def> |
| | | |
| | | <function-arg-def name="adminUID" |
| | | type="optional" |
| | | default="AdminUID"> |
| | | <function-arg-description> |
| | | Global Administrator UID |
| | | </function-arg-description> |
| | | <function-arg-property name="type" value="UID" /> |
| | | </function-arg-def> |
| | | |
| | | <function-arg-def name="adminPswd" |
| | | type="optional" |
| | | default="AdminPswd"> |
| | | <function-arg-description> |
| | | Global Administrator password |
| | | </function-arg-description> |
| | | <function-arg-property name="type" value="string" /> |
| | | </function-arg-def> |
| | | |
| | | <function-arg-def name="expectedRC" type="optional" default="0"> |
| | | <function-arg-description> |
| | | Expected return code value. Default value is 0 |
| | | </function-arg-description> |
| | | <function-arg-property name="type" value="string" /> |
| | | </function-arg-def> |
| | | </function-map-args> |
| | | <sequence> |
| | | <message> |
| | | 'Getting replication status from server %s:%s' \ |
| | | % (dsInstanceHost,dsInstanceAdminPort) |
| | | </message> |
| | | |
| | | <!-- Local variables --> |
| | | <script> |
| | | STAFCmdParams='' |
| | | STAFCmd='' |
| | | |
| | | if dsPath: |
| | | dsBinPath='%s/%s' % (dsPath,fileFolder) |
| | | STAFCmd='%s/%s%s' % (dsBinPath,DSREPLICATION,fileExt) |
| | | |
| | | STAFCmdParamsList=[] |
| | | |
| | | STAFCmdParamsList.append('status') |
| | | STAFCmdParamsList.append('-n') |
| | | STAFCmdParamsList.append('-X') |
| | | # option for getting status in script-friendly format |
| | | STAFCmdParamsList.append('-s') |
| | | |
| | | if dsInstanceHost: |
| | | STAFCmdParamsList.append('-h %s' % dsInstanceHost) |
| | | |
| | | if dsInstanceAdminPort: |
| | | STAFCmdParamsList.append('-p %s' % dsInstanceAdminPort) |
| | | |
| | | if replicationDnList: |
| | | for dn in replicationDnList: |
| | | STAFCmdParamsList.append('-b "%s"' % dn) |
| | | |
| | | if adminUID: |
| | | STAFCmdParamsList.append('-I "%s"' % adminUID) |
| | | |
| | | if adminPswd: |
| | | STAFCmdParamsList.append('-w "%s"' % adminPswd) |
| | | |
| | | STAFCmdParams=' '.join(STAFCmdParamsList) |
| | | </script> |
| | | <call function="'runCommand'"> |
| | | { 'name' : 'Get Replication Status', |
| | | 'location' : location, |
| | | 'command' : STAFCmd, |
| | | 'arguments' : STAFCmdParams |
| | | } |
| | | </call> |
| | | |
| | | <script> |
| | | commandRC = RC |
| | | commandResult = STAXResult |
| | | </script> |
| | | <call function="'checktestRC'"> |
| | | { 'returncode' : commandRC, |
| | | 'result' : commandResult, |
| | | 'expected' : expectedRC |
| | | } |
| | | </call> |
| | | |
| | | <script> |
| | | replStatusRC = commandResult[0][0] |
| | | replStatusResult = commandResult[0][1] |
| | | resultLength = len(replStatusResult) > 0 |
| | | </script> |
| | | |
| | | <if expr="(replStatusRC == 0) and (resultLength != 0)"> |
| | | <sequence> |
| | | <message> |
| | | 'getReplicationStatus: Replication status retrieved from server \ |
| | | %s:%s : \n%s ' % \ |
| | | (dsInstanceHost, dsInstanceAdminPort, replStatusResult) |
| | | </message> |
| | | <script> |
| | | serverList = [] |
| | | entriesList = [] |
| | | missingChangesList = [] |
| | | ageList = [] |
| | | |
| | | for line in replStatusResult.splitlines(): |
| | | if line.startswith('Server:'): |
| | | server = line[line.find('Server:') + 7:].strip() |
| | | serverList.append(server) |
| | | elif line.startswith('Entries:'): |
| | | entries = line[line.find('Entries:') + 8:].strip() |
| | | entriesList.append(entries) |
| | | elif line.startswith('Missing Changes:'): |
| | | missingChanges = line[line.find('Missing') + 16:].strip() |
| | | missingChangesList.append(missingChanges) |
| | | elif line.startswith('Age of oldest missing change:'): |
| | | age = line[line.find('Age of') + 29:].strip() |
| | | ageList.append(age) |
| | | |
| | | refNbOfEntries = entriesList[0] |
| | | </script> |
| | | |
| | | <iterate var="server" in="serverList" indexvar="i"> |
| | | <sequence> |
| | | <script> |
| | | entries = entriesList[i] |
| | | missingChanges = missingChangesList[i] |
| | | age = ageList[i] |
| | | </script> |
| | | <if expr="(missingChanges != '0') or (age != 'N/A')"> |
| | | <sequence> |
| | | <message log="1" level="'Error'"> |
| | | 'getReplicationStatus: Server %s is missing %s changes. \ |
| | | Entries: %s - Age of the oldest missing change: %s ' % \ |
| | | (server, missingChanges, entries, age) |
| | | </message> |
| | | <tcstatus result="'fail'"/> |
| | | </sequence> |
| | | </if> |
| | | <if expr="entries != refNbOfEntries"> |
| | | <sequence> |
| | | <message log="1" level="'Error'"> |
| | | 'getReplicationStatus: Different number of entries.\n\ |
| | | Server %s : %s entries\n\ |
| | | Reference server %s : %s entries\n' % \ |
| | | (server, entries, serverList[0], refNbOfEntries) |
| | | </message> |
| | | <tcstatus result="'fail'"/> |
| | | </sequence> |
| | | </if> |
| | | </sequence> |
| | | </iterate> |
| | | |
| | | </sequence> |
| | | </if> |
| | | |
| | | <return> |
| | | commandResult |
| | | </return> |
| | | </sequence> |
| | | </function> |
| | | |
| | | </stax> |
| | |
| | | <if expr='re.search(searchre, returnString) != None'> |
| | | <sequence> |
| | | <message log="1"> |
| | | 'SUCCESS : Found substring, %s, in the return string' \ |
| | | 'Found substring, %s, in the return string' \ |
| | | % (expectedString) |
| | | </message> |
| | | <script> |
| | |
| | | </sequence> |
| | | <else> |
| | | <sequence> |
| | | <message log="1" level="'Error'"> |
| | | 'ERROR : Did not find substring, %s, in the return string, %s' \ |
| | | <message log="1"> |
| | | 'Did not find substring, %s, in the return string, %s' \ |
| | | % (expectedString, returnString) |
| | | </message> |
| | | <script> |
| | |
| | | <!-- Manage expectedRC and knownIssue --> |
| | | <if expr="expectedRC != 'noCheck'"> |
| | | <if expr="myRC == expectedRC"> |
| | | <tcstatus result="'pass'"/> |
| | | <sequence> |
| | | <message log="1"> |
| | | 'SUCCESS: searchString successful' |
| | | </message> |
| | | <tcstatus result="'pass'"/> |
| | | </sequence> |
| | | <else> |
| | | <if expr="knownIssue == None"> |
| | | <tcstatus result="'fail'"/> |
| | | <else> |
| | | <call function="'setKnownIssue'"> |
| | | { 'issueId' : knownIssue } |
| | | </call> |
| | | </else> |
| | | </if> |
| | | <sequence> |
| | | <message log="1" level="'Error'"> |
| | | 'ERROR: searchString fail' |
| | | </message> |
| | | <if expr="knownIssue == None"> |
| | | <tcstatus result="'fail'"/> |
| | | <else> |
| | | <call function="'setKnownIssue'"> |
| | | { 'issueId' : knownIssue } |
| | | </call> |
| | | </else> |
| | | </if> |
| | | </sequence> |
| | | </else> |
| | | </if> |
| | | </if> |
| | |
| | | RootDn: cn=directory manager |
| | | RootPwd: secret12 |
| | | BaseDn: o=example |
| | | Changelogport: 11111 |
| | | Changelogport: 11112 |
| | | SynchronizedSuffix: o=example |
| | | ChangelogServer: ${remote.hostname}:11111 |
| | | ChangelogServer: ${remote.hostname}:11112 |
| | | ChangelogServer: ${remote.hostname}:22222 |
| | | ChangelogServer: ${remote.hostname}:33333 |
| | | |
| | |
| | | BaseDn: o=example |
| | | Changelogport: 22222 |
| | | SynchronizedSuffix: o=example |
| | | ChangelogServer: ${remote.hostname}:11111 |
| | | ChangelogServer: ${remote.hostname}:11112 |
| | | ChangelogServer: ${remote.hostname}:22222 |
| | | ChangelogServer: ${remote.hostname}:33333 |
| | | |
| | |
| | | BaseDn: o=example |
| | | Changelogport: 33333 |
| | | SynchronizedSuffix: o=example |
| | | ChangelogServer: ${remote.hostname}:11111 |
| | | ChangelogServer: ${remote.hostname}:11112 |
| | | ChangelogServer: ${remote.hostname}:22222 |
| | | ChangelogServer: ${remote.hostname}:33333 |
| | |
| | | RootDn: cn=directory manager |
| | | RootPwd: secret12 |
| | | BaseDn: o=example |
| | | Changelogport: 11111 |
| | | Changelogport: 11112 |
| | | SynchronizedSuffix: o=example |
| | | ChangelogServer: ${remote.hostname}:11111 |
| | | ChangelogServer: ${remote.hostname}:11112 |
| | | ChangelogServer: ${remote.hostname}:22222 |
| | | |
| | | Hostname: ${remote.hostname} |
| | |
| | | BaseDn: o=example |
| | | Changelogport: 22222 |
| | | SynchronizedSuffix: o=example |
| | | ChangelogServer: ${remote.hostname}:11111 |
| | | ChangelogServer: ${remote.hostname}:11112 |
| | | ChangelogServer: ${remote.hostname}:22222 |
| | |
| | | <xsl:param name="tests-type"/> |
| | | |
| | | <!--- Test Suites Report Header Variables --> |
| | | <xsl:variable name="ft" select="qa/$tests-type"/> |
| | | <xsl:variable name="id" select="identification"/> |
| | | <xsl:variable name="sut" select="$id/sut"/> |
| | | <xsl:variable name="mailto" select="normalize-space($id/mailto)"/> |
| | |
| | | testList = [] |
| | | testList.append('import_ldif_bin_attr') |
| | | testList.append('import_ldif_bin_attr_1m') |
| | | testList.append('import_ldif_bin_attr_5m') |
| | | #testList.append('import_ldif_bin_attr_3m') |
| | | #testList.append('import_ldif_large_import_buffer') |
| | | #testList.append('import_ldif_many_thrds') |
| | | #testList.append('import_ldif_low_index_entry_limit') |
| | |
| | | 'noOfMilliSeconds' : 5000 |
| | | } |
| | | </call> |
| | | |
| | | |
| | | <call function="'testCase_Postamble'"/> |
| | | |
| | | </sequence> |
| | |
| | | |
| | | <call function="'checkImport'"> |
| | | { |
| | | 'expectedEntries' : ['uid=user.100000,ou=People,dc=com' , |
| | | 'uid=user.110000,ou=People,dc=com' , |
| | | 'uid=user.120000,ou=People,dc=com' , |
| | | 'uid=user.130000,ou=People,dc=com' , |
| | | 'uid=user.140000,ou=People,dc=com' , |
| | | 'uid=user.150000,ou=People,dc=com' , |
| | | 'uid=user.160000,ou=People,dc=com' , |
| | | 'uid=user.170000,ou=People,dc=com' , |
| | | 'uid=user.180000,ou=People,dc=com' , |
| | | 'uid=user.190000,ou=People,dc=com' , |
| | | 'uid=user.199999,ou=People,dc=com'] , |
| | | 'expectedEntries' : ['uid=user.1,ou=People,dc=com' , |
| | | 'uid=user.10000,ou=People,dc=com' , |
| | | 'uid=user.20000,ou=People,dc=com' , |
| | | 'uid=user.30000,ou=People,dc=com' , |
| | | 'uid=user.40000,ou=People,dc=com' , |
| | | 'uid=user.50000,ou=People,dc=com' , |
| | | 'uid=user.60000,ou=People,dc=com' , |
| | | 'uid=user.70000,ou=People,dc=com' , |
| | | 'uid=user.80000,ou=People,dc=com' , |
| | | 'uid=user.90000,ou=People,dc=com' , |
| | | 'uid=user.99999,ou=People,dc=com'] , |
| | | 'startDS' : 'no' |
| | | } |
| | | </call> |
| | |
| | | <!--<call function="'setKnownIssue'"> |
| | | { 'issueId' : '2535' } |
| | | </call>--> |
| | | |
| | | |
| | | <message> |
| | | 'ldclt_compare: Delete ldif and template files' |
| | | </message> |
| | | |
| | | <call function="'deleteFile'"> |
| | | { |
| | | 'location' : STAF_REMOTE_HOSTNAME, |
| | | 'filename' : ldifFile |
| | | } |
| | | </call> |
| | | |
| | | <call function="'deleteFile'"> |
| | | { |
| | | 'location' : STAF_REMOTE_HOSTNAME, |
| | | 'filename' : ldifTemplate |
| | | } |
| | | </call> |
| | | |
| | | <call function="'testCase_Postamble'"/> |
| | | |
| | | </sequence> |
| | | </testcase> |
| | | |
| | | <testcase name="getTestCaseName('Postamble')"> |
| | | |
| | | <sequence> |
| | | |
| | | <call function="'testCase_Preamble'"/> |
| | | |
| | | <message> |
| | | 'ldclt_compare: Delete ldif and template files' |
| | | </message> |
| | | |
| | | <call function="'deleteFile'"> |
| | | { |
| | | 'location' : STAF_REMOTE_HOSTNAME, |
| | | 'filename' : ldifFile |
| | | } |
| | | </call> |
| | | |
| | | <call function="'deleteFile'"> |
| | | { |
| | | 'location' : STAF_REMOTE_HOSTNAME, |
| | | 'filename' : ldifTemplate |
| | | } |
| | | </call> |
| | | |
| | | <call function="'testCase_Postamble'"/> |
| | | |
| | | </sequence> |
| | | |
| | | </testcase> |
| | | |
| | | <import machine="STAF_LOCAL_HOSTNAME" |
| | | file="'%s/testcases/import_ldif/import_ldif_cleanup.xml' % (TESTS_DIR)"/> |
| | | <call function="'import_ldif_cleanup'" /> |
| | | <call function="'import_ldif_cleanup'"> |
| | | { 'suiteSuffix' : 'import' } |
| | | </call> |
| | | |
| | | <call function="'testSuite_Postamble'"/> |
| | | |
| | |
| | | 'noOfMilliSeconds' : 5000 |
| | | } |
| | | </call> |
| | | |
| | | |
| | | <call function="'testCase_Postamble'"/> |
| | | |
| | | </sequence> |
| | |
| | | <!--<call function="'setKnownIssue'"> |
| | | { 'issueId' : '2535' } |
| | | </call>--> |
| | | |
| | | |
| | | <message> |
| | | 'ldclt_compare: Delete ldif and template files' |
| | | </message> |
| | | |
| | | <call function="'deleteFile'"> |
| | | { |
| | | 'location' : STAF_REMOTE_HOSTNAME, |
| | | 'filename' : ldifFile |
| | | } |
| | | </call> |
| | | |
| | | <call function="'deleteFile'"> |
| | | { |
| | | 'location' : STAF_REMOTE_HOSTNAME, |
| | | 'filename' : ldifTemplate |
| | | } |
| | | </call> |
| | | |
| | | <call function="'testCase_Postamble'"/> |
| | | |
| | | </sequence> |
| | | </testcase> |
| | | |
| | | <testcase name="getTestCaseName('Postamble')"> |
| | | |
| | | <sequence> |
| | | |
| | | <call function="'testCase_Preamble'"/> |
| | | |
| | | <message> |
| | | 'ldclt_compare: Delete ldif and template files' |
| | | </message> |
| | | |
| | | <call function="'deleteFile'"> |
| | | { |
| | | 'location' : STAF_REMOTE_HOSTNAME, |
| | | 'filename' : ldifFile |
| | | } |
| | | </call> |
| | | |
| | | <call function="'deleteFile'"> |
| | | { |
| | | 'location' : STAF_REMOTE_HOSTNAME, |
| | | 'filename' : ldifTemplate |
| | | } |
| | | </call> |
| | | |
| | | <call function="'testCase_Postamble'"/> |
| | | |
| | | </sequence> |
| | | |
| | | </testcase> |
| | | |
| | | <import machine="STAF_LOCAL_HOSTNAME" |
| | | file="'%s/testcases/import_ldif/import_ldif_cleanup.xml' % (TESTS_DIR)"/> |
| | | <call function="'import_ldif_cleanup'" /> |
| | | |
| | | <call function="'import_ldif_cleanup'"> |
| | | { 'suiteSuffix' : 'import_1m' } |
| | | </call> |
| | | |
| | | <call function="'testSuite_Postamble'"/> |
| | | |
| | | </sequence> |
| | |
| | | ! --> |
| | | <stax> |
| | | |
| | | <defaultcall function="import_ldif_bin_attr_5m"/> |
| | | <defaultcall function="import_ldif_bin_attr_3m"/> |
| | | |
| | | <function name="import_ldif_bin_attr_5m"> |
| | | <function name="import_ldif_bin_attr_3m"> |
| | | |
| | | <sequence> |
| | | |
| | | <block name="'bin-attr_5m'"> |
| | | <block name="'bin-attr_3m'"> |
| | | |
| | | <sequence> |
| | | |
| | |
| | | 'noOfMilliSeconds' : 5000 |
| | | } |
| | | </call> |
| | | |
| | | |
| | | <call function="'testCase_Postamble'"/> |
| | | |
| | | </sequence> |
| | |
| | | <!--<call function="'setKnownIssue'"> |
| | | { 'issueId' : '2535' } |
| | | </call>--> |
| | | |
| | | |
| | | <message> |
| | | 'ldclt_compare: Delete ldif and template files' |
| | | </message> |
| | | |
| | | <call function="'deleteFile'"> |
| | | { |
| | | 'location' : STAF_REMOTE_HOSTNAME, |
| | | 'filename' : ldifFile |
| | | } |
| | | </call> |
| | | |
| | | <call function="'deleteFile'"> |
| | | { |
| | | 'location' : STAF_REMOTE_HOSTNAME, |
| | | 'filename' : ldifTemplate |
| | | } |
| | | </call> |
| | | |
| | | <call function="'testCase_Postamble'"/> |
| | | |
| | | </sequence> |
| | | </testcase> |
| | | |
| | | <testcase name="getTestCaseName('Postamble')"> |
| | | |
| | | <sequence> |
| | | |
| | | <call function="'testCase_Preamble'"/> |
| | | |
| | | <message> |
| | | 'ldclt_compare: Delete ldif and template files' |
| | | </message> |
| | | |
| | | <call function="'deleteFile'"> |
| | | { |
| | | 'location' : STAF_REMOTE_HOSTNAME, |
| | | 'filename' : ldifFile |
| | | } |
| | | </call> |
| | | |
| | | <call function="'deleteFile'"> |
| | | { |
| | | 'location' : STAF_REMOTE_HOSTNAME, |
| | | 'filename' : ldifTemplate |
| | | } |
| | | </call> |
| | | |
| | | <call function="'testCase_Postamble'"/> |
| | | |
| | | </sequence> |
| | | |
| | | </testcase> |
| | | |
| | | <import machine="STAF_LOCAL_HOSTNAME" |
| | | file="'%s/testcases/import_ldif/import_ldif_cleanup.xml' % (TESTS_DIR)"/> |
| | | <call function="'import_ldif_cleanup'" /> |
| | | |
| | | <call function="'import_ldif_cleanup'"> |
| | | { 'suiteSuffix' : 'import_3m' } |
| | | </call> |
| | | |
| | | <call function="'testSuite_Postamble'"/> |
| | | |
| | | </sequence> |
| | |
| | | <defaultcall function="import_ldif_cleanup"/> |
| | | |
| | | <function name="import_ldif_cleanup"> |
| | | <function-map-args> |
| | | <function-arg-def name="suiteSuffix" type="required"> |
| | | <function-arg-description> |
| | | Suite suffix |
| | | </function-arg-description> |
| | | <function-arg-property name="type" value="boolean"/> |
| | | </function-arg-def> |
| | | </function-map-args> |
| | | |
| | | <sequence> |
| | | |
| | |
| | | </sequence> |
| | | |
| | | </block> |
| | | |
| | | |
| | | <!--- Save access and errors logs --> |
| | | <block name="'Save Logs'"> |
| | | |
| | | <sequence> |
| | | |
| | | <message> |
| | | 'Copy %s/%s/logs/errors from %s to %s/errors_%s on %s' \ |
| | | % (DIRECTORY_INSTANCE_DIR,OPENDSNAME,STAF_REMOTE_HOSTNAME,logs.sut,suiteSuffix,STAXServiceMachine) |
| | | </message> |
| | | <call function="'copyFile'"> |
| | | { |
| | | 'location' : STAF_REMOTE_HOSTNAME , |
| | | 'srcfile' : '%s/%s/logs/errors' % (DIRECTORY_INSTANCE_DIR,OPENDSNAME) , |
| | | 'destfile' : '%s/errors_%s' % (logs.sut,suiteSuffix) , |
| | | 'remotehost' : STAXServiceMachine |
| | | } |
| | | </call> |
| | | <message> |
| | | 'Copy %s/%s/logs/access from %s to %s/access_%s on %s' \ |
| | | % (DIRECTORY_INSTANCE_DIR,OPENDSNAME,STAF_REMOTE_HOSTNAME,logs.sut,suiteSuffix,STAXServiceMachine) |
| | | </message> |
| | | <call function="'copyFile'"> |
| | | { |
| | | 'location' : STAF_REMOTE_HOSTNAME , |
| | | 'srcfile' : '%s/%s/logs/access' % (DIRECTORY_INSTANCE_DIR,OPENDSNAME) , |
| | | 'destfile' : '%s/access_%s' % (logs.sut,suiteSuffix) , |
| | | 'remotehost' : STAXServiceMachine |
| | | } |
| | | </call> |
| | | |
| | | </sequence> |
| | | |
| | | </block> |
| | | |
| | | <!-- Remove the topology created for the test suite --> |
| | | <block name="'Block Remove DS Topology'"> |
| | | |
| | |
| | | <defaultcall function="ldap_operation_cleanup"/> |
| | | |
| | | <function name="ldap_operation_cleanup"> |
| | | |
| | | <function-map-args> |
| | | <function-arg-def name="suiteSuffix" type="required"> |
| | | <function-arg-description> |
| | | Suite suffix |
| | | </function-arg-description> |
| | | <function-arg-property name="type" value="boolean"/> |
| | | </function-arg-def> |
| | | </function-map-args> |
| | | |
| | | <sequence> |
| | | |
| | | <block name="'cleanup'"> |
| | |
| | | </sequence> |
| | | |
| | | </block> |
| | | |
| | | |
| | | <!--- Save access and errors logs --> |
| | | <block name="'Save Logs'"> |
| | | |
| | | <sequence> |
| | | |
| | | <message> |
| | | 'Copy %s/%s/logs/errors from %s to %s/errors_%s on %s' \ |
| | | % (DIRECTORY_INSTANCE_DIR,OPENDSNAME,STAF_REMOTE_HOSTNAME,logs.sut,suiteSuffix,STAXServiceMachine) |
| | | </message> |
| | | <call function="'copyFile'"> |
| | | { |
| | | 'location' : STAF_REMOTE_HOSTNAME , |
| | | 'srcfile' : '%s/%s/logs/errors' % (DIRECTORY_INSTANCE_DIR,OPENDSNAME) , |
| | | 'destfile' : '%s/errors_%s' % (logs.sut,suiteSuffix) , |
| | | 'remotehost' : STAXServiceMachine |
| | | } |
| | | </call> |
| | | <message> |
| | | 'Copy %s/%s/logs/access from %s to %s/access_%s on %s' \ |
| | | % (DIRECTORY_INSTANCE_DIR,OPENDSNAME,STAF_REMOTE_HOSTNAME,logs.sut,suiteSuffix,STAXServiceMachine) |
| | | </message> |
| | | <call function="'copyFile'"> |
| | | { |
| | | 'location' : STAF_REMOTE_HOSTNAME , |
| | | 'srcfile' : '%s/%s/logs/access' % (DIRECTORY_INSTANCE_DIR,OPENDSNAME) , |
| | | 'destfile' : '%s/access_%s' % (logs.sut,suiteSuffix) , |
| | | 'remotehost' : STAXServiceMachine |
| | | } |
| | | </call> |
| | | |
| | | </sequence> |
| | | |
| | | </block> |
| | | |
| | | <!-- Remove the topology created for the test suite --> |
| | | <block name="'Block Remove DS Topology'"> |
| | | |
| | |
| | | adddeleteLoop = testsDuration / 10 |
| | | lowRange = 100000 |
| | | highRange = lowRange + numberOfEntries |
| | | jvmLoop = testsDuration / 1800 |
| | | jvmLoop = testsDuration / 1800 + 1 |
| | | jvmSleep = 1800000 |
| | | baseDN = 'ou=People,dc=com' |
| | | ldcltDir = '%s/ldclt_dir' % TMPDIR |
| | |
| | | } |
| | | </call> |
| | | |
| | | <call function="'Sleep'"> |
| | | { 'sleepForMilliSeconds' : jvmSleep } |
| | | </call> |
| | | <if expr="loop != jvmLoop"> |
| | | <call function="'Sleep'"> |
| | | { 'sleepForMilliSeconds' : jvmSleep } |
| | | </call> |
| | | </if> |
| | | </sequence> |
| | | </loop> |
| | | </sequence> |
| | |
| | | </sequence> |
| | | </if>--> |
| | | |
| | | <message> |
| | | 'Copy %s/ldclt_add.res from %s to %s on %s' \ |
| | | % (ldcltDir,STAF_CLIENT_HOSTNAME,logs.sut,STAXServiceMachine) |
| | | </message> |
| | | <call function="'copyFile'"> |
| | | { |
| | | 'location' : STAF_CLIENT_HOSTNAME , |
| | | 'srcfile' : '%s/ldclt_add.res' % ldcltDir , |
| | | 'destfile' : '%s/ldclt_add.res' % logs.sut , |
| | | 'remotehost' : STAXServiceMachine |
| | | } |
| | | </call> |
| | | |
| | | <message> |
| | | 'Copy %s/ldclt_delete.res from %s to %s on %s' \ |
| | | % (ldcltDir,STAF_CLIENT_HOSTNAME,logs.sut,STAXServiceMachine) |
| | | </message> |
| | | <call function="'copyFile'"> |
| | | { |
| | | 'location' : STAF_CLIENT_HOSTNAME , |
| | | 'srcfile' : '%s/ldclt_delete.res' % ldcltDir , |
| | | 'destfile' : '%s/ldclt_delete.res' % logs.sut , |
| | | 'remotehost' : STAXServiceMachine |
| | | } |
| | | </call> |
| | | |
| | | <call function="'testCase_Postamble'"/> |
| | | |
| | | </sequence> |
| | |
| | | |
| | | <import machine="STAF_LOCAL_HOSTNAME" |
| | | file="'%s/testcases/ldap_operation/ldap_operation_cleanup.xml' % (TESTS_DIR)"/> |
| | | <call function="'ldap_operation_cleanup'" /> |
| | | <call function="'ldap_operation_cleanup'"> |
| | | { 'suiteSuffix' : 'add_delete' } |
| | | </call> |
| | | |
| | | <call function="'testSuite_Postamble'"/> |
| | | |
| | |
| | | compareLoop = testsDuration / 10 |
| | | lowRange = 100000 |
| | | highRange = lowRange + numberOfEntries |
| | | jvmLoop = testsDuration / 1800 |
| | | jvmLoop = testsDuration / 1800 + 1 |
| | | jvmSleep = 1800000 |
| | | baseDN = 'ou=People,dc=com' |
| | | ldcltDir = '%s/ldclt_dir' % TMPDIR |
| | |
| | | } |
| | | </call> |
| | | |
| | | <call function="'Sleep'"> |
| | | { 'sleepForMilliSeconds' : jvmSleep } |
| | | </call> |
| | | <if expr="loop != jvmLoop"> |
| | | <call function="'Sleep'"> |
| | | { 'sleepForMilliSeconds' : jvmSleep } |
| | | </call> |
| | | </if> |
| | | </sequence> |
| | | </loop> |
| | | </sequence> |
| | |
| | | <tcstatus result="'fail'"/> |
| | | </sequence> |
| | | </if>--> |
| | | |
| | | |
| | | <message> |
| | | 'Copy %s/ldclt_compare.res from %s to %s on %s' \ |
| | | % (ldcltDir,STAF_CLIENT_HOSTNAME,logs.sut,STAXServiceMachine) |
| | | </message> |
| | | <call function="'copyFile'"> |
| | | { |
| | | 'location' : STAF_CLIENT_HOSTNAME , |
| | | 'srcfile' : '%s/ldclt_compare.res' % ldcltDir , |
| | | 'destfile' : '%s/ldclt_compare.res' % logs.sut , |
| | | 'remotehost' : STAXServiceMachine |
| | | } |
| | | </call> |
| | | |
| | | <call function="'testCase_Postamble'"/> |
| | | |
| | | </sequence> |
| | |
| | | } |
| | | </call> |
| | | |
| | | <call function="'testCase_Postamble'"/> |
| | | |
| | | </sequence> |
| | | |
| | | </testcase> |
| | | |
| | | |
| | | <testcase name="getTestCaseName('Postamble')"> |
| | | |
| | | <sequence> |
| | | |
| | | <call function="'testCase_Preamble'"/> |
| | | |
| | | <message> |
| | | 'ldclt_compare: Delete ldif and template files' |
| | | </message> |
| | |
| | | </sequence> |
| | | |
| | | </testcase> |
| | | |
| | | |
| | | <import machine="STAF_LOCAL_HOSTNAME" |
| | | file="'%s/testcases/ldap_operation/ldap_operation_cleanup.xml' % (TESTS_DIR)"/> |
| | | <call function="'ldap_operation_cleanup'" /> |
| | | <call function="'ldap_operation_cleanup'"> |
| | | { 'suiteSuffix' : 'compare' } |
| | | </call> |
| | | |
| | | <call function="'testSuite_Postamble'"/> |
| | | |
| | |
| | | modifyLoop = testsDuration / 10 |
| | | lowRange = 100000 |
| | | highRange = lowRange + numberOfEntries |
| | | jvmLoop = testsDuration / 1800 |
| | | jvmLoop = testsDuration / 1800 + 1 |
| | | jvmSleep = 1800000 |
| | | baseDN = 'ou=People,dc=com' |
| | | ldcltDir = '%s/ldclt_dir' % TMPDIR |
| | |
| | | } |
| | | </call> |
| | | |
| | | <call function="'Sleep'"> |
| | | { 'sleepForMilliSeconds' : jvmSleep } |
| | | </call> |
| | | <if expr="loop != jvmLoop"> |
| | | <call function="'Sleep'"> |
| | | { 'sleepForMilliSeconds' : jvmSleep } |
| | | </call> |
| | | </if> |
| | | </sequence> |
| | | </loop> |
| | | </sequence> |
| | |
| | | <tcstatus result="'fail'"/> |
| | | </sequence> |
| | | </if>--> |
| | | |
| | | |
| | | <message> |
| | | 'Copy %s/ldclt_modify.res from %s to %s on %s' \ |
| | | % (ldcltDir,STAF_CLIENT_HOSTNAME,logs.sut,STAXServiceMachine) |
| | | </message> |
| | | <call function="'copyFile'"> |
| | | { |
| | | 'location' : STAF_CLIENT_HOSTNAME , |
| | | 'srcfile' : '%s/ldclt_modify.res' % ldcltDir , |
| | | 'destfile' : '%s/ldclt_modify.res' % logs.sut , |
| | | 'remotehost' : STAXServiceMachine |
| | | } |
| | | </call> |
| | | |
| | | <call function="'testCase_Postamble'"/> |
| | | |
| | | </sequence> |
| | |
| | | |
| | | <import machine="STAF_LOCAL_HOSTNAME" |
| | | file="'%s/testcases/ldap_operation/ldap_operation_cleanup.xml' % (TESTS_DIR)"/> |
| | | <call function="'ldap_operation_cleanup'" /> |
| | | <call function="'ldap_operation_cleanup'"> |
| | | { 'suiteSuffix' : 'modify' } |
| | | </call> |
| | | |
| | | <call function="'testSuite_Postamble'"/> |
| | | |
| | |
| | | modifyrdnLoop = testsDuration / 10 |
| | | lowRange = 100000 |
| | | highRange = lowRange + 2 * numberOfEntries |
| | | jvmLoop = testsDuration / 1800 |
| | | jvmLoop = testsDuration / 1800 + 1 |
| | | jvmSleep = 1800000 |
| | | baseDN = 'ou=People,dc=com' |
| | | ldcltDir = '%s/ldclt_dir' % TMPDIR |
| | |
| | | } |
| | | </call> |
| | | |
| | | <call function="'Sleep'"> |
| | | { 'sleepForMilliSeconds' : jvmSleep } |
| | | </call> |
| | | <if expr="loop != jvmLoop"> |
| | | <call function="'Sleep'"> |
| | | { 'sleepForMilliSeconds' : jvmSleep } |
| | | </call> |
| | | </if> |
| | | </sequence> |
| | | </loop> |
| | | </sequence> |
| | |
| | | </sequence> |
| | | </if>--> |
| | | |
| | | <message> |
| | | 'Copy %s/ldclt_modifyrdn.res from %s to %s on %s' \ |
| | | % (ldcltDir,STAF_CLIENT_HOSTNAME,logs.sut,STAXServiceMachine) |
| | | </message> |
| | | <call function="'copyFile'"> |
| | | { |
| | | 'location' : STAF_CLIENT_HOSTNAME , |
| | | 'srcfile' : '%s/ldclt_modifyrdn.res' % ldcltDir , |
| | | 'destfile' : '%s/ldclt_modifyrdn.res' % logs.sut , |
| | | 'remotehost' : STAXServiceMachine |
| | | } |
| | | </call> |
| | | |
| | | <call function="'testCase_Postamble'"/> |
| | | |
| | | </sequence> |
| | |
| | | |
| | | <import machine="STAF_LOCAL_HOSTNAME" |
| | | file="'%s/testcases/import_ldif/import_ldif_cleanup.xml' % (TESTS_DIR)"/> |
| | | <call function="'import_ldif_cleanup'" /> |
| | | <call function="'ldap_operation_cleanup'"> |
| | | { 'suiteSuffix' : 'modifyrdn' } |
| | | </call> |
| | | |
| | | <call function="'testSuite_Postamble'"/> |
| | | |
| | |
| | | searchLoop = testsDuration / 10 |
| | | lowRange = 100000 |
| | | highRange = lowRange + numberOfEntries |
| | | jvmLoop = testsDuration / 1800 |
| | | jvmLoop = testsDuration / 1800 + 1 |
| | | jvmSleep = 1800000 |
| | | baseDN = 'ou=People,dc=com' |
| | | ldcltDir = '%s/ldclt_dir' % TMPDIR |
| | |
| | | } |
| | | </call> |
| | | |
| | | <call function="'Sleep'"> |
| | | { 'sleepForMilliSeconds' : jvmSleep } |
| | | </call> |
| | | <if expr="loop != jvmLoop"> |
| | | <call function="'Sleep'"> |
| | | { 'sleepForMilliSeconds' : jvmSleep } |
| | | </call> |
| | | </if> |
| | | </sequence> |
| | | </loop> |
| | | </sequence> |
| | |
| | | </sequence> |
| | | </if>--> |
| | | |
| | | <message> |
| | | 'Copy %s/ldclt_search.res from %s to %s on %s' \ |
| | | % (ldcltDir,STAF_CLIENT_HOSTNAME,logs.sut,STAXServiceMachine) |
| | | </message> |
| | | <call function="'copyFile'"> |
| | | { |
| | | 'location' : STAF_CLIENT_HOSTNAME , |
| | | 'srcfile' : '%s/ldclt_search.res' % ldcltDir , |
| | | 'destfile' : '%s/ldclt_search.res' % logs.sut , |
| | | 'remotehost' : STAXServiceMachine |
| | | } |
| | | </call> |
| | | |
| | | <call function="'testCase_Postamble'"/> |
| | | |
| | | </sequence> |
| | |
| | | |
| | | <import machine="STAF_LOCAL_HOSTNAME" |
| | | file="'%s/testcases/ldap_operation/ldap_operation_cleanup.xml' % (TESTS_DIR)"/> |
| | | <call function="'ldap_operation_cleanup'" /> |
| | | <call function="'ldap_operation_cleanup'"> |
| | | { 'suiteSuffix' : 'search' } |
| | | </call> |
| | | |
| | | <call function="'testSuite_Postamble'"/> |
| | | |
| New file |
| | |
| | | <?xml version="1.0" encoding="UTF-8" standalone="no"?> |
| | | <!DOCTYPE stax SYSTEM "../../../shared/stax.dtd"> |
| | | <!-- |
| | | ! CDDL HEADER START |
| | | ! |
| | | ! The contents of this file are subject to the terms of the |
| | | ! Common Development and Distribution License, Version 1.0 only |
| | | ! (the "License"). You may not use this file except in compliance |
| | | ! with the License. |
| | | ! |
| | | ! You can obtain a copy of the license at |
| | | ! trunk/opends/resource/legal-notices/OpenDS.LICENSE |
| | | ! or https://OpenDS.dev.java.net/OpenDS.LICENSE. |
| | | ! See the License for the specific language governing permissions |
| | | ! and limitations under the License. |
| | | ! |
| | | ! When distributing Covered Code, include this CDDL HEADER in each |
| | | ! file and include the License file at |
| | | ! trunk/opends/resource/legal-notices/OpenDS.LICENSE. If applicable, |
| | | ! add the following below this CDDL HEADER, with the fields enclosed |
| | | ! by brackets "[]" replaced with your own identifying information: |
| | | ! Portions Copyright [yyyy] [name of copyright owner] |
| | | ! |
| | | ! CDDL HEADER END |
| | | ! |
| | | ! Copyright 2009 Sun Microsystems, Inc. |
| | | ! --> |
| | | <stax> |
| | | |
| | | <defaultcall function="main_replication"/> |
| | | |
| | | <function name="main_replication"> |
| | | |
| | | <function-list-args> |
| | | <function-required-arg name="STAXParentID"/> |
| | | </function-list-args> |
| | | |
| | | <sequence> |
| | | |
| | | <block name="'replication'"> |
| | | |
| | | <sequence> |
| | | |
| | | <!--- Load the job environment for the test group execution --> |
| | | <import machine="STAF_LOCAL_HOSTNAME" |
| | | file="'%s/environment.xml' % TESTS_FUNCTIONS_DIR"/> |
| | | <call function="'loadJobEnvironment'"> |
| | | { 'parent' : STAXParentID } |
| | | </call> |
| | | |
| | | <script> |
| | | CurrentTestPath['group']='replication' |
| | | |
| | | timerDuration = '620m' |
| | | |
| | | # Time in second (minimum duration: 30 min => 1800 s) |
| | | testsDuration = 1800 |
| | | numberOfEntries = 10000 |
| | | </script> |
| | | |
| | | <call function="'testGroup_Preamble'"/> |
| | | |
| | | <script> |
| | | testList = [] |
| | | testList.append('replication_add_delete') |
| | | testList.append('replication_search') |
| | | testList.append('replication_modifyrdn') |
| | | testList.append('replication_modify') |
| | | testList.append('replication_add_mod_delete') |
| | | testList.append('replication_add_mod_delete_search') |
| | | |
| | | testList.append('replication_add_search_multiple') |
| | | testList.append('replication_add_delete_multiple') |
| | | testList.append('replication_add_modify_multiple') |
| | | testList.append('replication_add_del_add_del_multiple') |
| | | testList.append('replication_modify_multiple') |
| | | testList.append('replication_modify_modifyrdn_multiple') |
| | | testList.append('replication_modifyrdn_multiple') |
| | | |
| | | #testList.append('replication_modify_restart_multiple') |
| | | |
| | | globalAssuredReplication = None |
| | | </script> |
| | | |
| | | <iterate var="__test" in="testList"> |
| | | <sequence> |
| | | |
| | | <import machine="STAF_LOCAL_HOSTNAME" |
| | | file="'%s/testcases/replication/%s.xml' % |
| | | (TESTS_DIR,__test)"/> |
| | | |
| | | <call function="'%s' % __test" /> |
| | | |
| | | </sequence> |
| | | </iterate> |
| | | |
| | | <call function="'testGroup_Postamble'"/> |
| | | |
| | | </sequence> |
| | | |
| | | </block> |
| | | |
| | | </sequence> |
| | | |
| | | </function> |
| | | |
| | | </stax> |
| New file |
| | |
| | | <?xml version="1.0" encoding="UTF-8" standalone="no"?> |
| | | <!DOCTYPE stax SYSTEM "../../../shared/stax.dtd"> |
| | | <!-- |
| | | ! CDDL HEADER START |
| | | ! |
| | | ! The contents of this file are subject to the terms of the |
| | | ! Common Development and Distribution License, Version 1.0 only |
| | | ! (the "License"). You may not use this file except in compliance |
| | | ! with the License. |
| | | ! |
| | | ! You can obtain a copy of the license at |
| | | ! trunk/opends/resource/legal-notices/OpenDS.LICENSE |
| | | ! or https://OpenDS.dev.java.net/OpenDS.LICENSE. |
| | | ! See the License for the specific language governing permissions |
| | | ! and limitations under the License. |
| | | ! |
| | | ! When distributing Covered Code, include this CDDL HEADER in each |
| | | ! file and include the License file at |
| | | ! trunk/opends/resource/legal-notices/OpenDS.LICENSE. If applicable, |
| | | ! add the following below this CDDL HEADER, with the fields enclosed |
| | | ! by brackets "[]" replaced with your own identifying information: |
| | | ! Portions Copyright [yyyy] [name of copyright owner] |
| | | ! |
| | | ! CDDL HEADER END |
| | | ! |
| | | ! Copyright 2009 Sun Microsystems, Inc. |
| | | ! --> |
| | | <stax> |
| | | |
| | | <defaultcall function="replication_add_del_add_del_multiple"/> |
| | | |
| | | <function name="replication_add_del_add_del_multiple"> |
| | | |
| | | <sequence> |
| | | |
| | | <block name="'replication-add-del-add-del-multiple'"> |
| | | |
| | | <sequence> |
| | | |
| | | <script> |
| | | if not CurrentTestPath.has_key('group'): |
| | | CurrentTestPath['group']='replication' |
| | | CurrentTestPath['suite']=STAXCurrentBlock |
| | | </script> |
| | | |
| | | <call function="'testSuite_Preamble'"/> |
| | | |
| | | <import machine="STAF_LOCAL_HOSTNAME" |
| | | file="'%s/../functional-tests/testcases/replication/replication_setup.xml' % (TESTS_DIR)"/> |
| | | <call function="'replication_setup'"/> |
| | | |
| | | <script> |
| | | ldcltLoop = testsDuration / 10 |
| | | lowRange = 100000 |
| | | highRange = lowRange + numberOfEntries |
| | | jvmLoop = testsDuration / 1800 + 1 |
| | | jvmSleep = 1800000 |
| | | baseDN = 'ou=People,%s' % synchroSuffix |
| | | ldcltDir = '%s/ldclt_dir' % TMPDIR |
| | | ldcltTemplate = '%s/ldclt_add.template' % ldcltDir |
| | | |
| | | server1Host = server1.getHostname() |
| | | server1Path = '%s/%s' % (server1.getDir(),OPENDSNAME) |
| | | server1Dir = server1.getDir() |
| | | server2Host = server2.getHostname() |
| | | server2Path = '%s/%s' % (server2.getDir(),OPENDSNAME) |
| | | server2Dir = server2.getDir() |
| | | |
| | | suffix = 'add_del_add_del_multiple' |
| | | </script> |
| | | |
| | | |
| | | <testcase name="getTestCaseName('Preamble')"> |
| | | |
| | | <sequence> |
| | | |
| | | <call function="'testCase_Preamble'"/> |
| | | |
| | | |
| | | <message> |
| | | 'replication_add_del_add_del_multiple: Delete %s on %s' \ |
| | | % (ldcltDir, STAF_CLIENT_HOSTNAME) |
| | | </message> |
| | | |
| | | <call function="'deleteFolder'"> |
| | | { |
| | | 'location' : STAF_CLIENT_HOSTNAME , |
| | | 'foldername' : ldcltDir |
| | | } |
| | | </call> |
| | | |
| | | <message> |
| | | 'replication_add_del_add_del_multiple: Create %s on %s' \ |
| | | % (ldcltDir, STAF_CLIENT_HOSTNAME) |
| | | </message> |
| | | |
| | | <call function="'createFolder'"> |
| | | { |
| | | 'location' : STAF_CLIENT_HOSTNAME , |
| | | 'foldername' : ldcltDir |
| | | } |
| | | </call> |
| | | |
| | | <message> |
| | | 'replication_add_del_add_del_multiple: Create ldclt template' |
| | | </message> |
| | | |
| | | <call function="'MakeALdcltTemplate'"> |
| | | { |
| | | 'templateFile' : ldcltTemplate , |
| | | 'templateLocation' : STAF_CLIENT_HOSTNAME |
| | | } |
| | | </call> |
| | | |
| | | <call function="'testCase_Postamble'"/> |
| | | |
| | | </sequence> |
| | | |
| | | </testcase> |
| | | |
| | | |
| | | <testcase name="getTestCaseName('Run ldclt clients')"> |
| | | |
| | | <sequence> |
| | | |
| | | <call function="'testCase_Preamble'"/> |
| | | |
| | | <message> |
| | | 'replication_add_del_add_del_multiple: Run ldclt add' |
| | | </message> |
| | | |
| | | <!--<timer duration="timerDuration"> |
| | | <sequence>--> |
| | | <parallel> |
| | | <block name="'ldclt-add-threads-server1'"> |
| | | <sequence> |
| | | |
| | | <message> |
| | | 'replication_add_del_add_del_multiple: add threads on %s:%s' \ |
| | | % (server1Host, server1.getPort()) |
| | | </message> |
| | | |
| | | <script> |
| | | opt1 = '-e delayedstartup=1 -e object=%s' % ldcltTemplate |
| | | opt2 = '-e "rdn=uid:user.[C=INCRN(%s;%s;6)]"' \ |
| | | % (lowRange, highRange) |
| | | opt3 = '-e add -N %s -I 68 -v -q' % ldcltLoop |
| | | opts = '%s %s %s' % (opt1, opt2, opt3) |
| | | </script> |
| | | |
| | | <call function="'ldclt'"> |
| | | { |
| | | 'location' : STAF_CLIENT_HOSTNAME, |
| | | 'dsInstanceHost' : server1Host, |
| | | 'dsInstancePort' : server1.getPort(), |
| | | 'dsInstanceDn' : server1.getRootDn(), |
| | | 'dsInstancePswd' : server1.getRootPwd(), |
| | | 'dsBaseDn' : baseDN, |
| | | 'ldcltOptions' : opts, |
| | | 'outputFile' : 'ldclt_add-%s_1.res' % suffix, |
| | | 'outputPath' : ldcltDir |
| | | } |
| | | </call> |
| | | |
| | | </sequence> |
| | | </block> |
| | | |
| | | <block name="'ldclt-delete-threads-server1'"> |
| | | <sequence> |
| | | <call function="'Sleep'"> |
| | | { 'sleepForMilliSeconds' : 120000 } |
| | | </call> |
| | | |
| | | <message> |
| | | 'replication_add_del_add_del_multiple: delete threads on %s:%s' \ |
| | | % (server1Host, server1.getPort()) |
| | | </message> |
| | | |
| | | <script> |
| | | opt1 = '-e delayedstartup=1' |
| | | opt2 = '-e delete,rdn=\"uid:user.[RNDN(%s;%s;6)]\"' \ |
| | | % (lowRange, highRange) |
| | | opt3 = '-N %s -I 32 -v -q' % ldcltLoop |
| | | opts = '%s %s %s' % (opt1, opt2, opt3) |
| | | </script> |
| | | |
| | | <call function="'ldclt'"> |
| | | { |
| | | 'location' : STAF_CLIENT_HOSTNAME, |
| | | 'dsInstanceHost' : server1Host, |
| | | 'dsInstancePort' : server1.getPort(), |
| | | 'dsInstanceDn' : server1.getRootDn(), |
| | | 'dsInstancePswd' : server1.getRootPwd(), |
| | | 'dsBaseDn' : baseDN, |
| | | 'ldcltOptions' : opts, |
| | | 'outputFile' : 'ldclt_delete-%s_1.res' % suffix, |
| | | 'outputPath' : ldcltDir |
| | | } |
| | | </call> |
| | | </sequence> |
| | | </block> |
| | | |
| | | <block name="'ldclt-add-threads-server2'"> |
| | | <sequence> |
| | | |
| | | <message> |
| | | 'replication_add_del_add_del_multiple: add threads on %s:%s' \ |
| | | % (server2Host, server2.getPort()) |
| | | </message> |
| | | |
| | | <script> |
| | | opt1 = '-e delayedstartup=1 -e object=%s' % ldcltTemplate |
| | | opt2 = '-e "rdn=uid:user.[C=INCRN(%s;%s;6)]"' \ |
| | | % (lowRange, highRange) |
| | | opt3 = '-e add -N %s -I 68 -v -q' % ldcltLoop |
| | | opts = '%s %s %s' % (opt1, opt2, opt3) |
| | | </script> |
| | | |
| | | <call function="'ldclt'"> |
| | | { |
| | | 'location' : STAF_CLIENT_HOSTNAME, |
| | | 'dsInstanceHost' : server2Host, |
| | | 'dsInstancePort' : server2.getPort(), |
| | | 'dsInstanceDn' : server2.getRootDn(), |
| | | 'dsInstancePswd' : server2.getRootPwd(), |
| | | 'dsBaseDn' : baseDN, |
| | | 'ldcltOptions' : opts, |
| | | 'outputFile' : 'ldclt_add-%s_2.res' % suffix, |
| | | 'outputPath' : ldcltDir |
| | | } |
| | | </call> |
| | | |
| | | </sequence> |
| | | </block> |
| | | |
| | | <block name="'ldclt-delete-threads-server2'"> |
| | | <sequence> |
| | | <call function="'Sleep'"> |
| | | { 'sleepForMilliSeconds' : 120000 } |
| | | </call> |
| | | |
| | | <message> |
| | | 'replication_add_del_add_del_multiple: delete threads on %s:%s' \ |
| | | % (server2Host, server2.getPort()) |
| | | </message> |
| | | |
| | | <script> |
| | | opt1 = '-e delayedstartup=1' |
| | | opt2 = '-e delete,rdn=\"uid:user.[RNDN(%s;%s;6)]\"' \ |
| | | % (lowRange, highRange) |
| | | opt3 = '-N %s -I 32 -v -q' % ldcltLoop |
| | | opts = '%s %s %s' % (opt1, opt2, opt3) |
| | | </script> |
| | | |
| | | <call function="'ldclt'"> |
| | | { |
| | | 'location' : STAF_CLIENT_HOSTNAME, |
| | | 'dsInstanceHost' : server2Host, |
| | | 'dsInstancePort' : server2.getPort(), |
| | | 'dsInstanceDn' : server2.getRootDn(), |
| | | 'dsInstancePswd' : server2.getRootPwd(), |
| | | 'dsBaseDn' : baseDN, |
| | | 'ldcltOptions' : opts, |
| | | 'outputFile' : 'ldclt_delete-%s_2.res' % suffix, |
| | | 'outputPath' : ldcltDir |
| | | } |
| | | </call> |
| | | </sequence> |
| | | </block> |
| | | |
| | | <block name="'ldclt-jvm'"> |
| | | <sequence> |
| | | <loop from="1" to="jvmLoop" var="loop"> |
| | | <sequence> |
| | | <message> |
| | | 'LOOP %s out of %s' % (loop, jvmLoop) |
| | | </message> |
| | | |
| | | <message> |
| | | 'replication_add_del_add_del_multiple: save jvm information' |
| | | </message> |
| | | |
| | | <call function="'ldapSearchWithScript'"> |
| | | { 'location' : server1Host, |
| | | 'dsPath' : server1Path, |
| | | 'dsInstanceHost' : server1Host, |
| | | 'dsInstancePort' : server1.getPort(), |
| | | 'dsInstanceDn' : server1.getRootDn(), |
| | | 'dsInstancePswd' : server1.getRootPwd(), |
| | | 'dsBaseDN' : 'cn=JVM Memory Usage,cn=monitor', |
| | | 'dsFilter' : 'objectclass=*', |
| | | 'expectedRC' : 'noCheck', |
| | | 'outputFile' : 'jvm_%s_%s.out' \ |
| | | % (suffix, loop), |
| | | 'outputPath' : server1Dir |
| | | } |
| | | </call> |
| | | |
| | | <call function="'ldapSearchWithScript'"> |
| | | { 'location' : server2Host, |
| | | 'dsPath' : server2Path, |
| | | 'dsInstanceHost' : server2Host, |
| | | 'dsInstancePort' : server2.getPort(), |
| | | 'dsInstanceDn' : server2.getRootDn(), |
| | | 'dsInstancePswd' : server2.getRootPwd(), |
| | | 'dsBaseDN' : 'cn=JVM Memory Usage,cn=monitor', |
| | | 'dsFilter' : 'objectclass=*', |
| | | 'expectedRC' : 'noCheck', |
| | | 'outputFile' : 'jvm_%s_%s.out' \ |
| | | % (suffix, loop), |
| | | 'outputPath' : server2Dir |
| | | } |
| | | </call> |
| | | |
| | | <if expr="loop != jvmLoop"> |
| | | <call function="'Sleep'"> |
| | | { 'sleepForMilliSeconds' : jvmSleep } |
| | | </call> |
| | | </if> |
| | | |
| | | </sequence> |
| | | </loop> |
| | | </sequence> |
| | | </block> |
| | | </parallel> |
| | | <!--</sequence> |
| | | </timer> |
| | | |
| | | <script>timerRC = RC</script> |
| | | |
| | | <if expr="timerRC == 0"> |
| | | <sequence> |
| | | <message>'Timer exceeds %s' % timerDuration</message> |
| | | <tcstatus result="'fail'"/> |
| | | </sequence> |
| | | </if>--> |
| | | |
| | | <message> |
| | | 'Copy %s/ldclt_add-%s_1.res from %s to %s on %s' % \ |
| | | (ldcltDir, suffix, STAF_CLIENT_HOSTNAME, logs.sut, STAXServiceMachine) |
| | | </message> |
| | | <call function="'copyFile'"> |
| | | { |
| | | 'location' : STAF_CLIENT_HOSTNAME, |
| | | 'srcfile' : '%s/ldclt_add-%s_1.res' % (ldcltDir, suffix), |
| | | 'destfile' : '%s/ldclt_add-%s_1.res' % (logs.sut, suffix), |
| | | 'remotehost' : STAXServiceMachine |
| | | } |
| | | </call> |
| | | |
| | | <message> |
| | | 'Copy %s/ldclt_delete-%s_1.res from %s to %s on %s' % \ |
| | | (ldcltDir, suffix, STAF_CLIENT_HOSTNAME, logs.sut, STAXServiceMachine) |
| | | </message> |
| | | <call function="'copyFile'"> |
| | | { |
| | | 'location' : STAF_CLIENT_HOSTNAME, |
| | | 'srcfile' : '%s/ldclt_delete-%s_1.res' % (ldcltDir, suffix), |
| | | 'destfile' : '%s/ldclt_delete-%s_1.res' % (logs.sut, suffix), |
| | | 'remotehost' : STAXServiceMachine |
| | | } |
| | | </call> |
| | | |
| | | <message> |
| | | 'Copy %s/ldclt_add-%s_2.res from %s to %s on %s' % \ |
| | | (ldcltDir, suffix, STAF_CLIENT_HOSTNAME, logs.sut, STAXServiceMachine) |
| | | </message> |
| | | <call function="'copyFile'"> |
| | | { |
| | | 'location' : STAF_CLIENT_HOSTNAME, |
| | | 'srcfile' : '%s/ldclt_add-%s_2.res' % (ldcltDir, suffix), |
| | | 'destfile' : '%s/ldclt_add-%s_2.res' % (logs.sut, suffix), |
| | | 'remotehost' : STAXServiceMachine |
| | | } |
| | | </call> |
| | | <message> |
| | | 'Copy %s/ldclt_delete-%s_2.res from %s to %s on %s' % \ |
| | | (ldcltDir, suffix, STAF_CLIENT_HOSTNAME, logs.sut, STAXServiceMachine) |
| | | </message> |
| | | <call function="'copyFile'"> |
| | | { |
| | | 'location' : STAF_CLIENT_HOSTNAME, |
| | | 'srcfile' : '%s/ldclt_delete-%s_2.res' % (ldcltDir, suffix), |
| | | 'destfile' : '%s/ldclt_delete-%s_2.res' % (logs.sut, suffix), |
| | | 'remotehost' : STAXServiceMachine |
| | | } |
| | | </call> |
| | | |
| | | <call function="'testCase_Postamble'"/> |
| | | </sequence> |
| | | |
| | | </testcase> |
| | | |
| | | |
| | | |
| | | <testcase name="getTestCaseName('Check server is still running')"> |
| | | |
| | | <sequence> |
| | | |
| | | <call function="'testCase_Preamble'"/> |
| | | |
| | | <paralleliterate var="server" in="_topologyServerList" indexvar="i"> |
| | | <sequence> |
| | | <script> |
| | | serverPath = '%s/%s' % (server.getDir(), OPENDSNAME) |
| | | </script> |
| | | |
| | | <message> |
| | | 'replication_add_del_add_del_multiple: Check server is still running on \ |
| | | %s:%s' % (server.getHostname(), server.getPort()) |
| | | </message> |
| | | |
| | | <!-- Modify entry on one of the servers --> |
| | | <call function="'isAlive'"> |
| | | { 'location' : server.getHostname(), |
| | | 'dsPath' : serverPath, |
| | | 'dsInstanceHost' : server.getHostname(), |
| | | 'dsInstancePort' : server.getPort(), |
| | | 'dsInstanceDn' : server.getRootDn(), |
| | | 'dsInstancePswd' : server.getRootPwd(), |
| | | 'noOfLoops' : 10, |
| | | 'noOfMilliSeconds' : 5000 |
| | | } |
| | | </call> |
| | | </sequence> |
| | | </paralleliterate> |
| | | |
| | | <call function="'testCase_Postamble'"/> |
| | | |
| | | </sequence> |
| | | |
| | | </testcase> |
| | | |
| | | |
| | | |
| | | <testcase name="getTestCaseName('Verify replication')"> |
| | | |
| | | <sequence> |
| | | |
| | | <call function="'testCase_Preamble'"/> |
| | | |
| | | <message> |
| | | 'replication_add_del_add_del_multiple: Verify replication is still working' |
| | | </message> |
| | | |
| | | <!-- Verify the replication is still working among the servers in |
| | | the topology --> |
| | | <call function="'verifyReplication'"> |
| | | [ _topologyServerList, synchroSuffix ] |
| | | </call> |
| | | |
| | | <call function="'testCase_Postamble'"/> |
| | | |
| | | </sequence> |
| | | |
| | | </testcase> |
| | | |
| | | |
| | | |
| | | <testcase name="getTestCaseName('Verify tree synchronization')"> |
| | | |
| | | <sequence> |
| | | |
| | | <call function="'testCase_Preamble'"/> |
| | | |
| | | <message> |
| | | 'replication_add_del_add_del_multiple: Verify the tree synchronization' |
| | | </message> |
| | | |
| | | <!-- Verify the synchronization of the trees among the servers in |
| | | the topology --> |
| | | <call function="'verifyTrees'"> |
| | | [ clientHost, clientPath, master, consumerList, synchroSuffix ] |
| | | </call> |
| | | |
| | | <call function="'testCase_Postamble'"/> |
| | | |
| | | </sequence> |
| | | |
| | | </testcase> |
| | | |
| | | |
| | | |
| | | <testcase name="getTestCaseName('Check replication status')"> |
| | | |
| | | <sequence> |
| | | |
| | | <call function="'testCase_Preamble'"/> |
| | | |
| | | <message> |
| | | 'replication_add_del_add_del_multiple: Check replication status' |
| | | </message> |
| | | |
| | | <!-- Verify the synchronization of the trees among the servers in |
| | | the topology --> |
| | | <call function="'getReplicationStatus'"> |
| | | { 'location' : masterHost, |
| | | 'dsPath' : masterPath, |
| | | 'dsInstanceHost' : masterHost, |
| | | 'dsInstanceAdminPort' : master.getAdminPort(), |
| | | 'replicationDnList' : [synchroSuffix] |
| | | } |
| | | </call> |
| | | |
| | | <call function="'testCase_Postamble'"/> |
| | | |
| | | </sequence> |
| | | |
| | | </testcase> |
| | | |
| | | |
| | | <import machine="STAF_LOCAL_HOSTNAME" |
| | | file="'%s/../functional-tests/testcases/replication/replication_cleanup.xml' % (TESTS_DIR)"/> |
| | | <call function="'replication_cleanup'"> |
| | | { 'suiteSuffix' : suffix } |
| | | </call> |
| | | |
| | | <call function="'testSuite_Postamble'"/> |
| | | |
| | | </sequence> |
| | | |
| | | </block> |
| | | |
| | | </sequence> |
| | | |
| | | </function> |
| | | |
| | | </stax> |
| New file |
| | |
| | | <?xml version="1.0" encoding="UTF-8" standalone="no"?> |
| | | <!DOCTYPE stax SYSTEM "../../../shared/stax.dtd"> |
| | | <!-- |
| | | ! CDDL HEADER START |
| | | ! |
| | | ! The contents of this file are subject to the terms of the |
| | | ! Common Development and Distribution License, Version 1.0 only |
| | | ! (the "License"). You may not use this file except in compliance |
| | | ! with the License. |
| | | ! |
| | | ! You can obtain a copy of the license at |
| | | ! trunk/opends/resource/legal-notices/OpenDS.LICENSE |
| | | ! or https://OpenDS.dev.java.net/OpenDS.LICENSE. |
| | | ! See the License for the specific language governing permissions |
| | | ! and limitations under the License. |
| | | ! |
| | | ! When distributing Covered Code, include this CDDL HEADER in each |
| | | ! file and include the License file at |
| | | ! trunk/opends/resource/legal-notices/OpenDS.LICENSE. If applicable, |
| | | ! add the following below this CDDL HEADER, with the fields enclosed |
| | | ! by brackets "[]" replaced with your own identifying information: |
| | | ! Portions Copyright [yyyy] [name of copyright owner] |
| | | ! |
| | | ! CDDL HEADER END |
| | | ! |
| | | ! Copyright 2009 Sun Microsystems, Inc. |
| | | ! --> |
| | | <stax> |
| | | |
| | | <defaultcall function="replication_add_delete"/> |
| | | |
| | | <function name="replication_add_delete"> |
| | | |
| | | <sequence> |
| | | |
| | | <block name="'replication-add-delete'"> |
| | | |
| | | <sequence> |
| | | |
| | | <script> |
| | | if not CurrentTestPath.has_key('group'): |
| | | CurrentTestPath['group']='replication' |
| | | CurrentTestPath['suite']=STAXCurrentBlock |
| | | </script> |
| | | |
| | | <call function="'testSuite_Preamble'"/> |
| | | |
| | | <import machine="STAF_LOCAL_HOSTNAME" |
| | | file="'%s/../functional-tests/testcases/replication/replication_setup.xml' % (TESTS_DIR)"/> |
| | | <call function="'replication_setup'"/> |
| | | |
| | | <script> |
| | | ldcltLoop = testsDuration / 10 |
| | | lowRange = 100000 |
| | | highRange = lowRange + numberOfEntries |
| | | jvmLoop = testsDuration / 1800 + 1 |
| | | jvmSleep = 1800000 |
| | | baseDN = 'ou=People,%s' % synchroSuffix |
| | | ldcltDir = '%s/ldclt_dir' % TMPDIR |
| | | ldcltTemplate = '%s/ldclt_add.template' % ldcltDir |
| | | masterDir = '%s/..' % masterPath |
| | | |
| | | suffix = 'add_delete' |
| | | </script> |
| | | |
| | | |
| | | <testcase name="getTestCaseName('Preamble')"> |
| | | |
| | | <sequence> |
| | | |
| | | <call function="'testCase_Preamble'"/> |
| | | |
| | | <message> |
| | | 'replication_add_delete: Delete %s on %s' \ |
| | | % (ldcltDir, STAF_CLIENT_HOSTNAME) |
| | | </message> |
| | | |
| | | <call function="'deleteFolder'"> |
| | | { |
| | | 'location' : STAF_CLIENT_HOSTNAME , |
| | | 'foldername' : ldcltDir |
| | | } |
| | | </call> |
| | | |
| | | <message> |
| | | 'replication_add_delete: Create %s on %s' \ |
| | | % (ldcltDir, STAF_CLIENT_HOSTNAME) |
| | | </message> |
| | | |
| | | <call function="'createFolder'"> |
| | | { |
| | | 'location' : STAF_CLIENT_HOSTNAME , |
| | | 'foldername' : ldcltDir |
| | | } |
| | | </call> |
| | | |
| | | <message> |
| | | 'replication_add_delete: Create ldclt template' |
| | | </message> |
| | | |
| | | <call function="'MakeALdcltTemplate'"> |
| | | { |
| | | 'templateFile' : ldcltTemplate , |
| | | 'templateLocation' : STAF_CLIENT_HOSTNAME |
| | | } |
| | | </call> |
| | | |
| | | <call function="'testCase_Postamble'"/> |
| | | |
| | | </sequence> |
| | | |
| | | </testcase> |
| | | |
| | | |
| | | <testcase name="getTestCaseName('Run ldclt clients')"> |
| | | |
| | | <sequence> |
| | | |
| | | <call function="'testCase_Preamble'"/> |
| | | |
| | | <message> |
| | | 'replication_add_delete: Run ldclt add' |
| | | </message> |
| | | |
| | | <!--<timer duration="timerDuration"> |
| | | <sequence>--> |
| | | <parallel> |
| | | <block name="'ldclt-add-threads'"> |
| | | <sequence> |
| | | |
| | | <message> |
| | | 'replication_add_delete: add threads' |
| | | </message> |
| | | |
| | | <script> |
| | | opt1 = '-e delayedstartup=1 -e object=%s' % ldcltTemplate |
| | | opt2 = '-e "rdn=uid:user.[C=INCRN(%s;%s;6)]"' \ |
| | | % (lowRange, highRange) |
| | | opt3 = '-e add -N %s -I 68 -v -q' % ldcltLoop |
| | | opts = '%s %s %s' % (opt1, opt2, opt3) |
| | | </script> |
| | | |
| | | <call function="'ldclt'"> |
| | | { |
| | | 'location' : STAF_CLIENT_HOSTNAME, |
| | | 'dsInstanceHost' : masterHost, |
| | | 'dsInstancePort' : master.getPort(), |
| | | 'dsInstanceDn' : master.getRootDn(), |
| | | 'dsInstancePswd' : master.getRootPwd(), |
| | | 'dsBaseDn' : baseDN, |
| | | 'ldcltOptions' : opts, |
| | | 'outputFile' : 'ldclt_add-%s.res' % suffix, |
| | | 'outputPath' : ldcltDir |
| | | } |
| | | </call> |
| | | |
| | | </sequence> |
| | | </block> |
| | | |
| | | <block name="'ldclt-delete-threads'"> |
| | | <sequence> |
| | | <call function="'Sleep'"> |
| | | { 'sleepForMilliSeconds' : 120000 } |
| | | </call> |
| | | |
| | | <message> |
| | | 'replication_add_delete: delete threads' |
| | | </message> |
| | | |
| | | <script> |
| | | opt1 = '-e delayedstartup=1' |
| | | opt2 = '-e delete,rdn=\"uid:user.[RNDN(%s;%s;6)]\"' \ |
| | | % (lowRange, highRange) |
| | | opt3 = '-N %s -I 32 -v -q' % ldcltLoop |
| | | opts = '%s %s %s' % (opt1, opt2, opt3) |
| | | </script> |
| | | |
| | | <call function="'ldclt'"> |
| | | { |
| | | 'location' : STAF_CLIENT_HOSTNAME, |
| | | 'dsInstanceHost' : masterHost, |
| | | 'dsInstancePort' : master.getPort(), |
| | | 'dsInstanceDn' : master.getRootDn(), |
| | | 'dsInstancePswd' : master.getRootPwd(), |
| | | 'dsBaseDn' : baseDN, |
| | | 'ldcltOptions' : opts, |
| | | 'outputFile' : 'ldclt_delete-%s.res' % suffix, |
| | | 'outputPath' : ldcltDir |
| | | } |
| | | </call> |
| | | </sequence> |
| | | </block> |
| | | |
| | | <block name="'ldclt-jvm'"> |
| | | <sequence> |
| | | <loop from="1" to="jvmLoop" var="loop"> |
| | | <sequence> |
| | | <message> |
| | | 'LOOP %s out of %s' % (loop, jvmLoop) |
| | | </message> |
| | | |
| | | <message> |
| | | 'replication_add_delete: save jvm information' |
| | | </message> |
| | | |
| | | <call function="'ldapSearchWithScript'"> |
| | | { 'location' : masterHost, |
| | | 'dsPath' : masterPath, |
| | | 'dsInstanceHost' : masterHost, |
| | | 'dsInstancePort' : master.getPort(), |
| | | 'dsInstanceDn' : master.getRootDn(), |
| | | 'dsInstancePswd' : master.getRootPwd(), |
| | | 'dsBaseDN' : 'cn=JVM Memory Usage,cn=monitor', |
| | | 'dsFilter' : 'objectclass=*', |
| | | 'expectedRC' : 'noCheck', |
| | | 'outputFile' : 'jvm_%s_%s.out' % (suffix, loop), |
| | | 'outputPath' : masterDir |
| | | } |
| | | </call> |
| | | |
| | | <if expr="loop != jvmLoop"> |
| | | <call function="'Sleep'"> |
| | | { 'sleepForMilliSeconds' : jvmSleep } |
| | | </call> |
| | | </if> |
| | | |
| | | </sequence> |
| | | </loop> |
| | | </sequence> |
| | | </block> |
| | | </parallel> |
| | | <!--</sequence> |
| | | </timer> |
| | | |
| | | <script>timerRC = RC</script> |
| | | |
| | | <if expr="timerRC == 0"> |
| | | <sequence> |
| | | <message>'Timer exceeds %s' % timerDuration</message> |
| | | <tcstatus result="'fail'"/> |
| | | </sequence> |
| | | </if>--> |
| | | |
| | | <message> |
| | | 'Copy %s/ldclt_add-%s.res from %s to %s on %s' % \ |
| | | (ldcltDir, suffix, STAF_CLIENT_HOSTNAME, logs.sut, STAXServiceMachine) |
| | | </message> |
| | | <call function="'copyFile'"> |
| | | { |
| | | 'location' : STAF_CLIENT_HOSTNAME, |
| | | 'srcfile' : '%s/ldclt_add-%s.res' % (ldcltDir, suffix), |
| | | 'destfile' : '%s/ldclt_add-%s.res' % (logs.sut, suffix), |
| | | 'remotehost' : STAXServiceMachine |
| | | } |
| | | </call> |
| | | |
| | | <message> |
| | | 'Copy %s/ldclt_delete-%s.res from %s to %s on %s' % \ |
| | | (ldcltDir, suffix, STAF_CLIENT_HOSTNAME, logs.sut, STAXServiceMachine) |
| | | </message> |
| | | <call function="'copyFile'"> |
| | | { |
| | | 'location' : STAF_CLIENT_HOSTNAME, |
| | | 'srcfile' : '%s/ldclt_delete-%s.res' % (ldcltDir, suffix), |
| | | 'destfile' : '%s/ldclt_delete-%s.res' % (logs.sut, suffix), |
| | | 'remotehost' : STAXServiceMachine |
| | | } |
| | | </call> |
| | | |
| | | <call function="'testCase_Postamble'"/> |
| | | |
| | | </sequence> |
| | | |
| | | </testcase> |
| | | |
| | | |
| | | |
| | | <testcase name="getTestCaseName('Check server is still running')"> |
| | | |
| | | <sequence> |
| | | |
| | | <call function="'testCase_Preamble'"/> |
| | | |
| | | <paralleliterate var="server" in="_topologyServerList" indexvar="i"> |
| | | <sequence> |
| | | <script> |
| | | serverPath = '%s/%s' % (server.getDir(), OPENDSNAME) |
| | | </script> |
| | | |
| | | <message> |
| | | 'replication_add_delete: Check server is still running on \ |
| | | %s:%s' % (server.getHostname(), server.getPort()) |
| | | </message> |
| | | |
| | | <!-- Modify entry on one of the servers --> |
| | | <call function="'isAlive'"> |
| | | { 'location' : server.getHostname(), |
| | | 'dsPath' : serverPath, |
| | | 'dsInstanceHost' : server.getHostname(), |
| | | 'dsInstancePort' : server.getPort(), |
| | | 'dsInstanceDn' : server.getRootDn(), |
| | | 'dsInstancePswd' : server.getRootPwd(), |
| | | 'noOfLoops' : 10, |
| | | 'noOfMilliSeconds' : 5000 |
| | | } |
| | | </call> |
| | | </sequence> |
| | | </paralleliterate> |
| | | |
| | | <call function="'testCase_Postamble'"/> |
| | | |
| | | </sequence> |
| | | |
| | | </testcase> |
| | | |
| | | |
| | | |
| | | <testcase name="getTestCaseName('Verify replication')"> |
| | | |
| | | <sequence> |
| | | |
| | | <call function="'testCase_Preamble'"/> |
| | | |
| | | <message> |
| | | 'replication_add_delete: Verify replication is still working' |
| | | </message> |
| | | |
| | | <!-- Verify the replication is still working among the servers in |
| | | the topology --> |
| | | <call function="'verifyReplication'"> |
| | | [ _topologyServerList, synchroSuffix ] |
| | | </call> |
| | | |
| | | <call function="'testCase_Postamble'"/> |
| | | |
| | | </sequence> |
| | | |
| | | </testcase> |
| | | |
| | | |
| | | |
| | | <testcase name="getTestCaseName('Verify tree synchronization')"> |
| | | |
| | | <sequence> |
| | | |
| | | <call function="'testCase_Preamble'"/> |
| | | |
| | | <message> |
| | | 'replication_add_delete: Verify the tree synchronization' |
| | | </message> |
| | | |
| | | <!-- Verify the synchronization of the trees among the servers in |
| | | the topology --> |
| | | <call function="'verifyTrees'"> |
| | | [ clientHost, clientPath, master, consumerList, synchroSuffix ] |
| | | </call> |
| | | |
| | | <call function="'testCase_Postamble'"/> |
| | | |
| | | </sequence> |
| | | |
| | | </testcase> |
| | | |
| | | |
| | | |
| | | <testcase name="getTestCaseName('Check replication status')"> |
| | | |
| | | <sequence> |
| | | |
| | | <call function="'testCase_Preamble'"/> |
| | | |
| | | <message> |
| | | 'replication_add_delete: Check replication status' |
| | | </message> |
| | | |
| | | <!-- Verify the synchronization of the trees among the servers in |
| | | the topology --> |
| | | <call function="'getReplicationStatus'"> |
| | | { 'location' : masterHost, |
| | | 'dsPath' : masterPath, |
| | | 'dsInstanceHost' : masterHost, |
| | | 'dsInstanceAdminPort' : master.getAdminPort(), |
| | | 'replicationDnList' : [synchroSuffix] |
| | | } |
| | | </call> |
| | | |
| | | <call function="'testCase_Postamble'"/> |
| | | |
| | | </sequence> |
| | | |
| | | </testcase> |
| | | |
| | | |
| | | |
| | | <import machine="STAF_LOCAL_HOSTNAME" |
| | | file="'%s/../functional-tests/testcases/replication/replication_cleanup.xml' % (TESTS_DIR)"/> |
| | | <call function="'replication_cleanup'"> |
| | | { 'suiteSuffix' : suffix } |
| | | </call> |
| | | |
| | | <call function="'testSuite_Postamble'"/> |
| | | |
| | | </sequence> |
| | | |
| | | </block> |
| | | |
| | | </sequence> |
| | | |
| | | </function> |
| | | |
| | | </stax> |
| New file |
| | |
| | | <?xml version="1.0" encoding="UTF-8" standalone="no"?> |
| | | <!DOCTYPE stax SYSTEM "../../../shared/stax.dtd"> |
| | | <!-- |
| | | ! CDDL HEADER START |
| | | ! |
| | | ! The contents of this file are subject to the terms of the |
| | | ! Common Development and Distribution License, Version 1.0 only |
| | | ! (the "License"). You may not use this file except in compliance |
| | | ! with the License. |
| | | ! |
| | | ! You can obtain a copy of the license at |
| | | ! trunk/opends/resource/legal-notices/OpenDS.LICENSE |
| | | ! or https://OpenDS.dev.java.net/OpenDS.LICENSE. |
| | | ! See the License for the specific language governing permissions |
| | | ! and limitations under the License. |
| | | ! |
| | | ! When distributing Covered Code, include this CDDL HEADER in each |
| | | ! file and include the License file at |
| | | ! trunk/opends/resource/legal-notices/OpenDS.LICENSE. If applicable, |
| | | ! add the following below this CDDL HEADER, with the fields enclosed |
| | | ! by brackets "[]" replaced with your own identifying information: |
| | | ! Portions Copyright [yyyy] [name of copyright owner] |
| | | ! |
| | | ! CDDL HEADER END |
| | | ! |
| | | ! Copyright 2009 Sun Microsystems, Inc. |
| | | ! --> |
| | | <stax> |
| | | |
| | | <defaultcall function="replication_add_delete_multiple"/> |
| | | |
| | | <function name="replication_add_delete_multiple"> |
| | | |
| | | <sequence> |
| | | |
| | | <block name="'replication-add-delete-multiple'"> |
| | | |
| | | <sequence> |
| | | |
| | | <script> |
| | | if not CurrentTestPath.has_key('group'): |
| | | CurrentTestPath['group']='replication' |
| | | CurrentTestPath['suite']=STAXCurrentBlock |
| | | </script> |
| | | |
| | | <call function="'testSuite_Preamble'"/> |
| | | |
| | | <import machine="STAF_LOCAL_HOSTNAME" |
| | | file="'%s/../functional-tests/testcases/replication/replication_setup.xml' % (TESTS_DIR)"/> |
| | | <call function="'replication_setup'"/> |
| | | |
| | | <script> |
| | | ldcltLoop = testsDuration / 10 |
| | | lowRange = 100000 |
| | | highRange = lowRange + numberOfEntries |
| | | jvmLoop = testsDuration / 1800 + 1 |
| | | jvmSleep = 1800000 |
| | | baseDN = 'ou=People,%s' % synchroSuffix |
| | | ldcltDir = '%s/ldclt_dir' % TMPDIR |
| | | ldcltTemplate = '%s/ldclt_add.template' % ldcltDir |
| | | |
| | | server1Host = server1.getHostname() |
| | | server1Path = '%s/%s' % (server1.getDir(),OPENDSNAME) |
| | | server1Dir = server1.getDir() |
| | | server2Host = server2.getHostname() |
| | | server2Path = '%s/%s' % (server2.getDir(),OPENDSNAME) |
| | | server2Dir = server2.getDir() |
| | | |
| | | suffix = 'add_delete_multiple' |
| | | </script> |
| | | |
| | | |
| | | <testcase name="getTestCaseName('Preamble')"> |
| | | |
| | | <sequence> |
| | | |
| | | <call function="'testCase_Preamble'"/> |
| | | |
| | | |
| | | <message> |
| | | 'replication_add_delete_multiple: Delete %s on %s' \ |
| | | % (ldcltDir, STAF_CLIENT_HOSTNAME) |
| | | </message> |
| | | |
| | | <call function="'deleteFolder'"> |
| | | { |
| | | 'location' : STAF_CLIENT_HOSTNAME , |
| | | 'foldername' : ldcltDir |
| | | } |
| | | </call> |
| | | |
| | | <message> |
| | | 'replication_add_delete_multiple: Create %s on %s' \ |
| | | % (ldcltDir, STAF_CLIENT_HOSTNAME) |
| | | </message> |
| | | |
| | | <call function="'createFolder'"> |
| | | { |
| | | 'location' : STAF_CLIENT_HOSTNAME , |
| | | 'foldername' : ldcltDir |
| | | } |
| | | </call> |
| | | |
| | | <message> |
| | | 'replication_add_delete_multiple: Create ldclt template' |
| | | </message> |
| | | |
| | | <call function="'MakeALdcltTemplate'"> |
| | | { |
| | | 'templateFile' : ldcltTemplate , |
| | | 'templateLocation' : STAF_CLIENT_HOSTNAME |
| | | } |
| | | </call> |
| | | |
| | | <call function="'testCase_Postamble'"/> |
| | | |
| | | </sequence> |
| | | |
| | | </testcase> |
| | | |
| | | |
| | | <testcase name="getTestCaseName('Run ldclt clients')"> |
| | | |
| | | <sequence> |
| | | |
| | | <call function="'testCase_Preamble'"/> |
| | | |
| | | <message> |
| | | 'replication_add_delete_multiple: Run ldclt add' |
| | | </message> |
| | | |
| | | <!--<timer duration="timerDuration"> |
| | | <sequence>--> |
| | | <parallel> |
| | | <block name="'ldclt-add-threads-server1'"> |
| | | <sequence> |
| | | |
| | | <message> |
| | | 'replication_add_delete_multiple: add threads on %s:%s' \ |
| | | % (server1Host, server1.getPort()) |
| | | </message> |
| | | |
| | | <script> |
| | | opt1 = '-e delayedstartup=1 -e object=%s' % ldcltTemplate |
| | | opt2 = '-e "rdn=uid:user.[C=INCRN(%s;%s;6)]"' \ |
| | | % (lowRange, highRange) |
| | | opt3 = '-e add -N %s -I 68 -v -q' % ldcltLoop |
| | | opts = '%s %s %s' % (opt1, opt2, opt3) |
| | | </script> |
| | | |
| | | <call function="'ldclt'"> |
| | | { |
| | | 'location' : STAF_CLIENT_HOSTNAME, |
| | | 'dsInstanceHost' : server1Host, |
| | | 'dsInstancePort' : server1.getPort(), |
| | | 'dsInstanceDn' : server1.getRootDn(), |
| | | 'dsInstancePswd' : server1.getRootPwd(), |
| | | 'dsBaseDn' : baseDN, |
| | | 'ldcltOptions' : opts, |
| | | 'outputFile' : 'ldclt_add-%s_1.res' % suffix, |
| | | 'outputPath' : ldcltDir |
| | | } |
| | | </call> |
| | | |
| | | </sequence> |
| | | </block> |
| | | |
| | | <block name="'ldclt-delete-threads-server2'"> |
| | | <sequence> |
| | | <call function="'Sleep'"> |
| | | { 'sleepForMilliSeconds' : 120000 } |
| | | </call> |
| | | |
| | | <message> |
| | | 'replication_add_delete_multiple: delete threads on %s:%s' \ |
| | | % (server2Host, server2.getPort()) |
| | | </message> |
| | | |
| | | <script> |
| | | opt1 = '-e delayedstartup=1' |
| | | opt2 = '-e delete,rdn=\"uid:user.[RNDN(%s;%s;6)]\"' \ |
| | | % (lowRange, highRange) |
| | | opt3 = '-N %s -I 32 -v -q' % ldcltLoop |
| | | opts = '%s %s %s' % (opt1, opt2, opt3) |
| | | </script> |
| | | |
| | | <call function="'ldclt'"> |
| | | { |
| | | 'location' : STAF_CLIENT_HOSTNAME, |
| | | 'dsInstanceHost' : server2Host, |
| | | 'dsInstancePort' : server2.getPort(), |
| | | 'dsInstanceDn' : server2.getRootDn(), |
| | | 'dsInstancePswd' : server2.getRootPwd(), |
| | | 'dsBaseDn' : baseDN, |
| | | 'ldcltOptions' : opts, |
| | | 'outputFile' : 'ldclt_delete-%s_2.res' % suffix, |
| | | 'outputPath' : ldcltDir |
| | | } |
| | | </call> |
| | | </sequence> |
| | | </block> |
| | | |
| | | <block name="'ldclt-jvm'"> |
| | | <sequence> |
| | | <loop from="1" to="jvmLoop" var="loop"> |
| | | <sequence> |
| | | <message> |
| | | 'LOOP %s out of %s' % (loop, jvmLoop) |
| | | </message> |
| | | |
| | | <message> |
| | | 'replication_add_delete_multiple: save jvm information' |
| | | </message> |
| | | |
| | | <call function="'ldapSearchWithScript'"> |
| | | { 'location' : server1Host, |
| | | 'dsPath' : server1Path, |
| | | 'dsInstanceHost' : server1Host, |
| | | 'dsInstancePort' : server1.getPort(), |
| | | 'dsInstanceDn' : server1.getRootDn(), |
| | | 'dsInstancePswd' : server1.getRootPwd(), |
| | | 'dsBaseDN' : 'cn=JVM Memory Usage,cn=monitor', |
| | | 'dsFilter' : 'objectclass=*', |
| | | 'expectedRC' : 'noCheck', |
| | | 'outputFile' : 'jvm_%s_%s.out' \ |
| | | % (suffix, loop), |
| | | 'outputPath' : server1Dir |
| | | } |
| | | </call> |
| | | |
| | | <call function="'ldapSearchWithScript'"> |
| | | { 'location' : server2Host, |
| | | 'dsPath' : server2Path, |
| | | 'dsInstanceHost' : server2Host, |
| | | 'dsInstancePort' : server2.getPort(), |
| | | 'dsInstanceDn' : server2.getRootDn(), |
| | | 'dsInstancePswd' : server2.getRootPwd(), |
| | | 'dsBaseDN' : 'cn=JVM Memory Usage,cn=monitor', |
| | | 'dsFilter' : 'objectclass=*', |
| | | 'expectedRC' : 'noCheck', |
| | | 'outputFile' : 'jvm_%s_%s.out' \ |
| | | % (suffix, loop), |
| | | 'outputPath' : server2Dir |
| | | } |
| | | </call> |
| | | |
| | | <if expr="loop != jvmLoop"> |
| | | <call function="'Sleep'"> |
| | | { 'sleepForMilliSeconds' : jvmSleep } |
| | | </call> |
| | | </if> |
| | | |
| | | </sequence> |
| | | </loop> |
| | | </sequence> |
| | | </block> |
| | | </parallel> |
| | | <!--</sequence> |
| | | </timer> |
| | | |
| | | <script>timerRC = RC</script> |
| | | |
| | | <if expr="timerRC == 0"> |
| | | <sequence> |
| | | <message>'Timer exceeds %s' % timerDuration</message> |
| | | <tcstatus result="'fail'"/> |
| | | </sequence> |
| | | </if>--> |
| | | |
| | | <message> |
| | | 'Copy %s/ldclt_add-%s_1.res from %s to %s on %s' % \ |
| | | (ldcltDir, suffix, STAF_CLIENT_HOSTNAME, logs.sut, STAXServiceMachine) |
| | | </message> |
| | | <call function="'copyFile'"> |
| | | { |
| | | 'location' : STAF_CLIENT_HOSTNAME, |
| | | 'srcfile' : '%s/ldclt_add-%s_1.res' % (ldcltDir, suffix), |
| | | 'destfile' : '%s/ldclt_add-%s_1.res' % (logs.sut, suffix), |
| | | 'remotehost' : STAXServiceMachine |
| | | } |
| | | </call> |
| | | |
| | | <message> |
| | | 'Copy %s/ldclt_delete-%s_2.res from %s to %s on %s' % \ |
| | | (ldcltDir, suffix, STAF_CLIENT_HOSTNAME, logs.sut, STAXServiceMachine) |
| | | </message> |
| | | <call function="'copyFile'"> |
| | | { |
| | | 'location' : STAF_CLIENT_HOSTNAME, |
| | | 'srcfile' : '%s/ldclt_delete-%s_2.res' % (ldcltDir, suffix), |
| | | 'destfile' : '%s/ldclt_delete-%s_2.res' % (logs.sut, suffix), |
| | | 'remotehost' : STAXServiceMachine |
| | | } |
| | | </call> |
| | | |
| | | <call function="'testCase_Postamble'"/> |
| | | |
| | | </sequence> |
| | | |
| | | </testcase> |
| | | |
| | | |
| | | |
| | | <testcase name="getTestCaseName('Check server is still running')"> |
| | | |
| | | <sequence> |
| | | |
| | | <call function="'testCase_Preamble'"/> |
| | | |
| | | <paralleliterate var="server" in="_topologyServerList" indexvar="i"> |
| | | <sequence> |
| | | <script> |
| | | serverPath = '%s/%s' % (server.getDir(), OPENDSNAME) |
| | | </script> |
| | | |
| | | <message> |
| | | 'replication_add_delete_multiple: Check server is still running on \ |
| | | %s:%s' % (server.getHostname(), server.getPort()) |
| | | </message> |
| | | |
| | | <!-- Modify entry on one of the servers --> |
| | | <call function="'isAlive'"> |
| | | { 'location' : server.getHostname(), |
| | | 'dsPath' : serverPath, |
| | | 'dsInstanceHost' : server.getHostname(), |
| | | 'dsInstancePort' : server.getPort(), |
| | | 'dsInstanceDn' : server.getRootDn(), |
| | | 'dsInstancePswd' : server.getRootPwd(), |
| | | 'noOfLoops' : 10, |
| | | 'noOfMilliSeconds' : 5000 |
| | | } |
| | | </call> |
| | | </sequence> |
| | | </paralleliterate> |
| | | |
| | | <call function="'testCase_Postamble'"/> |
| | | |
| | | </sequence> |
| | | |
| | | </testcase> |
| | | |
| | | |
| | | |
| | | <testcase name="getTestCaseName('Verify replication')"> |
| | | |
| | | <sequence> |
| | | |
| | | <call function="'testCase_Preamble'"/> |
| | | |
| | | <message> |
| | | 'replication_add_delete_multiple: Verify replication is still working' |
| | | </message> |
| | | |
| | | <!-- Verify the replication is still working among the servers in |
| | | the topology --> |
| | | <call function="'verifyReplication'"> |
| | | [ _topologyServerList, synchroSuffix ] |
| | | </call> |
| | | |
| | | <call function="'testCase_Postamble'"/> |
| | | |
| | | </sequence> |
| | | |
| | | </testcase> |
| | | |
| | | |
| | | |
| | | <testcase name="getTestCaseName('Verify tree synchronization')"> |
| | | |
| | | <sequence> |
| | | |
| | | <call function="'testCase_Preamble'"/> |
| | | |
| | | <message> |
| | | 'replication_add_delete_multiple: Verify the tree synchronization' |
| | | </message> |
| | | |
| | | <!-- Verify the synchronization of the trees among the servers in |
| | | the topology --> |
| | | <call function="'verifyTrees'"> |
| | | [ clientHost, clientPath, master, consumerList, synchroSuffix ] |
| | | </call> |
| | | |
| | | <call function="'testCase_Postamble'"/> |
| | | |
| | | </sequence> |
| | | |
| | | </testcase> |
| | | |
| | | |
| | | |
| | | <testcase name="getTestCaseName('Check replication status')"> |
| | | |
| | | <sequence> |
| | | |
| | | <call function="'testCase_Preamble'"/> |
| | | |
| | | <message> |
| | | 'replication_add_delete_multiple: Check replication status' |
| | | </message> |
| | | |
| | | <!-- Verify the synchronization of the trees among the servers in |
| | | the topology --> |
| | | <call function="'getReplicationStatus'"> |
| | | { 'location' : masterHost, |
| | | 'dsPath' : masterPath, |
| | | 'dsInstanceHost' : masterHost, |
| | | 'dsInstanceAdminPort' : master.getAdminPort(), |
| | | 'replicationDnList' : [synchroSuffix] |
| | | } |
| | | </call> |
| | | |
| | | <call function="'testCase_Postamble'"/> |
| | | |
| | | </sequence> |
| | | |
| | | </testcase> |
| | | |
| | | |
| | | <import machine="STAF_LOCAL_HOSTNAME" |
| | | file="'%s/../functional-tests/testcases/replication/replication_cleanup.xml' % (TESTS_DIR)"/> |
| | | <call function="'replication_cleanup'"> |
| | | { 'suiteSuffix' : suffix } |
| | | </call> |
| | | |
| | | <call function="'testSuite_Postamble'"/> |
| | | |
| | | </sequence> |
| | | |
| | | </block> |
| | | |
| | | </sequence> |
| | | |
| | | </function> |
| | | |
| | | </stax> |
| New file |
| | |
| | | <?xml version="1.0" encoding="UTF-8" standalone="no"?> |
| | | <!DOCTYPE stax SYSTEM "../../../shared/stax.dtd"> |
| | | <!-- |
| | | ! CDDL HEADER START |
| | | ! |
| | | ! The contents of this file are subject to the terms of the |
| | | ! Common Development and Distribution License, Version 1.0 only |
| | | ! (the "License"). You may not use this file except in compliance |
| | | ! with the License. |
| | | ! |
| | | ! You can obtain a copy of the license at |
| | | ! trunk/opends/resource/legal-notices/OpenDS.LICENSE |
| | | ! or https://OpenDS.dev.java.net/OpenDS.LICENSE. |
| | | ! See the License for the specific language governing permissions |
| | | ! and limitations under the License. |
| | | ! |
| | | ! When distributing Covered Code, include this CDDL HEADER in each |
| | | ! file and include the License file at |
| | | ! trunk/opends/resource/legal-notices/OpenDS.LICENSE. If applicable, |
| | | ! add the following below this CDDL HEADER, with the fields enclosed |
| | | ! by brackets "[]" replaced with your own identifying information: |
| | | ! Portions Copyright [yyyy] [name of copyright owner] |
| | | ! |
| | | ! CDDL HEADER END |
| | | ! |
| | | ! Copyright 2009 Sun Microsystems, Inc. |
| | | ! --> |
| | | <stax> |
| | | |
| | | <defaultcall function="replication_add_mod_delete"/> |
| | | |
| | | <function name="replication_add_mod_delete"> |
| | | |
| | | <sequence> |
| | | |
| | | <block name="'replication-add-mod-delete'"> |
| | | |
| | | <sequence> |
| | | |
| | | <script> |
| | | if not CurrentTestPath.has_key('group'): |
| | | CurrentTestPath['group']='replication' |
| | | CurrentTestPath['suite']=STAXCurrentBlock |
| | | </script> |
| | | |
| | | <call function="'testSuite_Preamble'"/> |
| | | |
| | | <import machine="STAF_LOCAL_HOSTNAME" |
| | | file="'%s/../functional-tests/testcases/replication/replication_setup.xml' % (TESTS_DIR)"/> |
| | | <call function="'replication_setup'"/> |
| | | |
| | | <script> |
| | | ldcltLoop = testsDuration / 10 |
| | | lowRange = 100000 |
| | | highRange = lowRange + numberOfEntries |
| | | jvmLoop = testsDuration / 1800 + 1 |
| | | jvmSleep = 1800000 |
| | | baseDN = 'ou=People,%s' % synchroSuffix |
| | | ldcltDir = '%s/ldclt_dir' % TMPDIR |
| | | ldcltTemplate = '%s/ldclt_add.template' % ldcltDir |
| | | masterDir = '%s/..' % masterPath |
| | | |
| | | suffix = 'add_mod_delete' |
| | | </script> |
| | | |
| | | |
| | | <testcase name="getTestCaseName('Preamble')"> |
| | | |
| | | <sequence> |
| | | |
| | | <call function="'testCase_Preamble'"/> |
| | | |
| | | |
| | | <message> |
| | | 'replication_add_mod_delete: Delete %s on %s' \ |
| | | % (ldcltDir, STAF_CLIENT_HOSTNAME) |
| | | </message> |
| | | |
| | | <call function="'deleteFolder'"> |
| | | { |
| | | 'location' : STAF_CLIENT_HOSTNAME , |
| | | 'foldername' : ldcltDir |
| | | } |
| | | </call> |
| | | |
| | | <message> |
| | | 'replication_add_mod_delete: Create %s on %s' \ |
| | | % (ldcltDir, STAF_CLIENT_HOSTNAME) |
| | | </message> |
| | | |
| | | <call function="'createFolder'"> |
| | | { |
| | | 'location' : STAF_CLIENT_HOSTNAME , |
| | | 'foldername' : ldcltDir |
| | | } |
| | | </call> |
| | | |
| | | <message> |
| | | 'replication_add_mod_delete: Create ldclt template' |
| | | </message> |
| | | |
| | | <call function="'MakeALdcltTemplate'"> |
| | | { |
| | | 'templateFile' : ldcltTemplate , |
| | | 'templateLocation' : STAF_CLIENT_HOSTNAME |
| | | } |
| | | </call> |
| | | |
| | | <call function="'testCase_Postamble'"/> |
| | | |
| | | </sequence> |
| | | |
| | | </testcase> |
| | | |
| | | |
| | | <testcase name="getTestCaseName('Run ldclt clients')"> |
| | | |
| | | <sequence> |
| | | |
| | | <call function="'testCase_Preamble'"/> |
| | | |
| | | <message> |
| | | 'replication_add_mod_delete: Run ldclt add' |
| | | </message> |
| | | |
| | | <!--<timer duration="timerDuration"> |
| | | <sequence>--> |
| | | <parallel> |
| | | <block name="'ldclt-add-threads'"> |
| | | <sequence> |
| | | |
| | | <message> |
| | | 'replication_add_mod_delete: add threads' |
| | | </message> |
| | | |
| | | <script> |
| | | opt1 = '-e delayedstartup=1 -e object=%s' % ldcltTemplate |
| | | opt2 = '-e "rdn=uid:user.[C=INCRN(%s;%s;6)]"' \ |
| | | % (lowRange, highRange) |
| | | opt3 = '-e add -N %s -I 68 -v -q' % ldcltLoop |
| | | opts = '%s %s %s' % (opt1, opt2, opt3) |
| | | </script> |
| | | |
| | | <call function="'ldclt'"> |
| | | { |
| | | 'location' : STAF_CLIENT_HOSTNAME, |
| | | 'dsInstanceHost' : masterHost, |
| | | 'dsInstancePort' : master.getPort(), |
| | | 'dsInstanceDn' : master.getRootDn(), |
| | | 'dsInstancePswd' : master.getRootPwd(), |
| | | 'dsBaseDn' : baseDN, |
| | | 'ldcltOptions' : opts, |
| | | 'outputFile' : 'ldclt_add-%.res' % suffix, |
| | | 'outputPath' : ldcltDir |
| | | } |
| | | </call> |
| | | |
| | | </sequence> |
| | | </block> |
| | | |
| | | <block name="'ldclt-modify-threads'"> |
| | | <sequence> |
| | | <call function="'Sleep'"> |
| | | { 'sleepForMilliSeconds' : 120000 } |
| | | </call> |
| | | |
| | | <message> |
| | | 'replication_add_mod_delete: modify threads' |
| | | </message> |
| | | |
| | | <script> |
| | | opt1 = '-e delayedstartup=1' |
| | | opt2 = '-e rdn=\"uid:user.[RNDN(%s;%s;6)]\"' \ |
| | | % (lowRange, highRange) |
| | | opt3 = '-e attreplace=\"description: random modify XXXXXX\"' |
| | | opt4 = '-N %s -I 32 -v -q' % ldcltLoop |
| | | opts = '%s %s %s %s' % (opt1, opt2, opt3, opt4) |
| | | </script> |
| | | |
| | | <call function="'ldclt'"> |
| | | { 'location' : STAF_CLIENT_HOSTNAME, |
| | | 'dsInstanceHost' : masterHost, |
| | | 'dsInstancePort' : master.getPort(), |
| | | 'dsInstanceDn' : master.getRootDn(), |
| | | 'dsInstancePswd' : master.getRootPwd(), |
| | | 'dsBaseDn' : baseDN, |
| | | 'ldcltOptions' : opts, |
| | | 'outputFile' : 'ldclt_modify-%s.res' % suffix, |
| | | 'outputPath' : ldcltDir |
| | | } |
| | | </call> |
| | | |
| | | </sequence> |
| | | </block> |
| | | |
| | | <block name="'ldclt-delete-threads'"> |
| | | <sequence> |
| | | <call function="'Sleep'"> |
| | | { 'sleepForMilliSeconds' : 240000 } |
| | | </call> |
| | | |
| | | <message> |
| | | 'replication_add_mod_delete: delete threads' |
| | | </message> |
| | | |
| | | <script> |
| | | opt1 = '-e delayedstartup=1' |
| | | opt2 = '-e delete,rdn=\"uid:user.[RNDN(%s;%s;6)]\"' \ |
| | | % (lowRange, highRange) |
| | | opt3 = '-N %s -I 32 -v -q' % ldcltLoop |
| | | opts = '%s %s %s' % (opt1, opt2, opt3) |
| | | </script> |
| | | |
| | | <call function="'ldclt'"> |
| | | { |
| | | 'location' : STAF_CLIENT_HOSTNAME, |
| | | 'dsInstanceHost' : masterHost, |
| | | 'dsInstancePort' : master.getPort(), |
| | | 'dsInstanceDn' : master.getRootDn(), |
| | | 'dsInstancePswd' : master.getRootPwd(), |
| | | 'dsBaseDn' : baseDN, |
| | | 'ldcltOptions' : opts, |
| | | 'outputFile' : 'ldclt_delete-%s.res' % suffix, |
| | | 'outputPath' : ldcltDir |
| | | } |
| | | </call> |
| | | </sequence> |
| | | </block> |
| | | |
| | | <block name="'ldclt-jvm'"> |
| | | <sequence> |
| | | <loop from="1" to="jvmLoop" var="loop"> |
| | | <sequence> |
| | | <message> |
| | | 'LOOP %s out of %s' % (loop, jvmLoop) |
| | | </message> |
| | | |
| | | <message> |
| | | 'replication_add_mod_delete: save jvm information' |
| | | </message> |
| | | |
| | | <call function="'ldapSearchWithScript'"> |
| | | { 'location' : masterHost, |
| | | 'dsPath' : masterPath, |
| | | 'dsInstanceHost' : masterHost, |
| | | 'dsInstancePort' : master.getPort(), |
| | | 'dsInstanceDn' : master.getRootDn(), |
| | | 'dsInstancePswd' : master.getRootPwd(), |
| | | 'dsBaseDN' : 'cn=JVM Memory Usage,cn=monitor', |
| | | 'dsFilter' : 'objectclass=*', |
| | | 'expectedRC' : 'noCheck', |
| | | 'outputFile' : 'jvm_%s_%s.out' \ |
| | | % (suffix, loop), |
| | | 'outputPath' : masterDir |
| | | } |
| | | </call> |
| | | |
| | | <if expr="loop != jvmLoop"> |
| | | <call function="'Sleep'"> |
| | | { 'sleepForMilliSeconds' : jvmSleep } |
| | | </call> |
| | | </if> |
| | | |
| | | </sequence> |
| | | </loop> |
| | | </sequence> |
| | | </block> |
| | | </parallel> |
| | | <!--</sequence> |
| | | </timer> |
| | | |
| | | <script>timerRC = RC</script> |
| | | |
| | | <if expr="timerRC == 0"> |
| | | <sequence> |
| | | <message>'Timer exceeds %s' % timerDuration</message> |
| | | <tcstatus result="'fail'"/> |
| | | </sequence> |
| | | </if>--> |
| | | |
| | | <message> |
| | | 'Copy %s/ldclt_add-%s.res from %s to %s on %s' % \ |
| | | (ldcltDir, suffix, STAF_CLIENT_HOSTNAME, logs.sut, STAXServiceMachine) |
| | | </message> |
| | | <call function="'copyFile'"> |
| | | { |
| | | 'location' : STAF_CLIENT_HOSTNAME, |
| | | 'srcfile' : '%s/ldclt_add-%s.res' % (ldcltDir, suffix), |
| | | 'destfile' : '%s/ldclt_add-%s.res' % (logs.sut, suffix), |
| | | 'remotehost' : STAXServiceMachine |
| | | } |
| | | </call> |
| | | |
| | | <message> |
| | | 'Copy %s/ldclt_modify-%s.res from %s to %s on %s' % \ |
| | | (ldcltDir, suffix, STAF_CLIENT_HOSTNAME, logs.sut, STAXServiceMachine) |
| | | </message> |
| | | <call function="'copyFile'"> |
| | | { |
| | | 'location' : STAF_CLIENT_HOSTNAME, |
| | | 'srcfile' : '%s/ldclt_modify-%s.res' % (ldcltDir, suffix), |
| | | 'destfile' : '%s/ldclt_modify-%s.res' % (logs.sut, suffix), |
| | | 'remotehost' : STAXServiceMachine |
| | | } |
| | | </call> |
| | | |
| | | <message> |
| | | 'Copy %s/ldclt_delete-%s.res from %s to %s on %s' % \ |
| | | (ldcltDir, suffix, STAF_CLIENT_HOSTNAME, logs.sut, STAXServiceMachine) |
| | | </message> |
| | | <call function="'copyFile'"> |
| | | { |
| | | 'location' : STAF_CLIENT_HOSTNAME, |
| | | 'srcfile' : '%s/ldclt_delete-%s.res' % (ldcltDir, suffix), |
| | | 'destfile' : '%s/ldclt_delete-%s.res' % (logs.sut, suffix), |
| | | 'remotehost' : STAXServiceMachine |
| | | } |
| | | </call> |
| | | |
| | | <call function="'testCase_Postamble'"/> |
| | | |
| | | </sequence> |
| | | |
| | | </testcase> |
| | | |
| | | |
| | | |
| | | <testcase name="getTestCaseName('Check server is still running')"> |
| | | |
| | | <sequence> |
| | | |
| | | <call function="'testCase_Preamble'"/> |
| | | |
| | | <paralleliterate var="server" in="_topologyServerList" indexvar="i"> |
| | | <sequence> |
| | | <script> |
| | | serverPath = '%s/%s' % (server.getDir(), OPENDSNAME) |
| | | </script> |
| | | |
| | | <message> |
| | | 'replication_add_mod_delete: Check server is still running on \ |
| | | %s:%s' % (server.getHostname(), server.getPort()) |
| | | </message> |
| | | |
| | | <!-- Modify entry on one of the servers --> |
| | | <call function="'isAlive'"> |
| | | { 'location' : server.getHostname(), |
| | | 'dsPath' : serverPath, |
| | | 'dsInstanceHost' : server.getHostname(), |
| | | 'dsInstancePort' : server.getPort(), |
| | | 'dsInstanceDn' : server.getRootDn(), |
| | | 'dsInstancePswd' : server.getRootPwd(), |
| | | 'noOfLoops' : 10, |
| | | 'noOfMilliSeconds' : 5000 |
| | | } |
| | | </call> |
| | | </sequence> |
| | | </paralleliterate> |
| | | |
| | | <call function="'testCase_Postamble'"/> |
| | | |
| | | </sequence> |
| | | |
| | | </testcase> |
| | | |
| | | |
| | | |
| | | <testcase name="getTestCaseName('Verify replication')"> |
| | | |
| | | <sequence> |
| | | |
| | | <call function="'testCase_Preamble'"/> |
| | | |
| | | <message> |
| | | 'replication_add_mod_delete: Verify replication is still working' |
| | | </message> |
| | | |
| | | <!-- Verify the replication is still working among the servers in |
| | | the topology --> |
| | | <call function="'verifyReplication'"> |
| | | [ _topologyServerList, synchroSuffix ] |
| | | </call> |
| | | |
| | | <call function="'testCase_Postamble'"/> |
| | | |
| | | </sequence> |
| | | |
| | | </testcase> |
| | | |
| | | |
| | | |
| | | <testcase name="getTestCaseName('Verify tree synchronization')"> |
| | | |
| | | <sequence> |
| | | |
| | | <call function="'testCase_Preamble'"/> |
| | | |
| | | <message> |
| | | 'replication_add_mod_delete: Verify the tree synchronization' |
| | | </message> |
| | | |
| | | <!-- Verify the synchronization of the trees among the servers in |
| | | the topology --> |
| | | <call function="'verifyTrees'"> |
| | | [ clientHost, clientPath, master, consumerList, synchroSuffix ] |
| | | </call> |
| | | |
| | | <call function="'testCase_Postamble'"/> |
| | | |
| | | </sequence> |
| | | |
| | | </testcase> |
| | | |
| | | |
| | | |
| | | <testcase name="getTestCaseName('Check replication status')"> |
| | | |
| | | <sequence> |
| | | |
| | | <call function="'testCase_Preamble'"/> |
| | | |
| | | <message> |
| | | 'replication_add_mod_delete: Check replication status' |
| | | </message> |
| | | |
| | | <!-- Verify the synchronization of the trees among the servers in |
| | | the topology --> |
| | | <call function="'getReplicationStatus'"> |
| | | { 'location' : masterHost, |
| | | 'dsPath' : masterPath, |
| | | 'dsInstanceHost' : masterHost, |
| | | 'dsInstanceAdminPort' : master.getAdminPort(), |
| | | 'replicationDnList' : [synchroSuffix] |
| | | } |
| | | </call> |
| | | |
| | | <call function="'testCase_Postamble'"/> |
| | | |
| | | </sequence> |
| | | |
| | | </testcase> |
| | | |
| | | |
| | | <import machine="STAF_LOCAL_HOSTNAME" |
| | | file="'%s/../functional-tests/testcases/replication/replication_cleanup.xml' % (TESTS_DIR)"/> |
| | | <call function="'replication_cleanup'"> |
| | | { 'suiteSuffix' : suffix } |
| | | </call> |
| | | |
| | | <call function="'testSuite_Postamble'"/> |
| | | |
| | | </sequence> |
| | | |
| | | </block> |
| | | |
| | | </sequence> |
| | | |
| | | </function> |
| | | |
| | | </stax> |
| New file |
| | |
| | | <?xml version="1.0" encoding="UTF-8" standalone="no"?> |
| | | <!DOCTYPE stax SYSTEM "../../../shared/stax.dtd"> |
| | | <!-- |
| | | ! CDDL HEADER START |
| | | ! |
| | | ! The contents of this file are subject to the terms of the |
| | | ! Common Development and Distribution License, Version 1.0 only |
| | | ! (the "License"). You may not use this file except in compliance |
| | | ! with the License. |
| | | ! |
| | | ! You can obtain a copy of the license at |
| | | ! trunk/opends/resource/legal-notices/OpenDS.LICENSE |
| | | ! or https://OpenDS.dev.java.net/OpenDS.LICENSE. |
| | | ! See the License for the specific language governing permissions |
| | | ! and limitations under the License. |
| | | ! |
| | | ! When distributing Covered Code, include this CDDL HEADER in each |
| | | ! file and include the License file at |
| | | ! trunk/opends/resource/legal-notices/OpenDS.LICENSE. If applicable, |
| | | ! add the following below this CDDL HEADER, with the fields enclosed |
| | | ! by brackets "[]" replaced with your own identifying information: |
| | | ! Portions Copyright [yyyy] [name of copyright owner] |
| | | ! |
| | | ! CDDL HEADER END |
| | | ! |
| | | ! Copyright 2009 Sun Microsystems, Inc. |
| | | ! --> |
| | | <stax> |
| | | |
| | | <defaultcall function="replication_add_mod_delete_search"/> |
| | | |
| | | <function name="replication_add_mod_delete_search"> |
| | | |
| | | <sequence> |
| | | |
| | | <block name="'replication-add-mod-delete-search'"> |
| | | |
| | | <sequence> |
| | | |
| | | <script> |
| | | if not CurrentTestPath.has_key('group'): |
| | | CurrentTestPath['group']='replication' |
| | | CurrentTestPath['suite']=STAXCurrentBlock |
| | | </script> |
| | | |
| | | <call function="'testSuite_Preamble'"/> |
| | | |
| | | <import machine="STAF_LOCAL_HOSTNAME" |
| | | file="'%s/../functional-tests/testcases/replication/replication_setup.xml' % (TESTS_DIR)"/> |
| | | <call function="'replication_setup'"/> |
| | | |
| | | <script> |
| | | ldcltLoop = testsDuration / 10 |
| | | lowRange = 100000 |
| | | highRange = lowRange + numberOfEntries |
| | | jvmLoop = testsDuration / 1800 + 1 |
| | | jvmSleep = 1800000 |
| | | baseDN = 'ou=People,%s' % synchroSuffix |
| | | ldcltDir = '%s/ldclt_dir' % TMPDIR |
| | | ldcltTemplate = '%s/ldclt_add.template' % ldcltDir |
| | | masterDir = '%s/..' % masterPath |
| | | |
| | | suffix = 'add_mod_delete_search' |
| | | </script> |
| | | |
| | | |
| | | <testcase name="getTestCaseName('Preamble')"> |
| | | |
| | | <sequence> |
| | | |
| | | <call function="'testCase_Preamble'"/> |
| | | |
| | | |
| | | <message> |
| | | 'replication_add_mod_delete_search: Delete %s on %s' \ |
| | | % (ldcltDir, STAF_CLIENT_HOSTNAME) |
| | | </message> |
| | | |
| | | <call function="'deleteFolder'"> |
| | | { |
| | | 'location' : STAF_CLIENT_HOSTNAME , |
| | | 'foldername' : ldcltDir |
| | | } |
| | | </call> |
| | | |
| | | <message> |
| | | 'replication_add_mod_delete_search: Create %s on %s' \ |
| | | % (ldcltDir, STAF_CLIENT_HOSTNAME) |
| | | </message> |
| | | |
| | | <call function="'createFolder'"> |
| | | { |
| | | 'location' : STAF_CLIENT_HOSTNAME , |
| | | 'foldername' : ldcltDir |
| | | } |
| | | </call> |
| | | |
| | | <message> |
| | | 'replication_add_mod_delete_search: Create ldclt template' |
| | | </message> |
| | | |
| | | <call function="'MakeALdcltTemplate'"> |
| | | { |
| | | 'templateFile' : ldcltTemplate , |
| | | 'templateLocation' : STAF_CLIENT_HOSTNAME |
| | | } |
| | | </call> |
| | | |
| | | <call function="'testCase_Postamble'"/> |
| | | |
| | | </sequence> |
| | | |
| | | </testcase> |
| | | |
| | | |
| | | <testcase name="getTestCaseName('Run ldclt clients')"> |
| | | |
| | | <sequence> |
| | | |
| | | <call function="'testCase_Preamble'"/> |
| | | |
| | | <message> |
| | | 'replication_add_mod_delete_search: Run ldclt add' |
| | | </message> |
| | | |
| | | <!--<timer duration="timerDuration"> |
| | | <sequence>--> |
| | | <parallel> |
| | | <block name="'ldclt-add-threads'"> |
| | | <sequence> |
| | | |
| | | <message> |
| | | 'replication_add_mod_delete_search: add threads' |
| | | </message> |
| | | |
| | | <script> |
| | | opt1 = '-e delayedstartup=1 -e object=%s' % ldcltTemplate |
| | | opt2 = '-e "rdn=uid:user.[C=INCRN(%s;%s;6)]"' \ |
| | | % (lowRange, highRange) |
| | | opt3 = '-e add -N %s -I 68 -v -q' % ldcltLoop |
| | | opts = '%s %s %s' % (opt1, opt2, opt3) |
| | | </script> |
| | | |
| | | <call function="'ldclt'"> |
| | | { |
| | | 'location' : STAF_CLIENT_HOSTNAME, |
| | | 'dsInstanceHost' : masterHost, |
| | | 'dsInstancePort' : master.getPort(), |
| | | 'dsInstanceDn' : master.getRootDn(), |
| | | 'dsInstancePswd' : master.getRootPwd(), |
| | | 'dsBaseDn' : baseDN, |
| | | 'ldcltOptions' : opts, |
| | | 'outputFile' : 'ldclt_add-%s.res' % suffix, |
| | | 'outputPath' : ldcltDir |
| | | } |
| | | </call> |
| | | |
| | | </sequence> |
| | | </block> |
| | | |
| | | <block name="'ldclt-modify-threads'"> |
| | | <sequence> |
| | | <call function="'Sleep'"> |
| | | { 'sleepForMilliSeconds' : 120000 } |
| | | </call> |
| | | |
| | | <message> |
| | | 'replication_add_mod_delete_search: modify threads' |
| | | </message> |
| | | |
| | | <script> |
| | | opt1 = '-e delayedstartup=1' |
| | | opt2 = '-e rdn=\"uid:user.[RNDN(%s;%s;6)]\"' \ |
| | | % (lowRange, highRange) |
| | | opt3 = '-e attreplace=\"description: random modify XXXXXX\"' |
| | | opt4 = '-N %s -I 32 -v -q' % ldcltLoop |
| | | opts = '%s %s %s %s' % (opt1, opt2, opt3, opt4) |
| | | </script> |
| | | |
| | | <call function="'ldclt'"> |
| | | { 'location' : STAF_CLIENT_HOSTNAME, |
| | | 'dsInstanceHost' : masterHost, |
| | | 'dsInstancePort' : master.getPort(), |
| | | 'dsInstanceDn' : master.getRootDn(), |
| | | 'dsInstancePswd' : master.getRootPwd(), |
| | | 'dsBaseDn' : baseDN, |
| | | 'ldcltOptions' : opts, |
| | | 'outputFile' : 'ldclt_modify-%s.res' % suffix, |
| | | 'outputPath' : ldcltDir |
| | | } |
| | | </call> |
| | | |
| | | </sequence> |
| | | </block> |
| | | |
| | | <block name="'ldclt-delete-threads'"> |
| | | <sequence> |
| | | <call function="'Sleep'"> |
| | | { 'sleepForMilliSeconds' : 240000 } |
| | | </call> |
| | | |
| | | <message> |
| | | 'replication_add_mod_delete_search: delete threads' |
| | | </message> |
| | | |
| | | <script> |
| | | opt1 = '-e delayedstartup=1' |
| | | opt2 = '-e delete,rdn=\"uid:user.[RNDN(%s;%s;6)]\"' \ |
| | | % (lowRange, highRange) |
| | | opt3 = '-N %s -I 32 -v -q' % ldcltLoop |
| | | opts = '%s %s %s' % (opt1, opt2, opt3) |
| | | </script> |
| | | |
| | | <call function="'ldclt'"> |
| | | { |
| | | 'location' : STAF_CLIENT_HOSTNAME, |
| | | 'dsInstanceHost' : masterHost, |
| | | 'dsInstancePort' : master.getPort(), |
| | | 'dsInstanceDn' : master.getRootDn(), |
| | | 'dsInstancePswd' : master.getRootPwd(), |
| | | 'dsBaseDn' : baseDN, |
| | | 'ldcltOptions' : opts, |
| | | 'outputFile' : 'ldclt_delete-%s.res' % suffix, |
| | | 'outputPath' : ldcltDir |
| | | } |
| | | </call> |
| | | </sequence> |
| | | </block> |
| | | |
| | | <block name="'ldclt-search-threads'"> |
| | | <sequence> |
| | | <call function="'Sleep'"> |
| | | { 'sleepForMilliSeconds' : 120000 } |
| | | </call> |
| | | |
| | | <message> |
| | | 'replication_add_mod_delete_search: search threads' |
| | | </message> |
| | | |
| | | <script> |
| | | opt1 = '-e delayedstartup=1 -r %s -R %s' \ |
| | | % (lowRange, highRange) |
| | | opt2 = '-e esearch,random -f uid=user.XXXXXX' |
| | | opt3 = '-N %s -I 32 -v -q' % searchLoop |
| | | opts = '%s %s %s' % (opt1, opt2, opt3) |
| | | </script> |
| | | |
| | | <call function="'ldclt'"> |
| | | { 'location' : STAF_CLIENT_HOSTNAME, |
| | | 'dsInstanceHost' : masterHost, |
| | | 'dsInstancePort' : master.getPort(), |
| | | 'dsInstanceDn' : master.getRootDn(), |
| | | 'dsInstancePswd' : master.getRootPwd(), |
| | | 'dsBaseDn' : baseDN, |
| | | 'ldcltOptions' : opts, |
| | | 'outputFile' : 'ldclt_search-%s.res' % suffix, |
| | | 'outputPath' : ldcltDir |
| | | } |
| | | </call> |
| | | |
| | | </sequence> |
| | | </block> |
| | | |
| | | <block name="'ldclt-jvm'"> |
| | | <sequence> |
| | | <loop from="1" to="jvmLoop" var="loop"> |
| | | <sequence> |
| | | <message> |
| | | 'LOOP %s out of %s' % (loop, jvmLoop) |
| | | </message> |
| | | |
| | | <message> |
| | | 'replication_add_mod_delete_search: save jvm information' |
| | | </message> |
| | | |
| | | <call function="'ldapSearchWithScript'"> |
| | | { 'location' : masterHost, |
| | | 'dsPath' : masterPath, |
| | | 'dsInstanceHost' : masterHost, |
| | | 'dsInstancePort' : master.getPort(), |
| | | 'dsInstanceDn' : master.getRootDn(), |
| | | 'dsInstancePswd' : master.getRootPwd(), |
| | | 'dsBaseDN' : 'cn=JVM Memory Usage,cn=monitor', |
| | | 'dsFilter' : 'objectclass=*', |
| | | 'expectedRC' : 'noCheck', |
| | | 'outputFile' : 'jvm_%s_%s.out' \ |
| | | % (suffix, loop), |
| | | 'outputPath' : masterDir |
| | | } |
| | | </call> |
| | | |
| | | <if expr="loop != jvmLoop"> |
| | | <call function="'Sleep'"> |
| | | { 'sleepForMilliSeconds' : jvmSleep } |
| | | </call> |
| | | </if> |
| | | |
| | | </sequence> |
| | | </loop> |
| | | </sequence> |
| | | </block> |
| | | </parallel> |
| | | <!--</sequence> |
| | | </timer> |
| | | |
| | | <script>timerRC = RC</script> |
| | | |
| | | <if expr="timerRC == 0"> |
| | | <sequence> |
| | | <message>'Timer exceeds %s' % timerDuration</message> |
| | | <tcstatus result="'fail'"/> |
| | | </sequence> |
| | | </if>--> |
| | | |
| | | <message> |
| | | 'Copy %s/ldclt_add-%s.res from %s to %s on %s' % \ |
| | | (ldcltDir, suffix, STAF_CLIENT_HOSTNAME, logs.sut, STAXServiceMachine) |
| | | </message> |
| | | <call function="'copyFile'"> |
| | | { |
| | | 'location' : STAF_CLIENT_HOSTNAME, |
| | | 'srcfile' : '%s/ldclt_add-%s.res' % (ldcltDir, suffix), |
| | | 'destfile' : '%s/ldclt_add-%s.res' % (logs.sut, suffix), |
| | | 'remotehost' : STAXServiceMachine |
| | | } |
| | | </call> |
| | | |
| | | <message> |
| | | 'Copy %s/ldclt_modify-%s.res from %s to %s on %s' % \ |
| | | (ldcltDir, suffix, STAF_CLIENT_HOSTNAME, logs.sut, STAXServiceMachine) |
| | | </message> |
| | | <call function="'copyFile'"> |
| | | { |
| | | 'location' : STAF_CLIENT_HOSTNAME, |
| | | 'srcfile' : '%s/ldclt_modify-%s.res' % (ldcltDir, suffix), |
| | | 'destfile' : '%s/ldclt_modify-%s.res' % (logs.sut, suffix), |
| | | 'remotehost' : STAXServiceMachine |
| | | } |
| | | </call> |
| | | |
| | | <message> |
| | | 'Copy %s/ldclt_search-%s.res from %s to %s on %s' % \ |
| | | (ldcltDir, suffix, STAF_CLIENT_HOSTNAME, logs.sut, STAXServiceMachine) |
| | | </message> |
| | | <call function="'copyFile'"> |
| | | { |
| | | 'location' : STAF_CLIENT_HOSTNAME, |
| | | 'srcfile' : '%s/ldclt_search-%s.res' % (ldcltDir, suffix), |
| | | 'destfile' : '%s/ldclt_search-%s.res' % (logs.sut, suffix), |
| | | 'remotehost' : STAXServiceMachine |
| | | } |
| | | </call> |
| | | |
| | | <message> |
| | | 'Copy %s/ldclt_delete-%s.res from %s to %s on %s' % \ |
| | | (ldcltDir, suffix, STAF_CLIENT_HOSTNAME, logs.sut, STAXServiceMachine) |
| | | </message> |
| | | <call function="'copyFile'"> |
| | | { |
| | | 'location' : STAF_CLIENT_HOSTNAME, |
| | | 'srcfile' : '%s/ldclt_delete-%s.res' % (ldcltDir, suffix), |
| | | 'destfile' : '%s/ldclt_delete-%s.res' % (logs.sut, suffix), |
| | | 'remotehost' : STAXServiceMachine |
| | | } |
| | | </call> |
| | | |
| | | <call function="'testCase_Postamble'"/> |
| | | |
| | | </sequence> |
| | | |
| | | </testcase> |
| | | |
| | | |
| | | |
| | | <testcase name="getTestCaseName('Check server is still running')"> |
| | | |
| | | <sequence> |
| | | |
| | | <call function="'testCase_Preamble'"/> |
| | | |
| | | <paralleliterate var="server" in="_topologyServerList" indexvar="i"> |
| | | <sequence> |
| | | <script> |
| | | serverPath = '%s/%s' % (server.getDir(), OPENDSNAME) |
| | | </script> |
| | | |
| | | <message> |
| | | 'replication_add_mod_delete_search: Check server is still running on \ |
| | | %s:%s' % (server.getHostname(), server.getPort()) |
| | | </message> |
| | | |
| | | <!-- Modify entry on one of the servers --> |
| | | <call function="'isAlive'"> |
| | | { 'location' : server.getHostname(), |
| | | 'dsPath' : serverPath, |
| | | 'dsInstanceHost' : server.getHostname(), |
| | | 'dsInstancePort' : server.getPort(), |
| | | 'dsInstanceDn' : server.getRootDn(), |
| | | 'dsInstancePswd' : server.getRootPwd(), |
| | | 'noOfLoops' : 10, |
| | | 'noOfMilliSeconds' : 5000 |
| | | } |
| | | </call> |
| | | </sequence> |
| | | </paralleliterate> |
| | | |
| | | <call function="'testCase_Postamble'"/> |
| | | |
| | | </sequence> |
| | | |
| | | </testcase> |
| | | |
| | | |
| | | |
| | | <testcase name="getTestCaseName('Verify replication')"> |
| | | |
| | | <sequence> |
| | | |
| | | <call function="'testCase_Preamble'"/> |
| | | |
| | | <message> |
| | | 'replication_add_mod_delete_search: Verify replication is still working' |
| | | </message> |
| | | |
| | | <!-- Verify the replication is still working among the servers in |
| | | the topology --> |
| | | <call function="'verifyReplication'"> |
| | | [ _topologyServerList, synchroSuffix ] |
| | | </call> |
| | | |
| | | <call function="'testCase_Postamble'"/> |
| | | |
| | | </sequence> |
| | | |
| | | </testcase> |
| | | |
| | | |
| | | |
| | | <testcase name="getTestCaseName('Verify tree synchronization')"> |
| | | |
| | | <sequence> |
| | | |
| | | <call function="'testCase_Preamble'"/> |
| | | |
| | | <message> |
| | | 'replication_add_mod_delete_search: Verify the tree synchronization' |
| | | </message> |
| | | |
| | | <!-- Verify the synchronization of the trees among the servers in |
| | | the topology --> |
| | | <call function="'verifyTrees'"> |
| | | [ clientHost, clientPath, master, consumerList, synchroSuffix ] |
| | | </call> |
| | | |
| | | <call function="'testCase_Postamble'"/> |
| | | |
| | | </sequence> |
| | | |
| | | </testcase> |
| | | |
| | | |
| | | |
| | | <testcase name="getTestCaseName('Check replication status')"> |
| | | |
| | | <sequence> |
| | | |
| | | <call function="'testCase_Preamble'"/> |
| | | |
| | | <message> |
| | | 'replication_add_mod_delete_search: Check replication status' |
| | | </message> |
| | | |
| | | <!-- Verify the synchronization of the trees among the servers in |
| | | the topology --> |
| | | <call function="'getReplicationStatus'"> |
| | | { 'location' : masterHost, |
| | | 'dsPath' : masterPath, |
| | | 'dsInstanceHost' : masterHost, |
| | | 'dsInstanceAdminPort' : master.getAdminPort(), |
| | | 'replicationDnList' : [synchroSuffix] |
| | | } |
| | | </call> |
| | | |
| | | <call function="'testCase_Postamble'"/> |
| | | |
| | | </sequence> |
| | | |
| | | </testcase> |
| | | |
| | | |
| | | <import machine="STAF_LOCAL_HOSTNAME" |
| | | file="'%s/../functional-tests/testcases/replication/replication_cleanup.xml' % (TESTS_DIR)"/> |
| | | <call function="'replication_cleanup'"> |
| | | { 'suiteSuffix' : suffix } |
| | | </call> |
| | | |
| | | <call function="'testSuite_Postamble'"/> |
| | | |
| | | </sequence> |
| | | |
| | | </block> |
| | | |
| | | </sequence> |
| | | |
| | | </function> |
| | | |
| | | </stax> |
| New file |
| | |
| | | <?xml version="1.0" encoding="UTF-8" standalone="no"?> |
| | | <!DOCTYPE stax SYSTEM "../../../shared/stax.dtd"> |
| | | <!-- |
| | | ! CDDL HEADER START |
| | | ! |
| | | ! The contents of this file are subject to the terms of the |
| | | ! Common Development and Distribution License, Version 1.0 only |
| | | ! (the "License"). You may not use this file except in compliance |
| | | ! with the License. |
| | | ! |
| | | ! You can obtain a copy of the license at |
| | | ! trunk/opends/resource/legal-notices/OpenDS.LICENSE |
| | | ! or https://OpenDS.dev.java.net/OpenDS.LICENSE. |
| | | ! See the License for the specific language governing permissions |
| | | ! and limitations under the License. |
| | | ! |
| | | ! When distributing Covered Code, include this CDDL HEADER in each |
| | | ! file and include the License file at |
| | | ! trunk/opends/resource/legal-notices/OpenDS.LICENSE. If applicable, |
| | | ! add the following below this CDDL HEADER, with the fields enclosed |
| | | ! by brackets "[]" replaced with your own identifying information: |
| | | ! Portions Copyright [yyyy] [name of copyright owner] |
| | | ! |
| | | ! CDDL HEADER END |
| | | ! |
| | | ! Copyright 2009 Sun Microsystems, Inc. |
| | | ! --> |
| | | <stax> |
| | | |
| | | <defaultcall function="replication_add_modify_multiple"/> |
| | | |
| | | <function name="replication_add_modify_multiple"> |
| | | |
| | | <sequence> |
| | | |
| | | <block name="'replication-add-modify-multiple'"> |
| | | |
| | | <sequence> |
| | | |
| | | <script> |
| | | if not CurrentTestPath.has_key('group'): |
| | | CurrentTestPath['group']='replication' |
| | | CurrentTestPath['suite']=STAXCurrentBlock |
| | | </script> |
| | | |
| | | <call function="'testSuite_Preamble'"/> |
| | | |
| | | <import machine="STAF_LOCAL_HOSTNAME" |
| | | file="'%s/../functional-tests/testcases/replication/replication_setup.xml' % (TESTS_DIR)"/> |
| | | <call function="'replication_setup'"/> |
| | | |
| | | <script> |
| | | ldcltLoop = testsDuration / 10 |
| | | lowRange = 100000 |
| | | highRange = lowRange + numberOfEntries |
| | | jvmLoop = testsDuration / 1800 + 1 |
| | | jvmSleep = 1800000 |
| | | baseDN = 'ou=People,%s' % synchroSuffix |
| | | ldcltDir = '%s/ldclt_dir' % TMPDIR |
| | | ldcltTemplate = '%s/ldclt_add.template' % ldcltDir |
| | | |
| | | server1Host = server1.getHostname() |
| | | server1Path = '%s/%s' % (server1.getDir(),OPENDSNAME) |
| | | server1Dir = server1.getDir() |
| | | server2Host = server2.getHostname() |
| | | server2Path = '%s/%s' % (server2.getDir(),OPENDSNAME) |
| | | server2Dir = server2.getDir() |
| | | |
| | | suffix = 'add_modify_multiple' |
| | | </script> |
| | | |
| | | |
| | | <testcase name="getTestCaseName('Preamble')"> |
| | | |
| | | <sequence> |
| | | |
| | | <call function="'testCase_Preamble'"/> |
| | | |
| | | |
| | | <message> |
| | | 'replication_add_modify_multiple: Delete %s on %s' \ |
| | | % (ldcltDir, STAF_CLIENT_HOSTNAME) |
| | | </message> |
| | | |
| | | <call function="'deleteFolder'"> |
| | | { |
| | | 'location' : STAF_CLIENT_HOSTNAME , |
| | | 'foldername' : ldcltDir |
| | | } |
| | | </call> |
| | | |
| | | <message> |
| | | 'replication_add_modify_multiple: Create %s on %s' \ |
| | | % (ldcltDir, STAF_CLIENT_HOSTNAME) |
| | | </message> |
| | | |
| | | <call function="'createFolder'"> |
| | | { |
| | | 'location' : STAF_CLIENT_HOSTNAME , |
| | | 'foldername' : ldcltDir |
| | | } |
| | | </call> |
| | | |
| | | <message> |
| | | 'replication_add_modify_multiple: Create ldclt template' |
| | | </message> |
| | | |
| | | <call function="'MakeALdcltTemplate'"> |
| | | { |
| | | 'templateFile' : ldcltTemplate , |
| | | 'templateLocation' : STAF_CLIENT_HOSTNAME |
| | | } |
| | | </call> |
| | | |
| | | <call function="'testCase_Postamble'"/> |
| | | |
| | | </sequence> |
| | | |
| | | </testcase> |
| | | |
| | | |
| | | <testcase name="getTestCaseName('Run ldclt clients')"> |
| | | |
| | | <sequence> |
| | | |
| | | <call function="'testCase_Preamble'"/> |
| | | |
| | | <message> |
| | | 'replication_add_modify_multiple: Run ldclt add' |
| | | </message> |
| | | |
| | | <!--<timer duration="timerDuration"> |
| | | <sequence>--> |
| | | <parallel> |
| | | <block name="'ldclt-add-threads-server1'"> |
| | | <sequence> |
| | | |
| | | <message> |
| | | 'replication_add_modify_multiple: add threads on %s:%s' \ |
| | | % (server1Host, server1.getPort()) |
| | | </message> |
| | | |
| | | <script> |
| | | opt1 = '-e delayedstartup=1 -e object=%s' % ldcltTemplate |
| | | opt2 = '-e "rdn=uid:user.[C=INCRN(%s;%s;6)]"' \ |
| | | % (lowRange, highRange) |
| | | opt3 = '-e add -N %s -I 68 -v -q' % ldcltLoop |
| | | opts = '%s %s %s' % (opt1, opt2, opt3) |
| | | </script> |
| | | |
| | | <call function="'ldclt'"> |
| | | { |
| | | 'location' : STAF_CLIENT_HOSTNAME, |
| | | 'dsInstanceHost' : server1Host, |
| | | 'dsInstancePort' : server1.getPort(), |
| | | 'dsInstanceDn' : server1.getRootDn(), |
| | | 'dsInstancePswd' : server1.getRootPwd(), |
| | | 'dsBaseDn' : baseDN, |
| | | 'ldcltOptions' : opts, |
| | | 'outputFile' : 'ldclt_add-%s_1.res' % suffix, |
| | | 'outputPath' : ldcltDir |
| | | } |
| | | </call> |
| | | |
| | | </sequence> |
| | | </block> |
| | | |
| | | <block name="'ldclt-modify-threads-server2'"> |
| | | <sequence> |
| | | <call function="'Sleep'"> |
| | | { 'sleepForMilliSeconds' : 120000 } |
| | | </call> |
| | | |
| | | <message> |
| | | 'replication_add_modify_multiple: modify threads on %s:%s' \ |
| | | % (server2Host, server2.getPort()) |
| | | </message> |
| | | |
| | | <script> |
| | | opt1 = '-e delayedstartup=1' |
| | | opt2 = '-e rdn=\"uid:user.[RNDN(%s;%s;6)]\"' \ |
| | | % (lowRange, highRange) |
| | | opt3 = '-e attreplace=\"description: random modify XXXXXX\"' |
| | | opt4 = '-N %s -I 32 -v -q' % ldcltLoop |
| | | opts = '%s %s %s %s' % (opt1, opt2, opt3, opt4) |
| | | </script> |
| | | |
| | | <call function="'ldclt'"> |
| | | { 'location' : STAF_CLIENT_HOSTNAME, |
| | | 'dsInstanceHost' : server2Host, |
| | | 'dsInstancePort' : server2.getPort(), |
| | | 'dsInstanceDn' : server2.getRootDn(), |
| | | 'dsInstancePswd' : server2.getRootPwd(), |
| | | 'dsBaseDn' : baseDN, |
| | | 'ldcltOptions' : opts, |
| | | 'outputFile' : 'ldclt_modify-%s_2.res' % suffix, |
| | | 'outputPath' : ldcltDir |
| | | } |
| | | </call> |
| | | |
| | | </sequence> |
| | | </block> |
| | | |
| | | <block name="'ldclt-jvm'"> |
| | | <sequence> |
| | | <loop from="1" to="jvmLoop" var="loop"> |
| | | <sequence> |
| | | <message> |
| | | 'LOOP %s out of %s' % (loop, jvmLoop) |
| | | </message> |
| | | |
| | | <message> |
| | | 'replication_add_modify_multiple: save jvm information' |
| | | </message> |
| | | |
| | | <call function="'ldapSearchWithScript'"> |
| | | { 'location' : server1Host, |
| | | 'dsPath' : server1Path, |
| | | 'dsInstanceHost' : server1Host, |
| | | 'dsInstancePort' : server1.getPort(), |
| | | 'dsInstanceDn' : server1.getRootDn(), |
| | | 'dsInstancePswd' : server1.getRootPwd(), |
| | | 'dsBaseDN' : 'cn=JVM Memory Usage,cn=monitor', |
| | | 'dsFilter' : 'objectclass=*', |
| | | 'expectedRC' : 'noCheck', |
| | | 'outputFile' : 'jvm_%s_%s.out' \ |
| | | % (suffix, loop), |
| | | 'outputPath' : server1Dir |
| | | } |
| | | </call> |
| | | |
| | | <call function="'ldapSearchWithScript'"> |
| | | { 'location' : server2Host, |
| | | 'dsPath' : server2Path, |
| | | 'dsInstanceHost' : server2Host, |
| | | 'dsInstancePort' : server2.getPort(), |
| | | 'dsInstanceDn' : server2.getRootDn(), |
| | | 'dsInstancePswd' : server2.getRootPwd(), |
| | | 'dsBaseDN' : 'cn=JVM Memory Usage,cn=monitor', |
| | | 'dsFilter' : 'objectclass=*', |
| | | 'expectedRC' : 'noCheck', |
| | | 'outputFile' : 'jvm_%s_%s.out' \ |
| | | % (suffix, loop), |
| | | 'outputPath' : server2Dir |
| | | } |
| | | </call> |
| | | |
| | | <if expr="loop != jvmLoop"> |
| | | <call function="'Sleep'"> |
| | | { 'sleepForMilliSeconds' : jvmSleep } |
| | | </call> |
| | | </if> |
| | | |
| | | </sequence> |
| | | </loop> |
| | | </sequence> |
| | | </block> |
| | | </parallel> |
| | | <!--</sequence> |
| | | </timer> |
| | | |
| | | <script>timerRC = RC</script> |
| | | |
| | | <if expr="timerRC == 0"> |
| | | <sequence> |
| | | <message>'Timer exceeds %s' % timerDuration</message> |
| | | <tcstatus result="'fail'"/> |
| | | </sequence> |
| | | </if>--> |
| | | |
| | | <message> |
| | | 'Copy %s/ldclt_add-%s_1.res from %s to %s on %s' % \ |
| | | (ldcltDir, suffix, STAF_CLIENT_HOSTNAME, logs.sut, STAXServiceMachine) |
| | | </message> |
| | | <call function="'copyFile'"> |
| | | { |
| | | 'location' : STAF_CLIENT_HOSTNAME, |
| | | 'srcfile' : '%s/ldclt_add-%s_1.res' % (ldcltDir, suffix), |
| | | 'destfile' : '%s/ldclt_add-%s_1.res' % (logs.sut, suffix), |
| | | 'remotehost' : STAXServiceMachine |
| | | } |
| | | </call> |
| | | |
| | | <message> |
| | | 'Copy %s/ldclt_modify-%s_2.res from %s to %s on %s' % \ |
| | | (ldcltDir, suffix, STAF_CLIENT_HOSTNAME, logs.sut, STAXServiceMachine) |
| | | </message> |
| | | <call function="'copyFile'"> |
| | | { |
| | | 'location' : STAF_CLIENT_HOSTNAME, |
| | | 'srcfile' : '%s/ldclt_modify-%s_2.res' % (ldcltDir, suffix), |
| | | 'destfile' : '%s/ldclt_modify-%s_2.res' % (logs.sut, suffix), |
| | | 'remotehost' : STAXServiceMachine |
| | | } |
| | | </call> |
| | | |
| | | <call function="'testCase_Postamble'"/> |
| | | |
| | | </sequence> |
| | | |
| | | </testcase> |
| | | |
| | | |
| | | |
| | | <testcase name="getTestCaseName('Check server is still running')"> |
| | | |
| | | <sequence> |
| | | |
| | | <call function="'testCase_Preamble'"/> |
| | | |
| | | <paralleliterate var="server" in="_topologyServerList" indexvar="i"> |
| | | <sequence> |
| | | <script> |
| | | serverPath = '%s/%s' % (server.getDir(), OPENDSNAME) |
| | | </script> |
| | | |
| | | <message> |
| | | 'replication_add_modify_multiple: Check server is still running on \ |
| | | %s:%s' % (server.getHostname(), server.getPort()) |
| | | </message> |
| | | |
| | | <!-- Modify entry on one of the servers --> |
| | | <call function="'isAlive'"> |
| | | { 'location' : server.getHostname(), |
| | | 'dsPath' : serverPath, |
| | | 'dsInstanceHost' : server.getHostname(), |
| | | 'dsInstancePort' : server.getPort(), |
| | | 'dsInstanceDn' : server.getRootDn(), |
| | | 'dsInstancePswd' : server.getRootPwd(), |
| | | 'noOfLoops' : 10, |
| | | 'noOfMilliSeconds' : 5000 |
| | | } |
| | | </call> |
| | | </sequence> |
| | | </paralleliterate> |
| | | |
| | | <call function="'testCase_Postamble'"/> |
| | | |
| | | </sequence> |
| | | |
| | | </testcase> |
| | | |
| | | |
| | | |
| | | <testcase name="getTestCaseName('Verify replication')"> |
| | | |
| | | <sequence> |
| | | |
| | | <call function="'testCase_Preamble'"/> |
| | | |
| | | <message> |
| | | 'replication_add_modify_multiple: Verify replication is still working' |
| | | </message> |
| | | |
| | | <!-- Verify the replication is still working among the servers in |
| | | the topology --> |
| | | <call function="'verifyReplication'"> |
| | | [ _topologyServerList, synchroSuffix ] |
| | | </call> |
| | | |
| | | <call function="'testCase_Postamble'"/> |
| | | |
| | | </sequence> |
| | | |
| | | </testcase> |
| | | |
| | | |
| | | |
| | | <testcase name="getTestCaseName('Verify tree synchronization')"> |
| | | |
| | | <sequence> |
| | | |
| | | <call function="'testCase_Preamble'"/> |
| | | |
| | | <message> |
| | | 'replication_add_modify_multiple: Verify the tree synchronization' |
| | | </message> |
| | | |
| | | <!-- Verify the synchronization of the trees among the servers in |
| | | the topology --> |
| | | <call function="'verifyTrees'"> |
| | | [ clientHost, clientPath, master, consumerList, synchroSuffix ] |
| | | </call> |
| | | |
| | | <call function="'testCase_Postamble'"/> |
| | | |
| | | </sequence> |
| | | |
| | | </testcase> |
| | | |
| | | |
| | | |
| | | <testcase name="getTestCaseName('Check replication status')"> |
| | | |
| | | <sequence> |
| | | |
| | | <call function="'testCase_Preamble'"/> |
| | | |
| | | <message> |
| | | 'replication_add_modify_multiple: Check replication status' |
| | | </message> |
| | | |
| | | <!-- Verify the synchronization of the trees among the servers in |
| | | the topology --> |
| | | <call function="'getReplicationStatus'"> |
| | | { 'location' : masterHost, |
| | | 'dsPath' : masterPath, |
| | | 'dsInstanceHost' : masterHost, |
| | | 'dsInstanceAdminPort' : master.getAdminPort(), |
| | | 'replicationDnList' : [synchroSuffix] |
| | | } |
| | | </call> |
| | | |
| | | <call function="'testCase_Postamble'"/> |
| | | |
| | | </sequence> |
| | | |
| | | </testcase> |
| | | |
| | | |
| | | <import machine="STAF_LOCAL_HOSTNAME" |
| | | file="'%s/../functional-tests/testcases/replication/replication_cleanup.xml' % (TESTS_DIR)"/> |
| | | <call function="'replication_cleanup'"> |
| | | { 'suiteSuffix' : suffix } |
| | | </call> |
| | | |
| | | <call function="'testSuite_Postamble'"/> |
| | | |
| | | </sequence> |
| | | |
| | | </block> |
| | | |
| | | </sequence> |
| | | |
| | | </function> |
| | | |
| | | </stax> |
| New file |
| | |
| | | <?xml version="1.0" encoding="UTF-8" standalone="no"?> |
| | | <!DOCTYPE stax SYSTEM "../../../shared/stax.dtd"> |
| | | <!-- |
| | | ! CDDL HEADER START |
| | | ! |
| | | ! The contents of this file are subject to the terms of the |
| | | ! Common Development and Distribution License, Version 1.0 only |
| | | ! (the "License"). You may not use this file except in compliance |
| | | ! with the License. |
| | | ! |
| | | ! You can obtain a copy of the license at |
| | | ! trunk/opends/resource/legal-notices/OpenDS.LICENSE |
| | | ! or https://OpenDS.dev.java.net/OpenDS.LICENSE. |
| | | ! See the License for the specific language governing permissions |
| | | ! and limitations under the License. |
| | | ! |
| | | ! When distributing Covered Code, include this CDDL HEADER in each |
| | | ! file and include the License file at |
| | | ! trunk/opends/resource/legal-notices/OpenDS.LICENSE. If applicable, |
| | | ! add the following below this CDDL HEADER, with the fields enclosed |
| | | ! by brackets "[]" replaced with your own identifying information: |
| | | ! Portions Copyright [yyyy] [name of copyright owner] |
| | | ! |
| | | ! CDDL HEADER END |
| | | ! |
| | | ! Copyright 2009 Sun Microsystems, Inc. |
| | | ! --> |
| | | <stax> |
| | | |
| | | <defaultcall function="replication_add_search_multiple"/> |
| | | |
| | | <function name="replication_add_search_multiple"> |
| | | |
| | | <sequence> |
| | | |
| | | <block name="'replication-add-search-multiple'"> |
| | | |
| | | <sequence> |
| | | |
| | | <script> |
| | | if not CurrentTestPath.has_key('group'): |
| | | CurrentTestPath['group']='replication' |
| | | CurrentTestPath['suite']=STAXCurrentBlock |
| | | </script> |
| | | |
| | | <call function="'testSuite_Preamble'"/> |
| | | |
| | | <import machine="STAF_LOCAL_HOSTNAME" |
| | | file="'%s/../functional-tests/testcases/replication/replication_setup.xml' % (TESTS_DIR)"/> |
| | | <call function="'replication_setup'"/> |
| | | |
| | | <script> |
| | | ldcltLoop = testsDuration / 10 |
| | | lowRange = 100000 |
| | | highRange = lowRange + numberOfEntries |
| | | jvmLoop = testsDuration / 1800 + 1 |
| | | jvmSleep = 1800000 |
| | | baseDN = 'ou=People,%s' % synchroSuffix |
| | | ldcltDir = '%s/ldclt_dir' % TMPDIR |
| | | ldcltTemplate = '%s/ldclt_add.template' % ldcltDir |
| | | |
| | | server1Host = server1.getHostname() |
| | | server1Path = '%s/%s' % (server1.getDir(),OPENDSNAME) |
| | | server1Dir = server1.getDir() |
| | | server2Host = server2.getHostname() |
| | | server2Path = '%s/%s' % (server2.getDir(),OPENDSNAME) |
| | | server2Dir = server2.getDir() |
| | | |
| | | suffix = 'add_search_multiple' |
| | | </script> |
| | | |
| | | |
| | | <testcase name="getTestCaseName('Preamble')"> |
| | | |
| | | <sequence> |
| | | |
| | | <call function="'testCase_Preamble'"/> |
| | | |
| | | |
| | | <message> |
| | | 'replication_add_search_multiple: Delete %s on %s' \ |
| | | % (ldcltDir, STAF_CLIENT_HOSTNAME) |
| | | </message> |
| | | |
| | | <call function="'deleteFolder'"> |
| | | { |
| | | 'location' : STAF_CLIENT_HOSTNAME , |
| | | 'foldername' : ldcltDir |
| | | } |
| | | </call> |
| | | |
| | | <message> |
| | | 'replication_add_search_multiple: Create %s on %s' \ |
| | | % (ldcltDir, STAF_CLIENT_HOSTNAME) |
| | | </message> |
| | | |
| | | <call function="'createFolder'"> |
| | | { |
| | | 'location' : STAF_CLIENT_HOSTNAME , |
| | | 'foldername' : ldcltDir |
| | | } |
| | | </call> |
| | | |
| | | <message> |
| | | 'replication_add_search_multiple: Create ldclt template' |
| | | </message> |
| | | |
| | | <call function="'MakeALdcltTemplate'"> |
| | | { |
| | | 'templateFile' : ldcltTemplate , |
| | | 'templateLocation' : STAF_CLIENT_HOSTNAME |
| | | } |
| | | </call> |
| | | |
| | | <call function="'testCase_Postamble'"/> |
| | | |
| | | </sequence> |
| | | |
| | | </testcase> |
| | | |
| | | |
| | | <testcase name="getTestCaseName('Run ldclt clients')"> |
| | | |
| | | <sequence> |
| | | |
| | | <call function="'testCase_Preamble'"/> |
| | | |
| | | <message> |
| | | 'replication_add_search_multiple: Run ldclt add' |
| | | </message> |
| | | |
| | | <!--<timer duration="timerDuration"> |
| | | <sequence>--> |
| | | <parallel> |
| | | <block name="'ldclt-add-threads-server1'"> |
| | | <sequence> |
| | | |
| | | <message> |
| | | 'replication_add_search_multiple: add threads on %s:%s' \ |
| | | % (server1Host, server1.getPort()) |
| | | </message> |
| | | |
| | | <script> |
| | | opt1 = '-e delayedstartup=1 -e object=%s' % ldcltTemplate |
| | | opt2 = '-e "rdn=uid:user.[C=INCRN(%s;%s;6)]"' \ |
| | | % (lowRange, highRange) |
| | | opt3 = '-e add -N %s -I 68 -v -q' % ldcltLoop |
| | | opts = '%s %s %s' % (opt1, opt2, opt3) |
| | | </script> |
| | | |
| | | <call function="'ldclt'"> |
| | | { |
| | | 'location' : STAF_CLIENT_HOSTNAME, |
| | | 'dsInstanceHost' : server1Host, |
| | | 'dsInstancePort' : server1.getPort(), |
| | | 'dsInstanceDn' : server1.getRootDn(), |
| | | 'dsInstancePswd' : server1.getRootPwd(), |
| | | 'dsBaseDn' : baseDN, |
| | | 'ldcltOptions' : opts, |
| | | 'outputFile' : 'ldclt_add-%s_1.res' % suffix, |
| | | 'outputPath' : ldcltDir |
| | | } |
| | | </call> |
| | | |
| | | </sequence> |
| | | </block> |
| | | |
| | | <block name="'ldclt-search-threads-server2'"> |
| | | <sequence> |
| | | <call function="'Sleep'"> |
| | | { 'sleepForMilliSeconds' : 120000 } |
| | | </call> |
| | | |
| | | <message> |
| | | 'replication_add_search_multiple: search threads on %s:%s' \ |
| | | % (server2Host, server2.getPort()) |
| | | </message> |
| | | |
| | | <script> |
| | | opt1 = '-e delayedstartup=1 -r %s -R %s' \ |
| | | % (lowRange, highRange) |
| | | opt2 = '-e esearch,random -f uid=user.XXXXXX' |
| | | opt3 = '-N %s -I 32 -v -q' % ldcltLoop |
| | | opts = '%s %s %s' % (opt1, opt2, opt3) |
| | | </script> |
| | | |
| | | <call function="'ldclt'"> |
| | | { 'location' : STAF_CLIENT_HOSTNAME, |
| | | 'dsInstanceHost' : server2Host, |
| | | 'dsInstancePort' : server2.getPort(), |
| | | 'dsInstanceDn' : server2.getRootDn(), |
| | | 'dsInstancePswd' : server2.getRootPwd(), |
| | | 'dsBaseDn' : baseDN, |
| | | 'ldcltOptions' : opts, |
| | | 'outputFile' : 'ldclt_search-%s_2.res' % suffix, |
| | | 'outputPath' : ldcltDir |
| | | } |
| | | </call> |
| | | |
| | | </sequence> |
| | | </block> |
| | | |
| | | <block name="'ldclt-jvm'"> |
| | | <sequence> |
| | | <loop from="1" to="jvmLoop" var="loop"> |
| | | <sequence> |
| | | <message> |
| | | 'LOOP %s out of %s' % (loop, jvmLoop) |
| | | </message> |
| | | |
| | | <message> |
| | | 'replication_add_search_multiple: save jvm information' |
| | | </message> |
| | | |
| | | <call function="'ldapSearchWithScript'"> |
| | | { 'location' : server1Host, |
| | | 'dsPath' : server1Path, |
| | | 'dsInstanceHost' : server1Host, |
| | | 'dsInstancePort' : server1.getPort(), |
| | | 'dsInstanceDn' : server1.getRootDn(), |
| | | 'dsInstancePswd' : server1.getRootPwd(), |
| | | 'dsBaseDN' : 'cn=JVM Memory Usage,cn=monitor', |
| | | 'dsFilter' : 'objectclass=*', |
| | | 'expectedRC' : 'noCheck', |
| | | 'outputFile' : 'jvm_%s_%s.out' \ |
| | | % (suffix, loop), |
| | | 'outputPath' : server1Dir |
| | | } |
| | | </call> |
| | | |
| | | <call function="'ldapSearchWithScript'"> |
| | | { 'location' : server2Host, |
| | | 'dsPath' : server2Path, |
| | | 'dsInstanceHost' : server2Host, |
| | | 'dsInstancePort' : server2.getPort(), |
| | | 'dsInstanceDn' : server2.getRootDn(), |
| | | 'dsInstancePswd' : server2.getRootPwd(), |
| | | 'dsBaseDN' : 'cn=JVM Memory Usage,cn=monitor', |
| | | 'dsFilter' : 'objectclass=*', |
| | | 'expectedRC' : 'noCheck', |
| | | 'outputFile' : 'jvm_%s_%s.out' \ |
| | | % (suffix, loop), |
| | | 'outputPath' : server2Dir |
| | | } |
| | | </call> |
| | | |
| | | <if expr="loop != jvmLoop"> |
| | | <call function="'Sleep'"> |
| | | { 'sleepForMilliSeconds' : jvmSleep } |
| | | </call> |
| | | </if> |
| | | |
| | | </sequence> |
| | | </loop> |
| | | </sequence> |
| | | </block> |
| | | </parallel> |
| | | <!--</sequence> |
| | | </timer> |
| | | |
| | | <script>timerRC = RC</script> |
| | | |
| | | <if expr="timerRC == 0"> |
| | | <sequence> |
| | | <message>'Timer exceeds %s' % timerDuration</message> |
| | | <tcstatus result="'fail'"/> |
| | | </sequence> |
| | | </if>--> |
| | | |
| | | <message> |
| | | 'Copy %s/ldclt_add-%s_1.res from %s to %s on %s' % \ |
| | | (ldcltDir, suffix, STAF_CLIENT_HOSTNAME, logs.sut, STAXServiceMachine) |
| | | </message> |
| | | <call function="'copyFile'"> |
| | | { |
| | | 'location' : STAF_CLIENT_HOSTNAME, |
| | | 'srcfile' : '%s/ldclt_add-%s_1.res' % (ldcltDir, suffix), |
| | | 'destfile' : '%s/ldclt_add-%s_1.res' % (logs.sut, suffix), |
| | | 'remotehost' : STAXServiceMachine |
| | | } |
| | | </call> |
| | | |
| | | <message> |
| | | 'Copy %s/ldclt_search-%s_2.res from %s to %s on %s' % \ |
| | | (ldcltDir, suffix, STAF_CLIENT_HOSTNAME, logs.sut, STAXServiceMachine) |
| | | </message> |
| | | <call function="'copyFile'"> |
| | | { |
| | | 'location' : STAF_CLIENT_HOSTNAME, |
| | | 'srcfile' : '%s/ldclt_search-%s_2.res' % (ldcltDir, suffix), |
| | | 'destfile' : '%s/ldclt_search-%s_2.res' % (logs.sut, suffix), |
| | | 'remotehost' : STAXServiceMachine |
| | | } |
| | | </call> |
| | | |
| | | <call function="'testCase_Postamble'"/> |
| | | |
| | | </sequence> |
| | | |
| | | </testcase> |
| | | |
| | | |
| | | |
| | | <testcase name="getTestCaseName('Check server is still running')"> |
| | | |
| | | <sequence> |
| | | |
| | | <call function="'testCase_Preamble'"/> |
| | | |
| | | <paralleliterate var="server" in="_topologyServerList" indexvar="i"> |
| | | <sequence> |
| | | <script> |
| | | serverPath = '%s/%s' % (server.getDir(), OPENDSNAME) |
| | | </script> |
| | | |
| | | <message> |
| | | 'replication_add_search_multiple: Check server is still running on \ |
| | | %s:%s' % (server.getHostname(), server.getPort()) |
| | | </message> |
| | | |
| | | <!-- Modify entry on one of the servers --> |
| | | <call function="'isAlive'"> |
| | | { 'location' : server.getHostname(), |
| | | 'dsPath' : serverPath, |
| | | 'dsInstanceHost' : server.getHostname(), |
| | | 'dsInstancePort' : server.getPort(), |
| | | 'dsInstanceDn' : server.getRootDn(), |
| | | 'dsInstancePswd' : server.getRootPwd(), |
| | | 'noOfLoops' : 10, |
| | | 'noOfMilliSeconds' : 5000 |
| | | } |
| | | </call> |
| | | </sequence> |
| | | </paralleliterate> |
| | | |
| | | <call function="'testCase_Postamble'"/> |
| | | |
| | | </sequence> |
| | | |
| | | </testcase> |
| | | |
| | | |
| | | |
| | | <testcase name="getTestCaseName('Verify replication')"> |
| | | |
| | | <sequence> |
| | | |
| | | <call function="'testCase_Preamble'"/> |
| | | |
| | | <message> |
| | | 'replication_add_search_multiple: Verify replication is still working' |
| | | </message> |
| | | |
| | | <!-- Verify the replication is still working among the servers in |
| | | the topology --> |
| | | <call function="'verifyReplication'"> |
| | | [ _topologyServerList, synchroSuffix ] |
| | | </call> |
| | | |
| | | <call function="'testCase_Postamble'"/> |
| | | |
| | | </sequence> |
| | | |
| | | </testcase> |
| | | |
| | | |
| | | |
| | | <testcase name="getTestCaseName('Verify tree synchronization')"> |
| | | |
| | | <sequence> |
| | | |
| | | <call function="'testCase_Preamble'"/> |
| | | |
| | | <message> |
| | | 'replication_add_search_multiple: Verify the tree synchronization' |
| | | </message> |
| | | |
| | | <!-- Verify the synchronization of the trees among the servers in |
| | | the topology --> |
| | | <call function="'verifyTrees'"> |
| | | [ clientHost, clientPath, master, consumerList, synchroSuffix ] |
| | | </call> |
| | | |
| | | <call function="'testCase_Postamble'"/> |
| | | |
| | | </sequence> |
| | | |
| | | </testcase> |
| | | |
| | | |
| | | |
| | | <testcase name="getTestCaseName('Check replication status')"> |
| | | |
| | | <sequence> |
| | | |
| | | <call function="'testCase_Preamble'"/> |
| | | |
| | | <message> |
| | | 'replication_add_search_multiple: Check replication status' |
| | | </message> |
| | | |
| | | <!-- Verify the synchronization of the trees among the servers in |
| | | the topology --> |
| | | <call function="'getReplicationStatus'"> |
| | | { 'location' : masterHost, |
| | | 'dsPath' : masterPath, |
| | | 'dsInstanceHost' : masterHost, |
| | | 'dsInstanceAdminPort' : master.getAdminPort(), |
| | | 'replicationDnList' : [synchroSuffix] |
| | | } |
| | | </call> |
| | | |
| | | <call function="'testCase_Postamble'"/> |
| | | |
| | | </sequence> |
| | | |
| | | </testcase> |
| | | |
| | | |
| | | <import machine="STAF_LOCAL_HOSTNAME" |
| | | file="'%s/../functional-tests/testcases/replication/replication_cleanup.xml' % (TESTS_DIR)"/> |
| | | <call function="'replication_cleanup'"> |
| | | { 'suiteSuffix' : suffix } |
| | | </call> |
| | | |
| | | <call function="'testSuite_Postamble'"/> |
| | | |
| | | </sequence> |
| | | |
| | | </block> |
| | | |
| | | </sequence> |
| | | |
| | | </function> |
| | | |
| | | </stax> |
| New file |
| | |
| | | <?xml version="1.0" encoding="UTF-8" standalone="no"?> |
| | | <!DOCTYPE stax SYSTEM "../../../shared/stax.dtd"> |
| | | <!-- |
| | | ! CDDL HEADER START |
| | | ! |
| | | ! The contents of this file are subject to the terms of the |
| | | ! Common Development and Distribution License, Version 1.0 only |
| | | ! (the "License"). You may not use this file except in compliance |
| | | ! with the License. |
| | | ! |
| | | ! You can obtain a copy of the license at |
| | | ! trunk/opends/resource/legal-notices/OpenDS.LICENSE |
| | | ! or https://OpenDS.dev.java.net/OpenDS.LICENSE. |
| | | ! See the License for the specific language governing permissions |
| | | ! and limitations under the License. |
| | | ! |
| | | ! When distributing Covered Code, include this CDDL HEADER in each |
| | | ! file and include the License file at |
| | | ! trunk/opends/resource/legal-notices/OpenDS.LICENSE. If applicable, |
| | | ! add the following below this CDDL HEADER, with the fields enclosed |
| | | ! by brackets "[]" replaced with your own identifying information: |
| | | ! Portions Copyright [yyyy] [name of copyright owner] |
| | | ! |
| | | ! CDDL HEADER END |
| | | ! |
| | | ! Copyright 2009 Sun Microsystems, Inc. |
| | | ! --> |
| | | <stax> |
| | | |
| | | <defaultcall function="replication_modify"/> |
| | | |
| | | <function name="replication_modify"> |
| | | |
| | | <sequence> |
| | | |
| | | <block name="'replication-modify'"> |
| | | |
| | | <sequence> |
| | | |
| | | <script> |
| | | if not CurrentTestPath.has_key('group'): |
| | | CurrentTestPath['group']='replication' |
| | | CurrentTestPath['suite']=STAXCurrentBlock |
| | | </script> |
| | | |
| | | <call function="'testSuite_Preamble'"/> |
| | | |
| | | <import machine="STAF_LOCAL_HOSTNAME" |
| | | file="'%s/../functional-tests/testcases/replication/replication_setup.xml' % (TESTS_DIR)"/> |
| | | <call function="'replication_setup'"/> |
| | | |
| | | <script> |
| | | ldcltLoop = testsDuration / 10 |
| | | lowRange = 100000 |
| | | highRange = lowRange + numberOfEntries |
| | | jvmLoop = testsDuration / 1800 + 1 |
| | | jvmSleep = 1800000 |
| | | baseDN = 'ou=People,%s' % synchroSuffix |
| | | ldcltDir = '%s/ldclt_dir' % TMPDIR |
| | | masterDir = '%s/..' % masterPath |
| | | ldifTemplate = '%s/%s_entries.template' \ |
| | | % (masterDir, numberOfEntries) |
| | | ldifFile = '%s/%s_entries.ldif' \ |
| | | % (masterDir, numberOfEntries) |
| | | totalEntries = numberOfEntries + 2 |
| | | |
| | | suffix = 'modify' |
| | | </script> |
| | | |
| | | |
| | | <testcase name="getTestCaseName('Preamble')"> |
| | | |
| | | <sequence> |
| | | |
| | | <call function="'testCase_Preamble'"/> |
| | | |
| | | <!-- Check if 'ldifFile' exists --> |
| | | <call function="'GetEntry'"> |
| | | { |
| | | 'location' : masterHost , |
| | | 'entry' : ldifFile , |
| | | 'attribute' : 'TYPE' |
| | | } |
| | | </call> |
| | | <if expr="RC == 48"> |
| | | <sequence> |
| | | <message> |
| | | 'replication_modify: File %s does not exist, create it' \ |
| | | % ldifFile |
| | | </message> |
| | | |
| | | <message> |
| | | 'replication_modify: Make a make-ldif template file' |
| | | </message> |
| | | |
| | | <call function="'MakeAMakeLdifTemplate'"> |
| | | { |
| | | 'numEntries' : numberOfEntries, |
| | | 'suffix' : synchroSuffix, |
| | | 'startFrom' : lowRange, |
| | | 'additionalAttributes' : True, |
| | | 'templateFile' : ldifTemplate, |
| | | 'templateLocation' : masterHost |
| | | } |
| | | </call> |
| | | |
| | | <message> |
| | | 'replication_modify: Make the ldif file' |
| | | </message> |
| | | |
| | | <call function="'MakeLdifWithScript'"> |
| | | { |
| | | 'location' : masterHost, |
| | | 'dsPath' : masterPath, |
| | | 'templateFile' : ldifTemplate, |
| | | 'ldifFile' : ldifFile |
| | | } |
| | | </call> |
| | | </sequence> |
| | | <else> |
| | | <message> |
| | | 'replication_modify: File %s exists, do nothing' % ldifFile |
| | | </message> |
| | | </else> |
| | | </if> |
| | | |
| | | <message> |
| | | 'replication_modify: Import large ldif file' |
| | | </message> |
| | | |
| | | <!-- Stop "master" Directory Server --> |
| | | <call function="'StopDsWithScript'"> |
| | | { 'location' : masterHost, |
| | | 'dsPath' : masterPath, |
| | | 'dsHost' : masterHost, |
| | | 'dsAdminPort' : master.getAdminPort(), |
| | | 'dsBindDN' : master.getRootDn(), |
| | | 'dsBindPwd' : master.getRootPwd() |
| | | } |
| | | </call> |
| | | |
| | | <!-- Import data into "master" Directory Server --> |
| | | <call function="'ImportLdifWithScript'"> |
| | | { 'location' : masterHost, |
| | | 'dsPath' : masterPath, |
| | | 'dsBackEnd' : DIRECTORY_INSTANCE_BE, |
| | | 'dsLdifFile' : ldifFile |
| | | } |
| | | </call> |
| | | |
| | | <script> |
| | | returnString = STAXResult[0][1] |
| | | </script> |
| | | |
| | | <call function="'checktestString'"> |
| | | { 'returnString' : returnString, |
| | | 'expectedString' : 'Processed %s entries' % totalEntries |
| | | } |
| | | </call> |
| | | |
| | | <message> |
| | | 'replication_modify: Start DS running on %s:%s' % \ |
| | | (masterHost, master.getPort()) |
| | | </message> |
| | | |
| | | <!-- Start the Directory Server --> |
| | | <call function="'StartDsWithScript'"> |
| | | { 'location' : masterHost, |
| | | 'dsPath' : masterPath |
| | | } |
| | | </call> |
| | | |
| | | <!-- Wait for DS to start --> |
| | | <call function="'isAlive'"> |
| | | { 'location' : masterHost, |
| | | 'dsPath' : masterPath, |
| | | 'dsInstanceHost' : masterHost, |
| | | 'dsInstancePort' : master.getPort(), |
| | | 'dsInstanceDn' : master.getRootDn(), |
| | | 'dsInstancePswd' : master.getRootPwd(), |
| | | 'noOfLoops' : 10, |
| | | 'noOfMilliSeconds' : 5000 |
| | | } |
| | | </call> |
| | | |
| | | <!-- Perform the total update --> |
| | | <call function="'initializeReplication'"> |
| | | { 'location' : clientHost, |
| | | 'dsPath' : clientPath, |
| | | 'sourceInstanceHost' : masterHost, |
| | | 'sourceInstanceAdminPort' : master.getAdminPort(), |
| | | 'replicationDnList' : [synchroSuffix] |
| | | } |
| | | </call> |
| | | |
| | | <call function="'testCase_Postamble'"/> |
| | | |
| | | </sequence> |
| | | |
| | | </testcase> |
| | | |
| | | |
| | | <testcase name="getTestCaseName('Run ldclt clients')"> |
| | | |
| | | <sequence> |
| | | |
| | | <call function="'testCase_Preamble'"/> |
| | | |
| | | <message> |
| | | 'replication_modify: Run ldclt modify' |
| | | </message> |
| | | |
| | | <!--<timer duration="timerDuration"> |
| | | <sequence>--> |
| | | <parallel> |
| | | <block name="'ldclt-modify-threads'"> |
| | | <sequence> |
| | | |
| | | <message> |
| | | 'replication_modify: modify threads' |
| | | </message> |
| | | |
| | | <script> |
| | | opt1 = '-e delayedstartup=1' |
| | | opt2 = '-e rdn=\"uid:user.[RNDN(%s;%s;6)]\"' \ |
| | | % (lowRange, highRange) |
| | | opt3 = '-e attreplace=\"description: random modify XXXXXX\"' |
| | | opt4 = '-N %s -I 32 -v -q' % ldcltLoop |
| | | opts = '%s %s %s %s' % (opt1, opt2, opt3, opt4) |
| | | </script> |
| | | |
| | | <call function="'ldclt'"> |
| | | { 'location' : STAF_CLIENT_HOSTNAME, |
| | | 'dsInstanceHost' : masterHost, |
| | | 'dsInstancePort' : master.getPort(), |
| | | 'dsInstanceDn' : master.getRootDn(), |
| | | 'dsInstancePswd' : master.getRootPwd(), |
| | | 'dsBaseDn' : baseDN, |
| | | 'ldcltOptions' : opts, |
| | | 'outputFile' : 'ldclt_modify-%s.res' % suffix, |
| | | 'outputPath' : ldcltDir |
| | | } |
| | | </call> |
| | | |
| | | </sequence> |
| | | </block> |
| | | |
| | | <block name="'ldclt-jvm'"> |
| | | <sequence> |
| | | <loop from="1" to="jvmLoop" var="loop"> |
| | | <sequence> |
| | | <message> |
| | | 'LOOP %s out of %s' % (loop, jvmLoop) |
| | | </message> |
| | | |
| | | <message> |
| | | 'replication_modify: save jvm information' |
| | | </message> |
| | | |
| | | <call function="'ldapSearchWithScript'"> |
| | | { 'location' : masterHost, |
| | | 'dsPath' : masterPath, |
| | | 'dsInstanceHost' : masterHost, |
| | | 'dsInstancePort' : master.getPort(), |
| | | 'dsInstanceDn' : master.getRootDn(), |
| | | 'dsInstancePswd' : master.getRootPwd(), |
| | | 'dsBaseDN' : 'cn=JVM Memory Usage,cn=monitor', |
| | | 'dsFilter' : 'objectclass=*', |
| | | 'expectedRC' : 'noCheck', |
| | | 'outputFile' : 'jvm_%s_%s.out' % (suffix, loop), |
| | | 'outputPath' : masterDir |
| | | } |
| | | </call> |
| | | |
| | | <if expr="loop != jvmLoop"> |
| | | <call function="'Sleep'"> |
| | | { 'sleepForMilliSeconds' : jvmSleep } |
| | | </call> |
| | | </if> |
| | | |
| | | </sequence> |
| | | </loop> |
| | | </sequence> |
| | | </block> |
| | | </parallel> |
| | | <!--</sequence> |
| | | </timer> |
| | | |
| | | <script>timerRC = RC</script> |
| | | |
| | | <if expr="timerRC == 0"> |
| | | <sequence> |
| | | <message>'Timer exceeds %s' % timerDuration</message> |
| | | <tcstatus result="'fail'"/> |
| | | </sequence> |
| | | </if>--> |
| | | |
| | | <message> |
| | | 'Copy %s/ldclt_modify-%s.res from %s to %s on %s' % \ |
| | | (ldcltDir, suffix, STAF_CLIENT_HOSTNAME, logs.sut, STAXServiceMachine) |
| | | </message> |
| | | <call function="'copyFile'"> |
| | | { |
| | | 'location' : STAF_CLIENT_HOSTNAME, |
| | | 'srcfile' : '%s/ldclt_modify-%s.res' % (ldcltDir, suffix), |
| | | 'destfile' : '%s/ldclt_modify-%s.res' % (logs.sut, suffix), |
| | | 'remotehost' : STAXServiceMachine |
| | | } |
| | | </call> |
| | | |
| | | <call function="'testCase_Postamble'"/> |
| | | |
| | | </sequence> |
| | | |
| | | </testcase> |
| | | |
| | | |
| | | |
| | | <testcase name="getTestCaseName('Check server is still running')"> |
| | | |
| | | <sequence> |
| | | |
| | | <call function="'testCase_Preamble'"/> |
| | | |
| | | <paralleliterate var="server" in="_topologyServerList" indexvar="i"> |
| | | <sequence> |
| | | <script> |
| | | serverPath = '%s/%s' % (server.getDir(), OPENDSNAME) |
| | | </script> |
| | | |
| | | <message> |
| | | 'replication_modify: Check server is still running on \ |
| | | %s:%s' % (server.getHostname(), server.getPort()) |
| | | </message> |
| | | |
| | | <!-- Modify entry on one of the servers --> |
| | | <call function="'isAlive'"> |
| | | { 'location' : server.getHostname(), |
| | | 'dsPath' : serverPath, |
| | | 'dsInstanceHost' : server.getHostname(), |
| | | 'dsInstancePort' : server.getPort(), |
| | | 'dsInstanceDn' : server.getRootDn(), |
| | | 'dsInstancePswd' : server.getRootPwd(), |
| | | 'noOfLoops' : 10 , |
| | | 'noOfMilliSeconds' : 5000 |
| | | } |
| | | </call> |
| | | </sequence> |
| | | </paralleliterate> |
| | | |
| | | <call function="'testCase_Postamble'"/> |
| | | |
| | | </sequence> |
| | | |
| | | </testcase> |
| | | |
| | | |
| | | <testcase name="getTestCaseName('Verify replication')"> |
| | | |
| | | <sequence> |
| | | |
| | | <call function="'testCase_Preamble'"/> |
| | | |
| | | <message> |
| | | 'replication_modify: Verify replication is still working' |
| | | </message> |
| | | |
| | | <!-- Verify the replication is still working among the servers in |
| | | the topology --> |
| | | <call function="'verifyReplication'"> |
| | | [ _topologyServerList, synchroSuffix ] |
| | | </call> |
| | | |
| | | <call function="'testCase_Postamble'"/> |
| | | |
| | | </sequence> |
| | | |
| | | </testcase> |
| | | |
| | | |
| | | |
| | | <testcase name="getTestCaseName('Verify tree synchronization')"> |
| | | |
| | | <sequence> |
| | | |
| | | <call function="'testCase_Preamble'"/> |
| | | |
| | | <message> |
| | | 'replication_modify: Verify the tree synchronization' |
| | | </message> |
| | | |
| | | <!-- Verify the synchronization of the trees among the servers in |
| | | the topology --> |
| | | <call function="'verifyTrees'"> |
| | | [ clientHost, clientPath, master, consumerList, synchroSuffix ] |
| | | </call> |
| | | |
| | | <call function="'testCase_Postamble'"/> |
| | | |
| | | </sequence> |
| | | |
| | | </testcase> |
| | | |
| | | |
| | | |
| | | <testcase name="getTestCaseName('Check replication status')"> |
| | | |
| | | <sequence> |
| | | |
| | | <call function="'testCase_Preamble'"/> |
| | | |
| | | <message> |
| | | 'replication_modify: Check replication status' |
| | | </message> |
| | | |
| | | <!-- Verify the synchronization of the trees among the servers in |
| | | the topology --> |
| | | <call function="'getReplicationStatus'"> |
| | | { 'location' : masterHost, |
| | | 'dsPath' : masterPath, |
| | | 'dsInstanceHost' : masterHost, |
| | | 'dsInstanceAdminPort' : master.getAdminPort(), |
| | | 'replicationDnList' : [synchroSuffix] |
| | | } |
| | | </call> |
| | | |
| | | <call function="'testCase_Postamble'"/> |
| | | |
| | | </sequence> |
| | | |
| | | </testcase> |
| | | |
| | | |
| | | <import machine="STAF_LOCAL_HOSTNAME" |
| | | file="'%s/../functional-tests/testcases/replication/replication_cleanup.xml' % (TESTS_DIR)"/> |
| | | <call function="'replication_cleanup'"> |
| | | { 'suiteSuffix' : suffix } |
| | | </call> |
| | | |
| | | <call function="'testSuite_Postamble'"/> |
| | | |
| | | </sequence> |
| | | |
| | | </block> |
| | | |
| | | </sequence> |
| | | |
| | | </function> |
| | | |
| | | </stax> |
| New file |
| | |
| | | <?xml version="1.0" encoding="UTF-8" standalone="no"?> |
| | | <!DOCTYPE stax SYSTEM "../../../shared/stax.dtd"> |
| | | <!-- |
| | | ! CDDL HEADER START |
| | | ! |
| | | ! The contents of this file are subject to the terms of the |
| | | ! Common Development and Distribution License, Version 1.0 only |
| | | ! (the "License"). You may not use this file except in compliance |
| | | ! with the License. |
| | | ! |
| | | ! You can obtain a copy of the license at |
| | | ! trunk/opends/resource/legal-notices/OpenDS.LICENSE |
| | | ! or https://OpenDS.dev.java.net/OpenDS.LICENSE. |
| | | ! See the License for the specific language governing permissions |
| | | ! and limitations under the License. |
| | | ! |
| | | ! When distributing Covered Code, include this CDDL HEADER in each |
| | | ! file and include the License file at |
| | | ! trunk/opends/resource/legal-notices/OpenDS.LICENSE. If applicable, |
| | | ! add the following below this CDDL HEADER, with the fields enclosed |
| | | ! by brackets "[]" replaced with your own identifying information: |
| | | ! Portions Copyright [yyyy] [name of copyright owner] |
| | | ! |
| | | ! CDDL HEADER END |
| | | ! |
| | | ! Copyright 2009 Sun Microsystems, Inc. |
| | | ! --> |
| | | <stax> |
| | | |
| | | <defaultcall function="replication_modify_modifyrdn_multiple"/> |
| | | |
| | | <function name="replication_modify_modifyrdn_multiple"> |
| | | |
| | | <sequence> |
| | | |
| | | <block name="'replication-modify-modifyrdn-multiple'"> |
| | | |
| | | <sequence> |
| | | |
| | | <script> |
| | | if not CurrentTestPath.has_key('group'): |
| | | CurrentTestPath['group']='replication' |
| | | CurrentTestPath['suite']=STAXCurrentBlock |
| | | </script> |
| | | |
| | | <call function="'testSuite_Preamble'"/> |
| | | |
| | | <import machine="STAF_LOCAL_HOSTNAME" |
| | | file="'%s/../functional-tests/testcases/replication/replication_setup.xml' % (TESTS_DIR)"/> |
| | | <call function="'replication_setup'"/> |
| | | |
| | | <script> |
| | | ldcltLoop = testsDuration / 10 |
| | | lowRange = 100000 |
| | | highRange = lowRange + numberOfEntries |
| | | jvmLoop = testsDuration / 1800 + 1 |
| | | jvmSleep = 1800000 |
| | | baseDN = 'ou=People,%s' % synchroSuffix |
| | | |
| | | server1Host = server1.getHostname() |
| | | server1Path = '%s/%s' % (server1.getDir(),OPENDSNAME) |
| | | server1Dir = server1.getDir() |
| | | server2Host = server2.getHostname() |
| | | server2Path = '%s/%s' % (server2.getDir(),OPENDSNAME) |
| | | server2Dir = server2.getDir() |
| | | |
| | | ldifTemplate = '%s/%s_entries.template' \ |
| | | % (server1Dir, numberOfEntries) |
| | | ldifFile = '%s/%s_entries.ldif' \ |
| | | % (server1Dir, numberOfEntries) |
| | | totalEntries = numberOfEntries + 2 |
| | | |
| | | suffix = 'modify_modifyrdn_multiple' |
| | | </script> |
| | | |
| | | |
| | | <testcase name="getTestCaseName('Preamble')"> |
| | | |
| | | <sequence> |
| | | |
| | | <call function="'testCase_Preamble'"/> |
| | | |
| | | <!-- Check if 'ldifFile' exists --> |
| | | <call function="'GetEntry'"> |
| | | { |
| | | 'location' : server1Host , |
| | | 'entry' : ldifFile , |
| | | 'attribute' : 'TYPE' |
| | | } |
| | | </call> |
| | | <if expr="RC == 48"> |
| | | <sequence> |
| | | <message> |
| | | 'replication_modify_modifyrdn_multiple: File %s does not exist, create it' \ |
| | | % ldifFile |
| | | </message> |
| | | |
| | | <message> |
| | | 'replication_modify_modifyrdn_multiple: Make a make-ldif template file' |
| | | </message> |
| | | |
| | | <call function="'MakeAMakeLdifTemplate'"> |
| | | { |
| | | 'numEntries' : numberOfEntries, |
| | | 'suffix' : synchroSuffix, |
| | | 'startFrom' : lowRange, |
| | | 'additionalAttributes' : True, |
| | | 'templateFile' : ldifTemplate, |
| | | 'templateLocation' : server1Host |
| | | } |
| | | </call> |
| | | |
| | | <message> |
| | | 'replication_modify_modifyrdn_multiple: Make the ldif file' |
| | | </message> |
| | | |
| | | <call function="'MakeLdifWithScript'"> |
| | | { |
| | | 'location' : server1Host, |
| | | 'dsPath' : server1Path, |
| | | 'templateFile' : ldifTemplate, |
| | | 'ldifFile' : ldifFile |
| | | } |
| | | </call> |
| | | </sequence> |
| | | <else> |
| | | <message> |
| | | 'replication_modify_modifyrdn_multiple: File %s exists, do nothing' % ldifFile |
| | | </message> |
| | | </else> |
| | | </if> |
| | | |
| | | <message> |
| | | 'replication_modify_modifyrdn_multiple: Import large ldif file' |
| | | </message> |
| | | |
| | | <!-- Stop "server1" Directory Server --> |
| | | <call function="'StopDsWithScript'"> |
| | | { 'location' : server1Host, |
| | | 'dsPath' : server1Path, |
| | | 'dsHost' : server1Host, |
| | | 'dsAdminPort' : server1.getAdminPort(), |
| | | 'dsBindDN' : server1.getRootDn(), |
| | | 'dsBindPwd' : server1.getRootPwd() |
| | | } |
| | | </call> |
| | | |
| | | <!-- Import data into "server1" Directory Server --> |
| | | <call function="'ImportLdifWithScript'"> |
| | | { 'location' : server1Host, |
| | | 'dsPath' : server1Path, |
| | | 'dsBackEnd' : DIRECTORY_INSTANCE_BE, |
| | | 'dsLdifFile' : ldifFile |
| | | } |
| | | </call> |
| | | |
| | | <script> |
| | | returnString = STAXResult[0][1] |
| | | </script> |
| | | |
| | | <call function="'checktestString'"> |
| | | { 'returnString' : returnString, |
| | | 'expectedString' : 'Processed %s entries' % totalEntries |
| | | } |
| | | </call> |
| | | |
| | | <message> |
| | | 'replication_modify_modifyrdn_multiple: Start DS running on %s:%s' % \ |
| | | (server1Host, server1.getPort()) |
| | | </message> |
| | | |
| | | <!-- Start the Directory Server --> |
| | | <call function="'StartDsWithScript'"> |
| | | { 'location' : server1Host, |
| | | 'dsPath' : server1Path |
| | | } |
| | | </call> |
| | | |
| | | <!-- Wait for DS to start --> |
| | | <call function="'isAlive'"> |
| | | { 'location' : server1Host, |
| | | 'dsPath' : server1Path, |
| | | 'dsInstanceHost' : server1Host, |
| | | 'dsInstancePort' : server1.getPort(), |
| | | 'dsInstanceDn' : server1.getRootDn(), |
| | | 'dsInstancePswd' : server1.getRootPwd(), |
| | | 'noOfLoops' : 10, |
| | | 'noOfMilliSeconds' : 5000 |
| | | } |
| | | </call> |
| | | |
| | | <!-- Perform the total update --> |
| | | <call function="'initializeReplication'"> |
| | | { 'location' : clientHost, |
| | | 'dsPath' : clientPath, |
| | | 'sourceInstanceHost' : server1Host, |
| | | 'sourceInstanceAdminPort' : server1.getAdminPort(), |
| | | 'replicationDnList' : [synchroSuffix] |
| | | } |
| | | </call> |
| | | |
| | | <call function="'testCase_Postamble'"/> |
| | | |
| | | </sequence> |
| | | |
| | | </testcase> |
| | | |
| | | |
| | | <testcase name="getTestCaseName('Run ldclt clients')"> |
| | | |
| | | <sequence> |
| | | |
| | | <call function="'testCase_Preamble'"/> |
| | | |
| | | <message> |
| | | 'replication_modify_modifyrdn_multiple: Run ldclt add' |
| | | </message> |
| | | |
| | | <!--<timer duration="timerDuration"> |
| | | <sequence>--> |
| | | <parallel> |
| | | <block name="'ldclt-modify-threads-server1'"> |
| | | <sequence> |
| | | <message> |
| | | 'replication_modify_modifyrdn_multiple: modify threads on %s:%s' \ |
| | | % (server1Host, server1.getPort()) |
| | | </message> |
| | | |
| | | <script> |
| | | opt1 = '-e delayedstartup=1' |
| | | opt2 = '-e rdn=\"uid:user.[RNDN(%s;%s;6)]\"' \ |
| | | % (lowRange, highRange) |
| | | opt3 = '-e attreplace=\"description: random modify XXXXXX\"' |
| | | opt4 = '-N %s -I 32 -v -q' % ldcltLoop |
| | | opts = '%s %s %s %s' % (opt1, opt2, opt3, opt4) |
| | | </script> |
| | | |
| | | <call function="'ldclt'"> |
| | | { 'location' : STAF_CLIENT_HOSTNAME, |
| | | 'dsInstanceHost' : server1Host, |
| | | 'dsInstancePort' : server1.getPort(), |
| | | 'dsInstanceDn' : server1.getRootDn(), |
| | | 'dsInstancePswd' : server1.getRootPwd(), |
| | | 'dsBaseDn' : baseDN, |
| | | 'ldcltOptions' : opts, |
| | | 'outputFile' : 'ldclt_modify-%s_1.res' % suffix, |
| | | 'outputPath' : ldcltDir |
| | | } |
| | | </call> |
| | | |
| | | </sequence> |
| | | </block> |
| | | |
| | | <block name="'ldclt-modifyrdn-threads-server2'"> |
| | | <sequence> |
| | | |
| | | <message> |
| | | 'replication_modifyrdn: modifyrdn threads on %s:%s' \ |
| | | % (server2Host, server2.getPort()) |
| | | </message> |
| | | |
| | | <script> |
| | | opt1 = '-e delayedstartup=1' |
| | | opt2 = '-e rename,rdn=\"uid:user.[RNDN(%s;%s;6)]\"' \ |
| | | % (lowRange, highRange) |
| | | opt3 = '-N %s -I 68 -I 32 -v -q' % ldcltLoop |
| | | opts = '%s %s %s' % (opt1, opt2, opt3) |
| | | </script> |
| | | |
| | | <call function="'ldclt'"> |
| | | { 'location' : STAF_CLIENT_HOSTNAME, |
| | | 'dsInstanceHost' : server2Host, |
| | | 'dsInstancePort' : server2.getPort(), |
| | | 'dsInstanceDn' : server2.getRootDn(), |
| | | 'dsInstancePswd' : server2.getRootPwd(), |
| | | 'dsBaseDn' : baseDN, |
| | | 'ldcltOptions' : opts, |
| | | 'outputFile' : 'ldclt_modifyrdn-%s_2.res' % suffix, |
| | | 'outputPath' : ldcltDir |
| | | } |
| | | </call> |
| | | |
| | | </sequence> |
| | | </block> |
| | | |
| | | <block name="'ldclt-jvm'"> |
| | | <sequence> |
| | | <loop from="1" to="jvmLoop" var="loop"> |
| | | <sequence> |
| | | <message> |
| | | 'LOOP %s out of %s' % (loop, jvmLoop) |
| | | </message> |
| | | |
| | | <message> |
| | | 'replication_modify_modifyrdn_multiple: save jvm information' |
| | | </message> |
| | | |
| | | <call function="'ldapSearchWithScript'"> |
| | | { 'location' : server1Host, |
| | | 'dsPath' : server1Path, |
| | | 'dsInstanceHost' : server1Host, |
| | | 'dsInstancePort' : server1.getPort(), |
| | | 'dsInstanceDn' : server1.getRootDn(), |
| | | 'dsInstancePswd' : server1.getRootPwd(), |
| | | 'dsBaseDN' : 'cn=JVM Memory Usage,cn=monitor', |
| | | 'dsFilter' : 'objectclass=*', |
| | | 'expectedRC' : 'noCheck', |
| | | 'outputFile' : 'jvm_%s_%s.out' \ |
| | | % (suffix, loop), |
| | | 'outputPath' : server1Dir |
| | | } |
| | | </call> |
| | | |
| | | <call function="'ldapSearchWithScript'"> |
| | | { 'location' : server2Host, |
| | | 'dsPath' : server2Path, |
| | | 'dsInstanceHost' : server2Host, |
| | | 'dsInstancePort' : server2.getPort(), |
| | | 'dsInstanceDn' : server2.getRootDn(), |
| | | 'dsInstancePswd' : server2.getRootPwd(), |
| | | 'dsBaseDN' : 'cn=JVM Memory Usage,cn=monitor', |
| | | 'dsFilter' : 'objectclass=*', |
| | | 'expectedRC' : 'noCheck', |
| | | 'outputFile' : 'jvm_%s_%s.out' \ |
| | | % (suffix, loop), |
| | | 'outputPath' : server2Dir |
| | | } |
| | | </call> |
| | | |
| | | <if expr="loop != jvmLoop"> |
| | | <call function="'Sleep'"> |
| | | { 'sleepForMilliSeconds' : jvmSleep } |
| | | </call> |
| | | </if> |
| | | |
| | | </sequence> |
| | | </loop> |
| | | </sequence> |
| | | </block> |
| | | </parallel> |
| | | <!--</sequence> |
| | | </timer> |
| | | |
| | | <script>timerRC = RC</script> |
| | | |
| | | <if expr="timerRC == 0"> |
| | | <sequence> |
| | | <message>'Timer exceeds %s' % timerDuration</message> |
| | | <tcstatus result="'fail'"/> |
| | | </sequence> |
| | | </if>--> |
| | | |
| | | <message> |
| | | 'Copy %s/ldclt_modify-%s_1.res from %s to %s on %s' % \ |
| | | (ldcltDir, suffix, STAF_CLIENT_HOSTNAME, logs.sut, STAXServiceMachine) |
| | | </message> |
| | | <call function="'copyFile'"> |
| | | { |
| | | 'location' : STAF_CLIENT_HOSTNAME, |
| | | 'srcfile' : '%s/ldclt_modify-%s_1.res' % (ldcltDir, suffix), |
| | | 'destfile' : '%s/ldclt_modify-%s_1.res' % (logs.sut, suffix), |
| | | 'remotehost' : STAXServiceMachine |
| | | } |
| | | </call> |
| | | |
| | | <message> |
| | | 'Copy %s/ldclt_modifyrdn-%s_2.res from %s to %s on %s' % \ |
| | | (ldcltDir, suffix, STAF_CLIENT_HOSTNAME, logs.sut, STAXServiceMachine) |
| | | </message> |
| | | <call function="'copyFile'"> |
| | | { |
| | | 'location' : STAF_CLIENT_HOSTNAME, |
| | | 'srcfile' : '%s/ldclt_modifyrdn-%s_2.res' % (ldcltDir, suffix), |
| | | 'destfile' : '%s/ldclt_modifyrdn-%s_2.res' % (logs.sut, suffix), |
| | | 'remotehost' : STAXServiceMachine |
| | | } |
| | | </call> |
| | | |
| | | <call function="'testCase_Postamble'"/> |
| | | |
| | | </sequence> |
| | | |
| | | </testcase> |
| | | |
| | | |
| | | |
| | | <testcase name="getTestCaseName('Check server is still running')"> |
| | | |
| | | <sequence> |
| | | |
| | | <call function="'testCase_Preamble'"/> |
| | | |
| | | <paralleliterate var="server" in="_topologyServerList" indexvar="i"> |
| | | <sequence> |
| | | <script> |
| | | serverPath = '%s/%s' % (server.getDir(), OPENDSNAME) |
| | | </script> |
| | | |
| | | <message> |
| | | 'replication_modify_modifyrdn_multiple: Check server is still running on \ |
| | | %s:%s' % (server.getHostname(), server.getPort()) |
| | | </message> |
| | | |
| | | <!-- Modify entry on one of the servers --> |
| | | <call function="'isAlive'"> |
| | | { 'location' : server.getHostname(), |
| | | 'dsPath' : serverPath, |
| | | 'dsInstanceHost' : server.getHostname(), |
| | | 'dsInstancePort' : server.getPort(), |
| | | 'dsInstanceDn' : server.getRootDn(), |
| | | 'dsInstancePswd' : server.getRootPwd(), |
| | | 'noOfLoops' : 10, |
| | | 'noOfMilliSeconds' : 5000 |
| | | } |
| | | </call> |
| | | </sequence> |
| | | </paralleliterate> |
| | | |
| | | <call function="'testCase_Postamble'"/> |
| | | |
| | | </sequence> |
| | | |
| | | </testcase> |
| | | |
| | | |
| | | |
| | | <testcase name="getTestCaseName('Verify replication')"> |
| | | |
| | | <sequence> |
| | | |
| | | <call function="'testCase_Preamble'"/> |
| | | |
| | | <message> |
| | | 'replication_modify_modifyrdn_multiple: Verify replication is still working' |
| | | </message> |
| | | |
| | | <!-- Verify the replication is still working among the servers in |
| | | the topology --> |
| | | <call function="'verifyReplication'"> |
| | | [ _topologyServerList, synchroSuffix ] |
| | | </call> |
| | | |
| | | <call function="'testCase_Postamble'"/> |
| | | |
| | | </sequence> |
| | | |
| | | </testcase> |
| | | |
| | | |
| | | |
| | | <testcase name="getTestCaseName('Verify tree synchronization')"> |
| | | |
| | | <sequence> |
| | | |
| | | <call function="'testCase_Preamble'"/> |
| | | |
| | | <message> |
| | | 'replication_modify_modifyrdn_multiple: Verify the tree synchronization' |
| | | </message> |
| | | |
| | | <!-- Verify the synchronization of the trees among the servers in |
| | | the topology --> |
| | | <call function="'verifyTrees'"> |
| | | [ clientHost, clientPath, master, consumerList, synchroSuffix ] |
| | | </call> |
| | | |
| | | <call function="'testCase_Postamble'"/> |
| | | |
| | | </sequence> |
| | | |
| | | </testcase> |
| | | |
| | | |
| | | |
| | | <testcase name="getTestCaseName('Check replication status')"> |
| | | |
| | | <sequence> |
| | | |
| | | <call function="'testCase_Preamble'"/> |
| | | |
| | | <message> |
| | | 'replication_modify_modifyrdn_multiple: Check replication status' |
| | | </message> |
| | | |
| | | <!-- Verify the synchronization of the trees among the servers in |
| | | the topology --> |
| | | <call function="'getReplicationStatus'"> |
| | | { 'location' : masterHost, |
| | | 'dsPath' : masterPath, |
| | | 'dsInstanceHost' : masterHost, |
| | | 'dsInstanceAdminPort' : master.getAdminPort(), |
| | | 'replicationDnList' : [synchroSuffix] |
| | | } |
| | | </call> |
| | | |
| | | <call function="'testCase_Postamble'"/> |
| | | |
| | | </sequence> |
| | | |
| | | </testcase> |
| | | |
| | | |
| | | <import machine="STAF_LOCAL_HOSTNAME" |
| | | file="'%s/../functional-tests/testcases/replication/replication_cleanup.xml' % (TESTS_DIR)"/> |
| | | <call function="'replication_cleanup'"> |
| | | { 'suiteSuffix' : suffix } |
| | | </call> |
| | | |
| | | <call function="'testSuite_Postamble'"/> |
| | | |
| | | </sequence> |
| | | |
| | | </block> |
| | | |
| | | </sequence> |
| | | |
| | | </function> |
| | | |
| | | </stax> |
| New file |
| | |
| | | <?xml version="1.0" encoding="UTF-8" standalone="no"?> |
| | | <!DOCTYPE stax SYSTEM "../../../shared/stax.dtd"> |
| | | <!-- |
| | | ! CDDL HEADER START |
| | | ! |
| | | ! The contents of this file are subject to the terms of the |
| | | ! Common Development and Distribution License, Version 1.0 only |
| | | ! (the "License"). You may not use this file except in compliance |
| | | ! with the License. |
| | | ! |
| | | ! You can obtain a copy of the license at |
| | | ! trunk/opends/resource/legal-notices/OpenDS.LICENSE |
| | | ! or https://OpenDS.dev.java.net/OpenDS.LICENSE. |
| | | ! See the License for the specific language governing permissions |
| | | ! and limitations under the License. |
| | | ! |
| | | ! When distributing Covered Code, include this CDDL HEADER in each |
| | | ! file and include the License file at |
| | | ! trunk/opends/resource/legal-notices/OpenDS.LICENSE. If applicable, |
| | | ! add the following below this CDDL HEADER, with the fields enclosed |
| | | ! by brackets "[]" replaced with your own identifying information: |
| | | ! Portions Copyright [yyyy] [name of copyright owner] |
| | | ! |
| | | ! CDDL HEADER END |
| | | ! |
| | | ! Copyright 2009 Sun Microsystems, Inc. |
| | | ! --> |
| | | <stax> |
| | | |
| | | <defaultcall function="replication_modify_multiple"/> |
| | | |
| | | <function name="replication_modify_multiple"> |
| | | |
| | | <sequence> |
| | | |
| | | <block name="'replication-modify-multiple'"> |
| | | |
| | | <sequence> |
| | | |
| | | <script> |
| | | if not CurrentTestPath.has_key('group'): |
| | | CurrentTestPath['group']='replication' |
| | | CurrentTestPath['suite']=STAXCurrentBlock |
| | | </script> |
| | | |
| | | <call function="'testSuite_Preamble'"/> |
| | | |
| | | <import machine="STAF_LOCAL_HOSTNAME" |
| | | file="'%s/../functional-tests/testcases/replication/replication_setup.xml' % (TESTS_DIR)"/> |
| | | <call function="'replication_setup'"/> |
| | | |
| | | <script> |
| | | ldcltLoop = testsDuration / 10 |
| | | lowRange = 100000 |
| | | highRange = lowRange + numberOfEntries |
| | | jvmLoop = testsDuration / 1800 + 1 |
| | | jvmSleep = 1800000 |
| | | baseDN = 'ou=People,%s' % synchroSuffix |
| | | |
| | | server1Host = server1.getHostname() |
| | | server1Path = '%s/%s' % (server1.getDir(),OPENDSNAME) |
| | | server1Dir = server1.getDir() |
| | | server2Host = server2.getHostname() |
| | | server2Path = '%s/%s' % (server2.getDir(),OPENDSNAME) |
| | | server2Dir = server2.getDir() |
| | | |
| | | ldifTemplate = '%s/%s_entries.template' \ |
| | | % (server1Dir, numberOfEntries) |
| | | ldifFile = '%s/%s_entries.ldif' \ |
| | | % (server1Dir, numberOfEntries) |
| | | totalEntries = numberOfEntries + 2 |
| | | |
| | | suffix = 'modify_multiple' |
| | | </script> |
| | | |
| | | |
| | | <testcase name="getTestCaseName('Preamble')"> |
| | | |
| | | <sequence> |
| | | |
| | | <call function="'testCase_Preamble'"/> |
| | | |
| | | <!-- Check if 'ldifFile' exists --> |
| | | <call function="'GetEntry'"> |
| | | { |
| | | 'location' : server1Host , |
| | | 'entry' : ldifFile , |
| | | 'attribute' : 'TYPE' |
| | | } |
| | | </call> |
| | | <if expr="RC == 48"> |
| | | <sequence> |
| | | <message> |
| | | 'replication_modify_multiple: File %s does not exist, create it' \ |
| | | % ldifFile |
| | | </message> |
| | | |
| | | <message> |
| | | 'replication_modify_multiple: Make a make-ldif template file' |
| | | </message> |
| | | |
| | | <call function="'MakeAMakeLdifTemplate'"> |
| | | { |
| | | 'numEntries' : numberOfEntries, |
| | | 'suffix' : synchroSuffix, |
| | | 'startFrom' : lowRange, |
| | | 'additionalAttributes' : True, |
| | | 'templateFile' : ldifTemplate, |
| | | 'templateLocation' : server1Host |
| | | } |
| | | </call> |
| | | |
| | | <message> |
| | | 'replication_modify_multiple: Make the ldif file' |
| | | </message> |
| | | |
| | | <call function="'MakeLdifWithScript'"> |
| | | { |
| | | 'location' : server1Host, |
| | | 'dsPath' : server1Path, |
| | | 'templateFile' : ldifTemplate, |
| | | 'ldifFile' : ldifFile |
| | | } |
| | | </call> |
| | | </sequence> |
| | | <else> |
| | | <message> |
| | | 'replication_modify_multiple: File %s exists, do nothing' % ldifFile |
| | | </message> |
| | | </else> |
| | | </if> |
| | | |
| | | <message> |
| | | 'replication_modify_multiple: Import large ldif file' |
| | | </message> |
| | | |
| | | <!-- Stop "server1" Directory Server --> |
| | | <call function="'StopDsWithScript'"> |
| | | { 'location' : server1Host, |
| | | 'dsPath' : server1Path, |
| | | 'dsHost' : server1Host, |
| | | 'dsAdminPort' : server1.getAdminPort(), |
| | | 'dsBindDN' : server1.getRootDn(), |
| | | 'dsBindPwd' : server1.getRootPwd() |
| | | } |
| | | </call> |
| | | |
| | | <!-- Import data into "server1" Directory Server --> |
| | | <call function="'ImportLdifWithScript'"> |
| | | { 'location' : server1Host, |
| | | 'dsPath' : server1Path, |
| | | 'dsBackEnd' : DIRECTORY_INSTANCE_BE, |
| | | 'dsLdifFile' : ldifFile |
| | | } |
| | | </call> |
| | | |
| | | <script> |
| | | returnString = STAXResult[0][1] |
| | | </script> |
| | | |
| | | <call function="'checktestString'"> |
| | | { 'returnString' : returnString, |
| | | 'expectedString' : 'Processed %s entries' % totalEntries |
| | | } |
| | | </call> |
| | | |
| | | <message> |
| | | 'replication_modify_multiple: Start DS running on %s:%s' % \ |
| | | (server1Host, server1.getPort()) |
| | | </message> |
| | | |
| | | <!-- Start the Directory Server --> |
| | | <call function="'StartDsWithScript'"> |
| | | { 'location' : server1Host, |
| | | 'dsPath' : server1Path |
| | | } |
| | | </call> |
| | | |
| | | <!-- Wait for DS to start --> |
| | | <call function="'isAlive'"> |
| | | { 'location' : server1Host, |
| | | 'dsPath' : server1Path, |
| | | 'dsInstanceHost' : server1Host, |
| | | 'dsInstancePort' : server1.getPort(), |
| | | 'dsInstanceDn' : server1.getRootDn(), |
| | | 'dsInstancePswd' : server1.getRootPwd(), |
| | | 'noOfLoops' : 10, |
| | | 'noOfMilliSeconds' : 5000 |
| | | } |
| | | </call> |
| | | |
| | | <!-- Perform the total update --> |
| | | <call function="'initializeReplication'"> |
| | | { 'location' : clientHost, |
| | | 'dsPath' : clientPath, |
| | | 'sourceInstanceHost' : server1Host, |
| | | 'sourceInstanceAdminPort' : server1.getAdminPort(), |
| | | 'replicationDnList' : [synchroSuffix] |
| | | } |
| | | </call> |
| | | |
| | | <call function="'testCase_Postamble'"/> |
| | | |
| | | </sequence> |
| | | |
| | | </testcase> |
| | | |
| | | |
| | | <testcase name="getTestCaseName('Run ldclt clients')"> |
| | | |
| | | <sequence> |
| | | |
| | | <call function="'testCase_Preamble'"/> |
| | | |
| | | <message> |
| | | 'replication_modify_multiple: Run ldclt add' |
| | | </message> |
| | | |
| | | <!--<timer duration="timerDuration"> |
| | | <sequence>--> |
| | | <parallel> |
| | | <block name="'ldclt-modify-threads-server1'"> |
| | | <sequence> |
| | | <message> |
| | | 'replication_modify_multiple: modify threads on %s:%s' \ |
| | | % (server1Host, server1.getPort()) |
| | | </message> |
| | | |
| | | <script> |
| | | opt1 = '-e delayedstartup=1' |
| | | opt2 = '-e rdn=\"uid:user.[RNDN(%s;%s;6)]\"' \ |
| | | % (lowRange, highRange) |
| | | opt3 = '-e attreplace=\"description: random modify XXXXXX\"' |
| | | opt4 = '-N %s -I 32 -v -q' % ldcltLoop |
| | | opts = '%s %s %s %s' % (opt1, opt2, opt3, opt4) |
| | | </script> |
| | | |
| | | <call function="'ldclt'"> |
| | | { 'location' : STAF_CLIENT_HOSTNAME, |
| | | 'dsInstanceHost' : server1Host, |
| | | 'dsInstancePort' : server1.getPort(), |
| | | 'dsInstanceDn' : server1.getRootDn(), |
| | | 'dsInstancePswd' : server1.getRootPwd(), |
| | | 'dsBaseDn' : baseDN, |
| | | 'ldcltOptions' : opts, |
| | | 'outputFile' : 'ldclt_modify-%s_1.res' % suffix, |
| | | 'outputPath' : ldcltDir |
| | | } |
| | | </call> |
| | | |
| | | </sequence> |
| | | </block> |
| | | |
| | | <block name="'ldclt-modify-threads-server2'"> |
| | | <sequence> |
| | | <message> |
| | | 'replication_modify_multiple: modify threads on %s:%s' \ |
| | | % (server2Host, server2.getPort()) |
| | | </message> |
| | | |
| | | <script> |
| | | opt1 = '-e delayedstartup=1' |
| | | opt2 = '-e rdn=\"uid:user.[RNDN(%s;%s;6)]\"' \ |
| | | % (lowRange, highRange) |
| | | opt3 = '-e attreplace=\"description: random modify XXXXXX\"' |
| | | opt4 = '-N %s -I 32 -v -q' % ldcltLoop |
| | | opts = '%s %s %s %s' % (opt1, opt2, opt3, opt4) |
| | | </script> |
| | | |
| | | <call function="'ldclt'"> |
| | | { 'location' : STAF_CLIENT_HOSTNAME, |
| | | 'dsInstanceHost' : server2Host, |
| | | 'dsInstancePort' : server2.getPort(), |
| | | 'dsInstanceDn' : server2.getRootDn(), |
| | | 'dsInstancePswd' : server2.getRootPwd(), |
| | | 'dsBaseDn' : baseDN, |
| | | 'ldcltOptions' : opts, |
| | | 'outputFile' : 'ldclt_modify-%s_2.res' % suffix, |
| | | 'outputPath' : ldcltDir |
| | | } |
| | | </call> |
| | | |
| | | </sequence> |
| | | </block> |
| | | |
| | | <block name="'ldclt-jvm'"> |
| | | <sequence> |
| | | <loop from="1" to="jvmLoop" var="loop"> |
| | | <sequence> |
| | | <message> |
| | | 'LOOP %s out of %s' % (loop, jvmLoop) |
| | | </message> |
| | | |
| | | <message> |
| | | 'replication_modify_multiple: save jvm information' |
| | | </message> |
| | | |
| | | <call function="'ldapSearchWithScript'"> |
| | | { 'location' : server1Host, |
| | | 'dsPath' : server1Path, |
| | | 'dsInstanceHost' : server1Host, |
| | | 'dsInstancePort' : server1.getPort(), |
| | | 'dsInstanceDn' : server1.getRootDn(), |
| | | 'dsInstancePswd' : server1.getRootPwd(), |
| | | 'dsBaseDN' : 'cn=JVM Memory Usage,cn=monitor', |
| | | 'dsFilter' : 'objectclass=*', |
| | | 'expectedRC' : 'noCheck', |
| | | 'outputFile' : 'jvm_%s_%s.out' \ |
| | | % (suffix, loop), |
| | | 'outputPath' : server1Dir |
| | | } |
| | | </call> |
| | | |
| | | <call function="'ldapSearchWithScript'"> |
| | | { 'location' : server2Host, |
| | | 'dsPath' : server2Path, |
| | | 'dsInstanceHost' : server2Host, |
| | | 'dsInstancePort' : server2.getPort(), |
| | | 'dsInstanceDn' : server2.getRootDn(), |
| | | 'dsInstancePswd' : server2.getRootPwd(), |
| | | 'dsBaseDN' : 'cn=JVM Memory Usage,cn=monitor', |
| | | 'dsFilter' : 'objectclass=*', |
| | | 'expectedRC' : 'noCheck', |
| | | 'outputFile' : 'jvm_%s_%s.out' \ |
| | | % (suffix, loop), |
| | | 'outputPath' : server2Dir |
| | | } |
| | | </call> |
| | | |
| | | <if expr="loop != jvmLoop"> |
| | | <call function="'Sleep'"> |
| | | { 'sleepForMilliSeconds' : jvmSleep } |
| | | </call> |
| | | </if> |
| | | |
| | | </sequence> |
| | | </loop> |
| | | </sequence> |
| | | </block> |
| | | </parallel> |
| | | <!--</sequence> |
| | | </timer> |
| | | |
| | | <script>timerRC = RC</script> |
| | | |
| | | <if expr="timerRC == 0"> |
| | | <sequence> |
| | | <message>'Timer exceeds %s' % timerDuration</message> |
| | | <tcstatus result="'fail'"/> |
| | | </sequence> |
| | | </if>--> |
| | | |
| | | <message> |
| | | 'Copy %s/ldclt_modify-%s_1.res from %s to %s on %s' % \ |
| | | (ldcltDir, suffix, STAF_CLIENT_HOSTNAME, logs.sut, STAXServiceMachine) |
| | | </message> |
| | | <call function="'copyFile'"> |
| | | { |
| | | 'location' : STAF_CLIENT_HOSTNAME, |
| | | 'srcfile' : '%s/ldclt_modify-%s_1.res' % (ldcltDir, suffix), |
| | | 'destfile' : '%s/ldclt_modify-%s_1.res' % (logs.sut, suffix), |
| | | 'remotehost' : STAXServiceMachine |
| | | } |
| | | </call> |
| | | |
| | | <message> |
| | | 'Copy %s/ldclt_modify-%s_2.res from %s to %s on %s' % \ |
| | | (ldcltDir, suffix, STAF_CLIENT_HOSTNAME, logs.sut, STAXServiceMachine) |
| | | </message> |
| | | <call function="'copyFile'"> |
| | | { |
| | | 'location' : STAF_CLIENT_HOSTNAME, |
| | | 'srcfile' : '%s/ldclt_modify-%s_2.res' % (ldcltDir, suffix), |
| | | 'destfile' : '%s/ldclt_modify-%s_2.res' % (logs.sut, suffix), |
| | | 'remotehost' : STAXServiceMachine |
| | | } |
| | | </call> |
| | | |
| | | <call function="'testCase_Postamble'"/> |
| | | |
| | | </sequence> |
| | | |
| | | </testcase> |
| | | |
| | | |
| | | |
| | | <testcase name="getTestCaseName('Check server is still running')"> |
| | | |
| | | <sequence> |
| | | |
| | | <call function="'testCase_Preamble'"/> |
| | | |
| | | <paralleliterate var="server" in="_topologyServerList" indexvar="i"> |
| | | <sequence> |
| | | <script> |
| | | serverPath = '%s/%s' % (server.getDir(), OPENDSNAME) |
| | | </script> |
| | | |
| | | <message> |
| | | 'replication_modify_multiple: Check server is still running on \ |
| | | %s:%s' % (server.getHostname(), server.getPort()) |
| | | </message> |
| | | |
| | | <!-- Modify entry on one of the servers --> |
| | | <call function="'isAlive'"> |
| | | { 'location' : server.getHostname(), |
| | | 'dsPath' : serverPath, |
| | | 'dsInstanceHost' : server.getHostname(), |
| | | 'dsInstancePort' : server.getPort(), |
| | | 'dsInstanceDn' : server.getRootDn(), |
| | | 'dsInstancePswd' : server.getRootPwd(), |
| | | 'noOfLoops' : 10, |
| | | 'noOfMilliSeconds' : 5000 |
| | | } |
| | | </call> |
| | | </sequence> |
| | | </paralleliterate> |
| | | |
| | | <call function="'testCase_Postamble'"/> |
| | | |
| | | </sequence> |
| | | |
| | | </testcase> |
| | | |
| | | |
| | | |
| | | <testcase name="getTestCaseName('Verify replication')"> |
| | | |
| | | <sequence> |
| | | |
| | | <call function="'testCase_Preamble'"/> |
| | | |
| | | <message> |
| | | 'replication_modify_multiple: Verify replication is still working' |
| | | </message> |
| | | |
| | | <!-- Verify the replication is still working among the servers in |
| | | the topology --> |
| | | <call function="'verifyReplication'"> |
| | | [ _topologyServerList, synchroSuffix ] |
| | | </call> |
| | | |
| | | <call function="'testCase_Postamble'"/> |
| | | |
| | | </sequence> |
| | | |
| | | </testcase> |
| | | |
| | | |
| | | |
| | | <testcase name="getTestCaseName('Verify tree synchronization')"> |
| | | |
| | | <sequence> |
| | | |
| | | <call function="'testCase_Preamble'"/> |
| | | |
| | | <message> |
| | | 'replication_modify_multiple: Verify the tree synchronization' |
| | | </message> |
| | | |
| | | <!-- Verify the synchronization of the trees among the servers in |
| | | the topology --> |
| | | <call function="'verifyTrees'"> |
| | | [ clientHost, clientPath, master, consumerList, synchroSuffix ] |
| | | </call> |
| | | |
| | | <call function="'testCase_Postamble'"/> |
| | | |
| | | </sequence> |
| | | |
| | | </testcase> |
| | | |
| | | |
| | | |
| | | <testcase name="getTestCaseName('Check replication status')"> |
| | | |
| | | <sequence> |
| | | |
| | | <call function="'testCase_Preamble'"/> |
| | | |
| | | <message> |
| | | 'replication_modify_multiple: Check replication status' |
| | | </message> |
| | | |
| | | <!-- Verify the synchronization of the trees among the servers in |
| | | the topology --> |
| | | <call function="'getReplicationStatus'"> |
| | | { 'location' : masterHost, |
| | | 'dsPath' : masterPath, |
| | | 'dsInstanceHost' : masterHost, |
| | | 'dsInstanceAdminPort' : master.getAdminPort(), |
| | | 'replicationDnList' : [synchroSuffix] |
| | | } |
| | | </call> |
| | | |
| | | <call function="'testCase_Postamble'"/> |
| | | |
| | | </sequence> |
| | | |
| | | </testcase> |
| | | |
| | | |
| | | <import machine="STAF_LOCAL_HOSTNAME" |
| | | file="'%s/../functional-tests/testcases/replication/replication_cleanup.xml' % (TESTS_DIR)"/> |
| | | <call function="'replication_cleanup'"> |
| | | { 'suiteSuffix' : suffix } |
| | | </call> |
| | | |
| | | <call function="'testSuite_Postamble'"/> |
| | | |
| | | </sequence> |
| | | |
| | | </block> |
| | | |
| | | </sequence> |
| | | |
| | | </function> |
| | | |
| | | </stax> |
| New file |
| | |
| | | <?xml version="1.0" encoding="UTF-8" standalone="no"?> |
| | | <!DOCTYPE stax SYSTEM "../../../shared/stax.dtd"> |
| | | <!-- |
| | | ! CDDL HEADER START |
| | | ! |
| | | ! The contents of this file are subject to the terms of the |
| | | ! Common Development and Distribution License, Version 1.0 only |
| | | ! (the "License"). You may not use this file except in compliance |
| | | ! with the License. |
| | | ! |
| | | ! You can obtain a copy of the license at |
| | | ! trunk/opends/resource/legal-notices/OpenDS.LICENSE |
| | | ! or https://OpenDS.dev.java.net/OpenDS.LICENSE. |
| | | ! See the License for the specific language governing permissions |
| | | ! and limitations under the License. |
| | | ! |
| | | ! When distributing Covered Code, include this CDDL HEADER in each |
| | | ! file and include the License file at |
| | | ! trunk/opends/resource/legal-notices/OpenDS.LICENSE. If applicable, |
| | | ! add the following below this CDDL HEADER, with the fields enclosed |
| | | ! by brackets "[]" replaced with your own identifying information: |
| | | ! Portions Copyright [yyyy] [name of copyright owner] |
| | | ! |
| | | ! CDDL HEADER END |
| | | ! |
| | | ! Copyright 2009 Sun Microsystems, Inc. |
| | | ! --> |
| | | <stax> |
| | | |
| | | <defaultcall function="replication_modifyrdn"/> |
| | | |
| | | <function name="replication_modifyrdn"> |
| | | |
| | | <sequence> |
| | | |
| | | <block name="'replication-modifyrdn'"> |
| | | |
| | | <sequence> |
| | | |
| | | <script> |
| | | if not CurrentTestPath.has_key('group'): |
| | | CurrentTestPath['group']='replication' |
| | | CurrentTestPath['suite']=STAXCurrentBlock |
| | | </script> |
| | | |
| | | <call function="'testSuite_Preamble'"/> |
| | | |
| | | <import machine="STAF_LOCAL_HOSTNAME" |
| | | file="'%s/../functional-tests/testcases/replication/replication_setup.xml' % (TESTS_DIR)"/> |
| | | <call function="'replication_setup'"/> |
| | | |
| | | <script> |
| | | ldcltLoop = testsDuration / 10 |
| | | lowRange = 100000 |
| | | highRange = lowRange + 2 * numberOfEntries |
| | | jvmLoop = testsDuration / 1800 + 1 |
| | | jvmSleep = 1800000 |
| | | baseDN = 'ou=People,%s' % synchroSuffix |
| | | ldcltDir = '%s/ldclt_dir' % TMPDIR |
| | | masterDir = '%s/..' % masterPath |
| | | ldifTemplate = '%s/%s_entries.template' \ |
| | | % (masterDir, numberOfEntries) |
| | | ldifFile = '%s/%s_entries.ldif' \ |
| | | % (masterDir, numberOfEntries) |
| | | totalEntries = numberOfEntries + 2 |
| | | |
| | | suffix = 'modifyrdn' |
| | | </script> |
| | | |
| | | |
| | | <testcase name="getTestCaseName('Preamble')"> |
| | | |
| | | <sequence> |
| | | |
| | | <call function="'testCase_Preamble'"/> |
| | | |
| | | <!-- Check if 'ldifFile' exists --> |
| | | <call function="'GetEntry'"> |
| | | { |
| | | 'location' : masterHost , |
| | | 'entry' : ldifFile , |
| | | 'attribute' : 'TYPE' |
| | | } |
| | | </call> |
| | | <if expr="RC == 48"> |
| | | <sequence> |
| | | <message> |
| | | 'replication_modifyrdn: File %s does not exist, create it' \ |
| | | % ldifFile |
| | | </message> |
| | | |
| | | <message> |
| | | 'replication_modifyrdn: Make a make-ldif template file' |
| | | </message> |
| | | |
| | | <call function="'MakeAMakeLdifTemplate'"> |
| | | { |
| | | 'numEntries' : numberOfEntries, |
| | | 'suffix' : synchroSuffix, |
| | | 'startFrom' : lowRange, |
| | | 'additionalAttributes' : True, |
| | | 'templateFile' : ldifTemplate, |
| | | 'templateLocation' : masterHost |
| | | } |
| | | </call> |
| | | |
| | | <message> |
| | | 'replication_modifyrdn: Make the ldif file' |
| | | </message> |
| | | |
| | | <call function="'MakeLdifWithScript'"> |
| | | { |
| | | 'location' : masterHost, |
| | | 'dsPath' : masterPath, |
| | | 'templateFile' : ldifTemplate, |
| | | 'ldifFile' : ldifFile |
| | | } |
| | | </call> |
| | | </sequence> |
| | | <else> |
| | | <message> |
| | | 'replication_modifyrdn: File %s exists, do nothing' \ |
| | | % ldifFile |
| | | </message> |
| | | </else> |
| | | </if> |
| | | |
| | | <message> |
| | | 'replication_modifyrdn: Import large ldif file' |
| | | </message> |
| | | |
| | | <!-- Stop "master" Directory Server --> |
| | | <call function="'StopDsWithScript'"> |
| | | { 'location' : masterHost, |
| | | 'dsPath' : masterPath, |
| | | 'dsHost' : masterHost, |
| | | 'dsAdminPort' : master.getAdminPort(), |
| | | 'dsBindDN' : master.getRootDn(), |
| | | 'dsBindPwd' : master.getRootPwd() |
| | | } |
| | | </call> |
| | | |
| | | <!-- Import data into "master" Directory Server --> |
| | | <call function="'ImportLdifWithScript'"> |
| | | { 'location' : masterHost, |
| | | 'dsPath' : masterPath, |
| | | 'dsBackEnd' : DIRECTORY_INSTANCE_BE, |
| | | 'dsLdifFile' : ldifFile |
| | | } |
| | | </call> |
| | | |
| | | <script> |
| | | returnString = STAXResult[0][1] |
| | | </script> |
| | | |
| | | <call function="'checktestString'"> |
| | | { 'returnString' : returnString, |
| | | 'expectedString' : 'Processed %s entries' % totalEntries |
| | | } |
| | | </call> |
| | | |
| | | <message> |
| | | 'replication_modifyrdn: Start DS running on %s:%s' % \ |
| | | (masterHost, master.getPort()) |
| | | </message> |
| | | |
| | | <!-- Start the Directory Server --> |
| | | <call function="'StartDsWithScript'"> |
| | | { 'location' : masterHost, |
| | | 'dsPath' : masterPath |
| | | } |
| | | </call> |
| | | |
| | | <!-- Wait for DS to start --> |
| | | <call function="'isAlive'"> |
| | | { 'location' : masterHost, |
| | | 'dsPath' : masterPath, |
| | | 'dsInstanceHost' : masterHost, |
| | | 'dsInstancePort' : master.getPort(), |
| | | 'dsInstanceDn' : master.getRootDn(), |
| | | 'dsInstancePswd' : master.getRootPwd(), |
| | | 'noOfLoops' : 10, |
| | | 'noOfMilliSeconds' : 5000 |
| | | } |
| | | </call> |
| | | |
| | | <!-- Perform the total update --> |
| | | <call function="'initializeReplication'"> |
| | | { 'location' : clientHost, |
| | | 'dsPath' : clientPath, |
| | | 'sourceInstanceHost' : masterHost, |
| | | 'sourceInstanceAdminPort' : master.getAdminPort(), |
| | | 'replicationDnList' : [synchroSuffix] |
| | | } |
| | | </call> |
| | | |
| | | <call function="'testCase_Postamble'"/> |
| | | |
| | | </sequence> |
| | | |
| | | </testcase> |
| | | |
| | | |
| | | <testcase name="getTestCaseName('Run ldclt clients')"> |
| | | |
| | | <sequence> |
| | | |
| | | <call function="'testCase_Preamble'"/> |
| | | |
| | | <message> |
| | | 'replication_modifyrdn: Run ldclt modify' |
| | | </message> |
| | | |
| | | <!--<timer duration="timerDuration"> |
| | | <sequence>--> |
| | | <parallel> |
| | | <block name="'ldclt-modifyrdn-threads'"> |
| | | <sequence> |
| | | |
| | | <message> |
| | | 'replication_modifyrdn: modifyrdn threads' |
| | | </message> |
| | | |
| | | <script> |
| | | opt1 = '-e delayedstartup=1' |
| | | opt2 = '-e rename,rdn=\"uid:user.[RNDN(%s;%s;6)]\"' \ |
| | | % (lowRange, highRange) |
| | | opt3 = '-N %s -I 68 -I 32 -v -q' % ldcltLoop |
| | | opts = '%s %s %s' % (opt1, opt2, opt3) |
| | | </script> |
| | | |
| | | <call function="'ldclt'"> |
| | | { 'location' : STAF_CLIENT_HOSTNAME, |
| | | 'dsInstanceHost' : masterHost, |
| | | 'dsInstancePort' : master.getPort(), |
| | | 'dsInstanceDn' : master.getRootDn(), |
| | | 'dsInstancePswd' : master.getRootPwd(), |
| | | 'dsBaseDn' : baseDN, |
| | | 'ldcltOptions' : opts, |
| | | 'outputFile' : 'ldclt_modifyrdn-%s.res' % suffix, |
| | | 'outputPath' : ldcltDir |
| | | } |
| | | </call> |
| | | |
| | | </sequence> |
| | | </block> |
| | | |
| | | <block name="'ldclt-jvm'"> |
| | | <sequence> |
| | | <loop from="1" to="jvmLoop" var="loop"> |
| | | <sequence> |
| | | <message> |
| | | 'LOOP %s out of %s' % (loop, jvmLoop) |
| | | </message> |
| | | |
| | | <message> |
| | | 'replication_modifyrdn: save jvm information' |
| | | </message> |
| | | |
| | | <call function="'ldapSearchWithScript'"> |
| | | { 'location' : masterHost, |
| | | 'dsPath' : masterPath, |
| | | 'dsInstanceHost' : masterHost, |
| | | 'dsInstancePort' : master.getPort(), |
| | | 'dsInstanceDn' : master.getRootDn(), |
| | | 'dsInstancePswd' : master.getRootPwd(), |
| | | 'dsBaseDN' : 'cn=JVM Memory Usage,cn=monitor', |
| | | 'dsFilter' : 'objectclass=*', |
| | | 'expectedRC' : 'noCheck', |
| | | 'outputFile' : 'jvm_%s_%s.out' % (suffix, loop), |
| | | 'outputPath' : masterDir |
| | | } |
| | | </call> |
| | | |
| | | <if expr="loop != jvmLoop"> |
| | | <call function="'Sleep'"> |
| | | { 'sleepForMilliSeconds' : jvmSleep } |
| | | </call> |
| | | </if> |
| | | |
| | | </sequence> |
| | | </loop> |
| | | </sequence> |
| | | </block> |
| | | </parallel> |
| | | <!--</sequence> |
| | | </timer> |
| | | |
| | | <script>timerRC = RC</script> |
| | | |
| | | <if expr="timerRC == 0"> |
| | | <sequence> |
| | | <message>'Timer exceeds %s' % timerDuration</message> |
| | | <tcstatus result="'fail'"/> |
| | | </sequence> |
| | | </if>--> |
| | | |
| | | <message> |
| | | 'Copy %s/ldclt_modifyrdn-%s.res from %s to %s on %s' % \ |
| | | (ldcltDir, suffix, STAF_CLIENT_HOSTNAME, logs.sut, STAXServiceMachine) |
| | | </message> |
| | | <call function="'copyFile'"> |
| | | { |
| | | 'location' : STAF_CLIENT_HOSTNAME, |
| | | 'srcfile' : '%s/ldclt_modifyrdn-%s.res' % (ldcltDir, suffix), |
| | | 'destfile' : '%s/ldclt_modifyrdn-%s.res' % (logs.sut, suffix), |
| | | 'remotehost' : STAXServiceMachine |
| | | } |
| | | </call> |
| | | |
| | | <call function="'testCase_Postamble'"/> |
| | | |
| | | </sequence> |
| | | |
| | | </testcase> |
| | | |
| | | |
| | | |
| | | <testcase name="getTestCaseName('Check server is still running')"> |
| | | |
| | | <sequence> |
| | | |
| | | <call function="'testCase_Preamble'"/> |
| | | |
| | | <paralleliterate var="server" in="_topologyServerList" indexvar="i"> |
| | | <sequence> |
| | | <script> |
| | | serverPath = '%s/%s' % (server.getDir(), OPENDSNAME) |
| | | </script> |
| | | |
| | | <message> |
| | | 'replication_modifyrdn: Check server is still running on \ |
| | | %s:%s' % (server.getHostname(), server.getPort()) |
| | | </message> |
| | | |
| | | <!-- Modify entry on one of the servers --> |
| | | <call function="'isAlive'"> |
| | | { 'location' : server.getHostname(), |
| | | 'dsPath' : serverPath, |
| | | 'dsInstanceHost' : server.getHostname(), |
| | | 'dsInstancePort' : server.getPort(), |
| | | 'dsInstanceDn' : server.getRootDn(), |
| | | 'dsInstancePswd' : server.getRootPwd(), |
| | | 'noOfLoops' : 10, |
| | | 'noOfMilliSeconds' : 5000 |
| | | } |
| | | </call> |
| | | </sequence> |
| | | </paralleliterate> |
| | | |
| | | <call function="'testCase_Postamble'"/> |
| | | |
| | | </sequence> |
| | | |
| | | </testcase> |
| | | |
| | | |
| | | <testcase name="getTestCaseName('Verify replication')"> |
| | | |
| | | <sequence> |
| | | |
| | | <call function="'testCase_Preamble'"/> |
| | | |
| | | <message> |
| | | 'replication_modifyrdn: Verify replication is still working' |
| | | </message> |
| | | |
| | | <!-- Verify the replication is still working among the servers in |
| | | the topology --> |
| | | <call function="'verifyReplication'"> |
| | | [ _topologyServerList, synchroSuffix ] |
| | | </call> |
| | | |
| | | <call function="'testCase_Postamble'"/> |
| | | |
| | | </sequence> |
| | | |
| | | </testcase> |
| | | |
| | | |
| | | |
| | | <testcase name="getTestCaseName('Verify tree synchronization')"> |
| | | |
| | | <sequence> |
| | | |
| | | <call function="'testCase_Preamble'"/> |
| | | |
| | | <message> |
| | | 'replication_modifyrdn: Verify the tree synchronization' |
| | | </message> |
| | | |
| | | <!-- Verify the synchronization of the trees among the servers in |
| | | the topology --> |
| | | <call function="'verifyTrees'"> |
| | | [ clientHost, clientPath, master, consumerList, synchroSuffix ] |
| | | </call> |
| | | |
| | | <call function="'testCase_Postamble'"/> |
| | | |
| | | </sequence> |
| | | |
| | | </testcase> |
| | | |
| | | |
| | | |
| | | <testcase name="getTestCaseName('Check replication status')"> |
| | | |
| | | <sequence> |
| | | |
| | | <call function="'testCase_Preamble'"/> |
| | | |
| | | <message> |
| | | 'replication_modifyrdn: Check replication status' |
| | | </message> |
| | | |
| | | <!-- Verify the synchronization of the trees among the servers in |
| | | the topology --> |
| | | <call function="'getReplicationStatus'"> |
| | | { 'location' : masterHost, |
| | | 'dsPath' : masterPath, |
| | | 'dsInstanceHost' : masterHost, |
| | | 'dsInstanceAdminPort' : master.getAdminPort(), |
| | | 'replicationDnList' : [synchroSuffix] |
| | | } |
| | | </call> |
| | | |
| | | <call function="'testCase_Postamble'"/> |
| | | |
| | | </sequence> |
| | | |
| | | </testcase> |
| | | |
| | | |
| | | <import machine="STAF_LOCAL_HOSTNAME" |
| | | file="'%s/../functional-tests/testcases/replication/replication_cleanup.xml' % (TESTS_DIR)"/> |
| | | <call function="'replication_cleanup'"> |
| | | { 'suiteSuffix' : suffix } |
| | | </call> |
| | | |
| | | <call function="'testSuite_Postamble'"/> |
| | | |
| | | </sequence> |
| | | |
| | | </block> |
| | | |
| | | </sequence> |
| | | |
| | | </function> |
| | | |
| | | </stax> |
| New file |
| | |
| | | <?xml version="1.0" encoding="UTF-8" standalone="no"?> |
| | | <!DOCTYPE stax SYSTEM "../../../shared/stax.dtd"> |
| | | <!-- |
| | | ! CDDL HEADER START |
| | | ! |
| | | ! The contents of this file are subject to the terms of the |
| | | ! Common Development and Distribution License, Version 1.0 only |
| | | ! (the "License"). You may not use this file except in compliance |
| | | ! with the License. |
| | | ! |
| | | ! You can obtain a copy of the license at |
| | | ! trunk/opends/resource/legal-notices/OpenDS.LICENSE |
| | | ! or https://OpenDS.dev.java.net/OpenDS.LICENSE. |
| | | ! See the License for the specific language governing permissions |
| | | ! and limitations under the License. |
| | | ! |
| | | ! When distributing Covered Code, include this CDDL HEADER in each |
| | | ! file and include the License file at |
| | | ! trunk/opends/resource/legal-notices/OpenDS.LICENSE. If applicable, |
| | | ! add the following below this CDDL HEADER, with the fields enclosed |
| | | ! by brackets "[]" replaced with your own identifying information: |
| | | ! Portions Copyright [yyyy] [name of copyright owner] |
| | | ! |
| | | ! CDDL HEADER END |
| | | ! |
| | | ! Copyright 2009 Sun Microsystems, Inc. |
| | | ! --> |
| | | <stax> |
| | | |
| | | <defaultcall function="replication_modifyrdn_multiple"/> |
| | | |
| | | <function name="replication_modifyrdn_multiple"> |
| | | |
| | | <sequence> |
| | | |
| | | <block name="'replication-modifyrdn-multiple'"> |
| | | |
| | | <sequence> |
| | | |
| | | <script> |
| | | if not CurrentTestPath.has_key('group'): |
| | | CurrentTestPath['group']='replication' |
| | | CurrentTestPath['suite']=STAXCurrentBlock |
| | | </script> |
| | | |
| | | <call function="'testSuite_Preamble'"/> |
| | | |
| | | <import machine="STAF_LOCAL_HOSTNAME" |
| | | file="'%s/../functional-tests/testcases/replication/replication_setup.xml' % (TESTS_DIR)"/> |
| | | <call function="'replication_setup'"/> |
| | | |
| | | <script> |
| | | ldcltLoop = testsDuration / 10 |
| | | lowRange = 100000 |
| | | highRange = lowRange + numberOfEntries |
| | | jvmLoop = testsDuration / 1800 + 1 |
| | | jvmSleep = 1800000 |
| | | baseDN = 'ou=People,%s' % synchroSuffix |
| | | |
| | | server1Host = server1.getHostname() |
| | | server1Path = '%s/%s' % (server1.getDir(),OPENDSNAME) |
| | | server1Dir = server1.getDir() |
| | | server2Host = server2.getHostname() |
| | | server2Path = '%s/%s' % (server2.getDir(),OPENDSNAME) |
| | | server2Dir = server2.getDir() |
| | | |
| | | ldifTemplate = '%s/%s_entries.template' \ |
| | | % (server1Dir, numberOfEntries) |
| | | ldifFile = '%s/%s_entries.ldif' \ |
| | | % (server1Dir, numberOfEntries) |
| | | totalEntries = numberOfEntries + 2 |
| | | |
| | | suffix = 'modifyrdn_multiple' |
| | | </script> |
| | | |
| | | |
| | | <testcase name="getTestCaseName('Preamble')"> |
| | | |
| | | <sequence> |
| | | |
| | | <call function="'testCase_Preamble'"/> |
| | | |
| | | <!-- Check if 'ldifFile' exists --> |
| | | <call function="'GetEntry'"> |
| | | { |
| | | 'location' : server1Host , |
| | | 'entry' : ldifFile , |
| | | 'attribute' : 'TYPE' |
| | | } |
| | | </call> |
| | | <if expr="RC == 48"> |
| | | <sequence> |
| | | <message> |
| | | 'replication_modifyrdn_multiple: File %s does not exist, create it' \ |
| | | % ldifFile |
| | | </message> |
| | | |
| | | <message> |
| | | 'replication_modifyrdn_multiple: Make a make-ldif template file' |
| | | </message> |
| | | |
| | | <call function="'MakeAMakeLdifTemplate'"> |
| | | { |
| | | 'numEntries' : numberOfEntries, |
| | | 'suffix' : synchroSuffix, |
| | | 'startFrom' : lowRange, |
| | | 'additionalAttributes' : True, |
| | | 'templateFile' : ldifTemplate, |
| | | 'templateLocation' : server1Host |
| | | } |
| | | </call> |
| | | |
| | | <message> |
| | | 'replication_modifyrdn_multiple: Make the ldif file' |
| | | </message> |
| | | |
| | | <call function="'MakeLdifWithScript'"> |
| | | { |
| | | 'location' : server1Host, |
| | | 'dsPath' : server1Path, |
| | | 'templateFile' : ldifTemplate, |
| | | 'ldifFile' : ldifFile |
| | | } |
| | | </call> |
| | | </sequence> |
| | | <else> |
| | | <message> |
| | | 'replication_modifyrdn_multiple: File %s exists, do nothing' % ldifFile |
| | | </message> |
| | | </else> |
| | | </if> |
| | | |
| | | <message> |
| | | 'replication_modifyrdn_multiple: Import large ldif file' |
| | | </message> |
| | | |
| | | <!-- Stop "server1" Directory Server --> |
| | | <call function="'StopDsWithScript'"> |
| | | { 'location' : server1Host, |
| | | 'dsPath' : server1Path, |
| | | 'dsHost' : server1Host, |
| | | 'dsAdminPort' : server1.getAdminPort(), |
| | | 'dsBindDN' : server1.getRootDn(), |
| | | 'dsBindPwd' : server1.getRootPwd() |
| | | } |
| | | </call> |
| | | |
| | | <!-- Import data into "server1" Directory Server --> |
| | | <call function="'ImportLdifWithScript'"> |
| | | { 'location' : server1Host, |
| | | 'dsPath' : server1Path, |
| | | 'dsBackEnd' : DIRECTORY_INSTANCE_BE, |
| | | 'dsLdifFile' : ldifFile |
| | | } |
| | | </call> |
| | | |
| | | <script> |
| | | returnString = STAXResult[0][1] |
| | | </script> |
| | | |
| | | <call function="'checktestString'"> |
| | | { 'returnString' : returnString, |
| | | 'expectedString' : 'Processed %s entries' % totalEntries |
| | | } |
| | | </call> |
| | | |
| | | <message> |
| | | 'replication_modifyrdn_multiple: Start DS running on %s:%s' % \ |
| | | (server1Host, server1.getPort()) |
| | | </message> |
| | | |
| | | <!-- Start the Directory Server --> |
| | | <call function="'StartDsWithScript'"> |
| | | { 'location' : server1Host, |
| | | 'dsPath' : server1Path |
| | | } |
| | | </call> |
| | | |
| | | <!-- Wait for DS to start --> |
| | | <call function="'isAlive'"> |
| | | { 'location' : server1Host, |
| | | 'dsPath' : server1Path, |
| | | 'dsInstanceHost' : server1Host, |
| | | 'dsInstancePort' : server1.getPort(), |
| | | 'dsInstanceDn' : server1.getRootDn(), |
| | | 'dsInstancePswd' : server1.getRootPwd(), |
| | | 'noOfLoops' : 10, |
| | | 'noOfMilliSeconds' : 5000 |
| | | } |
| | | </call> |
| | | |
| | | <!-- Perform the total update --> |
| | | <call function="'initializeReplication'"> |
| | | { 'location' : clientHost, |
| | | 'dsPath' : clientPath, |
| | | 'sourceInstanceHost' : server1Host, |
| | | 'sourceInstanceAdminPort' : server1.getAdminPort(), |
| | | 'replicationDnList' : [synchroSuffix] |
| | | } |
| | | </call> |
| | | |
| | | <call function="'testCase_Postamble'"/> |
| | | |
| | | </sequence> |
| | | |
| | | </testcase> |
| | | |
| | | |
| | | <testcase name="getTestCaseName('Run ldclt clients')"> |
| | | |
| | | <sequence> |
| | | |
| | | <call function="'testCase_Preamble'"/> |
| | | |
| | | <message> |
| | | 'replication_modifyrdn_multiple: Run ldclt add' |
| | | </message> |
| | | |
| | | <!--<timer duration="timerDuration"> |
| | | <sequence>--> |
| | | <parallel> |
| | | <block name="'ldclt-modifyrdn-threads-server1'"> |
| | | <sequence> |
| | | |
| | | <message> |
| | | 'replication_modifyrdn: modifyrdn threads on %s:%s' \ |
| | | % (server1Host, server1.getPort()) |
| | | </message> |
| | | |
| | | <script> |
| | | opt1 = '-e delayedstartup=1' |
| | | opt2 = '-e rename,rdn=\"uid:user.[RNDN(%s;%s;6)]\"' \ |
| | | % (lowRange, highRange) |
| | | opt3 = '-N %s -I 68 -I 32 -v -q' % ldcltLoop |
| | | opts = '%s %s %s' % (opt1, opt2, opt3) |
| | | </script> |
| | | |
| | | <call function="'ldclt'"> |
| | | { 'location' : STAF_CLIENT_HOSTNAME, |
| | | 'dsInstanceHost' : server1Host, |
| | | 'dsInstancePort' : server1.getPort(), |
| | | 'dsInstanceDn' : server1.getRootDn(), |
| | | 'dsInstancePswd' : server1.getRootPwd(), |
| | | 'dsBaseDn' : baseDN, |
| | | 'ldcltOptions' : opts, |
| | | 'outputFile' : 'ldclt_modifyrdn-%s_1.res' % suffix, |
| | | 'outputPath' : ldcltDir |
| | | } |
| | | </call> |
| | | |
| | | </sequence> |
| | | </block> |
| | | |
| | | <block name="'ldclt-modifyrdn-threads-server2'"> |
| | | <sequence> |
| | | |
| | | <message> |
| | | 'replication_modifyrdn: modifyrdn threads on %s:%s' \ |
| | | % (server2Host, server2.getPort()) |
| | | </message> |
| | | |
| | | <script> |
| | | opt1 = '-e delayedstartup=1' |
| | | opt2 = '-e rename,rdn=\"uid:user.[RNDN(%s;%s;6)]\"' \ |
| | | % (lowRange, highRange) |
| | | opt3 = '-N %s -I 68 -I 32 -v -q' % ldcltLoop |
| | | opts = '%s %s %s' % (opt1, opt2, opt3) |
| | | </script> |
| | | |
| | | <call function="'ldclt'"> |
| | | { 'location' : STAF_CLIENT_HOSTNAME, |
| | | 'dsInstanceHost' : server2Host, |
| | | 'dsInstancePort' : server2.getPort(), |
| | | 'dsInstanceDn' : server2.getRootDn(), |
| | | 'dsInstancePswd' : server2.getRootPwd(), |
| | | 'dsBaseDn' : baseDN, |
| | | 'ldcltOptions' : opts, |
| | | 'outputFile' : 'ldclt_modifyrdn-%s_2.res' % suffix, |
| | | 'outputPath' : ldcltDir |
| | | } |
| | | </call> |
| | | |
| | | </sequence> |
| | | </block> |
| | | |
| | | <block name="'ldclt-jvm'"> |
| | | <sequence> |
| | | <loop from="1" to="jvmLoop" var="loop"> |
| | | <sequence> |
| | | <message> |
| | | 'LOOP %s out of %s' % (loop, jvmLoop) |
| | | </message> |
| | | |
| | | <message> |
| | | 'replication_modifyrdn_multiple: save jvm information' |
| | | </message> |
| | | |
| | | <call function="'ldapSearchWithScript'"> |
| | | { 'location' : server1Host, |
| | | 'dsPath' : server1Path, |
| | | 'dsInstanceHost' : server1Host, |
| | | 'dsInstancePort' : server1.getPort(), |
| | | 'dsInstanceDn' : server1.getRootDn(), |
| | | 'dsInstancePswd' : server1.getRootPwd(), |
| | | 'dsBaseDN' : 'cn=JVM Memory Usage,cn=monitor', |
| | | 'dsFilter' : 'objectclass=*', |
| | | 'expectedRC' : 'noCheck', |
| | | 'outputFile' : 'jvm_%s_%s.out' \ |
| | | % (suffix, loop), |
| | | 'outputPath' : server1Dir |
| | | } |
| | | </call> |
| | | |
| | | <call function="'ldapSearchWithScript'"> |
| | | { 'location' : server2Host, |
| | | 'dsPath' : server2Path, |
| | | 'dsInstanceHost' : server2Host, |
| | | 'dsInstancePort' : server2.getPort(), |
| | | 'dsInstanceDn' : server2.getRootDn(), |
| | | 'dsInstancePswd' : server2.getRootPwd(), |
| | | 'dsBaseDN' : 'cn=JVM Memory Usage,cn=monitor', |
| | | 'dsFilter' : 'objectclass=*', |
| | | 'expectedRC' : 'noCheck', |
| | | 'outputFile' : 'jvm_%s_%s.out' \ |
| | | % (suffix, loop), |
| | | 'outputPath' : server2Dir |
| | | } |
| | | </call> |
| | | |
| | | <if expr="loop != jvmLoop"> |
| | | <call function="'Sleep'"> |
| | | { 'sleepForMilliSeconds' : jvmSleep } |
| | | </call> |
| | | </if> |
| | | |
| | | </sequence> |
| | | </loop> |
| | | </sequence> |
| | | </block> |
| | | </parallel> |
| | | <!--</sequence> |
| | | </timer> |
| | | |
| | | <script>timerRC = RC</script> |
| | | |
| | | <if expr="timerRC == 0"> |
| | | <sequence> |
| | | <message>'Timer exceeds %s' % timerDuration</message> |
| | | <tcstatus result="'fail'"/> |
| | | </sequence> |
| | | </if>--> |
| | | |
| | | <message> |
| | | 'Copy %s/ldclt_modifyrdn-%s_1.res from %s to %s on %s' % \ |
| | | (ldcltDir, suffix, STAF_CLIENT_HOSTNAME, logs.sut, STAXServiceMachine) |
| | | </message> |
| | | <call function="'copyFile'"> |
| | | { |
| | | 'location' : STAF_CLIENT_HOSTNAME, |
| | | 'srcfile' : '%s/ldclt_modifyrdn-%s_1.res' % (ldcltDir, suffix), |
| | | 'destfile' : '%s/ldclt_modiryrdn-%s_1.res' % (logs.sut, suffix), |
| | | 'remotehost' : STAXServiceMachine |
| | | } |
| | | </call> |
| | | |
| | | <message> |
| | | 'Copy %s/ldclt_modifyrdn-%s_2.res from %s to %s on %s' % \ |
| | | (ldcltDir, suffix, STAF_CLIENT_HOSTNAME, logs.sut, STAXServiceMachine) |
| | | </message> |
| | | <call function="'copyFile'"> |
| | | { |
| | | 'location' : STAF_CLIENT_HOSTNAME, |
| | | 'srcfile' : '%s/ldclt_modifyrdn-%s_2.res' % (ldcltDir, suffix), |
| | | 'destfile' : '%s/ldclt_modifyrdn-%s_2.res' % (logs.sut, suffix), |
| | | 'remotehost' : STAXServiceMachine |
| | | } |
| | | </call> |
| | | |
| | | <call function="'testCase_Postamble'"/> |
| | | |
| | | </sequence> |
| | | |
| | | </testcase> |
| | | |
| | | |
| | | |
| | | <testcase name="getTestCaseName('Check server is still running')"> |
| | | |
| | | <sequence> |
| | | |
| | | <call function="'testCase_Preamble'"/> |
| | | |
| | | <paralleliterate var="server" in="_topologyServerList" indexvar="i"> |
| | | <sequence> |
| | | <script> |
| | | serverPath = '%s/%s' % (server.getDir(), OPENDSNAME) |
| | | </script> |
| | | |
| | | <message> |
| | | 'replication_modifyrdn_multiple: Check server is still running on \ |
| | | %s:%s' % (server.getHostname(), server.getPort()) |
| | | </message> |
| | | |
| | | <!-- Modify entry on one of the servers --> |
| | | <call function="'isAlive'"> |
| | | { 'location' : server.getHostname(), |
| | | 'dsPath' : serverPath, |
| | | 'dsInstanceHost' : server.getHostname(), |
| | | 'dsInstancePort' : server.getPort(), |
| | | 'dsInstanceDn' : server.getRootDn(), |
| | | 'dsInstancePswd' : server.getRootPwd(), |
| | | 'noOfLoops' : 10, |
| | | 'noOfMilliSeconds' : 5000 |
| | | } |
| | | </call> |
| | | </sequence> |
| | | </paralleliterate> |
| | | |
| | | <call function="'testCase_Postamble'"/> |
| | | |
| | | </sequence> |
| | | |
| | | </testcase> |
| | | |
| | | |
| | | |
| | | <testcase name="getTestCaseName('Verify replication')"> |
| | | |
| | | <sequence> |
| | | |
| | | <call function="'testCase_Preamble'"/> |
| | | |
| | | <message> |
| | | 'replication_modifyrdn_multiple: Verify replication is still working' |
| | | </message> |
| | | |
| | | <!-- Verify the replication is still working among the servers in |
| | | the topology --> |
| | | <call function="'verifyReplication'"> |
| | | [ _topologyServerList, synchroSuffix ] |
| | | </call> |
| | | |
| | | <call function="'testCase_Postamble'"/> |
| | | |
| | | </sequence> |
| | | |
| | | </testcase> |
| | | |
| | | |
| | | |
| | | <testcase name="getTestCaseName('Verify tree synchronization')"> |
| | | |
| | | <sequence> |
| | | |
| | | <call function="'testCase_Preamble'"/> |
| | | |
| | | <message> |
| | | 'replication_modifyrdn_multiple: Verify the tree synchronization' |
| | | </message> |
| | | |
| | | <!-- Verify the synchronization of the trees among the servers in |
| | | the topology --> |
| | | <call function="'verifyTrees'"> |
| | | [ clientHost, clientPath, master, consumerList, synchroSuffix ] |
| | | </call> |
| | | |
| | | <call function="'testCase_Postamble'"/> |
| | | |
| | | </sequence> |
| | | |
| | | </testcase> |
| | | |
| | | |
| | | |
| | | <testcase name="getTestCaseName('Check replication status')"> |
| | | |
| | | <sequence> |
| | | |
| | | <call function="'testCase_Preamble'"/> |
| | | |
| | | <message> |
| | | 'replication_modifyrdn_multiple: Check replication status' |
| | | </message> |
| | | |
| | | <!-- Verify the synchronization of the trees among the servers in |
| | | the topology --> |
| | | <call function="'getReplicationStatus'"> |
| | | { 'location' : masterHost, |
| | | 'dsPath' : masterPath, |
| | | 'dsInstanceHost' : masterHost, |
| | | 'dsInstanceAdminPort' : master.getAdminPort(), |
| | | 'replicationDnList' : [synchroSuffix] |
| | | } |
| | | </call> |
| | | |
| | | <call function="'testCase_Postamble'"/> |
| | | |
| | | </sequence> |
| | | |
| | | </testcase> |
| | | |
| | | |
| | | <import machine="STAF_LOCAL_HOSTNAME" |
| | | file="'%s/../functional-tests/testcases/replication/replication_cleanup.xml' % (TESTS_DIR)"/> |
| | | <call function="'replication_cleanup'"> |
| | | { 'suiteSuffix' : suffix } |
| | | </call> |
| | | |
| | | <call function="'testSuite_Postamble'"/> |
| | | |
| | | </sequence> |
| | | |
| | | </block> |
| | | |
| | | </sequence> |
| | | |
| | | </function> |
| | | |
| | | </stax> |
| New file |
| | |
| | | <?xml version="1.0" encoding="UTF-8" standalone="no"?> |
| | | <!DOCTYPE stax SYSTEM "../../../shared/stax.dtd"> |
| | | <!-- |
| | | ! CDDL HEADER START |
| | | ! |
| | | ! The contents of this file are subject to the terms of the |
| | | ! Common Development and Distribution License, Version 1.0 only |
| | | ! (the "License"). You may not use this file except in compliance |
| | | ! with the License. |
| | | ! |
| | | ! You can obtain a copy of the license at |
| | | ! trunk/opends/resource/legal-notices/OpenDS.LICENSE |
| | | ! or https://OpenDS.dev.java.net/OpenDS.LICENSE. |
| | | ! See the License for the specific language governing permissions |
| | | ! and limitations under the License. |
| | | ! |
| | | ! When distributing Covered Code, include this CDDL HEADER in each |
| | | ! file and include the License file at |
| | | ! trunk/opends/resource/legal-notices/OpenDS.LICENSE. If applicable, |
| | | ! add the following below this CDDL HEADER, with the fields enclosed |
| | | ! by brackets "[]" replaced with your own identifying information: |
| | | ! Portions Copyright [yyyy] [name of copyright owner] |
| | | ! |
| | | ! CDDL HEADER END |
| | | ! |
| | | ! Copyright 2009 Sun Microsystems, Inc. |
| | | ! --> |
| | | <stax> |
| | | |
| | | <defaultcall function="replication_search"/> |
| | | |
| | | <function name="replication_search"> |
| | | |
| | | <sequence> |
| | | |
| | | <block name="'replication-search'"> |
| | | |
| | | <sequence> |
| | | |
| | | <script> |
| | | if not CurrentTestPath.has_key('group'): |
| | | CurrentTestPath['group']='replication' |
| | | CurrentTestPath['suite']=STAXCurrentBlock |
| | | </script> |
| | | |
| | | <call function="'testSuite_Preamble'"/> |
| | | |
| | | <import machine="STAF_LOCAL_HOSTNAME" |
| | | file="'%s/../functional-tests/testcases/replication/replication_setup.xml' % (TESTS_DIR)"/> |
| | | <call function="'replication_setup'"/> |
| | | |
| | | <script> |
| | | ldcltLoop = testsDuration / 10 |
| | | lowRange = 100000 |
| | | highRange = lowRange + numberOfEntries |
| | | jvmLoop = testsDuration / 1800 + 1 |
| | | jvmSleep = 1800000 |
| | | baseDN = 'ou=People,%s' % synchroSuffix |
| | | ldcltDir = '%s/ldclt_dir' % TMPDIR |
| | | masterDir = '%s/..' % masterPath |
| | | ldifTemplate = '%s/%s_entries.template' \ |
| | | % (masterDir, numberOfEntries) |
| | | ldifFile = '%s/%s_entries.ldif' \ |
| | | % (masterDir, numberOfEntries) |
| | | totalEntries = numberOfEntries + 2 |
| | | |
| | | suffix = 'search' |
| | | </script> |
| | | |
| | | |
| | | <testcase name="getTestCaseName('Preamble')"> |
| | | |
| | | <sequence> |
| | | |
| | | <call function="'testCase_Preamble'"/> |
| | | |
| | | <!-- Check if 'ldifFile' exists --> |
| | | <call function="'GetEntry'"> |
| | | { |
| | | 'location' : masterHost , |
| | | 'entry' : ldifFile , |
| | | 'attribute' : 'TYPE' |
| | | } |
| | | </call> |
| | | <if expr="RC == 48"> |
| | | <sequence> |
| | | <message> |
| | | 'replication_search: File %s does not exist, create it' \ |
| | | % ldifFile |
| | | </message> |
| | | |
| | | <message> |
| | | 'replication_search: Make a make-ldif template file' |
| | | </message> |
| | | |
| | | <call function="'MakeAMakeLdifTemplate'"> |
| | | { |
| | | 'numEntries' : numberOfEntries, |
| | | 'suffix' : synchroSuffix, |
| | | 'startFrom' : lowRange, |
| | | 'additionalAttributes' : True, |
| | | 'templateFile' : ldifTemplate, |
| | | 'templateLocation' : masterHost |
| | | } |
| | | </call> |
| | | |
| | | <message> |
| | | 'replication_search: Make the ldif file' |
| | | </message> |
| | | |
| | | <call function="'MakeLdifWithScript'"> |
| | | { |
| | | 'location' : masterHost, |
| | | 'dsPath' : masterPath, |
| | | 'templateFile' : ldifTemplate, |
| | | 'ldifFile' : ldifFile |
| | | } |
| | | </call> |
| | | </sequence> |
| | | <else> |
| | | <message> |
| | | 'replication_search: File %s exists, do nothing' \ |
| | | % ldifFile |
| | | </message> |
| | | </else> |
| | | </if> |
| | | |
| | | <message> |
| | | 'replication_search: Import large ldif file' |
| | | </message> |
| | | |
| | | <!-- Stop "master" Directory Server --> |
| | | <call function="'StopDsWithScript'"> |
| | | { 'location' : masterHost, |
| | | 'dsPath' : masterPath, |
| | | 'dsHost' : masterHost, |
| | | 'dsAdminPort' : master.getAdminPort(), |
| | | 'dsBindDN' : master.getRootDn(), |
| | | 'dsBindPwd' : master.getRootPwd() |
| | | } |
| | | </call> |
| | | |
| | | <!-- Import data into "master" Directory Server --> |
| | | <call function="'ImportLdifWithScript'"> |
| | | { 'location' : masterHost, |
| | | 'dsPath' : masterPath, |
| | | 'dsBackEnd' : DIRECTORY_INSTANCE_BE, |
| | | 'dsLdifFile' : ldifFile |
| | | } |
| | | </call> |
| | | |
| | | <script> |
| | | returnString = STAXResult[0][1] |
| | | </script> |
| | | |
| | | <call function="'checktestString'"> |
| | | { 'returnString' : returnString, |
| | | 'expectedString' : 'Processed 10002 entries' |
| | | } |
| | | </call> |
| | | |
| | | <message> |
| | | 'replication_search: Start DS running on %s:%s' % \ |
| | | (masterHost, master.getPort()) |
| | | </message> |
| | | |
| | | <!-- Start the Directory Server --> |
| | | <call function="'StartDsWithScript'"> |
| | | { 'location' : masterHost, |
| | | 'dsPath' : masterPath |
| | | } |
| | | </call> |
| | | |
| | | <!-- Wait for DS to start --> |
| | | <call function="'isAlive'"> |
| | | { 'location' : masterHost, |
| | | 'dsPath' : masterPath, |
| | | 'dsInstanceHost' : masterHost, |
| | | 'dsInstancePort' : master.getPort(), |
| | | 'dsInstanceDn' : master.getRootDn(), |
| | | 'dsInstancePswd' : master.getRootPwd(), |
| | | 'noOfLoops' : 10, |
| | | 'noOfMilliSeconds' : 5000 |
| | | } |
| | | </call> |
| | | |
| | | <!-- Perform the total update --> |
| | | <call function="'initializeReplication'"> |
| | | { 'location' : clientHost, |
| | | 'dsPath' : clientPath, |
| | | 'sourceInstanceHost' : masterHost, |
| | | 'sourceInstanceAdminPort' : master.getAdminPort(), |
| | | 'replicationDnList' : [synchroSuffix] |
| | | } |
| | | </call> |
| | | |
| | | <call function="'testCase_Postamble'"/> |
| | | |
| | | </sequence> |
| | | |
| | | </testcase> |
| | | |
| | | |
| | | <testcase name="getTestCaseName('Run ldclt clients')"> |
| | | |
| | | <sequence> |
| | | |
| | | <call function="'testCase_Preamble'"/> |
| | | |
| | | <message> |
| | | 'replication_search: Run ldclt search' |
| | | </message> |
| | | |
| | | <!--<timer duration="timerDuration"> |
| | | <sequence>--> |
| | | <parallel> |
| | | <block name="'ldclt-search-threads'"> |
| | | <sequence> |
| | | |
| | | <message> |
| | | 'replication_search: search threads' |
| | | </message> |
| | | |
| | | <script> |
| | | opt1 = '-e delayedstartup=1 -r %s -R %s' \ |
| | | % (lowRange, highRange) |
| | | opt2 = '-e esearch,random -f uid=user.XXXXXX' |
| | | opt3 = '-N %s -I 32 -v -q' % ldcltLoop |
| | | opts = '%s %s %s' % (opt1, opt2, opt3) |
| | | </script> |
| | | |
| | | <call function="'ldclt'"> |
| | | { 'location' : STAF_CLIENT_HOSTNAME, |
| | | 'dsInstanceHost' : masterHost, |
| | | 'dsInstancePort' : master.getPort(), |
| | | 'dsInstanceDn' : master.getRootDn(), |
| | | 'dsInstancePswd' : master.getRootPwd(), |
| | | 'dsBaseDn' : baseDN, |
| | | 'ldcltOptions' : opts, |
| | | 'outputFile' : 'ldclt_search-%s.res' % suffix, |
| | | 'outputPath' : ldcltDir |
| | | } |
| | | </call> |
| | | |
| | | </sequence> |
| | | </block> |
| | | |
| | | <block name="'ldclt-jvm'"> |
| | | <sequence> |
| | | <loop from="1" to="jvmLoop" var="loop"> |
| | | <sequence> |
| | | <message> |
| | | 'LOOP %s out of %s' % (loop, jvmLoop) |
| | | </message> |
| | | |
| | | <message> |
| | | 'replication_search: save jvm information' |
| | | </message> |
| | | |
| | | <call function="'ldapSearchWithScript'"> |
| | | { 'location' : masterHost, |
| | | 'dsPath' : masterPath, |
| | | 'dsInstanceHost' : masterHost, |
| | | 'dsInstancePort' : master.getPort(), |
| | | 'dsInstanceDn' : master.getRootDn(), |
| | | 'dsInstancePswd' : master.getRootPwd(), |
| | | 'dsBaseDN' : 'cn=JVM Memory Usage,cn=monitor', |
| | | 'dsFilter' : 'objectclass=*', |
| | | 'expectedRC' : 'noCheck', |
| | | 'outputFile' : 'jvm_%s_%s.out' % (suffix, loop), |
| | | 'outputPath' : masterDir |
| | | } |
| | | </call> |
| | | |
| | | <if expr="loop != jvmLoop"> |
| | | <call function="'Sleep'"> |
| | | { 'sleepForMilliSeconds' : jvmSleep } |
| | | </call> |
| | | </if> |
| | | |
| | | </sequence> |
| | | </loop> |
| | | </sequence> |
| | | </block> |
| | | </parallel> |
| | | <!--</sequence> |
| | | </timer> |
| | | |
| | | <script>timerRC = RC</script> |
| | | |
| | | <if expr="timerRC == 0"> |
| | | <sequence> |
| | | <message>'Timer exceeds %s' % timerDuration</message> |
| | | <tcstatus result="'fail'"/> |
| | | </sequence> |
| | | </if>--> |
| | | |
| | | <message> |
| | | 'Copy %s/ldclt_search-%s.res from %s to %s on %s' % \ |
| | | (ldcltDir, suffix, STAF_CLIENT_HOSTNAME, logs.sut, STAXServiceMachine) |
| | | </message> |
| | | <call function="'copyFile'"> |
| | | { |
| | | 'location' : STAF_CLIENT_HOSTNAME, |
| | | 'srcfile' : '%s/ldclt_search-%s.res' % (ldcltDir, suffix), |
| | | 'destfile' : '%s/ldclt_search-%s.res' % (logs.sut, suffix), |
| | | 'remotehost' : STAXServiceMachine |
| | | } |
| | | </call> |
| | | |
| | | <call function="'testCase_Postamble'"/> |
| | | |
| | | </sequence> |
| | | |
| | | </testcase> |
| | | |
| | | |
| | | |
| | | <testcase name="getTestCaseName('Check server is still running')"> |
| | | |
| | | <sequence> |
| | | |
| | | <call function="'testCase_Preamble'"/> |
| | | |
| | | <paralleliterate var="server" in="_topologyServerList" indexvar="i"> |
| | | <sequence> |
| | | <script> |
| | | serverPath = '%s/%s' % (server.getDir(), OPENDSNAME) |
| | | </script> |
| | | |
| | | <message> |
| | | 'replication_search: Check server is still running on \ |
| | | %s:%s' % (server.getHostname(), server.getPort()) |
| | | </message> |
| | | |
| | | <!-- Modify entry on one of the servers --> |
| | | <call function="'isAlive'"> |
| | | { 'location' : server.getHostname(), |
| | | 'dsPath' : serverPath, |
| | | 'dsInstanceHost' : server.getHostname(), |
| | | 'dsInstancePort' : server.getPort(), |
| | | 'dsInstanceDn' : server.getRootDn(), |
| | | 'dsInstancePswd' : server.getRootPwd(), |
| | | 'noOfLoops' : 10, |
| | | 'noOfMilliSeconds' : 5000 |
| | | } |
| | | </call> |
| | | </sequence> |
| | | </paralleliterate> |
| | | |
| | | <call function="'testCase_Postamble'"/> |
| | | |
| | | </sequence> |
| | | |
| | | </testcase> |
| | | |
| | | |
| | | <testcase name="getTestCaseName('Verify replication')"> |
| | | |
| | | <sequence> |
| | | |
| | | <call function="'testCase_Preamble'"/> |
| | | |
| | | <message> |
| | | 'replication_search: Verify replication is still working' |
| | | </message> |
| | | |
| | | <!-- Verify the replication is still working among the servers in |
| | | the topology --> |
| | | <call function="'verifyReplication'"> |
| | | [ _topologyServerList, synchroSuffix ] |
| | | </call> |
| | | |
| | | <call function="'testCase_Postamble'"/> |
| | | |
| | | </sequence> |
| | | |
| | | </testcase> |
| | | |
| | | |
| | | |
| | | <testcase name="getTestCaseName('Verify tree synchronization')"> |
| | | |
| | | <sequence> |
| | | |
| | | <call function="'testCase_Preamble'"/> |
| | | |
| | | <message> |
| | | 'replication_search: Verify the tree synchronization' |
| | | </message> |
| | | |
| | | <!-- Verify the synchronization of the trees among the servers in |
| | | the topology --> |
| | | <call function="'verifyTrees'"> |
| | | [ clientHost, clientPath, master, consumerList, synchroSuffix ] |
| | | </call> |
| | | |
| | | <call function="'testCase_Postamble'"/> |
| | | |
| | | </sequence> |
| | | |
| | | </testcase> |
| | | |
| | | |
| | | |
| | | <testcase name="getTestCaseName('Check replication status')"> |
| | | |
| | | <sequence> |
| | | |
| | | <call function="'testCase_Preamble'"/> |
| | | |
| | | <message> |
| | | 'replication_search: Check replication status' |
| | | </message> |
| | | |
| | | <!-- Verify the synchronization of the trees among the servers in |
| | | the topology --> |
| | | <call function="'getReplicationStatus'"> |
| | | { 'location' : masterHost, |
| | | 'dsPath' : masterPath, |
| | | 'dsInstanceHost' : masterHost, |
| | | 'dsInstanceAdminPort' : master.getAdminPort(), |
| | | 'replicationDnList' : [synchroSuffix] |
| | | } |
| | | </call> |
| | | |
| | | <call function="'testCase_Postamble'"/> |
| | | |
| | | </sequence> |
| | | |
| | | </testcase> |
| | | |
| | | |
| | | <import machine="STAF_LOCAL_HOSTNAME" |
| | | file="'%s/../functional-tests/testcases/replication/replication_cleanup.xml' % (TESTS_DIR)"/> |
| | | <call function="'replication_cleanup'"> |
| | | { 'suiteSuffix' : suffix } |
| | | </call> |
| | | |
| | | <call function="'testSuite_Postamble'"/> |
| | | |
| | | </sequence> |
| | | |
| | | </block> |
| | | |
| | | </sequence> |
| | | |
| | | </function> |
| | | |
| | | </stax> |