From e66ff1f72660dc43583a68580aac7381fc1d9f8c Mon Sep 17 00:00:00 2001 From: Sara <sarasdj@stud.ntnu.no> Date: Mon, 13 May 2024 14:32:42 +0200 Subject: [PATCH] add: more unit tests --- .coverage | Bin 53248 -> 53248 bytes server/main.py | 4 +- .../__pycache__/add_new_lake.cpython-311.pyc | Bin 10187 -> 10064 bytes .../update_measurements.cpython-311.pyc | Bin 12016 -> 12131 bytes server/map_handler/add_new_lake.py | 2 - .../lake_relations/test_lake_div.json | 1 - ..._add_new_lake.cpython-311-pytest-8.2.0.pyc | Bin 4717 -> 4828 bytes ..._measurements.cpython-311-pytest-8.2.0.pyc | Bin 0 -> 1466 bytes .../unit_tests/test_add_new_lake.py | 9 +++- .../unit_tests/test_update_measurements.py | 9 ++++ server/map_handler/update_measurements.py | 45 +++++++++--------- server/scheduler.py | 4 +- 12 files changed, 43 insertions(+), 31 deletions(-) delete mode 100644 server/map_handler/lake_relations/test_lake_div.json create mode 100644 server/map_handler/unit_tests/__pycache__/test_update_measurements.cpython-311-pytest-8.2.0.pyc create mode 100644 server/map_handler/unit_tests/test_update_measurements.py diff --git a/.coverage b/.coverage index 8ccad4cf530884d0d7e09dae50f7d7ef537febf1..ad95739423016a104fb28ab751d20e77ca1b4504 100644 GIT binary patch literal 53248 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 DnaK~u delta 200 zcmZozz}&Eac>{}s2nX+e2L4n0?fjN}kNDQ{rSoy~?%ymZu$*`EeqUE6p!5L-{?mNx z`8)VBcn|Pf@jd3_0ZOmn-FzU{MM;E%e-;D(PyUbmFZpltU*g}$zl?ttP`ZhK@~nP6 z#S^RzC!c#a%;a=nXJujJ6ks(-=V1Xdq*%<tPx;!XFiw8iFAX%~6a)Wn{xAG*`JeIM v=fA;!k^dCXj7|KTPtCVd07~BgNq+-c@`nF8|0Djp{5OEo2lyx7IIjT!5-UV& diff --git a/server/main.py b/server/main.py index c7a16913..6c55584e 100644 --- a/server/main.py +++ b/server/main.py @@ -11,7 +11,7 @@ from server.scheduler import update_scheduler from server.consts import LAKE_RELATIONS_PATH from map_handler.get_lake_relation import get_map_data_handler from map_handler.input_new_data import input_new_Lidar_data -from map_handler.update_measurements import update_measurements, addTestData +from map_handler.update_measurements import update_measurements_handler, addTestData app = Flask(__name__) terminate_server = 0 @@ -82,7 +82,7 @@ class IceHTTP(BaseHTTPRequestHandler): lake_name = unquote(lake_name_param) # Decode url param if lake_name_param: - update_measurements(self, lake_name) + update_measurements_handler(self, lake_name) else: self.send_response(400) self.send_header('Content-type', 'application/json') diff --git a/server/map_handler/__pycache__/add_new_lake.cpython-311.pyc b/server/map_handler/__pycache__/add_new_lake.cpython-311.pyc index 8dbe5c4c5269ae0daa3a59b6220662c181919014..8d3750ebdf174db610c11549b96840a0d5519932 100644 GIT binary patch delta 377 zcmX@@f5DG;IWI340}v!KJEgg7<ZWYNy2iSBDoZshyI`$Cig=2|<cVA|lf$|A!F<US zsm&9)-ZL|2PGOu}$EU>jW%5EkIVMfn&Byq77&qVK4`t*$#LU3Z!0<sRWwW`U2Qx1t ztHlQf7%_RVhz?N11SA3>CVv*uux1AGe*E}RYyfmflb4~F3BxH9E^iIyQ+90LT+F9g z7=i55T)ZGsoXuOA`LrxpM48oFV{@3O0kcIaP-BrPh%f^Yb|4}WL_~pzXb=$tByMq~ z7iFfz=Va!k7T;p5C<>pvPeP5cbMsRPQC9X_tOZ4xc_owo%ce4}-JB|C&dPXw@?7O| z#=^;>D$$IglM7WG8P9IstWv^cmCMKobUuijQ4FCsghJ>8$tR2tL_yeC$b`v>>RA9F C{c2$V delta 513 zcmccMciNwKIWI340}w1?bV^&ck++S7NsevvRF-O1ZRJ{p5^InY1f+=9D9mP<%e0J< zfnhZeLjWT~ibRU|WKS*`s}is|5MdRDB6RJNIJ8TpNN)Dzde1!BmQR6k%H%jcIrhvi zK=U=_HrMg-FtXobEhx&&E7{z|AIix2fti7!f#HKt+U6Gm9?U9CtQH>_V8mSx-V1z& zD-wYO5MAUjy24>}fx~FBt%wd#p$SMKga9klU7>h^PZx+Ta_C**(7V8)H@Qqi!<rSS z=*N#A#RfosG<g|%nJ}C(;qu{OK4mB2EyH|Tj1kB_EyD{UH6?u5na?nSM9#3Y`tWSN zDPq8Ekp|RQWC|k8K!hELhyoGOAR-1t!~%(1T<JxbDe*a(d8x&>7%Pe*COb-~F?Mav zkPu~ME%FDdnA{?p%D8UxD_L_^#v7BBl*<|YC(lxjW(=GBP1%w0+-3`v5+<vBMn<5Y dK;(>K2)!W`LLW#zVSFG8!p1@-O@5}91pvs~g2ey; diff --git a/server/map_handler/__pycache__/update_measurements.cpython-311.pyc b/server/map_handler/__pycache__/update_measurements.cpython-311.pyc index 37757e8e863f0fd6f0235db5e18ff3def83dc6d6..b2894fcaa2808ca853647bccd7b4c454f79b8146 100644 GIT binary patch delta 3381 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 delta 3015 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 diff --git a/server/map_handler/add_new_lake.py b/server/map_handler/add_new_lake.py index 04f44b72..58deadc6 100644 --- a/server/map_handler/add_new_lake.py +++ b/server/map_handler/add_new_lake.py @@ -129,10 +129,8 @@ def cut_map(cursor, lake_name: str, cell_size_in_km: float = 0.5) -> (int, str): return 200, feature_collection except FileNotFoundError as e: - print(f"Failed to find the map file: {e}") return 404, f"Failed to find the map file: {e}" except Exception as e: - print(f"Error in adding new map: {e}") return 500, f"Error in adding new map: {e}" diff --git a/server/map_handler/lake_relations/test_lake_div.json b/server/map_handler/lake_relations/test_lake_div.json deleted file mode 100644 index 65344015..00000000 --- a/server/map_handler/lake_relations/test_lake_div.json +++ /dev/null @@ -1 +0,0 @@ -{"test-field1": "test-value1", "test-field2": ["test-value2", "testvalue3"]} \ No newline at end of file diff --git a/server/map_handler/unit_tests/__pycache__/test_add_new_lake.cpython-311-pytest-8.2.0.pyc b/server/map_handler/unit_tests/__pycache__/test_add_new_lake.cpython-311-pytest-8.2.0.pyc index a74c8c7b03b7928d80c0ec1baad0a0ff2cfdca0a..ec3abd0b1224921af2ad0122bc5699c6d54a97f7 100644 GIT binary patch delta 609 zcmZ`zziSjh6rS0g{V{v{Ymz(M<2=tZ7iH7LLM`l~LJYxJ1e>)`aW8th>xJD#ys#Gn zrZ~aE@IVEdR4Q1ATq7cp_z&pf6>{1LS_)}wteia)u<^~j?|bjfH#6VQ#@9*XnPF&% z$9eVC()SIcjPGn5nL399#Z!Fb3xOI^kA|A3VZ?heD1^GFk7^Paq3M~S<yoQa*?dNQ zd7XHSv%-0dv&wn=)x#|j)BXk0A-LTCpiW^t*8ffKV*CJB3r;=%em8u1g;y!c(N}Wp z3W*4h3bkozSCXF#zWP)^=mpQeaU6BUMA_>Qx<Me29idC0qE9oD;+rFBS4yS$eNuqS za#8bXDlK7OO9^!JMQ{ZRzUbu<i^e@m_D$bP<rZF%xeEoJ7!wc+b-ODim47}m0qc%{ z5qvZ5Gb_qnM!At8X)iZ#!K!&|VkorZp&T{C_U)#tM*DNg>0CmSW}IAFzLH#rEz^-y zK063Q^RPD0s~XSvEoj!{J`=IV=GDx0pD$$g$=4S%`|R4>FBy(nCDv;_9?xiXK&v|l zO9wVt|C%+6Py8VA`dqJ-5obW0k9#|2{Lwe1nTohwAu}~)`w-^n3K8Y=1-A$T`wX6i oB8%}n^jK9}<a3-Gc?U09gVMFp`i$Tc>(ooQyo3G&QG?(51DJe>U;qFB delta 565 zcmZ`zO=uHA6rQ&`oBf~duC+F$O$=?5rUy&FLZM!o`qM*^ir`_v+Zd^4P1)oU*$sk< zc(csGi`1Nq;7J3LlTuF}vrtjQyC)?V!J}_edh{{#ecycZzQ_Bq_-n!L*|tHjI;2`V z*tfH=w_jSmB-PbG^R+<tbs(H@xo!leZ;mysTY>G{0rOel_zrqH&pe|31hR_kB5TOr z+k+1>X#JbCO<}tKRa*vd`;zexX1GMibHX7eT;ejPw<WH;kYZ?o_-N*BIbG<uT2#C= zXD7M#3L|gu9@i>~CDDZ`@i#Le#j+?_D=TsYcgGDejcD^z%RFf&<WA;9b3LLp;6@~i z$JTW*WjW%fl^wHVKXnw&xDzS6a32$KM)d4?(NLGf4140*p^8(!)5hMdd!d3-ykqB= z%4#@^I^0bEpcYosM?Qu16fPh%)0`+eMPmy^E_Hh1hO@Zl5#`LYPPd)V$`P#$Y2{Cb z80-rxbT<=LdVMZoYlHQKUH&X5`u35&JtCmwhCA2#1Lq19hct($>EgV>>5Z&>n57$Y z>fu>HEK8w|{?+m+vFctF9k&5n;<r0Dxq~jG8@xvt$pG+;h=MmQkq4scwF@5PN8~>c HE@0*#$KZO} diff --git a/server/map_handler/unit_tests/__pycache__/test_update_measurements.cpython-311-pytest-8.2.0.pyc b/server/map_handler/unit_tests/__pycache__/test_update_measurements.cpython-311-pytest-8.2.0.pyc new file mode 100644 index 0000000000000000000000000000000000000000..0f76e4a0ea22b4d3828864abe9ad776e18e7da51 GIT binary patch literal 1466 zcmZ`(TWi!n6rM@4x3*SlU8t9qf~d{QQhSjqu6TbD7C{6l3nAT^ZMV&hnMrNSE>!Uc z_#pJf=c@G2v{IqWlOQ6#73x!;Jd<o<wzOxHlXLmzJ2N>a`}y3tJ_K^pc+~t0&!5Uk zMC%$yGhl2Xf(UldJdU24t2Z=^Tw^|mRYr62ZehLvc8(bDjrk(MFOix5qbO=7mcwB{ zY(XuT+B{^`rJmq2&!`BQ*XY)X9tF@k+(&CTDvCQufR#uaZG*RyM(VK14(@0~>*#IV z)>ooUcZ{~dw}j&9%5riTMD(`N#KchOrnYSW8{DywoKW?<vYf`ZA+nQ%(JJB>d$@B+ zs*QVh$9i%3vv3}U%GuriN9w(dB>zd<fNUp63Z&T1wQ%I+#rcFAp&q7U5^v{wnR>l< z(AG8FF*-Uy(6~}fmIUR(a_kk_`UtPv#K&5-YT}Ix*C&GYNt2IPtK-U?Ho5HQ!WJR7 z8a|<>CUpQPHN7!tb55CvfU^LE;H+6<>Zr2sL9iaxu$dgP8n)wDj0UXXyMfK99Dua7 z5VjoA@?caP9}rxQSbWJ39TGvUMaN&T9m}&_DoYl(n^ZB#!G}@RmhU}f%x7}gYWmEz zg+<o_$M$Ri8M7b<(-TGvOuZ_JE!nRs#~Yu@I=5mc=9<Ymx49ad@mP*uKfYUk1;^%f zPk3Sd3FRxo59$H)7pLw_PSzo{N?F~t18d3lhy!-$wS=X%!|TzePWf6Y!MYqdE6J`v zeKoH9H>gc?P#)i`{VGp<8QUw*?U(1?);6Di82Vw1?k3l_#DK_mV{|{`rWi2xl2nXI z-R!C~nDV5NQ(-YJ=<EecV(<x)EL9c{_7NNvnHp2)u9+oSOs0hmLPTD&;`yq?t%ROe z7=6Q90%j!*$wD{A2Gp7xac?S_-c(NMMKr+CJO7H<RanR_gE}tWbA1vz^gg==uKJJS eFF+mY7~=!gmeYT`=-G+uFrUL?hv*CyRs09n(|ut8 literal 0 HcmV?d00001 diff --git a/server/map_handler/unit_tests/test_add_new_lake.py b/server/map_handler/unit_tests/test_add_new_lake.py index 6b3fd67f..a80b333e 100644 --- a/server/map_handler/unit_tests/test_add_new_lake.py +++ b/server/map_handler/unit_tests/test_add_new_lake.py @@ -1,3 +1,4 @@ +import os import json from shapely.geometry import Polygon, LineString @@ -37,12 +38,18 @@ def test_write_json_to_file() -> None: "testvalue3" ], } + test_path = LAKE_RELATIONS_PATH + '/' + test_lake_name + '_div.json' # Call the function that is being tested write_json_to_file(test_lake_name, test_data) # Try to read the data from the newly created file - with open(LAKE_RELATIONS_PATH + '/' + test_lake_name + '_div.json', 'r') as f: + with open(test_path, 'r') as f: result = json.load(f) assert result == test_data + + # Remove the test file + os.remove(test_path) + + diff --git a/server/map_handler/unit_tests/test_update_measurements.py b/server/map_handler/unit_tests/test_update_measurements.py new file mode 100644 index 00000000..e56f20bf --- /dev/null +++ b/server/map_handler/unit_tests/test_update_measurements.py @@ -0,0 +1,9 @@ +from server.map_handler.update_measurements import update_measurements + + +def test_update_measurements() -> None: + test_lake_name = "test_lake" + + status_code, _ = update_measurements(test_lake_name) + + assert status_code == 404 diff --git a/server/map_handler/update_measurements.py b/server/map_handler/update_measurements.py index 2e07a875..ed3cd94a 100644 --- a/server/map_handler/update_measurements.py +++ b/server/map_handler/update_measurements.py @@ -7,15 +7,29 @@ from server.consts import LAKE_RELATIONS_PATH from server.ModelFromNVE.icemodellingscripts.getIceThicknessLakes import get_raw_dates, ice_prognosis_raw_data -def update_measurements(self, lake_name: str): +def update_measurements_handler(self, lake_name: str): + status_code, measurement_data = update_measurements(lake_name) + + self.send_response(status_code) + self.send_header("Content-type", "application/json") + self.end_headers() + + self.wfile.write(measurement_data.encode('utf-8')) + + +def update_measurements(lake_name: str) -> (int, str): """ Retrieves LiDar data for a given lake, and adds weather data to each subdivision. Parameters: - self (BaseHTTPRequestHandler): A instance of a BaseHTTPRequestHandler lake_name (str): The name of the requested lake """ try: + # Return immediately if an invalid lake name was provided + if not os.path.exists(LAKE_RELATIONS_PATH + lake_name + "_div.json"): + print("The system lake does not exist") + return 404, f"{lake_name} does not exists in the system" + # Define file path to lidar data file file_path = os.path.join(LAKE_RELATIONS_PATH, lake_name + '_lidar_data.json') @@ -115,27 +129,13 @@ def update_measurements(self, lake_name: str): with open(LAKE_RELATIONS_PATH + lake_name.lower() + '_measurements.json', 'w') as f: json.dump(measurements, f, indent=4) - if self is not None: - # Convert list of dictionaries to JSON - response_data = json.dumps(measurements, indent=4) - # Set headers - self.send_response(200) - self.send_header("Content-type", "application/json") - self.end_headers() - - # Write processed data to response object - self.wfile.write(response_data.encode('utf-8')) + # Convert list of dictionaries to JSON + response_data = json.dumps(measurements, indent=4) + # Set headers + return 200, response_data except Exception as e: - print(f"Error in updating measurements: {e}") - - if self is not None: - # Set headers - self.send_response(500) - self.send_header("Content-type", "application/json") - self.end_headers() - - self.wfile.write(f"Error in updating measurements: {e}".encode('utf-8')) + return 500, f"Error in updating measurements: {e}".encode('utf-8') def fill_remaining_subdivisions(lake_name: str, processed_ids: list): @@ -171,7 +171,7 @@ def fill_remaining_subdivisions(lake_name: str, processed_ids: list): if len(ice_stats) > 0 and len(ice_stats[0]) > 0: total_ice_thickness = ice_stats[0]['Total ice (m)'] accuracy = 1 - else: # Initialise empty ice stats + else: # Initialise empty ice stats ice_stats = { "Date": "NA", "Slush ice (m)": 0, @@ -252,7 +252,6 @@ def addTestData(self, lake_name: str): # Create 10 subdivisions for each measurement, with randomized coordinates and thicknesses for subdiv_id in range(30): - subdivision = { "SubdivID": sub_div_id, "MinThickness": round(random.uniform(4, 20), 1), diff --git a/server/scheduler.py b/server/scheduler.py index 970987bd..6c50b094 100644 --- a/server/scheduler.py +++ b/server/scheduler.py @@ -2,14 +2,14 @@ import json import time import schedule -from map_handler.update_measurements import update_measurements +from map_handler.update_measurements import update_measurements_handler from server.consts import LAKE_RELATIONS_PATH def update_all_measurements(lake_names: list): """Loops through all lake names and calls get_measurements() on each lake""" for lake in lake_names: - update_measurements(None, lake) + update_measurements_handler(None, lake) def update_scheduler(): -- GitLab