summaryrefslogtreecommitdiff
path: root/tests/net_hosted
diff options
context:
space:
mode:
Diffstat (limited to 'tests/net_hosted')
-rw-r--r--tests/net_hosted/README11
-rw-r--r--tests/net_hosted/accept_nonblock.py16
-rw-r--r--tests/net_hosted/accept_nonblock.py.exp1
-rw-r--r--tests/net_hosted/accept_timeout.py22
-rw-r--r--tests/net_hosted/accept_timeout.py.exp1
-rw-r--r--tests/net_hosted/connect_nonblock.py20
-rw-r--r--tests/net_hosted/connect_nonblock.py.exp1
-rw-r--r--tests/net_hosted/ssl_getpeercert.py21
-rw-r--r--tests/net_hosted/ssl_getpeercert.py.exp1
9 files changed, 94 insertions, 0 deletions
diff --git a/tests/net_hosted/README b/tests/net_hosted/README
new file mode 100644
index 000000000..724dd6158
--- /dev/null
+++ b/tests/net_hosted/README
@@ -0,0 +1,11 @@
+This directory contains network tests which require just "peer to peer"
+network connection between test host and device under test, instead of
+full Internet connection.
+
+Note that setup for these tests and tests themselves are WIP, and may
+not yet fully correspond to the functional specification above.
+
+So far, these tests are not run as part of the main testsuite and need
+to be run seperately (from the main test/ directory):
+
+ ./run-tests net_hosted/*.py
diff --git a/tests/net_hosted/accept_nonblock.py b/tests/net_hosted/accept_nonblock.py
new file mode 100644
index 000000000..56f3288e2
--- /dev/null
+++ b/tests/net_hosted/accept_nonblock.py
@@ -0,0 +1,16 @@
+# test that socket.accept() on a non-blocking socket raises EAGAIN
+
+try:
+ import usocket as socket
+except:
+ import socket
+
+s = socket.socket()
+s.bind(socket.getaddrinfo('127.0.0.1', 8123)[0][-1])
+s.setblocking(False)
+s.listen(1)
+try:
+ s.accept()
+except OSError as er:
+ print(er.args[0] == 11) # 11 is EAGAIN
+s.close()
diff --git a/tests/net_hosted/accept_nonblock.py.exp b/tests/net_hosted/accept_nonblock.py.exp
new file mode 100644
index 000000000..0ca95142b
--- /dev/null
+++ b/tests/net_hosted/accept_nonblock.py.exp
@@ -0,0 +1 @@
+True
diff --git a/tests/net_hosted/accept_timeout.py b/tests/net_hosted/accept_timeout.py
new file mode 100644
index 000000000..44b3b8c7c
--- /dev/null
+++ b/tests/net_hosted/accept_timeout.py
@@ -0,0 +1,22 @@
+# test that socket.accept() on a socket with timeout raises ETIMEDOUT
+
+try:
+ import usocket as socket
+except:
+ import socket
+
+try:
+ socket.socket.settimeout
+except AttributeError:
+ print('SKIP')
+ raise SystemExit
+
+s = socket.socket()
+s.bind(socket.getaddrinfo('127.0.0.1', 8123)[0][-1])
+s.settimeout(1)
+s.listen(1)
+try:
+ s.accept()
+except OSError as er:
+ print(er.args[0] in (110, 'timed out')) # 110 is ETIMEDOUT; CPython uses a string
+s.close()
diff --git a/tests/net_hosted/accept_timeout.py.exp b/tests/net_hosted/accept_timeout.py.exp
new file mode 100644
index 000000000..0ca95142b
--- /dev/null
+++ b/tests/net_hosted/accept_timeout.py.exp
@@ -0,0 +1 @@
+True
diff --git a/tests/net_hosted/connect_nonblock.py b/tests/net_hosted/connect_nonblock.py
new file mode 100644
index 000000000..6479978be
--- /dev/null
+++ b/tests/net_hosted/connect_nonblock.py
@@ -0,0 +1,20 @@
+# test that socket.connect() on a non-blocking socket raises EINPROGRESS
+
+try:
+ import usocket as socket
+except:
+ import socket
+
+
+def test(peer_addr):
+ s = socket.socket()
+ s.setblocking(False)
+ try:
+ s.connect(peer_addr)
+ except OSError as er:
+ print(er.args[0] == 115) # 115 is EINPROGRESS
+ s.close()
+
+
+if __name__ == "__main__":
+ test(socket.getaddrinfo('micropython.org', 80)[0][-1])
diff --git a/tests/net_hosted/connect_nonblock.py.exp b/tests/net_hosted/connect_nonblock.py.exp
new file mode 100644
index 000000000..0ca95142b
--- /dev/null
+++ b/tests/net_hosted/connect_nonblock.py.exp
@@ -0,0 +1 @@
+True
diff --git a/tests/net_hosted/ssl_getpeercert.py b/tests/net_hosted/ssl_getpeercert.py
new file mode 100644
index 000000000..e265c830d
--- /dev/null
+++ b/tests/net_hosted/ssl_getpeercert.py
@@ -0,0 +1,21 @@
+# test ssl.getpeercert() method
+
+try:
+ import usocket as socket
+ import ussl as ssl
+except:
+ import socket
+ import ssl
+
+
+def test(peer_addr):
+ s = socket.socket()
+ s.connect(peer_addr)
+ s = ssl.wrap_socket(s)
+ cert = s.getpeercert(True)
+ print(type(cert), len(cert) > 100)
+ s.close()
+
+
+if __name__ == "__main__":
+ test(socket.getaddrinfo('micropython.org', 443)[0][-1])
diff --git a/tests/net_hosted/ssl_getpeercert.py.exp b/tests/net_hosted/ssl_getpeercert.py.exp
new file mode 100644
index 000000000..ff7ef5adf
--- /dev/null
+++ b/tests/net_hosted/ssl_getpeercert.py.exp
@@ -0,0 +1 @@
+<class 'bytes'> True