diff options
Diffstat (limited to 'scripts/automation/trex_control_plane/client')
-rw-r--r-- | scripts/automation/trex_control_plane/client/trex_port.py | 4 | ||||
-rwxr-xr-x | scripts/automation/trex_control_plane/client/trex_stateless_client.py | 37 |
2 files changed, 32 insertions, 9 deletions
diff --git a/scripts/automation/trex_control_plane/client/trex_port.py b/scripts/automation/trex_control_plane/client/trex_port.py index 4f82e86a..0934313f 100644 --- a/scripts/automation/trex_control_plane/client/trex_port.py +++ b/scripts/automation/trex_control_plane/client/trex_port.py @@ -18,7 +18,7 @@ class Port(object): STATE_PAUSE: "PAUSE"} - def __init__ (self, port_id, speed, driver, user, comm_link): + def __init__ (self, port_id, speed, driver, user, comm_link, session_id): self.port_id = port_id self.state = self.STATE_IDLE self.handler = None @@ -30,6 +30,7 @@ class Port(object): self.speed = speed self.streams = {} self.profile = None + self.session_id = session_id self.port_stats = trex_stats.CPortStats(self) @@ -47,6 +48,7 @@ class Port(object): def acquire(self, force = False): params = {"port_id": self.port_id, "user": self.user, + "session_id": self.session_id, "force": force} command = RpcCmdData("acquire", params) diff --git a/scripts/automation/trex_control_plane/client/trex_stateless_client.py b/scripts/automation/trex_control_plane/client/trex_stateless_client.py index 899805cf..0d52359d 100755 --- a/scripts/automation/trex_control_plane/client/trex_stateless_client.py +++ b/scripts/automation/trex_control_plane/client/trex_stateless_client.py @@ -46,11 +46,11 @@ class CTRexStatelessClient(object): """docstring for CTRexStatelessClient""" # verbose levels - VERBOSE_SILENCE = 0 + VERBOSE_QUIET = 0 VERBOSE_REGULAR = 1 VERBOSE_HIGH = 2 - def __init__(self, username, server="localhost", sync_port = 5050, async_port = 4500, virtual=False): + def __init__(self, username, server="localhost", sync_port = 5050, async_port = 4500, quiet = False, virtual = False): super(CTRexStatelessClient, self).__init__() self.user = username @@ -58,7 +58,10 @@ class CTRexStatelessClient(object): self.comm_link = CTRexStatelessClient.CCommLink(server, sync_port, virtual, self.prn_func) # default verbose level - self.verbose = self.VERBOSE_REGULAR + if not quiet: + self.verbose = self.VERBOSE_REGULAR + else: + self.verbose = self.VERBOSE_QUIET self.ports = {} self._connection_info = {"server": server, @@ -79,7 +82,7 @@ class CTRexStatelessClient(object): self.events = [] - + self.session_id = random.getrandbits(32) self.read_only = False self.connected = False @@ -90,9 +93,15 @@ class CTRexStatelessClient(object): return self.ports.get(port_id, None) - def get_server (self): + # connection server ip + def get_server_ip (self): return self.comm_link.get_server() + # connection server port + def get_server_port (self): + return self.comm_link.get_port() + + ################# events handler ###################### def add_event_log (self, msg, ev_type, show = False): @@ -107,7 +116,7 @@ class CTRexStatelessClient(object): if show: self.prn_func(format_text("\n{:^8} - {:}".format(prefix, format_text(msg, 'bold')))) - + def handle_async_stats_update(self, dump_data): global_stats = {} @@ -185,8 +194,16 @@ class CTRexStatelessClient(object): # port was stolen... elif (type == 5): + session_id = data['session_id'] + + # false alarm, its us + if session_id == self.session_id: + return + port_id = int(data['port_id']) - ev = "Port {0} was forcely taken".format(port_id) + who = data['who'] + + ev = "Port {0} was forcely taken by '{1}'".format(port_id, who) # call the handler self.async_event_port_forced_acquired(port_id) @@ -335,7 +352,7 @@ class CTRexStatelessClient(object): speed = self.system_info['ports'][port_id]['speed'] driver = self.system_info['ports'][port_id]['driver'] - self.ports[port_id] = Port(port_id, speed, driver, self.user, self.comm_link) + self.ports[port_id] = Port(port_id, speed, driver, self.user, self.comm_link, self.session_id) # sync the ports @@ -689,6 +706,7 @@ class CTRexStatelessClient(object): # reset def cmd_reset(self): + #self.release(self.get_acquired_ports()) rc = self.acquire(force = True) rc.annotate("Force acquiring all ports:") @@ -1176,6 +1194,9 @@ class CTRexStatelessClient(object): def get_server (self): return self.server + def get_port (self): + return self.port + def set_verbose(self, mode): self.verbose = mode return self.rpc_link.set_verbose(mode) |