aboutsummaryrefslogtreecommitdiff
path: root/rumba/testbeds
diff options
context:
space:
mode:
authorNick Aerts <aerts.nick@gmail.com>2018-03-23 23:36:34 +0100
committerNick Aerts <nick.aerts@ugent.be>2018-03-27 18:16:45 +0200
commitdfd400c2fb1383bcd6e3862d6199fffad4e78524 (patch)
tree22628b20331328e4d57657494d0321d07f89badb /rumba/testbeds
parenteef25fb48735a5db9613bf00b47f6cf4703b815d (diff)
downloadrumba-dfd400c2fb1383bcd6e3862d6199fffad4e78524.tar.gz
rumba-dfd400c2fb1383bcd6e3862d6199fffad4e78524.zip
linkquality: added link_quality to add delay, loss and rate limit to link
This adds the ability to assign delay and loss to links. 4 new object types are introduced: - LinkQuality - Delay - Loss - Rate All attributes are read-only, one attribute link_quality is added to the ShimEthDIF with a callback to the LinkQualityManager which will automatically apply a new link_quality profile when this attribute is written.
Diffstat (limited to 'rumba/testbeds')
-rw-r--r--rumba/testbeds/dockertb.py5
-rw-r--r--rumba/testbeds/emulab.py5
-rw-r--r--rumba/testbeds/jfed.py4
-rw-r--r--rumba/testbeds/local.py4
-rw-r--r--rumba/testbeds/qemu.py17
5 files changed, 5 insertions, 30 deletions
diff --git a/rumba/testbeds/dockertb.py b/rumba/testbeds/dockertb.py
index 3895a7e..d018f8c 100644
--- a/rumba/testbeds/dockertb.py
+++ b/rumba/testbeds/dockertb.py
@@ -33,7 +33,6 @@ import rumba.model as mod
import rumba.log as log
from rumba.executors.docker import DockerExecutor
-
logger = log.get_logger(__name__)
class Testbed(mod.Testbed):
@@ -56,11 +55,9 @@ class Testbed(mod.Testbed):
self.docker_client = docker.from_env()
self.executor = DockerExecutor(self)
- def swap_in(self, experiment):
+ def _swap_in(self, experiment):
docker_client = self.docker_client
- mod.Testbed.swap_in(self, experiment)
-
# Pull image
if self.pull_image:
docker_client.images.pull(self.base_image_repo,
diff --git a/rumba/testbeds/emulab.py b/rumba/testbeds/emulab.py
index 06e0e5c..0d18892 100644
--- a/rumba/testbeds/emulab.py
+++ b/rumba/testbeds/emulab.py
@@ -271,16 +271,13 @@ class Testbed(mod.Testbed):
if self.ip[ipcp] == item[1]:
ipcp.ifname = item[0]
- def swap_in(self, experiment):
- mod.Testbed.swap_in(self, experiment)
-
+ def _swap_in(self, experiment):
self._create_experiment(experiment)
wait = self.swap_exp_in()
if wait:
self.wait_until_nodes_up()
self.complete_experiment_graph(experiment)
-
def swap_out(self, experiment):
"""
Swaps experiment out
diff --git a/rumba/testbeds/jfed.py b/rumba/testbeds/jfed.py
index db9dd14..a1ceded 100644
--- a/rumba/testbeds/jfed.py
+++ b/rumba/testbeds/jfed.py
@@ -206,9 +206,7 @@ class Testbed(mod.Testbed):
logger.error("jFed returned with error " + str(e.returncode))
raise
- def swap_in(self, experiment):
- mod.Testbed.swap_in(self, experiment)
-
+ def _swap_in(self, experiment):
for node in experiment.nodes:
node.ssh_config.set_http_proxy(self.http_proxy)
self.create_rspec(experiment)
diff --git a/rumba/testbeds/local.py b/rumba/testbeds/local.py
index 77aed82..7c1aab1 100644
--- a/rumba/testbeds/local.py
+++ b/rumba/testbeds/local.py
@@ -40,9 +40,7 @@ class Testbed(mod.Testbed):
self.executor = LocalExecutor(self)
- def swap_in(self, experiment):
- mod.Testbed.swap_in(self, experiment)
-
+ def _swap_in(self, experiment):
logger.info("Experiment swapped in")
def swap_out(self, experiment):
diff --git a/rumba/testbeds/qemu.py b/rumba/testbeds/qemu.py
index df80b7e..5f76684 100644
--- a/rumba/testbeds/qemu.py
+++ b/rumba/testbeds/qemu.py
@@ -125,14 +125,12 @@ class Testbed(mod.Testbed):
"ip link set dev %(ifname)s up"
% {'ifname': ipcp.ifname})
- def swap_in(self, experiment):
+ def _swap_in(self, experiment):
"""
:type experiment mod.Experiment
:param experiment: The experiment running
"""
- mod.Testbed.swap_in(self, experiment)
-
if os.geteuid() != 0:
try:
subprocess.check_call(["sudo", "-v"])
@@ -195,19 +193,6 @@ class Testbed(mod.Testbed):
'brctl addif %(br)s %(tap)s'
% {'tap': tap_id, 'br': shim.name}
).split('\n')
- if shim.link_speed > 0:
- speed = '%dmbit' % shim.link_speed
-
- # Rate limit the traffic transmitted on the TAP interface
- command_list += (
- 'tc qdisc add dev %(tap)s handle 1: root '
- 'htb default 11\n'
- 'tc class add dev %(tap)s parent 1: classid '
- '1:1 htb rate 10gbit\n'
- 'tc class add dev %(tap)s parent 1:1 classid '
- '1:11 htb rate %(speed)s'
- % {'tap': tap_id, 'speed': speed}
- ).split('\n')
# While we're at it, build vm ports table and ipcp table
vm['ports'].append({'tap_id': tap_id,