Skip to content

UAT C1239396357-ASDC_DEV2 (MI1B1) #44192

UAT C1239396357-ASDC_DEV2 (MI1B1)

UAT C1239396357-ASDC_DEV2 (MI1B1) #44192

GitHub Actions / Tested with Harmony failed Nov 23, 2024 in 0s

2 fail in 2m 14s

2 tests  ±0   0 ✅ ±0   2m 14s ⏱️ -14s
1 suites ±0   0 💤 ±0 
1 files   ±0   2 ❌ ±0 

Results for commit fd70ee1. ± Comparison against earlier commit 4d6d389.

Annotations

Check warning on line 0 in tests.verify_collection

See this annotation in the file changed.

@github-actions 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

See this annotation in the file changed.

@github-actions 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