mirror of https://github.com/ARMmbed/mbed-os.git
Merge pull request #11921 from madchutney/tools/py3-fixes
Updates to tools for Python 3 compatibilitypull/12019/head
commit
57f9a1eea8
|
@ -115,11 +115,11 @@ def wrap_init(func):
|
|||
# Get the currently in-use API key (may come from environment or
|
||||
# configuration files, which is handled by the cloud SDK)
|
||||
api_key_value = accounts.config.get("api_key")
|
||||
api_key = accounts.list_api_keys(
|
||||
api_key = next(accounts.list_api_keys(
|
||||
filter={
|
||||
"key": api_key_value
|
||||
}
|
||||
).next()
|
||||
))
|
||||
certificates_owned = list(certs.list_certificates())
|
||||
dev_cert_info = None
|
||||
for certif in certificates_owned:
|
||||
|
|
|
@ -28,6 +28,7 @@ import copy
|
|||
from tools.targets import TARGET_MAP
|
||||
from tools.utils import mkdir
|
||||
from tools.resources import FileType, FileRef
|
||||
from future.utils import with_metaclass
|
||||
|
||||
"""Just a template for subclassing"""
|
||||
|
||||
|
@ -57,14 +58,13 @@ def deprecated_exporter(CLS):
|
|||
CLS.NAME = "%s (DEPRECATED)" % old_name
|
||||
return CLS
|
||||
|
||||
class Exporter(object):
|
||||
class Exporter(with_metaclass(ABCMeta, object)):
|
||||
"""Exporter base class
|
||||
|
||||
This class is meant to be extended by individual exporters, and provides a
|
||||
few helper methods for implementing an exporter with either jinja2 or
|
||||
progen.
|
||||
"""
|
||||
__metaclass__ = ABCMeta
|
||||
TEMPLATE_DIR = dirname(__file__)
|
||||
DOT_IN_RELATIVE_PATH = False
|
||||
NAME = None
|
||||
|
|
|
@ -134,7 +134,7 @@ class PackFlashAlgo(object):
|
|||
blob = self.algo_data[:]
|
||||
pad_size = 0 if len(blob) % 4 == 0 else 4 - len(blob) % 4
|
||||
blob = blob + "\x00" * pad_size
|
||||
integer_list = struct.unpack("<" + "L" * (len(blob) / 4), blob)
|
||||
integer_list = struct.unpack("<" + "L" * (len(blob) // 4), blob)
|
||||
line_list = []
|
||||
for pos in range(0, len(integer_list), group_size):
|
||||
group = ["0x%08x" % value for value in
|
||||
|
|
|
@ -18,7 +18,7 @@ from __future__ import print_function
|
|||
|
||||
from sys import stdout
|
||||
|
||||
class DefaultAuto():
|
||||
class DefaultAuto(object):
|
||||
""" Simple, basic host test's test runner waiting for serial port
|
||||
output from MUT, no supervision over test running in MUT is executed.
|
||||
"""
|
||||
|
|
|
@ -17,7 +17,7 @@ limitations under the License.
|
|||
|
||||
import re
|
||||
|
||||
class DetectPlatformTest():
|
||||
class DetectPlatformTest(object):
|
||||
PATTERN_MICRO_NAME = "Target '(\w+)'"
|
||||
re_detect_micro_name = re.compile(PATTERN_MICRO_NAME)
|
||||
|
||||
|
|
|
@ -15,7 +15,7 @@ See the License for the specific language governing permissions and
|
|||
limitations under the License.
|
||||
"""
|
||||
|
||||
class DevNullTest():
|
||||
class DevNullTest(object):
|
||||
|
||||
def check_readline(self, selftest, text):
|
||||
""" Reads line from serial port and checks if text was part of read string
|
||||
|
|
|
@ -19,7 +19,7 @@ import sys
|
|||
import uuid
|
||||
from sys import stdout
|
||||
|
||||
class EchoTest():
|
||||
class EchoTest(object):
|
||||
|
||||
# Test parameters
|
||||
TEST_SERIAL_BAUDRATE = 115200
|
||||
|
|
|
@ -14,7 +14,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
"""
|
||||
from host_test import Test
|
||||
from .host_test import Test
|
||||
|
||||
|
||||
class EchoTest(Test):
|
||||
|
|
|
@ -15,7 +15,7 @@ See the License for the specific language governing permissions and
|
|||
limitations under the License.
|
||||
"""
|
||||
|
||||
class HelloTest():
|
||||
class HelloTest(object):
|
||||
HELLO_WORLD = "Hello World"
|
||||
|
||||
def test(self, selftest):
|
||||
|
|
|
@ -15,7 +15,7 @@ See the License for the specific language governing permissions and
|
|||
limitations under the License.
|
||||
"""
|
||||
|
||||
class HostRegistry:
|
||||
class HostRegistry(object):
|
||||
""" Class stores registry with host tests and objects representing them
|
||||
"""
|
||||
HOST_TESTS = {} # host_test_name -> host_test_ojbect
|
||||
|
|
|
@ -18,8 +18,8 @@ limitations under the License.
|
|||
# Check if 'serial' module is installed
|
||||
try:
|
||||
from serial import Serial
|
||||
except ImportError, e:
|
||||
print "Error: Can't import 'serial' module: %s"% e
|
||||
except ImportError as e:
|
||||
print("Error: Can't import 'serial' module: %s"% e)
|
||||
exit(-1)
|
||||
|
||||
import os
|
||||
|
@ -29,7 +29,7 @@ from sys import stdout
|
|||
from time import sleep, time
|
||||
from optparse import OptionParser
|
||||
|
||||
import host_tests_plugins
|
||||
from . import host_tests_plugins
|
||||
|
||||
# This is a little tricky. We need to add upper directory to path so
|
||||
# we can find packages we want from the same level as other files do
|
||||
|
@ -39,7 +39,7 @@ from tools.test_api import get_autodetected_MUTS_list
|
|||
from tools.test_api import get_module_avail
|
||||
|
||||
|
||||
class Mbed:
|
||||
class Mbed(object):
|
||||
""" Base class for a host driven test
|
||||
"""
|
||||
def __init__(self):
|
||||
|
@ -117,7 +117,7 @@ class Mbed:
|
|||
self.serial_timeout = 1
|
||||
|
||||
self.timeout = self.DEFAULT_TOUT if self.options.timeout is None else self.options.timeout
|
||||
print 'MBED: Instrumentation: "%s" and disk: "%s"' % (self.port, self.disk)
|
||||
print('MBED: Instrumentation: "%s" and disk: "%s"' % (self.port, self.disk))
|
||||
|
||||
def init_serial_params(self, serial_baud=9600, serial_timeout=1):
|
||||
""" Initialize port parameters.
|
||||
|
@ -183,11 +183,11 @@ class Mbed:
|
|||
stdout.write('.')
|
||||
stdout.flush()
|
||||
else:
|
||||
print "...port ready!"
|
||||
print("...port ready!")
|
||||
result = True
|
||||
break
|
||||
if not result and last_error:
|
||||
print last_error
|
||||
print(last_error)
|
||||
return result
|
||||
|
||||
def set_serial_timeout(self, timeout):
|
||||
|
@ -221,7 +221,7 @@ class Mbed:
|
|||
c = self.serial.read(1)
|
||||
result += c
|
||||
except Exception as e:
|
||||
print "MBED: %s"% str(e)
|
||||
print("MBED: %s"% str(e))
|
||||
result = None
|
||||
break
|
||||
if c == '\n':
|
||||
|
@ -298,7 +298,7 @@ class Mbed:
|
|||
return result
|
||||
|
||||
|
||||
class HostTestResults:
|
||||
class HostTestResults(object):
|
||||
""" Test results set by host tests
|
||||
"""
|
||||
def __init__(self):
|
||||
|
@ -389,8 +389,8 @@ class Test(HostTestResults):
|
|||
self.print_result(result)
|
||||
else:
|
||||
self.notify("HOST: Passive mode...")
|
||||
except Exception, e:
|
||||
print str(e)
|
||||
except Exception as e:
|
||||
print(str(e))
|
||||
self.print_result(self.RESULT_ERROR)
|
||||
|
||||
def setup(self):
|
||||
|
@ -406,7 +406,7 @@ class Test(HostTestResults):
|
|||
def notify(self, message):
|
||||
""" On screen notification function
|
||||
"""
|
||||
print message
|
||||
print(message)
|
||||
stdout.flush()
|
||||
|
||||
def print_result(self, result):
|
||||
|
|
|
@ -27,10 +27,12 @@
|
|||
# >myled.write(1)
|
||||
# >
|
||||
|
||||
import serial, urllib2, time
|
||||
from future import standard_library
|
||||
standard_library.install_aliases()
|
||||
import serial, urllib.request, time
|
||||
|
||||
# mbed super class
|
||||
class mbed:
|
||||
class mbed(object):
|
||||
def __init__(self):
|
||||
print("This will work as a demo but no transport mechanism has been selected")
|
||||
|
||||
|
@ -48,7 +50,7 @@ class SerialRPC(mbed):
|
|||
# creates the command to be sent serially - /name/method arg1 arg2 arg3 ... argN
|
||||
str = "/" + name + "/" + method + " " + " ".join(args) + "\n"
|
||||
# prints the command being executed
|
||||
print str
|
||||
print(str)
|
||||
# writes the command to serial
|
||||
self.ser.write(str)
|
||||
# strips trailing characters from the line just written
|
||||
|
@ -61,12 +63,12 @@ class HTTPRPC(mbed):
|
|||
self.host = "http://" + ip
|
||||
|
||||
def rpc(self, name, method, args):
|
||||
response = urllib2.urlopen(self.host + "/rpc/" + name + "/" + method + "%20" + "%20".join(args))
|
||||
response = urllib.request.urlopen(self.host + "/rpc/" + name + "/" + method + "%20" + "%20".join(args))
|
||||
return response.read().strip()
|
||||
|
||||
|
||||
# generic mbed interface super class
|
||||
class mbed_interface():
|
||||
class mbed_interface(object):
|
||||
# initialize an mbed interface with a transport mechanism and pin name
|
||||
def __init__(self, this_mbed, mpin):
|
||||
self.mbed = this_mbed
|
||||
|
@ -198,7 +200,7 @@ class Timer(mbed_interface):
|
|||
return float(re.search('\d+\.*\d*', r).group(0))
|
||||
|
||||
# Serial
|
||||
class Serial():
|
||||
class Serial(object):
|
||||
def __init__(self, this_mbed, tx, rx=""):
|
||||
self.mbed = this_mbed
|
||||
if isinstance(tx, str):
|
||||
|
|
|
@ -14,7 +14,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
"""
|
||||
from host_test import Test, Simple
|
||||
from .host_test import Test, Simple
|
||||
from sys import stdout
|
||||
|
||||
class NETTest(Simple):
|
||||
|
|
|
@ -14,8 +14,8 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
"""
|
||||
from host_test import Test
|
||||
from mbedrpc import SerialRPC, DigitalOut, DigitalIn, pin
|
||||
from .host_test import Test
|
||||
from .mbedrpc import SerialRPC, DigitalOut, DigitalIn, pin
|
||||
|
||||
|
||||
class RpcTest(Test):
|
||||
|
@ -30,7 +30,7 @@ class RpcTest(Test):
|
|||
|
||||
if hasattr(self.mbed.options, 'micro'):
|
||||
if self.mbed.options.micro == 'M0+':
|
||||
print "Freedom Board: PTA12 <-> PTC4"
|
||||
print("Freedom Board: PTA12 <-> PTC4")
|
||||
p_out = pin("PTA12")
|
||||
p_in = pin("PTC4")
|
||||
|
||||
|
|
|
@ -18,7 +18,7 @@ limitations under the License.
|
|||
import re
|
||||
from time import time, strftime, gmtime
|
||||
|
||||
class RTCTest():
|
||||
class RTCTest(object):
|
||||
PATTERN_RTC_VALUE = "\[(\d+)\] \[(\d+-\d+-\d+ \d+:\d+:\d+ [AaPpMm]{2})\]"
|
||||
re_detect_rtc_value = re.compile(PATTERN_RTC_VALUE)
|
||||
|
||||
|
|
|
@ -21,7 +21,7 @@ import time
|
|||
import string
|
||||
from sys import stdout
|
||||
|
||||
class SerialCompleteTest():
|
||||
class SerialCompleteTest(object):
|
||||
|
||||
def test(self, selftest):
|
||||
strip_chars = string.whitespace + "\0"
|
||||
|
|
|
@ -21,7 +21,7 @@ import time
|
|||
import string
|
||||
from sys import stdout
|
||||
|
||||
class SerialNCRXTest():
|
||||
class SerialNCRXTest(object):
|
||||
|
||||
def test(self, selftest):
|
||||
selftest.mbed.flush();
|
||||
|
|
|
@ -21,7 +21,7 @@ import time
|
|||
import string
|
||||
from sys import stdout
|
||||
|
||||
class SerialNCTXTest():
|
||||
class SerialNCTXTest(object):
|
||||
|
||||
def test(self, selftest):
|
||||
selftest.mbed.flush();
|
||||
|
|
|
@ -19,7 +19,7 @@ import re
|
|||
import random
|
||||
from time import time
|
||||
|
||||
class StdioTest():
|
||||
class StdioTest(object):
|
||||
PATTERN_INT_VALUE = "Your value was: (-?\d+)"
|
||||
re_detect_int_value = re.compile(PATTERN_INT_VALUE)
|
||||
|
||||
|
|
|
@ -26,9 +26,9 @@ LEN_PACKET = 127
|
|||
N_PACKETS = 5000
|
||||
TOT_BITS = float(LEN_PACKET * N_PACKETS * 8) * 2
|
||||
MEGA = float(1024 * 1024)
|
||||
UPDATE_STEP = (N_PACKETS/10)
|
||||
UPDATE_STEP = (N_PACKETS // 10)
|
||||
|
||||
class TCP_EchoClient:
|
||||
class TCP_EchoClient(object):
|
||||
def __init__(self, host):
|
||||
self.s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
||||
self.s.connect((host, ECHO_PORT))
|
||||
|
@ -44,10 +44,10 @@ class TCP_EchoClient:
|
|||
def test(self):
|
||||
start = time()
|
||||
for i in range(N_PACKETS):
|
||||
if (i % UPDATE_STEP) == 0: print '%.2f%%' % ((float(i)/float(N_PACKETS)) * 100.)
|
||||
if (i % UPDATE_STEP) == 0: print('%.2f%%' % ((float(i)/float(N_PACKETS)) * 100.))
|
||||
self.__packet()
|
||||
t = time() - start
|
||||
print 'Throughput: (%.2f)Mbits/s' % ((TOT_BITS / t)/MEGA)
|
||||
print('Throughput: (%.2f)Mbits/s' % ((TOT_BITS / t)/MEGA))
|
||||
|
||||
def __del__(self):
|
||||
self.s.close()
|
||||
|
|
|
@ -35,7 +35,7 @@ class TCPEchoClient_Handler(BaseRequestHandler):
|
|||
if not data: break
|
||||
self.request.sendall(data)
|
||||
if '{{end}}' in str(data):
|
||||
print
|
||||
print()
|
||||
print(str(data))
|
||||
else:
|
||||
if not count % 10:
|
||||
|
@ -43,7 +43,7 @@ class TCPEchoClient_Handler(BaseRequestHandler):
|
|||
count += 1
|
||||
stdout.flush()
|
||||
|
||||
class TCPEchoClientTest():
|
||||
class TCPEchoClientTest(object):
|
||||
def send_server_ip_port(self, selftest, ip_address, port_no):
|
||||
""" Set up network host. Reset target and and send server IP via serial to Mbed
|
||||
"""
|
||||
|
|
|
@ -14,7 +14,10 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
"""
|
||||
from SocketServer import BaseRequestHandler, TCPServer
|
||||
try:
|
||||
from SocketServer import BaseRequestHandler, TCPServer
|
||||
except ImportError:
|
||||
from socketserver import BaseRequestHandler, TCPServer
|
||||
from time import time
|
||||
|
||||
from mbed_settings import LOCALHOST
|
||||
|
@ -24,7 +27,7 @@ MEGA = float(1024 * 1024)
|
|||
|
||||
class TCP_EchoHandler(BaseRequestHandler):
|
||||
def handle(self):
|
||||
print "\nconnection received"
|
||||
print("\nconnection received")
|
||||
start = time()
|
||||
bytes = 0
|
||||
index = 0
|
||||
|
@ -35,7 +38,7 @@ class TCP_EchoHandler(BaseRequestHandler):
|
|||
bytes += len(data)
|
||||
for n in map(ord, data):
|
||||
if n != index:
|
||||
print "data error %d != %d" % (n , index)
|
||||
print("data error %d != %d" % (n , index))
|
||||
index += 1
|
||||
if index > MAX_INDEX:
|
||||
index = 0
|
||||
|
@ -43,8 +46,8 @@ class TCP_EchoHandler(BaseRequestHandler):
|
|||
self.request.sendall(data)
|
||||
t = time() - start
|
||||
b = float(bytes * 8) * 2
|
||||
print "Throughput: (%.2f)Mbits/s" % ((b/t)/MEGA)
|
||||
print("Throughput: (%.2f)Mbits/s" % ((b/t)/MEGA))
|
||||
|
||||
server = TCPServer((LOCALHOST, 7), TCP_EchoHandler)
|
||||
print "listening for connections"
|
||||
print("listening for connections")
|
||||
server.serve_forever()
|
||||
|
|
|
@ -22,7 +22,7 @@ import uuid
|
|||
import socket
|
||||
from sys import stdout
|
||||
|
||||
class TCPEchoServerTest():
|
||||
class TCPEchoServerTest(object):
|
||||
ECHO_SERVER_ADDRESS = ""
|
||||
ECHO_PORT = 0
|
||||
ECHO_LOOPs = 100
|
||||
|
|
|
@ -14,6 +14,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
"""
|
||||
from __future__ import print_function
|
||||
# Be sure that the tools directory is in the search path
|
||||
import sys
|
||||
from os.path import join, abspath, dirname
|
||||
|
@ -21,20 +22,23 @@ ROOT = abspath(join(dirname(__file__), "..", ".."))
|
|||
sys.path.insert(0, ROOT)
|
||||
|
||||
from mbed_settings import LOCALHOST
|
||||
from SocketServer import BaseRequestHandler, TCPServer
|
||||
try:
|
||||
from SocketServer import BaseRequestHandler, TCPServer
|
||||
except ImportError:
|
||||
from socketserver import BaseRequestHandler, TCPServer
|
||||
|
||||
|
||||
class TCP_EchoHandler(BaseRequestHandler):
|
||||
def handle(self):
|
||||
print "\nHandle connection from:", self.client_address
|
||||
print("\nHandle connection from:", self.client_address)
|
||||
while True:
|
||||
data = self.request.recv(1024)
|
||||
if not data: break
|
||||
self.request.sendall(data)
|
||||
self.request.close()
|
||||
print "socket closed"
|
||||
print("socket closed")
|
||||
|
||||
if __name__ == '__main__':
|
||||
server = TCPServer((LOCALHOST, 7), TCP_EchoHandler)
|
||||
print "listening for connections on:", (LOCALHOST, 7)
|
||||
print("listening for connections on:", (LOCALHOST, 7))
|
||||
server.serve_forever()
|
||||
|
|
|
@ -24,11 +24,20 @@ udp_link_layer_auto.py -p COM20 -d E:\ -t 10
|
|||
import re
|
||||
import uuid
|
||||
import socket
|
||||
import thread
|
||||
try:
|
||||
# Python 3
|
||||
import _thread as thread
|
||||
except ImportError:
|
||||
# Python 2
|
||||
import thread
|
||||
from sys import stdout
|
||||
from time import time, sleep
|
||||
from host_test import DefaultTest
|
||||
from SocketServer import BaseRequestHandler, UDPServer
|
||||
from .host_test import DefaultTest
|
||||
|
||||
try:
|
||||
from SocketServer import BaseRequestHandler, UDPServer
|
||||
except ImportError:
|
||||
from socketserver import BaseRequestHandler, UDPServer
|
||||
|
||||
|
||||
# Received datagrams (with time)
|
||||
|
@ -52,7 +61,7 @@ def udp_packet_recv(threadName, server_ip, server_port):
|
|||
""" This function will receive packet stream from mbed device
|
||||
"""
|
||||
server = UDPServer((server_ip, server_port), UDPEchoClient_Handler)
|
||||
print "[UDP_COUNTER] Listening for connections... %s:%d"% (server_ip, server_port)
|
||||
print("[UDP_COUNTER] Listening for connections... %s:%d"% (server_ip, server_port))
|
||||
server.serve_forever()
|
||||
|
||||
|
||||
|
@ -74,7 +83,7 @@ class UDPEchoServerTest(DefaultTest):
|
|||
try:
|
||||
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
||||
s.connect((self.ECHO_SERVER_ADDRESS, self.CONTROL_PORT))
|
||||
except Exception, e:
|
||||
except Exception as e:
|
||||
data = None
|
||||
s.send(command)
|
||||
data = s.recv(BUFFER_SIZE)
|
||||
|
@ -97,7 +106,7 @@ class UDPEchoServerTest(DefaultTest):
|
|||
# Open client socket to burst datagrams to UDP server in mbed
|
||||
try:
|
||||
self.s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
|
||||
except Exception, e:
|
||||
except Exception as e:
|
||||
self.s = None
|
||||
self.notify("HOST: Error: %s"% e)
|
||||
return self.RESULT_ERROR
|
||||
|
|
|
@ -26,9 +26,9 @@ LEN_PACKET = 127
|
|||
N_PACKETS = 5000
|
||||
TOT_BITS = float(LEN_PACKET * N_PACKETS * 8) * 2
|
||||
MEGA = float(1024 * 1024)
|
||||
UPDATE_STEP = (N_PACKETS/10)
|
||||
UPDATE_STEP = (N_PACKETS // 10)
|
||||
|
||||
class UDP_EchoClient:
|
||||
class UDP_EchoClient(object):
|
||||
s = socket(AF_INET, SOCK_DGRAM)
|
||||
|
||||
def __init__(self, host):
|
||||
|
@ -45,10 +45,10 @@ class UDP_EchoClient:
|
|||
def test(self):
|
||||
start = time()
|
||||
for i in range(N_PACKETS):
|
||||
if (i % UPDATE_STEP) == 0: print '%.2f%%' % ((float(i)/float(N_PACKETS)) * 100.)
|
||||
if (i % UPDATE_STEP) == 0: print('%.2f%%' % ((float(i)/float(N_PACKETS)) * 100.))
|
||||
self.__packet()
|
||||
t = time() - start
|
||||
print 'Throughput: (%.2f)Mbits/s' % ((TOT_BITS / t)/MEGA)
|
||||
print('Throughput: (%.2f)Mbits/s' % ((TOT_BITS / t)/MEGA))
|
||||
|
||||
while True:
|
||||
e = UDP_EchoClient(CLIENT_ADDRESS)
|
||||
|
|
|
@ -36,7 +36,7 @@ class UDPEchoClient_Handler(BaseRequestHandler):
|
|||
sys.stdout.write('.')
|
||||
stdout.flush()
|
||||
|
||||
class UDPEchoClientTest():
|
||||
class UDPEchoClientTest(object):
|
||||
|
||||
def send_server_ip_port(self, selftest, ip_address, port_no):
|
||||
c = selftest.mbed.serial_readline() # 'UDPCllient waiting for server IP and port...'
|
||||
|
|
|
@ -14,16 +14,20 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
"""
|
||||
from SocketServer import BaseRequestHandler, UDPServer
|
||||
from __future__ import print_function
|
||||
try:
|
||||
from SocketServer import BaseRequestHandler, UDPServer
|
||||
except ImportError:
|
||||
from socketserver import BaseRequestHandler, UDPServer
|
||||
from mbed_settings import SERVER_ADDRESS
|
||||
|
||||
class UDP_EchoHandler(BaseRequestHandler):
|
||||
def handle(self):
|
||||
data, socket = self.request
|
||||
print "client:", self.client_address
|
||||
print "data:", data
|
||||
print("client:", self.client_address)
|
||||
print("data:", data)
|
||||
socket.sendto(data, self.client_address)
|
||||
|
||||
server = UDPServer((SERVER_ADDRESS, 7195), UDP_EchoHandler)
|
||||
print "listening for connections"
|
||||
print("listening for connections")
|
||||
server.serve_forever()
|
||||
|
|
|
@ -22,7 +22,7 @@ import uuid
|
|||
from sys import stdout
|
||||
from socket import socket, AF_INET, SOCK_DGRAM
|
||||
|
||||
class UDPEchoServerTest():
|
||||
class UDPEchoServerTest(object):
|
||||
ECHO_SERVER_ADDRESS = ""
|
||||
ECHO_PORT = 0
|
||||
s = None # Socket
|
||||
|
|
|
@ -17,7 +17,7 @@ limitations under the License.
|
|||
|
||||
from time import time
|
||||
|
||||
class WaitusTest():
|
||||
class WaitusTest(object):
|
||||
""" This test is reading single characters from stdio
|
||||
and measures time between their occurrences.
|
||||
"""
|
||||
|
|
|
@ -20,7 +20,7 @@ import uuid
|
|||
import time
|
||||
from sys import stdout
|
||||
|
||||
class WFITest():
|
||||
class WFITest(object):
|
||||
|
||||
def test(self, selftest):
|
||||
c = selftest.mbed.serial_readline()
|
||||
|
|
|
@ -33,6 +33,7 @@ from collections import defaultdict
|
|||
from prettytable import PrettyTable, HEADER
|
||||
from jinja2 import FileSystemLoader, StrictUndefined
|
||||
from jinja2.environment import Environment
|
||||
from future.utils import with_metaclass
|
||||
|
||||
|
||||
# Be sure that the tools directory is in the search path
|
||||
|
@ -46,9 +47,8 @@ from tools.utils import (
|
|||
) # noqa: E402
|
||||
|
||||
|
||||
class _Parser(object):
|
||||
class _Parser(with_metaclass(ABCMeta, object)):
|
||||
"""Internal interface for parsing"""
|
||||
__metaclass__ = ABCMeta
|
||||
SECTIONS = ('.text', '.data', '.bss', '.heap', '.stack')
|
||||
MISC_FLASH_SECTIONS = ('.interrupts', '.flash_config')
|
||||
OTHER_SECTIONS = ('.interrupts_ram', '.init', '.ARM.extab',
|
||||
|
|
|
@ -16,9 +16,10 @@
|
|||
from __future__ import print_function, division, absolute_import
|
||||
|
||||
from abc import ABCMeta, abstractmethod
|
||||
from future.utils import with_metaclass
|
||||
|
||||
|
||||
class Notifier(object):
|
||||
class Notifier(with_metaclass(ABCMeta, object)):
|
||||
"""
|
||||
Notifiers send build system events to a front end or may implement a front
|
||||
end themselves, displaying warnings and errors for a user.
|
||||
|
@ -48,8 +49,6 @@ class Notifier(object):
|
|||
| communicate the binary location to the online IDE.
|
||||
"""
|
||||
|
||||
__metaclass__ = ABCMeta
|
||||
|
||||
@abstractmethod
|
||||
def notify(self, event):
|
||||
"""
|
||||
|
|
|
@ -103,14 +103,14 @@ if __name__ == '__main__':
|
|||
|
||||
# Print scrip version
|
||||
if opts.version:
|
||||
print parser.description
|
||||
print parser.epilog
|
||||
print "Version %d.%d"% get_version()
|
||||
print(parser.description)
|
||||
print(parser.epilog)
|
||||
print("Version %d.%d"% get_version())
|
||||
exit(0)
|
||||
|
||||
# Print summary / information about automation test status
|
||||
if opts.test_automation_report:
|
||||
print get_avail_tests_summary_table(platform_filter=opts.general_filter_regex)
|
||||
print(get_avail_tests_summary_table(platform_filter=opts.general_filter_regex))
|
||||
exit(0)
|
||||
|
||||
# Print summary / information about automation test status
|
||||
|
@ -122,15 +122,15 @@ if __name__ == '__main__':
|
|||
'host_test',
|
||||
'duration',
|
||||
'source_dir']
|
||||
print get_avail_tests_summary_table(cols=test_case_report_cols,
|
||||
print(get_avail_tests_summary_table(cols=test_case_report_cols,
|
||||
result_summary=False,
|
||||
join_delim='\n',
|
||||
platform_filter=opts.general_filter_regex)
|
||||
platform_filter=opts.general_filter_regex))
|
||||
exit(0)
|
||||
|
||||
# Only prints matrix of supported toolchains
|
||||
if opts.supported_toolchains:
|
||||
print mcu_toolchain_matrix(platform_filter=opts.general_filter_regex)
|
||||
print(mcu_toolchain_matrix(platform_filter=opts.general_filter_regex))
|
||||
exit(0)
|
||||
|
||||
test_spec = None
|
||||
|
@ -139,14 +139,14 @@ if __name__ == '__main__':
|
|||
if hasattr(opts, 'auto_detect') and opts.auto_detect:
|
||||
# If auto_detect attribute is present, we assume other auto-detection
|
||||
# parameters like 'toolchains_filter' are also set.
|
||||
print "MBEDLS: Detecting connected mbed-enabled devices... "
|
||||
print("MBEDLS: Detecting connected mbed-enabled devices... ")
|
||||
|
||||
MUTs = get_autodetected_MUTS_list()
|
||||
|
||||
for mut in MUTs.values():
|
||||
print "MBEDLS: Detected %s, port: %s, mounted: %s"% (mut['mcu_unique'] if 'mcu_unique' in mut else mut['mcu'],
|
||||
print("MBEDLS: Detected %s, port: %s, mounted: %s"% (mut['mcu_unique'] if 'mcu_unique' in mut else mut['mcu'],
|
||||
mut['port'],
|
||||
mut['disk'])
|
||||
mut['disk']))
|
||||
|
||||
# Set up parameters for test specification filter function (we need to set toolchains per target here)
|
||||
use_default_toolchain = 'default' in opts.toolchains_filter if opts.toolchains_filter is not None else True
|
||||
|
@ -179,13 +179,13 @@ if __name__ == '__main__':
|
|||
exit(-1)
|
||||
|
||||
if opts.verbose_test_configuration_only:
|
||||
print "MUTs configuration in %s:" % ('auto-detected' if opts.auto_detect else opts.muts_spec_filename)
|
||||
print("MUTs configuration in %s:" % ('auto-detected' if opts.auto_detect else opts.muts_spec_filename))
|
||||
if MUTs:
|
||||
print print_muts_configuration_from_json(MUTs, platform_filter=opts.general_filter_regex)
|
||||
print
|
||||
print "Test specification in %s:" % ('auto-detected' if opts.auto_detect else opts.test_spec_filename)
|
||||
print(print_muts_configuration_from_json(MUTs, platform_filter=opts.general_filter_regex))
|
||||
print()
|
||||
print("Test specification in %s:" % ('auto-detected' if opts.auto_detect else opts.test_spec_filename))
|
||||
if test_spec:
|
||||
print print_test_configuration_from_json(test_spec)
|
||||
print(print_test_configuration_from_json(test_spec))
|
||||
exit(0)
|
||||
|
||||
if get_module_avail('mbed_lstools'):
|
||||
|
@ -201,16 +201,16 @@ if __name__ == '__main__':
|
|||
report_exporter = ReportExporter(ResultExporterType.JUNIT_OPER)
|
||||
report_exporter.report_to_file(test_results, opts.report_junit_file_name)
|
||||
else:
|
||||
print "Unknown interoperability test scope name: '%s'" % (opts.operability_checks)
|
||||
print "Available test scopes: %s" % (','.join(["'%s'" % n for n in test_scope]))
|
||||
print("Unknown interoperability test scope name: '%s'" % (opts.operability_checks))
|
||||
print("Available test scopes: %s" % (','.join(["'%s'" % n for n in test_scope])))
|
||||
|
||||
exit(0)
|
||||
|
||||
# Verbose test specification and MUTs configuration
|
||||
if MUTs and opts.verbose:
|
||||
print print_muts_configuration_from_json(MUTs)
|
||||
print(print_muts_configuration_from_json(MUTs))
|
||||
if test_spec and opts.verbose:
|
||||
print print_test_configuration_from_json(test_spec)
|
||||
print(print_test_configuration_from_json(test_spec))
|
||||
|
||||
if opts.only_build_tests:
|
||||
# We are skipping testing phase, and suppress summary
|
||||
|
|
|
@ -33,7 +33,7 @@ def format_number(number, width):
|
|||
# convert to string
|
||||
line = format(number, '0%dx' % (width))
|
||||
if len(line) > width:
|
||||
print "[ERROR] 0x%s cannot fit in width %d" % (line, width)
|
||||
print("[ERROR] 0x%s cannot fit in width %d" % (line, width))
|
||||
sys.exit(-1)
|
||||
# cut string to list & reverse
|
||||
line = [line[i:i+2] for i in range(0, len(line), 2)]
|
||||
|
@ -58,7 +58,7 @@ def write_padding_bytes(output_name, size):
|
|||
current_size = os.stat(output_name).st_size
|
||||
padcount = size - current_size
|
||||
if padcount < 0:
|
||||
print "[ERROR] image is larger than expected size"
|
||||
print("[ERROR] image is larger than expected size")
|
||||
sys.exit(-1)
|
||||
output = open(output_name, "ab")
|
||||
output.write('\377' * padcount)
|
||||
|
@ -96,7 +96,7 @@ def find_symbol(toolchain, mapfile, symbol):
|
|||
ret = match.group("addr")
|
||||
|
||||
if not ret:
|
||||
print "[ERROR] cannot find the address of symbol " + symbol
|
||||
print("[ERROR] cannot find the address of symbol " + symbol)
|
||||
return 0
|
||||
|
||||
return int(ret,16) | 1
|
||||
|
|
|
@ -1274,7 +1274,7 @@ if args.list:
|
|||
for f in fnmatch.filter(os.listdir(cubemxdirMCU), "STM32*.xml"):
|
||||
print(f)
|
||||
FileCount += 1
|
||||
print
|
||||
print()
|
||||
print("%i available xml files description" % FileCount)
|
||||
quit()
|
||||
|
||||
|
@ -1287,7 +1287,7 @@ if args.boards:
|
|||
NucleoFileCount += 1
|
||||
elif "Discovery" in f:
|
||||
DiscoFileCount += 1
|
||||
print
|
||||
print()
|
||||
print("%2i available Nucleo files description" % NucleoFileCount)
|
||||
print("%2i available Disco files description" % DiscoFileCount)
|
||||
quit()
|
||||
|
|
|
@ -646,7 +646,7 @@ class MCU_NRF51Code(object):
|
|||
binh.write_hex_file(fileout, write_start_addr=False)
|
||||
|
||||
|
||||
class NCS36510TargetCode:
|
||||
class NCS36510TargetCode(object):
|
||||
@staticmethod
|
||||
def ncs36510_addfib(t_self, resources, elf, binf):
|
||||
from tools.targets.NCS import add_fib_at_start
|
||||
|
@ -654,7 +654,7 @@ class NCS36510TargetCode:
|
|||
add_fib_at_start(binf[:-4])
|
||||
|
||||
|
||||
class RTL8195ACode:
|
||||
class RTL8195ACode(object):
|
||||
"""RTL8195A Hooks"""
|
||||
@staticmethod
|
||||
def binary_hook(t_self, resources, elf, binf):
|
||||
|
@ -662,7 +662,7 @@ class RTL8195ACode:
|
|||
rtl8195a_elf2bin(t_self, elf, binf)
|
||||
|
||||
|
||||
class PSOC6Code:
|
||||
class PSOC6Code(object):
|
||||
@staticmethod
|
||||
def complete(t_self, resources, elf, binf):
|
||||
from tools.targets.PSOC6 import complete as psoc6_complete
|
||||
|
@ -694,7 +694,7 @@ class PSOC6Code:
|
|||
from tools.targets.PSOC6 import sign_image as psoc6_sign_image
|
||||
psoc6_sign_image(t_self, binf)
|
||||
|
||||
class ArmMuscaA1Code:
|
||||
class ArmMuscaA1Code(object):
|
||||
"""Musca-A1 Hooks"""
|
||||
@staticmethod
|
||||
def binary_hook(t_self, resources, elf, binf):
|
||||
|
@ -710,7 +710,7 @@ class ArmMuscaA1Code:
|
|||
musca_tfm_bin(t_self, binf, secure_bin)
|
||||
|
||||
|
||||
class LPC55S69Code:
|
||||
class LPC55S69Code(object):
|
||||
"""LPC55S69 Hooks"""
|
||||
@staticmethod
|
||||
def binary_hook(t_self, resources, elf, binf):
|
||||
|
@ -725,7 +725,7 @@ class LPC55S69Code:
|
|||
)
|
||||
lpc55s69_complete(t_self, binf, secure_bin)
|
||||
|
||||
class M2351Code:
|
||||
class M2351Code(object):
|
||||
"""M2351 Hooks"""
|
||||
@staticmethod
|
||||
def merge_secure(t_self, resources, ns_elf, ns_hex):
|
||||
|
|
|
@ -247,14 +247,14 @@ def subcommand(name, *args, **kwargs):
|
|||
choices=TARGET_MAP.keys(), type=str.upper))
|
||||
def targets_cmd(mcus=[]):
|
||||
"""Find and print errors about specific targets"""
|
||||
print dump_all([check_hierarchy(TARGET_MAP[m]) for m in mcus],
|
||||
default_flow_style=False)
|
||||
print(dump_all([check_hierarchy(TARGET_MAP[m]) for m in mcus],
|
||||
default_flow_style=False))
|
||||
|
||||
@subcommand("all-targets")
|
||||
def all_targets_cmd():
|
||||
"""Print all errors about all parts"""
|
||||
print dump_all([check_hierarchy(m) for m in TARGET_MAP.values()],
|
||||
default_flow_style=False)
|
||||
print(dump_all([check_hierarchy(m) for m in list(TARGET_MAP.values())],
|
||||
default_flow_style=False))
|
||||
|
||||
@subcommand("orphans")
|
||||
def orphans_cmd():
|
||||
|
@ -265,7 +265,7 @@ def orphans_cmd():
|
|||
if name in orphans:
|
||||
orphans.remove(name)
|
||||
if orphans:
|
||||
print dump_all([orphans], default_flow_style=False)
|
||||
print(dump_all([orphans], default_flow_style=False))
|
||||
return len(orphans)
|
||||
|
||||
def main():
|
||||
|
|
|
@ -312,7 +312,7 @@ def main():
|
|||
|
||||
# Print memory map summary on screen
|
||||
if build_report:
|
||||
print
|
||||
print()
|
||||
print(print_build_memory_usage(build_report))
|
||||
|
||||
print_report_exporter = ReportExporter(ResultExporterType.PRINT, package="build")
|
||||
|
|
|
@ -20,7 +20,7 @@ from mock import patch
|
|||
from tools.detect_targets import get_interface_version
|
||||
|
||||
|
||||
class MbedLsToolsMock():
|
||||
class MbedLsToolsMock(object):
|
||||
"""
|
||||
Mock of mbedls tools
|
||||
"""
|
||||
|
|
|
@ -1461,11 +1461,11 @@ def get_avail_tests_summary_table(cols=None, result_summary=True, join_delim=','
|
|||
def progress_bar(percent_progress, saturation=0):
|
||||
""" This function creates progress bar with optional simple saturation mark
|
||||
"""
|
||||
step = int(percent_progress / 2) # Scale by to (scale: 1 - 50)
|
||||
step = percent_progress // 2 # Scale by to (scale: 1 - 50)
|
||||
str_progress = '#' * step + '.' * int(50 - step)
|
||||
c = '!' if str_progress[38] == '.' else '|'
|
||||
if saturation > 0:
|
||||
saturation = saturation / 2
|
||||
saturation = saturation // 2
|
||||
str_progress = str_progress[:saturation] + c + str_progress[saturation:]
|
||||
return str_progress
|
||||
|
||||
|
@ -1517,7 +1517,7 @@ def singletest_in_cli_mode(single_test):
|
|||
# Returns True if no build failures of the test projects or their dependencies
|
||||
return status
|
||||
|
||||
class TestLogger():
|
||||
class TestLogger(object):
|
||||
""" Super-class for logging and printing ongoing events for test suite pass
|
||||
"""
|
||||
def __init__(self, store_log=True):
|
||||
|
|
|
@ -29,7 +29,7 @@ ResultExporterType = construct_enum(HTML='Html_Exporter',
|
|||
PRINT='Print_Exporter')
|
||||
|
||||
|
||||
class ReportExporter():
|
||||
class ReportExporter(object):
|
||||
""" Class exports extended test result Python data structure to
|
||||
different formats like HTML, JUnit XML.
|
||||
|
||||
|
|
|
@ -14,6 +14,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
"""
|
||||
from past.builtins import cmp
|
||||
from tools.paths import *
|
||||
from argparse import ArgumentTypeError
|
||||
from tools.utils import columnate
|
||||
|
@ -857,7 +858,7 @@ except:
|
|||
TEST_GROUPS = {}
|
||||
GROUPS.update(TEST_GROUPS)
|
||||
|
||||
class Test:
|
||||
class Test(object):
|
||||
DEFAULTS = {
|
||||
#'mcu': None,
|
||||
'description': None,
|
||||
|
|
|
@ -49,6 +49,7 @@ from ..config import (ConfigException, RAM_ALL_MEMORIES, ROM_ALL_MEMORIES)
|
|||
from ..regions import (UPDATE_WHITELIST, merge_region_list)
|
||||
from ..settings import COMPARE_FIXED
|
||||
from ..settings import ARM_PATH, ARMC6_PATH, GCC_ARM_PATH, IAR_PATH
|
||||
from future.utils import with_metaclass
|
||||
|
||||
|
||||
TOOLCHAIN_PATHS = {
|
||||
|
@ -109,7 +110,7 @@ CORTEX_SYMBOLS = {
|
|||
}
|
||||
|
||||
|
||||
class mbedToolchain:
|
||||
class mbedToolchain(with_metaclass(ABCMeta, object)):
|
||||
OFFICIALLY_SUPPORTED = False
|
||||
|
||||
# Verbose logging
|
||||
|
@ -127,8 +128,6 @@ class mbedToolchain:
|
|||
|
||||
PROFILE_FILE_NAME = ".profile"
|
||||
|
||||
__metaclass__ = ABCMeta
|
||||
|
||||
profile_template = {'common': [], 'c': [], 'cxx': [], 'asm': [], 'ld': []}
|
||||
|
||||
def __init__(self, target, notify=None, macros=None, build_profile=None,
|
||||
|
|
Loading…
Reference in New Issue