SatFetch-ISRO-BAH2026 / scratch /test_all_levels.py
silverballs's picture
Deploy SatFetch Space App - track binary files with Git LFS
0db1cb9
Raw
History Blame Contribute Delete
3.37 kB
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)