to_jsondict() JSON-izes public member variables of the object.
from_jsondict() calls the constructor using JSON members as the arguments.
LACP has the public member that is not required for the constructor, so 
TypeError occurs in from_jsondict().
this patch suppresses the output of to_jsondict() by changing unnecessary 
public members into protected members.

examination code:

    from ryu.lib.packet import slow
    msg1 = slow.lacp()
    print msg1
    jsondict = msg1.to_jsondict()
    msg2 = slow.lacp.from_jsondict(jsondict['lacp'])
    print msg2
    print str(msg1) == str(msg2)

before applying this patch:

    
lacp(actor_key=0,actor_length=20,actor_port=0,actor_port_priority=0,actor_state=0,actor_state_activity=0,actor_state_aggregation=0,actor_state_collecting=0,actor_state_defaulted=0,actor_state_distributing=0,actor_state_expired=0,actor_state_synchronization=0,actor_state_timeout=0,actor_system='00:00:00:00:00:00',actor_system_priority=0,actor_tag=1,collector_length=16,collector_max_delay=0,collector_tag=3,partner_key=0,partner_length=20,partner_port=0,partner_port_priority=0,partner_state=0,partner_state_activity=0,partner_state_aggregation=0,partner_state_collecting=0,partner_state_defaulted=0,partner_state_distributing=0,partner_state_expired=0,partner_state_synchronization=0,partner_state_timeout=0,partner_system='00:00:00:00:00:00',partner_system_priority=0,partner_tag=2,subtype=1,terminator_length=0,terminator_tag=0,version=1)
    CLS <class 'ryu.lib.packet.slow.lacp'>
    ARG {'actor_state_distributing': 0, 'actor_length': 20, 'actor_system': 
'MDA6MDA6MDA6MDA6MDA6MDA=', 'collector_max_delay': 0, 'terminator_length': 0, 
'collector_length': 16, 'partner_state_synchronization': 0, 
'partner_state_timeout': 0, 'partner_state_distributing': 0, 
'partner_state_collecting': 0, 'actor_state_synchronization': 0, 
'actor_state_expired': 0, 'actor_state_defaulted': 0, 'partner_state_expired': 
0, 'partner_state': 0, 'partner_system_priority': 0, 'actor_state_aggregation': 
0, 'version': 1, 'partner_port': 0, 'partner_length': 20, 'collector_tag': 3, 
'partner_state_defaulted': 0, 'actor_state_timeout': 0, 'actor_port_priority': 
0, 'partner_state_activity': 0, 'actor_state_activity': 0, 'terminator_tag': 0, 
'actor_system_priority': 0, 'actor_key': 0, 'partner_system': 
'MDA6MDA6MDA6MDA6MDA6MDA=', 'partner_tag': 2, 'actor_state': 0, 'actor_port': 
0, 'partner_state_aggregation': 0, 'partner_port_priority': 0, 'actor_tag': 1, 
'subtype': 1, 'partner_key': 0, 'actor_stat
 e
_collecting': 0}
    KWARG {'actor_state_distributing': 0, 'actor_length': 20, 'actor_system': 
'00:00:00:00:00:00', 'collector_max_delay': 0, 'terminator_length': 0, 
'collector_length': 16, 'partner_state_synchronization': 0, 
'partner_state_timeout': 0, 'partner_state_distributing': 0, 
'partner_state_collecting': 0, 'actor_state_synchronization': 0, 
'actor_state_expired': 0, 'actor_state_defaulted': 0, 'partner_state_expired': 
0, 'partner_state': 0, 'partner_system_priority': 0, 'actor_state_aggregation': 
0, 'version': 1, 'partner_port': 0, 'partner_length': 20, 'collector_tag': 3, 
'partner_state_defaulted': 0, 'actor_state_timeout': 0, 'actor_port_priority': 
0, 'partner_state_activity': 0, 'actor_state_activity': 0, 'terminator_tag': 0, 
'actor_system_priority': 0, 'actor_key': 0, 'partner_system': 
'00:00:00:00:00:00', 'partner_tag': 2, 'actor_state': 0, 'actor_port': 0, 
'partner_state_aggregation': 0, 'partner_port_priority': 0, 'actor_tag': 1, 
'subtype': 1, 'partner_key': 0, 'actor_state_collecting
 '
: 0}
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      File "/usr/local/lib/python2.7/dist-packages/ryu/lib/stringify.py", line 
293, in from_jsondict
        return cls(**dict(kwargs, **additional_args))
    TypeError: __init__() got an unexpected keyword argument 'actor_length'

after applying this patch:

    
lacp(actor_key=0,actor_port=0,actor_port_priority=0,actor_state_activity=0,actor_state_aggregation=0,actor_state_collecting=0,actor_state_defaulted=0,actor_state_distributing=0,actor_state_expired=0,actor_state_synchronization=0,actor_state_timeout=0,actor_system='00:00:00:00:00:00',actor_system_priority=0,collector_max_delay=0,partner_key=0,partner_port=0,partner_port_priority=0,partner_state_activity=0,partner_state_aggregation=0,partner_state_collecting=0,partner_state_defaulted=0,partner_state_distributing=0,partner_state_expired=0,partner_state_synchronization=0,partner_state_timeout=0,partner_system='00:00:00:00:00:00',partner_system_priority=0,version=1)
    
lacp(actor_key=0,actor_port=0,actor_port_priority=0,actor_state_activity=0,actor_state_aggregation=0,actor_state_collecting=0,actor_state_defaulted=0,actor_state_distributing=0,actor_state_expired=0,actor_state_synchronization=0,actor_state_timeout=0,actor_system='00:00:00:00:00:00',actor_system_priority=0,collector_max_delay=0,partner_key=0,partner_port=0,partner_port_priority=0,partner_state_activity=0,partner_state_aggregation=0,partner_state_collecting=0,partner_state_defaulted=0,partner_state_distributing=0,partner_state_expired=0,partner_state_synchronization=0,partner_state_timeout=0,partner_system='00:00:00:00:00:00',partner_system_priority=0,version=1)
    True

Signed-off-by: Yuichi Ito <[email protected]>
---
 ryu/lib/packet/slow.py             |   40 +++++++++++-----------
 ryu/tests/unit/packet/test_slow.py |   65 ++++++++++++++++++------------------
 2 files changed, 53 insertions(+), 52 deletions(-)

diff --git a/ryu/lib/packet/slow.py b/ryu/lib/packet/slow.py
index 61a91c0..71be6ae 100644
--- a/ryu/lib/packet/slow.py
+++ b/ryu/lib/packet/slow.py
@@ -428,13 +428,13 @@ class lacp(packet_base.PacketBase):
         #------------------------------
         # Header
         #------------------------------
-        self.subtype = SLOW_SUBTYPE_LACP
+        self._subtype = SLOW_SUBTYPE_LACP
         self.version = version
         #------------------------------
         # Actor Information
         #------------------------------
-        self.actor_tag = self.LACP_TLV_TYPE_ACTOR
-        self.actor_length = self._ACTPRT_INFO_PACK_LEN
+        self._actor_tag = self.LACP_TLV_TYPE_ACTOR
+        self._actor_length = self._ACTPRT_INFO_PACK_LEN
         self.actor_system_priority = actor_system_priority
         self.actor_system = actor_system
         self.actor_key = actor_key
@@ -448,7 +448,7 @@ class lacp(packet_base.PacketBase):
         self.actor_state_distributing = actor_state_distributing
         self.actor_state_defaulted = actor_state_defaulted
         self.actor_state_expired = actor_state_expired
-        self.actor_state = (
+        self._actor_state = (
             (self.actor_state_activity << 0) |
             (self.actor_state_timeout << 1) |
             (self.actor_state_aggregation << 2) |
@@ -460,8 +460,8 @@ class lacp(packet_base.PacketBase):
         #------------------------------
         # Partner Information
         #------------------------------
-        self.partner_tag = self.LACP_TLV_TYPE_PARTNER
-        self.partner_length = self._ACTPRT_INFO_PACK_LEN
+        self._partner_tag = self.LACP_TLV_TYPE_PARTNER
+        self._partner_length = self._ACTPRT_INFO_PACK_LEN
         self.partner_system_priority = partner_system_priority
         self.partner_system = partner_system
         self.partner_key = partner_key
@@ -476,7 +476,7 @@ class lacp(packet_base.PacketBase):
         self.partner_state_distributing = partner_state_distributing
         self.partner_state_defaulted = partner_state_defaulted
         self.partner_state_expired = partner_state_expired
-        self.partner_state = (
+        self._partner_state = (
             (self.partner_state_activity << 0) |
             (self.partner_state_timeout << 1) |
             (self.partner_state_aggregation << 2) |
@@ -488,14 +488,14 @@ class lacp(packet_base.PacketBase):
         #------------------------------
         # Collector Information
         #------------------------------
-        self.collector_tag = self.LACP_TLV_TYPE_COLLECTOR
-        self.collector_length = self._COL_INFO_PACK_LEN
+        self._collector_tag = self.LACP_TLV_TYPE_COLLECTOR
+        self._collector_length = self._COL_INFO_PACK_LEN
         self.collector_max_delay = collector_max_delay
         #------------------------------
         # Terminator
         #------------------------------
-        self.terminator_tag = self.LACP_TLV_TYPE_TERMINATOR
-        self.terminator_length = 0
+        self._terminator_tag = self.LACP_TLV_TYPE_TERMINATOR
+        self._terminator_length = 0

     @classmethod
     def parser(cls, buf):
@@ -578,27 +578,27 @@ class lacp(packet_base.PacketBase):
                    collector_max_delay), None, buf[lacp._ALL_PACK_LEN:]

     def serialize(self, payload, prev):
-        header = struct.pack(self._HLEN_PACK_STR, self.subtype,
+        header = struct.pack(self._HLEN_PACK_STR, self._subtype,
                              self.version)
         actor = struct.pack(self._ACTPRT_INFO_PACK_STR,
-                            self.actor_tag, self.actor_length,
+                            self._actor_tag, self._actor_length,
                             self.actor_system_priority,
                             addrconv.mac.text_to_bin(self.actor_system),
                             self.actor_key,
                             self.actor_port_priority, self.actor_port,
-                            self.actor_state)
+                            self._actor_state)
         partner = struct.pack(self._ACTPRT_INFO_PACK_STR,
-                              self.partner_tag, self.partner_length,
+                              self._partner_tag, self._partner_length,
                               self.partner_system_priority,
                               addrconv.mac.text_to_bin(self.partner_system),
                               self.partner_key,
                               self.partner_port_priority,
-                              self.partner_port, self.partner_state)
+                              self.partner_port, self._partner_state)
         collector = struct.pack(self._COL_INFO_PACK_STR,
-                                self.collector_tag,
-                                self.collector_length,
+                                self._collector_tag,
+                                self._collector_length,
                                 self.collector_max_delay)
         terminator = struct.pack(self._TRM_PACK_STR,
-                                 self.terminator_tag,
-                                 self.terminator_length)
+                                 self._terminator_tag,
+                                 self._terminator_length)
         return header + actor + partner + collector + terminator
diff --git a/ryu/tests/unit/packet/test_slow.py 
b/ryu/tests/unit/packet/test_slow.py
index c7cd3bd..283fc8f 100644
--- a/ryu/tests/unit/packet/test_slow.py
+++ b/ryu/tests/unit/packet/test_slow.py
@@ -300,10 +300,10 @@ class Test_lacp(unittest.TestCase):
                 return p

     def test_init(self):
-        eq_(self.subtype, self.l.subtype)
+        eq_(self.subtype, self.l._subtype)
         eq_(self.version, self.l.version)
-        eq_(self.actor_tag, self.l.actor_tag)
-        eq_(self.actor_length, self.l.actor_length)
+        eq_(self.actor_tag, self.l._actor_tag)
+        eq_(self.actor_length, self.l._actor_length)
         eq_(self.actor_system_priority, self.l.actor_system_priority)
         eq_(self.actor_system, self.l.actor_system)
         eq_(self.actor_key, self.l.actor_key)
@@ -321,9 +321,9 @@ class Test_lacp(unittest.TestCase):
             self.l.actor_state_distributing)
         eq_(self.actor_state_defaulted, self.l.actor_state_defaulted)
         eq_(self.actor_state_expired, self.l.actor_state_expired)
-        eq_(self.actor_state, self.l.actor_state)
-        eq_(self.partner_tag, self.l.partner_tag)
-        eq_(self.partner_length, self.l.partner_length)
+        eq_(self.actor_state, self.l._actor_state)
+        eq_(self.partner_tag, self.l._partner_tag)
+        eq_(self.partner_length, self.l._partner_length)
         eq_(self.partner_system_priority,
             self.l.partner_system_priority)
         eq_(self.partner_system, self.l.partner_system)
@@ -343,12 +343,12 @@ class Test_lacp(unittest.TestCase):
         eq_(self.partner_state_defaulted,
             self.l.partner_state_defaulted)
         eq_(self.partner_state_expired, self.l.partner_state_expired)
-        eq_(self.partner_state, self.l.partner_state)
-        eq_(self.collector_tag, self.l.collector_tag)
-        eq_(self.collector_length, self.l.collector_length)
+        eq_(self.partner_state, self.l._partner_state)
+        eq_(self.collector_tag, self.l._collector_tag)
+        eq_(self.collector_length, self.l._collector_length)
         eq_(self.collector_max_delay, self.l.collector_max_delay)
-        eq_(self.terminator_tag, self.l.terminator_tag)
-        eq_(self.terminator_length, self.l.terminator_length)
+        eq_(self.terminator_tag, self.l._terminator_tag)
+        eq_(self.terminator_length, self.l._terminator_length)

     def test_parser(self):
         _res = self.l.parser(self.buf)
@@ -357,10 +357,10 @@ class Test_lacp(unittest.TestCase):
         else:
             res = _res

-        eq_(res.subtype, self.subtype)
+        eq_(res._subtype, self.subtype)
         eq_(res.version, self.version)
-        eq_(res.actor_tag, self.actor_tag)
-        eq_(res.actor_length, self.actor_length)
+        eq_(res._actor_tag, self.actor_tag)
+        eq_(res._actor_length, self.actor_length)
         eq_(res.actor_system_priority, self.actor_system_priority)
         eq_(res.actor_system, self.actor_system)
         eq_(res.actor_key, self.actor_key)
@@ -375,9 +375,9 @@ class Test_lacp(unittest.TestCase):
         eq_(res.actor_state_distributing, self.actor_state_distributing)
         eq_(res.actor_state_defaulted, self.actor_state_defaulted)
         eq_(res.actor_state_expired, self.actor_state_expired)
-        eq_(res.actor_state, self.actor_state)
-        eq_(res.partner_tag, self.partner_tag)
-        eq_(res.partner_length, self.partner_length)
+        eq_(res._actor_state, self.actor_state)
+        eq_(res._partner_tag, self.partner_tag)
+        eq_(res._partner_length, self.partner_length)
         eq_(res.partner_system_priority, self.partner_system_priority)
         eq_(res.partner_system, self.partner_system)
         eq_(res.partner_key, self.partner_key)
@@ -394,12 +394,12 @@ class Test_lacp(unittest.TestCase):
             self.partner_state_distributing)
         eq_(res.partner_state_defaulted, self.partner_state_defaulted)
         eq_(res.partner_state_expired, self.partner_state_expired)
-        eq_(res.partner_state, self.partner_state)
-        eq_(res.collector_tag, self.collector_tag)
-        eq_(res.collector_length, self.collector_length)
+        eq_(res._partner_state, self.partner_state)
+        eq_(res._collector_tag, self.collector_tag)
+        eq_(res._collector_length, self.collector_length)
         eq_(res.collector_max_delay, self.collector_max_delay)
-        eq_(res.terminator_tag, self.terminator_tag)
-        eq_(res.terminator_length, self.terminator_length)
+        eq_(res._terminator_tag, self.terminator_tag)
+        eq_(res._terminator_length, self.terminator_length)

     def test_serialize(self):
         data = bytearray()
@@ -466,10 +466,10 @@ class Test_lacp(unittest.TestCase):
         l = self.find_protocol(p, "lacp")
         ok_(l)

-        eq_(l.subtype, self.subtype)
+        eq_(l._subtype, self.subtype)
         eq_(l.version, self.version)
-        eq_(l.actor_tag, self.actor_tag)
-        eq_(l.actor_length, self.actor_length)
+        eq_(l._actor_tag, self.actor_tag)
+        eq_(l._actor_length, self.actor_length)
         eq_(l.actor_system_priority, self.actor_system_priority)
         eq_(l.actor_system, self.actor_system)
         eq_(l.actor_key, self.actor_key)
@@ -484,9 +484,9 @@ class Test_lacp(unittest.TestCase):
         eq_(l.actor_state_distributing, self.actor_state_distributing)
         eq_(l.actor_state_defaulted, self.actor_state_defaulted)
         eq_(l.actor_state_expired, self.actor_state_expired)
-        eq_(l.actor_state, self.actor_state)
-        eq_(l.partner_tag, self.partner_tag)
-        eq_(l.partner_length, self.partner_length)
+        eq_(l._actor_state, self.actor_state)
+        eq_(l._partner_tag, self.partner_tag)
+        eq_(l._partner_length, self.partner_length)
         eq_(l.partner_system_priority, self.partner_system_priority)
         eq_(l.partner_system, self.partner_system)
         eq_(l.partner_key, self.partner_key)
@@ -502,11 +502,12 @@ class Test_lacp(unittest.TestCase):
             self.partner_state_distributing)
         eq_(l.partner_state_defaulted, self.partner_state_defaulted)
         eq_(l.partner_state_expired, self.partner_state_expired)
-        eq_(l.collector_tag, self.collector_tag)
-        eq_(l.collector_length, self.collector_length)
+        eq_(l._partner_state, self.partner_state)
+        eq_(l._collector_tag, self.collector_tag)
+        eq_(l._collector_length, self.collector_length)
         eq_(l.collector_max_delay, self.collector_max_delay)
-        eq_(l.terminator_tag, self.terminator_tag)
-        eq_(l.terminator_length, self.terminator_length)
+        eq_(l._terminator_tag, self.terminator_tag)
+        eq_(l._terminator_length, self.terminator_length)

     @raises(Exception)
     def test_malformed_lacp(self):
-- 
1.7.10.4


------------------------------------------------------------------------------
Rapidly troubleshoot problems before they affect your business. Most IT 
organizations don't have a clear picture of how application performance 
affects their revenue. With AppDynamics, you get 100% visibility into your 
Java,.NET, & PHP application. Start your 15-day FREE TRIAL of AppDynamics Pro!
http://pubads.g.doubleclick.net/gampad/clk?id=84349831&iu=/4140/ostg.clktrk
_______________________________________________
Ryu-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ryu-devel

Reply via email to