Skip to content
GitHub Actions / Tested with Harmony failed Jun 21, 2024 in 0s

2 fail in 12m 4s

2 tests  +1   0 ✅ ±0   12m 4s ⏱️ + 9m 55s
1 suites ±0   0 💤 ±0 
1 files   ±0   2 ❌ +1 

Results for commit 31113ee. ± Comparison against earlier commit 0e8c316.

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

test-results/test_report.xml [took 10m 0s]
Raw output
Failed: Timeout >600.0s
collection_concept_id = 'C1215802120-GES_DISC', env = 'uat'
granule_json = {'meta': {'collection-concept-id': 'C1215802120-GES_DISC', 'concept-id': 'G1216110140-GES_DISC', 'concept-type': 'gran...}, 'QAStats': {'QAPercentInterpolatedData': 0.0, 'QAPercentMissingData': 0.0, 'QAPercentOutOfBoundsData': 0.0}}], ...}}
collection_variables = [{'associations': {'collections': [{'concept-id': 'C1215802120-GES_DISC'}]}, 'meta': {'association-details': {'collect... 'Extracted from _FillValue metadata attribute', 'Type': 'SCIENCE_FILLVALUE', 'Value': -999.989990234375}], ...}}, ...]
harmony_env = <Environment.UAT: 3>
tmp_path = PosixPath('/tmp/pytest-of-runner/pytest-0/test_spatial_subset_C1215802120')
bearer_token = 'eyJ0eXAiOiJKV1QiLCJvcmlnaW4iOiJFYXJ0aGRhdGEgTG9naW4iLCJzaWciOiJlZGxqd3RwdWJrZXlfdWF0IiwiYWxnIjoiUlMyNTYifQ.eyJ0eXBlIj...OKzBv8m-ip7LOVDcr4m1sSkBhX2fxIHDTZN8PCoFfkbXg1EJIMMK_T_n9U_lnCAufgR5X8MuM9rNcSfQ2A1ftJLFfsWn60h7EQLQeqpea9qV1ovWdqOt5g'

    @pytest.mark.timeout(600)
    def test_spatial_subset(collection_concept_id, env, granule_json, collection_variables,
                            harmony_env, tmp_path: pathlib.Path, bearer_token):
        test_spatial_subset.__doc__ = f"Verify spatial subset for {collection_concept_id} in {env}"
    
        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)

tests/verify_collection.py:387: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <harmony.harmony.Client object at 0x7f26025cbe20>
job_id = '6e78169d-a737-4eab-a7f6-3d026a52bd34', 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)
                    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)
E                           Failed: Timeout >600.0s

../../../.cache/pypoetry/virtualenvs/l2ss-py-autotest-iYz8Sff2-py3.10/lib/python3.10/site-packages/harmony/harmony.py:1009: Failed
--------------------------------- Captured Log ---------------------------------
INFO     root:verify_collection.py:366 Using granule G1216110140-GES_DISC for test
INFO     root:verify_collection.py:382 Sending harmony request https://harmony.uat.earthdata.nasa.gov/C1215802120-GES_DISC/ogc-api-coverages/1.0.0/collections/all/coverage/rangeset?forceAsync=true&subset=lat%28-85.5%3A85.5%29&subset=lon%28-171.0%3A171.0%29&granuleId=G1216110140-GES_DISC
INFO     root:verify_collection.py:386 Submitted harmony job 6e78169d-a737-4eab-a7f6-3d026a52bd34

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

test-results/test_report.xml [took 2m 2s]
Raw output
harmony.harmony.ProcessingFailedException: WorkItem failed: podaac/l2ss-py:2.10.0rc8: Unable to download due to status code: 404 and content         b'<?xml version="1.0" encoding="UTF-8"?>\r\n<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"\r\n    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">\r\n \r\n<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"><!-- InstanceBegin template="/Templates/disc_L2_RCW.dwt" codeOutsideHTMLIsLocked="false" -->\r\n<head>\r\n<!-- InstanceParam name="Alert Message" type="boolean" value="false" -->\r\n<!-- InstanceBeginEditable name="doctitle" -->\r\n<title>GES DISC: MISSING PAGE</title>\r\n<!--Meta Data starts-->\r\n<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />\r\n<meta name="Description" content="" />\r\n<meta name="Keywords" content="" />\r\n<!--Meta Data ends-->\r\n<!-- InstanceEndEditable -->\r\n\r\n<script src="/common/js/common.js" type="text/javascript"> </script>\r\n<link type="text/css" rel="stylesheet" href="/common/css/common.css" />  <!--This stylesheet contains classes for the template areas that are not for general use -->\r\n<link type="text/css" rel="stylesheet" href="/common/css/content.css" /> <!--This stylesheet contains classes available to Contribute users for the page content area -->\r\n\r\n<script type="text/javascript">\r\n\t// Load appropriate Style sheet based on browser\r\n\tdocument.write(browserDetect()); \r\n</script>\t\r\n\r\n</head>\r\n<body onload="menuOpen()">\r\n<script type="text/javascript" src="/common/js/menus.js"> </script>\r\n<noscript>&#160;</noscript>\r\n<!-- InstanceBeginEditable name="Active Nav" -->\r\n<script language="JavaScript1.1"  type="text/javascript">\r\n// Set the following javaScript variable to the current Left Navigation item\r\n\tcurrLeftNav = "";\r\n</script>\r\n<!-- InstanceEndEditable -->\r\n\r\n<noscript>\r\n\t<div style="text-align:center;"><span style="font-size:14px; background-color:#efefef; text-align:center; ">This site offers enhanced navigation with <a style="font-weight:bold; text-decoration:underline" target="_blank" href="http://www.nasa.gov/home/How_to_enable_Javascript.html">JavaScript enabled in your browser.</a></span></div>\r\n</noscript>\r\n\r\n<table align="center" bgcolor="#ffffff" width="750" border="0" cellspacing="0" cellpadding="0">\r\n\t<tr>\r\n\t\t<td bgcolor="#000000" colspan="5" height="10" width="750"><img border="0" alt="" height="10" width="1" src="/images/gui/spacer.gif" /></td>\r\n\t</tr>\r\n\t<tr>\r\n\t\t<td colspan="5" height="10" width="750"><img border="0" alt="" height="10" width="1" src="/images/gui/spacer.gif" /></td>\r\n\t</tr>\r\n\t<tr>\r\n\t\t<td rowspan="4" width="10"><img border="0" alt="" height="1" width="10" src="/images/gui/spacer.gif" /></td>\r\n\t\t<td colspan="3" width="730">\r\n        <div>\n<div id="nasahead">\n\t<a href="http://www.nasa.gov" target="_blank"><img id="nasa_logo" src="/images/gui/nasa_logo_2.gif" alt="NASA Logo, National Aeronautics and Space Administration" width="240" height="65" /></a>\n\t<a href="http://disc.sci.gsfc.nasa.gov"><img id="gesdisc_logo" ...
collection_concept_id = 'C1215802120-GES_DISC', env = 'uat'
granule_json = {'meta': {'collection-concept-id': 'C1215802120-GES_DISC', 'concept-id': 'G1216110140-GES_DISC', 'concept-type': 'gran...}, 'QAStats': {'QAPercentInterpolatedData': 0.0, 'QAPercentMissingData': 0.0, 'QAPercentOutOfBoundsData': 0.0}}], ...}}
collection_variables = [{'associations': {'collections': [{'concept-id': 'C1215802120-GES_DISC'}]}, 'meta': {'association-details': {'collect... 'Extracted from _FillValue metadata attribute', 'Type': 'SCIENCE_FILLVALUE', 'Value': -999.989990234375}], ...}}, ...]
harmony_env = <Environment.UAT: 3>
tmp_path = PosixPath('/tmp/pytest-of-runner/pytest-0/test_temporal_subset_C121580210')
bearer_token = 'eyJ0eXAiOiJKV1QiLCJvcmlnaW4iOiJFYXJ0aGRhdGEgTG9naW4iLCJzaWciOiJlZGxqd3RwdWJrZXlfdWF0IiwiYWxnIjoiUlMyNTYifQ.eyJ0eXBlIj...OKzBv8m-ip7LOVDcr4m1sSkBhX2fxIHDTZN8PCoFfkbXg1EJIMMK_T_n9U_lnCAufgR5X8MuM9rNcSfQ2A1ftJLFfsWn60h7EQLQeqpea9qV1ovWdqOt5g'

    @pytest.mark.timeout(600)
    def test_temporal_subset(collection_concept_id, env, granule_json, collection_variables,
                            harmony_env, tmp_path: pathlib.Path, bearer_token):
        test_spatial_subset.__doc__ = f"Verify spatial subset for {collection_concept_id} in {env}"
    
        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)

tests/verify_collection.py:530: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <harmony.harmony.Client object at 0x7f2601c14760>
job_id = 'ef0c4a53-0b78-4353-9c22-e5738933de8d', 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.10.0rc8: Unable to download due to status code: 404 and content         b'<?xml version="1.0" encoding="UTF-8"?>\r\n<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"\r\n    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">\r\n \r\n<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"><!-- InstanceBegin template="/Templates/disc_L2_RCW.dwt" codeOutsideHTMLIsLocked="false" -->\r\n<head>\r\n<!-- InstanceParam name="Alert Message" type="boolean" value="false" -->\r\n<!-- InstanceBeginEditable name="doctitle" -->\r\n<title>GES DISC: MISSING PAGE</title>\r\n<!--Meta Data starts-->\r\n<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />\r\n<meta name="Description" content="" />\r\n<meta name="Keywords" content="" />\r\n<!--Meta Data ends-->\r\n<!-- InstanceEndEditable -->\r\n\r\n<script src="/common/js/common.js" type="text/javascript"> </script>\r\n<link type="text/css" rel="stylesheet" href="/common/css/common.css" />  <!--This stylesheet contains classes for the template areas that are not for general use -->\r\n<link type="text/css" rel="stylesheet" href="/common/css/content.css" /> <!--This stylesheet contains classes available to Contribute users for the page content area -->\r\n\r\n<script type="text/javascript">\r\n\t// Load appropriate Style sheet based on browser\r\n\tdocument.write(browserDetect()); \r\n</script>\t\r\n\r\n</head>\r\n<body onload="menuOpen()">\r\n<script type="text/javascript" src="/common/js/menus.js"> </script>\r\n<noscript>&#160;</noscript>\r\n<!-- InstanceBeginEditable name="Active Nav" -->\r\n<script language="JavaScript1.1"  type="text/javascript">\r\n// Set the following javaScript variable to the current Left Navigation item\r\n\tcurrLeftNav = "";\r\n</script>\r\n<!-- InstanceEndEditable -->\r\n\r\n<noscript>\r\n\t<div style="text-align:center;"><span style="font-size:14px; background-color:#efefef; text-align:center; ">This site offers enhanced navigation with <a style="font-weight:bold; text-decoration:underline" target="_blank" href="http://www.nasa.gov/home/How_to_enable_Javascript.html">JavaScript enabled in your browser.</a></span></div>\r\n</noscript>\r\n\r\n<table align="center" bgcolor="#ffffff" width="750" border="0" cellspacing="0" cellpadding="0">\r\n\t<tr>\r\n\t\t<td bgcolor="#000000" colspan="5" height="10" width="750"><img border="0" alt="" height="10" width="1" src="/images/gui/spacer.gif" /></td>\r\n\t</tr>\r\n\t<tr>\r\n\t\t<td colspan="5" height="10" width="750"><img border="0" alt="" height="10" width="1" src="/images/gui/spacer.gif" /></td>\r\n\t</tr>\r\n\t<tr>\r\n\t\t<td rowspan="4" width="10"><img border="0" alt="" height="1" width="10" src="/images/gui/spacer.gif" /></td>\r\n\t\t<td colspan="3" width="730">\r\n        <div>\n<div id="nasahead">\n\t<a href="http://www.nasa.gov" target="_blank"><img id="nasa_logo" src="/images/gui/nasa_logo_2.gif" alt="NASA Logo, National Aeronautics and Space Administration" width="240" height="65" /></a>\n\t<a href="http://disc.sci.gsfc.nasa.gov"><img id="gesdisc_logo" ...

../../../.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:512 Using granule G1216110140-GES_DISC for test
INFO     root:verify_collection.py:525 Sending harmony request https://harmony.uat.earthdata.nasa.gov/C1215802120-GES_DISC/ogc-api-coverages/1.0.0/collections/all/coverage/rangeset?forceAsync=true&subset=time%28%222005-01-01T05%3A59%3A59.999750%22%3A%222005-01-01T17%3A59%3A59.999250%22%29&granuleId=G1216110140-GES_DISC
INFO     root:verify_collection.py:529 Submitted harmony job ef0c4a53-0b78-4353-9c22-e5738933de8d