From e4117c8488b9b3544cd749ec0841542502ef790a Mon Sep 17 00:00:00 2001 From: Claudio-Daniel Freire Date: Thu, 21 Apr 2011 14:31:32 +0200 Subject: [PATCH] Netrefs now work on interfaces :) --- src/nepi/testbeds/planetlab/application.py | 7 +++++++ src/nepi/testbeds/planetlab/execute.py | 12 +++++++++++- test/testbeds/planetlab/execute.py | 12 ++++++++---- 3 files changed, 26 insertions(+), 5 deletions(-) diff --git a/src/nepi/testbeds/planetlab/application.py b/src/nepi/testbeds/planetlab/application.py index 46550c3d..471fd44b 100644 --- a/src/nepi/testbeds/planetlab/application.py +++ b/src/nepi/testbeds/planetlab/application.py @@ -21,6 +21,13 @@ class Application(object): # Those are filled when an actual node is connected self.node = None + def __str__(self): + return "%s" % ( + self.__class__.__name__, + "sudo " if self.sudo else "", + self.command, + ) + def validate(self): pass diff --git a/src/nepi/testbeds/planetlab/execute.py b/src/nepi/testbeds/planetlab/execute.py index 8611834b..a86785b6 100644 --- a/src/nepi/testbeds/planetlab/execute.py +++ b/src/nepi/testbeds/planetlab/execute.py @@ -111,7 +111,17 @@ class TestbedController(testbed_impl.TestbedController): return None def get_address(self, guid, index, attribute='Address'): - # TODO: fetch real data from planetlab + # try the real stuff + iface = self._elements.get(guid) + if iface and index == 0: + if attribute == 'Address': + return iface.address + elif attribute == 'NetPrefix': + return iface.netprefix + elif attribute == 'Broadcast': + return iface.broadcast + + # if all else fails, query box try: return self.box_get_address(guid, int(index), attribute) except KeyError, AttributeError: diff --git a/test/testbeds/planetlab/execute.py b/test/testbeds/planetlab/execute.py index 6c042d88..0e98122d 100755 --- a/test/testbeds/planetlab/execute.py +++ b/test/testbeds/planetlab/execute.py @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- import getpass -from nepi.util.constants import STATUS_FINISHED +from nepi.util.constants import STATUS_FINISHED, TIME_NOW from nepi.testbeds import planetlab import os import shutil @@ -39,7 +39,7 @@ class NetnsExecuteTestCase(unittest.TestCase): instance.defer_connect(4, "inet", 6, "devs") instance.defer_connect(5, "inet", 6, "devs") instance.defer_create(7, "Application") - instance.defer_create_set(7, "command", "ping -qc1 {#GUID-3.addr[0].[ip]#}") + instance.defer_create_set(7, "command", "ping -qc1 {#GUID-5.addr[0].[Address]#}") instance.defer_add_trace(7, "stdout") instance.defer_connect(7, "node", 2, "apps") @@ -48,8 +48,12 @@ class NetnsExecuteTestCase(unittest.TestCase): instance.do_connect() instance.do_configure() - print instance.elements[4] - print instance.elements[5] + # Manually replace netref + instance.set(TIME_NOW, 7, "command", + instance.get(TIME_NOW, 7, "command") + .replace("{#GUID-5.addr[0].[Address]#}", + instance.get_address(5, 0, "Address") ) + ) instance.start() while instance.status(7) != STATUS_FINISHED: -- 2.47.0