[VOL-2241] Python 3 refactor of pyvoltha
Majority of work was manual fixes to bytes and strings types, which are
different in py3, but same in py2. As the OMCI library does a lot of
these comparisons and scapy then renders packets, this was frequently
nontrival to debug.
Also:
- Removed grpc dep which wasn't being used, not py3 compatible
- s/Alarms/Events/ to work with protobuf changes per VOL-2224
- Automatic fixes via modernize tooling
- Removed unused OrderedWeakValueDict code
- Removed frameio send_frame specific to Darwin (MacOS), which had no
corresponding linux code
- Use library functions for hex and unicode conversions
- Various other cleanups and fixes (EOL whitespace, etc.)
Also more (Matt):
- handle stringify better, check if already string
- use binary string for binary work
- import new thread paths
- update requirements.txt for newer libraries needed with newer python
- return proper tuple for unpacking
- bytes string formatting fixed
- fix mock task unit test
Even more (Zack):
- Python 2/3 compat for _thread by using 'future'
- Bump version to 2.3.0
Change-Id: I53b596d374a944bfb80d0b112f21bcc1f8bcee6e
diff --git a/test/unit/extensions/omci/test_mib_db_dict.py b/test/unit/extensions/omci/test_mib_db_dict.py
index 2f7f26d..6cf1e1d 100644
--- a/test/unit/extensions/omci/test_mib_db_dict.py
+++ b/test/unit/extensions/omci/test_mib_db_dict.py
@@ -13,15 +13,17 @@
# See the License for the specific language governing permissions and
# limitations under the License.
#
+from __future__ import absolute_import
from unittest import main, TestCase
from pyvoltha.adapters.extensions.omci.omci_entities import *
from pyvoltha.adapters.extensions.omci.database.mib_db_dict import *
from pyvoltha.adapters.extensions.omci.database.mib_db_api import MODIFIED_KEY, CREATED_KEY,\
DEVICE_ID_KEY, MDS_KEY, LAST_SYNC_KEY
-from mock.mock_adapter_agent import MockAdapterAgent, MockDevice
+from .mock.mock_adapter_agent import MockAdapterAgent, MockDevice
from nose.tools import raises, assert_raises
import time
+import six
_DEVICE_ID = 'br-549'
@@ -373,7 +375,7 @@
self.assertLessEqual(dev_data[CREATED_KEY], set_time)
self.assertLessEqual(self.db.created, set_time)
- self.assertFalse(any(isinstance(cls, int) for cls in dev_data.iterkeys()))
+ self.assertFalse(any(isinstance(cls, int) for cls in six.iterkeys(dev_data)))
def test_str_field_serialization(self):
self.db.start()
@@ -385,8 +387,8 @@
'olt_vendor_id': 'ABCD', # StrFixedLenField(4)
}
self.db.set(_DEVICE_ID, class_id, inst_id, attributes)
- data = self.db.query(_DEVICE_ID, class_id, inst_id, attributes.keys())
- self.assertTrue(all(isinstance(data[k], basestring) for k in attributes.keys()))
+ data = self.db.query(_DEVICE_ID, class_id, inst_id, list(attributes.keys()))
+ self.assertTrue(all(isinstance(data[k], six.string_types) for k in attributes.keys()))
self.assertTrue(all(data[k] == attributes[k] for k in attributes.keys()))
def test_mac_address_ip_field_serialization(self):
@@ -400,8 +402,8 @@
'ip_address': '1.2.3.4', # IPField
}
self.db.set(_DEVICE_ID, class_id, inst_id, attributes)
- data = self.db.query(_DEVICE_ID, class_id, inst_id, attributes.keys())
- self.assertTrue(all(isinstance(data[k], basestring) for k in attributes.keys()))
+ data = self.db.query(_DEVICE_ID, class_id, inst_id, list(attributes.keys()))
+ self.assertTrue(all(isinstance(data[k], six.string_types) for k in attributes.keys()))
self.assertTrue(all(data[k] == attributes[k] for k in attributes.keys()))
def test_byte_and_short_field_serialization(self):
@@ -415,7 +417,7 @@
'non_omci_management_identifier': int(12345) # IPField
}
self.db.set(_DEVICE_ID, class_id, inst_id, attributes)
- data = self.db.query(_DEVICE_ID, class_id, inst_id, attributes.keys())
+ data = self.db.query(_DEVICE_ID, class_id, inst_id, list(attributes.keys()))
self.assertTrue(all(isinstance(data[k], type(attributes[k])) for k in attributes.keys()))
self.assertTrue(all(data[k] == attributes[k] for k in attributes.keys()))
@@ -429,7 +431,7 @@
'related_port': int(1234567) # IntField
}
self.db.set(_DEVICE_ID, class_id, inst_id, attributes)
- data = self.db.query(_DEVICE_ID, class_id, inst_id, attributes.keys())
+ data = self.db.query(_DEVICE_ID, class_id, inst_id, list(attributes.keys()))
self.assertTrue(all(isinstance(data[k], type(attributes[k])) for k in attributes.keys()))
self.assertTrue(all(data[k] == attributes[k] for k in attributes.keys()))
@@ -443,7 +445,7 @@
'packet_drop_queue_thresholds': int(0x1234) # LongField
}
self.db.set(_DEVICE_ID, class_id, inst_id, attributes)
- data = self.db.query(_DEVICE_ID, class_id, inst_id, attributes.keys())
+ data = self.db.query(_DEVICE_ID, class_id, inst_id, list(attributes.keys()))
self.assertTrue(all(isinstance(data[k], type(attributes[k])) for k in attributes.keys()))
self.assertTrue(all(data[k] == attributes[k] for k in attributes.keys()))
@@ -454,10 +456,10 @@
class_id = OntG.class_id
inst_id = 0
attributes = {
- 'extended_tc_layer_options': long(0x1234), # BitField(16)
+ 'extended_tc_layer_options': int(0x1234), # BitField(16)
}
self.db.set(_DEVICE_ID, class_id, inst_id, attributes)
- data = self.db.query(_DEVICE_ID, class_id, inst_id, attributes.keys())
+ data = self.db.query(_DEVICE_ID, class_id, inst_id, list(attributes.keys()))
self.assertTrue(all(isinstance(data[k], type(attributes[k])) for k in attributes.keys()))
self.assertTrue(all(data[k] == attributes[k] for k in attributes.keys()))
@@ -476,7 +478,7 @@
'number_of_entries': 1
}
self.db.set(_DEVICE_ID, class_id, inst_id, attributes)
- data = self.db.query(_DEVICE_ID, class_id, inst_id, attributes.keys())
+ data = self.db.query(_DEVICE_ID, class_id, inst_id, list(attributes.keys()))
self.assertTrue(all(isinstance(data[k], type(attributes[k])) for k in attributes.keys()))
self.assertTrue(all(data[k] == attributes[k] for k in attributes.keys()))
@@ -504,7 +506,7 @@
)
self.db.set(_DEVICE_ID, class_id, inst_id, attributes)
- data = self.db.query(_DEVICE_ID, class_id, inst_id, attributes.keys())
+ data = self.db.query(_DEVICE_ID, class_id, inst_id, list(attributes.keys()))
table_as_dict = json.loads(table_data.to_json())
self.assertTrue(all(isinstance(data['received_frame_vlan_tagging_operation_table'][0].fields[k],