import urllib.request import urllib.parse import json import numpy as np import tifffile import tempfile import os def test_level(level, lat=None, lon=None, radius_km=50.0): print(f"Testing level: {level} (lat={lat}, lon={lon}, radius_km={radius_km})") try: dummy_data = np.random.randint(0, 255, (224, 224, 3), dtype=np.uint8) with tempfile.NamedTemporaryFile(suffix=".tif", delete=False) as tmp: tifffile.imwrite(tmp.name, dummy_data) tmp_path = tmp.name boundary = "----WebKitFormBoundary7MA4YWxkTrZu0gW" parts = [] parts.append(f"--{boundary}") parts.append('Content-Disposition: form-data; name="file"; filename="upload_test.tif"') parts.append('Content-Type: image/tiff') parts.append('') with open(tmp_path, "rb") as f: parts.append(f.read()) parts.append(f"--{boundary}") parts.append('Content-Disposition: form-data; name="query_modality"') parts.append('') parts.append('optical') parts.append(f"--{boundary}") parts.append('Content-Disposition: form-data; name="k"') parts.append('') parts.append('5') parts.append(f"--{boundary}") parts.append('Content-Disposition: form-data; name="level"') parts.append('') parts.append(level) if lat is not None and lon is not None: parts.append(f"--{boundary}") parts.append('Content-Disposition: form-data; name="lat"') parts.append('') parts.append(str(lat)) parts.append(f"--{boundary}") parts.append('Content-Disposition: form-data; name="lon"') parts.append('') parts.append(str(lon)) parts.append(f"--{boundary}") parts.append('Content-Disposition: form-data; name="radius_km"') parts.append('') parts.append(str(radius_km)) parts.append(f"--{boundary}--") parts.append('') body = b"" for p in parts: if isinstance(p, str): body += p.encode("utf-8") + b"\r\n" else: body += p + b"\r\n" req = urllib.request.Request( "http://localhost:7860/api/search", data=body, headers={ "Content-Type": f"multipart/form-data; boundary={boundary}", "Content-Length": str(len(body)) } ) response = urllib.request.urlopen(req) res_data = json.loads(response.read().decode()) print(" SUCCESS!") print(" Results count:", len(res_data["results"])) if res_data["results"]: print(" First result class:", res_data["results"][0]["class"]) else: print(" EMPTY RESULTS!") os.remove(tmp_path) except Exception as e: print(" FAILED:", e) if __name__ == "__main__": test_level("level1") print("-" * 30) test_level("level2") print("-" * 30) test_level("level3") print("-" * 30) test_level("level4", lat=20.5937, lon=78.9629, radius_km=50.0) print("-" * 30) test_level("level4", lat=20.5937, lon=78.9629, radius_km=500.0)