Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

UAT C1265136917-OB_CLOUD (PACE_OCI_L2_AOP_NRT) #3306

Open
wants to merge 2 commits into
base: main
Choose a base branch
from

Triggering Autotest Workflow Re-Run

bc38ff1
Select commit
Loading
Failed to load commit list.
Sign in for the full log view
Open

UAT C1265136917-OB_CLOUD (PACE_OCI_L2_AOP_NRT) #3306

Triggering Autotest Workflow Re-Run
bc38ff1
Select commit
Loading
Failed to load commit list.
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