diff options
author | Yuichi Ito <ito.yuichi0@gmail.com> | 2014-03-28 13:13:04 +0900 |
---|---|---|
committer | FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp> | 2014-03-30 10:42:47 +0900 |
commit | 35688fc753854a37f83c7ff0598b28147349d151 (patch) | |
tree | 27f0c630d9a779a133e78945b5f88620cd6eef19 | |
parent | 50e9cdaf197893474e767edc2268d5e3aafeb312 (diff) |
sw test tool: Add support for installation of meter entries
Signed-off-by: WATANABE Fumitaka <watanabe.fumitaka1@gmail.com>
Signed-off-by: Yuichi Ito <ito.yuichi0@gmail.com>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
-rw-r--r-- | ryu/tests/switch/tester.py | 25 |
1 files changed, 23 insertions, 2 deletions
diff --git a/ryu/tests/switch/tester.py b/ryu/tests/switch/tester.py index 984b0b45..1123e163 100644 --- a/ryu/tests/switch/tester.py +++ b/ryu/tests/switch/tester.py @@ -104,6 +104,7 @@ STATE_GET_MATCH_COUNT = 7 STATE_UNMATCH_PKT_SEND = 8 STATE_FLOW_UNMATCH_CHK = 9 STATE_INIT_METER = 10 +STATE_METER_INSTALL = 11 STATE_DISCONNECTED = 99 @@ -127,6 +128,9 @@ MSG = {STATE_INIT_FLOW: STATE_FLOW_INSTALL: {TIMEOUT: 'Failed to add flows: barrier request timeout.', RCV_ERR: 'Failed to add flows: %(err_msg)s'}, + STATE_METER_INSTALL: + {TIMEOUT: 'Failed to add meters: barrier request timeout.', + RCV_ERR: 'Failed to add meters: %(err_msg)s'}, STATE_FLOW_EXIST_CHK: {FAILURE: 'Added incorrect flows: %(flows)s', TIMEOUT: 'Failed to add flows: flow stats request timeout.', @@ -326,8 +330,11 @@ class OfTester(app_manager.RyuApp): self._test(STATE_INIT_FLOW) # 1. Install flows. for flow in test.prerequisite: - self._test(STATE_FLOW_INSTALL, flow) - self._test(STATE_FLOW_EXIST_CHK, flow) + if isinstance(flow, ofproto_v1_3_parser.OFPFlowMod): + self._test(STATE_FLOW_INSTALL, flow) + self._test(STATE_FLOW_EXIST_CHK, flow) + elif isinstance(flow, ofproto_v1_3_parser.OFPMeterMod): + self._test(STATE_METER_INSTALL, flow) # 2. Check flow matching. for pkt in test.tests: if KEY_EGRESS in pkt or KEY_PKT_IN in pkt: @@ -399,6 +406,7 @@ class OfTester(app_manager.RyuApp): test = {STATE_INIT_FLOW: self._test_initialize_flow, STATE_INIT_METER: self._test_initialize_meter, STATE_FLOW_INSTALL: self._test_flow_install, + STATE_METER_INSTALL: self._test_meter_install, STATE_FLOW_EXIST_CHK: self._test_flow_exist_check, STATE_TARGET_PKT_COUNT: self._test_get_packet_count, STATE_TESTER_PKT_COUNT: self._test_get_packet_count, @@ -441,6 +449,18 @@ class OfTester(app_manager.RyuApp): msg = self.rcv_msgs[0] assert isinstance(msg, ofproto_v1_3_parser.OFPBarrierReply) + def _test_meter_install(self, meter): + xid = self.target_sw._send_msg(meter) + self.send_msg_xids.append(xid) + + xid = self.target_sw.send_barrier_request() + self.send_msg_xids.append(xid) + + self._wait() + assert len(self.rcv_msgs) == 1 + msg = self.rcv_msgs[0] + assert isinstance(msg, ofproto_v1_3_parser.OFPBarrierReply) + def _test_flow_exist_check(self, flow_mod): xid = self.target_sw.send_flow_stats() self.send_msg_xids.append(xid) @@ -703,6 +723,7 @@ class OfTester(app_manager.RyuApp): state_list = [STATE_INIT_FLOW, STATE_INIT_METER, STATE_FLOW_INSTALL, + STATE_METER_INSTALL, STATE_UNMATCH_PKT_SEND] if self.state in state_list: if self.waiter and ev.msg.xid in self.send_msg_xids: |