Adding Linux Application scalability tests
[nepi.git] / examples / linux / scalability.py
1 #!/usr/bin/env python
2 from neco.execution.ec import ExperimentController, ECState 
3 from neco.execution.resource import ResourceState, ResourceAction, \
4         populate_factory
5
6 from optparse import OptionParser, SUPPRESS_HELP
7
8 import os
9 import time
10
11 def add_node(ec, host, user):
12     node = ec.register_resource("LinuxNode")
13     ec.set(node, "hostname", host)
14     ec.set(node, "username", user)
15     ec.set(node, "cleanHome", True)
16     ec.set(node, "cleanProcesses", True)
17     return node
18
19 def add_app(ec):
20     app = ec.register_resource("LinuxApplication")
21     ec.set(app, "command", "sleep 30; echo 'HOLA'")
22     return app
23
24 def get_options():
25     slicename = os.environ.get("PL_SLICE")
26
27     usage = "usage: %prog -s <pl-slice>"
28
29     parser = OptionParser(usage=usage)
30     parser.add_option("-s", "--pl-slice", dest="pl_slice", 
31             help="PlanetLab slicename", default=slicename, type="str")
32     parser.add_option("-l", "--exp-id", dest="exp_id", 
33             help="Label to identify experiment", type="str")
34
35     (options, args) = parser.parse_args()
36
37     return (options.pl_slice, options.exp_id)
38
39 if __name__ == '__main__':
40     ( pl_slice, exp_id ) = get_options()
41
42     # Search for available RMs
43     populate_factory()
44     
45     apps = []
46   
47     hostnames = [
48              "planetlab-2.research.netlab.hut.fi",
49              "planetlab2.willab.fi",
50              "planetlab3.hiit.fi",
51              "planetlab4.hiit.fi",
52              "planetlab1.willab.fi",
53              "planetlab1.s3.kth.se",
54              "itchy.comlab.bth.se",
55              "planetlab-1.ida.liu.se",
56              "planetlab2.s3.kth.se",
57              "planetlab1.sics.se",
58              "planetlab1.tlm.unavarra.es",
59              "planetlab2.uc3m.es",
60              "planetlab1.uc3m.es",
61              "planetlab2.um.es",
62              "planet1.servers.ua.pt",
63              "planetlab2.fct.ualg.pt",
64              "planetlab-1.tagus.ist.utl.pt",
65              "planetlab-2.tagus.ist.utl.pt",
66              "planetlab-um00.di.uminho.pt",
67              "planet2.servers.ua.pt",
68              "planetlab1.mini.pw.edu.pl",
69              "roti.mimuw.edu.pl",
70              "planetlab1.ci.pwr.wroc.pl",
71              "planetlab1.pjwstk.edu.pl",
72              "ple2.tu.koszalin.pl",
73              "planetlab2.ci.pwr.wroc.pl",
74              "planetlab2.cyfronet.pl",
75              "plab2.ple.silweb.pl",
76              "planetlab1.cyfronet.pl",
77              "plab4.ple.silweb.pl",
78              "ple2.dmcs.p.lodz.pl",
79              "planetlab2.pjwstk.edu.pl",
80              "ple1.dmcs.p.lodz.pl",
81              "gschembra3.diit.unict.it",
82              "planetlab1.science.unitn.it",
83              "planetlab-1.ing.unimo.it",
84              "gschembra4.diit.unict.it",
85              "iraplab1.iralab.uni-karlsruhe.de",
86              "planetlab-1.fokus.fraunhofer.de",
87              "iraplab2.iralab.uni-karlsruhe.de",
88              "planet2.zib.de",
89              "pl2.uni-rostock.de",
90              "onelab-1.fhi-fokus.de",
91              "planet2.l3s.uni-hannover.de",
92              "planetlab1.exp-math.uni-essen.de",
93              "planetlab-2.fokus.fraunhofer.de",
94              "planetlab02.tkn.tu-berlin.de",
95              "planetlab1.informatik.uni-goettingen.de",
96              "planetlab1.informatik.uni-erlangen.de",
97              "planetlab2.lkn.ei.tum.de",
98              "planetlab1.wiwi.hu-berlin.de",
99              "planet1.l3s.uni-hannover.de",
100              "planetlab1.informatik.uni-wuerzburg.de",
101              "host3-plb.loria.fr",
102              "inriarennes1.irisa.fr",
103              "inriarennes2.irisa.fr",
104              "peeramide.irisa.fr",
105              "planetlab-1.imag.fr",
106              "planetlab-2.imag.fr",
107              "ple2.ipv6.lip6.fr",
108              "planetlab1.u-strasbg.fr",
109              "planetlab1.ionio.gr",
110              "planetlab2.ionio.gr",
111              "stella.planetlab.ntua.gr",
112              "vicky.planetlab.ntua.gr",
113              "planetlab1.cs.uoi.gr",
114              "pl002.ece.upatras.gr",
115              "planetlab04.cnds.unibe.ch",
116              "lsirextpc01.epfl.ch",
117              "planetlab2.csg.uzh.ch",
118              "planetlab1.csg.uzh.ch",
119              "planetlab-2.cs.unibas.ch",
120              "planetlab-1.cs.unibas.ch",
121              "planetlab4.cs.st-andrews.ac.uk",
122              "planetlab3.xeno.cl.cam.ac.uk",
123              "planetlab1.xeno.cl.cam.ac.uk",
124              "planetlab2.xeno.cl.cam.ac.uk",
125              "planetlab3.cs.st-andrews.ac.uk",
126              "planetlab1.aston.ac.uk",
127              "planetlab1.nrl.eecs.qmul.ac.uk",
128              "chimay.infonet.fundp.ac.be",
129              "orval.infonet.fundp.ac.be",
130              "rochefort.infonet.fundp.ac.be",
131             ]
132  
133     ec = ExperimentController(exp_id = exp_id)
134
135     for host in hostnames:
136         node = add_node(ec, host, pl_slice)
137         for i in xrange(20):
138             app = add_app(ec)
139             ec.register_connection(app, node)
140             apps.append(app)
141
142     ec.deploy()
143
144     ec.wait_finished(apps)
145
146     ec.shutdown()