Signed-off-by: IWAMOTO Toshihiro <iwam...@valinux.co.jp>
---
 ryu/tests/unit/lib/test_ofctl_string.py | 151 ++++++++++++++++++++++++++++++++
 1 file changed, 151 insertions(+)
 create mode 100644 ryu/tests/unit/lib/test_ofctl_string.py

diff --git a/ryu/tests/unit/lib/test_ofctl_string.py 
b/ryu/tests/unit/lib/test_ofctl_string.py
new file mode 100644
index 0000000..fb491e3
--- /dev/null
+++ b/ryu/tests/unit/lib/test_ofctl_string.py
@@ -0,0 +1,151 @@
+# Copyright (C) 2017 Nippon Telegraph and Telephone Corporation.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#    http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+# implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+import unittest
+
+from ryu.lib import ofctl_string
+from ryu.ofproto import ofproto_parser
+from ryu.ofproto.ofproto_protocol import ProtocolDesc
+from ryu.ofproto import ofproto_v1_5
+
+
+class Test_OfctlString(unittest.TestCase):
+    """Test cases for ryu.ofproto.ofp_instruction_from_str.
+    """
+
+    def __init__(self, methodName):
+        print('init %s' % methodName)
+        self.fake_dp_of15 = ProtocolDesc(ofproto_v1_5.OFP_VERSION)
+        self.maxDiff = None
+        super(Test_OfctlString, self).__init__(methodName)
+
+    def _test_str(self, dp, ofctl_str, *jsondict):
+        json = ofctl_string.ofp_instruction_from_str(
+            ofproto_v1_5, ofctl_str)
+        inst = ofproto_parser.ofp_instruction_from_jsondict(dp, json)
+        self.assertEqual(len(inst), len(jsondict))
+        for i in range(len(inst)):
+            self.assertEqual(jsondict[i], inst[i].to_jsondict())
+
+    def test_drop(self):
+        inst = ofctl_string.ofp_instruction_from_str(
+            ofproto_v1_5, 'drop')
+        self.assertEqual(inst, [])
+
+    def test_conjunction(self):
+        self._test_str(self.fake_dp_of15,
+                       'conjunction(0x234, 1/3),conjunction(0xdea, 2/2)',
+                       {'OFPInstructionActions': {
+                           'actions': [
+                               {'NXActionConjunction': {'clause': 0,
+                                                        'experimenter': 8992,
+                                                        'id': 0x234,
+                                                        'len': None,
+                                                        'n_clauses': 3,
+                                                        'subtype': 34,
+                                                        'type': 65535}},
+                               {'NXActionConjunction': {'clause': 1,
+                                                        'experimenter': 8992,
+                                                        'id': 0xdea,
+                                                        'len': None,
+                                                        'n_clauses': 2,
+                                                        'subtype': 34,
+                                                        'type': 65535}}],
+                           'type': 4}})
+
+    def test_ct(self):
+        self._test_str(self.fake_dp_of15,
+                       'ct(commit)',
+                       {'OFPInstructionActions': {
+                           'actions': [{'NXActionCT': {'actions': [],
+                                                       'alg': 0,
+                                                       'experimenter': 8992,
+                                                       'flags': 1,
+                                                       'len': None,
+                                                       'recirc_table': 255,
+                                                       'subtype': 35,
+                                                       'type': 65535,
+                                                       'zone_ofs_nbits': 0,
+                                                       'zone_src': u''}}],
+                           'type': 4}})
+
+    def test_ct_2(self):
+        self._test_str(self.fake_dp_of15,
+                       'ct(commit,zone=NXM_NX_REG8[0..15],'
+                       'exec(set_field:1->ct_mark))',
+                       {'OFPInstructionActions': {
+                           'actions': [{'NXActionCT': {
+                               'actions': [
+                                   {'OFPActionSetField': {
+                                       'field': {'OXMTlv': {'field': 'ct_mark',
+                                                            'mask': None,
+                                                            'value': 1}},
+                                       'len': 8,
+                                       'type': 25}}],
+                               'alg': 0,
+                               'experimenter': 8992,
+                               'flags': 1,
+                               'len': None,
+                               'recirc_table': 255,
+                               'subtype': 35,
+                               'type': 65535,
+                               'zone_ofs_nbits': 15,
+                               'zone_src': u'reg8'}}],
+                           'type': 4}})
+
+    def test_resubmit(self):
+        self._test_str(self.fake_dp_of15,
+                       'resubmit(,10)',
+                       {'OFPInstructionActions':
+                        {'actions': [{'NXActionResubmitTable': {
+                            'experimenter': 8992,
+                            'in_port': 65528,
+                            'len': None,
+                            'subtype': 14,
+                            'table_id': 10,
+                            'type': 65535}}],
+                         'type': 4}})
+
+    def test_set_field(self):
+        self._test_str(self.fake_dp_of15,
+                       'set_field:10/0xff->tun_id',
+                       {'OFPInstructionActions':
+                        {'actions': [{'OFPActionSetField': {
+                            'field': {'OXMTlv': {'field': 'tunnel_id',
+                                                 'mask': 255,
+                                                 'value': 10}},
+                            'len': 8,
+                            'type': 25}}],
+                         'type': 4}})
+
+    def test_pop_vlan(self):
+        self._test_str(self.fake_dp_of15,
+                       'pop_vlan',
+                       {'OFPInstructionActions':
+                        {'actions': [{'OFPActionPopVlan': {'len': 8,
+                                                           'type': 18}}],
+                         'type': 4}})
+
+    def test_multi(self):
+        self._test_str(self.fake_dp_of15,
+                       'pop_vlan,goto_table:33',
+                       {'OFPInstructionActions':
+                        {'actions': [{'OFPActionPopVlan': {'len': 8,
+                                                           'type': 18}}],
+                         'type': 4}},
+                       {'OFPInstructionGotoTable':
+                        {'len': 8,
+                         'table_id': 33,
+                         'type': 1}})
-- 
2.1.4


------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Ryu-devel mailing list
Ryu-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ryu-devel

Reply via email to