+# Thierry Parmentelat <thierry.parmentelat@inria.fr>
+# Copyright (C) 2010 INRIA
#
-# $Id: LocalTestResources.sample.inria 17428 2010-03-22 11:56:23Z thierry $
#
# this is only an example file
# the actual file is installed in your testmaster box as /root/LocalTestResources.py
-# $Id$
+# Thierry Parmentelat <thierry.parmentelat@inria.fr>
+# Copyright (C) 2010 INRIA
+#
# wrapper to xmlrpc server, that support dry-run commands
# we dont want to have to depend on PLCAPI, so:
import xmlrpclib
-# $Id$
+# Thierry Parmentelat <thierry.parmentelat@inria.fr>
+# Copyright (C) 2010 INRIA
+#
# this models a box that hosts qemu nodes
# could probably also be used for boxes that host plc instances
import os.path
+# Thierry Parmentelat <thierry.parmentelat@inria.fr>
+# Copyright (C) 2010 INRIA
+#
import utils
import os, os.path
from TestSsh import TestSsh
#!/usr/bin/python -u
-# $Id$
+# Thierry Parmentelat <thierry.parmentelat@inria.fr>
+# Copyright (C) 2010 INRIA
+#
import sys, os, os.path
from optparse import OptionParser
import traceback
class TestMain:
- subversion_id = "$Id$"
+ subversion_id = "Now using git -- version tracker broken"
default_config = [ 'default' ]
except:
print "*** no doc found"
- @staticmethod
- def optparse_list (option, opt, value, parser):
- try:
- setattr(parser.values,option.dest,getattr(parser.values,option.dest)+value.split())
- except:
- setattr(parser.values,option.dest,value.split())
-
def run (self):
self.init_steps()
usage = """usage: %%prog [options] steps
help="URL of the arch-dependent RPMS area - for locating what to test")
parser.add_option("-b","--build",action="store", dest="build_url",
help="ignored, for legacy only")
- parser.add_option("-c","--config",action="callback", callback=TestMain.optparse_list, dest="config",
- nargs=1,type="string",
+ parser.add_option("-c","--config",action="append", dest="config", default=[],
help="Config module - can be set multiple times, or use quotes")
parser.add_option("-p","--personality",action="store", dest="personality",
help="personality - as in vbuild-nightly")
help="pldistro - as in vbuild-nightly")
parser.add_option("-f","--fcdistro",action="store", dest="fcdistro",
help="fcdistro - as in vbuild-nightly")
- parser.add_option("-x","--exclude",action="callback", callback=TestMain.optparse_list, dest="exclude",
- nargs=1,type="string",default=[],
+ parser.add_option("-x","--exclude",action="append", dest="exclude", default=[],
help="steps to exclude - can be set multiple times, or use quotes")
parser.add_option("-a","--all",action="store_true",dest="all_steps", default=False,
help="Run all default steps")
parser.add_option("-l","--list",action="store_true",dest="list_steps", default=False,
help="List known steps")
- parser.add_option("-N","--nodes",action="callback", callback=TestMain.optparse_list, dest="ips_node",
- nargs=1,type="string",
+ parser.add_option("-N","--nodes",action="append", dest="ips_node", default=[],
help="Specify the set of hostname/IP's to use for nodes")
- parser.add_option("-P","--plcs",action="callback", callback=TestMain.optparse_list, dest="ips_plc",
- nargs=1,type="string",
+ parser.add_option("-P","--plcs",action="append", dest="ips_plc", default=[],
help="Specify the set of hostname/IP's to use for plcs")
- parser.add_option("-Q","--qemus",action="callback", callback=TestMain.optparse_list, dest="ips_qemu",
- nargs=1,type="string",
+ parser.add_option("-Q","--qemus",action="append", dest="ips_qemu", default=[],
help="Specify the set of hostname/IP's to use for qemu boxes")
parser.add_option("-s","--size",action="store",type="int",dest="size",default=1,
help="sets test size in # of plcs - default is 1")
help="Trace file location")
(self.options, self.args) = parser.parse_args()
+ # allow things like "run -c 'c1 c2' -c c3"
+ def flatten (x):
+ result = []
+ for el in x:
+ if hasattr(el, "__iter__") and not isinstance(el, basestring):
+ result.extend(flatten(el))
+ else:
+ result.append(el)
+ return result
+ # flatten relevant options
+ for optname in ['config','exclude','ips_node','ips_plc','ips_qemu']:
+ setattr(self.options,optname, flatten ( [ arg.split() for arg in getattr(self.options,optname) ] ))
+
# handle defaults and option persistence
for (recname,filename,default) in (
('build_url','arg-build-url',TestMain.default_build_url) ,
#
-# Thierry Parmentelat - INRIA Sophia Antipolis
+# Thierry Parmentelat <thierry.parmentelat@inria.fr>
+# Copyright (C) 2010 INRIA
+#
#
# mapper class
#
+# Thierry Parmentelat <thierry.parmentelat@inria.fr>
+# Copyright (C) 2010 INRIA
+#
import sys, os, os.path, time, base64
import xmlrpclib
-# $Id$
+# Thierry Parmentelat <thierry.parmentelat@inria.fr>
+# Copyright (C) 2010 INRIA
+#
import os, os.path
import datetime
import time
#
-# Thierry Parmentelat - INRIA Sophia Antipolis
+# Thierry Parmentelat <thierry.parmentelat@inria.fr>
+# Copyright (C) 2010 INRIA
+#
#
# pool class
#
+# Thierry Parmentelat <thierry.parmentelat@inria.fr>
+# Copyright (C) 2010 INRIA
#
-# $Id$
-#
-
import sys
import traceback
+# Thierry Parmentelat <thierry.parmentelat@inria.fr>
+# Copyright (C) 2010 INRIA
+#
import os.path
import datetime
import time
-#
-# $Id$
-# $URL$
+# Thierry Parmentelat <thierry.parmentelat@inria.fr>
+# Copyright (C) 2010 INRIA
#
import utils
import os, os.path
+# Thierry Parmentelat <thierry.parmentelat@inria.fr>
+# Copyright (C) 2010 INRIA
+#
import utils
import os, os.path
import datetime
+# Thierry Parmentelat <thierry.parmentelat@inria.fr>
+# Copyright (C) 2010 INRIA
+#
import utils
import os, os.path
import datetime
-#
-# Thierry Parmentelat - INRIA
+# Thierry Parmentelat <thierry.parmentelat@inria.fr>
+# Copyright (C) 2010 INRIA
#
# class for issuing commands on a box, either local or remote
#
+# Thierry Parmentelat <thierry.parmentelat@inria.fr>
+# Copyright (C) 2010 INRIA
+#
import os, sys, time
import xmlrpclib
+# Thierry Parmentelat <thierry.parmentelat@inria.fr>
+# Copyright (C) 2010 INRIA
+#
import os, sys, time
import xmlrpclib
#!/usr/bin/python
-# $Id$
+# Thierry Parmentelat <thierry.parmentelat@inria.fr>
+# Copyright (C) 2010 INRIA
+#
import os
import utils
+# Thierry Parmentelat <thierry.parmentelat@inria.fr>
+# Copyright (C) 2010 INRIA
+#
# a configuration module is expected:
# (*) to define a config method
# (*) that takes two arguments
hrn='ple.main.fslc1'
researcher='ple.main.fake-pi1'
- return ["""<record hrn="%s" type="slice" description="SFA-testing" url="http://anil.onelab.eu/"><researcher>%s</researcher></record>"""%(hrn, researcher)]
+ return ['<record hrn="%s" type="slice" description="SFA-testing" url="http://test.onelab.eu/"><researcher>%s</researcher></record>'%(hrn, researcher)]
def sfa_person_xml(options,index):
if index==1:
else:
hrn='ple.main.sfafakeuser1'
- return ["""<record email="sfafakeuser1@onelab.eu" enabled="True" first_name="Anil" hrn="%s" last_name="Kumar" name="%s" type="user"><keys>%s</keys><role_ids>20</role_ids><role_ids>10</role_ids><site_ids>1</site_ids><roles>pi</roles><roles>admin</roles><sites>plc.main</sites></record>"""%(hrn,hrn,public_key)]
+ return ['<record email="sfafakeuser1@onelab.eu" enabled="True" first_name="Fake" hrn="%s" last_name="Sfa" name="%s" type="user"><keys>%s</keys><role_ids>20</role_ids><role_ids>10</role_ids><site_ids>1</site_ids><roles>pi</roles><roles>admin</roles><sites>plc.main</sites></record>'%(hrn,hrn,public_key)]
def sfa_slice_rspec(options,index):
node_name='deferred'
else:
netspec_name='\"ple\"'
- return { 'part1' : """<?xml version="1.0" ?><Rspec><networks><NetSpec name=""",
- 'part2' : "%s"%netspec_name,
- 'part3' : """><nodes><NodeSpec cpu_min="" cpu_pct="" cpu_share="" disk_max="" init_params="" name=\"""",
- 'part4' : "%s"%node_name,
- 'part5' : """\" start_time="" type=""><net_if><IfSpec init_params="" ip_spoof="" max_kbyte="" max_rate="" min_rate="" name="True" type="ipv4"/></net_if></NodeSpec></nodes></NetSpec></networks></Rspec>"""
+ return {
+ 'part1' : '<?xml version="1.0" ?><Rspec><networks><NetSpec name=',
+ 'part2' : '%s'%netspec_name,
+ 'part3' : '><nodes><NodeSpec cpu_min="" cpu_pct="" cpu_share="" disk_max="" init_params="" name=\"',
+ 'part4' : '%s'%node_name,
+ 'part5' : '\" start_time="" type=""><net_if><IfSpec init_params="" ip_spoof="" max_kbyte="" max_rate="" min_rate="" name="True" type="ipv4"/></net_if></NodeSpec></nodes></NetSpec></networks></Rspec>',
}
def config (plc_specs,options):
+# Thierry Parmentelat <thierry.parmentelat@inria.fr>
+# Copyright (C) 2010 INRIA
+#
# a configuration module is expected:
# (*) to define a config method
# (*) that takes two arguments
--- /dev/null
+# Thierry Parmentelat <thierry.parmentelat@inria.fr>
+# Copyright (C) 2010 INRIA
+#
+# just overwrite options.size to be 2 and re-use the default config
+import config_default
+
+def config (plc_specs, options):
+ options.size=2
+ return config_default.config(plc_specs,options)
+
+# Thierry Parmentelat <thierry.parmentelat@inria.fr>
+# Copyright (C) 2010 INRIA
+#
# a configuration module is expected:
# (*) to define a config method
# (*) that takes two arguments
# Mark Huang <mlhuang@cs.princeton.edu>
# Copyright (C) 2006 The Trustees of Princeton University
#
-# $Id$
-#
from pprint import pprint
from string import letters, digits, punctuation, whitespace
+# Thierry Parmentelat <thierry.parmentelat@inria.fr>
+# Copyright (C) 2010 INRIA
+#
from TestPlc import TestPlc
def run01_uninstall (test_plc):
#!/usr/bin/env python
+# Thierry Parmentelat <thierry.parmentelat@inria.fr>
+# Copyright (C) 2010 INRIA
+#
import sys
import time
from optparse import OptionParser
#!/bin/bash
+# Thierry Parmentelat <thierry.parmentelat@inria.fr>
+# Copyright (C) 2010 INRIA
+#
# Establishment of a runtime environment for a
# virtual machine under QEMU, This script allows the host box
# to share its network connection with qemu-based guests
#!/bin/bash
+# Thierry Parmentelat <thierry.parmentelat@inria.fr>
+# Copyright (C) 2010 INRIA
+#
# this is the script provided to the qemu command-line, that qemu invokes to init the net device
# basically this adds the interface to the bridge
#!/bin/sh
-# $Id$
+#
+# Thierry Parmentelat <thierry.parmentelat@inria.fr>
+# Copyright (C) 2010 INRIA
+#
COMMAND=$(basename $0)
cd $(dirname $0)
THISNODE=$(basename $(pwd -P) | sed -e s,qemu-,,)
#!/bin/bash
-# $Id$
+# Thierry Parmentelat <thierry.parmentelat@inria.fr>
+# Copyright (C) 2010 INRIA
+#
# it does the following:
# (*) close all file descriptors and redirect output to log.txt
# this is because it is designed for use through ssh from a remote test master controller
-# $Id$
+# Thierry Parmentelat <thierry.parmentelat@inria.fr>
+# Copyright (C) 2010 INRIA
+#
import time, os, re, glob, sys
from pprint import PrettyPrinter