UAT C1239396357-ASDC_DEV2 (MI1B1) #44192
GitHub Actions / Tested with Harmony
failed
Nov 23, 2024 in 0s
2 fail in 2m 14s
Annotations
Check warning on line 0 in tests.verify_collection
github-actions / Tested with Harmony
test_spatial_subset[C1239396357-ASDC_DEV2] (tests.verify_collection) failed
test-results/test_report.xml [took 4s]
Raw output
KeyError: 'SpatialExtent'
granule_umm_json = {'meta': {'collection-concept-id': 'C1239396357-ASDC_DEV2', 'concept-id': 'G1257445444-ASDC_DEV2', 'concept-type': 'gr...: 'ProducerGranuleId'}], 'ProductionDateTime': '2022-10-13T13:30:33.000Z'}, 'GranuleUR': 'SC:MI1B1.002:66429803', ...}}
def get_bounding_box(granule_umm_json):
# Find Bounding box for granule
try:
longitude_list = []
latitude_list = []
> polygons = granule_umm_json['umm']['SpatialExtent']['HorizontalSpatialDomain']['Geometry'].get(
'GPolygons')
E KeyError: 'SpatialExtent'
verify_collection.py:204: KeyError
During handling of the above exception, another exception occurred:
collection_concept_id = 'C1239396357-ASDC_DEV2', env = 'uat'
granule_json = {'meta': {'collection-concept-id': 'C1239396357-ASDC_DEV2', 'concept-id': 'G1257445444-ASDC_DEV2', 'concept-type': 'gr...: 'ProducerGranuleId'}], 'ProductionDateTime': '2022-10-13T13:30:33.000Z'}, 'GranuleUR': 'SC:MI1B1.002:66429803', ...}}
collection_variables = [{'associations': {'collections': [{'concept-id': 'C1239396357-ASDC_DEV2'}]}, 'meta': {'association-details': {'collec.../phony_dim_9', 'Size': 1, 'Type': 'OTHER'}], 'LongName': 'L1B1_Blue_Product/Swath Attributes/Ghost_Scalar', ...}}, ...]
harmony_env = <Environment.UAT: 3>
tmp_path = PosixPath('/tmp/pytest-of-runner/pytest-0/test_spatial_subset_C1239396350')
bearer_token = 'eyJ0eXAiOiJKV1QiLCJvcmlnaW4iOiJFYXJ0aGRhdGEgTG9naW4iLCJzaWciOiJlZGxqd3RwdWJrZXlfdWF0IiwiYWxnIjoiUlMyNTYifQ.eyJ0eXBlIj...c6LKcNf4V62gRZ31brDA-4hQMtfEyOzpvQ9hxFnkUEusvI3Y-oYbHVtSa5l7m9KNKjC-lgIvrK7TTs8_80NQDFkGniixoYSbz0AcEjM2fh7TTJfNYzGOCA'
skip_spatial = set()
@pytest.mark.timeout(600)
def test_spatial_subset(collection_concept_id, env, granule_json, collection_variables,
harmony_env, tmp_path: pathlib.Path, bearer_token, skip_spatial):
test_spatial_subset.__doc__ = f"Verify spatial subset for {collection_concept_id} in {env}"
if collection_concept_id in skip_spatial:
pytest.skip(f"Known collection to skip for spatial testing {collection_concept_id}")
logging.info("Using granule %s for test", granule_json['meta']['concept-id'])
# Compute a box that is smaller than the granule extent bounding box
> north, south, east, west = get_bounding_box(granule_json)
verify_collection.py:444:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
granule_umm_json = {'meta': {'collection-concept-id': 'C1239396357-ASDC_DEV2', 'concept-id': 'G1257445444-ASDC_DEV2', 'concept-type': 'gr...: 'ProducerGranuleId'}], 'ProductionDateTime': '2022-10-13T13:30:33.000Z'}, 'GranuleUR': 'SC:MI1B1.002:66429803', ...}}
def get_bounding_box(granule_umm_json):
# Find Bounding box for granule
try:
longitude_list = []
latitude_list = []
polygons = granule_umm_json['umm']['SpatialExtent']['HorizontalSpatialDomain']['Geometry'].get(
'GPolygons')
lines = granule_umm_json['umm']['SpatialExtent']['HorizontalSpatialDomain']['Geometry'].get('Lines')
if polygons:
for polygon in polygons:
points = polygon['Boundary']['Points']
for point in points:
longitude_list.append(point.get('Longitude'))
latitude_list.append(point.get('Latitude'))
break
elif lines:
points = lines[0].get('Points')
for point in points:
longitude_list.append(point.get('Longitude'))
latitude_list.append(point.get('Latitude'))
if not longitude_list or not latitude_list: # Check if either list is empty
raise ValueError("Empty longitude or latitude list")
north = max(latitude_list)
south = min(latitude_list)
west = min(longitude_list)
east = max(longitude_list)
except (KeyError, ValueError):
> bounding_box = granule_umm_json['umm']['SpatialExtent']['HorizontalSpatialDomain']['Geometry'][
'BoundingRectangles'][0]
E KeyError: 'SpatialExtent'
verify_collection.py:230: KeyError
--------------------------------- Captured Log ---------------------------------
INFO root:verify_collection.py:441 Using granule G1257445444-ASDC_DEV2 for test
Check warning on line 0 in tests.verify_collection
github-actions / Tested with Harmony
test_temporal_subset[C1239396357-ASDC_DEV2] (tests.verify_collection) failed
test-results/test_report.xml [took 2m 7s]
Raw output
harmony.harmony.ProcessingFailedException: WorkItem failed: podaac/l2ss-py:2.12.0rc14: Error in file '/home/dockeruser/.local/lib/python3.10/site-packages/harmony_service_lib/http.py', line 450, in function 'download': Unable to download due to status code: 404 and content b'<html>\n <head>\n <title>Egress | \n \n 404\n \n \n Data Not Available\n \n</title>\n <style type="text/css">\n body {\n font-family: sans-serif;\n padding: 25px\n }\n #logincontrols {\n position: fixed;\n right: 25px;\n top: 25px;\n }\n #status_code {\n font-size: 400px;\n font-weight: bold;\n position: fixed;\n top: 50%;\n left: 50%;\n margin-top: -200px;\n margin-left: -300px;\n }\n #requestidcontainer {\n position: fixed;\n margin-bottom: 3px;\n bottom: 0;\n right: 10px;\n font-size: 85%;\n }\n </style>\n \n </head>\n\n <body>\n \n\n<div id="status_code">404</div>\n\n\n <div id="contentstring">Could not find requested data.</div>\n\n\n \n <div id="requestidcontainer">Request ID: <span id="requestid">9244ac49-bb31-4087-af7c-4206362de0e1</span></div>\n \n </body>\n</html>' and all retries exhausted.
collection_concept_id = 'C1239396357-ASDC_DEV2', env = 'uat'
granule_json = {'meta': {'collection-concept-id': 'C1239396357-ASDC_DEV2', 'concept-id': 'G1257445444-ASDC_DEV2', 'concept-type': 'gr...: 'ProducerGranuleId'}], 'ProductionDateTime': '2022-10-13T13:30:33.000Z'}, 'GranuleUR': 'SC:MI1B1.002:66429803', ...}}
collection_variables = [{'associations': {'collections': [{'concept-id': 'C1239396357-ASDC_DEV2'}]}, 'meta': {'association-details': {'collec.../phony_dim_9', 'Size': 1, 'Type': 'OTHER'}], 'LongName': 'L1B1_Blue_Product/Swath Attributes/Ghost_Scalar', ...}}, ...]
harmony_env = <Environment.UAT: 3>
tmp_path = PosixPath('/tmp/pytest-of-runner/pytest-0/test_temporal_subset_C123939630')
bearer_token = 'eyJ0eXAiOiJKV1QiLCJvcmlnaW4iOiJFYXJ0aGRhdGEgTG9naW4iLCJzaWciOiJlZGxqd3RwdWJrZXlfdWF0IiwiYWxnIjoiUlMyNTYifQ.eyJ0eXBlIj...c6LKcNf4V62gRZ31brDA-4hQMtfEyOzpvQ9hxFnkUEusvI3Y-oYbHVtSa5l7m9KNKjC-lgIvrK7TTs8_80NQDFkGniixoYSbz0AcEjM2fh7TTJfNYzGOCA'
skip_temporal = {'C1238658389-POCLOUD', 'C1238658392-POCLOUD', 'C1265136917-OB_CLOUD', 'C1265136919-OB_CLOUD', 'C1265136924-OB_CLOUD', 'C1265136990-OB_CLOUD', ...}
@pytest.mark.timeout(600)
def test_temporal_subset(collection_concept_id, env, granule_json, collection_variables,
harmony_env, tmp_path: pathlib.Path, bearer_token, skip_temporal):
test_spatial_subset.__doc__ = f"Verify temporal subset for {collection_concept_id} in {env}"
if collection_concept_id in skip_temporal:
pytest.skip(f"Known collection to skip for temporal testing {collection_concept_id}")
logging.info("Using granule %s for test", granule_json['meta']['concept-id'])
start_time = granule_json['umm']["TemporalExtent"]["RangeDateTime"]["BeginningDateTime"]
end_time = granule_json['umm']["TemporalExtent"]["RangeDateTime"]["EndingDateTime"]
temporal_subset = get_half_temporal_extent(start_time, end_time)
# Build harmony request
harmony_client = harmony.Client(env=harmony_env, token=bearer_token)
request_collection = harmony.Collection(id=collection_concept_id)
harmony_request = harmony.Request(collection=request_collection,
granule_id=[granule_json['meta']['concept-id']],
temporal=temporal_subset)
logging.info("Sending harmony request %s", harmony_client.request_as_url(harmony_request))
# Submit harmony request and download result
job_id = harmony_client.submit(harmony_request)
logging.info("Submitted harmony job %s", job_id)
> harmony_client.wait_for_processing(job_id, show_progress=True)
verify_collection.py:581:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <harmony.harmony.Client object at 0x7fe5dbfd9990>
job_id = '81d7b783-f6d0-47df-86a2-6d27a884c15a', show_progress = True
def wait_for_processing(self, job_id: str, show_progress: bool = False) -> None:
"""Retrieve a submitted job's completion status in percent.
Args:
job_id: UUID string for the job you wish to interrogate.
Returns:
The job's processing progress as a percentage.
:raises
Exception: This can happen if an invalid job_id is provided or Harmony services
can't be reached.
"""
# How often to refresh the screen for progress updates and animating spinners.
ui_update_interval = 0.33 # in seconds
running_w_errors_logged = False
intervals = round(self.check_interval / ui_update_interval)
if show_progress:
with progressbar.ProgressBar(max_value=100, widgets=progressbar_widgets) as bar:
progress = 0
while progress < 100:
progress, status, message = self.progress(job_id)
if status == 'failed':
> raise ProcessingFailedException(job_id, message)
E harmony.harmony.ProcessingFailedException: WorkItem failed: podaac/l2ss-py:2.12.0rc14: Error in file '/home/dockeruser/.local/lib/python3.10/site-packages/harmony_service_lib/http.py', line 450, in function 'download': Unable to download due to status code: 404 and content b'<html>\n <head>\n <title>Egress | \n \n 404\n \n \n Data Not Available\n \n</title>\n <style type="text/css">\n body {\n font-family: sans-serif;\n padding: 25px\n }\n #logincontrols {\n position: fixed;\n right: 25px;\n top: 25px;\n }\n #status_code {\n font-size: 400px;\n font-weight: bold;\n position: fixed;\n top: 50%;\n left: 50%;\n margin-top: -200px;\n margin-left: -300px;\n }\n #requestidcontainer {\n position: fixed;\n margin-bottom: 3px;\n bottom: 0;\n right: 10px;\n font-size: 85%;\n }\n </style>\n \n </head>\n\n <body>\n \n\n<div id="status_code">404</div>\n\n\n <div id="contentstring">Could not find requested data.</div>\n\n\n \n <div id="requestidcontainer">Request ID: <span id="requestid">9244ac49-bb31-4087-af7c-4206362de0e1</span></div>\n \n </body>\n</html>' and all retries exhausted.
../../../../.cache/pypoetry/virtualenvs/l2ss-py-autotest-iYz8Sff2-py3.10/lib/python3.10/site-packages/harmony/harmony.py:1085: ProcessingFailedException
--------------------------------- Captured Log ---------------------------------
INFO root:verify_collection.py:562 Using granule G1257445444-ASDC_DEV2 for test
INFO root:verify_collection.py:575 Sending harmony request https://harmony.uat.earthdata.nasa.gov/C1239396357-ASDC_DEV2/ogc-api-coverages/1.0.0/collections/parameter_vars/coverage/rangeset?forceAsync=true&subset=time%28%222022-10-13T01%3A12%3A23.690000%22%3A%222022-10-13T01%3A37%3A20.270000%22%29&granuleId=G1257445444-ASDC_DEV2&variable=all
INFO root:verify_collection.py:579 Submitted harmony job 81d7b783-f6d0-47df-86a2-6d27a884c15a
Loading