X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;ds=sidebyside;f=system%2Fconfig_default.py;h=43912ac5fc402efb4e5b07b5535a8a7c3e604c13;hb=7c07c97c58e15d69152e324dc2495f57ff55d00c;hp=c4ededc6f6c9bd87c58551ecba42533a099c321e;hpb=c751d0185114516c11f185363391636068be786d;p=tests.git diff --git a/system/config_default.py b/system/config_default.py index c4ededc..43912ac 100644 --- a/system/config_default.py +++ b/system/config_default.py @@ -126,7 +126,7 @@ def sites (options,index): 'login_base':login_base(index), 'abbreviated_name':'PlanetTest%d'%index, 'max_slices':100, - 'url':'http://test.onelab.eu', + 'url':'http://test.%s'%domain, 'latitude':float(latitude), 'longitude':float(longitude), }, @@ -340,18 +340,19 @@ def keys (options,index): initscript_by_name="""#!/bin/bash command=$1; shift slicename=$1; shift -stamp="the_script_name" -stampfile=/tmp/$stamp.stamp +stamp="initscript_by_name" +stampfile=/var/tmp/$stamp.stamp +date=$(date) -echo "Running initscript with command=$command and slicename=$slicename" +echo $date "Running initscript with command=$command and slicename=$slicename" function start () { - (echo Starting test initscript: $stamp on slicename $slicename ; date) >> $stampfile - echo "This is the stdout of the sliver $slicename initscript $command (exp. start) pid=$$" - echo "This is the stderr of the sliver $slicename initscript $command (exp. start) pid=$$" 1>&2 + (echo $date Starting test initscript: $stamp on slicename $slicename ; date) >> $stampfile + echo $date "This is the stdout of the sliver $slicename initscript $command (exp. start) pid=$$" + echo $date "This is the stderr of the sliver $slicename initscript $command (exp. start) pid=$$" 1>&2 } function stop () { - echo "Removing stamp $stampfile" + echo $date "Removing stamp $stampfile" rm -f $stampfile } function restart () { @@ -366,18 +367,20 @@ restart) restart ;; esac """ -initscript_by_code=initscript_by_name.replace("the_script_name","the_script_code") +initscript_by_code=initscript_by_name.replace("initscript_by_name","initscript_by_code") # one single initscript in the InitScripts table def initscripts(options,index): return [ { 'initscript_fields' : { 'enabled' : True, - 'name':'the_script_name', + 'name':'initscript_by_name', 'script' : initscript_by_name, }}, ] -# always return 2 slices -# one has an initscript code, the other one an initscript name +# returns 3 slices +# 1 has an initscript code +# 2 has an initscript name +# 3 is an omf-friendly slice def slices (options,index): def theslice (i): slice_spec = { 'slice_fields': {'name':'%s_sl%d'%(login_base(index),i), @@ -391,42 +394,68 @@ def slices (options,index): 'sitename' : login_base(index), 'owner' : 'pi', } - # odd one has an initscript_code - if i%2==1: + # 1st one has an initscript by code + if i%3==1: slice_spec['initscriptcode']=initscript_by_code - slice_spec['initscriptstamp']='the_script_code' - # even one has an initscript (name) + slice_spec['initscriptstamp']='initscript_by_code' + # 2nd one has an initscript by name + elif i%3==2: + slice_spec['initscriptname']='initscript_by_name' + slice_spec['initscriptstamp']='initscript_by_name' + # 3rd one is omf-friendly else: - slice_spec['initscriptname']='the_script_name' - slice_spec['initscriptstamp']='the_script_name' + # potentially turned off with config_no_omf + slice_spec ['omf-friendly'] = True return slice_spec - return [ theslice(i) for i in range (2*index-1,2*index+1) ] + # usual index is 1, additional plc's then get 2... + # so index=1 -> 1 - 2 - 3 + # index=2 -> 4 - 5 - 6 + # 3 * (index-1) + 1 = 3*index-2 .. same+3 = 3*index+1 + return [ theslice(i) for i in range (3*index-2,3*index+1) ] def all_slicenames (options,index): return [ slice['slice_fields']['name'] for slice in slices(options,index)] -def tcp_tests (options,index): - if index == 1: - return [ - # local test - { 'server_node': 'node1', - 'server_slice' : '%s_sl1'%login_base(index), - 'client_node' : 'node1', - 'client_slice' : '%s_sl1'%login_base(index), - 'port' : 2000, - }] - elif index == 2: - return [ - # remote test - { 'server_node': 'node2', - 'server_slice' : '%s_sl3'%login_base(index), - 'client_node' : 'node2', - 'client_slice' : '%s_sl4'%login_base(index), - 'port' : 4000, - }, - ] - else: - return [] +# the logic here is to try: +# . client and server on the same slice/node +# . client and server on the same node but 2 different slices +# if at least 2 plcs, we have 2 nodes, so again on diff. nodes +def tcp_specs (options,index): + # only run the test on the first plc + if index != 1: return None + # + slice1='%s_sl1'%login_base(1) + slice2='%s_sl2'%login_base(1) + # with the addition of omf-friendly slices.. + slice3='%s_sl4'%login_base(2) + slice4='%s_sl5'%login_base(2) +# bind on 0.0.0.0 and try to reach this on localhost +# not expected to work + same_node_same_slice_lo = { 'server_node': 'node1', 'server_slice': slice1, + 'client_node': 'node1', 'client_slice': slice1, + 'client_connect' : 'localhost', + 'port': 10000} + same_node_same_slice = { 'server_node': 'node1', 'server_slice': slice1, + 'client_node': 'node1', 'client_slice': slice1, + 'port': 10001} +# this does not work on vs-nodes.... + same_node_2_slices = { 'server_node': 'node1', 'server_slice': slice1, + 'client_node': 'node1', 'client_slice': slice2, + 'port': 10002} + two_nodes_same_slice = { 'server_node': 'node1', 'server_slice': slice1, + 'client_node': 'node2', 'client_slice': slice3, + 'port': 10003} + two_nodes_2_slices = { 'server_node': 'node1', 'server_slice': slice1, + 'client_node': 'node2', 'client_slice': slice4, + 'port': 10004} + specs = [] +# specs += [ same_node_same_slice_lo ] + specs += [ same_node_same_slice ] +# worth another try + specs += [ same_node_2_slices ] + if options.size >1 : + specs += [ two_nodes_same_slice, two_nodes_2_slices ] + return specs # the semantic for 't_from' and 't_until' here is: # if they are smaller than one year, they are relative to the current time, expressed in grains @@ -456,6 +485,7 @@ def plc (options,index) : 'PLC_ROOT_USER' : 'root@test.onelab.eu', 'PLC_ROOT_PASSWORD' : 'test++', 'PLC_SLICE_PREFIX' : 'auto', + 'PLC_HRN_ROOT': sfa_root(index), 'PLC_SHORTNAME' : 'Rlab', 'PLC_MAIL_ENABLED':'false', 'PLC_MAIL_SUPPORT_ADDRESS' : 'thierry.parmentelat@inria.fr', @@ -467,6 +497,8 @@ def plc (options,index) : 'PLC_NET_DNS1' : 'deferred-dns-1', 'PLC_NET_DNS2' : 'deferred-dns-2', 'PLC_RESERVATION_GRANULARITY':1800, + 'PLC_VSYS_DEFAULTS':' , vif_up, vif_down, fd_tuntap, promisc, ', + 'expected_vsys_tags': [ 'vif_up', 'vif_down', 'fd_tuntap', 'promisc', ], # minimal config so the omf plugins actually trigger 'PLC_OMF_ENABLED' : 'true', 'PLC_OMF_XMPP_SERVER': 'deferred-myplc-hostname', @@ -474,9 +506,12 @@ def plc (options,index) : 'keys' : keys(options,index), 'initscripts': initscripts(options,index), 'slices' : slices(options,index), - 'tcp_test' : tcp_tests(options,index), + 'tcp_specs' : tcp_specs(options,index), 'sfa' : sfa(options,index), 'leases' : leases (options, index), + # big distros need more time to install nodes + 'ssh_node_boot_timers': (40,38), + 'ssh_node_debug_timers': (10,8), } # NOTE: SFA currently has SFA_AGGREGATE_API_VERSION=2 baked into the code @@ -500,68 +535,63 @@ def sfa (options,index) : 'SFA_GENERIC_FLAVOUR' : 'pl', 'SFA_AGGREGATE_ENABLED' : 'true', # details of the slices to create - 'sfa_slice_specs' : [ sfa_slice_spec(options,index,rspec_style) - for rspec_style in options.rspec_styles ] + 'auth_sfa_specs' : [ test_auth_sfa_spec(options,index,rspec_style) + for rspec_style in options.rspec_styles ] } # rspecstyle is 'pl' for sfav1 or 'pg' for pgv2 -def sfa_slice_spec (options,index,rspec_style): - the_login_base=sfa_login_base(index,rspec_style) +def test_auth_sfa_spec (options,index,rspec_style): + # the auth/site part per se + login_base=sfa_login_base(index,rspec_style) + hrn_prefix='%s.%s'%(sfa_root(index),login_base) + def full_hrn(x): return "%s.%s"%(hrn_prefix,x) + def full_mail(x): return "%s@test.%s"%(x,domain) + + # 2 users + pi_spec = { + 'name': 'pi', + 'email': full_mail ('piuser'), + 'key_name': 'key_sfapi', + } + user_hrn = full_hrn ('us') + user_spec = { + 'name': 'us', + 'email': full_mail ('regularuser'), + 'key_name': 'key_sfauser', + 'add_options': [ '--extra',"first_name=Fake", + '--extra',"last_name=SFA-style-%s"%rspec_style, + ], + 'update_options': [ '--extra',"enabled=true", + ], + } + + slice_spec = { + 'name': 'sl', + 'add_options': [ '--researchers', user_hrn, + # xxx + '--extra', "description=SFA-testing-%s"%rspec_style, + '--extra', "url=http://slice%d.test.onelab.eu/"%index, + '--extra', "max_nodes=2", + ], + 'key_name': 'key_sfauser', + 'nodenames': all_nodenames(options,index), + } + # we're already in a dedicated site/authority so no need to encumber with odd names - piuser='pi' - pimail=piuser+'@test.onelab.eu' - regularuser='us' - slicename='sl' - prefix='%s.%s'%(sfa_root(index),the_login_base) - hrn=prefix+'.'+slicename - user_hrn=prefix+'.'+regularuser - pi_hrn=prefix+'.'+piuser - mail="%s@%s"%(regularuser,domain) - # passed to sfi - # -k gets computed later on from the hrn (i.e. from the '-x' key..) - person_options = { '-t': 'user', - '-x': user_hrn, - '-e': mail, - '-f': "Fake", - '-l': "SFA-style-%s"%rspec_style, - } - - slice_options = { '-t': 'slice', - '-x': hrn, - '-d': "SFA-testing-%s"%rspec_style, - '-u': "http://test.onelab.eu/", - '-r': user_hrn, - } - - return { 'slice_fields': {'name':'%s_%s'%(the_login_base,slicename), - 'url':'http://foo%d@foo.com'%index, - 'description':'SFA-testing', - 'max_nodes':2, - }, - 'login_base' : the_login_base, - 'piuser' : piuser, - 'pimail' : pimail, - 'regularuser':regularuser, + + return { #'hrn_prefix': hrn_prefix, + 'login_base' : login_base, 'domain':domain, - 'slice_key_names' : [ 'key_sfauser' ], - 'hrn_keys' : { piuser : 'key_sfapi', - regularuser : 'key_sfauser' }, - 'nodenames' : all_nodenames(options,index), - 'sitename' : the_login_base, - 'slicename' : slicename, 'rspec_style':rspec_style, - 'person_sfi_options': person_options, - 'slice_sfi_options': slice_options, -# # these get exported under the sfi directory -# 'pi_private_key':private_key3, -# 'pi_public_key':public_key3, -# 'user_private_key':private_key4, -# 'user_public_key':public_key4, + 'pi_spec': pi_spec, + 'user_spec': user_spec, + 'slice_spec': slice_spec, } def config (plc_specs,options): result=plc_specs + # plc 'index' starts with 1 for i in range (options.size): result.append(plc(options,i+1)) return result