Skip to content

UAT C1265136917-OB_CLOUD (PACE_OCI_L2_AOP_NRT) #41634

UAT C1265136917-OB_CLOUD (PACE_OCI_L2_AOP_NRT)

UAT C1265136917-OB_CLOUD (PACE_OCI_L2_AOP_NRT) #41634

GitHub Actions / Tested with Harmony failed Oct 9, 2024 in 0s

2 fail in 1m 28s

2 tests  ±0   0 ✅ ±0   1m 28s ⏱️ +35s
1 suites ±0   0 💤 ±0 
1 files   ±0   2 ❌ ±0 

Results for commit bc38ff1. ± Comparison against earlier commit 9289ce6.

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[C1265136917-OB_CLOUD] (tests.verify_collection) failed

test-results/test_report.xml [took 1m 22s]
Raw output
harmony.harmony.ProcessingFailedException: WorkItem failed: podaac/l2ss-py:2.12.0rc1: Error in file '/worker/podaac/subsetter/subset.py', line 563, in function 'compute_time_variable_name': Unable to determine time variable
collection_concept_id = 'C1265136917-OB_CLOUD', env = 'uat'
granule_json = {'meta': {'collection-concept-id': 'C1265136917-OB_CLOUD', 'concept-id': 'G1269180442-OB_CLOUD', 'concept-type': 'gran...024-08-19T04:48:54.000Z'}, 'GranuleUR': 'PACE_OCI_L2_AOP_NRT_PACE_OCI.20240818T153633.L2.OC_AOP.V2_0.NRT.nc_2.0', ...}}
collection_variables = [{'associations': {'collections': [{'concept-id': 'C1265136917-OB_CLOUD'}]}, 'meta': {'association-details': {'collect...scription': 'Extracted from _FillValue metadata attribute', 'Type': 'SCIENCE_FILLVALUE', 'Value': -32767}], ...}}, ...]
harmony_env = <Environment.UAT: 3>
tmp_path = PosixPath('/tmp/pytest-of-runner/pytest-0/test_spatial_subset_C1265136910')
bearer_token = 'eyJ0eXAiOiJKV1QiLCJvcmlnaW4iOiJFYXJ0aGRhdGEgTG9naW4iLCJzaWciOiJlZGxqd3RwdWJrZXlfdWF0IiwiYWxnIjoiUlMyNTYifQ.eyJ0eXBlIj...PeyxnprRPaK3gac91Oz-x86P71av1HLvMkczia1k6hb7eKaicWh-y1jQKv1AVd_CK3UJDRISI73k5dYKXshYKn0sByfae8UmlXqWcdSRsgjA81EWtw59Wg'
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)
        east, west, north, south = create_smaller_bounding_box(east, west, north, south, .95)
    
        start_time = granule_json['umm']["TemporalExtent"]["RangeDateTime"]["BeginningDateTime"]
        end_time = granule_json['umm']["TemporalExtent"]["RangeDateTime"]["EndingDateTime"]
    
        # Build harmony request
        harmony_client = harmony.Client(env=harmony_env, token=bearer_token)
        request_bbox = harmony.BBox(w=west, s=south, e=east, n=north)
        request_collection = harmony.Collection(id=collection_concept_id)
        harmony_request = harmony.Request(collection=request_collection, spatial=request_bbox,
                                          granule_id=[granule_json['meta']['concept-id']])
    
        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:417: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <harmony.harmony.Client object at 0x7f1dbdcd11b0>
job_id = '2d721b9a-6f0f-4ccc-a4af-f33a566269ac', 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.0rc1: Error in file '/worker/podaac/subsetter/subset.py', line 563, in function 'compute_time_variable_name': Unable to determine time variable

../../../../.cache/pypoetry/virtualenvs/l2ss-py-autotest-iYz8Sff2-py3.10/lib/python3.10/site-packages/harmony/harmony.py:986: ProcessingFailedException
--------------------------------- Captured Log ---------------------------------
INFO     root:verify_collection.py:396 Using granule G1269180442-OB_CLOUD for test
INFO     root:verify_collection.py:412 Sending harmony request https://harmony.uat.earthdata.nasa.gov/C1265136917-OB_CLOUD/ogc-api-coverages/1.0.0/collections/all/coverage/rangeset?forceAsync=true&subset=lat%28-76.46262125%3A-53.49090875%29&subset=lon%28-58.544141249999996%3A16.941291249999992%29&granuleId=G1269180442-OB_CLOUD
INFO     root:verify_collection.py:416 Submitted harmony job 2d721b9a-6f0f-4ccc-a4af-f33a566269ac

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[C1265136917-OB_CLOUD] (tests.verify_collection) failed

test-results/test_report.xml [took 2s]
Raw output
ValueError: time data '2024-08-18T15:36:33Z' does not match format '%Y-%m-%dT%H:%M:%S.%fZ'
collection_concept_id = 'C1265136917-OB_CLOUD', env = 'uat'
granule_json = {'meta': {'collection-concept-id': 'C1265136917-OB_CLOUD', 'concept-id': 'G1269180442-OB_CLOUD', 'concept-type': 'gran...024-08-19T04:48:54.000Z'}, 'GranuleUR': 'PACE_OCI_L2_AOP_NRT_PACE_OCI.20240818T153633.L2.OC_AOP.V2_0.NRT.nc_2.0', ...}}
collection_variables = [{'associations': {'collections': [{'concept-id': 'C1265136917-OB_CLOUD'}]}, 'meta': {'association-details': {'collect...scription': 'Extracted from _FillValue metadata attribute', 'Type': 'SCIENCE_FILLVALUE', 'Value': -32767}], ...}}, ...]
harmony_env = <Environment.UAT: 3>
tmp_path = PosixPath('/tmp/pytest-of-runner/pytest-0/test_temporal_subset_C126513690')
bearer_token = 'eyJ0eXAiOiJKV1QiLCJvcmlnaW4iOiJFYXJ0aGRhdGEgTG9naW4iLCJzaWciOiJlZGxqd3RwdWJrZXlfdWF0IiwiYWxnIjoiUlMyNTYifQ.eyJ0eXBlIj...PeyxnprRPaK3gac91Oz-x86P71av1HLvMkczia1k6hb7eKaicWh-y1jQKv1AVd_CK3UJDRISI73k5dYKXshYKn0sByfae8UmlXqWcdSRsgjA81EWtw59Wg'
skip_temporal = {'C1238658389-POCLOUD', 'C1238658392-POCLOUD'}

    @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)

verify_collection.py:559: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
verify_collection.py:187: in get_half_temporal_extent
    start_dt = datetime.strptime(start, '%Y-%m-%dT%H:%M:%S.%fZ')
/opt/hostedtoolcache/Python/3.10.15/x64/lib/python3.10/_strptime.py:568: in _strptime_datetime
    tt, fraction, gmtoff_fraction = _strptime(data_string, format)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

data_string = '2024-08-18T15:36:33Z', format = '%Y-%m-%dT%H:%M:%S.%fZ'

    def _strptime(data_string, format="%a %b %d %H:%M:%S %Y"):
        """Return a 2-tuple consisting of a time struct and an int containing
        the number of microseconds based on the input string and the
        format string."""
    
        for index, arg in enumerate([data_string, format]):
            if not isinstance(arg, str):
                msg = "strptime() argument {} must be str, not {}"
                raise TypeError(msg.format(index, type(arg)))
    
        global _TimeRE_cache, _regex_cache
        with _cache_lock:
            locale_time = _TimeRE_cache.locale_time
            if (_getlang() != locale_time.lang or
                time.tzname != locale_time.tzname or
                time.daylight != locale_time.daylight):
                _TimeRE_cache = TimeRE()
                _regex_cache.clear()
                locale_time = _TimeRE_cache.locale_time
            if len(_regex_cache) > _CACHE_MAX_SIZE:
                _regex_cache.clear()
            format_regex = _regex_cache.get(format)
            if not format_regex:
                try:
                    format_regex = _TimeRE_cache.compile(format)
                # KeyError raised when a bad format is found; can be specified as
                # \\, in which case it was a stray % but with a space after it
                except KeyError as err:
                    bad_directive = err.args[0]
                    if bad_directive == "\\":
                        bad_directive = "%"
                    del err
                    raise ValueError("'%s' is a bad directive in format '%s'" %
                                        (bad_directive, format)) from None
                # IndexError only occurs when the format string is "%"
                except IndexError:
                    raise ValueError("stray %% in format '%s'" % format) from None
                _regex_cache[format] = format_regex
        found = format_regex.match(data_string)
        if not found:
>           raise ValueError("time data %r does not match format %r" %
                             (data_string, format))
E           ValueError: time data '2024-08-18T15:36:33Z' does not match format '%Y-%m-%dT%H:%M:%S.%fZ'

/opt/hostedtoolcache/Python/3.10.15/x64/lib/python3.10/_strptime.py:349: ValueError
--------------------------------- Captured Log ---------------------------------
INFO     root:verify_collection.py:555 Using granule G1269180442-OB_CLOUD for test