def discover_remote(self, destination): request = Request() assert (isinstance(destination, str)) split = destination.split(":", 1) host = split[0] port = int(split[1]) server = (host, port) request.destination = (host, port) request.type = defines.inv_types["CON"] request._mid = (self._currentMID + 1) % (1 << 16) request.code = defines.inv_codes["GET"] uri = "/" + defines.DISCOVERY_URL request.proxy_uri = uri client = HelperClient(server, True) token = self.generate_token() function = client.protocol.get args = (uri,) kwargs = {"Token": str(token)} callback = self.discover_remote_results err_callback = self.discover_remote_error operations = [(function, args, kwargs, (callback, err_callback))] key = hash(str(host) + str(port) + str(token)) self._forward[key] = request key = hash(str(host) + str(port) + str((client.starting_mid + 1) % (1 << 16))) self._forward_mid[key] = request client.start(operations)
def map(self, request): path = request.uri_path if request.uri_path == defines.DISCOVERY_URL: response = Response() response.destination = request.source response = self._resource_layer.discover(request, response) self.result_forward(response, request) server = self.root.find_complete(path) if server is not None: new_request = Request() segments = server.find_path().split("/") path = segments[2:] path = "/".join(path) segments = segments[1].split(":") host = segments[0] port = int(segments[1]) # new_request.destination = (host, port) new_request.source = request.source new_request.type = request.type new_request._mid = (self._currentMID + 1) % (1 << 16) new_request.code = request.code new_request.proxy_uri = "coap://" + str(host) + ":" + str(port) + "/" + path new_request.payload = request.payload for option in request.options: if option.name == defines.inv_options["Uri-Path"]: continue if option.name == defines.inv_options["Uri-Query"]: continue if option.name == defines.inv_options["Uri-Host"]: continue new_request.add_option(option) return new_request return None
def test_get_multiple(self): print "TEST_GET_MULTIPLE" path = "/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.proxy_uri = "coap://127.0.0.1:5684/basic" 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" exchange1 = (req, expected) self.current_mid += 1 #PREPARING SECOND EXPECTED RESPONSE (MAX AGE MUST BE CHECKED) req2 = Request() req2.code = defines.Codes.GET.number req2.uri_path = path req2.type = defines.Types["CON"] req2._mid = self.current_mid req2.destination = self.server_address req2.proxy_uri = "coap://127.0.0.1:5684/basic" 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" expected.max_age = 61 exchange2 = (req2, expected) self._test_with_client_delayed([exchange1, exchange2])
def test_get_multiple(self): print "TEST_GET_MULTIPLE" path = "/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.proxy_uri = "coap://127.0.0.1:5684/basic" 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" exchange1 = (req, expected) self.current_mid += 1 # PREPARING SECOND EXPECTED RESPONSE (MAX AGE MUST BE CHECKED) req2 = Request() req2.code = defines.Codes.GET.number req2.uri_path = path req2.type = defines.Types["CON"] req2._mid = self.current_mid req2.destination = self.server_address req2.proxy_uri = "coap://127.0.0.1:5684/basic" 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" expected.max_age = 61 exchange2 = (req2, expected) self._test_with_client_delayed([exchange1, exchange2])
def callback(): try: index = listbox.curselection()[0] # get the line's text server_text = str(listbox.get(index)) if (server_text == ""): print "ERROR : Empty selection" return except: print "ERROR !" return AttributeError proxy_texter = str(label_proxy.cget("text")) text_test = path_text.get("1.0", END) path_texter = str(text_test) print "Selected : " + str(server_text) print "chosen path : " + str(path_texter) server_text = "198.199.92.83" proxy_texter = "104.236.174.175" # Setting up the application setup_time_begin = time.time() server_address = (str(proxy_texter), 5684) current_mid = random.randint(1, 1000) client = HelperClient(server_address) setup_time_end = time.time() print "Starting the first request" print "\nRequesting for Resource 1" first_request_begin = time.time() # Starting first request path = "/basic1" req = Request() req._usecache = use_cache req.code = defines.Codes.GET.number req.uri_path = path req.type = defines.Types["CON"] req._mid = current_mid req.destination = server_address req.proxy_uri = "coap://" + str(server_text) + ":5683/basic1" received_message = client.send_request(req) first_request_end = time.time() time.sleep(21) print "Starting the second request" print "\nRequesting for Resource 1 again" second_request_begin = time.time() # Starting second request current_mid = current_mid + 1 req2 = Request() req2._usecache = use_cache req2.code = defines.Codes.GET.number path = "/basic1" req2.uri_path = path req2.type = defines.Types["CON"] req2._mid = current_mid req2.destination = server_address req2.proxy_uri = "coap://" + server_text + ":5683/basic1" received_message = client.send_request(req2) second_request_end = time.time() time.sleep(5) print "Tearing down application" # Tearing down application print "DONE !" print "-------------------" print "Printing Analytics" print "--------------------" print "Build Time : " + str(setup_time_end - setup_time_begin) print "First request : " + str(first_request_end - first_request_begin) print "Second request : " + str(second_request_end - second_request_begin) print "--------------------------" print "TOTAL TIME TAKEN : " + str( (second_request_end - second_request_begin) + (first_request_end - first_request_begin)) print "--------------------------"
def test_get_etag(self): print "TEST_GET_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 req.proxy_uri = "coap://127.0.0.1:5684/etag" expected = Response() expected.type = defines.Types["ACK"] expected._mid = self.current_mid expected.code = defines.Codes.CONTENT.number expected.token = None expected.payload = None exchange1 = (req, expected) self.current_mid += 1 # PREPARING SECOND EXPECTED RESPONSE req2 = Request() req2.code = defines.Codes.GET.number req2.uri_path = path req2.type = defines.Types["CON"] req2._mid = self.current_mid req2.destination = self.server_address req2.proxy_uri = "coap://127.0.0.1:5684/etag" expected = Response() expected.type = defines.Types["ACK"] expected._mid = self.current_mid expected.code = defines.Codes.CONTENT.number expected.token = None expected.etag = 1 expected.max_age = 1 exchange2 = (req2, expected) self.current_mid += 1 # PREPARING THIRD EXPECTED RESPONSE req3 = Request() req3.code = defines.Codes.POST.number req3.uri_path = path req3.type = defines.Types["CON"] req3._mid = self.current_mid req3.destination = self.server_address req3.proxy_uri = "coap://127.0.0.1:5684/etag" req3.payload = "Hello" 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 = 2 expected.location_path = "etag" exchange3 = (req3, expected) self.current_mid += 1 # PREPARING FOURTH EXPECTED RESPONSE req4 = Request() req4.code = defines.Codes.GET.number req4.uri_path = path req4.type = defines.Types["CON"] req4._mid = self.current_mid req4.destination = self.server_address req4.proxy_uri = "coap://127.0.0.1:5684/etag" expected = Response() expected.type = defines.Types["ACK"] expected._mid = self.current_mid expected.code = defines.Codes.CONTENT.number expected.token = None expected.payload = "Hello" expected.etag = 2 exchange4 = (req4, expected) self.current_mid += 1 self._test_with_client_delayed( [exchange1, exchange2, exchange3, exchange4])
def test_get_delete(self): print "TEST_GET_DELETE" path = "/basic" req2 = Request() req2.code = defines.Codes.GET.number req2.uri_path = path req2.type = defines.Types["CON"] req2._mid = self.current_mid req2.destination = self.server_address req2.proxy_uri = "coap://127.0.0.1:5684/storage/new" 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 exchange0 = (req2, 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.proxy_uri = "coap://127.0.0.1:5684/storage/new" req.payload = "Hello" expected = Response() expected.type = defines.Types["ACK"] expected._mid = self.current_mid expected.code = defines.Codes.CREATED.number expected.token = None expected.payload = None exchange1 = (req, expected) self.current_mid += 1 # PREPARING SECOND EXPECTED RESPONSE req2 = Request() req2.code = defines.Codes.GET.number req2.uri_path = path req2.type = defines.Types["CON"] req2._mid = self.current_mid req2.destination = self.server_address req2.proxy_uri = "coap://127.0.0.1:5684/storage/new" expected = Response() expected.type = defines.Types["ACK"] expected._mid = self.current_mid expected.code = defines.Codes.CONTENT.number expected.token = None expected.payload = "Hello" exchange2 = (req2, expected) self.current_mid += 1 # PREPARING THIRD EXPECTED RESPONSE req3 = Request() req3.code = defines.Codes.DELETE.number req3.uri_path = path req3.type = defines.Types["CON"] req3._mid = self.current_mid req3.destination = self.server_address req3.proxy_uri = "coap://127.0.0.1:5684/storage/new" expected = Response() expected.type = defines.Types["ACK"] expected._mid = self.current_mid expected.code = defines.Codes.DELETED.number expected.token = None expected.payload = None exchange3 = (req3, expected) self.current_mid += 1 # PREPARING FOURTH EXPECTED RESPONSE req4 = Request() req4.code = defines.Codes.GET.number req4.uri_path = path req4.type = defines.Types["CON"] req4._mid = self.current_mid req4.destination = self.server_address req4.proxy_uri = "coap://127.0.0.1:5684/storage/new" expected = Response() expected.type = defines.Types["ACK"] expected._mid = self.current_mid expected.code = defines.Codes.NOT_FOUND.number expected.token = None exchange4 = (req4, expected) self.current_mid += 1 self._test_with_client_delayed( [exchange0, exchange1, exchange2, exchange3, exchange4])
def test_get_etag(self): print "TEST_GET_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 req.proxy_uri = "coap://127.0.0.1:5684/etag" expected = Response() expected.type = defines.Types["ACK"] expected._mid = self.current_mid expected.code = defines.Codes.CONTENT.number expected.token = None expected.payload = None expected.etag = str(0) exchange1 = (req, expected) self.current_mid += 1 # PREPARING SECOND EXPECTED RESPONSE req2 = Request() req2.code = defines.Codes.GET.number req2.uri_path = path req2.type = defines.Types["CON"] req2._mid = self.current_mid req2.destination = self.server_address req2.proxy_uri = "coap://127.0.0.1:5684/etag" expected = Response() expected.type = defines.Types["ACK"] expected._mid = self.current_mid expected.code = defines.Codes.CONTENT.number expected.token = None expected.etag = str(0) expected.max_age = 1 exchange2 = (req2, expected) self.current_mid += 1 # PREPARING THIRD EXPECTED RESPONSE req3 = Request() req3.code = defines.Codes.POST.number req3.uri_path = path req3.type = defines.Types["CON"] req3._mid = self.current_mid req3.destination = self.server_address req3.proxy_uri = "coap://127.0.0.1:5684/etag" req3.payload = "Hello" 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 = str(1) expected.location_path = "etag" exchange3 = (req3, expected) self.current_mid += 1 # PREPARING FOURTH EXPECTED RESPONSE req4 = Request() req4.code = defines.Codes.GET.number req4.uri_path = path req4.type = defines.Types["CON"] req4._mid = self.current_mid req4.destination = self.server_address req4.proxy_uri = "coap://127.0.0.1:5684/etag" expected = Response() expected.type = defines.Types["ACK"] expected._mid = self.current_mid expected.code = defines.Codes.CONTENT.number expected.token = None expected.payload = "Hello" expected.etag = str(1) exchange4 = (req4, expected) self.current_mid += 1 self._test_with_client_delayed([exchange1, exchange2, exchange3, exchange4])
def test_get_delete(self): print "TEST_GET_DELETE" path = "/basic" req2 = Request() req2.code = defines.Codes.GET.number req2.uri_path = path req2.type = defines.Types["CON"] req2._mid = self.current_mid req2.destination = self.server_address req2.proxy_uri = "coap://127.0.0.1:5684/storage/new" 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 exchange0 = (req2, 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.proxy_uri = "coap://127.0.0.1:5684/storage/new" req.payload = "Hello" expected = Response() expected.type = defines.Types["ACK"] expected._mid = self.current_mid expected.code = defines.Codes.CREATED.number expected.token = None expected.payload = None exchange1 = (req, expected) self.current_mid += 1 # PREPARING SECOND EXPECTED RESPONSE req2 = Request() req2.code = defines.Codes.GET.number req2.uri_path = path req2.type = defines.Types["CON"] req2._mid = self.current_mid req2.destination = self.server_address req2.proxy_uri = "coap://127.0.0.1:5684/storage/new" expected = Response() expected.type = defines.Types["ACK"] expected._mid = self.current_mid expected.code = defines.Codes.CONTENT.number expected.token = None expected.payload = "Hello" exchange2 = (req2, expected) self.current_mid += 1 # PREPARING THIRD EXPECTED RESPONSE req3 = Request() req3.code = defines.Codes.DELETE.number req3.uri_path = path req3.type = defines.Types["CON"] req3._mid = self.current_mid req3.destination = self.server_address req3.proxy_uri = "coap://127.0.0.1:5684/storage/new" expected = Response() expected.type = defines.Types["ACK"] expected._mid = self.current_mid expected.code = defines.Codes.DELETED.number expected.token = None expected.payload = None exchange3 = (req3, expected) self.current_mid += 1 # PREPARING FOURTH EXPECTED RESPONSE req4 = Request() req4.code = defines.Codes.GET.number req4.uri_path = path req4.type = defines.Types["CON"] req4._mid = self.current_mid req4.destination = self.server_address req4.proxy_uri = "coap://127.0.0.1:5684/storage/new" expected = Response() expected.type = defines.Types["ACK"] expected._mid = self.current_mid expected.code = defines.Codes.NOT_FOUND.number expected.token = None exchange4 = (req4, expected) self.current_mid += 1 self._test_with_client_delayed([exchange0, exchange1, exchange2, exchange3, exchange4])
def callback(): try: index = listbox.curselection()[0] # get the line's text server_text = str(listbox.get(index)) if (server_text == ""): print "ERROR : Empty selection" return except: print "ERROR !" return AttributeError proxy_texter = str(label_proxy.cget("text")) text_test = path_text.get("1.0", END) path_texter = str(text_test) print "Selected : " + str(server_text) print "chosen path : " + str(path_texter) server_text = "198.199.92.83" proxy_texter = "104.236.174.175" # Setting up the application setup_time_begin = time.time() server_address = (str(proxy_texter), 5684) current_mid = random.randint(1, 1000) client = HelperClient(server_address) setup_time_end = time.time() print "Starting the first request" print "\nRequesting for Resource 1" first_request_begin = time.time() # Starting first request path = "/basic1" req = Request() req._usecache = use_cache req.code = defines.Codes.GET.number req.uri_path = path req.type = defines.Types["CON"] req._mid = current_mid req.destination = server_address req.proxy_uri = "coap://" + str(server_text) + ":5683/basic1" received_message = client.send_request(req) first_request_end = time.time() time.sleep(5) print "Starting the second request" print "\nRequesting for Resource 2" second_request_begin = time.time() # Starting second request current_mid = current_mid + 1 req2 = Request() req2._usecache = use_cache req2.code = defines.Codes.GET.number path = "/basic2" req2.uri_path = path req2.type = defines.Types["CON"] req2._mid = current_mid req2.destination = server_address req2.proxy_uri = "coap://" + server_text + ":5683/basic2" received_message = client.send_request(req2) second_request_end = time.time() time.sleep(5) print "Starting the third request" print "\nRequesting for Resource 3" third_request_begin = time.time() # Starting third request current_mid = current_mid + 1 req3 = Request() req3._usecache = use_cache req3.code = defines.Codes.GET.number path = "/basic3" req3.uri_path = path req3.type = defines.Types["CON"] req3._mid = current_mid req3.destination = server_address req3.proxy_uri = "coap://" + server_text + ":5683/basic3" received_message = client.send_request(req3) third_request_end = time.time() time.sleep(5) print "Starting the fourth request" print "\nRequesting for Resource 1 again" fourth_request_begin = time.time() # Starting first request path = "/basic1" current_mid = current_mid + 1 req4 = Request() req4._usecache = use_cache req4.code = defines.Codes.GET.number req4.uri_path = path req4.type = defines.Types["CON"] req4._mid = current_mid req4.destination = server_address req4.proxy_uri = "coap://" + server_text + ":5683/basic1" received_message = client.send_request(req4) fourth_request_end = time.time() time.sleep(5) print "Starting the fifth request" print "\nRequesting for Resource 2 again" fifth_request_begin = time.time() # Starting second request current_mid = current_mid + 1 req5 = Request() req5._usecache = use_cache req5.code = defines.Codes.GET.number path = "/basic2" req5.uri_path = path req5.type = defines.Types["CON"] req5._mid = current_mid req5.destination = server_address req5.proxy_uri = "coap://" + server_text + ":5683/basic2" received_message = client.send_request(req5) fifth_request_end = time.time() time.sleep(5) print "Starting the sixth request" print "\nRequesting for Resource 3 again" # Starting third request sixth_request_begin = time.time() current_mid = current_mid + 1 req6 = Request() req6._usecache = use_cache req6.code = defines.Codes.GET.number path = "/basic3" req6.uri_path = path req6.type = defines.Types["CON"] req6._mid = current_mid req6.destination = server_address req6.proxy_uri = "coap://" + server_text + ":5683/basic3" received_message = client.send_request(req6) sixth_request_end = time.time() time.sleep(5) print "Starting the seventh request" print "\nRequesting for Resource 4" seventh_request_begin = time.time() # Starting first request path = "/basic4" current_mid = current_mid + 1 req7 = Request() req7._usecache = use_cache req7.code = defines.Codes.GET.number req7.uri_path = path req7.type = defines.Types["CON"] req7._mid = current_mid req7.destination = server_address req7.proxy_uri = "coap://" + server_text + ":5683/basic4" received_message = client.send_request(req7) seventh_request_end = time.time() time.sleep(5) print "Starting the eighth request" print "\nRequesting for Resource 5" eighth_request_begin = time.time() # Starting second request current_mid = current_mid + 1 req8 = Request() req8._usecache = use_cache req8.code = defines.Codes.GET.number path = "/basic5" req8.uri_path = path req8.type = defines.Types["CON"] req8._mid = current_mid req8.destination = server_address req8.proxy_uri = "coap://" + server_text + ":5683/basic5" received_message = client.send_request(req8) eighth_request_end = time.time() time.sleep(5) print "Starting the ninth request" print "\nRequesting for Resource 6" ninth_request_begin = time.time() # Starting third request current_mid = current_mid + 1 req9 = Request() req9._usecache = use_cache req9.code = defines.Codes.GET.number path = "/basic6" req9.uri_path = path req9.type = defines.Types["CON"] req9._mid = current_mid req9.destination = server_address req9.proxy_uri = "coap://" + server_text + ":5683/basic6" received_message = client.send_request(req9) ninth_request_end = time.time() time.sleep(5) print "Starting the tenth request" print "\nRequesting for Resource 4 again" tenth_request_begin = time.time() # Starting third request current_mid = current_mid + 1 req10 = Request() req10._usecache = use_cache req10.code = defines.Codes.GET.number path = "/basic4" req10.uri_path = path req10.type = defines.Types["CON"] req10._mid = current_mid req10.destination = server_address req10.proxy_uri = "coap://" + server_text + ":5683/basic4" received_message = client.send_request(req10) tenth_request_end = time.time() time.sleep(5) print "Starting the eleven request" print "\nRequesting for Resource 7" eleventh_request_begin = time.time() # Starting third request current_mid = current_mid + 1 req11 = Request() req11._usecache = use_cache req11.code = defines.Codes.GET.number path = "/basic7" req11.uri_path = path req11.type = defines.Types["CON"] req11._mid = current_mid req11.destination = server_address req11.proxy_uri = "coap://" + server_text + ":5683/basic7" received_message = client.send_request(req11) eleventh_request_end = time.time() print "Tearing down application" # Tearing down application print "DONE !" print "-------------------" print "Printing Analytics" print "--------------------" print "Build Time : " + str(setup_time_end - setup_time_begin) print "First request : " + str(first_request_end - first_request_begin) print "Second request : " + str(second_request_end - second_request_begin) print "Third request : " + str(third_request_end - third_request_begin) print "Fourth request : " + str(fourth_request_end - fourth_request_begin) print "Fifth request : " + str(fifth_request_end - fifth_request_begin) print "Sixth request : " + str(sixth_request_end - sixth_request_begin) print "Seventh request : " + str(seventh_request_end - seventh_request_begin) print "Eighth request : " + str(eighth_request_end - eighth_request_begin) print "Ninth request : " + str(ninth_request_end - ninth_request_begin) print "Tenth request : " + str(tenth_request_end - tenth_request_begin) print "Eleventh request : " + str(eleventh_request_end - eleventh_request_begin) print "--------------------------" print "TOTAL TIME TAKEN : " + str( (first_request_end - first_request_begin) + (second_request_end - second_request_begin) + (third_request_end - third_request_begin) + (fourth_request_end - fourth_request_begin) + (fifth_request_end - fifth_request_begin) + (sixth_request_end - sixth_request_begin) + (seventh_request_end - seventh_request_begin) + (eighth_request_end - eighth_request_begin) + (ninth_request_end - ninth_request_begin) + (tenth_request_end - tenth_request_begin) + (eleventh_request_end - eleventh_request_begin)) print "--------------------------"