Skip to content

Commit

Permalink
Environment variable setup, small testing changes, removing TestNomin…
Browse files Browse the repository at this point in the history
…atimBeta.

Nominatim.py: removing prints

TestNominatimBeta: removed and combined with testnominatim.py

runIntegrationTests.sh: modified to only call TestNominatim.py, since the other integration tests don't work yet.

TestNominatim.py: updated environment variable functionality to work with both AWS and the testing environment.  Modified test_geocode to only call geocode function once. Changed test query for test_get_json_geo so that it would return a list.
  • Loading branch information
nataliejschultz committed Aug 21, 2023
1 parent 7efa164 commit f8e9512
Show file tree
Hide file tree
Showing 4 changed files with 39 additions and 51 deletions.
52 changes: 37 additions & 15 deletions emission/individual_tests/TestNominatim.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,44 +11,66 @@
import emission.net.ext_service.geocoder.nominatim as eco

#temporarily sets NOMINATIM_QUERY_URL to the environment variable for testing.
eco.NOMINATIM_QUERY_URL = os.environ.get("NOMINATIM_QUERY_URL")
# print("query URL:", eco.NOMINATIM_QUERY_URL)
NOMINATIM_QUERY_URL_env = os.environ.get("NOMINATIM_QUERY_URL", "")
NOMINATIM_QUERY_URL = NOMINATIM_QUERY_URL_env if NOMINATIM_QUERY_URL_env != "" else eco.NOMINATIM_QUERY_URL
print("query URL in TestNominatim:", NOMINATIM_QUERY_URL)

class NominatimTest(unittest.TestCase):

maxDiff = None
def test_make_url_geo(self):
expected_result = eco.NOMINATIM_QUERY_URL + "/search?q=Providence%2C+Rhode+Island&format=json"
expected_result = NOMINATIM_QUERY_URL + "/search?q=Providence%2C+Rhode+Island&format=json"
actual_result = eco.Geocoder.make_url_geo("Providence, Rhode Island")
self.assertEqual(expected_result, actual_result)

def test_get_json_geo(self):
expected_result = [{'place_id': 133278818, 'licence': 'Data © OpenStreetMap contributors, ODbL 1.0. http://osm.org/copyright', 'osm_type': 'way', 'osm_id': 121496393, 'lat': '41.824034499999996', 'lon': '-71.41290469687814', 'class': 'amenity', 'type': 'townhall', 'place_rank': 30, 'importance': 0.2257940944999783, 'addresstype': 'amenity', 'name': 'Providence City Hall', 'display_name': 'Providence City Hall, Dorrance Street, Downtown, Providence, Providence County, Rhode Island, 02902, United States', 'boundingbox': ['41.8237547', '41.8243153', '-71.4132816', '-71.4125278']}]
actual_result = eco.Geocoder.get_json_geo("Providence City Hall, Rhode Island")
expected_result = [{'place_id': 139763, 'licence': 'Data © OpenStreetMap contributors, ODbL 1.0. https://osm.org/copyright', 'osm_type': 'way', 'osm_id': 121496393, 'boundingbox': ['41.8237547', '41.8243153', '-71.4132816', '-71.4125278'], 'lat': '41.824034499999996', 'lon': '-71.41290469687814', 'display_name': 'Providence City Hall, Fulton Street, Downtown, Providence, Providence County, 02903, United States', 'class': 'amenity', 'type': 'townhall', 'importance': 1.25001}]
actual_result = eco.Geocoder.get_json_geo("Providence City Hall, Fulton Street, Downtown, Providence, Providence County, 02903, United States")
self.assertEqual(expected_result, actual_result)

def test_geocode(self):
expected_result_lon = Coordinate(41.8239891, -71.4128343).get_lon()
expected_result_lat = Coordinate(41.8239891, -71.4128343).get_lat()
actual_result_lon = eco.Geocoder.geocode("Providence, Rhode Island").get_lon()
actual_result_lat = eco.Geocoder.geocode("Providence, Rhode Island").get_lat()
actual_result = eco.Geocoder.geocode("Providence, Rhode Island")
actual_result_lon = actual_result.get_lon()
actual_result_lat = actual_result.get_lat()
self.assertEqual(expected_result_lon, actual_result_lon)
self.assertEqual(expected_result_lat, actual_result_lat)


def test_make_url_reverse(self):
expected_result = eco.NOMINATIM_QUERY_URL + "/reverse?lat=41.8239891&lon=-71.4128343&format=json"
expected_result = NOMINATIM_QUERY_URL + "/reverse?lat=41.8239891&lon=-71.4128343&format=json"
actual_result = (eco.Geocoder.make_url_reverse(41.8239891, -71.4128343))
self.assertEqual(expected_result, actual_result)

#started modifying this test to potentially use three results: ground truth, nominatim in docker container (specific version), and regular nominatim query (most current version)
#if this is necessary, it will help us see if the container or query needs to be updated for nominatim compatibility.
def test_get_json_reverse(self):
expected_result = {'place_id': 133278818, 'licence': 'Data © OpenStreetMap contributors, ODbL 1.0. http://osm.org/copyright', 'osm_type': 'way', 'osm_id': 121496393, 'lat': '41.824034499999996', 'lon': '-71.41290469687814', 'class': 'amenity', 'type': 'townhall', 'place_rank': 30, 'importance': 0.2257940944999783, 'addresstype': 'amenity', 'name': 'Providence City Hall', 'display_name': 'Providence City Hall, Dorrance Street, Downtown, Providence, Providence County, Rhode Island, 02902, United States', 'address': {'amenity': 'Providence City Hall', 'road': 'Dorrance Street', 'neighbourhood': 'Downtown', 'city': 'Providence', 'county': 'Providence County', 'state': 'Rhode Island', 'ISO3166-2-lvl4': 'US-RI', 'postcode': '02902', 'country': 'United States', 'country_code': 'us'}, 'boundingbox': ['41.8237547', '41.8243153', '-71.4132816', '-71.4125278']}
actual_result = eco.Geocoder.get_json_reverse(41.8239891, -71.4128343)
self.assertEqual(expected_result, actual_result)
expected_result = {'place_id': 139763, 'licence': 'Data © OpenStreetMap contributors, ODbL 1.0. https://osm.org/copyright', 'osm_type': 'way', 'osm_id': 121496393, 'lat': '41.824034499999996', 'lon': '-71.41290469687814', 'display_name': 'Providence City Hall, Fulton Street, Downtown, Providence, Providence County, 02903, United States', 'address': {'amenity': 'Providence City Hall', 'road': 'Fulton Street', 'neighbourhood': 'Downtown', 'city': 'Providence', 'county': 'Providence County', 'postcode': '02903', 'country': 'United States', 'country_code': 'us'}, 'boundingbox': ['41.8237547', '41.8243153', '-71.4132816', '-71.4125278']}
actual_docker = eco.Geocoder.get_json_reverse(41.8239891, -71.4128343)
# actual_nominatim = "httsp://nominatim.openstreetmap.org/"
self.assertEqual(expected_result, actual_docker)
# self.assertEqual(actual_docker, actual_nominatim)

def test_reverse_geocode(self):
expected_result = "Providence City Hall, Dorrance Street, Downtown, Providence, Providence County, Rhode Island, 02902, United States"
actual_result = eco.Geocoder.reverse_geocode(41.8239891, -71.4128343)
expected_result = "Portugal Parkway, Fox Point, Providence, Providence County, 02906, United States"
actual_result = eco.Geocoder.reverse_geocode(41.8174476, -71.3903767)
self.assertEqual(expected_result, actual_result)


#this test was written with the intention of using a ground truth file. Once a fake trip is generated in Rhode island, this section will be modified.
# def test_display_name(self):
# nominatim_reverse_query = NOMINATIM_QUERY_URL + "/reverse?"
# params = {
# "lat" : 41.831174,
# "lon" : -71.414907,
# "format" : "json"
# }
# encoded_params = urllib.parse.urlencode(params)
# url = nominatim_reverse_query + encoded_params
# request = urllib.request.Request(url)
# response = urllib.request.urlopen(request)
# parsed_response = json.loads(response.read())
# actual_result = str(parsed_response.get("display_name"))
# expected_result = "Rhode Island State Capitol Building, 82, Smith Street, Downtown, Providence, Providence County, 02903, United States"
# self.assertEqual(expected_result, actual_result)
if __name__ == '__main__':
unittest.main()
30 changes: 0 additions & 30 deletions emission/integrationTests/TestNominatimBeta.py

This file was deleted.

5 changes: 0 additions & 5 deletions emission/net/ext_service/geocoder/nominatim.py
Original file line number Diff line number Diff line change
Expand Up @@ -40,11 +40,8 @@ def make_url_geo(cls, address):
@classmethod
def get_json_geo(cls, address):
request = urllib.request.Request(cls.make_url_geo(address))
print("request", request)
response = urllib.request.urlopen(request)
print("response", response)
jsn = json.loads(response.read())
print("jsn", jsn)
return jsn

@classmethod
Expand Down Expand Up @@ -74,8 +71,6 @@ def get_json_reverse(cls, lat, lng):
response = urllib.request.urlopen(request)
parsed_response = json.loads(response.read())
logging.debug("parsed_response = %s" % parsed_response)
print("parsed res", parsed_response)
print("restype", type(parsed_response))
return parsed_response

@classmethod
Expand Down
3 changes: 2 additions & 1 deletion runIntegrationTests.sh
100644 → 100755
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
set -e
PYTHONPATH=. python -m unittest discover -s emission/integrationTests -p Test*;
# PYTHONPATH=. python -m unittest discover -s emission/integrationTests -p Test*;
PYTHONPATH=. python -m unittest emission/individual_tests/TestNominatim.py

0 comments on commit f8e9512

Please sign in to comment.