Question: Develop a REST server script named measurement_server.py. This script will respond to requests for data from the measurement database by sending back data that is

Develop a REST server script named measurement_server.py. This script will respond to requests for data from the measurement database by sending back data that is JSON serialized. The server should listen on any interface at a particular port number. Here are the paths and the requests that they correspond to Path------------------------------------------------------------------- Function

/area----------------------------------------------------------Get a list of all areas

/area/(\d+)/location----------------------------------------Get all locations for the given area id

/location/(\d+)/measurement----------------------------Get all the measurements for the given location id

/area/(\d+)/category---------------------------------------Get all the categories to which the given area belongs

/area/(\d+)/average_measurement--------------------Get the average measurement for the given area

/area/(\d+)umber_locations---------------------------Get the number of locations in the given area

Notes:

In the first four request types, return a list of dictionaries, JSON encoded

In the last two request types, return the numbers. JSON encoded

You may wish to follow the organization used in the sakila_rest example in class.

Overview

This assignment will use the measurements example database as a subject. You will be providing data from this database as a service using REST. The measurements example is described in the Measurements Example.pdf. But, please note! Use the file measures.sqlite rather than recreate the file yourself.

Test Setup

The project assign06_test.zip contains a short test. The file test2.py is the test script, the other files are support. Note: the testing files should not be in the same directory with the server.

I already set up most of the files, including the measurements_server.py. However whenever I try to run the measurements_server.py against my test2.py, It fails all 11 tests when it is supposed to pass them all. Why does that happen?

Project Set Up:

Develop a REST server script named measurement_server.py. This script will respond to

Output I am getting from running test2.py with my measurements_server.py?

Testing started at 5:02 PM ... C:\Users ehmasan\PycharmProjects\CS4720Assignment6\venv\Scripts\python.exe "C:\Program Files\JetBrains\PyCharm 2018.1.1\helpers\pycharm\_jb_unittest_runner.py" --target test2.TestDbFunctions Launching unittests with arguments python -m unittest test2.TestDbFunctions in C:\Users ehmasan\PycharmProjects\CS4720Assignment6\assign06_test\unittest

Error Traceback (most recent call last): File "C:\Program Files\Python36\lib\unittest\case.py", line 59, in testPartExecutor yield File "C:\Program Files\Python36\lib\unittest\case.py", line 605, in run testMethod() File "C:\Users ehmasan\PycharmProjects\CS4720Assignment6\assign06_test\unittest\test2.py", line 50, in testAverageMeasurement avg = db_utility_use_rest.get_average_measurements_for_area(3) File "C:\Users ehmasan\PycharmProjects\CS4720Assignment6\assign06_test\unittest\db_utility_use_rest.py", line 19, in get_average_measurements_for_area return request_or_fail("/area/" + str(area_id) + "/average_measurement") File "C:\Users ehmasan\PycharmProjects\CS4720Assignment6\assign06_test\unittest equest.py", line 24, in request_or_fail resp = request_to_measurements(path) File "C:\Users ehmasan\PycharmProjects\CS4720Assignment6\assign06_test\unittest equest.py", line 11, in request_to_measurements resp = hconn.getresponse() File "C:\Program Files\Python36\lib\http\client.py", line 1331, in getresponse response.begin() File "C:\Program Files\Python36\lib\http\client.py", line 297, in begin version, status, reason = self._read_status() File "C:\Program Files\Python36\lib\http\client.py", line 258, in _read_status line = str(self.fp.readline(_MAXLINE + 1), "iso-8859-1") File "C:\Program Files\Python36\lib\socket.py", line 586, in readinto return self._sock.recv_into(b) ConnectionResetError: [WinError 10054] An existing connection was forcibly closed by the remote host

Error Traceback (most recent call last): File "C:\Program Files\Python36\lib\unittest\case.py", line 59, in testPartExecutor yield File "C:\Program Files\Python36\lib\unittest\case.py", line 605, in run testMethod() File "C:\Users ehmasan\PycharmProjects\CS4720Assignment6\assign06_test\unittest\test2.py", line 54, in testAverageMeasurementMissing avg = db_utility_use_rest.get_average_measurements_for_area(7) File "C:\Users ehmasan\PycharmProjects\CS4720Assignment6\assign06_test\unittest\db_utility_use_rest.py", line 19, in get_average_measurements_for_area return request_or_fail("/area/" + str(area_id) + "/average_measurement") File "C:\Users ehmasan\PycharmProjects\CS4720Assignment6\assign06_test\unittest equest.py", line 24, in request_or_fail resp = request_to_measurements(path) File "C:\Users ehmasan\PycharmProjects\CS4720Assignment6\assign06_test\unittest equest.py", line 10, in request_to_measurements hconn.request('GET', path) File "C:\Program Files\Python36\lib\http\client.py", line 1239, in request self._send_request(method, url, body, headers, encode_chunked) File "C:\Program Files\Python36\lib\http\client.py", line 1285, in _send_request self.endheaders(body, encode_chunked=encode_chunked) File "C:\Program Files\Python36\lib\http\client.py", line 1234, in endheaders self._send_output(message_body, encode_chunked=encode_chunked) File "C:\Program Files\Python36\lib\http\client.py", line 1026, in _send_output self.send(msg) File "C:\Program Files\Python36\lib\http\client.py", line 964, in send self.connect() File "C:\Program Files\Python36\lib\http\client.py", line 936, in connect (self.host,self.port), self.timeout, self.source_address) File "C:\Program Files\Python36\lib\socket.py", line 724, in create_connection raise err File "C:\Program Files\Python36\lib\socket.py", line 713, in create_connection sock.connect(sa) ConnectionRefusedError: [WinError 10061] No connection could be made because the target machine actively refused it

Error Traceback (most recent call last): File "C:\Program Files\Python36\lib\unittest\case.py", line 59, in testPartExecutor yield File "C:\Program Files\Python36\lib\unittest\case.py", line 605, in run testMethod() File "C:\Users ehmasan\PycharmProjects\CS4720Assignment6\assign06_test\unittest\test2.py", line 14, in testNumberAreas areas = db_access_use_rest.get_all_areas() File "C:\Users ehmasan\PycharmProjects\CS4720Assignment6\assign06_test\unittest\db_access_use_rest.py", line 11, in get_all_areas return request_or_fail("/area") File "C:\Users ehmasan\PycharmProjects\CS4720Assignment6\assign06_test\unittest equest.py", line 24, in request_or_fail resp = request_to_measurements(path) File "C:\Users ehmasan\PycharmProjects\CS4720Assignment6\assign06_test\unittest equest.py", line 10, in request_to_measurements hconn.request('GET', path) File "C:\Program Files\Python36\lib\http\client.py", line 1239, in request self._send_request(method, url, body, headers, encode_chunked) File "C:\Program Files\Python36\lib\http\client.py", line 1285, in _send_request self.endheaders(body, encode_chunked=encode_chunked) File "C:\Program Files\Python36\lib\http\client.py", line 1234, in endheaders self._send_output(message_body, encode_chunked=encode_chunked) File "C:\Program Files\Python36\lib\http\client.py", line 1026, in _send_output self.send(msg) File "C:\Program Files\Python36\lib\http\client.py", line 964, in send self.connect() File "C:\Program Files\Python36\lib\http\client.py", line 936, in connect (self.host,self.port), self.timeout, self.source_address) File "C:\Program Files\Python36\lib\socket.py", line 724, in create_connection raise err File "C:\Program Files\Python36\lib\socket.py", line 713, in create_connection sock.connect(sa) ConnectionRefusedError: [WinError 10061] No connection could be made because the target machine actively refused it

Error Traceback (most recent call last): File "C:\Program Files\Python36\lib\unittest\case.py", line 59, in testPartExecutor yield File "C:\Program Files\Python36\lib\unittest\case.py", line 605, in run testMethod() File "C:\Users ehmasan\PycharmProjects\CS4720Assignment6\assign06_test\unittest\test2.py", line 41, in testNumberOfCategories cats = db_access_use_rest.get_categories_for_area(3) File "C:\Users ehmasan\PycharmProjects\CS4720Assignment6\assign06_test\unittest\db_access_use_rest.py", line 33, in get_categories_for_area return request_or_fail("/area/" + str(area_id) + "/category") File "C:\Users ehmasan\PycharmProjects\CS4720Assignment6\assign06_test\unittest equest.py", line 24, in request_or_fail resp = request_to_measurements(path) File "C:\Users ehmasan\PycharmProjects\CS4720Assignment6\assign06_test\unittest equest.py", line 10, in request_to_measurements hconn.request('GET', path) File "C:\Program Files\Python36\lib\http\client.py", line 1239, in request self._send_request(method, url, body, headers, encode_chunked) File "C:\Program Files\Python36\lib\http\client.py", line 1285, in _send_request self.endheaders(body, encode_chunked=encode_chunked) File "C:\Program Files\Python36\lib\http\client.py", line 1234, in endheaders self._send_output(message_body, encode_chunked=encode_chunked) File "C:\Program Files\Python36\lib\http\client.py", line 1026, in _send_output self.send(msg) File "C:\Program Files\Python36\lib\http\client.py", line 964, in send self.connect() File "C:\Program Files\Python36\lib\http\client.py", line 936, in connect (self.host,self.port), self.timeout, self.source_address) File "C:\Program Files\Python36\lib\socket.py", line 724, in create_connection raise err File "C:\Program Files\Python36\lib\socket.py", line 713, in create_connection sock.connect(sa) ConnectionRefusedError: [WinError 10061] No connection could be made because the target machine actively refused it

Error Traceback (most recent call last): File "C:\Program Files\Python36\lib\unittest\case.py", line 59, in testPartExecutor yield File "C:\Program Files\Python36\lib\unittest\case.py", line 605, in run testMethod() File "C:\Users ehmasan\PycharmProjects\CS4720Assignment6\assign06_test\unittest\test2.py", line 23, in testNumberOfLocations locs = db_access_use_rest.get_locations_for_area(3) File "C:\Users ehmasan\PycharmProjects\CS4720Assignment6\assign06_test\unittest\db_access_use_rest.py", line 20, in get_locations_for_area return request_or_fail("/area/" + str(area_id) + "/location") File "C:\Users ehmasan\PycharmProjects\CS4720Assignment6\assign06_test\unittest equest.py", line 24, in request_or_fail resp = request_to_measurements(path) File "C:\Users ehmasan\PycharmProjects\CS4720Assignment6\assign06_test\unittest equest.py", line 10, in request_to_measurements hconn.request('GET', path) File "C:\Program Files\Python36\lib\http\client.py", line 1239, in request self._send_request(method, url, body, headers, encode_chunked) File "C:\Program Files\Python36\lib\http\client.py", line 1285, in _send_request self.endheaders(body, encode_chunked=encode_chunked) File "C:\Program Files\Python36\lib\http\client.py", line 1234, in endheaders self._send_output(message_body, encode_chunked=encode_chunked) File "C:\Program Files\Python36\lib\http\client.py", line 1026, in _send_output self.send(msg) File "C:\Program Files\Python36\lib\http\client.py", line 964, in send self.connect() File "C:\Program Files\Python36\lib\http\client.py", line 936, in connect (self.host,self.port), self.timeout, self.source_address) File "C:\Program Files\Python36\lib\socket.py", line 724, in create_connection raise err File "C:\Program Files\Python36\lib\socket.py", line 713, in create_connection sock.connect(sa) ConnectionRefusedError: [WinError 10061] No connection could be made because the target machine actively refused it

Error Traceback (most recent call last): File "C:\Program Files\Python36\lib\unittest\case.py", line 59, in testPartExecutor yield File "C:\Program Files\Python36\lib\unittest\case.py", line 605, in run testMethod() File "C:\Users ehmasan\PycharmProjects\CS4720Assignment6\assign06_test\unittest\test2.py", line 58, in testNumberOfLocations2 numLoc = db_utility_use_rest.number_of_locations_by_area(3) File "C:\Users ehmasan\PycharmProjects\CS4720Assignment6\assign06_test\unittest\db_utility_use_rest.py", line 25, in number_of_locations_by_area return request_or_fail("/area/" + str(area_id) + "umber_locations") File "C:\Users ehmasan\PycharmProjects\CS4720Assignment6\assign06_test\unittest equest.py", line 24, in request_or_fail resp = request_to_measurements(path) File "C:\Users ehmasan\PycharmProjects\CS4720Assignment6\assign06_test\unittest equest.py", line 10, in request_to_measurements hconn.request('GET', path) File "C:\Program Files\Python36\lib\http\client.py", line 1239, in request self._send_request(method, url, body, headers, encode_chunked) File "C:\Program Files\Python36\lib\http\client.py", line 1285, in _send_request self.endheaders(body, encode_chunked=encode_chunked) File "C:\Program Files\Python36\lib\http\client.py", line 1234, in endheaders self._send_output(message_body, encode_chunked=encode_chunked) File "C:\Program Files\Python36\lib\http\client.py", line 1026, in _send_output self.send(msg) File "C:\Program Files\Python36\lib\http\client.py", line 964, in send self.connect() File "C:\Program Files\Python36\lib\http\client.py", line 936, in connect (self.host,self.port), self.timeout, self.source_address) File "C:\Program Files\Python36\lib\socket.py", line 724, in create_connection raise err File "C:\Program Files\Python36\lib\socket.py", line 713, in create_connection sock.connect(sa) ConnectionRefusedError: [WinError 10061] No connection could be made because the target machine actively refused it

Error Traceback (most recent call last): File "C:\Program Files\Python36\lib\unittest\case.py", line 59, in testPartExecutor yield File "C:\Program Files\Python36\lib\unittest\case.py", line 605, in run testMethod() File "C:\Users ehmasan\PycharmProjects\CS4720Assignment6\assign06_test\unittest\test2.py", line 32, in testNumberOfMeasurements meas = db_access_use_rest.get_measurements_for_location(18) File "C:\Users ehmasan\PycharmProjects\CS4720Assignment6\assign06_test\unittest\db_access_use_rest.py", line 26, in get_measurements_for_location return request_or_fail("/location/" + str(location_id) + "/measurement") File "C:\Users ehmasan\PycharmProjects\CS4720Assignment6\assign06_test\unittest equest.py", line 24, in request_or_fail resp = request_to_measurements(path) File "C:\Users ehmasan\PycharmProjects\CS4720Assignment6\assign06_test\unittest equest.py", line 10, in request_to_measurements hconn.request('GET', path) File "C:\Program Files\Python36\lib\http\client.py", line 1239, in request self._send_request(method, url, body, headers, encode_chunked) File "C:\Program Files\Python36\lib\http\client.py", line 1285, in _send_request self.endheaders(body, encode_chunked=encode_chunked) File "C:\Program Files\Python36\lib\http\client.py", line 1234, in endheaders self._send_output(message_body, encode_chunked=encode_chunked) File "C:\Program Files\Python36\lib\http\client.py", line 1026, in _send_output self.send(msg) File "C:\Program Files\Python36\lib\http\client.py", line 964, in send self.connect() File "C:\Program Files\Python36\lib\http\client.py", line 936, in connect (self.host,self.port), self.timeout, self.source_address) File "C:\Program Files\Python36\lib\socket.py", line 724, in create_connection raise err File "C:\Program Files\Python36\lib\socket.py", line 713, in create_connection sock.connect(sa) ConnectionRefusedError: [WinError 10061] No connection could be made because the target machine actively refused it

Error Traceback (most recent call last): File "C:\Program Files\Python36\lib\unittest\case.py", line 59, in testPartExecutor yield File "C:\Program Files\Python36\lib\unittest\case.py", line 605, in run testMethod() File "C:\Users ehmasan\PycharmProjects\CS4720Assignment6\assign06_test\unittest\test2.py", line 18, in testOneArea areas = db_access_use_rest.get_all_areas() File "C:\Users ehmasan\PycharmProjects\CS4720Assignment6\assign06_test\unittest\db_access_use_rest.py", line 11, in get_all_areas return request_or_fail("/area") File "C:\Users ehmasan\PycharmProjects\CS4720Assignment6\assign06_test\unittest equest.py", line 24, in request_or_fail resp = request_to_measurements(path) File "C:\Users ehmasan\PycharmProjects\CS4720Assignment6\assign06_test\unittest equest.py", line 10, in request_to_measurements hconn.request('GET', path) File "C:\Program Files\Python36\lib\http\client.py", line 1239, in request self._send_request(method, url, body, headers, encode_chunked) File "C:\Program Files\Python36\lib\http\client.py", line 1285, in _send_request self.endheaders(body, encode_chunked=encode_chunked) File "C:\Program Files\Python36\lib\http\client.py", line 1234, in endheaders self._send_output(message_body, encode_chunked=encode_chunked) File "C:\Program Files\Python36\lib\http\client.py", line 1026, in _send_output self.send(msg) File "C:\Program Files\Python36\lib\http\client.py", line 964, in send self.connect() File "C:\Program Files\Python36\lib\http\client.py", line 936, in connect (self.host,self.port), self.timeout, self.source_address) File "C:\Program Files\Python36\lib\socket.py", line 724, in create_connection raise err File "C:\Program Files\Python36\lib\socket.py", line 713, in create_connection sock.connect(sa) ConnectionRefusedError: [WinError 10061] No connection could be made because the target machine actively refused it

Error Traceback (most recent call last): File "C:\Program Files\Python36\lib\unittest\case.py", line 59, in testPartExecutor yield File "C:\Program Files\Python36\lib\unittest\case.py", line 605, in run testMethod() File "C:\Users ehmasan\PycharmProjects\CS4720Assignment6\assign06_test\unittest\test2.py", line 45, in testOneCategory cats = db_access_use_rest.get_categories_for_area(3) File "C:\Users ehmasan\PycharmProjects\CS4720Assignment6\assign06_test\unittest\db_access_use_rest.py", line 33, in get_categories_for_area return request_or_fail("/area/" + str(area_id) + "/category") File "C:\Users ehmasan\PycharmProjects\CS4720Assignment6\assign06_test\unittest equest.py", line 24, in request_or_fail resp = request_to_measurements(path) File "C:\Users ehmasan\PycharmProjects\CS4720Assignment6\assign06_test\unittest equest.py", line 10, in request_to_measurements hconn.request('GET', path) File "C:\Program Files\Python36\lib\http\client.py", line 1239, in request self._send_request(method, url, body, headers, encode_chunked) File "C:\Program Files\Python36\lib\http\client.py", line 1285, in _send_request self.endheaders(body, encode_chunked=encode_chunked) File "C:\Program Files\Python36\lib\http\client.py", line 1234, in endheaders self._send_output(message_body, encode_chunked=encode_chunked) File "C:\Program Files\Python36\lib\http\client.py", line 1026, in _send_output self.send(msg) File "C:\Program Files\Python36\lib\http\client.py", line 964, in send self.connect() File "C:\Program Files\Python36\lib\http\client.py", line 936, in connect (self.host,self.port), self.timeout, self.source_address) File "C:\Program Files\Python36\lib\socket.py", line 724, in create_connection raise err File "C:\Program Files\Python36\lib\socket.py", line 713, in create_connection sock.connect(sa) ConnectionRefusedError: [WinError 10061] No connection could be made because the target machine actively refused it

Error Traceback (most recent call last): File "C:\Program Files\Python36\lib\unittest\case.py", line 59, in testPartExecutor yield File "C:\Program Files\Python36\lib\unittest\case.py", line 605, in run testMethod() File "C:\Users ehmasan\PycharmProjects\CS4720Assignment6\assign06_test\unittest\test2.py", line 27, in testOneLocation locs = db_access_use_rest.get_locations_for_area(3) File "C:\Users ehmasan\PycharmProjects\CS4720Assignment6\assign06_test\unittest\db_access_use_rest.py", line 20, in get_locations_for_area return request_or_fail("/area/" + str(area_id) + "/location") File "C:\Users ehmasan\PycharmProjects\CS4720Assignment6\assign06_test\unittest equest.py", line 24, in request_or_fail resp = request_to_measurements(path) File "C:\Users ehmasan\PycharmProjects\CS4720Assignment6\assign06_test\unittest equest.py", line 10, in request_to_measurements hconn.request('GET', path) File "C:\Program Files\Python36\lib\http\client.py", line 1239, in request self._send_request(method, url, body, headers, encode_chunked) File "C:\Program Files\Python36\lib\http\client.py", line 1285, in _send_request self.endheaders(body, encode_chunked=encode_chunked) File "C:\Program Files\Python36\lib\http\client.py", line 1234, in endheaders self._send_output(message_body, encode_chunked=encode_chunked) File "C:\Program Files\Python36\lib\http\client.py", line 1026, in _send_output self.send(msg) File "C:\Program Files\Python36\lib\http\client.py", line 964, in send self.connect() File "C:\Program Files\Python36\lib\http\client.py", line 936, in connect (self.host,self.port), self.timeout, self.source_address) File "C:\Program Files\Python36\lib\socket.py", line 724, in create_connection raise err File "C:\Program Files\Python36\lib\socket.py", line 713, in create_connection sock.connect(sa) ConnectionRefusedError: [WinError 10061] No connection could be made because the target machine actively refused it

Ran 11 tests in 22.739s

FAILED (errors=11)

Error Traceback (most recent call last): File "C:\Program Files\Python36\lib\unittest\case.py", line 59, in testPartExecutor yield File "C:\Program Files\Python36\lib\unittest\case.py", line 605, in run testMethod() File "C:\Users ehmasan\PycharmProjects\CS4720Assignment6\assign06_test\unittest\test2.py", line 36, in testOneMeasurement meas = db_access_use_rest.get_measurements_for_location(18) File "C:\Users ehmasan\PycharmProjects\CS4720Assignment6\assign06_test\unittest\db_access_use_rest.py", line 26, in get_measurements_for_location return request_or_fail("/location/" + str(location_id) + "/measurement") File "C:\Users ehmasan\PycharmProjects\CS4720Assignment6\assign06_test\unittest equest.py", line 24, in request_or_fail resp = request_to_measurements(path) File "C:\Users ehmasan\PycharmProjects\CS4720Assignment6\assign06_test\unittest equest.py", line 10, in request_to_measurements hconn.request('GET', path) File "C:\Program Files\Python36\lib\http\client.py", line 1239, in request self._send_request(method, url, body, headers, encode_chunked) File "C:\Program Files\Python36\lib\http\client.py", line 1285, in _send_request self.endheaders(body, encode_chunked=encode_chunked) File "C:\Program Files\Python36\lib\http\client.py", line 1234, in endheaders self._send_output(message_body, encode_chunked=encode_chunked) File "C:\Program Files\Python36\lib\http\client.py", line 1026, in _send_output self.send(msg) File "C:\Program Files\Python36\lib\http\client.py", line 964, in send self.connect() File "C:\Program Files\Python36\lib\http\client.py", line 936, in connect (self.host,self.port), self.timeout, self.source_address) File "C:\Program Files\Python36\lib\socket.py", line 724, in create_connection raise err File "C:\Program Files\Python36\lib\socket.py", line 713, in create_connection sock.connect(sa) ConnectionRefusedError: [WinError 10061] No connection could be made because the target machine actively refused it

Process finished with exit code 1

test2.py:

import db_access_use_rest import db_utility_use_rest import unittest def filter_first(list, predicate): for x in list: if predicate(x): return x return None class TestDbFunctions(unittest.TestCase): def testNumberAreas(self): areas = db_access_use_rest.get_all_areas() self.assertEqual(7, len(areas)) def testOneArea(self): areas = db_access_use_rest.get_all_areas() k = filter_first(areas, lambda r: r['area_id'] == 3) self.assertEqual('Kennesaw', k['name']) def testNumberOfLocations(self): locs = db_access_use_rest.get_locations_for_area(3) self.assertEqual(len(locs), 4) def testOneLocation(self): locs = db_access_use_rest.get_locations_for_area(3) m = filter_first(locs, lambda r: r['location_id'] == 18) self.assertEqual('Mall', m['name']) def testNumberOfMeasurements(self): meas = db_access_use_rest.get_measurements_for_location(18) self.assertEqual(10, len(meas)) def testOneMeasurement(self): meas = db_access_use_rest.get_measurements_for_location(18) m = filter_first(meas, lambda r: r['measurement_id'] == 1803) self.assertAlmostEqual(61.11457551359794, m['value'], delta=1e-10) def testNumberOfCategories(self): cats = db_access_use_rest.get_categories_for_area(3) self.assertEqual(1, len(cats)) def testOneCategory(self): cats = db_access_use_rest.get_categories_for_area(3) m = filter_first(cats, lambda r: r['category_id'] == 32) self.assertEqual('East', m['name']) def testAverageMeasurement(self): avg = db_utility_use_rest.get_average_measurements_for_area(3) self.assertAlmostEqual(61.77813528637446,avg, delta=1e-10) def testAverageMeasurementMissing(self): avg = db_utility_use_rest.get_average_measurements_for_area(7) self.assertEqual(None, avg) def testNumberOfLocations2(self): numLoc = db_utility_use_rest.number_of_locations_by_area(3) self.assertEqual(4, numLoc) # if __name__ == "__main__": # unittest.main() measurements_server.py:
#import these properties from python import json #makes the log file import logging import requests #import the socket properties for establishing a connection from socket import socket #define the server port def server_port(): return 12345 #generate the log file if __name__ == "__main__": logging.basicConfig(filename='example.log', level=logging.INFO) # setting up a listener socket sock = socket() sock.bind(('', server_port())) sock.listen(0) # 0 backlog of connections #allows the server to make these types of requests ACCEPTABLE_REQUEST_TYPES = [re.compile('/area'), re.compile('/area/(\d+)/location'), re.compile('/area/(\d+)/category'), re.compile('/area/(\d+)/average_measurement'), re.compile('/area/(\d+)umber_locations'), re.compile('/location/(\d+)/measurement')] while True: (conn, address) = sock.accept() rw = reader_writer(conn) logging.info('Connection made: {}'.format(conn)) first_line = read_line(rw) logging.info('Client request: {}'.format(first_line)) response = '' if any(re.search(regex, first_line) for regex in ACCEPTABLE_REQUEST_TYPES): if re.search(ACCEPTABLE_REQUEST_TYPES[5], first_line): ml_id = re.split('/', first_line) response = db.do_command('SELECT * FROM measurement WHERE measurement_location=?', [ml_id[2]]) elif re.search(ACCEPTABLE_REQUEST_TYPES[4], first_line): la_id = re.split('/', first_line) response = db.do_command('SELECT COUNT(*) AS Number_of_Locations FROM location WHERE location_area=?', [la_id[2]]) elif re.search(ACCEPTABLE_REQUEST_TYPES[3], first_line): am_id = re.split('/', first_line) response = db.do_command('SELECT AVG(value) AS Average_Measurement FROM measurement WHERE measurement_location=?', [am_id[2]]) elif re.search(ACCEPTABLE_REQUEST_TYPES[2], first_line): cat_id = re.split('/', first_line) response = db.do_command('SELECT name from category NATURAL JOIN category_area WHERE area_id=?', [cat_id[2]]) elif re.search(ACCEPTABLE_REQUEST_TYPES[1], first_line): loc_id = re.split('/', first_line) response = db.do_command('SELECT name, altitude FROM location WHERE location_area=?', [loc_id[2]]) elif re.search(ACCEPTABLE_REQUEST_TYPES[0], first_line): response = db.do_command('SELECT * FROM area') logging.info('Server response: {}'.format(response)) send_binary_response(rw, json.dumps(response).encode()) else: logging.info('Bad request: {}: sending failed response'.format(first_line)) send_binary_response(rw, "You have requested an unsupported request".encode(), status=400, status_remark='Bad Request') conn.shutdown(1) ## shutdown the sending side conn.close() logging.info("Closed connection")

CS4720Assignment6 CAUsers rehmasan\PycharmProjects C$4720Assignment6 assign06 test db util unused _init_py add_data.py create_db.py initpy db.py db _help.py example.log measurements server.py measures.sqlite reader_writer.py REST-client. py REST Server.py socket_util.py ?S unittest db access use rest.py db utility.use_rest.py request.py test2.py venv library root lilli External Libraries Scratches and Consoles CS4720Assignment6 CAUsers rehmasan\PycharmProjects C$4720Assignment6 assign06 test db util unused _init_py add_data.py create_db.py initpy db.py db _help.py example.log measurements server.py measures.sqlite reader_writer.py REST-client. py REST Server.py socket_util.py ?S unittest db access use rest.py db utility.use_rest.py request.py test2.py venv library root lilli External Libraries Scratches and Consoles

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Databases Questions!