Skip to content

UAT C1256946216-ASDC_DEV2 (CLARREO_SIMTEST_L1A) #1343

UAT C1256946216-ASDC_DEV2 (CLARREO_SIMTEST_L1A)

UAT C1256946216-ASDC_DEV2 (CLARREO_SIMTEST_L1A) #1343

GitHub Actions / Tested with Harmony failed Feb 23, 2025 in 0s

1 fail in 1m 1s

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

Results for commit eaa1d5d. ± Comparison against earlier commit f742278.

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_concatenate[C1256946216-ASDC_DEV2] (tests.verify_collection) failed

test-results/test_report.xml [took 59s]
Raw output
harmony.harmony.ProcessingFailedException: WorkItem failed: podaac/concise:0.10.0rc11: Service failed due to running out of memory
collection_concept_id = 'C1256946216-ASDC_DEV2'
harmony_env = <Environment.UAT: 3>
bearer_token = 'eyJ0eXAiOiJKV1QiLCJvcmlnaW4iOiJFYXJ0aGRhdGEgTG9naW4iLCJzaWciOiJlZGxqd3RwdWJrZXlfdWF0IiwiYWxnIjoiUlMyNTYifQ.eyJ0eXBlIj...kbeJjaBKhl-gvXjLxBPtaCk2P7777DonclMKd413HI-jyiaz5c37cMfsCgU10L977PjAOk1emdrpg1kIeREr7E-CI7jPFq8qqe53WwNZbDHefYeqcFgGFQ'

    @pytest.mark.timeout(600)
    def test_concatenate(collection_concept_id, harmony_env, bearer_token):
    
        max_results = 2
        harmony_client = harmony.Client(env=harmony_env, token=bearer_token)
        collection = harmony.Collection(id=collection_concept_id)
        latest_granule_ids = get_latest_granules(collection_concept_id, max_results, harmony_env, bearer_token)
    
        if latest_granule_ids is None:
            if harmony_env == harmony.config.Environment.UAT:
                pytest.skip(f"No granules found for UAT collection {collection_concept_id}")
            raise Exception('Bad Request', 'Error: No matching granules found.')
    
        request = harmony.Request(
            collection=collection,
            concatenate=True,
            max_results=max_results,
            granule_id=latest_granule_ids,
            skip_preview=True,
            format="application/x-netcdf4",
        )
    
        request.is_valid()
    
        logging.info("Sending harmony request %s", harmony_client.request_as_url(request))
    
        try:
            job1_id = harmony_client.submit(request)
        except Exception as ex:
            if str(ex) == "('Bad Request', 'Error: No matching granules found.')":
                if harmony_env == harmony.config.Environment.UAT:
                    pytest.skip(f"No granules found for UAT collection {collection_concept_id}")
            raise ex
    
        logging.info(f'\n{job1_id}')
    
        logging.info(harmony_client.status(job1_id))
    
        logging.info('\nWaiting for the job to finish')
    
        results = harmony_client.result_json(job1_id)
    
        logging.info('\nDownloading results:')
    
        futures = harmony_client.download_all(job1_id)
>       file_names = [f.result() for f in futures]

verify_collection.py:259: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
verify_collection.py:259: in <listcomp>
    file_names = [f.result() for f in futures]
../../../../.cache/pypoetry/virtualenvs/concise-autotest-tfGktGnJ-py3.10/lib/python3.10/site-packages/harmony/harmony.py:1387: in download_all
    for url in self.result_urls(job_id_or_result_json, show_progress=False) or []:
../../../../.cache/pypoetry/virtualenvs/concise-autotest-tfGktGnJ-py3.10/lib/python3.10/site-packages/harmony/harmony.py:1231: in result_urls
    for page in self._result_pages(job_id, show_progress, link_type):
../../../../.cache/pypoetry/virtualenvs/concise-autotest-tfGktGnJ-py3.10/lib/python3.10/site-packages/harmony/harmony.py:1206: in _result_pages
    self.wait_for_processing(job_id, show_progress)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <harmony.harmony.Client object at 0x7fc245bc3370>
job_id = '13e2e5cd-a932-4d5b-a675-80efb11d15b7', show_progress = False

    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)
                    if status == 'canceled':
                        print('Job has been canceled.')
                        break
                    if status == 'paused':
                        print('\nJob has been paused. Call `resume()` to resume.', file=sys.stderr)
                        break
                    if (not running_w_errors_logged and status == 'running_with_errors'):
                        print('\nJob is running with errors.', file=sys.stderr)
                        running_w_errors_logged = True
    
                    # This gets around an issue with progressbar. If we update() with 0, the
                    # output shows up as "N/A". If we update with, e.g. 0.1, it rounds down or
                    # truncates to 0 but, importantly, actually displays that.
                    if progress == 0:
                        progress = 0.1
    
                    for _ in range(intervals):
                        bar.update(progress)  # causes spinner to rotate even when no data change
                        sys.stdout.flush()  # ensures correct behavior in Jupyter notebooks
                        if progress >= 100:
                            break
                        else:
                            time.sleep(ui_update_interval)
        else:
            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/concise:0.10.0rc11: Service failed due to running out of memory

../../../../.cache/pypoetry/virtualenvs/concise-autotest-tfGktGnJ-py3.10/lib/python3.10/site-packages/harmony/harmony.py:1146: ProcessingFailedException
--------------------------------- Captured Log ---------------------------------
INFO     root:verify_collection.py:238 Sending harmony request https://harmony.uat.earthdata.nasa.gov/C1256946216-ASDC_DEV2/ogc-api-coverages/1.0.0/collections/parameter_vars/coverage/rangeset?forceAsync=true&granuleId=G1262213008-ASDC_DEV2&granuleId=G1262213002-ASDC_DEV2&format=application%2Fx-netcdf4&maxResults=2&concatenate=true&skipPreview=true&variable=all
INFO     root:verify_collection.py:248 
13e2e5cd-a932-4d5b-a675-80efb11d15b7
INFO     root:verify_collection.py:250 {'status': 'running', 'message': 'The job is being processed', 'progress': 9, 'created_at': datetime.datetime(2025, 2, 23, 8, 16, 42, 457000, tzinfo=tzlocal()), 'updated_at': datetime.datetime(2025, 2, 23, 8, 16, 43, 266000, tzinfo=tzlocal()), 'created_at_local': '2025-02-23T08:16:42+00:00', 'updated_at_local': '2025-02-23T08:16:43+00:00', 'request': 'https://harmony.uat.earthdata.nasa.gov/C1256946216-ASDC_DEV2/ogc-api-coverages/1.0.0/collections/parameter_vars/coverage/rangeset?forceAsync=true&granuleId=G1262213008-ASDC_DEV2%2CG1262213002-ASDC_DEV2&format=application%2Fx-netcdf4&maxResults=2&concatenate=true&skipPreview=true&variable=all', 'num_input_granules': 2, 'data_expiration': datetime.datetime(2025, 3, 25, 8, 16, 42, 457000, tzinfo=tzlocal()), 'data_expiration_local': '2025-03-25T08:16:42+00:00'}
INFO     root:verify_collection.py:252 
Waiting for the job to finish
INFO     root:verify_collection.py:256 
Downloading results: