<p>osmith <strong>submitted</strong> this change.</p><p><a href="https://gerrit.osmocom.org/c/openbsc/+/16544">View Change</a></p><div style="white-space:pre-wrap">Approvals:
  osmith: Looks good to me, approved
  Jenkins Builder: Verified

</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">osmoappdesc.py, tests, ipa.py: switch to python 3<br><br>Make build and external tests work with python3, so we can drop<br>the python2 dependency.<br><br>This should be merged shortly after osmo-python-tests was migrated to<br>python3, and the jenkins build slaves were (automatically) updated to<br>have the new osmo-python-tests installed.<br><br>Related: OS#2819<br>Depends: osmo-python-tests I3ffc3519bf6c22536a49dad7a966188ddad351a7<br>Change-Id: Id7d006f892198bb8a7c0d4a8a8ea00b8d0e62df4<br>---<br>M openbsc/contrib/ipa.py<br>M openbsc/osmoappdesc.py<br>M openbsc/tests/ctrl_test_runner.py<br>M openbsc/tests/smpp_test_runner.py<br>M openbsc/tests/vty_test_runner.py<br>5 files changed, 452 insertions(+), 442 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/openbsc/contrib/ipa.py b/openbsc/contrib/ipa.py</span><br><span>index 71cbf45..cd1192c 100755</span><br><span>--- a/openbsc/contrib/ipa.py</span><br><span>+++ b/openbsc/contrib/ipa.py</span><br><span>@@ -56,7 +56,11 @@</span><br><span>         """</span><br><span>         Create TAG as TLV data</span><br><span>         """</span><br><span style="color: hsl(0, 100%, 40%);">-        return struct.pack(">HB", len(v) + 1, t) + v</span><br><span style="color: hsl(120, 100%, 40%);">+        if isinstance(v, str):</span><br><span style="color: hsl(120, 100%, 40%);">+            v = v.encode()</span><br><span style="color: hsl(120, 100%, 40%);">+        if isinstance(t, str):</span><br><span style="color: hsl(120, 100%, 40%);">+            t = t.encode()</span><br><span style="color: hsl(120, 100%, 40%);">+        return struct.pack(">HB".encode(), len(v) + 1, t) + v</span><br><span> </span><br><span>     def proto(self, p):</span><br><span>         """</span><br><span>@@ -96,9 +100,15 @@</span><br><span>         """</span><br><span>         Add IPA header (with extension if necessary), data must be represented as bytes</span><br><span>         """</span><br><span style="color: hsl(120, 100%, 40%);">+        if isinstance(data, str):</span><br><span style="color: hsl(120, 100%, 40%);">+            data = data.encode()</span><br><span style="color: hsl(120, 100%, 40%);">+        if isinstance(proto, str):</span><br><span style="color: hsl(120, 100%, 40%);">+            proto = proto.encode()</span><br><span style="color: hsl(120, 100%, 40%);">+        if isinstance(ext, str):</span><br><span style="color: hsl(120, 100%, 40%);">+            ext = ext.encode()</span><br><span>         if ext is None:</span><br><span style="color: hsl(0, 100%, 40%);">-            return struct.pack(">HB", len(data) + 1, proto) + data</span><br><span style="color: hsl(0, 100%, 40%);">-        return struct.pack(">HBB", len(data) + 1, proto, ext) + data</span><br><span style="color: hsl(120, 100%, 40%);">+            return struct.pack(">HB".encode(), len(data) + 1, proto) + data</span><br><span style="color: hsl(120, 100%, 40%);">+        return struct.pack(">HBB".encode(), len(data) + 1, proto, ext) + data</span><br><span> </span><br><span>     def del_header(self, data):</span><br><span>         """</span><br><span>diff --git a/openbsc/osmoappdesc.py b/openbsc/osmoappdesc.py</span><br><span>index 5b01e4c..af949e8 100644</span><br><span>--- a/openbsc/osmoappdesc.py</span><br><span>+++ b/openbsc/osmoappdesc.py</span><br><span>@@ -1,4 +1,4 @@</span><br><span style="color: hsl(0, 100%, 40%);">-#!/usr/bin/env python</span><br><span style="color: hsl(120, 100%, 40%);">+#!/usr/bin/env python3</span><br><span> </span><br><span> # (C) 2013 by Katerina Barone-Adesi <kat.obsc@gmail.com></span><br><span> # This program is free software: you can redistribute it and/or modify</span><br><span>diff --git a/openbsc/tests/ctrl_test_runner.py b/openbsc/tests/ctrl_test_runner.py</span><br><span>index ad0a16b..a1d4195 100755</span><br><span>--- a/openbsc/tests/ctrl_test_runner.py</span><br><span>+++ b/openbsc/tests/ctrl_test_runner.py</span><br><span>@@ -1,4 +1,4 @@</span><br><span style="color: hsl(0, 100%, 40%);">-#!/usr/bin/env python2</span><br><span style="color: hsl(120, 100%, 40%);">+#!/usr/bin/env python3</span><br><span> </span><br><span> # (C) 2013 by Jacob Erlbeck <jerlbeck@sysmocom.de></span><br><span> # (C) 2014 by Holger Hans Peter Freyther</span><br><span>@@ -57,8 +57,8 @@</span><br><span>         try:</span><br><span>             self.proc = osmoutil.popen_devnull(osmo_ctrl_cmd)</span><br><span>         except OSError:</span><br><span style="color: hsl(0, 100%, 40%);">-            print >> sys.stderr, "Current directory: %s" % os.getcwd()</span><br><span style="color: hsl(0, 100%, 40%);">-            print >> sys.stderr, "Consider setting -b"</span><br><span style="color: hsl(120, 100%, 40%);">+            print("Current directory: %s" % os.getcwd(), file=sys.stderr)</span><br><span style="color: hsl(120, 100%, 40%);">+            print("Consider setting -b", file=sys.stderr)</span><br><span>         time.sleep(2)</span><br><span> </span><br><span>         appstring = self.ctrl_app()[2]</span><br><span>@@ -76,7 +76,7 @@</span><br><span> </span><br><span>     def connect(self, host, port):</span><br><span>         if verbose:</span><br><span style="color: hsl(0, 100%, 40%);">-            print "Connecting to host %s:%i" % (host, port)</span><br><span style="color: hsl(120, 100%, 40%);">+            print("Connecting to host %s:%i" % (host, port))</span><br><span> </span><br><span>         retries = 30</span><br><span>         while True:</span><br><span>@@ -96,7 +96,7 @@</span><br><span> </span><br><span>     def send(self, data):</span><br><span>         if verbose:</span><br><span style="color: hsl(0, 100%, 40%);">-            print "Sending \"%s\"" %(data)</span><br><span style="color: hsl(120, 100%, 40%);">+            print("Sending \"%s\"" %(data))</span><br><span>         data = Ctrl().add_header(data)</span><br><span>         return self.sock.send(data) == len(data)</span><br><span> </span><br><span>@@ -125,9 +125,9 @@</span><br><span>         data = self.sock.recv(4096)</span><br><span>         while (len(data)>0):</span><br><span>             (head, data) = IPA().split_combined(data)</span><br><span style="color: hsl(0, 100%, 40%);">-            answer = Ctrl().rem_header(head)</span><br><span style="color: hsl(120, 100%, 40%);">+            answer = Ctrl().rem_header(head).decode()</span><br><span>             if verbose:</span><br><span style="color: hsl(0, 100%, 40%);">-                print "Got message:", answer</span><br><span style="color: hsl(120, 100%, 40%);">+                print("Got message:", answer)</span><br><span>             (mtype, id, msg) = answer.split(None, 2)</span><br><span>             id = int(id)</span><br><span>             rsp = {'mtype': mtype, 'id': id}</span><br><span>@@ -143,7 +143,7 @@</span><br><span>             responses[id] = rsp</span><br><span> </span><br><span>         if verbose:</span><br><span style="color: hsl(0, 100%, 40%);">-            print "Decoded replies: ", responses</span><br><span style="color: hsl(120, 100%, 40%);">+            print("Decoded replies: ", responses)</span><br><span> </span><br><span>         return responses</span><br><span> </span><br><span>@@ -163,80 +163,80 @@</span><br><span> </span><br><span>     def testCtrlErrs(self):</span><br><span>         r = self.do_get('invalid')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['mtype'], 'ERROR')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['error'], 'Command not found')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['mtype'], 'ERROR')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['error'], 'Command not found')</span><br><span> </span><br><span>         r = self.do_set('rf_locked', '999')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['mtype'], 'ERROR')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['error'], 'Value failed verification.')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['mtype'], 'ERROR')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['error'], 'Value failed verification.')</span><br><span> </span><br><span>         r = self.do_get('bts')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['mtype'], 'ERROR')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['error'], 'Error while parsing the index.')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['mtype'], 'ERROR')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['error'], 'Error while parsing the index.')</span><br><span> </span><br><span>         r = self.do_get('bts.999')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['mtype'], 'ERROR')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['error'], 'Error while resolving object')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['mtype'], 'ERROR')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['error'], 'Error while resolving object')</span><br><span> </span><br><span>     def testBtsLac(self):</span><br><span>         r = self.do_get('bts.0.location-area-code')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['mtype'], 'GET_REPLY')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['var'], 'bts.0.location-area-code')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['value'], '1')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['mtype'], 'GET_REPLY')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['var'], 'bts.0.location-area-code')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['value'], '1')</span><br><span> </span><br><span>         r = self.do_set('bts.0.location-area-code', '23')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['mtype'], 'SET_REPLY')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['var'], 'bts.0.location-area-code')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['value'], '23')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['mtype'], 'SET_REPLY')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['var'], 'bts.0.location-area-code')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['value'], '23')</span><br><span> </span><br><span>         r = self.do_get('bts.0.location-area-code')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['mtype'], 'GET_REPLY')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['var'], 'bts.0.location-area-code')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['value'], '23')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['mtype'], 'GET_REPLY')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['var'], 'bts.0.location-area-code')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['value'], '23')</span><br><span> </span><br><span>         r = self.do_set('bts.0.location-area-code', '-1')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['mtype'], 'ERROR')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['error'], 'Input not within the range')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['mtype'], 'ERROR')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['error'], 'Input not within the range')</span><br><span> </span><br><span>     def testBtsCi(self):</span><br><span>         r = self.do_get('bts.0.cell-identity')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['mtype'], 'GET_REPLY')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['var'], 'bts.0.cell-identity')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['value'], '0')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['mtype'], 'GET_REPLY')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['var'], 'bts.0.cell-identity')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['value'], '0')</span><br><span> </span><br><span>         r = self.do_set('bts.0.cell-identity', '23')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['mtype'], 'SET_REPLY')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['var'], 'bts.0.cell-identity')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['value'], '23')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['mtype'], 'SET_REPLY')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['var'], 'bts.0.cell-identity')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['value'], '23')</span><br><span> </span><br><span>         r = self.do_get('bts.0.cell-identity')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['mtype'], 'GET_REPLY')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['var'], 'bts.0.cell-identity')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['value'], '23')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['mtype'], 'GET_REPLY')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['var'], 'bts.0.cell-identity')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['value'], '23')</span><br><span> </span><br><span>         r = self.do_set('bts.0.cell-identity', '-1')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['mtype'], 'ERROR')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['error'], 'Input not within the range')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['mtype'], 'ERROR')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['error'], 'Input not within the range')</span><br><span> </span><br><span>     def testBtsGenerateSystemInformation(self):</span><br><span>         r = self.do_get('bts.0.send-new-system-informations')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['mtype'], 'ERROR')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['error'], 'Write Only attribute')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['mtype'], 'ERROR')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['error'], 'Write Only attribute')</span><br><span> </span><br><span>         # No RSL links so it will fail</span><br><span>         r = self.do_set('bts.0.send-new-system-informations', '1')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['mtype'], 'ERROR')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['error'], 'Failed to generate SI')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['mtype'], 'ERROR')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['error'], 'Failed to generate SI')</span><br><span> </span><br><span>     def testBtsChannelLoad(self):</span><br><span>         r = self.do_set('bts.0.channel-load', '1')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['mtype'], 'ERROR')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['error'], 'Read Only attribute')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['mtype'], 'ERROR')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['error'], 'Read Only attribute')</span><br><span> </span><br><span>         # No RSL link so everything is 0</span><br><span>         r = self.do_get('bts.0.channel-load')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['mtype'], 'GET_REPLY')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['value'],</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['mtype'], 'GET_REPLY')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['value'],</span><br><span>           'CCCH+SDCCH4,0,0 TCH/F,0,0 TCH/H,0,0 SDCCH8,0,0'</span><br><span>             + ' TCH/F_PDCH,0,0 CCCH+SDCCH4+CBCH,0,0'</span><br><span>             + ' SDCCH8+CBCH,0,0 TCH/F_TCH/H_PDCH,0,0')</span><br><span>@@ -244,221 +244,221 @@</span><br><span>     def testBtsOmlConnectionState(self):</span><br><span>         """Check OML state. It will not be connected"""</span><br><span>         r = self.do_set('bts.0.oml-connection-state', '1')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['mtype'], 'ERROR')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['error'], 'Read Only attribute')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['mtype'], 'ERROR')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['error'], 'Read Only attribute')</span><br><span> </span><br><span>         # No RSL link so everything is 0</span><br><span>         r = self.do_get('bts.0.oml-connection-state')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['mtype'], 'GET_REPLY')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['value'], 'disconnected')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['mtype'], 'GET_REPLY')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['value'], 'disconnected')</span><br><span> </span><br><span>     def testTrxPowerRed(self):</span><br><span>         r = self.do_get('bts.0.trx.0.max-power-reduction')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['mtype'], 'GET_REPLY')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['var'], 'bts.0.trx.0.max-power-reduction')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['value'], '20')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['mtype'], 'GET_REPLY')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['var'], 'bts.0.trx.0.max-power-reduction')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['value'], '20')</span><br><span> </span><br><span>         r = self.do_set('bts.0.trx.0.max-power-reduction', '22')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['mtype'], 'SET_REPLY')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['var'], 'bts.0.trx.0.max-power-reduction')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['value'], '22')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['mtype'], 'SET_REPLY')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['var'], 'bts.0.trx.0.max-power-reduction')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['value'], '22')</span><br><span> </span><br><span>         r = self.do_get('bts.0.trx.0.max-power-reduction')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['mtype'], 'GET_REPLY')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['var'], 'bts.0.trx.0.max-power-reduction')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['value'], '22')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['mtype'], 'GET_REPLY')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['var'], 'bts.0.trx.0.max-power-reduction')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['value'], '22')</span><br><span> </span><br><span>         r = self.do_set('bts.0.trx.0.max-power-reduction', '1')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['mtype'], 'ERROR')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['error'], 'Value must be even')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['mtype'], 'ERROR')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['error'], 'Value must be even')</span><br><span> </span><br><span>     def testTrxArfcn(self):</span><br><span>         r = self.do_get('bts.0.trx.0.arfcn')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['mtype'], 'GET_REPLY')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['var'], 'bts.0.trx.0.arfcn')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['value'], '871')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['mtype'], 'GET_REPLY')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['var'], 'bts.0.trx.0.arfcn')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['value'], '871')</span><br><span> </span><br><span>         r = self.do_set('bts.0.trx.0.arfcn', '873')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['mtype'], 'SET_REPLY')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['var'], 'bts.0.trx.0.arfcn')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['value'], '873')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['mtype'], 'SET_REPLY')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['var'], 'bts.0.trx.0.arfcn')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['value'], '873')</span><br><span> </span><br><span>         r = self.do_get('bts.0.trx.0.arfcn')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['mtype'], 'GET_REPLY')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['var'], 'bts.0.trx.0.arfcn')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['value'], '873')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['mtype'], 'GET_REPLY')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['var'], 'bts.0.trx.0.arfcn')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['value'], '873')</span><br><span> </span><br><span>         r = self.do_set('bts.0.trx.0.arfcn', '2000')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['mtype'], 'ERROR')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['error'], 'Input not within the range')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['mtype'], 'ERROR')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['error'], 'Input not within the range')</span><br><span> </span><br><span>     def testRfLock(self):</span><br><span>         r = self.do_get('bts.0.rf_state')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['mtype'], 'GET_REPLY')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['var'], 'bts.0.rf_state')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['value'], 'inoperational,unlocked,on')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['mtype'], 'GET_REPLY')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['var'], 'bts.0.rf_state')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['value'], 'inoperational,unlocked,on')</span><br><span> </span><br><span>         r = self.do_set('rf_locked', '1')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['mtype'], 'SET_REPLY')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['var'], 'rf_locked')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['value'], '1')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['mtype'], 'SET_REPLY')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['var'], 'rf_locked')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['value'], '1')</span><br><span> </span><br><span>         time.sleep(1.5)</span><br><span> </span><br><span>         r = self.do_get('bts.0.rf_state')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['mtype'], 'GET_REPLY')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['var'], 'bts.0.rf_state')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['value'], 'inoperational,locked,off')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['mtype'], 'GET_REPLY')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['var'], 'bts.0.rf_state')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['value'], 'inoperational,locked,off')</span><br><span> </span><br><span>         r = self.do_get('rf_locked')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['mtype'], 'GET_REPLY')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['var'], 'rf_locked')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['value'], 'state=off,policy=off')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['mtype'], 'GET_REPLY')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['var'], 'rf_locked')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['value'], 'state=off,policy=off')</span><br><span> </span><br><span>         r = self.do_set('rf_locked', '0')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['mtype'], 'SET_REPLY')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['var'], 'rf_locked')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['value'], '0')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['mtype'], 'SET_REPLY')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['var'], 'rf_locked')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['value'], '0')</span><br><span> </span><br><span>         time.sleep(1.5)</span><br><span> </span><br><span>         r = self.do_get('bts.0.rf_state')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['mtype'], 'GET_REPLY')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['var'], 'bts.0.rf_state')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['value'], 'inoperational,unlocked,on')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['mtype'], 'GET_REPLY')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['var'], 'bts.0.rf_state')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['value'], 'inoperational,unlocked,on')</span><br><span> </span><br><span>         r = self.do_get('rf_locked')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['mtype'], 'GET_REPLY')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['var'], 'rf_locked')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['value'], 'state=off,policy=on')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['mtype'], 'GET_REPLY')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['var'], 'rf_locked')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['value'], 'state=off,policy=on')</span><br><span> </span><br><span>     def testTimezone(self):</span><br><span>         r = self.do_get('timezone')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['mtype'], 'GET_REPLY')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['var'], 'timezone')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['value'], 'off')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['mtype'], 'GET_REPLY')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['var'], 'timezone')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['value'], 'off')</span><br><span> </span><br><span>         r = self.do_set('timezone', '-2,15,2')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['mtype'], 'SET_REPLY')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['var'], 'timezone')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['value'], '-2,15,2')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['mtype'], 'SET_REPLY')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['var'], 'timezone')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['value'], '-2,15,2')</span><br><span> </span><br><span>         r = self.do_get('timezone')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['mtype'], 'GET_REPLY')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['var'], 'timezone')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['value'], '-2,15,2')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['mtype'], 'GET_REPLY')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['var'], 'timezone')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['value'], '-2,15,2')</span><br><span> </span><br><span>         # Test invalid input</span><br><span>         r = self.do_set('timezone', '-2,15,2,5,6,7')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['mtype'], 'SET_REPLY')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['var'], 'timezone')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['value'], '-2,15,2')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['mtype'], 'SET_REPLY')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['var'], 'timezone')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['value'], '-2,15,2')</span><br><span> </span><br><span>         r = self.do_set('timezone', '-2,15')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['mtype'], 'ERROR')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['mtype'], 'ERROR')</span><br><span>         r = self.do_set('timezone', '-2')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['mtype'], 'ERROR')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['mtype'], 'ERROR')</span><br><span>         r = self.do_set('timezone', '1')</span><br><span> </span><br><span>         r = self.do_set('timezone', 'off')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['mtype'], 'SET_REPLY')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['var'], 'timezone')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['value'], 'off')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['mtype'], 'SET_REPLY')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['var'], 'timezone')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['value'], 'off')</span><br><span> </span><br><span>         r = self.do_get('timezone')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['mtype'], 'GET_REPLY')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['var'], 'timezone')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['value'], 'off')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['mtype'], 'GET_REPLY')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['var'], 'timezone')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['value'], 'off')</span><br><span> </span><br><span>     def testMcc(self):</span><br><span>         r = self.do_set('mcc', '23')</span><br><span>         r = self.do_get('mcc')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['mtype'], 'GET_REPLY')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['var'], 'mcc')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['value'], '023')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['mtype'], 'GET_REPLY')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['var'], 'mcc')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['value'], '023')</span><br><span> </span><br><span>         r = self.do_set('mcc', '023')</span><br><span>         r = self.do_get('mcc')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['mtype'], 'GET_REPLY')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['var'], 'mcc')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['value'], '023')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['mtype'], 'GET_REPLY')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['var'], 'mcc')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['value'], '023')</span><br><span> </span><br><span>     def testMnc(self):</span><br><span>         r = self.do_set('mnc', '9')</span><br><span>         r = self.do_get('mnc')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['mtype'], 'GET_REPLY')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['var'], 'mnc')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['value'], '09')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['mtype'], 'GET_REPLY')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['var'], 'mnc')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['value'], '09')</span><br><span> </span><br><span>         r = self.do_set('mnc', '09')</span><br><span>         r = self.do_get('mnc')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['mtype'], 'GET_REPLY')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['var'], 'mnc')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['value'], '09')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['mtype'], 'GET_REPLY')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['var'], 'mnc')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['value'], '09')</span><br><span> </span><br><span>         r = self.do_set('mnc', '009')</span><br><span>         r = self.do_get('mnc')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['mtype'], 'GET_REPLY')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['var'], 'mnc')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['value'], '009')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['mtype'], 'GET_REPLY')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['var'], 'mnc')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['value'], '009')</span><br><span> </span><br><span>     def testMccMncApply(self):</span><br><span>         # Test some invalid input</span><br><span>         r = self.do_set('mcc-mnc-apply', 'WRONG')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['mtype'], 'ERROR')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['mtype'], 'ERROR')</span><br><span> </span><br><span>         r = self.do_set('mcc-mnc-apply', '1,')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['mtype'], 'ERROR')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['mtype'], 'ERROR')</span><br><span> </span><br><span>         r = self.do_set('mcc-mnc-apply', '200,3')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['mtype'], 'SET_REPLY')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['var'], 'mcc-mnc-apply')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['value'], 'Tried to drop the BTS')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['mtype'], 'SET_REPLY')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['var'], 'mcc-mnc-apply')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['value'], 'Tried to drop the BTS')</span><br><span> </span><br><span>         # Set it again</span><br><span>         r = self.do_set('mcc-mnc-apply', '200,3')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['mtype'], 'SET_REPLY')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['var'], 'mcc-mnc-apply')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['value'], 'Nothing changed')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['mtype'], 'SET_REPLY')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['var'], 'mcc-mnc-apply')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['value'], 'Nothing changed')</span><br><span> </span><br><span>         # Change it</span><br><span>         r = self.do_set('mcc-mnc-apply', '200,4')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['mtype'], 'SET_REPLY')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['var'], 'mcc-mnc-apply')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['value'], 'Tried to drop the BTS')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['mtype'], 'SET_REPLY')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['var'], 'mcc-mnc-apply')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['value'], 'Tried to drop the BTS')</span><br><span> </span><br><span>         # Change it</span><br><span>         r = self.do_set('mcc-mnc-apply', '201,4')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['mtype'], 'SET_REPLY')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['var'], 'mcc-mnc-apply')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['value'], 'Tried to drop the BTS')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['mtype'], 'SET_REPLY')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['var'], 'mcc-mnc-apply')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['value'], 'Tried to drop the BTS')</span><br><span> </span><br><span>         # Verify</span><br><span>         r = self.do_get('mnc')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['mtype'], 'GET_REPLY')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['var'], 'mnc')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['value'], '04')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['mtype'], 'GET_REPLY')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['var'], 'mnc')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['value'], '04')</span><br><span> </span><br><span>         r = self.do_get('mcc')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['mtype'], 'GET_REPLY')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['var'], 'mcc')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['value'], '201')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['mtype'], 'GET_REPLY')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['var'], 'mcc')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['value'], '201')</span><br><span> </span><br><span>         # Change it</span><br><span>         r = self.do_set('mcc-mnc-apply', '202,03')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['mtype'], 'SET_REPLY')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['var'], 'mcc-mnc-apply')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['value'], 'Tried to drop the BTS')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['mtype'], 'SET_REPLY')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['var'], 'mcc-mnc-apply')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['value'], 'Tried to drop the BTS')</span><br><span> </span><br><span>         r = self.do_get('mnc')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['mtype'], 'GET_REPLY')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['var'], 'mnc')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['value'], '03')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['mtype'], 'GET_REPLY')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['var'], 'mnc')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['value'], '03')</span><br><span> </span><br><span>         r = self.do_get('mcc')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['mtype'], 'GET_REPLY')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['var'], 'mcc')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['value'], '202')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['mtype'], 'GET_REPLY')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['var'], 'mcc')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['value'], '202')</span><br><span> </span><br><span> class TestCtrlNITB(TestCtrlBase):</span><br><span> </span><br><span>@@ -475,103 +475,103 @@</span><br><span> </span><br><span>     def testNumberOfBTS(self):</span><br><span>         r = self.do_get('number-of-bts')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['mtype'], 'GET_REPLY')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['var'], 'number-of-bts')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['value'], '1')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['mtype'], 'GET_REPLY')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['var'], 'number-of-bts')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['value'], '1')</span><br><span> </span><br><span>     def testSubscriberAddWithKi(self):</span><br><span>         """Test that we can set the algorithm to none, xor, comp128v1"""</span><br><span> </span><br><span>         r = self.do_set('subscriber-modify-v1', '2620345,445566')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['mtype'], 'SET_REPLY')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['var'], 'subscriber-modify-v1')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['value'], 'OK')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['mtype'], 'SET_REPLY')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['var'], 'subscriber-modify-v1')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['value'], 'OK')</span><br><span> </span><br><span>         r = self.do_set('subscriber-modify-v1', '2620345,445566,none')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['mtype'], 'SET_REPLY')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['var'], 'subscriber-modify-v1')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['value'], 'OK')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['mtype'], 'SET_REPLY')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['var'], 'subscriber-modify-v1')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['value'], 'OK')</span><br><span> </span><br><span>         r = self.do_set('subscriber-modify-v1', '2620345,445566,xor')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['mtype'], 'ERROR')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['error'], 'Value failed verification.')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['mtype'], 'ERROR')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['error'], 'Value failed verification.')</span><br><span> </span><br><span>         r = self.do_set('subscriber-modify-v1', '2620345,445566,comp128v1,00112233445566778899AABBCCDDEEFF')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['mtype'], 'SET_REPLY')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['var'], 'subscriber-modify-v1')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['value'], 'OK')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['mtype'], 'SET_REPLY')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['var'], 'subscriber-modify-v1')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['value'], 'OK')</span><br><span> </span><br><span>         r = self.do_set('subscriber-modify-v1', '2620345,445566,comp128v2,00112233445566778899AABBCCDDEEFF')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['mtype'], 'SET_REPLY')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['var'], 'subscriber-modify-v1')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['value'], 'OK')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['mtype'], 'SET_REPLY')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['var'], 'subscriber-modify-v1')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['value'], 'OK')</span><br><span> </span><br><span>         r = self.do_set('subscriber-modify-v1', '2620345,445566,comp128v3,00112233445566778899AABBCCDDEEFF')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['mtype'], 'SET_REPLY')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['var'], 'subscriber-modify-v1')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['value'], 'OK')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['mtype'], 'SET_REPLY')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['var'], 'subscriber-modify-v1')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['value'], 'OK')</span><br><span> </span><br><span>         r = self.do_set('subscriber-modify-v1', '2620345,445566,none')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['mtype'], 'SET_REPLY')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['var'], 'subscriber-modify-v1')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['value'], 'OK')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['mtype'], 'SET_REPLY')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['var'], 'subscriber-modify-v1')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['value'], 'OK')</span><br><span> </span><br><span>     def testSubscriberAddRemove(self):</span><br><span>         r = self.do_set('subscriber-modify-v1', '2620345,445566')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['mtype'], 'SET_REPLY')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['var'], 'subscriber-modify-v1')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['value'], 'OK')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['mtype'], 'SET_REPLY')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['var'], 'subscriber-modify-v1')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['value'], 'OK')</span><br><span> </span><br><span>         r = self.do_set('subscriber-modify-v1', '2620345,445567')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['mtype'], 'SET_REPLY')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['var'], 'subscriber-modify-v1')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['value'], 'OK')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['mtype'], 'SET_REPLY')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['var'], 'subscriber-modify-v1')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['value'], 'OK')</span><br><span> </span><br><span>         # TODO. verify that the entry has been created and modified? Invoke</span><br><span>         # the sqlite3 CLI or do it through the DB libraries?</span><br><span> </span><br><span>         r = self.do_set('subscriber-delete-v1', '2620345')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['mtype'], 'SET_REPLY')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['value'], 'Removed')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['mtype'], 'SET_REPLY')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['value'], 'Removed')</span><br><span> </span><br><span>         r = self.do_set('subscriber-delete-v1', '2620345')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['mtype'], 'ERROR')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['error'], 'Failed to find subscriber')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['mtype'], 'ERROR')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['error'], 'Failed to find subscriber')</span><br><span> </span><br><span>     def testSubscriberList(self):</span><br><span>         # TODO. Add command to mark a subscriber as active</span><br><span>         r = self.do_get('subscriber-list-active-v1')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['mtype'], 'GET_REPLY')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['var'], 'subscriber-list-active-v1')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['value'], None)</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['mtype'], 'GET_REPLY')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['var'], 'subscriber-list-active-v1')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['value'], None)</span><br><span> </span><br><span>     def testApplyConfiguration(self):</span><br><span>         r = self.do_get('bts.0.apply-configuration')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['mtype'], 'ERROR')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['error'], 'Write Only attribute')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['mtype'], 'ERROR')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['error'], 'Write Only attribute')</span><br><span> </span><br><span>         r = self.do_set('bts.0.apply-configuration', '1')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['mtype'], 'SET_REPLY')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['value'], 'Tried to drop the BTS')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['mtype'], 'SET_REPLY')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['value'], 'Tried to drop the BTS')</span><br><span> </span><br><span>     def testGprsMode(self):</span><br><span>         r = self.do_get('bts.0.gprs-mode')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['mtype'], 'GET_REPLY')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['var'], 'bts.0.gprs-mode')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['value'], 'none')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['mtype'], 'GET_REPLY')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['var'], 'bts.0.gprs-mode')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['value'], 'none')</span><br><span> </span><br><span>         r = self.do_set('bts.0.gprs-mode', 'bla')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['mtype'], 'ERROR')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['error'], 'Mode is not known')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['mtype'], 'ERROR')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['error'], 'Mode is not known')</span><br><span> </span><br><span>         r = self.do_set('bts.0.gprs-mode', 'egprs')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['mtype'], 'SET_REPLY')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['value'], 'egprs')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['mtype'], 'SET_REPLY')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['value'], 'egprs')</span><br><span> </span><br><span>         r = self.do_get('bts.0.gprs-mode')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['mtype'], 'GET_REPLY')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['var'], 'bts.0.gprs-mode')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['value'], 'egprs')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['mtype'], 'GET_REPLY')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['var'], 'bts.0.gprs-mode')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['value'], 'egprs')</span><br><span> </span><br><span> class TestCtrlNAT(TestCtrlBase):</span><br><span> </span><br><span>@@ -584,38 +584,38 @@</span><br><span> </span><br><span>     def testAccessList(self):</span><br><span>         r = self.do_get('net.0.bsc_cfg.0.access-list-name')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['mtype'], 'GET_REPLY')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['var'], 'net')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['value'], None)</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['mtype'], 'GET_REPLY')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['var'], 'net')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['value'], None)</span><br><span> </span><br><span>         r = self.do_set('net.0.bsc_cfg.0.access-list-name', 'bla')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['mtype'], 'SET_REPLY')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['var'], 'net')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['value'], 'bla')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['mtype'], 'SET_REPLY')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['var'], 'net')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['value'], 'bla')</span><br><span> </span><br><span>         r = self.do_get('net.0.bsc_cfg.0.access-list-name')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['mtype'], 'GET_REPLY')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['var'], 'net')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['value'], 'bla')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['mtype'], 'GET_REPLY')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['var'], 'net')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['value'], 'bla')</span><br><span> </span><br><span>         r = self.do_set('net.0.bsc_cfg.0.no-access-list-name', '1')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['mtype'], 'SET_REPLY')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['var'], 'net')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['value'], None)</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['mtype'], 'SET_REPLY')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['var'], 'net')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['value'], None)</span><br><span> </span><br><span>         r = self.do_get('net.0.bsc_cfg.0.access-list-name')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['mtype'], 'GET_REPLY')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['var'], 'net')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['value'], None)</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['mtype'], 'GET_REPLY')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['var'], 'net')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['value'], None)</span><br><span> </span><br><span>     def testAccessListManagement(self):</span><br><span>         r = self.do_set("net.0.add.allow.access-list.404", "abc")</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['mtype'], 'ERROR')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['mtype'], 'ERROR')</span><br><span> </span><br><span>         r = self.do_set("net.0.add.allow.access-list.bla", "^234$")</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['mtype'], 'SET_REPLY')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['var'], 'net.0.add.allow.access-list.bla')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(r['value'], 'IMSI allow added to access list')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['mtype'], 'SET_REPLY')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['var'], 'net.0.add.allow.access-list.bla')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(r['value'], 'IMSI allow added to access list')</span><br><span> </span><br><span>         # TODO.. find a way to actually see if this rule has been</span><br><span>         # added. e.g. by implementing a get for the list.</span><br><span>@@ -664,9 +664,9 @@</span><br><span>     if args.p:</span><br><span>         confpath = args.p</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    print "confpath %s, workdir %s" % (confpath, workdir)</span><br><span style="color: hsl(120, 100%, 40%);">+    print("confpath %s, workdir %s" % (confpath, workdir))</span><br><span>     os.chdir(workdir)</span><br><span style="color: hsl(0, 100%, 40%);">-    print "Running tests for specific control commands"</span><br><span style="color: hsl(120, 100%, 40%);">+    print("Running tests for specific control commands")</span><br><span>     suite = unittest.TestSuite()</span><br><span>     add_bsc_test(suite, workdir)</span><br><span>     add_nitb_test(suite, workdir)</span><br><span>diff --git a/openbsc/tests/smpp_test_runner.py b/openbsc/tests/smpp_test_runner.py</span><br><span>index eccfa6b..a34d7ba 100755</span><br><span>--- a/openbsc/tests/smpp_test_runner.py</span><br><span>+++ b/openbsc/tests/smpp_test_runner.py</span><br><span>@@ -1,4 +1,4 @@</span><br><span style="color: hsl(0, 100%, 40%);">-#!/usr/bin/env python2</span><br><span style="color: hsl(120, 100%, 40%);">+#!/usr/bin/env python3</span><br><span> </span><br><span> # (C) 2014 by Holger Hans Peter Freyther</span><br><span> # based on vty_test_runner.py:</span><br><span>@@ -46,8 +46,8 @@</span><br><span>         try:</span><br><span>             self.proc = osmoutil.popen_devnull(osmo_vty_cmd)</span><br><span>         except OSError:</span><br><span style="color: hsl(0, 100%, 40%);">-            print >> sys.stderr, "Current directory: %s" % os.getcwd()</span><br><span style="color: hsl(0, 100%, 40%);">-            print >> sys.stderr, "Consider setting -b"</span><br><span style="color: hsl(120, 100%, 40%);">+            print("Current directory: %s" % os.getcwd(), file=sys.stderr)</span><br><span style="color: hsl(120, 100%, 40%);">+            print("Consider setting -b", file=sys.stderr)</span><br><span> </span><br><span>         appstring = self.vty_app()[2]</span><br><span>         appport = self.vty_app()[0]</span><br><span>@@ -73,14 +73,14 @@</span><br><span>         # Enable the configuration</span><br><span>         self.vty.enable()</span><br><span>         self.assertTrue(self.vty.verify("configure terminal", ['']))</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(self.vty.node(), 'config')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(self.vty.node(), 'config')</span><br><span> </span><br><span>         self.assertTrue(self.vty.verify('smpp', ['']))</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(self.vty.node(), 'config-smpp')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(self.vty.node(), 'config-smpp')</span><br><span>         self.assertTrue(self.vty.verify('system-id test', ['']))</span><br><span>         self.assertTrue(self.vty.verify('local-tcp-port 2775', ['']))</span><br><span>         self.assertTrue(self.vty.verify('esme test', ['']))</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(self.vty.node(), 'config-smpp-esme')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(self.vty.node(), 'config-smpp-esme')</span><br><span>         self.assertTrue(self.vty.verify('default-route', ['']))</span><br><span>         self.assertTrue(self.vty.verify('end', ['']))</span><br><span> </span><br><span>@@ -88,7 +88,7 @@</span><br><span>         sck = socket.socket(socket.AF_INET, socket.SOCK_STREAM)</span><br><span>         sck.setblocking(1)</span><br><span>         sck.connect(('0.0.0.0', 2775))</span><br><span style="color: hsl(0, 100%, 40%);">-        sck.sendall('\x00\x00\x00\x02\x00')</span><br><span style="color: hsl(120, 100%, 40%);">+        sck.sendall(b'\x00\x00\x00\x02\x00')</span><br><span>         sck.close()</span><br><span> </span><br><span>         # Check if the VTY is still there</span><br><span>@@ -98,7 +98,7 @@</span><br><span>         sck = socket.socket(socket.AF_INET, socket.SOCK_STREAM)</span><br><span>         sck.setblocking(1)</span><br><span>         sck.connect(('0.0.0.0', 2775))</span><br><span style="color: hsl(0, 100%, 40%);">-        sck.sendall('\x00\x01\x00\x01\x01')</span><br><span style="color: hsl(120, 100%, 40%);">+        sck.sendall(b'\x00\x01\x00\x01\x01')</span><br><span>         sck.close()</span><br><span> </span><br><span>         self.vty.verify('enable',[''])</span><br><span>@@ -128,9 +128,9 @@</span><br><span>     if args.p:</span><br><span>         confpath = args.p</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    print "confpath %s, workdir %s" % (confpath, workdir)</span><br><span style="color: hsl(120, 100%, 40%);">+    print("confpath %s, workdir %s" % (confpath, workdir))</span><br><span>     os.chdir(workdir)</span><br><span style="color: hsl(0, 100%, 40%);">-    print "Running tests for specific SMPP"</span><br><span style="color: hsl(120, 100%, 40%);">+    print("Running tests for specific SMPP")</span><br><span>     suite = unittest.TestSuite()</span><br><span>     suite.addTest(unittest.TestLoader().loadTestsFromTestCase(TestSMPPNITB))</span><br><span>     res = unittest.TextTestRunner(verbosity=verbose_level).run(suite)</span><br><span>diff --git a/openbsc/tests/vty_test_runner.py b/openbsc/tests/vty_test_runner.py</span><br><span>index 67adb71..8044e61 100755</span><br><span>--- a/openbsc/tests/vty_test_runner.py</span><br><span>+++ b/openbsc/tests/vty_test_runner.py</span><br><span>@@ -1,4 +1,4 @@</span><br><span style="color: hsl(0, 100%, 40%);">-#!/usr/bin/env python2</span><br><span style="color: hsl(120, 100%, 40%);">+#!/usr/bin/env python3</span><br><span> </span><br><span> # (C) 2013 by Katerina Barone-Adesi <kat.obsc@gmail.com></span><br><span> # (C) 2013 by Holger Hans Peter Freyther</span><br><span>@@ -51,8 +51,8 @@</span><br><span>         try:</span><br><span>             self.proc = osmoutil.popen_devnull(osmo_vty_cmd)</span><br><span>         except OSError:</span><br><span style="color: hsl(0, 100%, 40%);">-            print >> sys.stderr, "Current directory: %s" % os.getcwd()</span><br><span style="color: hsl(0, 100%, 40%);">-            print >> sys.stderr, "Consider setting -b"</span><br><span style="color: hsl(120, 100%, 40%);">+            print("Current directory: %s" % os.getcwd(), file=sys.stderr)</span><br><span style="color: hsl(120, 100%, 40%);">+            print("Consider setting -b", file=sys.stderr)</span><br><span> </span><br><span>         appstring = self.vty_app()[2]</span><br><span>         appport = self.vty_app()[0]</span><br><span>@@ -75,28 +75,28 @@</span><br><span>     def testForcePtime(self):</span><br><span>         self.vty.enable()</span><br><span>         res = self.vty.command("show running-config")</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assert_(res.find('  rtp force-ptime 20\r') > 0)</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(res.find('  no rtp force-ptime\r'), -1)</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertTrue(res.find('  rtp force-ptime 20\r') > 0)</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(res.find('  no rtp force-ptime\r'), -1)</span><br><span> </span><br><span>         self.vty.command("configure terminal")</span><br><span>         self.vty.command("mgcp")</span><br><span>         self.vty.command("no rtp force-ptime")</span><br><span>         res = self.vty.command("show running-config")</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(res.find('  rtp force-ptime 20\r'), -1)</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(res.find('  no rtp force-ptime\r'), -1)</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(res.find('  rtp force-ptime 20\r'), -1)</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(res.find('  no rtp force-ptime\r'), -1)</span><br><span> </span><br><span>     def testOmitAudio(self):</span><br><span>         self.vty.enable()</span><br><span>         res = self.vty.command("show running-config")</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assert_(res.find('  sdp audio-payload send-name\r') > 0)</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(res.find('  no sdp audio-payload send-name\r'), -1)</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertTrue(res.find('  sdp audio-payload send-name\r') > 0)</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(res.find('  no sdp audio-payload send-name\r'), -1)</span><br><span> </span><br><span>         self.vty.command("configure terminal")</span><br><span>         self.vty.command("mgcp")</span><br><span>         self.vty.command("no sdp audio-payload send-name")</span><br><span>         res = self.vty.command("show running-config")</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(res.find('  rtp sdp audio-payload send-name\r'), -1)</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assert_(res.find('  no sdp audio-payload send-name\r') > 0)</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(res.find('  rtp sdp audio-payload send-name\r'), -1)</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertTrue(res.find('  no sdp audio-payload send-name\r') > 0)</span><br><span> </span><br><span>         # TODO: test it for the trunk!</span><br><span> </span><br><span>@@ -109,18 +109,18 @@</span><br><span>         # enable.. disable bts-bind-ip</span><br><span>         self.vty.command("rtp bts-bind-ip 254.253.252.250")</span><br><span>         res = self.vty.command("show running-config")</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assert_(res.find('rtp bts-bind-ip 254.253.252.250') > 0)</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertTrue(res.find('rtp bts-bind-ip 254.253.252.250') > 0)</span><br><span>         self.vty.command("no rtp bts-bind-ip")</span><br><span>         res = self.vty.command("show running-config")</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(res.find('  rtp bts-bind-ip'), -1)</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(res.find('  rtp bts-bind-ip'), -1)</span><br><span> </span><br><span>         # enable.. disable net-bind-ip</span><br><span>         self.vty.command("rtp net-bind-ip 254.253.252.250")</span><br><span>         res = self.vty.command("show running-config")</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assert_(res.find('rtp net-bind-ip 254.253.252.250') > 0)</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertTrue(res.find('rtp net-bind-ip 254.253.252.250') > 0)</span><br><span>         self.vty.command("no rtp net-bind-ip")</span><br><span>         res = self.vty.command("show running-config")</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(res.find('  rtp net-bind-ip'), -1)</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(res.find('  rtp net-bind-ip'), -1)</span><br><span> </span><br><span> </span><br><span> class TestVTYGenericBSC(TestVTYBase):</span><br><span>@@ -128,42 +128,42 @@</span><br><span>     def checkForEndAndExit(self):</span><br><span>         res = self.vty.command("list")</span><br><span>         #print ('looking for "exit"\n')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assert_(res.find('  exit\r') > 0)</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertTrue(res.find('  exit\r') > 0)</span><br><span>         #print 'found "exit"\nlooking for "end"\n'</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assert_(res.find('  end\r') > 0)</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertTrue(res.find('  end\r') > 0)</span><br><span>         #print 'found "end"\n'</span><br><span> </span><br><span>     def _testConfigNetworkTree(self):</span><br><span>         self.vty.enable()</span><br><span>         self.assertTrue(self.vty.verify("configure terminal",['']))</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(self.vty.node(), 'config')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(self.vty.node(), 'config')</span><br><span>         self.checkForEndAndExit()</span><br><span>         self.assertTrue(self.vty.verify("network",['']))</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(self.vty.node(), 'config-net')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(self.vty.node(), 'config-net')</span><br><span>         self.checkForEndAndExit()</span><br><span>         self.assertTrue(self.vty.verify("bts 0",['']))</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(self.vty.node(), 'config-net-bts')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(self.vty.node(), 'config-net-bts')</span><br><span>         self.checkForEndAndExit()</span><br><span>         self.assertTrue(self.vty.verify("trx 0",['']))</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(self.vty.node(), 'config-net-bts-trx')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(self.vty.node(), 'config-net-bts-trx')</span><br><span>         self.checkForEndAndExit()</span><br><span>         self.vty.command("write terminal")</span><br><span>         self.assertTrue(self.vty.verify("exit",['']))</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(self.vty.node(), 'config-net-bts')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(self.vty.node(), 'config-net-bts')</span><br><span>         self.assertTrue(self.vty.verify("exit",['']))</span><br><span>         self.assertTrue(self.vty.verify("bts 1",['']))</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(self.vty.node(), 'config-net-bts')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(self.vty.node(), 'config-net-bts')</span><br><span>         self.checkForEndAndExit()</span><br><span>         self.assertTrue(self.vty.verify("trx 1",['']))</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(self.vty.node(), 'config-net-bts-trx')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(self.vty.node(), 'config-net-bts-trx')</span><br><span>         self.checkForEndAndExit()</span><br><span>         self.vty.command("write terminal")</span><br><span>         self.assertTrue(self.vty.verify("exit",['']))</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(self.vty.node(), 'config-net-bts')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(self.vty.node(), 'config-net-bts')</span><br><span>         self.assertTrue(self.vty.verify("exit",['']))</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(self.vty.node(), 'config-net')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(self.vty.node(), 'config-net')</span><br><span>         self.assertTrue(self.vty.verify("exit",['']))</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(self.vty.node(), 'config')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(self.vty.node(), 'config')</span><br><span>         self.assertTrue(self.vty.verify("exit",['']))</span><br><span>         self.assertTrue(self.vty.node() is None)</span><br><span> </span><br><span>@@ -196,35 +196,35 @@</span><br><span> </span><br><span>         # check the default</span><br><span>         res = self.vty.command("write terminal")</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assert_(res.find(' no smpp-first') > 0)</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertTrue(res.find(' no smpp-first') > 0)</span><br><span> </span><br><span>         self.vty.verify("smpp-first", [''])</span><br><span>         res = self.vty.command("write terminal")</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assert_(res.find(' smpp-first') > 0)</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(res.find('no smpp-first'), -1)</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertTrue(res.find(' smpp-first') > 0)</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(res.find('no smpp-first'), -1)</span><br><span> </span><br><span>         self.vty.verify("no smpp-first", [''])</span><br><span>         res = self.vty.command("write terminal")</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assert_(res.find('no smpp-first') > 0)</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertTrue(res.find('no smpp-first') > 0)</span><br><span> </span><br><span>     def testVtyTree(self):</span><br><span>         self.vty.enable()</span><br><span>         self.assertTrue(self.vty.verify("configure terminal", ['']))</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(self.vty.node(), 'config')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(self.vty.node(), 'config')</span><br><span>         self.checkForEndAndExit()</span><br><span>         self.assertTrue(self.vty.verify('mncc-int', ['']))</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(self.vty.node(), 'config-mncc-int')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(self.vty.node(), 'config-mncc-int')</span><br><span>         self.checkForEndAndExit()</span><br><span>         self.assertTrue(self.vty.verify('exit', ['']))</span><br><span> </span><br><span>         if self.checkForSmpp():</span><br><span style="color: hsl(0, 100%, 40%);">-            self.assertEquals(self.vty.node(), 'config')</span><br><span style="color: hsl(120, 100%, 40%);">+            self.assertEqual(self.vty.node(), 'config')</span><br><span>             self.assertTrue(self.vty.verify('smpp', ['']))</span><br><span style="color: hsl(0, 100%, 40%);">-            self.assertEquals(self.vty.node(), 'config-smpp')</span><br><span style="color: hsl(120, 100%, 40%);">+            self.assertEqual(self.vty.node(), 'config-smpp')</span><br><span>             self.checkForEndAndExit()</span><br><span>             self.assertTrue(self.vty.verify("exit", ['']))</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(self.vty.node(), 'config')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(self.vty.node(), 'config')</span><br><span>         self.assertTrue(self.vty.verify("exit", ['']))</span><br><span>         self.assertTrue(self.vty.node() is None)</span><br><span> </span><br><span>@@ -234,10 +234,10 @@</span><br><span> </span><br><span>         if self.checkForSmpp():</span><br><span>             self.vty.command('smpp')</span><br><span style="color: hsl(0, 100%, 40%);">-            self.assertEquals(self.vty.node(), 'config-smpp')</span><br><span style="color: hsl(120, 100%, 40%);">+            self.assertEqual(self.vty.node(), 'config-smpp')</span><br><span>             self.vty.command('mncc-int')</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(self.vty.node(), 'config-mncc-int')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(self.vty.node(), 'config-mncc-int')</span><br><span> </span><br><span>     def testVtyAuthorization(self):</span><br><span>         self.vty.enable()</span><br><span>@@ -267,7 +267,7 @@</span><br><span>         self.vty.command("si2quater neighbor-list del earfcn 1911")</span><br><span>         self.vty.command("si2quater neighbor-list del earfcn 1924")</span><br><span>         self.vty.command("si2quater neighbor-list del earfcn 2111")</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(before, self.vty.command("show running-config"))</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(before, self.vty.command("show running-config"))</span><br><span>         self.vty.command("si2quater neighbor-list add uarfcn 1976 13 1")</span><br><span>         self.vty.command("si2quater neighbor-list add uarfcn 1976 38 1")</span><br><span>         self.vty.command("si2quater neighbor-list add uarfcn 1976 44 1")</span><br><span>@@ -290,7 +290,7 @@</span><br><span>         self.vty.command("si2quater neighbor-list del uarfcn 1976 224")</span><br><span>         self.vty.command("si2quater neighbor-list del uarfcn 1976 225")</span><br><span>         self.vty.command("si2quater neighbor-list del uarfcn 1976 226")</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(before, self.vty.command("show running-config"))</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(before, self.vty.command("show running-config"))</span><br><span> </span><br><span>     def testEnableDisablePeriodicLU(self):</span><br><span>         self.vty.enable()</span><br><span>@@ -306,14 +306,14 @@</span><br><span>         # Enable periodic lu..</span><br><span>         self.vty.verify("periodic location update 60", [''])</span><br><span>         res = self.vty.command("write terminal")</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assert_(res.find('periodic location update 60') > 0)</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(res.find('no periodic location update'), -1)</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertTrue(res.find('periodic location update 60') > 0)</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(res.find('no periodic location update'), -1)</span><br><span> </span><br><span>         # Now disable it..</span><br><span>         self.vty.verify("no periodic location update", [''])</span><br><span>         res = self.vty.command("write terminal")</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(res.find('periodic location update 60'), -1)</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assert_(res.find('no periodic location update') > 0)</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(res.find('periodic location update 60'), -1)</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertTrue(res.find('no periodic location update') > 0)</span><br><span> </span><br><span>     def testEnableDisableSiHacks(self):</span><br><span>         self.vty.enable()</span><br><span>@@ -324,14 +324,14 @@</span><br><span>         # Enable periodic lu..</span><br><span>         self.vty.verify("force-combined-si", [''])</span><br><span>         res = self.vty.command("write terminal")</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assert_(res.find('  force-combined-si') > 0)</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(res.find('no force-combined-si'), -1)</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertTrue(res.find('  force-combined-si') > 0)</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(res.find('no force-combined-si'), -1)</span><br><span> </span><br><span>         # Now disable it..</span><br><span>         self.vty.verify("no force-combined-si", [''])</span><br><span>         res = self.vty.command("write terminal")</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(res.find('  force-combined-si'), -1)</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assert_(res.find('no force-combined-si') > 0)</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(res.find('  force-combined-si'), -1)</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertTrue(res.find('no force-combined-si') > 0)</span><br><span> </span><br><span>     def testRachAccessControlClass(self):</span><br><span>         self.vty.enable()</span><br><span>@@ -355,7 +355,7 @@</span><br><span>         res = self.vty.command("write terminal")</span><br><span>         for classNum in range(16):</span><br><span>             if classNum != 10:</span><br><span style="color: hsl(0, 100%, 40%);">-                self.assert_(res.find("rach access-control-class " + str(classNum) + " barred") > 0)</span><br><span style="color: hsl(120, 100%, 40%);">+                self.assertTrue(res.find("rach access-control-class " + str(classNum) + " barred") > 0)</span><br><span> </span><br><span>         # Allowed rach access control classes</span><br><span>         for classNum in range(16):</span><br><span>@@ -366,7 +366,7 @@</span><br><span>         res = self.vty.command("write terminal")</span><br><span>         for classNum in range(16):</span><br><span>             if classNum != 10:</span><br><span style="color: hsl(0, 100%, 40%);">-                self.assertEquals(res.find("rach access-control-class " + str(classNum) + " barred"), -1)</span><br><span style="color: hsl(120, 100%, 40%);">+                self.assertEqual(res.find("rach access-control-class " + str(classNum) + " barred"), -1)</span><br><span> </span><br><span>     def testSubscriberCreateDeleteTwice(self):</span><br><span>         """</span><br><span>@@ -385,23 +385,23 @@</span><br><span> </span><br><span>         # Lets create one</span><br><span>         res = self.vty.command('subscriber create imsi '+imsi)</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assert_(res.find("    IMSI: "+imsi) > 0)</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertTrue(res.find("    IMSI: "+imsi) > 0)</span><br><span>         # And now create one again.</span><br><span>         res2 = self.vty.command('subscriber create imsi '+imsi)</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assert_(res2.find("    IMSI: "+imsi) > 0)</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertTrue(res2.find("    IMSI: "+imsi) > 0)</span><br><span>         self.assertEqual(res, res2)</span><br><span> </span><br><span>         # Verify it has been created</span><br><span>         res = self.vty.command('show subscriber imsi '+imsi)</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assert_(res.find("    IMSI: "+imsi) > 0)</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertTrue(res.find("    IMSI: "+imsi) > 0)</span><br><span> </span><br><span>         # Delete it</span><br><span>         res = self.vty.command('subscriber imsi ' + imsi + ' delete')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assert_("" == res)</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertTrue("" == res)</span><br><span> </span><br><span>         # Now it should not be there anymore</span><br><span>         res = self.vty.command('show subscriber imsi '+imsi)</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assert_(('% No subscriber found for imsi ' + imsi) == res)</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertTrue(('% No subscriber found for imsi ' + imsi) == res)</span><br><span> </span><br><span> </span><br><span>     def testSubscriberCreateDelete(self):</span><br><span>@@ -417,12 +417,12 @@</span><br><span> </span><br><span>         # Lets create one</span><br><span>         res = self.vty.command('subscriber create imsi '+imsi)</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assert_(res.find("    IMSI: "+imsi) > 0)</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assert_(res.find("Extension") > 0)</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertTrue(res.find("    IMSI: "+imsi) > 0)</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertTrue(res.find("Extension") > 0)</span><br><span> </span><br><span>         # Now we have it</span><br><span>         res = self.vty.command('show subscriber imsi '+imsi)</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assert_(res.find("    IMSI: "+imsi) > 0)</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertTrue(res.find("    IMSI: "+imsi) > 0)</span><br><span> </span><br><span>         # With narrow random interval</span><br><span>         self.vty.command("configure terminal")</span><br><span>@@ -431,16 +431,16 @@</span><br><span>         # wrong interval</span><br><span>         res = self.vty.command("subscriber-create-on-demand random 221 122")</span><br><span>         # error string will contain arguments</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assert_(res.find("122") > 0)</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assert_(res.find("221") > 0)</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertTrue(res.find("122") > 0)</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertTrue(res.find("221") > 0)</span><br><span>         # correct interval - silent ok</span><br><span>         self.assertTrue(self.vty.verify("subscriber-create-on-demand random 221 222", ['']))</span><br><span>         self.vty.command("end")</span><br><span> </span><br><span>         res = self.vty.command('subscriber create imsi ' + imsi2)</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assert_(res.find("    IMSI: " + imsi2) > 0)</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assert_(res.find("221") > 0 or res.find("222") > 0)</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assert_(res.find("    Extension: ") > 0)</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertTrue(res.find("    IMSI: " + imsi2) > 0)</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertTrue(res.find("221") > 0 or res.find("222") > 0)</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertTrue(res.find("    Extension: ") > 0)</span><br><span> </span><br><span>         # Without extension</span><br><span>         self.vty.command("configure terminal")</span><br><span>@@ -448,8 +448,8 @@</span><br><span>         self.assertTrue(self.vty.verify("subscriber-create-on-demand no-extension", ['']))</span><br><span>         self.vty.command("end")</span><br><span>         res = self.vty.command('subscriber create imsi ' + imsi3)</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assert_(res.find("    IMSI: " + imsi3) > 0)</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(res.find("Extension"), -1)</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertTrue(res.find("    IMSI: " + imsi3) > 0)</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(res.find("Extension"), -1)</span><br><span> </span><br><span>         # With extension again</span><br><span>         self.vty.command("configure terminal")</span><br><span>@@ -460,22 +460,22 @@</span><br><span>         self.vty.command("end")</span><br><span> </span><br><span>         res = self.vty.command('subscriber create imsi ' + imsi4)</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assert_(res.find("    IMSI: " + imsi4) > 0)</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assert_(res.find("    Extension: ") > 0)</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertTrue(res.find("    IMSI: " + imsi4) > 0)</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertTrue(res.find("    Extension: ") > 0)</span><br><span> </span><br><span>         # Delete it</span><br><span>         res = self.vty.command('subscriber imsi ' + imsi + ' delete')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assert_("" == res)</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertTrue("" == res)</span><br><span>         res = self.vty.command('subscriber imsi ' + imsi2 + ' delete')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assert_("" == res)</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertTrue("" == res)</span><br><span>         res = self.vty.command('subscriber imsi ' + imsi3 + ' delete')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assert_("" == res)</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertTrue("" == res)</span><br><span>         res = self.vty.command('subscriber imsi ' + imsi4 + ' delete')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assert_("" == res)</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertTrue("" == res)</span><br><span> </span><br><span>         # Now it should not be there anymore</span><br><span>         res = self.vty.command('show subscriber imsi '+imsi)</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assert_(('% No subscriber found for imsi ' + imsi) == res)</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertTrue(('% No subscriber found for imsi ' + imsi) == res)</span><br><span> </span><br><span>         # range</span><br><span>         self.vty.command("end")</span><br><span>@@ -483,20 +483,20 @@</span><br><span>         self.vty.command("nitb")</span><br><span>         self.assertTrue(self.vty.verify("subscriber-create-on-demand random 9999999998 9999999999", ['']))</span><br><span>         res = self.vty.command("show running-config")</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assert_(res.find("subscriber-create-on-demand random 9999999998 9999999999"))</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertTrue(res.find("subscriber-create-on-demand random 9999999998 9999999999"))</span><br><span>         self.vty.command("end")</span><br><span> </span><br><span>         res = self.vty.command('subscriber create imsi ' + imsi)</span><br><span>         print(res)</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assert_(res.find("    IMSI: " + imsi) > 0)</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assert_(res.find("9999999998") > 0 or res.find("9999999999") > 0)</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assert_(res.find("    Extension: ") > 0)</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertTrue(res.find("    IMSI: " + imsi) > 0)</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertTrue(res.find("9999999998") > 0 or res.find("9999999999") > 0)</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertTrue(res.find("    Extension: ") > 0)</span><br><span> </span><br><span>         res = self.vty.command('subscriber imsi ' + imsi + ' delete')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assert_("" == res)</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertTrue("" == res)</span><br><span> </span><br><span>         res = self.vty.command('show subscriber imsi '+imsi)</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assert_(('% No subscriber found for imsi ' + imsi) == res)</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertTrue(('% No subscriber found for imsi ' + imsi) == res)</span><br><span> </span><br><span> </span><br><span>     def testSubscriberSettings(self):</span><br><span>@@ -508,18 +508,18 @@</span><br><span> </span><br><span>         # Lets create one</span><br><span>         res = self.vty.command('subscriber create imsi '+imsi)</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assert_(res.find("    IMSI: "+imsi) > 0)</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assert_(res.find("Extension") > 0)</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertTrue(res.find("    IMSI: "+imsi) > 0)</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertTrue(res.find("Extension") > 0)</span><br><span> </span><br><span>         self.vty.verify('subscriber imsi '+wrong_imsi+' name wrong', ['% No subscriber found for imsi '+wrong_imsi])</span><br><span>         res = self.vty.command('subscriber imsi '+imsi+' name '+('X' * 160))</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assert_(res.find("NAME is too long") > 0)</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertTrue(res.find("NAME is too long") > 0)</span><br><span> </span><br><span>         self.vty.verify('subscriber imsi '+imsi+' name '+('G' * 159), [''])</span><br><span> </span><br><span>         self.vty.verify('subscriber imsi '+wrong_imsi+' extension 840', ['% No subscriber found for imsi '+wrong_imsi])</span><br><span>         res = self.vty.command('subscriber imsi '+imsi+' extension '+('9' * 15))</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assert_(res.find("EXTENSION is too long") > 0)</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertTrue(res.find("EXTENSION is too long") > 0)</span><br><span> </span><br><span>         self.vty.verify('subscriber imsi '+imsi+' extension '+('1' * 14), [''])</span><br><span> </span><br><span>@@ -529,34 +529,34 @@</span><br><span>         self.assertTrue(self.vty.verify("subscriber-create-on-demand", ['']))</span><br><span>         # wrong interval</span><br><span>         res = self.vty.command("subscriber-create-on-demand random 221 122")</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assert_(res.find("122") > 0)</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assert_(res.find("221") > 0)</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertTrue(res.find("122") > 0)</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertTrue(res.find("221") > 0)</span><br><span>         # correct interval</span><br><span>         self.assertTrue(self.vty.verify("subscriber-create-on-demand random 221 222", ['']))</span><br><span>         self.vty.command("end")</span><br><span> </span><br><span>         # create subscriber with extension in a configured interval</span><br><span>         res = self.vty.command('subscriber create imsi ' + imsi2)</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assert_(res.find("    IMSI: " + imsi2) > 0)</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assert_(res.find("221") > 0 or res.find("222") > 0)</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assert_(res.find("    Extension: ") > 0)</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertTrue(res.find("    IMSI: " + imsi2) > 0)</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertTrue(res.find("221") > 0 or res.find("222") > 0)</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertTrue(res.find("    Extension: ") > 0)</span><br><span> </span><br><span>         # Delete it</span><br><span>         res = self.vty.command('subscriber imsi ' + imsi + ' delete')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assert_(res != "")</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertTrue(res != "")</span><br><span>         # imsi2 is inactive so deletion should succeed</span><br><span>         res = self.vty.command('subscriber imsi ' + imsi2 + ' delete')</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assert_("" == res)</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertTrue("" == res)</span><br><span> </span><br><span>     def testShowPagingGroup(self):</span><br><span>         res = self.vty.command("show paging-group 255 1234567")</span><br><span>         self.assertEqual(res, "% can't find BTS 255")</span><br><span>         res = self.vty.command("show paging-group 0 1234567")</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(res, "%Paging group for IMSI 1234567 on BTS #0 is 7")</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(res, "%Paging group for IMSI 1234567 on BTS #0 is 7")</span><br><span> </span><br><span>     def testShowNetwork(self):</span><br><span>         res = self.vty.command("show network")</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assert_(res.startswith('BSC is on Country Code') >= 0)</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertTrue(res.startswith('BSC is on Country Code') >= 0)</span><br><span> </span><br><span>     def testMeasurementFeed(self):</span><br><span>         self.vty.enable()</span><br><span>@@ -564,17 +564,17 @@</span><br><span>         self.vty.command("mncc-int")</span><br><span> </span><br><span>         res = self.vty.command("write terminal")</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(res.find('meas-feed scenario'), -1)</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(res.find('meas-feed scenario'), -1)</span><br><span> </span><br><span>         self.vty.command("meas-feed scenario bla")</span><br><span>         res = self.vty.command("write terminal")</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assert_(res.find('meas-feed scenario bla') > 0)</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertTrue(res.find('meas-feed scenario bla') > 0)</span><br><span> </span><br><span>         self.vty.command("meas-feed scenario abcdefghijklmnopqrstuvwxyz01234567890")</span><br><span>         res = self.vty.command("write terminal")</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(res.find('meas-feed scenario abcdefghijklmnopqrstuvwxyz01234567890'), -1)</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(res.find('meas-feed scenario abcdefghijklmnopqrstuvwxyz012345'), -1)</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assert_(res.find('meas-feed scenario abcdefghijklmnopqrstuvwxyz01234') > 0)</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(res.find('meas-feed scenario abcdefghijklmnopqrstuvwxyz01234567890'), -1)</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(res.find('meas-feed scenario abcdefghijklmnopqrstuvwxyz012345'), -1)</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertTrue(res.find('meas-feed scenario abcdefghijklmnopqrstuvwxyz01234') > 0)</span><br><span> </span><br><span> </span><br><span> class TestVTYBSC(TestVTYGenericBSC):</span><br><span>@@ -592,18 +592,18 @@</span><br><span>     def testVtyTree(self):</span><br><span>         self.vty.enable()</span><br><span>         self.assertTrue(self.vty.verify("configure terminal", ['']))</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(self.vty.node(), 'config')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(self.vty.node(), 'config')</span><br><span>         self.checkForEndAndExit()</span><br><span>         self.assertTrue(self.vty.verify("msc 0", ['']))</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(self.vty.node(), 'config-msc')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(self.vty.node(), 'config-msc')</span><br><span>         self.checkForEndAndExit()</span><br><span>         self.assertTrue(self.vty.verify("exit", ['']))</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(self.vty.node(), 'config')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(self.vty.node(), 'config')</span><br><span>         self.assertTrue(self.vty.verify("bsc", ['']))</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(self.vty.node(), 'config-bsc')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(self.vty.node(), 'config-bsc')</span><br><span>         self.checkForEndAndExit()</span><br><span>         self.assertTrue(self.vty.verify("exit", ['']))</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(self.vty.node(), 'config')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(self.vty.node(), 'config')</span><br><span>         self.assertTrue(self.vty.verify("exit", ['']))</span><br><span>         self.assertTrue(self.vty.node() is None)</span><br><span> </span><br><span>@@ -624,12 +624,12 @@</span><br><span> </span><br><span>         # Verify settings</span><br><span>         res = self.vty.command("write terminal")</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assert_(res.find('bsc-msc-lost-text MSC disconnected') > 0)</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(res.find('no bsc-msc-lost-text'), -1)</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assert_(res.find('bsc-welcome-text Hello MS') > 0)</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(res.find('no bsc-welcome-text'), -1)</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assert_(res.find('bsc-grace-text In grace period') > 0)</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(res.find('no bsc-grace-text'), -1)</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertTrue(res.find('bsc-msc-lost-text MSC disconnected') > 0)</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(res.find('no bsc-msc-lost-text'), -1)</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertTrue(res.find('bsc-welcome-text Hello MS') > 0)</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(res.find('no bsc-welcome-text'), -1)</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertTrue(res.find('bsc-grace-text In grace period') > 0)</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(res.find('no bsc-grace-text'), -1)</span><br><span> </span><br><span>         # Now disable it..</span><br><span>         self.vty.verify("no bsc-msc-lost-text", [''])</span><br><span>@@ -638,12 +638,12 @@</span><br><span> </span><br><span>         # Verify settings</span><br><span>         res = self.vty.command("write terminal")</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(res.find('bsc-msc-lost-text MSC disconnected'), -1)</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assert_(res.find('no bsc-msc-lost-text') > 0)</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(res.find('bsc-welcome-text Hello MS'), -1)</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assert_(res.find('no bsc-welcome-text') > 0)</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(res.find('bsc-grace-text In grace period'), -1)</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assert_(res.find('no bsc-grace-text') > 0)</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(res.find('bsc-msc-lost-text MSC disconnected'), -1)</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertTrue(res.find('no bsc-msc-lost-text') > 0)</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(res.find('bsc-welcome-text Hello MS'), -1)</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertTrue(res.find('no bsc-welcome-text') > 0)</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(res.find('bsc-grace-text In grace period'), -1)</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertTrue(res.find('no bsc-grace-text') > 0)</span><br><span> </span><br><span>     def testUssdNotificationsBsc(self):</span><br><span>         self.vty.enable()</span><br><span>@@ -658,16 +658,16 @@</span><br><span> </span><br><span>         # Verify settings</span><br><span>         res = self.vty.command("write terminal")</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assert_(res.find('missing-msc-text No MSC found') > 0)</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(res.find('no missing-msc-text'), -1)</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertTrue(res.find('missing-msc-text No MSC found') > 0)</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(res.find('no missing-msc-text'), -1)</span><br><span> </span><br><span>         # Now disable it..</span><br><span>         self.vty.verify("no missing-msc-text", [''])</span><br><span> </span><br><span>         # Verify settings</span><br><span>         res = self.vty.command("write terminal")</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(res.find('missing-msc-text No MSC found'), -1)</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assert_(res.find('no missing-msc-text') > 0)</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(res.find('missing-msc-text No MSC found'), -1)</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertTrue(res.find('no missing-msc-text') > 0)</span><br><span> </span><br><span>     def testNetworkTimezone(self):</span><br><span>         self.vty.enable()</span><br><span>@@ -685,26 +685,26 @@</span><br><span> </span><br><span>         # Verify settings</span><br><span>         res = self.vty.command("write terminal")</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assert_(res.find('timezone 2 30') > 0)</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(res.find('timezone 2 30 '), -1)</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertTrue(res.find('timezone 2 30') > 0)</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(res.find('timezone 2 30 '), -1)</span><br><span> </span><br><span>         # Set time zone with DST</span><br><span>         self.vty.verify("timezone 2 30 1", [''])</span><br><span> </span><br><span>         # Verify settings</span><br><span>         res = self.vty.command("write terminal")</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assert_(res.find('timezone 2 30 1') > 0)</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertTrue(res.find('timezone 2 30 1') > 0)</span><br><span> </span><br><span>         # Now disable it..</span><br><span>         self.vty.verify("no timezone", [''])</span><br><span> </span><br><span>         # Verify settings</span><br><span>         res = self.vty.command("write terminal")</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(res.find(' timezone'), -1)</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(res.find(' timezone'), -1)</span><br><span> </span><br><span>     def testShowNetwork(self):</span><br><span>         res = self.vty.command("show network")</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assert_(res.startswith('BSC is on Country Code') >= 0)</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertTrue(res.startswith('BSC is on Country Code') >= 0)</span><br><span> </span><br><span>     def testPingPongConfiguration(self):</span><br><span>         self.vty.enable()</span><br><span>@@ -714,28 +714,28 @@</span><br><span>         self.vty.verify("timeout-ping 12", [''])</span><br><span>         self.vty.verify("timeout-pong 14", [''])</span><br><span>         res = self.vty.command("show running-config")</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assert_(res.find(" timeout-ping 12") > 0)</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assert_(res.find(" timeout-pong 14") > 0)</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assert_(res.find(" no timeout-ping advanced") > 0)</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertTrue(res.find(" timeout-ping 12") > 0)</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertTrue(res.find(" timeout-pong 14") > 0)</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertTrue(res.find(" no timeout-ping advanced") > 0)</span><br><span> </span><br><span>         self.vty.verify("timeout-ping advanced", [''])</span><br><span>         res = self.vty.command("show running-config")</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assert_(res.find(" timeout-ping 12") > 0)</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assert_(res.find(" timeout-pong 14") > 0)</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assert_(res.find(" timeout-ping advanced") > 0)</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertTrue(res.find(" timeout-ping 12") > 0)</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertTrue(res.find(" timeout-pong 14") > 0)</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertTrue(res.find(" timeout-ping advanced") > 0)</span><br><span> </span><br><span>         self.vty.verify("no timeout-ping advanced", [''])</span><br><span>         res = self.vty.command("show running-config")</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assert_(res.find(" timeout-ping 12") > 0)</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assert_(res.find(" timeout-pong 14") > 0)</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assert_(res.find(" no timeout-ping advanced") > 0)</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertTrue(res.find(" timeout-ping 12") > 0)</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertTrue(res.find(" timeout-pong 14") > 0)</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertTrue(res.find(" no timeout-ping advanced") > 0)</span><br><span> </span><br><span>         self.vty.verify("no timeout-ping", [''])</span><br><span>         res = self.vty.command("show running-config")</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(res.find(" timeout-ping 12"), -1)</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(res.find(" timeout-pong 14"), -1)</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(res.find(" no timeout-ping advanced"), -1)</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assert_(res.find(" no timeout-ping") > 0)</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(res.find(" timeout-ping 12"), -1)</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(res.find(" timeout-pong 14"), -1)</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(res.find(" no timeout-ping advanced"), -1)</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertTrue(res.find(" no timeout-ping") > 0)</span><br><span> </span><br><span>         self.vty.verify("timeout-ping advanced", ['%ping handling is disabled. Enable it first.'])</span><br><span> </span><br><span>@@ -743,15 +743,15 @@</span><br><span>         self.vty.verify("timeout-ping 12", [''])</span><br><span>         self.vty.verify("timeout-pong 14", [''])</span><br><span>         res = self.vty.command("show running-config")</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assert_(res.find(" timeout-ping 12") > 0)</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assert_(res.find(" timeout-pong 14") > 0)</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assert_(res.find(" timeout-ping advanced") > 0)</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertTrue(res.find(" timeout-ping 12") > 0)</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertTrue(res.find(" timeout-pong 14") > 0)</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertTrue(res.find(" timeout-ping advanced") > 0)</span><br><span> </span><br><span>     def testMscDataCoreLACCI(self):</span><br><span>         self.vty.enable()</span><br><span>         res = self.vty.command("show running-config")</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(res.find("core-location-area-code"), -1)</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(res.find("core-cell-identity"), -1)</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(res.find("core-location-area-code"), -1)</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(res.find("core-cell-identity"), -1)</span><br><span> </span><br><span>         self.vty.command("configure terminal")</span><br><span>         self.vty.command("msc 0")</span><br><span>@@ -759,8 +759,8 @@</span><br><span>         self.vty.command("core-cell-identity 333")</span><br><span> </span><br><span>         res = self.vty.command("show running-config")</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assert_(res.find("core-location-area-code 666") > 0)</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assert_(res.find("core-cell-identity 333") > 0)</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertTrue(res.find("core-location-area-code 666") > 0)</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertTrue(res.find("core-cell-identity 333") > 0)</span><br><span> </span><br><span> class TestVTYNAT(TestVTYGenericBSC):</span><br><span> </span><br><span>@@ -781,7 +781,7 @@</span><br><span>         nat_bsc_reload(self)</span><br><span>         bscs2 = self.vty.command("show bscs-config")</span><br><span>         # check that multiple calls to bscs-config-file give the same result</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(bscs1, bscs2)</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(bscs1, bscs2)</span><br><span> </span><br><span>         # add new bsc</span><br><span>         self.vty.command("configure terminal")</span><br><span>@@ -805,23 +805,23 @@</span><br><span>             b1 = nat_bsc_sock_test(1, "xyu", verbose=True, proc=self.proc)</span><br><span>             b2 = nat_bsc_sock_test(5, "key", verbose=True, proc=self.proc)</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-            self.assertEquals("3 BSCs configured", self.vty.command("show nat num-bscs-configured"))</span><br><span style="color: hsl(120, 100%, 40%);">+            self.assertEqual("3 BSCs configured", self.vty.command("show nat num-bscs-configured"))</span><br><span>             self.assertTrue(3 == nat_bsc_num_con(self))</span><br><span style="color: hsl(0, 100%, 40%);">-            self.assertEquals("MSC is connected: 1", self.vty.command("show msc connection"))</span><br><span style="color: hsl(120, 100%, 40%);">+            self.assertEqual("MSC is connected: 1", self.vty.command("show msc connection"))</span><br><span> </span><br><span>             nat_bsc_reload(self)</span><br><span>             bscs2 = self.vty.command("show bscs-config")</span><br><span>             # check that the reset to initial config succeeded</span><br><span style="color: hsl(0, 100%, 40%);">-            self.assertEquals(bscs1, bscs2)</span><br><span style="color: hsl(120, 100%, 40%);">+            self.assertEqual(bscs1, bscs2)</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-            self.assertEquals("2 BSCs configured", self.vty.command("show nat num-bscs-configured"))</span><br><span style="color: hsl(120, 100%, 40%);">+            self.assertEqual("2 BSCs configured", self.vty.command("show nat num-bscs-configured"))</span><br><span>             self.assertTrue(1 == nat_bsc_num_con(self))</span><br><span>             rem = self.vty.command("show bsc connections").split(' ')</span><br><span>             # remaining connection is for BSC0</span><br><span style="color: hsl(0, 100%, 40%);">-            self.assertEquals('0', rem[2])</span><br><span style="color: hsl(120, 100%, 40%);">+            self.assertEqual('0', rem[2])</span><br><span>             # remaining connection is authorized</span><br><span style="color: hsl(0, 100%, 40%);">-            self.assertEquals('1', rem[4])</span><br><span style="color: hsl(0, 100%, 40%);">-            self.assertEquals("MSC is connected: 1", self.vty.command("show msc connection"))</span><br><span style="color: hsl(120, 100%, 40%);">+            self.assertEqual('1', rem[4])</span><br><span style="color: hsl(120, 100%, 40%);">+            self.assertEqual("MSC is connected: 1", self.vty.command("show msc connection"))</span><br><span>         finally:</span><br><span>             msc.close()</span><br><span>             msc_socket.close()</span><br><span>@@ -829,23 +829,23 @@</span><br><span>     def testVtyTree(self):</span><br><span>         self.vty.enable()</span><br><span>         self.assertTrue(self.vty.verify('configure terminal', ['']))</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(self.vty.node(), 'config')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(self.vty.node(), 'config')</span><br><span>         self.checkForEndAndExit()</span><br><span>         self.assertTrue(self.vty.verify('mgcp', ['']))</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(self.vty.node(), 'config-mgcp')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(self.vty.node(), 'config-mgcp')</span><br><span>         self.checkForEndAndExit()</span><br><span>         self.assertTrue(self.vty.verify('exit', ['']))</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(self.vty.node(), 'config')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(self.vty.node(), 'config')</span><br><span>         self.assertTrue(self.vty.verify('nat', ['']))</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(self.vty.node(), 'config-nat')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(self.vty.node(), 'config-nat')</span><br><span>         self.checkForEndAndExit()</span><br><span>         self.assertTrue(self.vty.verify('bsc 0', ['']))</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(self.vty.node(), 'config-nat-bsc')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(self.vty.node(), 'config-nat-bsc')</span><br><span>         self.checkForEndAndExit()</span><br><span>         self.assertTrue(self.vty.verify('exit', ['']))</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(self.vty.node(), 'config-nat')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(self.vty.node(), 'config-nat')</span><br><span>         self.assertTrue(self.vty.verify('exit', ['']))</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEquals(self.vty.node(), 'config')</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(self.vty.node(), 'config')</span><br><span>         self.assertTrue(self.vty.verify('exit', ['']))</span><br><span>         self.assertTrue(self.vty.node() is None)</span><br><span> </span><br><span>@@ -863,15 +863,15 @@</span><br><span> </span><br><span>         # Ensure the default</span><br><span>         res = self.vty.command("show running-config")</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assert_(res.find('\n sdp-ensure-amr-mode-set') > 0)</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertTrue(res.find('\n sdp-ensure-amr-mode-set') > 0)</span><br><span> </span><br><span>         self.vty.command("sdp-ensure-amr-mode-set")</span><br><span>         res = self.vty.command("show running-config")</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assert_(res.find('\n sdp-ensure-amr-mode-set') > 0)</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertTrue(res.find('\n sdp-ensure-amr-mode-set') > 0)</span><br><span> </span><br><span>         self.vty.command("no sdp-ensure-amr-mode-set")</span><br><span>         res = self.vty.command("show running-config")</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assert_(res.find('\n no sdp-ensure-amr-mode-set') > 0)</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertTrue(res.find('\n no sdp-ensure-amr-mode-set') > 0)</span><br><span> </span><br><span>     def testRewritePostNoRewrite(self):</span><br><span>         self.vty.enable()</span><br><span>@@ -916,35 +916,35 @@</span><br><span>         ussdSocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)</span><br><span>         ussdSocket.connect(('127.0.0.1', 5001))</span><br><span>         ussdSocket.settimeout(2.0)</span><br><span style="color: hsl(0, 100%, 40%);">-        print "Connected to %s:%d" % ussdSocket.getpeername()</span><br><span style="color: hsl(120, 100%, 40%);">+        print("Connected to %s:%d" % ussdSocket.getpeername())</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-        print "Expecting ID_GET request"</span><br><span style="color: hsl(120, 100%, 40%);">+        print("Expecting ID_GET request")</span><br><span>         data = ussdSocket.recv(4)</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEqual(data, "\x00\x01\xfe\x04")</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(data, b"\x00\x01\xfe\x04")</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-        print "Going to send ID_RESP response"</span><br><span style="color: hsl(120, 100%, 40%);">+        print("Going to send ID_RESP response")</span><br><span>         res = ussdSocket.send(IPA().id_resp(IPA().tag_name('key'+'\0')))</span><br><span>         self.assertEqual(res, 11)</span><br><span> </span><br><span>         # initiating PING/PONG cycle to know, that the ID_RESP message has been processed</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-        print "Going to send PING request"</span><br><span style="color: hsl(120, 100%, 40%);">+        print("Going to send PING request")</span><br><span>         res = ussdSocket.send(IPA().ping())</span><br><span>         self.assertEqual(res, 4)</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-        print "Expecting PONG response"</span><br><span style="color: hsl(120, 100%, 40%);">+        print("Expecting PONG response")</span><br><span>         data = ussdSocket.recv(4)</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEqual(data, "\x00\x01\xfe\x01")</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(data, b"\x00\x01\xfe\x01")</span><br><span> </span><br><span>         res = self.vty.verify("show ussd-connection", ['The USSD side channel provider is connected and authorized.'])</span><br><span>         self.assertTrue(res)</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-        print "Going to shut down connection"</span><br><span style="color: hsl(120, 100%, 40%);">+        print("Going to shut down connection")</span><br><span>         ussdSocket.shutdown(socket.SHUT_WR)</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-        print "Expecting EOF"</span><br><span style="color: hsl(120, 100%, 40%);">+        print("Expecting EOF")</span><br><span>         data = ussdSocket.recv(4)</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assertEqual(data, "")</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertEqual(data, b"")</span><br><span> </span><br><span>         ussdSocket.close()</span><br><span> </span><br><span>@@ -967,7 +967,7 @@</span><br><span>            if line.startswith(" access-list test-default"):</span><br><span>                 self.assertEqual(line, " access-list test-default imsi-deny ^123[0-9]*$ 11 11")</span><br><span>                 asserted = True</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assert_(asserted)</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertTrue(asserted)</span><br><span> </span><br><span>         # Check the optional CM Service Reject Cause</span><br><span>         self.vty.command("access-list test-cm-deny imsi-deny ^123[0-9]*$ 42").split("\r\n")</span><br><span>@@ -977,7 +977,7 @@</span><br><span>            if line.startswith(" access-list test-cm"):</span><br><span>                 self.assertEqual(line, " access-list test-cm-deny imsi-deny ^123[0-9]*$ 42 11")</span><br><span>                 asserted = True</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assert_(asserted)</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertTrue(asserted)</span><br><span> </span><br><span>         # Check the optional LU Reject Cause</span><br><span>         self.vty.command("access-list test-lu-deny imsi-deny ^123[0-9]*$ 23 42").split("\r\n")</span><br><span>@@ -987,7 +987,7 @@</span><br><span>            if line.startswith(" access-list test-lu"):</span><br><span>                 self.assertEqual(line, " access-list test-lu-deny imsi-deny ^123[0-9]*$ 23 42")</span><br><span>                 asserted = True</span><br><span style="color: hsl(0, 100%, 40%);">-        self.assert_(asserted)</span><br><span style="color: hsl(120, 100%, 40%);">+        self.assertTrue(asserted)</span><br><span> </span><br><span> def add_nat_test(suite, workdir):</span><br><span>     if not os.path.isfile(os.path.join(workdir, "src/osmo-bsc_nat/osmo-bsc_nat")):</span><br><span>@@ -1010,7 +1010,7 @@</span><br><span>     x.vty.command("end")</span><br><span> </span><br><span> def data2str(d):</span><br><span style="color: hsl(0, 100%, 40%);">-    return d.encode('hex').lower()</span><br><span style="color: hsl(120, 100%, 40%);">+    return d.hex()</span><br><span> </span><br><span> def nat_msc_test(x, ip, port, verbose = False):</span><br><span>     msc = socket.socket(socket.AF_INET, socket.SOCK_STREAM)</span><br><span>@@ -1019,11 +1019,11 @@</span><br><span>     msc.bind((ip, port))</span><br><span>     msc.listen(5)</span><br><span>     if (verbose):</span><br><span style="color: hsl(0, 100%, 40%);">-        print "MSC is ready at " + ip</span><br><span style="color: hsl(120, 100%, 40%);">+        print("MSC is ready at " + ip)</span><br><span>     conn = None</span><br><span>     while True:</span><br><span>         vty_response = x.vty.command("show msc connection")</span><br><span style="color: hsl(0, 100%, 40%);">-        print "'show msc connection' says: %r" % vty_response</span><br><span style="color: hsl(120, 100%, 40%);">+        print("'show msc connection' says: %r" % vty_response)</span><br><span>         if vty_response == "MSC is connected: 1":</span><br><span>             # success</span><br><span>             break;</span><br><span>@@ -1035,10 +1035,10 @@</span><br><span>         while timeout_retries > 0:</span><br><span>             try:</span><br><span>                 conn, addr = msc.accept()</span><br><span style="color: hsl(0, 100%, 40%);">-                print "MSC got connection from ", addr</span><br><span style="color: hsl(120, 100%, 40%);">+                print("MSC got connection from ", addr)</span><br><span>                 break</span><br><span>             except socket.timeout:</span><br><span style="color: hsl(0, 100%, 40%);">-                print "socket timed out."</span><br><span style="color: hsl(120, 100%, 40%);">+                print("socket timed out.")</span><br><span>                 timeout_retries -= 1</span><br><span>                 continue</span><br><span> </span><br><span>@@ -1053,52 +1053,52 @@</span><br><span>       raise Exception("expected to receive 4 bytes, but got %d (%r)" % (len(s)/2, s))</span><br><span>     if "0001fe00" == s:</span><br><span>         if (verbose):</span><br><span style="color: hsl(0, 100%, 40%);">-            print "\tBSC <- NAT: PING?"</span><br><span style="color: hsl(120, 100%, 40%);">+            print("\tBSC <- NAT: PING?")</span><br><span>         x.send(IPA().pong())</span><br><span>     elif "0001fe06" == s:</span><br><span>         if (verbose):</span><br><span style="color: hsl(0, 100%, 40%);">-            print "\tBSC <- NAT: IPA ID ACK"</span><br><span style="color: hsl(120, 100%, 40%);">+            print("\tBSC <- NAT: IPA ID ACK")</span><br><span>         x.send(IPA().id_ack())</span><br><span>     elif "0001fe00" == s:</span><br><span>         if (verbose):</span><br><span style="color: hsl(0, 100%, 40%);">-            print "\tBSC <- NAT: PONG!"</span><br><span style="color: hsl(120, 100%, 40%);">+            print("\tBSC <- NAT: PONG!")</span><br><span>     else:</span><br><span>         if (verbose):</span><br><span style="color: hsl(0, 100%, 40%);">-            print "\tBSC <- NAT: ", s</span><br><span style="color: hsl(120, 100%, 40%);">+            print("\tBSC <- NAT: ", s)</span><br><span> </span><br><span> def ipa_handle_resp(x, tk, verbose = False, proc=None):</span><br><span>     s = data2str(x.recv(38))</span><br><span>     if "0023fe040108010701020103010401050101010011" in s:</span><br><span>         retries = 3</span><br><span>         while True:</span><br><span style="color: hsl(0, 100%, 40%);">-            print "\tsending IPA identity(%s) at %s" % (tk, time.strftime("%T"))</span><br><span style="color: hsl(120, 100%, 40%);">+            print("\tsending IPA identity(%s) at %s" % (tk, time.strftime("%T")))</span><br><span>             try:</span><br><span>                 x.send(IPA().id_resp(IPA().identity(name = (tk+'\0').encode('utf-8'))))</span><br><span style="color: hsl(0, 100%, 40%);">-                print "\tdone sending IPA identity(%s) at %s" % (tk,</span><br><span style="color: hsl(0, 100%, 40%);">-                                                            time.strftime("%T"))</span><br><span style="color: hsl(120, 100%, 40%);">+                print("\tdone sending IPA identity(%s) at %s" % (tk,</span><br><span style="color: hsl(120, 100%, 40%);">+                                                            time.strftime("%T")))</span><br><span>                 break</span><br><span>             except:</span><br><span style="color: hsl(0, 100%, 40%);">-                print "\tfailed sending IPA identity at", time.strftime("%T")</span><br><span style="color: hsl(120, 100%, 40%);">+                print("\tfailed sending IPA identity at", time.strftime("%T"))</span><br><span>                 if proc:</span><br><span style="color: hsl(0, 100%, 40%);">-                  print "\tproc.poll() = %r" % proc.poll()</span><br><span style="color: hsl(120, 100%, 40%);">+                  print("\tproc.poll() = %r" % proc.poll())</span><br><span>                 if retries < 1:</span><br><span style="color: hsl(0, 100%, 40%);">-                    print "\tgiving up"</span><br><span style="color: hsl(120, 100%, 40%);">+                    print("\tgiving up")</span><br><span>                     raise</span><br><span style="color: hsl(0, 100%, 40%);">-                print "\tretrying (%d attempts left)" % retries</span><br><span style="color: hsl(120, 100%, 40%);">+                print("\tretrying (%d attempts left)" % retries)</span><br><span>                 retries -= 1</span><br><span>     else:</span><br><span>         if (verbose):</span><br><span style="color: hsl(0, 100%, 40%);">-            print "\tBSC <- NAT: ", s</span><br><span style="color: hsl(120, 100%, 40%);">+            print("\tBSC <- NAT: ", s)</span><br><span> </span><br><span> def ipa_handle_mgcp(x, verbose = False):</span><br><span>     data = x.recv(3)</span><br><span>     s = data2str(data)</span><br><span>     if s[4:] != "fc":</span><br><span style="color: hsl(0, 100%, 40%);">-        print "expected IPA(MGCP) but received %r instead" % (s[4:])</span><br><span style="color: hsl(120, 100%, 40%);">+        print("expected IPA(MGCP) but received %r instead" % (s[4:]))</span><br><span>     ipa_len, = struct.unpack('>H', data[:2])</span><br><span>     mgcp_msg = x.recv(ipa_len) # MGCP msg</span><br><span>     if (verbose):</span><br><span style="color: hsl(0, 100%, 40%);">-        print "\tBSC <- NAT (MGCP[%d]): %s" % (ipa_len, mgcp_msg)</span><br><span style="color: hsl(120, 100%, 40%);">+        print("\tBSC <- NAT (MGCP[%d]): %s" % (ipa_len, mgcp_msg))</span><br><span> </span><br><span> def nat_bsc_num_con(x):</span><br><span>     return len(x.vty.command("show bsc connections").split('\n'))</span><br><span>@@ -1108,18 +1108,18 @@</span><br><span>     bsc.bind(('127.0.0.1', 0))</span><br><span>     bsc.connect(('127.0.0.1', 5000))</span><br><span>     if (verbose):</span><br><span style="color: hsl(0, 100%, 40%);">-        print "BSC%d " %nr</span><br><span style="color: hsl(0, 100%, 40%);">-        print "\tconnected to %s:%d" % bsc.getpeername()</span><br><span style="color: hsl(120, 100%, 40%);">+        print("BSC%d " %nr)</span><br><span style="color: hsl(120, 100%, 40%);">+        print("\tconnected to %s:%d" % bsc.getpeername())</span><br><span>     if proc:</span><br><span style="color: hsl(0, 100%, 40%);">-      print "\tproc.poll() = %r" % proc.poll()</span><br><span style="color: hsl(0, 100%, 40%);">-      print "\tproc.pid = %r" % proc.pid</span><br><span style="color: hsl(120, 100%, 40%);">+      print("\tproc.poll() = %r" % proc.poll())</span><br><span style="color: hsl(120, 100%, 40%);">+      print("\tproc.pid = %r" % proc.pid)</span><br><span>     ipa_handle_small(bsc, verbose)</span><br><span>     ipa_handle_resp(bsc, tk, verbose, proc=proc)</span><br><span>     if proc:</span><br><span style="color: hsl(0, 100%, 40%);">-      print "\tproc.poll() = %r" % proc.poll()</span><br><span style="color: hsl(120, 100%, 40%);">+      print("\tproc.poll() = %r" % proc.poll())</span><br><span>     ipa_handle_mgcp(bsc, verbose)</span><br><span>     if proc:</span><br><span style="color: hsl(0, 100%, 40%);">-      print "\tproc.poll() = %r" % proc.poll()</span><br><span style="color: hsl(120, 100%, 40%);">+      print("\tproc.poll() = %r" % proc.poll())</span><br><span>     ipa_handle_small(bsc, verbose)</span><br><span>     return bsc</span><br><span> </span><br><span>@@ -1156,9 +1156,9 @@</span><br><span>     if args.p:</span><br><span>         confpath = args.p</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    print "confpath %s, workdir %s" % (confpath, workdir)</span><br><span style="color: hsl(120, 100%, 40%);">+    print("confpath %s, workdir %s" % (confpath, workdir))</span><br><span>     os.chdir(workdir)</span><br><span style="color: hsl(0, 100%, 40%);">-    print "Running tests for specific VTY commands"</span><br><span style="color: hsl(120, 100%, 40%);">+    print("Running tests for specific VTY commands")</span><br><span>     suite = unittest.TestSuite()</span><br><span>     suite.addTest(unittest.TestLoader().loadTestsFromTestCase(TestVTYMGCP))</span><br><span>     suite.addTest(unittest.TestLoader().loadTestsFromTestCase(TestVTYNITB))</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/openbsc/+/16544">change 16544</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://gerrit.osmocom.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://gerrit.osmocom.org/c/openbsc/+/16544"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: openbsc </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: Id7d006f892198bb8a7c0d4a8a8ea00b8d0e62df4 </div>
<div style="display:none"> Gerrit-Change-Number: 16544 </div>
<div style="display:none"> Gerrit-PatchSet: 3 </div>
<div style="display:none"> Gerrit-Owner: osmith <osmith@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: Jenkins Builder </div>
<div style="display:none"> Gerrit-Reviewer: laforge <laforge@osmocom.org> </div>
<div style="display:none"> Gerrit-Reviewer: osmith <osmith@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: merged </div>