aboutsummaryrefslogtreecommitdiff
path: root/examples/example.py
diff options
context:
space:
mode:
Diffstat (limited to 'examples/example.py')
-rwxr-xr-xexamples/example.py55
1 files changed, 42 insertions, 13 deletions
diff --git a/examples/example.py b/examples/example.py
index 8d17ff2..a26ab3b 100755
--- a/examples/example.py
+++ b/examples/example.py
@@ -30,26 +30,55 @@ n1.add_policy("security-manager", "passwd")
e1 = ShimEthDIF("e1")
a = Node("a",
- difs = [n1, e1],
- dif_registrations = {n1 : [e1]})
+ difs=[n1, e1],
+ dif_registrations={n1: [e1]})
b = Node("b",
- difs = [e1, n1],
- dif_registrations = {n1 : [e1]})
+ difs=[e1, n1],
+ dif_registrations={n1: [e1]})
-tb = jfed.Testbed(exp_name = "example1",
- username = "user1",
- cert_file = "/home/user1/cert.pem")
+tb = jfed.Testbed(exp_name="example1",
+ username="user1",
+ cert_file="/home/user1/cert.pem")
+
+exp = rl.Experiment(tb, nodes=[a, b])
+
+print(exp)
+
+# General setup (can be reused in other scripts as-is)
+storyboard = StoryBoard(duration=30)
+
+# Clients can be applications that just keep running, and will be
+# stopped by a SIGINT...
+client1 = Client("rinaperf",
+ options="-t perf -s 1000 -c 0")
+
+# ... or a custom shutdown method can be provided.
+client2 = Client("rinaperf",
+ options="-t perf -s 1000 -D <duration>",
+ shutdown="")
+
+server = Server("rinaperf", options="-l", arrival_rate=0.5,
+ mean_duration=5, clients=[client1, client2])
+
+
+# Experiment-specific configuration:
+# (This can be done anytime before storyboard.start())
+
+storyboard.set_experiment(exp)
+storyboard.add_server((server, a))
+client1.add_node(b)
+client2.add_node(b)
-exp = rl.Experiment(tb, nodes = [a, b])
print(exp)
with ExperimentManager(exp):
exp.swap_in()
+ exp.install_prototype()
exp.bootstrap_prototype()
- c1 = Client("rinaperf", options ="-t perf -s 1000 -c 0", nodes=[b])
- s1 = Server("rinaperf", arrival_rate=2, mean_duration=5,
- options = "-l", nodes = [a], clients = [c1])
- sb = StoryBoard(duration=3600, experiment=exp, servers=[s1])
- sb.start()
+ storyboard.start()
+
+ # Fetch the client/server logs from the nodes
+ # and put them in the cwd.
+ storyboard.fetch_logs()