[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/common/utils/test_bpf.py b/test/unit/common/utils/test_bpf.py
index 21a80da..6cb2a00 100644
--- a/test/unit/common/utils/test_bpf.py
+++ b/test/unit/common/utils/test_bpf.py
@@ -11,6 +11,7 @@
# 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.
+from __future__ import absolute_import
from unittest import TestCase, main
from scapy.layers.l2 import Ether, Dot1Q
@@ -25,8 +26,8 @@
pcp = 7
frame_match = 'ether[14:2] = 0x{:01x}{:03x}'.format(pcp << 1, vid)
filter = BpfProgramFilter(frame_match)
- self.assertTrue(filter(str(Ether()/Dot1Q(prio=pcp, vlan=vid))))
- self.assertFalse(filter(str(Ether()/Dot1Q(prio=pcp, vlan=4000))))
+ self.assertTrue(filter(bytes(Ether()/Dot1Q(prio=pcp, vlan=vid))))
+ self.assertFalse(filter(bytes(Ether()/Dot1Q(prio=pcp, vlan=4000))))
def test_bpf2(self):
vid1 = 4090
@@ -39,9 +40,9 @@
filter = BpfProgramFilter('{} or {}'.format(
frame_match_case1, frame_match_case2))
- self.assertTrue(filter(str(Ether()/Dot1Q(prio=pcp1, vlan=vid1))))
- self.assertTrue(filter(str(Ether()/Dot1Q(vlan=vid2))))
- self.assertFalse(filter(str(Ether()/Dot1Q(vlan=4001))))
+ self.assertTrue(filter(bytes(Ether()/Dot1Q(prio=pcp1, vlan=vid1))))
+ self.assertTrue(filter(bytes(Ether()/Dot1Q(vlan=vid2))))
+ self.assertFalse(filter(bytes(Ether()/Dot1Q(vlan=4001))))
if __name__ == '__main__':