From: Thierry Parmentelat Date: Thu, 20 Oct 2011 17:15:27 +0000 (+0200) Subject: first attempt at testing pl+pg rspec styles X-Git-Tag: tests-5.0-30~9 X-Git-Url: http://git.onelab.eu/?a=commitdiff_plain;h=3f62be2bbaaae30826ee5607e7c06c6e91844c71;p=tests.git first attempt at testing pl+pg rspec styles --- diff --git a/system/TestPlc.py b/system/TestPlc.py index 247fb6f..8d0a738 100644 --- a/system/TestPlc.py +++ b/system/TestPlc.py @@ -1122,9 +1122,10 @@ class TestPlc: # ignore result sfa_spec=self.plc_spec['sfa'] - slicename='%s_%s'%(sfa_spec['login_base'],sfa_spec['slicename']) - try: self.apiserver.DeleteSlice(self.auth_root(),slicename) - except: print "Slice %s already absent from PLC db"%slicename + for sfa_slice_spec in sfa_spec['sfa_slice_specs']: + slicename='%s_%s'%(sfa_spec['login_base'],sfa_slice_spec['slicename']) + try: self.apiserver.DeleteSlice(self.auth_root(),slicename) + except: print "Slice %s already absent from PLC db"%slicename username="%s@%s"%(sfa_spec['regularuser'],sfa_spec['domain']) try: self.apiserver.DeletePerson(self.auth_root(),username) @@ -1285,24 +1286,12 @@ class TestPlc: fileconf.close() utils.header ("(Over)wrote %s"%file_name) - file_name=dir_name + os.sep + 'person.xml' - fileconf=open(file_name,'w') - for record in sfa_spec['sfa_person_xml']: - person_record=record - fileconf.write(person_record) - fileconf.write('\n') - fileconf.close() - utils.header ("(Over)wrote %s"%file_name) - - file_name=dir_name + os.sep + 'slice.xml' - fileconf=open(file_name,'w') - for record in sfa_spec['sfa_slice_xml']: - slice_record=record - #slice_record=sfa_spec['sfa_slice_xml'] - fileconf.write(slice_record) - fileconf.write('\n') - utils.header ("(Over)wrote %s"%file_name) - fileconf.close() + # cannot use sfa_slice_mapper to pass dir_name + for slice_spec in self.plc_spec['sfa']['sfa_slice_specs']: + site_spec = self.locate_site (slice_spec['sitename']) + test_site = TestSite(self,site_spec) + test_slice=TestSliceSfa(self,test_site,slice_spec) + test_slice.sfi_config(dir_name) file_name=dir_name + os.sep + 'slice.rspec' fileconf=open(file_name,'w') diff --git a/system/TestSliceSfa.py b/system/TestSliceSfa.py index 43161d6..a220c0b 100644 --- a/system/TestSliceSfa.py +++ b/system/TestSliceSfa.py @@ -22,12 +22,27 @@ class TestSliceSfa: self.sfa_spec=test_plc.plc_spec['sfa'] self.piuser=self.sfa_spec['piuser'] self.regularuser=self.sfa_spec['regularuser'] - self.slicename=self.sfa_spec['slicename'] + self.slicename=self.slice_spec['slicename'] self.login_base=self.sfa_spec['login_base'] def name(self): return self.slice_spec['slice_fields']['name'] + def mode (self): return self.slice_spec['mode'] + + def hrn(self): + root_auth=self.test_plc.plc_spec['sfa']['SFA_REGISTRY_ROOT_AUTH'] + return "%s.%s.%s"%(root_auth,self.login_base,self.slicename) + def addslicefile (self): + return self.resname("addslice","xml") + def resname (self,name,ext): return "%s_%s.%s"%(self.slicename,name,ext) + def adfile (self): return self.resname("ad","xml") + def reqfile (self): return self.resname("req","xml") + def nodefile (self): return self.resname("nodes","txt") + def discover_option(self): + if self.mode()=='pg': return "-r protogeni" + else: return "" + def locate_key(self): for username,keyname in self.slice_spec['usernames']: key_spec=self.test_plc.locate_key(keyname) @@ -38,19 +53,34 @@ class TestSliceSfa: found=True return (found,privatekey) + # dir_name is local and will be pushed later on + def sfi_config (self,dir_name): + # TODO this needs to be done remotely + file_name=dir_name + os.sep + self.addslicefile() + fileconf=open(file_name,'w') + fileconf.write(self.slice_spec['slice_add_xml']) + fileconf.write('\n') + utils.header ("(Over)wrote %s"%file_name) + fileconf.close() + file_name=dir_name + os.sep + 'person.xml' + fileconf=open(file_name,'w') + fileconf.write(self.slice_spec['slice_person_xml']) + fileconf.write('\n') + fileconf.close() + utils.header ("(Over)wrote %s"%file_name) + # those are step names exposed as methods of TestPlc, hence the _sfa def sfa_add_slice(self,options): return self.test_plc.run_in_guest("sfi.py -d /root/.sfi/ add slice.xml")==0 def sfa_discover(self,options): - return self.test_plc.run_in_guest("sfi.py -d /root/.sfi/ resources -o /root/.sfi/resources_in.rspec")==0 + return self.test_plc.run_in_guest("sfi.py -d /root/.sfi/ %s resources -o /root/.sfi/%s"%(self.discover_option(),self.adfile()))==0 def sfa_create_slice(self,options): - root_auth=self.test_plc.plc_spec['sfa']['SFA_REGISTRY_ROOT_AUTH'] commands=[ - "sfiListNodes.py -i /root/.sfi/resources_in.rspec -o /root/.sfi/all_nodes.txt", - "sfiAddSliver.py -i /root/.sfi/resources_in.rspec -n /root/.sfi/all_nodes.txt -o /root/.sfi/resources_out.rspec", - "sfi.py -d /root/.sfi/ create %s.%s.%s resources_out.rspec"%(root_auth,self.login_base,self.slicename), + "sfiListNodes.py -i /root/.sfi/%s -o /root/.sfi/%s"%(self.adfile(),self.nodefile()), + "sfiAddSliver.py -i /root/.sfi/%s -n /root/.sfi/%s -o /root/.sfi/%s"%(self.adfile(),self.nodefile(),self.reqfile()), + "sfi.py -d /root/.sfi/ create %s %s"%(self.hrn(),self.reqfile()), ] for command in commands: if self.test_plc.run_in_guest(command)!=0: return False @@ -76,9 +106,8 @@ class TestSliceSfa: return self.sfa_create_slice(options) def sfa_delete_slice(self,options): - root_auth=self.test_plc.plc_spec['sfa']['SFA_REGISTRY_ROOT_AUTH'] self.test_plc.run_in_guest("sfi.py -d /root/.sfi/ delete %s.%s.%s"%(root_auth,self.login_base,self.slicename)) - return self.test_plc.run_in_guest("sfi.py -d /root/.sfi/ remove -t slice %s.%s.%s"%(root_auth,self.login_base,self.slicename))==0 + return self.test_plc.run_in_guest("sfi.py -d /root/.sfi/ remove -t slice %s"%(self.hrn()))==0 # check the resulting sliver def ssh_slice_sfa(self,options,timeout_minutes=40,silent_minutes=30,period=15): diff --git a/system/TestUserSfa.py b/system/TestUserSfa.py index cb84cb6..6408b3e 100644 --- a/system/TestUserSfa.py +++ b/system/TestUserSfa.py @@ -14,7 +14,6 @@ class TestUserSfa: self.sfa_spec=test_plc.plc_spec['sfa'] self.piuser=self.sfa_spec['piuser'] self.regularuser=self.sfa_spec['regularuser'] - self.slicename=self.sfa_spec['slicename'] self.login_base=self.sfa_spec['login_base'] def add_user (self): diff --git a/system/config_default.py b/system/config_default.py index 033c693..24c84e7 100644 --- a/system/config_default.py +++ b/system/config_default.py @@ -196,7 +196,7 @@ def initscripts(options,index): # one has an initscript code, the other one an initscript name def slices (options,index): def theslice (i): - slice_spec = { 'slice_fields': {'name':'%s_pslc%d'%(login_base(index),i), + slice_spec = { 'slice_fields': {'name':'%s_slcpl%d'%(login_base(index),i), 'instantiation':'plc-instantiated', 'url':'http://foo%d.com'%index, 'description':'testslice number %d'%i, @@ -226,18 +226,18 @@ def tcp_tests (options,index): return [ # local test { 'server_node': 'node1', - 'server_slice' : '%s_pslc1'%login_base(index), + 'server_slice' : '%s_slcpl1'%login_base(index), 'client_node' : 'node1', - 'client_slice' : '%s_pslc1'%login_base(index), + 'client_slice' : '%s_slcpl1'%login_base(index), 'port' : 2000, }] elif index == 2: return [ # remote test { 'server_node': 'node2', - 'server_slice' : '%s_pslc3'%login_base(index), + 'server_slice' : '%s_slcpl3'%login_base(index), 'client_node' : 'node2', - 'client_slice' : '%s_pslc4'%login_base(index), + 'client_slice' : '%s_slcpl4'%login_base(index), 'port' : 4000, }, ] @@ -298,7 +298,6 @@ def plc (options,index) : def sfa (options,index) : piuser='fake-pi%d'%index regularuser='sfafakeuser%d'%index - slicename='fslc%d'%index return { 'SFA_REGISTRY_ROOT_AUTH' : sfa_root(index), 'SFA_INTERFACE_HRN' : sfa_root(index), @@ -313,45 +312,51 @@ def sfa (options,index) : 'SFA_PLC_DB_PASSWORD' : 'mnbvcxzlkjhgfdsapoiuytrewq', 'SFA_PLC_URL' : 'deferred-myplc-api-url', 'SFA_API_DEBUG': True, - 'sfa_slice_specs' : sfa_slice_specs(options,index,slicename,regularuser), - 'sfa_slice_xml' : sfa_slice_xml(options,index,piuser,slicename), - 'sfa_person_xml' : sfa_person_xml(options,index,regularuser), + 'sfa_slice_specs' : [ sfa_slice_spec(options,index,piuser,regularuser,i) for i in [0,1]], 'sfa_slice_rspec' : sfa_slice_rspec(options,index), 'login_base' : login_base(index), 'piuser' : piuser, 'regularuser':regularuser, - 'slicename' : slicename, 'domain':domain, # the default is to use AMs in the various aggregates.xml # stack config_sfamesh to point to SMs instead 'neighbours-port':12346, } -def sfa_slice_specs (options,index,slicename,regularuser): - return [ { 'slice_fields': {'name':'%s_%s'%(login_base(index),slicename), - 'url':'http://foo%d@foo.com'%index, - 'description':'SFA-testing', - 'max_nodes':2, - }, - 'usernames' : [ (regularuser,'key1') ], - 'nodenames' : all_nodenames(options,index), - 'sitename' : login_base(index), - }] - -def sfa_slice_xml(options,index,piuser,slicename): +# subindex is 0 (pl slice) or 1 (pg slice) +def sfa_slice_spec (options,index,piuser,regularuser,subindex): + if subindex==0: + mode='pl' + else: + mode='pg' + slicename='slcsfa%d%s'%(index,mode) prefix='%s.%s'%(sfa_root(index),login_base(index)) hrn=prefix+'.'+slicename researcher=prefix+'.'+piuser + slice_add_xml = ''' +%s'''%(hrn, researcher) - return ['%s'%(hrn, researcher)] - -def sfa_person_xml(options,index,regularuser): - prefix='%s.%s'%(sfa_root(index),login_base(index)) - hrn=prefix+'.'+regularuser mail="%s@%s"%(regularuser,domain) key=public_key + slice_person_xml =''' +%(key)s2010 +1piadmin%(prefix)s'''%locals() + + return { 'slice_fields': {'name':'%s_%s'%(login_base(index),slicename), + 'url':'http://foo%d@foo.com'%index, + 'description':'SFA-testing', + 'max_nodes':2, + }, + 'usernames' : [ (regularuser,'key1') ], + 'nodenames' : all_nodenames(options,index), + 'sitename' : login_base(index), + 'slicename' : slicename, + 'slice_add_xml' : slice_add_xml, + 'slice_person_xml' : slice_person_xml, + 'mode':mode, + } - return ['%(key)s20101piadmin%(prefix)s'%locals()] def sfa_slice_rspec(options,index): node_name='deferred'