diff --git a/cache_test.py b/cache_test.py
index 92c82d6..e105f91 100644
--- a/cache_test.py
+++ b/cache_test.py
@@ -1,8 +1,9 @@
from queue import Queue
import random
-import socket
import threading
import unittest
+import time
+
from coapclient import HelperClient
from coapforwardproxy import CoAPForwardProxy
from coapserver import CoAPServer
@@ -10,8 +11,6 @@ from coapthon import defines
from coapthon.messages.option import Option
from coapthon.messages.request import Request
from coapthon.messages.response import Response
-from coapthon.serializer import Serializer
-import time
__author__ = 'Emilio Vallati'
__version__ = "1.0"
@@ -459,7 +458,6 @@ class Tests(unittest.TestCase):
expected.token = None
expected.payload = None
expected.etag = str(1)
- expected.location_path = "etag"
exchange3 = (req3, expected)
diff --git a/coapthon/defines.py b/coapthon/defines.py
index 094d001..09fff43 100644
--- a/coapthon/defines.py
+++ b/coapthon/defines.py
@@ -1,5 +1,6 @@
+# -*- coding: utf-8 -*-
+
import collections
-import array
import struct
__author__ = 'Giacomo Tanganelli'
@@ -167,7 +168,7 @@ class OptionRegistry(object):
:return: option flags
:rtype: 3-tuple (critical, unsafe, no-cache)
"""
- opt_bytes = array.array('B', '\0\0')
+ opt_bytes = bytearray(2)
if option_num < 256:
s = struct.Struct("!B")
s.pack_into(opt_bytes, 0, option_num)
diff --git a/coapthon/forward_proxy/coap.py b/coapthon/forward_proxy/coap.py
index 8d29f8d..d974872 100644
--- a/coapthon/forward_proxy/coap.py
+++ b/coapthon/forward_proxy/coap.py
@@ -4,8 +4,6 @@ import socket
import struct
import threading
-import os
-
from coapthon import defines
from coapthon.layers.blocklayer import BlockLayer
from coapthon.layers.cachelayer import CacheLayer
diff --git a/coapthon/layers/resourcelayer.py b/coapthon/layers/resourcelayer.py
index 41b5b81..863d69f 100644
--- a/coapthon/layers/resourcelayer.py
+++ b/coapthon/layers/resourcelayer.py
@@ -105,10 +105,12 @@ class ResourceLayer(object):
if resource.etag is not None:
transaction.response.etag = resource.etag
- transaction.response.location_path = resource.path
+ if transaction.response.code == defines.Codes.CREATED.number:
+ # Only on CREATED according to RFC 7252 Chapter 5.8.2 POST
+ transaction.response.location_path = resource.path
- if resource.location_query is not None and len(resource.location_query) > 0:
- transaction.response.location_query = resource.location_query
+ if resource.location_query is not None and len(resource.location_query) > 0:
+ transaction.response.location_query = resource.location_query
transaction.response.payload = None
diff --git a/coapthon/reverse_proxy/coap.py b/coapthon/reverse_proxy/coap.py
index e74346b..fbb7d26 100644
--- a/coapthon/reverse_proxy/coap.py
+++ b/coapthon/reverse_proxy/coap.py
@@ -4,7 +4,6 @@ import socket
import struct
import threading
import xml.etree.ElementTree as ElementTree
-
import os
import re
@@ -173,7 +172,8 @@ class CoAP(object):
host, port = response.source
if response.code == defines.Codes.CONTENT.number:
- resource = Resource('server', self, visible=True, observable=False, allow_children=True)
+ resource = RemoteResource('server', (host, port), "/",
+ coap_server=self, visible=True, observable=False, allow_children=True)
self.add_resource(name, resource)
self._mapping[name] = (host, port)
self.parse_core_link_format(response.payload, name, (host, port))
@@ -209,8 +209,8 @@ class CoAP(object):
dict_att[a[0]] = a[0]
link_format = link_format[result.end(0) + 1:]
# TODO handle observing
- resource = RemoteResource('server', remote_server, path, coap_server=self, visible=True, observable=False,
- allow_children=True)
+ resource = RemoteResource('server', remote_server, path,
+ coap_server=self, visible=True, observable=False, allow_children=True)
resource.attributes = dict_att
self.add_resource(base_path + "/" + path, resource)
diff --git a/coapthon/serializer.py b/coapthon/serializer.py
index 2d167d5..a92726f 100644
--- a/coapthon/serializer.py
+++ b/coapthon/serializer.py
@@ -1,6 +1,7 @@
import logging
import struct
import ctypes
+
from coapthon.messages.request import Request
from coapthon.messages.response import Response
from coapthon.messages.option import Option
@@ -262,28 +263,6 @@ class Serializer(object):
"""
return defines.RESPONSE_CODE_LOWER_BOUND <= code <= defines.RESPONSE_CODE_UPPER_BOUND
- @staticmethod
- def read_option_value_from_nibble(nibble, pos, values):
- """
- Calculates the value used in the extended option fields.
-
- :param nibble: the 4-bit option header value.
- :return: the value calculated from the nibble and the extended option value.
- """
- if nibble <= 12:
- return nibble, pos
- elif nibble == 13:
- tmp = struct.unpack("!B", values[pos].to_bytes(1, "big"))[0] + 13
- pos += 1
- return tmp, pos
- elif nibble == 14:
- s = struct.Struct("!H")
- tmp = s.unpack_from(values[pos:].to_bytes(2, "big"))[0] + 269
- pos += 2
- return tmp, pos
- else:
- raise AttributeError("Unsupported option nibble " + str(nibble))
-
@staticmethod
def read_option_value_len_from_byte(byte, pos, values):
"""
@@ -303,7 +282,7 @@ class Serializer(object):
pos += 1
elif h_nibble == 14:
s = struct.Struct("!H")
- value = s.unpack_from(values[pos:].to_bytes(2, "big"))[0] + 269
+ value = s.unpack_from(values[pos:pos+2])[0] + 269
pos += 2
else:
raise AttributeError("Unsupported option number nibble " + str(h_nibble))
@@ -315,7 +294,7 @@ class Serializer(object):
pos += 1
elif l_nibble == 14:
s = struct.Struct("!H")
- length = s.unpack_from(values[pos:].to_bytes(2, "big"))[0] + 269
+ length = s.unpack_from(values[pos:pos+2])[0] + 269
pos += 2
else:
raise AttributeError("Unsupported option length nibble " + str(l_nibble))
diff --git a/coverage_test.py b/coverage_test.py
index 94e8c1c..6f6b6c0 100644
--- a/coverage_test.py
+++ b/coverage_test.py
@@ -1,14 +1,14 @@
-import os
-import logging.config
+# -*- coding: utf-8 -*-
+
from queue import Queue
import random
import socket
import threading
import unittest
+
from coapclient import HelperClient
from coapserver import CoAPServer
from coapthon import defines
-from coapthon.utils import create_logging
from coapthon.messages.message import Message
from coapthon.messages.option import Option
from coapthon.messages.request import Request
@@ -60,10 +60,6 @@ PAYLOAD = "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam no
"erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd " \
"gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet."
-if not os.path.isfile("logging.conf"):
- create_logging()
-logging.config.fileConfig("logging.conf", disable_existing_loggers=False)
-
class Tests(unittest.TestCase):
@@ -271,88 +267,86 @@ class Tests(unittest.TestCase):
self.current_mid += 1
self._test_with_client([exchange1, exchange2, exchange3, exchange4])
- # def test_separate(self):
- # print "TEST_SEPARATE"
- # path = "/separate"
- # req = Request()
- # req.code = defines.Codes.GET.number
- # req.uri_path = path
- # req.type = defines.Types["CON"]
- # req._mid = self.current_mid
- # req.destination = self.server_address
- #
- # expected = Response()
- # expected.type = defines.Types["CON"]
- # expected._mid = None
- # expected.code = defines.Codes.CONTENT.number
- # expected.token = None
- # expected.max_age = 60
- #
- # exchange1 = (req, expected)
- #
- # self.current_mid += 1
- #
- # req = Request()
- # req.code = defines.Codes.POST.number
- # req.uri_path = path
- # req.type = defines.Types["CON"]
- # req._mid = self.current_mid
- # req.destination = self.server_address
- # req.payload = "POST"
- #
- # expected = Response()
- # expected.type = defines.Types["CON"]
- # expected._mid = None
- # expected.code = defines.Codes.CHANGED.number
- # expected.token = None
- # expected.options = None
- #
- # exchange2 = (req, expected)
- #
- # self.current_mid += 1
- #
- # req = Request()
- # req.code = defines.Codes.PUT.number
- # req.uri_path = path
- # req.type = defines.Types["CON"]
- # req._mid = self.current_mid
- # req.destination = self.server_address
- # req.payload = "PUT"
- #
- # expected = Response()
- # expected.type = defines.Types["CON"]
- # expected._mid = None
- # expected.code = defines.Codes.CHANGED.number
- # expected.token = None
- # expected.options = None
- #
- # exchange3 = (req, expected)
- #
- # self.current_mid += 1
- #
- # req = Request()
- # req.code = defines.Codes.DELETE.number
- # req.uri_path = path
- # req.type = defines.Types["CON"]
- # req._mid = self.current_mid
- # req.destination = self.server_address
- #
- # expected = Response()
- # expected.type = defines.Types["CON"]
- # expected._mid = None
- # expected.code = defines.Codes.DELETED.number
- # expected.token = None
- #
- # exchange4 = (req, expected)
- #
- # self.current_mid += 1
- # self._test_with_client([exchange1, exchange2, exchange3, exchange4])
+ def test_separate(self):
+ print("TEST_SEPARATE")
+ path = "/separate"
+
+ req = Request()
+ req.code = defines.Codes.GET.number
+ req.uri_path = path
+ req.type = defines.Types["CON"]
+ req._mid = self.current_mid
+ req.destination = self.server_address
+
+ expected = Response()
+ expected.type = defines.Types["CON"]
+ expected._mid = None
+ expected.code = defines.Codes.CONTENT.number
+ expected.token = None
+ expected.max_age = 60
+
+ exchange1 = (req, expected)
+ self.current_mid += 1
+
+ req = Request()
+ req.code = defines.Codes.POST.number
+ req.uri_path = path
+ req.type = defines.Types["CON"]
+ req._mid = self.current_mid
+ req.destination = self.server_address
+ req.payload = "POST"
+
+ expected = Response()
+ expected.type = defines.Types["CON"]
+ expected._mid = None
+ expected.code = defines.Codes.CHANGED.number
+ expected.token = None
+ expected.options = None
+
+ exchange2 = (req, expected)
+ self.current_mid += 1
+
+ req = Request()
+ req.code = defines.Codes.PUT.number
+ req.uri_path = path
+ req.type = defines.Types["CON"]
+ req._mid = self.current_mid
+ req.destination = self.server_address
+ req.payload = "PUT"
+
+ expected = Response()
+ expected.type = defines.Types["CON"]
+ expected._mid = None
+ expected.code = defines.Codes.CHANGED.number
+ expected.token = None
+ expected.options = None
+
+ exchange3 = (req, expected)
+ self.current_mid += 1
+
+ req = Request()
+ req.code = defines.Codes.DELETE.number
+ req.uri_path = path
+ req.type = defines.Types["CON"]
+ req._mid = self.current_mid
+ req.destination = self.server_address
+
+ expected = Response()
+ expected.type = defines.Types["CON"]
+ expected._mid = None
+ expected.code = defines.Codes.DELETED.number
+ expected.token = None
+
+ exchange4 = (req, expected)
+ self.current_mid += 1
+
+ self._test_with_client([exchange1, exchange2, exchange3, exchange4])
def test_post(self):
print("TEST_POST")
path = "/storage/new_res?id=1"
- req = Request()
+ req = Request()
req.code = defines.Codes.POST.number
req.uri_path = path
req.type = defines.Types["CON"]
@@ -743,7 +737,8 @@ class Tests(unittest.TestCase):
exchange8 = (req, expected)
self.current_mid += 1
- self._test_plugtest([exchange0, exchange1, exchange2, exchange3, exchange4, exchange5, exchange6, exchange7, exchange8])
+ self._test_plugtest([exchange0, exchange1, exchange2, exchange3, exchange4,
+ exchange5, exchange6, exchange7, exchange8])
def test_post_block_big(self):
print("TEST_POST_BLOCK_BIG")
@@ -884,7 +879,6 @@ class Tests(unittest.TestCase):
expected.code = defines.Codes.CHANGED.number
expected.token = None
expected.payload = None
- expected.location_path = "big"
exchange7 = (req, expected)
self.current_mid += 1
@@ -969,75 +963,74 @@ class Tests(unittest.TestCase):
self._test_with_client([exchange1, exchange2, exchange3])
- # def test_long_options(self):
- # """
- # Test processing of options with extended length
- # """
- # print("TEST_LONG_OPTIONS")
- #
- # path = "/storage/"
- # req = Request()
- # req.code = defines.Codes.GET.number
- # req.uri_path = path
- # req.type = defines.Types["CON"]
- # req._mid = self.current_mid
- # req.destination = self.server_address
- # option = Option()
- # # This option should be silently ignored by the server
- # # since it is not critical
- # option.number = defines.OptionRegistry.RM_MESSAGE_SWITCHING.number
- # option.value = "\1\1\1\1\0\0"
- # options = req.options
- # req.add_option(option)
- # req.payload = "test"
- #
- # expected = Response()
- # expected.type = defines.Types["ACK"]
- # expected.code = defines.Codes.CONTENT.number
- # expected.token = None
- # expected.payload = None
- #
- # exchange1 = (req, expected)
- # self.current_mid += 1
- #
- # self._test_with_client([exchange1])
- #
- # # This option (244) should be silently ignored by the server
- # req = ("\x40\x01\x01\x01\xd6\xe7\x01\x01\x01\x01\x00\x00", self.server_address)
- #
- # expected = Response()
- # expected.type = defines.Types["ACK"]
- # expected._mid = None
- # expected.code = defines.Codes.NOT_FOUND.number
- # expected.token = None
- # expected.payload = None
- #
- # exchange21 = (req, expected)
- # self.current_mid += 1
- #
- # # This option (245) should cause BAD REQUEST, as unrecognizable critical
- # req = ("\x40\x01\x01\x01\xd6\xe8\x01\x01\x01\x01\x00\x00", self.server_address)
- #
- # expected = Response()
- # expected.type = defines.Types["RST"]
- # expected._mid = None
- # expected.code = defines.Codes.BAD_REQUEST.number
- #
- # exchange22 = (req, expected)
- # self.current_mid += 1
- #
- # # This option (65525) should cause BAD REQUEST, as unrecognizable critical
- # req = ("\x40\x01\x01\x01\xe6\xfe\xe8\x01\x01\x01\x01\x00\x00", self.server_address)
- #
- # expected = Response()
- # expected.type = defines.Types["RST"]
- # expected._mid = None
- # expected.code = defines.Codes.BAD_REQUEST.number
- #
- # exchange23 = (req, expected)
- # self.current_mid += 1
- #
- # self._test_datagram([exchange21, exchange22, exchange23])
+ def test_long_options(self):
+ """
+ Test processing of options with extended length
+ """
+ print("TEST_LONG_OPTIONS")
+ path = "/storage/"
+
+ req = Request()
+ req.code = defines.Codes.GET.number
+ req.uri_path = path
+ req.type = defines.Types["CON"]
+ req._mid = self.current_mid
+ req.destination = self.server_address
+ option = Option()
+ # This option should be silently ignored by the server
+ # since it is not critical
+ option.number = defines.OptionRegistry.RM_MESSAGE_SWITCHING.number
+ option.value = b'\1\1\1\1\0\0'
+ req.add_option(option)
+ req.payload = "test"
+
+ expected = Response()
+ expected.type = defines.Types["ACK"]
+ expected.code = defines.Codes.CONTENT.number
+ expected.token = None
+ expected.payload = None
+
+ exchange1 = (req, expected)
+ self.current_mid += 1
+
+ self._test_with_client([exchange1])
+
+ # This option (244) should be silently ignored by the server
+ req = (b'\x40\x01\x01\x01\xd6\xe7\x01\x01\x01\x01\x00\x00', self.server_address)
+
+ expected = Response()
+ expected.type = defines.Types["ACK"]
+ expected._mid = None
+ expected.code = defines.Codes.NOT_FOUND.number
+ expected.token = None
+ expected.payload = None
+
+ exchange21 = (req, expected)
+ self.current_mid += 1
+
+ # This option (245) should cause BAD REQUEST, as unrecognizable critical
+ req = (b'\x40\x01\x01\x01\xd6\xe8\x01\x01\x01\x01\x00\x00', self.server_address)
+
+ expected = Response()
+ expected.type = defines.Types["RST"]
+ expected._mid = None
+ expected.code = defines.Codes.BAD_REQUEST.number
+
+ exchange22 = (req, expected)
+ self.current_mid += 1
+
+ # This option (65525) should cause BAD REQUEST, as unrecognizable critical
+ req = (b'\x40\x01\x01\x01\xe6\xfe\xe8\x01\x01\x01\x01\x00\x00', self.server_address)
+
+ expected = Response()
+ expected.type = defines.Types["RST"]
+ expected._mid = None
+ expected.code = defines.Codes.BAD_REQUEST.number
+
+ exchange23 = (req, expected)
+ self.current_mid += 1
+
+ self._test_datagram([exchange21, exchange22, exchange23])
def test_content_type(self):
print("TEST_CONTENT_TYPE")
@@ -1226,9 +1219,8 @@ class Tests(unittest.TestCase):
exchange10 = (req, expected)
self.current_mid += 1
- # self._test_with_client([exchange1, exchange2, exchange3, exchange4, exchange5, exchange6, exchange7,
- # exchange8, exchange9, exchange10])
- self._test_with_client([exchange1, exchange2, exchange3, exchange4, exchange5])
+ self._test_with_client([exchange1, exchange2, exchange3, exchange4, exchange5,
+ exchange6, exchange7, exchange8, exchange9, exchange10])
def test_ETAG(self):
print("TEST_ETAG")
@@ -1266,7 +1258,6 @@ class Tests(unittest.TestCase):
expected.code = defines.Codes.CHANGED.number
expected.token = None
expected.payload = None
- expected.location_path = path
expected.etag = "1"
exchange2 = (req, expected)
@@ -1329,7 +1320,7 @@ class Tests(unittest.TestCase):
expected.code = defines.Codes.CREATED.number
expected.token = None
expected.payload = None
- expected.location_path = path
+ expected.location_path = "child"
exchange1 = (req, expected)
self.current_mid += 1
@@ -1464,60 +1455,60 @@ class Tests(unittest.TestCase):
self._test_with_client([exchange1, exchange2, exchange3, exchange4])
- # def test_invalid(self):
- # print("TEST_INVALID")
- #
- # # version
- # req = ("\x00\x01\x8c\xda", self.server_address)
- #
- # expected = Response()
- # expected.type = defines.Types["RST"]
- # expected._mid = None
- # expected.code = defines.Codes.BAD_REQUEST.number
- #
- # exchange1 = (req, expected)
- #
- # # version
- # req = ("\x40", self.server_address)
- #
- # expected = Response()
- # expected.type = defines.Types["RST"]
- # expected._mid = None
- # expected.code = defines.Codes.BAD_REQUEST.number
- #
- # exchange2 = (req, expected)
- #
- # # code
- # req = ("\x40\x05\x8c\xda", self.server_address)
- #
- # expected = Response()
- # expected.type = defines.Types["RST"]
- # expected._mid = None
- # expected.code = defines.Codes.BAD_REQUEST.number
- #
- # exchange3 = (req, expected)
- #
- # # option
- # req = ("\x40\x01\x8c\xda\x94", self.server_address)
- #
- # expected = Response()
- # expected.type = defines.Types["RST"]
- # expected._mid = None
- # expected.code = defines.Codes.BAD_REQUEST.number
- #
- # exchange4 = (req, expected)
- #
- # # payload marker
- # req = ("\x40\x02\x8c\xda\x75\x62\x61\x73\x69\x63\xff", self.server_address)
- #
- # expected = Response()
- # expected.type = defines.Types["RST"]
- # expected._mid = None
- # expected.code = defines.Codes.BAD_REQUEST.number
- #
- # exchange5 = (req, expected)
- #
- # self._test_datagram([exchange1, exchange2, exchange3, exchange4, exchange5])
+ def test_invalid(self):
+ print("TEST_INVALID")
+
+ # version
+ req = (b'\x00\x01\x8c\xda', self.server_address)
+
+ expected = Response()
+ expected.type = defines.Types["RST"]
+ expected._mid = None
+ expected.code = defines.Codes.BAD_REQUEST.number
+
+ exchange1 = (req, expected)
+
+ # version
+ req = (b'\x40', self.server_address)
+
+ expected = Response()
+ expected.type = defines.Types["RST"]
+ expected._mid = None
+ expected.code = defines.Codes.BAD_REQUEST.number
+
+ exchange2 = (req, expected)
+
+ # code
+ req = (b'\x40\x05\x8c\xda', self.server_address)
+
+ expected = Response()
+ expected.type = defines.Types["RST"]
+ expected._mid = None
+ expected.code = defines.Codes.BAD_REQUEST.number
+
+ exchange3 = (req, expected)
+
+ # option
+ req = (b'\x40\x01\x8c\xda\x94', self.server_address)
+
+ expected = Response()
+ expected.type = defines.Types["RST"]
+ expected._mid = None
+ expected.code = defines.Codes.BAD_REQUEST.number
+
+ exchange4 = (req, expected)
+
+ # payload marker
+ req = (b'\x40\x02\x8c\xda\x75\x62\x61\x73\x69\x63\xff', self.server_address)
+
+ expected = Response()
+ expected.type = defines.Types["RST"]
+ expected._mid = None
+ expected.code = defines.Codes.BAD_REQUEST.number
+
+ exchange5 = (req, expected)
+
+ self._test_datagram([exchange1, exchange2, exchange3, exchange4, exchange5])
def test_post_block_big_client(self):
print("TEST_POST_BLOCK_BIG_CLIENT")
@@ -1599,6 +1590,6 @@ class Tests(unittest.TestCase):
self._test_with_client_observe([exchange1, exchange2])
+
if __name__ == '__main__':
unittest.main()
-
diff --git a/coverage_testIPv6.py b/coverage_testIPv6.py
index d0a1381..2bc6572 100644
--- a/coverage_testIPv6.py
+++ b/coverage_testIPv6.py
@@ -1,7 +1,10 @@
+# -*- coding: utf-8 -*-
+
from queue import Queue
import random
import threading
import unittest
+
from coapclient import HelperClient
from coapserver import CoAPServer
from coapthon import defines
@@ -89,6 +92,7 @@ class Tests(unittest.TestCase):
def test_not_allowed(self):
print("TEST_NOT_ALLOWED")
path = "/void"
+
req = Request()
req.code = defines.Codes.GET.number
req.uri_path = path
@@ -103,7 +107,6 @@ class Tests(unittest.TestCase):
expected.token = None
exchange1 = (req, expected)
-
self.current_mid += 1
req = Request()
@@ -120,7 +123,6 @@ class Tests(unittest.TestCase):
expected.token = None
exchange2 = (req, expected)
-
self.current_mid += 1
req = Request()
@@ -137,7 +139,6 @@ class Tests(unittest.TestCase):
expected.token = None
exchange3 = (req, expected)
-
self.current_mid += 1
req = Request()
@@ -154,11 +155,10 @@ class Tests(unittest.TestCase):
expected.token = None
exchange4 = (req, expected)
-
self.current_mid += 1
+
self._test_with_client([exchange1, exchange2, exchange3, exchange4])
if __name__ == '__main__':
unittest.main()
-
diff --git a/coverage_test_advanced.py b/coverage_test_advanced.py
index e576b3c..cf189d5 100644
--- a/coverage_test_advanced.py
+++ b/coverage_test_advanced.py
@@ -1,3 +1,5 @@
+# -*- coding: utf-8 -*-
+
import threading
import unittest
from queue import Queue
@@ -61,6 +63,7 @@ class Tests(unittest.TestCase):
def test_advanced(self):
print("TEST_ADVANCED")
path = "/advanced"
+
req = Request()
req.code = defines.Codes.GET.number
req.uri_path = path
@@ -76,7 +79,6 @@ class Tests(unittest.TestCase):
expected.token = None
exchange1 = (req, expected)
-
self.current_mid += 1
req = Request()
@@ -94,7 +96,6 @@ class Tests(unittest.TestCase):
expected.token = None
exchange2 = (req, expected)
-
self.current_mid += 1
req = Request()
@@ -112,7 +113,6 @@ class Tests(unittest.TestCase):
expected.token = None
exchange3 = (req, expected)
-
self.current_mid += 1
req = Request()
@@ -130,13 +130,14 @@ class Tests(unittest.TestCase):
expected.token = None
exchange4 = (req, expected)
-
self.current_mid += 1
+
self._test_with_client([exchange1, exchange2, exchange3, exchange4])
def test_advanced_separate(self):
print("TEST_ADVANCED_SEPARATE")
path = "/advancedSeparate"
+
req = Request()
req.code = defines.Codes.GET.number
req.uri_path = path
@@ -152,7 +153,6 @@ class Tests(unittest.TestCase):
expected.token = None
exchange1 = (req, expected)
-
self.current_mid += 1
req = Request()
@@ -170,7 +170,6 @@ class Tests(unittest.TestCase):
expected.token = None
exchange2 = (req, expected)
-
self.current_mid += 1
req = Request()
@@ -188,7 +187,6 @@ class Tests(unittest.TestCase):
expected.token = None
exchange3 = (req, expected)
-
self.current_mid += 1
req = Request()
@@ -206,9 +204,10 @@ class Tests(unittest.TestCase):
expected.token = None
exchange4 = (req, expected)
-
self.current_mid += 1
+
self._test_with_client([exchange1, exchange2, exchange3, exchange4])
+
if __name__ == '__main__':
unittest.main()
diff --git a/coverage_test_multicast.py b/coverage_test_multicast.py
index 812221a..0435c01 100644
--- a/coverage_test_multicast.py
+++ b/coverage_test_multicast.py
@@ -1,11 +1,13 @@
+# -*- coding: utf-8 -*-
+
from queue import Queue
import random
import threading
import unittest
+
from coapclient import HelperClient
from coapserver import CoAPServer
from coapthon import defines
-from coapthon.messages.message import Message
from coapthon.messages.option import Option
from coapthon.messages.request import Request
from coapthon.messages.response import Response
@@ -90,6 +92,7 @@ class Tests(unittest.TestCase):
def test_not_allowed(self):
print("TEST_NOT_ALLOWED")
path = "/void"
+
req = Request()
req.code = defines.Codes.GET.number
req.uri_path = path
@@ -104,7 +107,6 @@ class Tests(unittest.TestCase):
expected.token = None
exchange1 = (req, expected)
-
self.current_mid += 1
req = Request()
@@ -121,7 +123,6 @@ class Tests(unittest.TestCase):
expected.token = None
exchange2 = (req, expected)
-
self.current_mid += 1
req = Request()
@@ -138,7 +139,6 @@ class Tests(unittest.TestCase):
expected.token = None
exchange3 = (req, expected)
-
self.current_mid += 1
req = Request()
@@ -155,11 +155,10 @@ class Tests(unittest.TestCase):
expected.token = None
exchange4 = (req, expected)
-
self.current_mid += 1
+
self._test_with_client([exchange1, exchange2, exchange3, exchange4])
if __name__ == '__main__':
unittest.main()
-
diff --git a/coverage_test_multicast_ipv6.py b/coverage_test_multicast_ipv6.py
index da427d2..56ee483 100644
--- a/coverage_test_multicast_ipv6.py
+++ b/coverage_test_multicast_ipv6.py
@@ -1,11 +1,13 @@
+# -*- coding: utf-8 -*-
+
from queue import Queue
import random
import threading
import unittest
+
from coapclient import HelperClient
from coapserver import CoAPServer
from coapthon import defines
-from coapthon.messages.message import Message
from coapthon.messages.option import Option
from coapthon.messages.request import Request
from coapthon.messages.response import Response
@@ -90,6 +92,7 @@ class Tests(unittest.TestCase):
def test_not_allowed(self):
print("TEST_NOT_ALLOWED")
path = "/void"
+
req = Request()
req.code = defines.Codes.GET.number
req.uri_path = path
@@ -104,7 +107,6 @@ class Tests(unittest.TestCase):
expected.token = None
exchange1 = (req, expected)
-
self.current_mid += 1
req = Request()
@@ -121,7 +123,6 @@ class Tests(unittest.TestCase):
expected.token = None
exchange2 = (req, expected)
-
self.current_mid += 1
req = Request()
@@ -138,7 +139,6 @@ class Tests(unittest.TestCase):
expected.token = None
exchange3 = (req, expected)
-
self.current_mid += 1
req = Request()
@@ -155,11 +155,10 @@ class Tests(unittest.TestCase):
expected.token = None
exchange4 = (req, expected)
-
self.current_mid += 1
+
self._test_with_client([exchange1, exchange2, exchange3, exchange4])
if __name__ == '__main__':
unittest.main()
-
diff --git a/coverage_test_proxy.py b/coverage_test_proxy.py
index e40f007..8642c82 100644
--- a/coverage_test_proxy.py
+++ b/coverage_test_proxy.py
@@ -1,8 +1,11 @@
+# -*- coding: utf-8 -*-
+
from queue import Queue
import random
import socket
import threading
import unittest
+
from coapclient import HelperClient
from coapforwardproxy import CoAPForwardProxy
from coapserver import CoAPServer
@@ -159,14 +162,13 @@ class Tests(unittest.TestCase):
def test_get_forward(self):
print("TEST_GET_FORWARD")
- path = "/basic"
+
req = Request()
req.code = defines.Codes.GET.number
- req.uri_path = path
+ req.proxy_uri = "coap://127.0.0.1:5684/basic"
req.type = defines.Types["CON"]
req._mid = self.current_mid
req.destination = self.server_address
- req.proxy_uri = "coap://127.0.0.1:5684/basic"
expected = Response()
expected.type = defines.Types["ACK"]
@@ -176,93 +178,88 @@ class Tests(unittest.TestCase):
expected.payload = "Basic Resource"
exchange1 = (req, expected)
-
self.current_mid += 1
self._test_with_client([exchange1])
- # def test_separate(self):
- # print "TEST_SEPARATE"
- # path = "/separate"
- # req = Request()
- # req.code = defines.Codes.GET.number
- # req.uri_path = path
- # req.type = defines.Types["CON"]
- # req._mid = self.current_mid
- # req.destination = self.server_address
- #
- # expected = Response()
- # expected.type = defines.Types["CON"]
- # expected._mid = None
- # expected.code = defines.Codes.CONTENT.number
- # expected.token = None
- # expected.max_age = 60
- #
- # exchange1 = (req, expected)
- #
- # self.current_mid += 1
- #
- # req = Request()
- # req.code = defines.Codes.POST.number
- # req.uri_path = path
- # req.type = defines.Types["CON"]
- # req._mid = self.current_mid
- # req.destination = self.server_address
- # req.payload = "POST"
- #
- # expected = Response()
- # expected.type = defines.Types["CON"]
- # expected._mid = None
- # expected.code = defines.Codes.CREATED.number
- # expected.token = None
- # expected.options = None
- #
- # exchange2 = (req, expected)
- #
- # self.current_mid += 1
- #
- # req = Request()
- # req.code = defines.Codes.PUT.number
- # req.uri_path = path
- # req.type = defines.Types["CON"]
- # req._mid = self.current_mid
- # req.destination = self.server_address
- # req.payload = "PUT"
- #
- # expected = Response()
- # expected.type = defines.Types["CON"]
- # expected._mid = None
- # expected.code = defines.Codes.CHANGED.number
- # expected.token = None
- # expected.options = None
- #
- # exchange3 = (req, expected)
- #
- # self.current_mid += 1
- #
- # req = Request()
- # req.code = defines.Codes.DELETE.number
- # req.uri_path = path
- # req.type = defines.Types["CON"]
- # req._mid = self.current_mid
- # req.destination = self.server_address
- #
- # expected = Response()
- # expected.type = defines.Types["CON"]
- # expected._mid = None
- # expected.code = defines.Codes.DELETED.number
- # expected.token = None
- #
- # exchange4 = (req, expected)
- #
- # self.current_mid += 1
- # self._test_with_client([exchange1, exchange2, exchange3, exchange4])
- #
+ def test_separate(self):
+ print("TEST_SEPARATE")
+
+ req = Request()
+ req.code = defines.Codes.GET.number
+ req.proxy_uri = "coap://127.0.0.1:5684/separate"
+ req.type = defines.Types["CON"]
+ req._mid = self.current_mid
+ req.destination = self.server_address
+
+ expected = Response()
+ expected.type = defines.Types["CON"]
+ expected._mid = None
+ expected.code = defines.Codes.CONTENT.number
+ expected.token = None
+ expected.max_age = 60
+
+ exchange1 = (req, expected)
+ self.current_mid += 1
+
+ req = Request()
+ req.code = defines.Codes.POST.number
+ req.proxy_uri = "coap://127.0.0.1:5684/separate"
+ req.type = defines.Types["CON"]
+ req._mid = self.current_mid
+ req.destination = self.server_address
+ req.payload = "POST"
+
+ expected = Response()
+ expected.type = defines.Types["ACK"]
+ expected._mid = self.current_mid
+ expected.code = defines.Codes.CHANGED.number
+ expected.token = None
+ expected.options = None
+
+ exchange2 = (req, expected)
+ self.current_mid += 1
+
+ req = Request()
+ req.code = defines.Codes.PUT.number
+ req.proxy_uri = "coap://127.0.0.1:5684/separate"
+ req.type = defines.Types["CON"]
+ req._mid = self.current_mid
+ req.destination = self.server_address
+ req.payload = "PUT"
+
+ expected = Response()
+ expected.type = defines.Types["ACK"]
+ expected._mid = self.current_mid
+ expected.code = defines.Codes.CHANGED.number
+ expected.token = None
+ expected.options = None
+
+ exchange3 = (req, expected)
+ self.current_mid += 1
+
+ req = Request()
+ req.code = defines.Codes.DELETE.number
+ req.proxy_uri = "coap://127.0.0.1:5684/separate"
+ req.type = defines.Types["CON"]
+ req._mid = self.current_mid
+ req.destination = self.server_address
+
+ expected = Response()
+ expected.type = defines.Types["ACK"]
+ expected._mid = self.current_mid
+ expected.code = defines.Codes.DELETED.number
+ expected.token = None
+
+ exchange4 = (req, expected)
+ self.current_mid += 1
+
+ self._test_with_client([exchange1, exchange2, exchange3, exchange4])
+
def test_post(self):
print("TEST_POST")
- path = "/storage/new_res?id=1"
- req = Request()
+ req = Request()
req.code = defines.Codes.POST.number
req.type = defines.Types["CON"]
req._mid = self.current_mid
@@ -358,8 +355,8 @@ class Tests(unittest.TestCase):
def test_post_block(self):
print("TEST_POST_BLOCK")
- req = Request()
+ req = Request()
req.code = defines.Codes.POST.number
req.proxy_uri = "coap://127.0.0.1:5684/storage/new_res"
req.type = defines.Types["CON"]
@@ -665,8 +662,8 @@ class Tests(unittest.TestCase):
def test_post_block_big(self):
print("TEST_POST_BLOCK_BIG")
- req = Request()
+ req = Request()
req.code = defines.Codes.POST.number
req.proxy_uri = "coap://127.0.0.1:5684/big"
req.type = defines.Types["CON"]
@@ -820,501 +817,495 @@ class Tests(unittest.TestCase):
expected.code = defines.Codes.CHANGED.number
expected.token = None
expected.payload = None
- expected.location_path = "big"
exchange7 = (req, expected)
self.current_mid += 1
self._test_plugtest([exchange1, exchange2, exchange3, exchange4, exchange5, exchange6, exchange7])
- # def test_options(self):
- # print "TEST_OPTIONS"
- # path = "/storage/new_res"
- #
- # req = Request()
- # req.code = defines.Codes.POST.number
- # req.uri_path = path
- # req.type = defines.Types["CON"]
- # req._mid = self.current_mid
- # req.destination = self.server_address
- # option = Option()
- # option.number = defines.OptionRegistry.ETAG.number
- # option.value = "test"
- # req.add_option(option)
- # req.del_option(option)
- # req.payload = "test"
- #
- # expected = Response()
- # expected.type = defines.Types["ACK"]
- # expected._mid = self.current_mid
- # expected.code = defines.Codes.CREATED.number
- # expected.token = None
- # expected.payload = None
- # expected.location_path = "storage/new_res"
- #
- # exchange1 = (req, expected)
- # self.current_mid += 1
- #
- # req = Request()
- # req.code = defines.Codes.POST.number
- # req.uri_path = path
- # req.type = defines.Types["CON"]
- # req._mid = self.current_mid
- # req.destination = self.server_address
- # option = Option()
- # option.number = defines.OptionRegistry.ETAG.number
- # option.value = "test"
- # req.add_option(option)
- # req.del_option_by_name("ETag")
- # req.payload = "test"
- #
- # expected = Response()
- # expected.type = defines.Types["ACK"]
- # expected._mid = self.current_mid
- # expected.code = defines.Codes.CREATED.number
- # expected.token = None
- # expected.payload = None
- # expected.location_path = "storage/new_res"
- #
- # exchange2 = (req, expected)
- # self.current_mid += 1
- #
- # req = Request()
- # req.code = defines.Codes.POST.number
- # req.uri_path = path
- # req.type = defines.Types["CON"]
- # req._mid = self.current_mid
- # req.destination = self.server_address
- # option = Option()
- # option.number = defines.OptionRegistry.ETAG.number
- # option.value = "test"
- # req.add_option(option)
- # del req.etag
- # req.payload = "test"
- #
- # expected = Response()
- # expected.type = defines.Types["ACK"]
- # expected._mid = self.current_mid
- # expected.code = defines.Codes.CREATED.number
- # expected.token = None
- # expected.payload = None
- # expected.location_path = "storage/new_res"
- #
- # exchange3 = (req, expected)
- # self.current_mid += 1
- #
- # self._test_with_client([exchange1, exchange2, exchange3])
- #
- # def test_content_type(self):
- # print "TEST_CONTENT_TYPE"
- # path = "/storage/new_res"
- #
- # req = Request()
- # req.code = defines.Codes.POST.number
- # req.uri_path = path
- # req.type = defines.Types["CON"]
- # req._mid = self.current_mid
- # req.destination = self.server_address
- # req.payload = "test"
- # req.content_type = defines.Content_types["application/xml"]
- #
- # expected = Response()
- # expected.type = defines.Types["ACK"]
- # expected._mid = self.current_mid
- # expected.code = defines.Codes.CREATED.number
- # expected.token = None
- # expected.payload = None
- # expected.location_path = "storage/new_res"
- #
- # exchange1 = (req, expected)
- # self.current_mid += 1
- #
- # req = Request()
- # req.code = defines.Codes.GET.number
- # req.uri_path = path
- # req.type = defines.Types["CON"]
- # req._mid = self.current_mid
- # req.destination = self.server_address
- #
- # expected = Response()
- # expected.type = defines.Types["ACK"]
- # expected._mid = self.current_mid
- # expected.code = defines.Codes.CONTENT.number
- # expected.token = None
- # expected.payload = "Basic Resource"
- #
- # exchange2 = (req, expected)
- # self.current_mid += 1
- #
- # req = Request()
- # req.code = defines.Codes.PUT.number
- # req.uri_path = path
- # req.type = defines.Types["CON"]
- # req._mid = self.current_mid
- # req.destination = self.server_address
- # req.payload = "test"
- #
- # expected = Response()
- # expected.type = defines.Types["ACK"]
- # expected._mid = self.current_mid
- # expected.code = defines.Codes.CHANGED.number
- # expected.token = None
- # expected.payload = None
- #
- # exchange3 = (req, expected)
- # self.current_mid += 1
- #
- # req = Request()
- # req.code = defines.Codes.GET.number
- # req.uri_path = path
- # req.type = defines.Types["CON"]
- # req._mid = self.current_mid
- # req.destination = self.server_address
- #
- # expected = Response()
- # expected.type = defines.Types["ACK"]
- # expected._mid = self.current_mid
- # expected.code = defines.Codes.CONTENT.number
- # expected.token = None
- # expected.payload = "test"
- #
- # exchange4 = (req, expected)
- # self.current_mid += 1
- #
- # req = Request()
- # req.code = defines.Codes.GET.number
- # req.uri_path = path
- # req.type = defines.Types["CON"]
- # req._mid = self.current_mid
- # req.destination = self.server_address
- # req.accept = defines.Content_types["application/xml"]
- #
- # expected = Response()
- # expected.type = defines.Types["ACK"]
- # expected._mid = self.current_mid
- # expected.code = defines.Codes.CONTENT.number
- # expected.token = None
- # expected.payload = "test"
- #
- # exchange5 = (req, expected)
- # self.current_mid += 1
- #
- # req = Request()
- # req.code = defines.Codes.GET.number
- # req.uri_path = path
- # req.type = defines.Types["CON"]
- # req._mid = self.current_mid
- # req.destination = self.server_address
- # req.accept = defines.Content_types["application/json"]
- #
- # expected = Response()
- # expected.type = defines.Types["ACK"]
- # expected._mid = self.current_mid
- # expected.code = defines.Codes.NOT_ACCEPTABLE.number
- # expected.token = None
- # expected.payload = None
- # expected.content_type = defines.Content_types["application/json"]
- #
- # exchange6 = (req, expected)
- # self.current_mid += 1
- #
- # req = Request()
- # req.code = defines.Codes.GET.number
- # req.uri_path = "/xml"
- # req.type = defines.Types["CON"]
- # req._mid = self.current_mid
- # req.destination = self.server_address
- #
- # expected = Response()
- # expected.type = defines.Types["ACK"]
- # expected._mid = self.current_mid
- # expected.code = defines.Codes.CONTENT.number
- # expected.token = None
- # expected.payload = "0"
- # expected.content_type = defines.Content_types["application/xml"]
- #
- # print(expected.pretty_print())
- #
- # exchange7 = (req, expected)
- # self.current_mid += 1
- #
- # self._test_with_client([exchange1, exchange2, exchange3, exchange4, exchange5, exchange6, exchange7])
- #
- # def test_ETAG(self):
- # print "TEST_ETAG"
- # path = "/etag"
- #
- # req = Request()
- # req.code = defines.Codes.GET.number
- # req.uri_path = path
- # req.type = defines.Types["CON"]
- # req._mid = self.current_mid
- # req.destination = self.server_address
- #
- # expected = Response()
- # expected.type = defines.Types["ACK"]
- # expected._mid = self.current_mid
- # expected.code = defines.Codes.CONTENT.number
- # expected.token = None
- # expected.payload = "ETag resource"
- # expected.etag = "0"
- #
- # exchange1 = (req, expected)
- # self.current_mid += 1
- #
- # req = Request()
- # req.code = defines.Codes.POST.number
- # req.uri_path = path
- # req.type = defines.Types["CON"]
- # req._mid = self.current_mid
- # req.destination = self.server_address
- # req.payload = "test"
- #
- # expected = Response()
- # expected.type = defines.Types["ACK"]
- # expected._mid = self.current_mid
- # expected.code = defines.Codes.CREATED.number
- # expected.token = None
- # expected.payload = None
- # expected.location_path = path
- # expected.etag = "1"
- #
- # exchange2 = (req, expected)
- # self.current_mid += 1
- #
- # req = Request()
- # req.code = defines.Codes.GET.number
- # req.uri_path = path
- # req.type = defines.Types["CON"]
- # req._mid = self.current_mid
- # req.destination = self.server_address
- # req.etag = "1"
- #
- # expected = Response()
- # expected.type = defines.Types["ACK"]
- # expected._mid = self.current_mid
- # expected.code = defines.Codes.VALID.number
- # expected.token = None
- # expected.payload = "test"
- # expected.etag = "1"
- #
- # exchange3 = (req, expected)
- # self.current_mid += 1
- #
- # self._test_with_client([exchange1, exchange2, exchange3])
- #
- # def test_child(self):
- # print "TEST_CHILD"
- # path = "/child"
- #
- # req = Request()
- # req.code = defines.Codes.POST.number
- # req.uri_path = path
- # req.type = defines.Types["CON"]
- # req._mid = self.current_mid
- # req.destination = self.server_address
- # req.payload = "test"
- #
- # expected = Response()
- # expected.type = defines.Types["ACK"]
- # expected._mid = self.current_mid
- # expected.code = defines.Codes.CREATED.number
- # expected.token = None
- # expected.payload = None
- # expected.location_path = path
- #
- # exchange1 = (req, expected)
- # self.current_mid += 1
- #
- # req = Request()
- # req.code = defines.Codes.GET.number
- # req.uri_path = path
- # req.type = defines.Types["CON"]
- # req._mid = self.current_mid
- # req.destination = self.server_address
- #
- # expected = Response()
- # expected.type = defines.Types["ACK"]
- # expected._mid = self.current_mid
- # expected.code = defines.Codes.CONTENT.number
- # expected.token = None
- # expected.payload = "test"
- #
- # exchange2 = (req, expected)
- # self.current_mid += 1
- #
- # req = Request()
- # req.code = defines.Codes.PUT.number
- # req.uri_path = path
- # req.type = defines.Types["CON"]
- # req._mid = self.current_mid
- # req.destination = self.server_address
- # req.payload = "testPUT"
- #
- # expected = Response()
- # expected.type = defines.Types["ACK"]
- # expected._mid = self.current_mid
- # expected.code = defines.Codes.CHANGED.number
- # expected.token = None
- # expected.payload = None
- #
- # exchange3 = (req, expected)
- # self.current_mid += 1
- #
- # req = Request()
- # req.code = defines.Codes.DELETE.number
- # req.uri_path = path
- # req.type = defines.Types["CON"]
- # req._mid = self.current_mid
- # req.destination = self.server_address
- #
- # expected = Response()
- # expected.type = defines.Types["ACK"]
- # expected._mid = self.current_mid
- # expected.code = defines.Codes.DELETED.number
- # expected.token = None
- # expected.payload = None
- #
- # exchange4 = (req, expected)
- # self.current_mid += 1
- #
- # self._test_with_client([exchange1, exchange2, exchange3, exchange4])
- #
- # def test_not_found(self):
- # print "TEST_not_found"
- # path = "/not_found"
- #
- # req = Request()
- # req.code = defines.Codes.GET.number
- # req.uri_path = path
- # req.type = defines.Types["CON"]
- # req._mid = self.current_mid
- # req.destination = self.server_address
- # req.token = 100
- #
- # expected = Response()
- # expected.type = defines.Types["ACK"]
- # expected._mid = self.current_mid
- # expected.code = defines.Codes.NOT_FOUND.number
- # expected.token = "100"
- # expected.payload = None
- #
- # exchange1 = (req, expected)
- # self.current_mid += 1
- #
- # req = Request()
- # req.code = defines.Codes.POST.number
- # req.uri_path = path
- # req.type = defines.Types["CON"]
- # req._mid = self.current_mid
- # req.destination = self.server_address
- # req.payload = "test"
- #
- # expected = Response()
- # expected.type = defines.Types["ACK"]
- # expected._mid = self.current_mid
- # expected.code = defines.Codes.METHOD_NOT_ALLOWED.number
- # expected.token = None
- #
- # exchange2 = (req, expected)
- # self.current_mid += 1
- #
- # req = Request()
- # req.code = defines.Codes.PUT.number
- # req.uri_path = path
- # req.type = defines.Types["CON"]
- # req._mid = self.current_mid
- # req.destination = self.server_address
- # req.payload = "testPUT"
- #
- # expected = Response()
- # expected.type = defines.Types["ACK"]
- # expected._mid = self.current_mid
- # expected.code = defines.Codes.NOT_FOUND.number
- # expected.token = None
- # expected.payload = None
- #
- # exchange3 = (req, expected)
- # self.current_mid += 1
- #
- # req = Request()
- # req.code = defines.Codes.DELETE.number
- # req.uri_path = path
- # req.type = defines.Types["CON"]
- # req._mid = self.current_mid
- # req.destination = self.server_address
- #
- # expected = Response()
- # expected.type = defines.Types["ACK"]
- # expected._mid = self.current_mid
- # expected.code = defines.Codes.NOT_FOUND.number
- # expected.token = None
- # expected.payload = None
- #
- # exchange4 = (req, expected)
- # self.current_mid += 1
- #
- # self._test_with_client([exchange1, exchange2, exchange3, exchange4])
- #
- # def test_invalid(self):
- # print("TEST_INVALID")
- #
- # # version
- # req = (bytes("\x00\x01\x8c\xda", "utf-8"), self.server_address)
- #
- # expected = Response()
- # expected.type = defines.Types["RST"]
- # expected._mid = None
- # expected.code = defines.Codes.BAD_REQUEST.number
- #
- # exchange1 = (req, expected)
- #
- # # version
- # req = (bytes("\x40", "utf-8"), self.server_address)
- #
- # expected = Response()
- # expected.type = defines.Types["RST"]
- # expected._mid = None
- # expected.code = defines.Codes.BAD_REQUEST.number
- #
- # exchange2 = (req, expected)
- #
- # # code
- # req = (bytes("\x40\x05\x8c\xda", "utf-8"), self.server_address)
- #
- # expected = Response()
- # expected.type = defines.Types["RST"]
- # expected._mid = None
- # expected.code = defines.Codes.BAD_REQUEST.number
- #
- # exchange3 = (req, expected)
- #
- # # option
- # req = (bytes("\x40\x01\x8c\xda\x94", "utf-8"), self.server_address)
- #
- # expected = Response()
- # expected.type = defines.Types["RST"]
- # expected._mid = None
- # expected.code = defines.Codes.BAD_REQUEST.number
- #
- # exchange4 = (req, expected)
- #
- # # payload marker
- # req = (bytes("\x40\x02\x8c\xda\x75\x62\x61\x73\x69\x63\xff", "utf-8"), self.server_address)
- #
- # expected = Response()
- # expected.type = defines.Types["RST"]
- # expected._mid = None
- # expected.code = defines.Codes.BAD_REQUEST.number
- #
- # exchange5 = (req, expected)
- #
- # self._test_datagram([exchange1, exchange2, exchange3, exchange4, exchange5])
+ def test_options(self):
+ print("TEST_OPTIONS")
+ path = "/storage/new_res"
+
+ req = Request()
+ req.code = defines.Codes.POST.number
+ req.proxy_uri = "coap://127.0.0.1:5684/storage/new_res"
+ req.type = defines.Types["CON"]
+ req._mid = self.current_mid
+ req.destination = self.server_address
+ option = Option()
+ option.number = defines.OptionRegistry.ETAG.number
+ option.value = "test"
+ req.add_option(option)
+ req.del_option(option)
+ req.payload = "test"
+
+ expected = Response()
+ expected.type = defines.Types["ACK"]
+ expected._mid = self.current_mid
+ expected.code = defines.Codes.CREATED.number
+ expected.token = None
+ expected.payload = None
+ expected.location_path = "storage/new_res"
+
+ exchange1 = (req, expected)
+ self.current_mid += 1
+
+ req = Request()
+ req.code = defines.Codes.POST.number
+ req.proxy_uri = "coap://127.0.0.1:5684/storage/new_res"
+ req.type = defines.Types["CON"]
+ req._mid = self.current_mid
+ req.destination = self.server_address
+ option = Option()
+ option.number = defines.OptionRegistry.ETAG.number
+ option.value = "test"
+ req.add_option(option)
+ req.del_option_by_name("ETag")
+ req.payload = "test"
+
+ expected = Response()
+ expected.type = defines.Types["ACK"]
+ expected._mid = self.current_mid
+ expected.code = defines.Codes.CREATED.number
+ expected.token = None
+ expected.payload = None
+ expected.location_path = "storage/new_res"
+
+ exchange2 = (req, expected)
+ self.current_mid += 1
+
+ req = Request()
+ req.code = defines.Codes.POST.number
+ req.proxy_uri = "coap://127.0.0.1:5684/storage/new_res"
+ req.type = defines.Types["CON"]
+ req._mid = self.current_mid
+ req.destination = self.server_address
+ option = Option()
+ option.number = defines.OptionRegistry.ETAG.number
+ option.value = "test"
+ req.add_option(option)
+ del req.etag
+ req.payload = "test"
+
+ expected = Response()
+ expected.type = defines.Types["ACK"]
+ expected._mid = self.current_mid
+ expected.code = defines.Codes.CREATED.number
+ expected.token = None
+ expected.payload = None
+ expected.location_path = "storage/new_res"
+
+ exchange3 = (req, expected)
+ self.current_mid += 1
+
+ self._test_with_client([exchange1, exchange2, exchange3])
+
+ def test_content_type(self):
+ print("TEST_CONTENT_TYPE")
+
+ req = Request()
+ req.code = defines.Codes.POST.number
+ req.proxy_uri = "coap://127.0.0.1:5684/storage/new_res"
+ req.type = defines.Types["CON"]
+ req._mid = self.current_mid
+ req.destination = self.server_address
+ req.payload = "test"
+ req.content_type = defines.Content_types["application/xml"]
+
+ expected = Response()
+ expected.type = defines.Types["ACK"]
+ expected._mid = self.current_mid
+ expected.code = defines.Codes.CREATED.number
+ expected.token = None
+ expected.payload = None
+ expected.location_path = "storage/new_res"
+
+ exchange1 = (req, expected)
+ self.current_mid += 1
+
+ req = Request()
+ req.code = defines.Codes.GET.number
+ req.proxy_uri = "coap://127.0.0.1:5684/storage/new_res"
+ req.type = defines.Types["CON"]
+ req._mid = self.current_mid
+ req.destination = self.server_address
+
+ expected = Response()
+ expected.type = defines.Types["ACK"]
+ expected._mid = self.current_mid
+ expected.code = defines.Codes.CONTENT.number
+ expected.token = None
+ expected.payload = "Basic Resource"
+
+ exchange2 = (req, expected)
+ self.current_mid += 1
+
+ req = Request()
+ req.code = defines.Codes.PUT.number
+ req.proxy_uri = "coap://127.0.0.1:5684/storage/new_res"
+ req.type = defines.Types["CON"]
+ req._mid = self.current_mid
+ req.destination = self.server_address
+ req.payload = "test"
+
+ expected = Response()
+ expected.type = defines.Types["ACK"]
+ expected._mid = self.current_mid
+ expected.code = defines.Codes.CHANGED.number
+ expected.token = None
+ expected.payload = None
+
+ exchange3 = (req, expected)
+ self.current_mid += 1
+
+ req = Request()
+ req.code = defines.Codes.GET.number
+ req.proxy_uri = "coap://127.0.0.1:5684/storage/new_res"
+ req.type = defines.Types["CON"]
+ req._mid = self.current_mid
+ req.destination = self.server_address
+
+ expected = Response()
+ expected.type = defines.Types["ACK"]
+ expected._mid = self.current_mid
+ expected.code = defines.Codes.CONTENT.number
+ expected.token = None
+ expected.payload = "test"
+
+ exchange4 = (req, expected)
+ self.current_mid += 1
+
+ req = Request()
+ req.code = defines.Codes.GET.number
+ req.proxy_uri = "coap://127.0.0.1:5684/storage/new_res"
+ req.type = defines.Types["CON"]
+ req._mid = self.current_mid
+ req.destination = self.server_address
+ req.accept = defines.Content_types["application/xml"]
+
+ expected = Response()
+ expected.type = defines.Types["ACK"]
+ expected._mid = self.current_mid
+ expected.code = defines.Codes.CONTENT.number
+ expected.token = None
+ expected.payload = "test"
+
+ exchange5 = (req, expected)
+ self.current_mid += 1
+
+ req = Request()
+ req.code = defines.Codes.GET.number
+ req.proxy_uri = "coap://127.0.0.1:5684/storage/new_res"
+ req.type = defines.Types["CON"]
+ req._mid = self.current_mid
+ req.destination = self.server_address
+ req.accept = defines.Content_types["application/json"]
+
+ expected = Response()
+ expected.type = defines.Types["ACK"]
+ expected._mid = self.current_mid
+ expected.code = defines.Codes.NOT_ACCEPTABLE.number
+ expected.token = None
+ expected.payload = None
+ # expected.content_type = defines.Content_types["application/json"]
+
+ exchange6 = (req, expected)
+ self.current_mid += 1
+
+ req = Request()
+ req.code = defines.Codes.GET.number
+ req.proxy_uri = "coap://127.0.0.1:5684/xml"
+ req.type = defines.Types["CON"]
+ req._mid = self.current_mid
+ req.destination = self.server_address
+
+ expected = Response()
+ expected.type = defines.Types["ACK"]
+ expected._mid = self.current_mid
+ expected.code = defines.Codes.CONTENT.number
+ expected.token = None
+ expected.payload = "0"
+ expected.content_type = defines.Content_types["application/xml"]
+
+ print(expected.pretty_print())
+
+ exchange7 = (req, expected)
+ self.current_mid += 1
+
+ self._test_with_client([exchange1, exchange2, exchange3, exchange4, exchange5, exchange6, exchange7])
+
+ def test_ETAG(self):
+ print("TEST_ETAG")
+
+ req = Request()
+ req.code = defines.Codes.GET.number
+ req.proxy_uri = "coap://127.0.0.1:5684/etag"
+ req.type = defines.Types["CON"]
+ req._mid = self.current_mid
+ req.destination = self.server_address
+
+ expected = Response()
+ expected.type = defines.Types["ACK"]
+ expected._mid = self.current_mid
+ expected.code = defines.Codes.CONTENT.number
+ expected.token = None
+ expected.payload = "ETag resource"
+ expected.etag = "0"
+
+ exchange1 = (req, expected)
+ self.current_mid += 1
+
+ req = Request()
+ req.code = defines.Codes.POST.number
+ req.proxy_uri = "coap://127.0.0.1:5684/etag"
+ req.type = defines.Types["CON"]
+ req._mid = self.current_mid
+ req.destination = self.server_address
+ req.payload = "test"
+
+ expected = Response()
+ expected.type = defines.Types["ACK"]
+ expected._mid = self.current_mid
+ expected.code = defines.Codes.CHANGED.number
+ expected.token = None
+ expected.payload = None
+ expected.etag = "1"
+
+ exchange2 = (req, expected)
+ self.current_mid += 1
+
+ req = Request()
+ req.code = defines.Codes.GET.number
+ req.proxy_uri = "coap://127.0.0.1:5684/etag"
+ req.type = defines.Types["CON"]
+ req._mid = self.current_mid
+ req.destination = self.server_address
+ req.etag = "1"
+
+ expected = Response()
+ expected.type = defines.Types["ACK"]
+ expected._mid = self.current_mid
+ expected.code = defines.Codes.VALID.number
+ expected.token = None
+ expected.payload = None
+ expected.etag = "1"
+
+ exchange3 = (req, expected)
+ self.current_mid += 1
+
+ self._test_with_client([exchange1, exchange2, exchange3])
+
+ def test_child(self):
+ print("TEST_CHILD")
+
+ req = Request()
+ req.code = defines.Codes.POST.number
+ req.proxy_uri = "coap://127.0.0.1:5684/child"
+ req.type = defines.Types["CON"]
+ req._mid = self.current_mid
+ req.destination = self.server_address
+ req.payload = "test"
+
+ expected = Response()
+ expected.type = defines.Types["ACK"]
+ expected._mid = self.current_mid
+ expected.code = defines.Codes.CREATED.number
+ expected.token = None
+ expected.payload = None
+ expected.location_path = "child"
+
+ exchange1 = (req, expected)
+ self.current_mid += 1
+
+ req = Request()
+ req.code = defines.Codes.GET.number
+ req.proxy_uri = "coap://127.0.0.1:5684/child"
+ req.type = defines.Types["CON"]
+ req._mid = self.current_mid
+ req.destination = self.server_address
+
+ expected = Response()
+ expected.type = defines.Types["ACK"]
+ expected._mid = self.current_mid
+ expected.code = defines.Codes.CONTENT.number
+ expected.token = None
+ expected.payload = "test"
+
+ exchange2 = (req, expected)
+ self.current_mid += 1
+
+ req = Request()
+ req.code = defines.Codes.PUT.number
+ req.proxy_uri = "coap://127.0.0.1:5684/child"
+ req.type = defines.Types["CON"]
+ req._mid = self.current_mid
+ req.destination = self.server_address
+ req.payload = "testPUT"
+
+ expected = Response()
+ expected.type = defines.Types["ACK"]
+ expected._mid = self.current_mid
+ expected.code = defines.Codes.CHANGED.number
+ expected.token = None
+ expected.payload = None
+
+ exchange3 = (req, expected)
+ self.current_mid += 1
+
+ req = Request()
+ req.code = defines.Codes.DELETE.number
+ req.proxy_uri = "coap://127.0.0.1:5684/child"
+ req.type = defines.Types["CON"]
+ req._mid = self.current_mid
+ req.destination = self.server_address
+
+ expected = Response()
+ expected.type = defines.Types["ACK"]
+ expected._mid = self.current_mid
+ expected.code = defines.Codes.DELETED.number
+ expected.token = None
+ expected.payload = None
+
+ exchange4 = (req, expected)
+ self.current_mid += 1
+
+ self._test_with_client([exchange1, exchange2, exchange3, exchange4])
+
+ def test_not_found(self):
+ print("TEST_not_found")
+
+ req = Request()
+ req.code = defines.Codes.GET.number
+ req.proxy_uri = "coap://127.0.0.1:5684/not_found"
+ req.type = defines.Types["CON"]
+ req._mid = self.current_mid
+ req.destination = self.server_address
+ req.token = 100
+
+ expected = Response()
+ expected.type = defines.Types["ACK"]
+ expected._mid = self.current_mid
+ expected.code = defines.Codes.NOT_FOUND.number
+ expected.token = 100
+ expected.payload = None
+
+ exchange1 = (req, expected)
+ self.current_mid += 1
+
+ req = Request()
+ req.code = defines.Codes.POST.number
+ req.proxy_uri = "coap://127.0.0.1:5684/not_found"
+ req.type = defines.Types["CON"]
+ req._mid = self.current_mid
+ req.destination = self.server_address
+ req.payload = "testPOST"
+
+ expected = Response()
+ expected.type = defines.Types["ACK"]
+ expected._mid = self.current_mid
+ expected.code = defines.Codes.METHOD_NOT_ALLOWED.number
+ expected.token = None
+
+ exchange2 = (req, expected)
+ self.current_mid += 1
+
+ req = Request()
+ req.code = defines.Codes.PUT.number
+ req.proxy_uri = "coap://127.0.0.1:5684/not_found"
+ req.type = defines.Types["CON"]
+ req._mid = self.current_mid
+ req.destination = self.server_address
+ req.payload = "testPUT"
+
+ expected = Response()
+ expected.type = defines.Types["ACK"]
+ expected._mid = self.current_mid
+ expected.code = defines.Codes.NOT_FOUND.number
+ expected.token = None
+ expected.payload = None
+
+ exchange3 = (req, expected)
+ self.current_mid += 1
+
+ req = Request()
+ req.code = defines.Codes.DELETE.number
+ req.proxy_uri = "coap://127.0.0.1:5684/not_found"
+ req.type = defines.Types["CON"]
+ req._mid = self.current_mid
+ req.destination = self.server_address
+
+ expected = Response()
+ expected.type = defines.Types["ACK"]
+ expected._mid = self.current_mid
+ expected.code = defines.Codes.NOT_FOUND.number
+ expected.token = None
+ expected.payload = None
+
+ exchange4 = (req, expected)
+ self.current_mid += 1
+
+ self._test_with_client([exchange1, exchange2, exchange3, exchange4])
+
+ def test_invalid(self):
+ print("TEST_INVALID")
+
+ # version
+ req = (b'\x00\x01\x8c\xda', self.server_address)
+
+ expected = Response()
+ expected.type = defines.Types["RST"]
+ expected._mid = None
+ expected.code = defines.Codes.BAD_REQUEST.number
+
+ exchange1 = (req, expected)
+
+ # version
+ req = (b'\x40', self.server_address)
+
+ expected = Response()
+ expected.type = defines.Types["RST"]
+ expected._mid = None
+ expected.code = defines.Codes.BAD_REQUEST.number
+
+ exchange2 = (req, expected)
+
+ # code
+ req = (b'\x40\x05\x8c\xda', self.server_address)
+
+ expected = Response()
+ expected.type = defines.Types["RST"]
+ expected._mid = None
+ expected.code = defines.Codes.BAD_REQUEST.number
+
+ exchange3 = (req, expected)
+
+ # option
+ req = (b'\x40\x01\x8c\xda\x94', self.server_address)
+
+ expected = Response()
+ expected.type = defines.Types["RST"]
+ expected._mid = None
+ expected.code = defines.Codes.BAD_REQUEST.number
+
+ exchange4 = (req, expected)
+
+ # payload marker
+ req = (b'\x40\x02\x8c\xda\x75\x62\x61\x73\x69\x63\xff', self.server_address)
+
+ expected = Response()
+ expected.type = defines.Types["RST"]
+ expected._mid = None
+ expected.code = defines.Codes.BAD_REQUEST.number
+
+ exchange5 = (req, expected)
+
+ self._test_datagram([exchange1, exchange2, exchange3, exchange4, exchange5])
def test_post_block_big_client(self):
print("TEST_POST_BLOCK_BIG_CLIENT")
- req = Request()
+ req = Request()
req.code = defines.Codes.POST.number
req.proxy_uri = "coap://127.0.0.1:5684/big"
req.type = defines.Types["CON"]
@@ -1375,13 +1366,13 @@ class Tests(unittest.TestCase):
expected.payload = None
exchange1 = (req, expected)
-
self.current_mid += 1
self._test_with_client_observe([exchange1])
def test_duplicate(self):
print("TEST_DUPLICATE")
+
req = Request()
req.code = defines.Codes.GET.number
req.proxy_uri = "coap://127.0.0.1:5684/basic"
@@ -1396,10 +1387,12 @@ class Tests(unittest.TestCase):
expected.token = None
self.current_mid += 1
+
self._test_plugtest([(req, expected), (req, expected)])
def test_duplicate_not_completed(self):
print("TEST_DUPLICATE_NOT_COMPLETED")
+
req = Request()
req.code = defines.Codes.GET.number
req.proxy_uri = "coap://127.0.0.1:5684/long"
@@ -1420,8 +1413,9 @@ class Tests(unittest.TestCase):
expected2.token = None
self.current_mid += 1
+
self._test_plugtest([(req, None), (req, expected), (None, expected2)])
+
if __name__ == '__main__':
unittest.main()
-
diff --git a/coverage_test_reverse_proxy.py b/coverage_test_reverse_proxy.py
index 6aabdd1..1938fe3 100644
--- a/coverage_test_reverse_proxy.py
+++ b/coverage_test_reverse_proxy.py
@@ -1,14 +1,15 @@
+# -*- coding: utf-8 -*-
+
from queue import Queue
import random
import socket
import threading
import unittest
+
from coapclient import HelperClient
-from coapforwardproxy import CoAPForwardProxy
from coapreverseproxy import CoAPReverseProxy
from coapserver import CoAPServer
from coapthon import defines
-from coapthon.messages.message import Message
from coapthon.messages.option import Option
from coapthon.messages.request import Request
from coapthon.messages.response import Response
@@ -408,8 +409,8 @@ class Tests(unittest.TestCase):
def test_post_block(self):
print("TEST_POST_BLOCK")
path = "/Server1/storage/new_res"
- req = Request()
+ req = Request()
req.code = defines.Codes.POST.number
req.uri_path = path
req.type = defines.Types["CON"]
@@ -533,7 +534,7 @@ class Tests(unittest.TestCase):
expected.code = defines.Codes.CREATED.number
expected.token = None
expected.payload = None
- expected.location_path = "/Server1/storage/new_res"
+ expected.location_path = "Server1/storage/new_res"
exchange5 = (req, expected)
self.current_mid += 1
@@ -714,727 +715,272 @@ class Tests(unittest.TestCase):
self._test_plugtest([exchange1, exchange2, exchange3, exchange4, exchange5, exchange6, exchange7, exchange8])
- # def test_post_block_big(self):
- # print "TEST_POST_BLOCK_BIG"
- # path = "/big"
- # req = Request()
- #
- # req.code = defines.Codes.POST.number
- # req.uri_path = path
- # req.type = defines.Types["CON"]
- # req._mid = self.current_mid
- # req.destination = self.server_address
- # req.payload = "Lorem ipsum dolo"
- # req.block1 = (0, 1, 16)
- #
- # expected = Response()
- # expected.type = defines.Types["ACK"]
- # expected._mid = None
- # expected.code = defines.Codes.CONTINUE.number
- # expected.token = None
- # expected.payload = None
- # expected.block1 = (0, 1, 16)
- #
- # exchange1 = (req, expected)
- # self.current_mid += 1
- #
- # req = Request()
- # req.code = defines.Codes.POST.number
- # req.uri_path = path
- # req.type = defines.Types["CON"]
- # req._mid = self.current_mid
- # req.destination = self.server_address
- # req.payload = "r sit amet, consectetur adipisci"
- # req.block1 = (1, 1, 32)
- #
- # expected = Response()
- # expected.type = defines.Types["ACK"]
- # expected._mid = None
- # expected.code = defines.Codes.CONTINUE.number
- # expected.token = None
- # expected.payload = None
- # expected.block1 = (1, 1, 32)
- #
- # exchange2 = (req, expected)
- # self.current_mid += 1
- #
- # req = Request()
- # req.code = defines.Codes.POST.number
- # req.uri_path = path
- # req.type = defines.Types["CON"]
- # req._mid = self.current_mid
- # req.destination = self.server_address
- # req.payload = "ng elit. Sed ut ultrices ligula. Pellentesque purus augue, cursu"
- # req.block1 = (2, 1, 64)
- #
- # expected = Response()
- # expected.type = defines.Types["ACK"]
- # expected._mid = None
- # expected.code = defines.Codes.CONTINUE.number
- # expected.token = None
- # expected.payload = None
- # expected.block1 = (2, 1, 64)
- #
- # exchange3 = (req, expected)
- # self.current_mid += 1
- #
- # req = Request()
- # req.code = defines.Codes.POST.number
- # req.uri_path = path
- # req.type = defines.Types["CON"]
- # req._mid = self.current_mid
- # req.destination = self.server_address
- # req.payload = "s ultricies est in, vehicula congue metus. Vestibulum vel justo lacinia, porttitor quam vitae, " \
- # "feugiat sapien. Quisque finibus, "
- # req.block1 = (3, 1, 128)
- #
- # expected = Response()
- # expected.type = defines.Types["ACK"]
- # expected._mid = None
- # expected.code = defines.Codes.CONTINUE.number
- # expected.token = None
- # expected.payload = None
- # expected.block1 = (3, 1, 128)
- #
- # exchange4 = (req, expected)
- # self.current_mid += 1
- #
- # req = Request()
- # req.code = defines.Codes.POST.number
- # req.uri_path = path
- # req.type = defines.Types["CON"]
- # req._mid = self.current_mid
- # req.destination = self.server_address
- # req.payload = "nisi vitae rhoncus malesuada, augue mauris dapibus tellus, sit amet venenatis libero" \
- # " libero sed lorem. In pharetra turpis sed eros porta mollis. Quisque dictum dolor nisl," \
- # " imperdiet tincidunt augue malesuada vitae. Donec non felis urna. Suspendisse at hend"
- # req.block1 = (4, 1, 256)
- #
- # expected = Response()
- # expected.type = defines.Types["ACK"]
- # expected._mid = None
- # expected.code = defines.Codes.CONTINUE.number
- # expected.token = None
- # expected.payload = None
- # expected.block1 = (4, 1, 256)
- #
- # exchange5 = (req, expected)
- # self.current_mid += 1
- #
- # req = Request()
- # req.code = defines.Codes.POST.number
- # req.uri_path = path
- # req.type = defines.Types["CON"]
- # req._mid = self.current_mid
- # req.destination = self.server_address
- # req.payload = "rerit ex, quis aliquet ante. Vivamus ultrices dolor at elit tincidunt, eget fringilla " \
- # "ligula vestibulum. In molestie sagittis nibh, ut efficitur tellus faucibus non. Maecenas " \
- # "posuere elementum faucibus. Morbi nisi diam, molestie non feugiat et, elementum eget magna." \
- # " Donec vel sem facilisis quam viverra ultrices nec eu lacus. Sed molestie nisi id ultrices " \
- # "interdum. Curabitur pharetra sed tellus in dignissim. Duis placerat aliquam metus, volutpat " \
- # "elementum augue aliquam a. Nunc sed dolor at orci maximus portt"
- # req.block1 = (5, 1, 512)
- #
- # expected = Response()
- # expected.type = defines.Types["ACK"]
- # expected._mid = None
- # expected.code = defines.Codes.CONTINUE.number
- # expected.token = None
- # expected.payload = None
- # expected.block1 = (5, 1, 512)
- #
- # exchange6 = (req, expected)
- # self.current_mid += 1
- #
- # req = Request()
- # req.code = defines.Codes.POST.number
- # req.uri_path = path
- # req.type = defines.Types["CON"]
- # req._mid = self.current_mid
- # req.destination = self.server_address
- # req.payload = "itor ac sit amet eros. Mauris et nisi in tortor pharetra rhoncus sit amet hendrerit metus. " \
- # "Integer laoreet placerat cursus. Nam a nulla ex. Donec laoreet sagittis libero quis " \
- # "imperdiet. Vivamus facilisis turpis nec rhoncus venenatis. Duis pulvinar tellus vel quam " \
- # "maximus imperdiet. Mauris eget nibh orci. Duis ut cursus nibh. Nulla sed commodo elit. " \
- # "Suspendisse ac eros lacinia, mattis turpis at, porttitor justo. Vivamus molestie " \
- # "tincidunt libero. Etiam porttitor lacus odio, at lobortis tortor scelerisque nec. " \
- # "Nullam non ante vel nisi ultrices consectetur. Maecenas massa felis, tempor eget " \
- # "malesuada eget, pretium eu sapien. Vivamus dapibus ante erat, non faucibus orci sodales " \
- # "sit amet. Cras magna felis, sodales eget magna sed, eleifend rutrum ligula. Vivamus interdum " \
- # "enim enim, eu facilisis tortor dignissim quis. Ut metus nulla, mattis non lorem et, " \
- # "elementum ultrices orci. Quisque eleifend, arcu vitae ullamcorper pulvinar, ipsum ex " \
- # "sodales arcu, eget consectetur mauris metus ac tortor. Donec id sem felis. Maur"
- # req.block1 = (6, 0, 1024)
- #
- # expected = Response()
- # expected.type = defines.Types["ACK"]
- # expected._mid = None
- # expected.code = defines.Codes.CREATED.number
- # expected.token = None
- # expected.payload = None
- # expected.location_path = "big"
- #
- # exchange7 = (req, expected)
- # self.current_mid += 1
- #
- # self._test_plugtest([exchange1, exchange2, exchange3, exchange4, exchange5, exchange6, exchange7])
- #
- # def test_options(self):
- # print "TEST_OPTIONS"
- # path = "/storage/new_res"
- #
- # req = Request()
- # req.code = defines.Codes.POST.number
- # req.uri_path = path
- # req.type = defines.Types["CON"]
- # req._mid = self.current_mid
- # req.destination = self.server_address
- # option = Option()
- # option.number = defines.OptionRegistry.ETAG.number
- # option.value = "test"
- # req.add_option(option)
- # req.del_option(option)
- # req.payload = "test"
- #
- # expected = Response()
- # expected.type = defines.Types["ACK"]
- # expected._mid = self.current_mid
- # expected.code = defines.Codes.CREATED.number
- # expected.token = None
- # expected.payload = None
- # expected.location_path = "storage/new_res"
- #
- # exchange1 = (req, expected)
- # self.current_mid += 1
- #
- # req = Request()
- # req.code = defines.Codes.POST.number
- # req.uri_path = path
- # req.type = defines.Types["CON"]
- # req._mid = self.current_mid
- # req.destination = self.server_address
- # option = Option()
- # option.number = defines.OptionRegistry.ETAG.number
- # option.value = "test"
- # req.add_option(option)
- # req.del_option_by_name("ETag")
- # req.payload = "test"
- #
- # expected = Response()
- # expected.type = defines.Types["ACK"]
- # expected._mid = self.current_mid
- # expected.code = defines.Codes.CREATED.number
- # expected.token = None
- # expected.payload = None
- # expected.location_path = "storage/new_res"
- #
- # exchange2 = (req, expected)
- # self.current_mid += 1
- #
- # req = Request()
- # req.code = defines.Codes.POST.number
- # req.uri_path = path
- # req.type = defines.Types["CON"]
- # req._mid = self.current_mid
- # req.destination = self.server_address
- # option = Option()
- # option.number = defines.OptionRegistry.ETAG.number
- # option.value = "test"
- # req.add_option(option)
- # del req.etag
- # req.payload = "test"
- #
- # expected = Response()
- # expected.type = defines.Types["ACK"]
- # expected._mid = self.current_mid
- # expected.code = defines.Codes.CREATED.number
- # expected.token = None
- # expected.payload = None
- # expected.location_path = "storage/new_res"
- #
- # exchange3 = (req, expected)
- # self.current_mid += 1
- #
- # self._test_with_client([exchange1, exchange2, exchange3])
- #
- # def test_content_type(self):
- # print "TEST_CONTENT_TYPE"
- # path = "/storage/new_res"
- #
- # req = Request()
- # req.code = defines.Codes.POST.number
- # req.uri_path = path
- # req.type = defines.Types["CON"]
- # req._mid = self.current_mid
- # req.destination = self.server_address
- # req.payload = "test"
- # req.content_type = defines.Content_types["application/xml"]
- #
- # expected = Response()
- # expected.type = defines.Types["ACK"]
- # expected._mid = self.current_mid
- # expected.code = defines.Codes.CREATED.number
- # expected.token = None
- # expected.payload = None
- # expected.location_path = "storage/new_res"
- #
- # exchange1 = (req, expected)
- # self.current_mid += 1
- #
- # req = Request()
- # req.code = defines.Codes.GET.number
- # req.uri_path = path
- # req.type = defines.Types["CON"]
- # req._mid = self.current_mid
- # req.destination = self.server_address
- #
- # expected = Response()
- # expected.type = defines.Types["ACK"]
- # expected._mid = self.current_mid
- # expected.code = defines.Codes.CONTENT.number
- # expected.token = None
- # expected.payload = "Basic Resource"
- #
- # exchange2 = (req, expected)
- # self.current_mid += 1
- #
- # req = Request()
- # req.code = defines.Codes.PUT.number
- # req.uri_path = path
- # req.type = defines.Types["CON"]
- # req._mid = self.current_mid
- # req.destination = self.server_address
- # req.payload = "test"
- #
- # expected = Response()
- # expected.type = defines.Types["ACK"]
- # expected._mid = self.current_mid
- # expected.code = defines.Codes.CHANGED.number
- # expected.token = None
- # expected.payload = None
- #
- # exchange3 = (req, expected)
- # self.current_mid += 1
- #
- # req = Request()
- # req.code = defines.Codes.GET.number
- # req.uri_path = path
- # req.type = defines.Types["CON"]
- # req._mid = self.current_mid
- # req.destination = self.server_address
- #
- # expected = Response()
- # expected.type = defines.Types["ACK"]
- # expected._mid = self.current_mid
- # expected.code = defines.Codes.CONTENT.number
- # expected.token = None
- # expected.payload = "test"
- #
- # exchange4 = (req, expected)
- # self.current_mid += 1
- #
- # req = Request()
- # req.code = defines.Codes.GET.number
- # req.uri_path = path
- # req.type = defines.Types["CON"]
- # req._mid = self.current_mid
- # req.destination = self.server_address
- # req.accept = defines.Content_types["application/xml"]
- #
- # expected = Response()
- # expected.type = defines.Types["ACK"]
- # expected._mid = self.current_mid
- # expected.code = defines.Codes.CONTENT.number
- # expected.token = None
- # expected.payload = "test"
- #
- # exchange5 = (req, expected)
- # self.current_mid += 1
- #
- # req = Request()
- # req.code = defines.Codes.GET.number
- # req.uri_path = path
- # req.type = defines.Types["CON"]
- # req._mid = self.current_mid
- # req.destination = self.server_address
- # req.accept = defines.Content_types["application/json"]
- #
- # expected = Response()
- # expected.type = defines.Types["ACK"]
- # expected._mid = self.current_mid
- # expected.code = defines.Codes.NOT_ACCEPTABLE.number
- # expected.token = None
- # expected.payload = None
- # expected.content_type = defines.Content_types["application/json"]
- #
- # exchange6 = (req, expected)
- # self.current_mid += 1
- #
- # req = Request()
- # req.code = defines.Codes.GET.number
- # req.uri_path = "/xml"
- # req.type = defines.Types["CON"]
- # req._mid = self.current_mid
- # req.destination = self.server_address
- #
- # expected = Response()
- # expected.type = defines.Types["ACK"]
- # expected._mid = self.current_mid
- # expected.code = defines.Codes.CONTENT.number
- # expected.token = None
- # expected.payload = "0"
- # expected.content_type = defines.Content_types["application/xml"]
- #
- # print(expected.pretty_print())
- #
- # exchange7 = (req, expected)
- # self.current_mid += 1
- #
- # self._test_with_client([exchange1, exchange2, exchange3, exchange4, exchange5, exchange6, exchange7])
- #
- # def test_ETAG(self):
- # print "TEST_ETAG"
- # path = "/etag"
- #
- # req = Request()
- # req.code = defines.Codes.GET.number
- # req.uri_path = path
- # req.type = defines.Types["CON"]
- # req._mid = self.current_mid
- # req.destination = self.server_address
- #
- # expected = Response()
- # expected.type = defines.Types["ACK"]
- # expected._mid = self.current_mid
- # expected.code = defines.Codes.CONTENT.number
- # expected.token = None
- # expected.payload = "ETag resource"
- # expected.etag = "0"
- #
- # exchange1 = (req, expected)
- # self.current_mid += 1
- #
- # req = Request()
- # req.code = defines.Codes.POST.number
- # req.uri_path = path
- # req.type = defines.Types["CON"]
- # req._mid = self.current_mid
- # req.destination = self.server_address
- # req.payload = "test"
- #
- # expected = Response()
- # expected.type = defines.Types["ACK"]
- # expected._mid = self.current_mid
- # expected.code = defines.Codes.CREATED.number
- # expected.token = None
- # expected.payload = None
- # expected.location_path = path
- # expected.etag = "1"
- #
- # exchange2 = (req, expected)
- # self.current_mid += 1
- #
- # req = Request()
- # req.code = defines.Codes.GET.number
- # req.uri_path = path
- # req.type = defines.Types["CON"]
- # req._mid = self.current_mid
- # req.destination = self.server_address
- # req.etag = "1"
- #
- # expected = Response()
- # expected.type = defines.Types["ACK"]
- # expected._mid = self.current_mid
- # expected.code = defines.Codes.VALID.number
- # expected.token = None
- # expected.payload = "test"
- # expected.etag = "1"
- #
- # exchange3 = (req, expected)
- # self.current_mid += 1
- #
- # self._test_with_client([exchange1, exchange2, exchange3])
- #
- # def test_child(self):
- # print "TEST_CHILD"
- # path = "/child"
- #
- # req = Request()
- # req.code = defines.Codes.POST.number
- # req.uri_path = path
- # req.type = defines.Types["CON"]
- # req._mid = self.current_mid
- # req.destination = self.server_address
- # req.payload = "test"
- #
- # expected = Response()
- # expected.type = defines.Types["ACK"]
- # expected._mid = self.current_mid
- # expected.code = defines.Codes.CREATED.number
- # expected.token = None
- # expected.payload = None
- # expected.location_path = path
- #
- # exchange1 = (req, expected)
- # self.current_mid += 1
- #
- # req = Request()
- # req.code = defines.Codes.GET.number
- # req.uri_path = path
- # req.type = defines.Types["CON"]
- # req._mid = self.current_mid
- # req.destination = self.server_address
- #
- # expected = Response()
- # expected.type = defines.Types["ACK"]
- # expected._mid = self.current_mid
- # expected.code = defines.Codes.CONTENT.number
- # expected.token = None
- # expected.payload = "test"
- #
- # exchange2 = (req, expected)
- # self.current_mid += 1
- #
- # req = Request()
- # req.code = defines.Codes.PUT.number
- # req.uri_path = path
- # req.type = defines.Types["CON"]
- # req._mid = self.current_mid
- # req.destination = self.server_address
- # req.payload = "testPUT"
- #
- # expected = Response()
- # expected.type = defines.Types["ACK"]
- # expected._mid = self.current_mid
- # expected.code = defines.Codes.CHANGED.number
- # expected.token = None
- # expected.payload = None
- #
- # exchange3 = (req, expected)
- # self.current_mid += 1
- #
- # req = Request()
- # req.code = defines.Codes.DELETE.number
- # req.uri_path = path
- # req.type = defines.Types["CON"]
- # req._mid = self.current_mid
- # req.destination = self.server_address
- #
- # expected = Response()
- # expected.type = defines.Types["ACK"]
- # expected._mid = self.current_mid
- # expected.code = defines.Codes.DELETED.number
- # expected.token = None
- # expected.payload = None
- #
- # exchange4 = (req, expected)
- # self.current_mid += 1
- #
- # self._test_with_client([exchange1, exchange2, exchange3, exchange4])
- #
- # def test_not_found(self):
- # print "TEST_not_found"
- # path = "/not_found"
- #
- # req = Request()
- # req.code = defines.Codes.GET.number
- # req.uri_path = path
- # req.type = defines.Types["CON"]
- # req._mid = self.current_mid
- # req.destination = self.server_address
- # req.token = 100
- #
- # expected = Response()
- # expected.type = defines.Types["ACK"]
- # expected._mid = self.current_mid
- # expected.code = defines.Codes.NOT_FOUND.number
- # expected.token = "100"
- # expected.payload = None
- #
- # exchange1 = (req, expected)
- # self.current_mid += 1
- #
- # req = Request()
- # req.code = defines.Codes.POST.number
- # req.uri_path = path
- # req.type = defines.Types["CON"]
- # req._mid = self.current_mid
- # req.destination = self.server_address
- # req.payload = "test"
- #
- # expected = Response()
- # expected.type = defines.Types["ACK"]
- # expected._mid = self.current_mid
- # expected.code = defines.Codes.METHOD_NOT_ALLOWED.number
- # expected.token = None
- #
- # exchange2 = (req, expected)
- # self.current_mid += 1
- #
- # req = Request()
- # req.code = defines.Codes.PUT.number
- # req.uri_path = path
- # req.type = defines.Types["CON"]
- # req._mid = self.current_mid
- # req.destination = self.server_address
- # req.payload = "testPUT"
- #
- # expected = Response()
- # expected.type = defines.Types["ACK"]
- # expected._mid = self.current_mid
- # expected.code = defines.Codes.NOT_FOUND.number
- # expected.token = None
- # expected.payload = None
- #
- # exchange3 = (req, expected)
- # self.current_mid += 1
- #
- # req = Request()
- # req.code = defines.Codes.DELETE.number
- # req.uri_path = path
- # req.type = defines.Types["CON"]
- # req._mid = self.current_mid
- # req.destination = self.server_address
- #
- # expected = Response()
- # expected.type = defines.Types["ACK"]
- # expected._mid = self.current_mid
- # expected.code = defines.Codes.NOT_FOUND.number
- # expected.token = None
- # expected.payload = None
- #
- # exchange4 = (req, expected)
- # self.current_mid += 1
- #
- # self._test_with_client([exchange1, exchange2, exchange3, exchange4])
- #
- # def test_invalid(self):
- # print("TEST_INVALID")
- #
- # # version
- # req = ("\x00\x01\x8c\xda", self.server_address)
- #
- # expected = Response()
- # expected.type = defines.Types["RST"]
- # expected._mid = None
- # expected.code = defines.Codes.BAD_REQUEST.number
- #
- # exchange1 = (req, expected)
- #
- # # version
- # req = ("\x40", self.server_address)
- #
- # expected = Response()
- # expected.type = defines.Types["RST"]
- # expected._mid = None
- # expected.code = defines.Codes.BAD_REQUEST.number
- #
- # exchange2 = (req, expected)
- #
- # # code
- # req = ("\x40\x05\x8c\xda", self.server_address)
- #
- # expected = Response()
- # expected.type = defines.Types["RST"]
- # expected._mid = None
- # expected.code = defines.Codes.BAD_REQUEST.number
- #
- # exchange3 = (req, expected)
- #
- # # option
- # req = ("\x40\x01\x8c\xda\x94", self.server_address)
- #
- # expected = Response()
- # expected.type = defines.Types["RST"]
- # expected._mid = None
- # expected.code = defines.Codes.BAD_REQUEST.number
- #
- # exchange4 = (req, expected)
- #
- # # payload marker
- # req = ("\x40\x02\x8c\xda\x75\x62\x61\x73\x69\x63\xff", self.server_address)
- #
- # expected = Response()
- # expected.type = defines.Types["RST"]
- # expected._mid = None
- # expected.code = defines.Codes.BAD_REQUEST.number
- #
- # exchange5 = (req, expected)
- #
- # self._test_datagram([exchange1, exchange2, exchange3, exchange4, exchange5])
-
- def test_post_block_big_client(self):
- print("TEST_POST_BLOCK_BIG_CLIENT")
+ def test_post_block_big(self):
+ print("TEST_POST_BLOCK_BIG")
path = "/Server1/big"
- req = Request()
+ req = Request()
req.code = defines.Codes.POST.number
req.uri_path = path
req.type = defines.Types["CON"]
req._mid = self.current_mid
req.destination = self.server_address
- req.payload = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras sollicitudin fermentum ornare. " \
- "Cras accumsan tellus quis dui lacinia eleifend. Proin ultrices rutrum orci vitae luctus. " \
- "Nullam malesuada pretium elit, at aliquam odio vehicula in. Etiam nec maximus elit. " \
- "Etiam at erat ac ex ornare feugiat. Curabitur sed malesuada orci, id aliquet nunc. Phasellus " \
- "nec leo luctus, blandit lorem sit amet, interdum metus. Duis efficitur volutpat magna, ac " \
- "ultricies nibh aliquet sit amet. Etiam tempor egestas augue in hendrerit. Nunc eget augue " \
- "ultricies, dignissim lacus et, vulputate dolor. Nulla eros odio, fringilla vel massa ut, " \
- "facilisis cursus quam. Fusce faucibus lobortis congue. Fusce consectetur porta neque, id " \
- "sollicitudin velit maximus eu. Sed pharetra leo quam, vel finibus turpis cursus ac. " \
- "Aenean ac nisi massa. Cras commodo arcu nec ante tristique ullamcorper. Quisque eu hendrerit" \
- " urna. Cras fringilla eros ut nunc maximus, non porta nisl mollis. Aliquam in rutrum massa." \
- " Praesent tristique turpis dui, at ultricies lorem fermentum at. Vivamus sit amet ornare neque, " \
- "a imperdiet nisl. Quisque a iaculis libero, id tempus lacus. Aenean convallis est non justo " \
- "consectetur, a hendrerit enim consequat. In accumsan ante a egestas luctus. Etiam quis neque " \
- "nec eros vestibulum faucibus. Nunc viverra ipsum lectus, vel scelerisque dui dictum a. Ut orci " \
- "enim, ultrices a ultrices nec, pharetra in quam. Donec accumsan sit amet eros eget fermentum." \
- "Vivamus ut odio ac odio malesuada accumsan. Aenean vehicula diam at tempus ornare. Phasellus " \
- "dictum mauris a mi consequat, vitae mattis nulla fringilla. Ut laoreet tellus in nisl efficitur," \
- " a luctus justo tempus. Fusce finibus libero eget velit finibus iaculis. Morbi rhoncus purus " \
- "vel vestibulum ullamcorper. Sed ac metus in urna fermentum feugiat. Nulla nunc diam, sodales " \
- "aliquam mi id, varius porta nisl. Praesent vel nibh ac turpis rutrum laoreet at non odio. " \
- "Phasellus ut posuere mi. Suspendisse malesuada velit nec mauris convallis porta. Vivamus " \
- "sed ultrices sapien, at cras amet."
+ req.payload = "Lorem ipsum dolo"
+ req.block1 = (0, 1, 16)
expected = Response()
expected.type = defines.Types["ACK"]
expected._mid = None
- expected.code = defines.Codes.CHANGED.number
+ expected.code = defines.Codes.CONTINUE.number
expected.token = None
expected.payload = None
+ expected.block1 = (0, 1, 16)
exchange1 = (req, expected)
self.current_mid += 1
- self._test_with_client([exchange1])
+ req = Request()
+ req.code = defines.Codes.POST.number
+ req.uri_path = path
+ req.type = defines.Types["CON"]
+ req._mid = self.current_mid
+ req.destination = self.server_address
+ req.payload = "r sit amet, consectetur adipisci"
+ req.block1 = (1, 1, 32)
- def test_observe_client(self):
- print("TEST_OBSERVE_CLIENT")
- path = "/Server1/basic"
+ expected = Response()
+ expected.type = defines.Types["ACK"]
+ expected._mid = None
+ expected.code = defines.Codes.CONTINUE.number
+ expected.token = None
+ expected.payload = None
+ expected.block1 = (1, 1, 32)
+
+ exchange2 = (req, expected)
+ self.current_mid += 1
req = Request()
- req.code = defines.Codes.GET.number
+ req.code = defines.Codes.POST.number
req.uri_path = path
req.type = defines.Types["CON"]
req._mid = self.current_mid
req.destination = self.server_address
- req.observe = 0
+ req.payload = "ng elit. Sed ut ultrices ligula. Pellentesque purus augue, cursu"
+ req.block1 = (2, 1, 64)
expected = Response()
expected.type = defines.Types["ACK"]
expected._mid = None
- expected.code = defines.Codes.CONTENT.number
+ expected.code = defines.Codes.CONTINUE.number
+ expected.token = None
+ expected.payload = None
+ expected.block1 = (2, 1, 64)
+
+ exchange3 = (req, expected)
+ self.current_mid += 1
+
+ req = Request()
+ req.code = defines.Codes.POST.number
+ req.uri_path = path
+ req.type = defines.Types["CON"]
+ req._mid = self.current_mid
+ req.destination = self.server_address
+ req.payload = "s ultricies est in, vehicula congue metus. Vestibulum vel justo lacinia, porttitor quam vitae, " \
+ "feugiat sapien. Quisque finibus, "
+ req.block1 = (3, 1, 128)
+
+ expected = Response()
+ expected.type = defines.Types["ACK"]
+ expected._mid = None
+ expected.code = defines.Codes.CONTINUE.number
+ expected.token = None
+ expected.payload = None
+ expected.block1 = (3, 1, 128)
+
+ exchange4 = (req, expected)
+ self.current_mid += 1
+
+ req = Request()
+ req.code = defines.Codes.POST.number
+ req.uri_path = path
+ req.type = defines.Types["CON"]
+ req._mid = self.current_mid
+ req.destination = self.server_address
+ req.payload = "nisi vitae rhoncus malesuada, augue mauris dapibus tellus, sit amet venenatis libero" \
+ " libero sed lorem. In pharetra turpis sed eros porta mollis. Quisque dictum dolor nisl," \
+ " imperdiet tincidunt augue malesuada vitae. Donec non felis urna. Suspendisse at hend"
+ req.block1 = (4, 1, 256)
+
+ expected = Response()
+ expected.type = defines.Types["ACK"]
+ expected._mid = None
+ expected.code = defines.Codes.CONTINUE.number
+ expected.token = None
+ expected.payload = None
+ expected.block1 = (4, 1, 256)
+
+ exchange5 = (req, expected)
+ self.current_mid += 1
+
+ req = Request()
+ req.code = defines.Codes.POST.number
+ req.uri_path = path
+ req.type = defines.Types["CON"]
+ req._mid = self.current_mid
+ req.destination = self.server_address
+ req.payload = "rerit ex, quis aliquet ante. Vivamus ultrices dolor at elit tincidunt, eget fringilla " \
+ "ligula vestibulum. In molestie sagittis nibh, ut efficitur tellus faucibus non. Maecenas " \
+ "posuere elementum faucibus. Morbi nisi diam, molestie non feugiat et, elementum eget magna." \
+ " Donec vel sem facilisis quam viverra ultrices nec eu lacus. Sed molestie nisi id ultrices " \
+ "interdum. Curabitur pharetra sed tellus in dignissim. Duis placerat aliquam metus, volutpat " \
+ "elementum augue aliquam a. Nunc sed dolor at orci maximus portt"
+ req.block1 = (5, 1, 512)
+
+ expected = Response()
+ expected.type = defines.Types["ACK"]
+ expected._mid = None
+ expected.code = defines.Codes.CONTINUE.number
+ expected.token = None
+ expected.payload = None
+ expected.block1 = (5, 1, 512)
+
+ exchange6 = (req, expected)
+ self.current_mid += 1
+
+ req = Request()
+ req.code = defines.Codes.POST.number
+ req.uri_path = path
+ req.type = defines.Types["CON"]
+ req._mid = self.current_mid
+ req.destination = self.server_address
+ req.payload = "itor ac sit amet eros. Mauris et nisi in tortor pharetra rhoncus sit amet hendrerit metus. " \
+ "Integer laoreet placerat cursus. Nam a nulla ex. Donec laoreet sagittis libero quis " \
+ "imperdiet. Vivamus facilisis turpis nec rhoncus venenatis. Duis pulvinar tellus vel quam " \
+ "maximus imperdiet. Mauris eget nibh orci. Duis ut cursus nibh. Nulla sed commodo elit. " \
+ "Suspendisse ac eros lacinia, mattis turpis at, porttitor justo. Vivamus molestie " \
+ "tincidunt libero. Etiam porttitor lacus odio, at lobortis tortor scelerisque nec. " \
+ "Nullam non ante vel nisi ultrices consectetur. Maecenas massa felis, tempor eget " \
+ "malesuada eget, pretium eu sapien. Vivamus dapibus ante erat, non faucibus orci sodales " \
+ "sit amet. Cras magna felis, sodales eget magna sed, eleifend rutrum ligula. Vivamus interdum " \
+ "enim enim, eu facilisis tortor dignissim quis. Ut metus nulla, mattis non lorem et, " \
+ "elementum ultrices orci. Quisque eleifend, arcu vitae ullamcorper pulvinar, ipsum ex " \
+ "sodales arcu, eget consectetur mauris metus ac tortor. Donec id sem felis. Maur"
+ req.block1 = (6, 0, 1024)
+
+ expected = Response()
+ expected.type = defines.Types["ACK"]
+ expected._mid = None
+ expected.code = defines.Codes.CHANGED.number
+ expected.token = None
+ expected.payload = None
+
+ exchange7 = (req, expected)
+ self.current_mid += 1
+
+ self._test_plugtest([exchange1, exchange2, exchange3, exchange4, exchange5, exchange6, exchange7])
+
+ def test_options(self):
+ print("TEST_OPTIONS")
+ path = "/Server1/storage/new_res"
+
+ req = Request()
+ req.code = defines.Codes.POST.number
+ req.uri_path = path
+ req.type = defines.Types["CON"]
+ req._mid = self.current_mid
+ req.destination = self.server_address
+ option = Option()
+ option.number = defines.OptionRegistry.ETAG.number
+ option.value = "test"
+ req.add_option(option)
+ req.del_option(option)
+ req.payload = "test"
+
+ expected = Response()
+ expected.type = defines.Types["ACK"]
+ expected._mid = self.current_mid
+ expected.code = defines.Codes.CREATED.number
expected.token = None
expected.payload = None
+ expected.location_path = "Server1/storage/new_res"
exchange1 = (req, expected)
+ self.current_mid += 1
- self._test_with_client_observe([exchange1])
+ req = Request()
+ req.code = defines.Codes.POST.number
+ req.uri_path = path
+ req.type = defines.Types["CON"]
+ req._mid = self.current_mid
+ req.destination = self.server_address
+ option = Option()
+ option.number = defines.OptionRegistry.ETAG.number
+ option.value = "test"
+ req.add_option(option)
+ req.del_option_by_name("ETag")
+ req.payload = "test"
+
+ expected = Response()
+ expected.type = defines.Types["ACK"]
+ expected._mid = self.current_mid
+ expected.code = defines.Codes.CREATED.number
+ expected.token = None
+ expected.payload = None
+ expected.location_path = "Server1/storage/new_res"
+
+ exchange2 = (req, expected)
+ self.current_mid += 1
+
+ req = Request()
+ req.code = defines.Codes.POST.number
+ req.uri_path = path
+ req.type = defines.Types["CON"]
+ req._mid = self.current_mid
+ req.destination = self.server_address
+ option = Option()
+ option.number = defines.OptionRegistry.ETAG.number
+ option.value = "test"
+ req.add_option(option)
+ del req.etag
+ req.payload = "test"
+
+ expected = Response()
+ expected.type = defines.Types["ACK"]
+ expected._mid = self.current_mid
+ expected.code = defines.Codes.CREATED.number
+ expected.token = None
+ expected.payload = None
+ expected.location_path = "Server1/storage/new_res"
+
+ exchange3 = (req, expected)
+ self.current_mid += 1
+
+ self._test_with_client([exchange1, exchange2, exchange3])
+
+ def test_content_type(self):
+ print("TEST_CONTENT_TYPE")
+ path = "/Server1/storage/new_res"
+
+ req = Request()
+ req.code = defines.Codes.POST.number
+ req.uri_path = path
+ req.type = defines.Types["CON"]
+ req._mid = self.current_mid
+ req.destination = self.server_address
+ req.payload = "test"
+ req.content_type = defines.Content_types["application/xml"]
+
+ expected = Response()
+ expected.type = defines.Types["ACK"]
+ expected._mid = self.current_mid
+ expected.code = defines.Codes.CREATED.number
+ expected.token = None
+ expected.payload = None
+ expected.location_path = "Server1/storage/new_res"
+
+ exchange1 = (req, expected)
+ self.current_mid += 1
- def test_duplicate(self):
- print("TEST_DUPLICATE")
- path = "/Server1/basic"
req = Request()
req.code = defines.Codes.GET.number
req.uri_path = path
@@ -1447,35 +993,486 @@ class Tests(unittest.TestCase):
expected._mid = self.current_mid
expected.code = defines.Codes.CONTENT.number
expected.token = None
+ expected.payload = "Basic Resource"
+ exchange2 = (req, expected)
self.current_mid += 1
- self._test_plugtest([(req, expected), (req, expected)])
- def test_duplicate_not_completed(self):
- print("TEST_DUPLICATE_NOT_COMPLETED")
- path = "/Server1/long"
req = Request()
- req.code = defines.Codes.GET.number
+ req.code = defines.Codes.PUT.number
req.uri_path = path
req.type = defines.Types["CON"]
req._mid = self.current_mid
req.destination = self.server_address
+ req.payload = "test"
expected = Response()
expected.type = defines.Types["ACK"]
expected._mid = self.current_mid
- expected.code = None
+ expected.code = defines.Codes.CHANGED.number
expected.token = None
+ expected.payload = None
- expected2 = Response()
- expected2.type = defines.Types["CON"]
- expected2._mid = None
- expected2.code = defines.Codes.CONTENT.number
- expected2.token = None
+ exchange3 = (req, expected)
+ self.current_mid += 1
+
+ req = Request()
+ req.code = defines.Codes.GET.number
+ req.uri_path = path
+ req.type = defines.Types["CON"]
+ req._mid = self.current_mid
+ req.destination = self.server_address
+
+ expected = Response()
+ expected.type = defines.Types["ACK"]
+ expected._mid = self.current_mid
+ expected.code = defines.Codes.CONTENT.number
+ expected.token = None
+ expected.payload = "test"
+ exchange4 = (req, expected)
self.current_mid += 1
- self._test_plugtest([(req, None), (req, expected), (None, expected2)])
-if __name__ == '__main__':
- unittest.main()
+ req = Request()
+ req.code = defines.Codes.GET.number
+ req.uri_path = path
+ req.type = defines.Types["CON"]
+ req._mid = self.current_mid
+ req.destination = self.server_address
+ req.accept = defines.Content_types["application/xml"]
+ expected = Response()
+ expected.type = defines.Types["ACK"]
+ expected._mid = self.current_mid
+ expected.code = defines.Codes.CONTENT.number
+ expected.token = None
+ expected.payload = "test"
+
+ exchange5 = (req, expected)
+ self.current_mid += 1
+
+ req = Request()
+ req.code = defines.Codes.GET.number
+ req.uri_path = path
+ req.type = defines.Types["CON"]
+ req._mid = self.current_mid
+ req.destination = self.server_address
+ req.accept = defines.Content_types["application/json"]
+
+ expected = Response()
+ expected.type = defines.Types["ACK"]
+ expected._mid = self.current_mid
+ expected.code = defines.Codes.NOT_ACCEPTABLE.number
+ expected.token = None
+ expected.payload = None
+ # expected.content_type = defines.Content_types["application/json"]
+
+ exchange6 = (req, expected)
+ self.current_mid += 1
+
+ req = Request()
+ req.code = defines.Codes.GET.number
+ req.uri_path = "/Server1/xml"
+ req.type = defines.Types["CON"]
+ req._mid = self.current_mid
+ req.destination = self.server_address
+
+ expected = Response()
+ expected.type = defines.Types["ACK"]
+ expected._mid = self.current_mid
+ expected.code = defines.Codes.CONTENT.number
+ expected.token = None
+ expected.payload = "0"
+ expected.content_type = defines.Content_types["application/xml"]
+
+ exchange7 = (req, expected)
+ self.current_mid += 1
+
+ self._test_with_client([exchange1, exchange2, exchange3, exchange4, exchange5, exchange6, exchange7])
+
+ def test_ETAG(self):
+ print("TEST_ETAG")
+ path = "/Server1/etag"
+
+ req = Request()
+ req.code = defines.Codes.GET.number
+ req.uri_path = path
+ req.type = defines.Types["CON"]
+ req._mid = self.current_mid
+ req.destination = self.server_address
+
+ expected = Response()
+ expected.type = defines.Types["ACK"]
+ expected._mid = self.current_mid
+ expected.code = defines.Codes.CONTENT.number
+ expected.token = None
+ expected.payload = "ETag resource"
+ expected.etag = "0"
+
+ exchange1 = (req, expected)
+ self.current_mid += 1
+
+ req = Request()
+ req.code = defines.Codes.POST.number
+ req.uri_path = path
+ req.type = defines.Types["CON"]
+ req._mid = self.current_mid
+ req.destination = self.server_address
+ req.payload = "test"
+
+ expected = Response()
+ expected.type = defines.Types["ACK"]
+ expected._mid = self.current_mid
+ expected.code = defines.Codes.CHANGED.number
+ expected.token = None
+ expected.payload = None
+ expected.etag = "1"
+
+ exchange2 = (req, expected)
+ self.current_mid += 1
+
+ req = Request()
+ req.code = defines.Codes.GET.number
+ req.uri_path = path
+ req.type = defines.Types["CON"]
+ req._mid = self.current_mid
+ req.destination = self.server_address
+ req.etag = "1"
+
+ expected = Response()
+ expected.type = defines.Types["ACK"]
+ expected._mid = self.current_mid
+ expected.code = defines.Codes.VALID.number
+ expected.token = None
+ expected.payload = None
+ expected.etag = "1"
+
+ exchange3 = (req, expected)
+ self.current_mid += 1
+
+ self._test_with_client([exchange1, exchange2, exchange3])
+
+ def test_child(self):
+ print("TEST_CHILD")
+ path = "/Server1/child"
+
+ req = Request()
+ req.code = defines.Codes.POST.number
+ req.uri_path = path
+ req.type = defines.Types["CON"]
+ req._mid = self.current_mid
+ req.destination = self.server_address
+ req.payload = "test"
+
+ expected = Response()
+ expected.type = defines.Types["ACK"]
+ expected._mid = self.current_mid
+ expected.code = defines.Codes.CREATED.number
+ expected.token = None
+ expected.payload = None
+ expected.location_path = "Server1/child"
+
+ exchange1 = (req, expected)
+ self.current_mid += 1
+
+ req = Request()
+ req.code = defines.Codes.GET.number
+ req.uri_path = path
+ req.type = defines.Types["CON"]
+ req._mid = self.current_mid
+ req.destination = self.server_address
+
+ expected = Response()
+ expected.type = defines.Types["ACK"]
+ expected._mid = self.current_mid
+ expected.code = defines.Codes.CONTENT.number
+ expected.token = None
+ expected.payload = "test"
+
+ exchange2 = (req, expected)
+ self.current_mid += 1
+
+ req = Request()
+ req.code = defines.Codes.PUT.number
+ req.uri_path = path
+ req.type = defines.Types["CON"]
+ req._mid = self.current_mid
+ req.destination = self.server_address
+ req.payload = "testPUT"
+
+ expected = Response()
+ expected.type = defines.Types["ACK"]
+ expected._mid = self.current_mid
+ expected.code = defines.Codes.CHANGED.number
+ expected.token = None
+ expected.payload = None
+
+ exchange3 = (req, expected)
+ self.current_mid += 1
+
+ req = Request()
+ req.code = defines.Codes.DELETE.number
+ req.uri_path = path
+ req.type = defines.Types["CON"]
+ req._mid = self.current_mid
+ req.destination = self.server_address
+
+ expected = Response()
+ expected.type = defines.Types["ACK"]
+ expected._mid = self.current_mid
+ expected.code = defines.Codes.DELETED.number
+ expected.token = None
+ expected.payload = None
+
+ exchange4 = (req, expected)
+ self.current_mid += 1
+
+ self._test_with_client([exchange1, exchange2, exchange3, exchange4])
+
+ def test_not_found(self):
+ print("TEST_not_found")
+ path = "/Server1/not_found"
+
+ req = Request()
+ req.code = defines.Codes.GET.number
+ req.uri_path = path
+ req.type = defines.Types["CON"]
+ req._mid = self.current_mid
+ req.destination = self.server_address
+ req.token = 100
+
+ expected = Response()
+ expected.type = defines.Types["ACK"]
+ expected._mid = self.current_mid
+ expected.code = defines.Codes.NOT_FOUND.number
+ expected.token = 100
+ expected.payload = None
+
+ exchange1 = (req, expected)
+ self.current_mid += 1
+
+ req = Request()
+ req.code = defines.Codes.POST.number
+ req.uri_path = path
+ req.type = defines.Types["CON"]
+ req._mid = self.current_mid
+ req.destination = self.server_address
+ req.payload = "testPOST"
+
+ expected = Response()
+ expected.type = defines.Types["ACK"]
+ expected._mid = self.current_mid
+ expected.code = defines.Codes.METHOD_NOT_ALLOWED.number
+ expected.token = None
+
+ exchange2 = (req, expected)
+ self.current_mid += 1
+
+ req = Request()
+ req.code = defines.Codes.PUT.number
+ req.uri_path = path
+ req.type = defines.Types["CON"]
+ req._mid = self.current_mid
+ req.destination = self.server_address
+ req.payload = "testPUT"
+
+ expected = Response()
+ expected.type = defines.Types["ACK"]
+ expected._mid = self.current_mid
+ expected.code = defines.Codes.NOT_FOUND.number
+ expected.token = None
+ expected.payload = None
+
+ exchange3 = (req, expected)
+ self.current_mid += 1
+
+ req = Request()
+ req.code = defines.Codes.DELETE.number
+ req.uri_path = path
+ req.type = defines.Types["CON"]
+ req._mid = self.current_mid
+ req.destination = self.server_address
+
+ expected = Response()
+ expected.type = defines.Types["ACK"]
+ expected._mid = self.current_mid
+ expected.code = defines.Codes.NOT_FOUND.number
+ expected.token = None
+ expected.payload = None
+
+ exchange4 = (req, expected)
+ self.current_mid += 1
+
+ self._test_with_client([exchange1, exchange2, exchange3, exchange4])
+
+ def test_invalid(self):
+ print("TEST_INVALID")
+
+ # version
+ req = (b'\x00\x01\x8c\xda', self.server_address)
+
+ expected = Response()
+ expected.type = defines.Types["RST"]
+ expected._mid = None
+ expected.code = defines.Codes.BAD_REQUEST.number
+
+ exchange1 = (req, expected)
+
+ # version
+ req = (b'\x40', self.server_address)
+
+ expected = Response()
+ expected.type = defines.Types["RST"]
+ expected._mid = None
+ expected.code = defines.Codes.BAD_REQUEST.number
+
+ exchange2 = (req, expected)
+
+ # code
+ req = (b'\x40\x05\x8c\xda', self.server_address)
+
+ expected = Response()
+ expected.type = defines.Types["RST"]
+ expected._mid = None
+ expected.code = defines.Codes.BAD_REQUEST.number
+
+ exchange3 = (req, expected)
+
+ # get/option
+ req = (b'\x40\x01\x8c\xda\x94', self.server_address)
+
+ expected = Response()
+ expected.type = defines.Types["RST"]
+ expected._mid = None
+ expected.code = defines.Codes.BAD_REQUEST.number
+
+ exchange4 = (req, expected)
+
+ # post/payload marker
+ req = (b'\x40\x02\x8c\xda\x75\x62\x61\x73\x69\x63\xff', self.server_address)
+
+ expected = Response()
+ expected.type = defines.Types["RST"]
+ expected._mid = None
+ expected.code = defines.Codes.BAD_REQUEST.number
+
+ exchange5 = (req, expected)
+
+ self._test_datagram([exchange1, exchange2, exchange3, exchange4, exchange5])
+
+ def test_post_block_big_client(self):
+ print("TEST_POST_BLOCK_BIG_CLIENT")
+ path = "/Server1/big"
+ req = Request()
+
+ req.code = defines.Codes.POST.number
+ req.uri_path = path
+ req.type = defines.Types["CON"]
+ req._mid = self.current_mid
+ req.destination = self.server_address
+ req.payload = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras sollicitudin fermentum ornare. " \
+ "Cras accumsan tellus quis dui lacinia eleifend. Proin ultrices rutrum orci vitae luctus. " \
+ "Nullam malesuada pretium elit, at aliquam odio vehicula in. Etiam nec maximus elit. " \
+ "Etiam at erat ac ex ornare feugiat. Curabitur sed malesuada orci, id aliquet nunc. Phasellus " \
+ "nec leo luctus, blandit lorem sit amet, interdum metus. Duis efficitur volutpat magna, ac " \
+ "ultricies nibh aliquet sit amet. Etiam tempor egestas augue in hendrerit. Nunc eget augue " \
+ "ultricies, dignissim lacus et, vulputate dolor. Nulla eros odio, fringilla vel massa ut, " \
+ "facilisis cursus quam. Fusce faucibus lobortis congue. Fusce consectetur porta neque, id " \
+ "sollicitudin velit maximus eu. Sed pharetra leo quam, vel finibus turpis cursus ac. " \
+ "Aenean ac nisi massa. Cras commodo arcu nec ante tristique ullamcorper. Quisque eu hendrerit" \
+ " urna. Cras fringilla eros ut nunc maximus, non porta nisl mollis. Aliquam in rutrum massa." \
+ " Praesent tristique turpis dui, at ultricies lorem fermentum at. Vivamus sit amet ornare neque, " \
+ "a imperdiet nisl. Quisque a iaculis libero, id tempus lacus. Aenean convallis est non justo " \
+ "consectetur, a hendrerit enim consequat. In accumsan ante a egestas luctus. Etiam quis neque " \
+ "nec eros vestibulum faucibus. Nunc viverra ipsum lectus, vel scelerisque dui dictum a. Ut orci " \
+ "enim, ultrices a ultrices nec, pharetra in quam. Donec accumsan sit amet eros eget fermentum." \
+ "Vivamus ut odio ac odio malesuada accumsan. Aenean vehicula diam at tempus ornare. Phasellus " \
+ "dictum mauris a mi consequat, vitae mattis nulla fringilla. Ut laoreet tellus in nisl efficitur," \
+ " a luctus justo tempus. Fusce finibus libero eget velit finibus iaculis. Morbi rhoncus purus " \
+ "vel vestibulum ullamcorper. Sed ac metus in urna fermentum feugiat. Nulla nunc diam, sodales " \
+ "aliquam mi id, varius porta nisl. Praesent vel nibh ac turpis rutrum laoreet at non odio. " \
+ "Phasellus ut posuere mi. Suspendisse malesuada velit nec mauris convallis porta. Vivamus " \
+ "sed ultrices sapien, at cras amet."
+
+ expected = Response()
+ expected.type = defines.Types["ACK"]
+ expected._mid = None
+ expected.code = defines.Codes.CHANGED.number
+ expected.token = None
+ expected.payload = None
+
+ exchange1 = (req, expected)
+ self.current_mid += 1
+
+ self._test_with_client([exchange1])
+
+ def test_observe_client(self):
+ print("TEST_OBSERVE_CLIENT")
+ path = "/Server1/basic"
+
+ req = Request()
+ req.code = defines.Codes.GET.number
+ req.uri_path = path
+ req.type = defines.Types["CON"]
+ req._mid = self.current_mid
+ req.destination = self.server_address
+ req.observe = 0
+
+ expected = Response()
+ expected.type = defines.Types["ACK"]
+ expected._mid = None
+ expected.code = defines.Codes.CONTENT.number
+ expected.token = None
+ expected.payload = None
+
+ exchange1 = (req, expected)
+
+ self._test_with_client_observe([exchange1])
+
+ def test_duplicate(self):
+ print("TEST_DUPLICATE")
+ path = "/Server1/basic"
+ req = Request()
+ req.code = defines.Codes.GET.number
+ req.uri_path = path
+ req.type = defines.Types["CON"]
+ req._mid = self.current_mid
+ req.destination = self.server_address
+
+ expected = Response()
+ expected.type = defines.Types["ACK"]
+ expected._mid = self.current_mid
+ expected.code = defines.Codes.CONTENT.number
+ expected.token = None
+
+ self.current_mid += 1
+ self._test_plugtest([(req, expected), (req, expected)])
+
+ def test_duplicate_not_completed(self):
+ print("TEST_DUPLICATE_NOT_COMPLETED")
+ path = "/Server1/long"
+ req = Request()
+ req.code = defines.Codes.GET.number
+ req.uri_path = path
+ req.type = defines.Types["CON"]
+ req._mid = self.current_mid
+ req.destination = self.server_address
+
+ expected = Response()
+ expected.type = defines.Types["ACK"]
+ expected._mid = self.current_mid
+ expected.code = None
+ expected.token = None
+
+ expected2 = Response()
+ expected2.type = defines.Types["CON"]
+ expected2._mid = None
+ expected2.code = defines.Codes.CONTENT.number
+ expected2.token = None
+
+ self.current_mid += 1
+ self._test_plugtest([(req, None), (req, expected), (None, expected2)])
+
+
+if __name__ == '__main__':
+ unittest.main()
diff --git a/plugtest.py b/plugtest.py
index a970d39..3ed12a4 100644
--- a/plugtest.py
+++ b/plugtest.py
@@ -1,9 +1,11 @@
# -*- coding: utf-8 -*-
+
from queue import Queue
import random
import socket
import threading
import unittest
+
from coapthon.messages.message import Message
from coapclient import HelperClient
from coapthon.messages.response import Response
@@ -127,6 +129,7 @@ class Tests(unittest.TestCase):
def test_td_coap_link_01(self):
print("TD_COAP_LINK_01")
path = "/.well-known/core"
+
req = Request()
req.code = defines.Codes.GET.number
req.uri_path = path
@@ -147,6 +150,7 @@ class Tests(unittest.TestCase):
def test_td_coap_link_02(self):
print("TD_COAP_LINK_02")
path = "/.well-known/core"
+
req = Request()
req.code = defines.Codes.GET.number
req.uri_path = path
@@ -168,6 +172,7 @@ class Tests(unittest.TestCase):
def test_td_coap_core_01(self):
print("TD_COAP_CORE_01")
path = "/test"
+
req = Request()
req.code = defines.Codes.GET.number
req.uri_path = path
@@ -188,8 +193,8 @@ class Tests(unittest.TestCase):
def test_td_coap_core_02(self):
print("TD_COAP_CORE_02")
path = "/test_post"
- req = Request()
+ req = Request()
req.code = defines.Codes.POST.number
req.uri_path = path
req.type = defines.Types["CON"]
@@ -204,7 +209,7 @@ class Tests(unittest.TestCase):
expected.code = defines.Codes.CREATED.number
expected.token = None
expected.payload = None
- expected.location_path = "/test_post"
+ expected.location_path = "test_post"
self.current_mid += 1
self._test_with_client([(req, expected)])
@@ -212,8 +217,8 @@ class Tests(unittest.TestCase):
def test_td_coap_core_03(self):
print("TD_COAP_CORE_03")
path = "/test"
- req = Request()
+ req = Request()
req.code = defines.Codes.PUT.number
req.uri_path = path
req.type = defines.Types["CON"]
@@ -233,7 +238,6 @@ class Tests(unittest.TestCase):
exchange1 = (req, expected)
req = Request()
-
req.code = defines.Codes.GET.number
req.uri_path = path
req.type = defines.Types["CON"]
@@ -251,7 +255,6 @@ class Tests(unittest.TestCase):
exchange2 = (req, expected)
req = Request()
-
req.code = defines.Codes.GET.number
req.uri_path = path
req.type = defines.Types["CON"]
@@ -274,8 +277,8 @@ class Tests(unittest.TestCase):
def test_td_coap_core_04(self):
print("TD_COAP_CORE_04")
path = "/test"
- req = Request()
+ req = Request()
req.code = defines.Codes.DELETE.number
req.uri_path = path
req.type = defines.Types["CON"]
@@ -295,8 +298,8 @@ class Tests(unittest.TestCase):
def test_td_coap_core_05(self):
print("TD_COAP_CORE_05")
path = "/test"
- req = Request()
+ req = Request()
req.code = defines.Codes.GET.number
req.uri_path = path
req.type = defines.Types["NON"]
@@ -316,8 +319,8 @@ class Tests(unittest.TestCase):
def test_td_coap_core_06(self):
print("TD_COAP_CORE_06")
path = "/test_post"
- req = Request()
+ req = Request()
req.code = defines.Codes.POST.number
req.uri_path = path
req.type = defines.Types["NON"]
@@ -332,7 +335,7 @@ class Tests(unittest.TestCase):
expected.code = defines.Codes.CREATED.number
expected.token = None
expected.payload = None
- expected.location_path = "/test_post"
+ expected.location_path = "test_post"
self.current_mid += 1
self._test_with_client([(req, expected)])
@@ -340,8 +343,8 @@ class Tests(unittest.TestCase):
def test_td_coap_core_07(self):
print("TD_COAP_CORE_07")
path = "/test"
- req = Request()
+ req = Request()
req.code = defines.Codes.PUT.number
req.uri_path = path
req.type = defines.Types["NON"]
@@ -363,8 +366,8 @@ class Tests(unittest.TestCase):
def test_td_coap_core_08(self):
print("TD_COAP_CORE_08")
path = "/test"
- req = Request()
+ req = Request()
req.code = defines.Codes.DELETE.number
req.uri_path = path
req.type = defines.Types["NON"]
@@ -384,8 +387,8 @@ class Tests(unittest.TestCase):
def test_td_coap_core_09(self):
print("TD_COAP_CORE_09")
path = "/separate"
- req = Request()
+ req = Request()
req.code = defines.Codes.GET.number
req.uri_path = path
req.type = defines.Types["CON"]
@@ -412,8 +415,8 @@ class Tests(unittest.TestCase):
def test_td_coap_core_10(self):
print("TD_COAP_CORE_10")
path = "/test"
- req = Request()
+ req = Request()
req.code = defines.Codes.GET.number
req.uri_path = path
req.type = defines.Types["CON"]
@@ -435,8 +438,8 @@ class Tests(unittest.TestCase):
def test_td_coap_core_12(self):
print("TD_COAP_CORE_12")
path = "/seg1/seg2/seg3"
- req = Request()
+ req = Request()
req.code = defines.Codes.GET.number
req.uri_path = path
req.type = defines.Types["CON"]
@@ -455,8 +458,8 @@ class Tests(unittest.TestCase):
def test_td_coap_core_13(self):
print("TD_COAP_CORE_13")
path = "/query?first=1&second=2&third=3"
- req = Request()
+ req = Request()
req.code = defines.Codes.GET.number
req.uri_path = path
req.type = defines.Types["CON"]
@@ -476,8 +479,8 @@ class Tests(unittest.TestCase):
def test_td_coap_obs_01(self):
print("TD_COAP_OBS_01")
path = "/obs"
- req = Request()
+ req = Request()
req.code = defines.Codes.GET.number
req.uri_path = path
req.type = defines.Types["CON"]
@@ -508,8 +511,8 @@ class Tests(unittest.TestCase):
def test_td_coap_obs_03(self):
print("TD_COAP_OBS_03")
path = "/obs"
- req = Request()
+ req = Request()
req.code = defines.Codes.GET.number
req.uri_path = path
req.type = defines.Types["CON"]
@@ -802,6 +805,7 @@ I say, looked for all the world like a strip of that same patchwork quilt. Indee
def test_duplicate(self):
print("TEST_DUPLICATE")
path = "/test"
+
req = Request()
req.code = defines.Codes.GET.number
req.uri_path = path
@@ -816,11 +820,13 @@ I say, looked for all the world like a strip of that same patchwork quilt. Indee
expected.token = None
self.current_mid += 1
+
self._test_plugtest([(req, expected), (req, expected)])
def test_duplicate_not_completed(self):
print("TEST_DUPLICATE_NOT_COMPLETED")
path = "/long"
+
req = Request()
req.code = defines.Codes.GET.number
req.uri_path = path
@@ -841,11 +847,13 @@ I say, looked for all the world like a strip of that same patchwork quilt. Indee
expected2.token = None
self.current_mid += 1
+
self._test_plugtest([(req, None), (req, expected), (None, expected2)])
def test_no_response(self):
print("TEST_NO_RESPONSE")
path = "/long"
+
req = Request()
req.code = defines.Codes.GET.number
req.uri_path = path
@@ -866,13 +874,14 @@ I say, looked for all the world like a strip of that same patchwork quilt. Indee
expected2.token = None
self.current_mid += 1
+
self._test_plugtest([(req, expected), (None, expected2), (None, expected2), (None, expected2)])
def test_edit_resource(self):
print("TEST_EDIT_RESOURCE")
path = "/obs"
- req = Request()
+ req = Request()
req.code = defines.Codes.POST.number
req.uri_path = path
req.type = defines.Types["CON"]
@@ -886,10 +895,11 @@ I say, looked for all the world like a strip of that same patchwork quilt. Indee
expected.code = defines.Codes.CHANGED.number
expected.token = None
expected.payload = None
- expected.location_path = "/obs"
self.current_mid += 1
+
self._test_with_client([(req, expected)])
+
if __name__ == '__main__':
unittest.main()
diff --git a/plugtest_coapserver.py b/plugtest_coapserver.py
index 2b91918..44585d9 100644
--- a/plugtest_coapserver.py
+++ b/plugtest_coapserver.py
@@ -1,9 +1,9 @@
import getopt
-import logging
import sys
+
+from coapthon.server.coap import CoAP
from plugtest_resources import TestResource, SeparateResource, ObservableResource, LargeResource, LargeUpdateResource, \
LongResource
-from coapthon.server.coap import CoAP
__author__ = 'Giacomo Tanganelli'
@@ -11,33 +11,15 @@ __author__ = 'Giacomo Tanganelli'
class CoAPServerPlugTest(CoAP):
def __init__(self, host, port, multicast=False, starting_mid=None):
CoAP.__init__(self, (host, port), multicast, starting_mid)
-
- # create logger
- logger = logging.getLogger(__name__)
- logger.setLevel(logging.DEBUG)
-
- # create console handler and set level to debug
- ch = logging.StreamHandler()
- ch.setLevel(logging.DEBUG)
-
- # create formatter
- formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
-
- # add formatter to ch
- ch.setFormatter(formatter)
-
- # add ch to logger
- logger.addHandler(ch)
-
self.add_resource('test/', TestResource())
self.add_resource('separate/', SeparateResource())
self.add_resource('seg1/', TestResource())
self.add_resource('seg1/seg2/', TestResource())
self.add_resource('seg1/seg2/seg3/', TestResource())
self.add_resource('query/', TestResource())
- self.add_resource("obs/", ObservableResource(coap_server=self))
- self.add_resource("large/", LargeResource(coap_server=self))
- self.add_resource("large-update/", LargeUpdateResource(coap_server=self))
+ self.add_resource('obs/', ObservableResource(coap_server=self))
+ self.add_resource('large/', LargeResource(coap_server=self))
+ self.add_resource('large-update/', LargeUpdateResource(coap_server=self))
self.add_resource('long/', LongResource())
@@ -66,9 +48,7 @@ def main(argv): # pragma: no cover
try:
server.listen(10)
except KeyboardInterrupt:
- print("Server Shutdown")
server.close()
- print("Exiting...")
if __name__ == "__main__":
diff --git a/plugtest_resources.py b/plugtest_resources.py
index ca4ccd3..b860d94 100644
--- a/plugtest_resources.py
+++ b/plugtest_resources.py
@@ -1,10 +1,9 @@
-# coding=utf-8
+# -*- coding: utf-8 -*-
+
import logging
import threading
import time
-import datetime
-
from coapthon import defines
from coapthon.resources.resource import Resource