tests: replace manual port stats requests with get_port_stats
This code wasn't doing the stats transaction correctly since it didn't account
for the switch splitting the stats entries across multiple messages.
diff --git a/tests/FuncUtils.py b/tests/FuncUtils.py
index abf40f5..96c4643 100644
--- a/tests/FuncUtils.py
+++ b/tests/FuncUtils.py
@@ -412,10 +412,7 @@
def get_portstats(self,port_num):
# Return all the port counters in the form a tuple
- port_stats_req = ofp.message.port_stats_request()
- port_stats_req.port_no = port_num
- response,pkt = self.controller.transact(port_stats_req)
- self.assertTrue(response is not None,"No response received for port stats request")
+ entries = get_port_stats(self, port_num)
rx_pkts=0
tx_pkts=0
rx_byts=0
@@ -431,7 +428,7 @@
tx_err=0
- for obj in response.entries:
+ for obj in entries:
rx_pkts += obj.rx_packets
tx_pkts += obj.tx_packets
rx_byts += obj.rx_bytes
diff --git a/tests/port_stats.py b/tests/port_stats.py
index a61aed8..41bc0cf 100644
--- a/tests/port_stats.py
+++ b/tests/port_stats.py
@@ -60,16 +60,8 @@
'Response packet does not match send packet')
def getStats(obj, port):
- stat_req = ofp.message.port_stats_request()
- stat_req.port_no = port
-
- logging.info("Sending stats request")
- response, pkt = obj.controller.transact(stat_req, timeout=2)
- obj.assertTrue(response is not None,
- "No response to stats request")
- obj.assertTrue(len(response.entries) == 1,
- "Did not receive port stats reply")
- for item in response.entries:
+ entries = get_port_stats(obj, port)
+ for item in entries:
logging.info("Sent " + str(item.tx_packets) + " packets")
packet_sent = item.tx_packets
packet_recv = item.rx_packets
@@ -77,17 +69,9 @@
return packet_sent, packet_recv
def getAllStats(obj):
- stat_req = ofp.message.port_stats_request()
- stat_req.port_no = ofp.OFPP_NONE
-
- logging.info("Sending all port stats request")
- response, pkt = obj.controller.transact(stat_req, timeout=2)
- obj.assertTrue(response is not None,
- "No response to stats request")
- obj.assertTrue(len(response.entries) >= 3,
- "Did not receive all port stats reply")
+ entries = get_port_stats(obj, ofp.OFPP_NONE)
stats = {}
- for item in response.entries:
+ for item in entries:
stats[ item.port_no ] = ( item.tx_packets, item.rx_packets )
return stats