[Git][debian-gis-team/asf-search][master] 4 commits: New upstream version 12.0.7
Antonio Valentino (@antonio.valentino)
gitlab at salsa.debian.org
Tue Apr 14 07:01:14 BST 2026
Antonio Valentino pushed to branch master at Debian GIS Project / asf-search
Commits:
5d64dd8e by Antonio Valentino at 2026-04-14T05:54:02+00:00
New upstream version 12.0.7
- - - - -
ca8039a8 by Antonio Valentino at 2026-04-14T05:54:05+00:00
Update upstream source from tag 'upstream/12.0.7'
Update to upstream version '12.0.7'
with Debian dir f8cca2b937e0a1a49dfa5134df3be1f8c2b0da5c
- - - - -
f08a9153 by Antonio Valentino at 2026-04-14T05:54:40+00:00
New upstream release
- - - - -
51cb2698 by Antonio Valentino at 2026-04-14T05:55:20+00:00
Set distribution to unstable
- - - - -
10 changed files:
- CHANGELOG.md
- asf_search/CMR/translate.py
- asf_search/search/search.py
- asf_search/search/search_count.py
- asf_search/search/search_generator.py
- debian/changelog
- tests/Search/test_search.py
- tests/pytest-config.yml
- tests/pytest-managers.py
- tests/yml_tests/test_search.yml
Changes:
=====================================
CHANGELOG.md
=====================================
@@ -25,6 +25,12 @@ and uses [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
-
-->
+------
+## [v12.0.7](https://github.com/asfadmin/Discovery-asf_search/compare/v12.0.6...v12.0.7)
+### Added
+- `granule_list` supports wildcard ("*" and "?") searches
+ - For more information: https://cmr.earthdata.nasa.gov/search/site/docs/search/api.html#parameter-options
+
------
## [v12.0.6](https://github.com/asfadmin/Discovery-asf_search/compare/v12.0.5...v12.0.6)
### Added
=====================================
asf_search/CMR/translate.py
=====================================
@@ -17,6 +17,8 @@ except ImportError:
from dateutil.parser import parse as parse_datetime
nisar_collections_set = set(collections_per_platform['NISAR'])
+
+
def translate_opts(opts: ASFSearchOptions) -> List:
# Need to add params which ASFSearchOptions cant support (like temporal),
# so use a dict to avoid the validate_params logic:
@@ -24,7 +26,9 @@ def translate_opts(opts: ASFSearchOptions) -> List:
should_use_track = not set(dict_opts.get('collections', [])).isdisjoint(nisar_collections_set)
- if dict_opts.get('processingLevel') is not None: # Certain products are now using PRODUCT_TYPE instead of PROCESSING_LEVEL
+ if (
+ dict_opts.get('processingLevel') is not None
+ ): # Certain products are now using PRODUCT_TYPE instead of PROCESSING_LEVEL
processingType = dict_opts.get('processingLevel', [])[0]
if processingType in NISAR_PRODUCT_TYPES:
should_use_track = True
@@ -85,18 +89,21 @@ def translate_opts(opts: ASFSearchOptions) -> List:
# user provided umm fields
custom_cmr_keywords = dict_opts.pop('cmr_keywords', [])
+ granule_list_with_wildcard = False
for key, val in dict_opts.items():
# If it's "session" or something else CMR doesn't accept, don't send it:
if key not in field_map:
if key == 'productType':
custom_cmr_keywords.append(('attribute[]', f'string,PRODUCT_TYPE,{val}'))
-
+
continue
if isinstance(val, list):
for x in val:
if key in ['granule_list', 'product_list']:
for y in x.split(','):
cmr_opts.append((key, y))
+ if key == 'granule_list' and ('*' in y or '?' in y):
+ granule_list_with_wildcard = True
else:
if isinstance(x, tuple):
cmr_opts.append((key, ','.join([str(t) for t in x])))
@@ -110,10 +117,10 @@ def translate_opts(opts: ASFSearchOptions) -> List:
if should_use_asf_frame(cmr_opts):
cmr_opts = use_asf_frame(cmr_opts)
-
+
if should_use_track:
cmr_opts = use_track_number(cmr_opts)
-
+
cmr_opts.extend(custom_cmr_keywords)
additional_keys = [
@@ -125,6 +132,9 @@ def translate_opts(opts: ASFSearchOptions) -> List:
('provider', opts.provider),
]
+ if granule_list_with_wildcard:
+ additional_keys.append(('options[readable_granule_name][pattern]', 'true'))
+
cmr_opts.extend(additional_keys)
return cmr_opts
@@ -140,7 +150,15 @@ def fix_cmr_shapes(fixed_params: Dict[str, Any]) -> Dict[str, Any]:
def should_use_asf_frame(cmr_opts):
- asf_frame_platforms = ['SENTINEL-1A', 'SENTINEL-1B', 'SENTINEL-1C', 'ALOS', 'ALOS-2', 'NISAR', 'SEASAT 1']
+ asf_frame_platforms = [
+ 'SENTINEL-1A',
+ 'SENTINEL-1B',
+ 'SENTINEL-1C',
+ 'ALOS',
+ 'ALOS-2',
+ 'NISAR',
+ 'SEASAT 1',
+ ]
asf_frame_collections = get_concept_id_alias(asf_frame_platforms, collections_per_platform)
@@ -178,6 +196,7 @@ def use_asf_frame(cmr_opts):
return cmr_opts
+
def use_track_number(cmr_opts):
"""
NISAR: always use track number instead of path number
@@ -191,12 +210,15 @@ def use_track_number(cmr_opts):
if m is None:
continue
- logging.debug('NISAR subquery with relativeOrbit, using TRACK_NUMBER instead of PATH_NUMBER')
+ logging.debug(
+ 'NISAR subquery with relativeOrbit, using TRACK_NUMBER instead of PATH_NUMBER'
+ )
cmr_opts[n] = (p[0], p[1].replace(',PATH_NUMBER,', ',TRACK_NUMBER,'))
return cmr_opts
+
# some products don't have integer values in BYTES fields, round to nearest int
def try_round_float(value: str) -> Optional[int]:
if value is None:
@@ -219,13 +241,15 @@ def try_parse_float(value: str) -> Optional[float]:
return float(value)
+
def try_parse_bool(val: str) -> Optional[bool]:
"""Boolean values are stored as strings in umm json"""
if val is None:
return None
-
+
return val.lower() == 'true'
+
def try_parse_frame_coverage(val: str) -> Optional[str]:
"""Frame Coverage is stored as a string boolean in FULL_FRAME, convert it to Partial/Full"""
if val is not None:
@@ -233,9 +257,10 @@ def try_parse_frame_coverage(val: str) -> Optional[str]:
val = 'Full'
else:
val = 'Partial'
-
+
return val
+
def try_parse_date(value: str) -> Optional[str]:
if value is None:
return None
=====================================
asf_search/search/search.py
=====================================
@@ -57,7 +57,7 @@ def search(
sideBandPolarization: Union[str, Sequence[str]] = None,
rangeBandwidth: Union[str, Sequence[str]] = None,
jointObservation: bool = None,
- productionConfiguration: Union[Literal["PR", "UR"], Sequence[Literal["PR", "UR"]]] = None,
+ productionConfiguration: Union[Literal['PR', 'UR'], Sequence[Literal['PR', 'UR']]] = None,
dataset: Union[str, Sequence[str]] = None,
collections: Union[str, Sequence[str]] = None,
shortName: Union[str, Sequence[str]] = None,
@@ -118,6 +118,7 @@ def search(
granule_list:
List of specific granules.
Search results may include several products per granule name.
+ Supports wildcard queries (*/?)
groupID:
Identifier used to find products considered to
be of the same scene but having different granule names
@@ -191,7 +192,6 @@ def search(
results.searchOptions = page.searchOptions
perf = time.time()
-
if not results.searchComplete:
msg = (
'Results may be incomplete due to a search error. '
@@ -199,7 +199,6 @@ def search(
)
ASF_LOGGER.error(msg)
-
try:
results.sort(key=lambda p: p.get_sort_keys(), reverse=True)
=====================================
asf_search/search/search_count.py
=====================================
@@ -51,11 +51,11 @@ def search_count(
fullBurstID: Union[str, Sequence[str]] = None,
temporalBaselineDays: Union[str, Sequence[str]] = None,
operaBurstID: Union[str, Sequence[str]] = None,
- frameCoverage: Literal["FULL", "PARTIAL"] = None,
+ frameCoverage: Literal['FULL', 'PARTIAL'] = None,
mainBandPolarization: Union[str, Sequence[str]] = None,
sideBandPolarization: Union[str, Sequence[str]] = None,
rangeBandwidth: Union[str, Sequence[str]] = None,
- productionConfiguration: Union[Literal["PR", "UR"], Sequence[Literal["PR", "UR"]]] = None,
+ productionConfiguration: Union[Literal['PR', 'UR'], Sequence[Literal['PR', 'UR']]] = None,
jointObservation: bool = None,
dataset: Union[str, Sequence[str]] = None,
collections: Union[str, Sequence[str]] = None,
=====================================
asf_search/search/search_generator.py
=====================================
@@ -77,12 +77,12 @@ def search_generator(
fullBurstID: Union[str, Sequence[str]] = None,
temporalBaselineDays: Union[str, Sequence[str]] = None,
operaBurstID: Union[str, Sequence[str]] = None,
- frameCoverage: Literal["FULL", "PARTIAL"] = None,
+ frameCoverage: Literal['FULL', 'PARTIAL'] = None,
mainBandPolarization: Union[str, Sequence[str]] = None,
sideBandPolarization: Union[str, Sequence[str]] = None,
rangeBandwidth: Union[str, Sequence[str]] = None,
jointObservation: bool = None,
- productionConfiguration: Union[Literal["PR", "UR"], Sequence[Literal["PR", "UR"]]] = None,
+ productionConfiguration: Union[Literal['PR', 'UR'], Sequence[Literal['PR', 'UR']]] = None,
dataset: Union[str, Sequence[str]] = None,
collections: Union[str, Sequence[str]] = None,
shortName: Union[str, Sequence[str]] = None,
@@ -142,6 +142,7 @@ def search_generator(
granule_list:
List of specific granules.
Search results may include several products per granule name.
+ Supports wildcard queries (*/?)
groupID:
Identifier used to find products considered to
be of the same scene but having different granule names
@@ -215,7 +216,11 @@ def search_generator(
if maxResults is not None and (
getattr(opts, 'granule_list', False) or getattr(opts, 'product_list', False)
):
- raise ValueError('Cannot use maxResults along with product_list/granule_list.')
+ names = [] if opts.granule_list is None else opts.granule_list
+ if not any('*' in name or '?' in name for name in names):
+ raise ValueError(
+ 'Cannot use maxResults with product_list or non-wildcard granule_list.'
+ )
ASF_LOGGER.debug(f'SEARCH: preprocessing opts: {opts}')
preprocess_opts(opts)
@@ -258,13 +263,18 @@ def search_generator(
f'SUBQUERY {subquery_idx + 1}: Page {page_number} fetched, returned {len(items)} items.'
)
- if len(items) != INTERNAL.CMR_PAGE_SIZE and len(items) + subquery_count < subquery_max_results:
- message = 'CMR returned page of incomplete results.' \
- f'Expected {min(INTERNAL.CMR_PAGE_SIZE, subquery_max_results - subquery_count)} results,' \
- f'got {len(items)}'
+ if (
+ len(items) != INTERNAL.CMR_PAGE_SIZE
+ and len(items) + subquery_count < subquery_max_results
+ ):
+ message = (
+ 'CMR returned page of incomplete results.'
+ f'Expected {min(INTERNAL.CMR_PAGE_SIZE, subquery_max_results - subquery_count)} results,'
+ f'got {len(items)}'
+ )
ASF_LOGGER.warning(message)
report_search_error(query, message)
-
+
opts.session.headers.update({'CMR-Search-After': cmr_search_after_header})
perf = time.time()
last_page = process_page(
@@ -409,7 +419,7 @@ def set_default_dates(opts: ASFSearchOptions):
)
opts.start, opts.end = opts.end, opts.start
# Can't do this sooner, since you need to compare start vs end:
- #TODO python 3.13 deprecation warning, ambiguous date when month specified but not year
+ # TODO python 3.13 deprecation warning, ambiguous date when month specified but not year
if opts.start is not None:
opts.start = opts.start.strftime('%Y-%m-%dT%H:%M:%SZ')
if opts.end is not None:
@@ -456,12 +466,11 @@ def set_platform_alias(opts: ASFSearchOptions):
_dataset_collection_items = dataset_collections.items()
+
def set_science_product_alias(opts: ASFSearchOptions):
"""Alias certain product types (primarily NISAR L0B)"""
if opts.processingLevel is not None:
- processingLevelAliases = {
- 'L0B': ['RRSD']
- }
+ processingLevelAliases = {'L0B': ['RRSD']}
processing_levels = []
for processing_level in opts.processingLevel:
=====================================
debian/changelog
=====================================
@@ -1,9 +1,12 @@
-asf-search (12.0.6-2) UNRELEASED; urgency=medium
+asf-search (12.0.7-1) unstable; urgency=medium
- * Team upload.
+ [ Bas Couwenberg ]
* Bump Standards-Version to 4.7.4, no changes.
- -- Bas Couwenberg <sebastic at debian.org> Sat, 04 Apr 2026 10:09:12 +0200
+ [ Antonio Valentino ]
+ * New upstream release.
+
+ -- Antonio Valentino <antonio.valentino at tiscali.it> Tue, 14 Apr 2026 05:55:01 +0000
asf-search (12.0.6-1) unstable; urgency=medium
=====================================
tests/Search/test_search.py
=====================================
@@ -5,6 +5,7 @@ from asf_search import ASFSession
from tenacity import retry, retry_if_exception_type, stop_after_attempt
from asf_search import ASF_LOGGER
+from asf_search.ASFSearchOptions.validator_map import validator_map
from asf_search.CMR.subquery import build_subqueries
from asf_search.CMR.translate import try_parse_date
from asf_search.constants import INTERNAL
@@ -158,9 +159,9 @@ def run_test_build_subqueries(params: ASFSearchOptions, expected: List):
actual_set = set(actual_val)
difference = expected_set.symmetric_difference(actual_set)
- assert (
- len(difference) == 0
- ), f'Found {len(difference)} missing entries for subquery generated keyword: "{key}"\n{list(difference)}'
+ assert len(difference) == 0, (
+ f'Found {len(difference)} missing entries for subquery generated keyword: "{key}"\n{list(difference)}'
+ )
else:
assert actual_val == expected_val
@@ -180,9 +181,54 @@ def run_test_keyword_aliasing_results(params: ASFSearchOptions):
for product in module_response:
sceneName = product.properties['sceneName']
- assert api_dict.get(
- sceneName, False
- ), f'Found unexpected scene in asf-search module results, {sceneName}\{dict(params)}'
+ assert api_dict.get(sceneName, False), (
+ f'Found unexpected scene in asf-search module results, {sceneName}\{dict(params)}'
+ )
+
+
+def _convert_nested_lists_to_ranges(param_value):
+ return [
+ (param_value[0], param_value[1]) if isinstance(param_value, list) else param_value
+ for param_value in param_value
+ ]
+ pass
+
+
+def run_test_granule_search_patterns(params: dict, output: dict):
+ for param_key, param_value in params.items():
+ validator_method = validator_map.get(param_key)
+ # Convert any nested lists into ranges since yaml doesn't support ()
+ if callable(validator_method) and validator_method.__name__.endswith('_range_list'):
+ if isinstance(param_value, list):
+ params[param_key] = _convert_nested_lists_to_ranges(param_value)
+
+ opts = ASFSearchOptions(**params)
+ response = search(opts=opts)
+ if not output['expect_results']:
+ assert len(response) == 0
+ else:
+ expected_properties: dict = output['expected_properties']
+ for property, value in expected_properties.items():
+ if isinstance(value, list):
+ expanded_list = []
+ for val in value:
+ if isinstance(val, list):
+ expanded_list.extend([*range(val[0], val[1] + 1)])
+ else:
+ expanded_list.append(val)
+ expected_properties[property] = expanded_list
+
+ for result in response:
+ for property, expected_values in expected_properties.items():
+ if isinstance(expected_values, list):
+ if isinstance(result.properties[property], list):
+ assert any(
+ value in expected_values for value in result.properties[property]
+ )
+ else:
+ assert result.properties[property] in expected_values
+ else:
+ assert result.properties[property] == expected_values
@retry(
=====================================
tests/pytest-config.yml
=====================================
@@ -1,223 +1,228 @@
# Contents of pytest-config.yml
test_types:
-
-- For running ASFProduct tests:
- required_keys: products
- method: test_ASFProduct
-
-- For running ASFProduct Subproduct tests:
- required_in_title: ASFSubproduct
- required_keys: ['scenes', 'expected_subclass']
- method: test_ASFSubproduct
-
-- For running ASFProduct_Stack tests:
- required_keys: ["product", "preprocessed_stack", "processed_stack"]
- required_in_title: ASFProduct_Stack
- method: test_ASFProduct_Stack
-
-- For running ASFProduct_get_stack_options tests:
- required_keys: ["product", "options"]
- required_in_title: ASFProduct-get-stack-options
- method: test_ASFProduct_get_stack_options
-
-- For running ASFProduct_download_file tests:
- required_keys: ["product", "filename", "filetype", "additionalUrls"]
- required_in_title: ASFProduct-download-file
- method: test_ASFProduct_download
-
-- For running ASFSession tests:
- required_in_title: password-login
- required_keys: ['username', 'password']
- method: test_ASFSession_Error
-
-- For running ASFSession token_auth tests:
- required_in_title: token-auth
- required_keys: token
- method: test_ASFSession_Token_Error
-
-- For running ASFSession cookiejar_auth tests:
- required_in_title: cookiejar-auth
- required_keys: cookies
- method: test_ASFSession_Cookie_Error
-
-- For running ASFSession rebuild_auth tests:
- required_in_title: rebuild_auth
- required_keys: ['original_domain', 'response_domain', 'response_code', 'final_token']
- method: test_asf_session_rebuild_auth
-
-- For running preprocessed baseline stack params tests:
- required_keys: product
- required_in_title: test-preprocessed-product
- method: test_get_preprocessed_stack_params
-
-- For running unprocessed baseline stack params tests:
- required_keys: product
- required_in_title: test-unprocessed-product
- method: test_get_unprocessed_stack_params
-
-- For running Invalid Stack ID stack params tests:
- required_keys: product
- required_in_title: test-invalid-insarStackID
- method: test_get_stack_opts_invalid_insarStackId
-
-- For running Invalid Platform stack params tests:
- required_keys: ["product", "stack"]
- required_in_title: test-temporal-baseline
- method: test_temporal_baseline
-
-- For running Invalid Platform stack params tests:
- required_keys: ["product", "stack"]
- required_in_title: test-product-stack
- method: test_stack_from_product
-
-- For running stack_from_id tests:
- required_keys: ["stack_id", "stack", "stack_reference"]
- required_in_title: test-stack-id
- method: test_stack_from_id
-
-- For running stack from ASFSearch tests:
- required_keys: response
- required_in_title: test-ASFSearch
- method: test_ASFSearchResults
-
-- For ASFSearch search with parameters tests:
- required_keys: ["parameters", "answer"]
- required_in_title: test-ASFSearch-search-valid
- method: test_ASFSearch_Search
-
-- For ASFSearch search_generator with parameters tests:
- required_keys: parameters
- required_in_title: test-ASFSearch-search-valid
- method: test_ASFSearch_Search_Generator
-
-- For running ASFSearch search error tests:
- required_keys: ["parameters", "status_code", "report"]
- required_in_title: test-ASFSearch-search-error
- method: test_ASFSearch_Search_Error
-
-- For running WKT Validation invalid wkt error tests:
- required_keys: wkt
- required_in_title: 'test-validate-wkt-invalid-error'
- method: test_wkt_validation_Invalid_WKT_Error
-
-- For running WKT Validation point tests:
- required_keys: ["wkt", "validated-wkt"]
- required_in_title: 'test-validate-wkt-valid'
- method: test_wkt_validation_WKT_Valid
-
-- For running _get_clamped_and_wrapped_geometry tests:
- required_keys: ["wkt", "clamped-wkt", "clamped-count", "wrapped-count"]
- required_in_title: test-validate-wkt-clamp
- method: test_wkt_validation_WKT_clamp_geometry
-
-- For running _get_convex_hull tests:
- required_keys: ["wkt", "convex-wkt"]
- required_in_title: test-validate-wkt-convex-hull
- method: test_wkt_validation_convex_hull
-
-- For running _get_convex_hull tests:
- required_keys: ["wkt", "merged-wkt"]
- required_in_title: test-validate-wkt-merge-overlapping-geometry
- method: test_wkt_validation_merge_overlapping_geometry
-
-- For running _counter_clockwise_reorientation tests:
- required_keys: ["wkt", "cc-wkt"]
- required_in_title: test-validate-wkt-reorient
- method: test_wkt_validation_counter_clockwise_reorientation
-
-- For running _wkt_prep tests:
- required_keys: wkt
- required_in_title: test-search-wkt-prep
- method: test_search_wkt_prep
-
-- For running _simplify_aoi tests:
- required_keys: ["wkt", "simplified-wkt", "RepairEntries"]
- required_in_title: test-simplify-aoi
- method: test_simplify_aoi
-
-- For running _get_project_names tests:
- required_keys: ["cmr_ummjson", "campaigns"]
- required_in_title: test_get_project_names
- method: test_get_platform_campaign_names
-
-- For running _get_project_names tests:
- required_keys: ["wkt", "coordinates"]
- required_in_title: test-validate-wkt-get-shape-coords
- method: test_validate_wkt_get_shape_coords
-
-- For running ASFSearchResults_intersection tests:
- required_keys: ["wkt"]
- required_in_title: ASFSearchResults_intersection
- method: test_ASFSearchResults_intersection
-
-- For running download_url tests:
- required_keys: ["url", "path", "filename"]
- required_in_title: test-download-url
- method: test_download_url
-
-- For running find_new_reference tests:
- required_keys: ["stack", "output_index"]
- required_in_title: test-find-new-reference
- method: test_find_new_reference
-
-- For running test_get_default_product_type tests:
- required_keys: ["product", "product_type"]
- required_in_title: test-get_default_product_type
- method: test_get_default_product_type
-
-- For running test_get_baseline_from_stack tests:
- required_keys: ['reference', 'stack', 'output_stack', 'error']
- required_in_title: test-get-baseline-from-stack
- method: test_get_baseline_from_stack
-
-- For running test_get_default_product_type tests:
- required_keys: ["reference", "output"]
- required_in_title: test-valid-state-vectors
- method: test_valid_state_vectors
-
-- For running test_validator_map_validate tests:
- required_keys: ['key', 'value', 'output']
- required_in_title: test-validator-map-validate
- method: test_validator_map_validate
-
-- For running ASFSearchOption-validator tests:
- required_keys: ['validator', 'input', 'output', 'error']
- required_in_title: test-validators
- method: test_ASFSearchOptions_validator
-
-- For running ASFSearchOptions tests:
- required_in_title: test-ASFSearchOptions
- method: test_ASFSearchOptions
-
-- For running serialization tests:
- required_in_title: serialization
- method: test_serialization
-
-# - For running ASFSearchOptions tests:
-# required_in_title: ASFSearchResults-format
-# required_keys: results
-# method: test_output_format
-
-- For running search-api keyword-collection aliasing tests:
- required_in_title: test-aliasing-search-against-api
- required_keys: params
- method: test_keyword_aliasing_results
-
-- For running dataset keyword tests:
- required_in_title: search-dataset
- required_keys: dataset
- method: test_search_dataset
-
-- For running build_subquery tests:
- required_in_title: search-build_subquery
- required_keys: ['params', 'expected']
- method: test_build_subqueries
-
-- For running collection_attributes tests:
- required_in_title: test-collection-attributes
- required_keys: ['params', 'expected_attributes']
- method: test_collection_attributes
-
-- For running jupyter notebook example tests:
- required_keys: notebook
- method: test_notebook_examples
+ - For running ASFProduct tests:
+ required_keys: products
+ method: test_ASFProduct
+
+ - For running ASFProduct Subproduct tests:
+ required_in_title: ASFSubproduct
+ required_keys: ["scenes", "expected_subclass"]
+ method: test_ASFSubproduct
+
+ - For running ASFProduct_Stack tests:
+ required_keys: ["product", "preprocessed_stack", "processed_stack"]
+ required_in_title: ASFProduct_Stack
+ method: test_ASFProduct_Stack
+
+ - For running ASFProduct_get_stack_options tests:
+ required_keys: ["product", "options"]
+ required_in_title: ASFProduct-get-stack-options
+ method: test_ASFProduct_get_stack_options
+
+ - For running ASFProduct_download_file tests:
+ required_keys: ["product", "filename", "filetype", "additionalUrls"]
+ required_in_title: ASFProduct-download-file
+ method: test_ASFProduct_download
+
+ - For running ASFSession tests:
+ required_in_title: password-login
+ required_keys: ["username", "password"]
+ method: test_ASFSession_Error
+
+ - For running ASFSession token_auth tests:
+ required_in_title: token-auth
+ required_keys: token
+ method: test_ASFSession_Token_Error
+
+ - For running ASFSession cookiejar_auth tests:
+ required_in_title: cookiejar-auth
+ required_keys: cookies
+ method: test_ASFSession_Cookie_Error
+
+ - For running ASFSession rebuild_auth tests:
+ required_in_title: rebuild_auth
+ required_keys:
+ ["original_domain", "response_domain", "response_code", "final_token"]
+ method: test_asf_session_rebuild_auth
+
+ - For running preprocessed baseline stack params tests:
+ required_keys: product
+ required_in_title: test-preprocessed-product
+ method: test_get_preprocessed_stack_params
+
+ - For running unprocessed baseline stack params tests:
+ required_keys: product
+ required_in_title: test-unprocessed-product
+ method: test_get_unprocessed_stack_params
+
+ - For running Invalid Stack ID stack params tests:
+ required_keys: product
+ required_in_title: test-invalid-insarStackID
+ method: test_get_stack_opts_invalid_insarStackId
+
+ - For running Invalid Platform stack params tests:
+ required_keys: ["product", "stack"]
+ required_in_title: test-temporal-baseline
+ method: test_temporal_baseline
+
+ - For running Invalid Platform stack params tests:
+ required_keys: ["product", "stack"]
+ required_in_title: test-product-stack
+ method: test_stack_from_product
+
+ - For running stack_from_id tests:
+ required_keys: ["stack_id", "stack", "stack_reference"]
+ required_in_title: test-stack-id
+ method: test_stack_from_id
+
+ - For running stack from ASFSearch tests:
+ required_keys: response
+ required_in_title: test-ASFSearch
+ method: test_ASFSearchResults
+
+ - For ASFSearch search with parameters tests:
+ required_keys: ["parameters", "answer"]
+ required_in_title: test-ASFSearch-search-valid
+ method: test_ASFSearch_Search
+
+ - For ASFSearch search_generator with parameters tests:
+ required_keys: parameters
+ required_in_title: test-ASFSearch-search-valid
+ method: test_ASFSearch_Search_Generator
+
+ - For running ASFSearch search error tests:
+ required_keys: ["parameters", "status_code", "report"]
+ required_in_title: test-ASFSearch-search-error
+ method: test_ASFSearch_Search_Error
+
+ - For running WKT Validation invalid wkt error tests:
+ required_keys: wkt
+ required_in_title: "test-validate-wkt-invalid-error"
+ method: test_wkt_validation_Invalid_WKT_Error
+
+ - For running WKT Validation point tests:
+ required_keys: ["wkt", "validated-wkt"]
+ required_in_title: "test-validate-wkt-valid"
+ method: test_wkt_validation_WKT_Valid
+
+ - For running _get_clamped_and_wrapped_geometry tests:
+ required_keys: ["wkt", "clamped-wkt", "clamped-count", "wrapped-count"]
+ required_in_title: test-validate-wkt-clamp
+ method: test_wkt_validation_WKT_clamp_geometry
+
+ - For running _get_convex_hull tests:
+ required_keys: ["wkt", "convex-wkt"]
+ required_in_title: test-validate-wkt-convex-hull
+ method: test_wkt_validation_convex_hull
+
+ - For running _get_convex_hull tests:
+ required_keys: ["wkt", "merged-wkt"]
+ required_in_title: test-validate-wkt-merge-overlapping-geometry
+ method: test_wkt_validation_merge_overlapping_geometry
+
+ - For running _counter_clockwise_reorientation tests:
+ required_keys: ["wkt", "cc-wkt"]
+ required_in_title: test-validate-wkt-reorient
+ method: test_wkt_validation_counter_clockwise_reorientation
+
+ - For running _wkt_prep tests:
+ required_keys: wkt
+ required_in_title: test-search-wkt-prep
+ method: test_search_wkt_prep
+
+ - For running _simplify_aoi tests:
+ required_keys: ["wkt", "simplified-wkt", "RepairEntries"]
+ required_in_title: test-simplify-aoi
+ method: test_simplify_aoi
+
+ - For running _get_project_names tests:
+ required_keys: ["cmr_ummjson", "campaigns"]
+ required_in_title: test_get_project_names
+ method: test_get_platform_campaign_names
+
+ - For running _get_project_names tests:
+ required_keys: ["wkt", "coordinates"]
+ required_in_title: test-validate-wkt-get-shape-coords
+ method: test_validate_wkt_get_shape_coords
+
+ - For running ASFSearchResults_intersection tests:
+ required_keys: ["wkt"]
+ required_in_title: ASFSearchResults_intersection
+ method: test_ASFSearchResults_intersection
+
+ - For running download_url tests:
+ required_keys: ["url", "path", "filename"]
+ required_in_title: test-download-url
+ method: test_download_url
+
+ - For running find_new_reference tests:
+ required_keys: ["stack", "output_index"]
+ required_in_title: test-find-new-reference
+ method: test_find_new_reference
+
+ - For running test_get_default_product_type tests:
+ required_keys: ["product", "product_type"]
+ required_in_title: test-get_default_product_type
+ method: test_get_default_product_type
+
+ - For running test_get_baseline_from_stack tests:
+ required_keys: ["reference", "stack", "output_stack", "error"]
+ required_in_title: test-get-baseline-from-stack
+ method: test_get_baseline_from_stack
+
+ - For running test_get_default_product_type tests:
+ required_keys: ["reference", "output"]
+ required_in_title: test-valid-state-vectors
+ method: test_valid_state_vectors
+
+ - For running test_validator_map_validate tests:
+ required_keys: ["key", "value", "output"]
+ required_in_title: test-validator-map-validate
+ method: test_validator_map_validate
+
+ - For running ASFSearchOption-validator tests:
+ required_keys: ["validator", "input", "output", "error"]
+ required_in_title: test-validators
+ method: test_ASFSearchOptions_validator
+
+ - For running ASFSearchOptions tests:
+ required_in_title: test-ASFSearchOptions
+ method: test_ASFSearchOptions
+
+ - For running serialization tests:
+ required_in_title: serialization
+ method: test_serialization
+
+ # - For running ASFSearchOptions tests:
+ # required_in_title: ASFSearchResults-format
+ # required_keys: results
+ # method: test_output_format
+
+ - For running search-api keyword-collection aliasing tests:
+ required_in_title: test-aliasing-search-against-api
+ required_keys: params
+ method: test_keyword_aliasing_results
+
+ - For running dataset keyword tests:
+ required_in_title: search-dataset
+ required_keys: dataset
+ method: test_search_dataset
+
+ - For running build_subquery tests:
+ required_in_title: search-build_subquery
+ required_keys: ["params", "expected"]
+ method: test_build_subqueries
+
+ - For running collection_attributes tests:
+ required_in_title: test-collection-attributes
+ required_keys: ["params", "expected_attributes"]
+ method: test_collection_attributes
+
+ - For running granule-search-patterns tests:
+ required_in_title: test-granule-search-patterns
+ required_keys: [params, output]
+ method: test_granule_search_patterns
+
+ - For running jupyter notebook example tests:
+ required_keys: notebook
+ method: test_notebook_examples
=====================================
tests/pytest-managers.py
=====================================
@@ -31,6 +31,7 @@ from Search.test_search import (
run_test_ASFSearchResults,
run_test_build_subqueries,
run_test_dataset_search,
+ run_test_granule_search_patterns,
run_test_keyword_aliasing_results,
run_test_search,
run_test_search_http_error,
@@ -93,11 +94,12 @@ def test_ASFProduct(**args) -> None:
geographic_response = get_resource(test_info['products'])
run_test_ASFProduct(geographic_response)
+
def test_ASFSubproduct(**args) -> None:
"""
Tests ASFProduct subclasses for properties and basic functionality
"""
- session = args["config"].getoption("authenticated_session")
+ session = args['config'].getoption('authenticated_session')
test_info = args['test_info']
scene_names = test_info['scenes']
@@ -105,7 +107,8 @@ def test_ASFSubproduct(**args) -> None:
opts = ASFSearchOptions(**test_info.get('opts', {}), session=session)
run_test_ASFSubproduct(scene_names=scene_names, expected_subclass=expected_subclass, opts=opts)
-
+
+
def test_ASFProduct_Stack(**args) -> None:
"""
Tests ASFProduct.stack() with reference and corresponding stack
@@ -583,6 +586,13 @@ def test_build_subqueries(**kwargs) -> None:
run_test_build_subqueries(params, expected)
+def test_granule_search_patterns(**args):
+ test_info = args['test_info']
+ params = test_info['params']
+ output = test_info['output']
+ run_test_granule_search_patterns(params, output)
+
+
def test_serialization(**args) -> None:
test_info = args['test_info']
product = get_resource(test_info.get('product'))
@@ -643,13 +653,15 @@ def test_keyword_aliasing_results(**args) -> None:
run_test_keyword_aliasing_results(opts)
+
def test_collection_attributes(**args) -> None:
params = args['test_info']['params']
expected_attributes = args['test_info']['expected_attributes']
expect_failure = args['test_info'].get('expect_failure', False)
- session = args["config"].getoption("authenticated_session")
+ session = args['config'].getoption('authenticated_session')
run_test_collection_attributes(params, expected_attributes, session, expect_failure)
+
# Finds and loads file from yml_tests/Resouces/ if loaded field ends with .yml/yaml extension
def get_resource(yml_file):
if isinstance(yml_file, str):
=====================================
tests/yml_tests/test_search.yml
=====================================
@@ -175,186 +175,185 @@ sentinel-1_collections: &sentinel-1_collections
- "C1257175154-ASFDEV"
- "C1244598379-ASFDEV"
-nisar_collections: &nisar_collections
- [
- # UAT ASFDEV
- 'C1261815181-ASFDEV',
- 'C1261832381-ASFDEV',
- 'C1256533420-ASFDEV',
- 'C1261813453-ASFDEV',
- 'C1261832466-ASFDEV',
- 'C1256524081-ASFDEV',
- 'C1261815274-ASFDEV',
- 'C1273126538-ASFDEV',
- 'C1273126543-ASFDEV',
- 'C1261813489-ASFDEV',
- 'C1273095152-ASFDEV',
- 'C1273095154-ASFDEV',
- 'C1261819086-ASFDEV',
- 'C1273095181-ASFDEV',
- 'C1273095184-ASFDEV',
- 'C1261819098-ASFDEV',
- 'C1273152981-ASFDEV',
- 'C1273152983-ASFDEV',
- 'C1261819110-ASFDEV',
- 'C1273153081-ASFDEV',
- 'C1273153083-ASFDEV',
- 'C1261819167-ASFDEV',
- 'C1273181122-ASFDEV',
- 'C1273181124-ASFDEV',
- 'C1261819168-ASFDEV',
- 'C1273304471-ASFDEV',
- 'C1273304473-ASFDEV',
- 'C1261819211-ASFDEV',
- 'C1273304517-ASFDEV',
- 'C1273304519-ASFDEV',
- 'C1261819233-ASFDEV',
- 'C1273304466-ASFDEV',
- 'C1273304468-ASFDEV',
- 'C1273421239-ASFDEV',
- 'C1273410799-ASFDEV',
- 'C1273410801-ASFDEV',
- 'C1262134528-ASFDEV',
- 'C1258125097-ASFDEV',
- 'C1258290319-ASFDEV',
- 'C1258301530-ASFDEV',
- 'C1261630276-ASFDEV',
- 'C1256574227-ASFDEV',
- 'C1256579794-ASFDEV',
- 'C1256729502-ASFDEV',
- 'C1256535568-ASFDEV',
- 'C1256578011-ASFDEV',
- 'C1256802323-ASFDEV',
- 'C1276806641-ASFDEV',
- 'C1256535570-ASFDEV',
- 'C1275622488-ASFDEV',
- # 'C1276777683-ASFDEV',
- # 'C1280516237-ASFDEV',
- # 'C1274178360-ASFDEV',
- # 'C1276991363-ASFDEV',
- # 'C1261815276-ASFDEV',
- # 'C1261832632-ASFDEV',
- # 'C1256358463-ASFDEV',
- # 'C1274178363-ASFDEV',
- # UAT
- 'C1261815288-ASF',
- 'C1261832657-ASF',
- 'C1257349121-ASF',
- 'C1273831241-ASF',
- 'C1261832658-ASF',
- 'C1257349120-ASF',
- 'C1273831320-ASF',
- 'C1273445045-ASF',
- 'C1273445159-ASF',
- 'C1273831203-ASF',
- 'C1273153208-ASF',
- 'C1273831205-ASF',
- 'C1273831200-ASF',
- 'C1273153326-ASF',
- 'C1273287787-ASF',
- 'C1261819121-ASF',
- 'C1273220358-ASF',
- 'C1273220386-ASF',
- 'C1261819145-ASF',
- 'C1273316385-ASF',
- 'C1273316399-ASF',
- 'C1273831198-ASF',
- 'C1273397067-ASF',
- 'C1273397074-ASF',
- 'C1261819270-ASF',
- 'C1273424673-ASF',
- 'C1273424675-ASF',
- 'C1273831195-ASF',
- 'C1273428591-ASF',
- 'C1273428593-ASF',
- 'C1261819281-ASF',
- 'C1273429896-ASF',
- 'C1273429898-ASF',
- 'C1273553457-ASF',
- 'C1273602244-ASF',
- 'C1273602265-ASF',
- 'C1262135006-ASF',
- 'C1258836794-ASF',
- 'C1273831207-ASF',
- 'C1258836800-ASF',
- 'C1261712879-ASF',
- 'C1257349088-ASF',
- 'C1257349083-ASF',
- 'C1257349067-ASF',
- 'C1257349089-ASF',
- 'C1257349074-ASF',
- 'C1257349063-ASF',
- 'C1257349059-ASF',
- 'C1257349082-ASF',
- 'C1275622548-ASF',
- 'C1274178507-ASF',
- # 'C1274665933-ASF',
- # 'C1280516250-ASF',
- # 'C1274178361-ASF',
- # 'C1274177987-ASF',
- # 'C1273831262-ASF',
- # 'C1261832671-ASF',
- # 'C1257349114-ASF',
- # 'C1274178365-ASF',
- # PROD
- 'C2850220296-ASF',
- 'C2853068083-ASF',
- 'C2727902012-ASF',
- 'C2850223384-ASF',
- 'C2853086824-ASF',
- 'C3622203972-ASF',
- 'C3622228339-ASF',
- 'C2853089814-ASF',
- 'C3622265756-ASF',
- 'C2850225585-ASF',
- 'C2853145197-ASF',
- 'C3622236985-ASF',
- 'C2850234202-ASF',
- 'C2853147928-ASF',
- 'C3622229381-ASF',
- 'C2850235455-ASF',
- 'C2853153429-ASF',
- 'C3622237369-ASF',
- 'C2850237619-ASF',
- 'C2853156054-ASF',
- 'C3622241997-ASF',
- 'C2850259510-ASF',
- 'C2854332392-ASF',
- 'C3622244601-ASF',
- 'C2850261892-ASF',
- 'C2854335566-ASF',
- 'C3622247503-ASF',
- 'C3622214170-ASF',
- 'C2854338529-ASF',
- 'C3622241360-ASF',
- 'C2850263910-ASF',
- 'C2854341702-ASF',
- 'C3622250865-ASF',
- 'C2850265000-ASF',
- 'C2854344945-ASF',
- 'C3622248530-ASF',
- 'C2874824964-ASF',
- 'C2887469134-ASF',
- 'C2887499907-ASF',
- 'C2887502657-ASF',
- 'C3622222871-ASF',
- 'C2727908375-ASF',
- 'C2727912431-ASF',
- 'C3622253574-ASF',
- 'C3622233495-ASF',
- 'C2727911748-ASF',
- 'C3622219145-ASF',
- 'C3622216140-ASF',
- 'C2727904608-ASF',
- 'C3632501432-ASF',
- 'C3653529349-ASF',
- # 'C3803703055-ASF',
- # 'C4066106685-ASF',
- # 'C3807638962-ASF',
- # 'C2850225137-ASF',
- # 'C2853091612-ASF',
- # 'C3622254588-ASF',
- # 'C3852453107-ASF',
+nisar_collections: &nisar_collections [
+ # UAT ASFDEV
+ "C1261815181-ASFDEV",
+ "C1261832381-ASFDEV",
+ "C1256533420-ASFDEV",
+ "C1261813453-ASFDEV",
+ "C1261832466-ASFDEV",
+ "C1256524081-ASFDEV",
+ "C1261815274-ASFDEV",
+ "C1273126538-ASFDEV",
+ "C1273126543-ASFDEV",
+ "C1261813489-ASFDEV",
+ "C1273095152-ASFDEV",
+ "C1273095154-ASFDEV",
+ "C1261819086-ASFDEV",
+ "C1273095181-ASFDEV",
+ "C1273095184-ASFDEV",
+ "C1261819098-ASFDEV",
+ "C1273152981-ASFDEV",
+ "C1273152983-ASFDEV",
+ "C1261819110-ASFDEV",
+ "C1273153081-ASFDEV",
+ "C1273153083-ASFDEV",
+ "C1261819167-ASFDEV",
+ "C1273181122-ASFDEV",
+ "C1273181124-ASFDEV",
+ "C1261819168-ASFDEV",
+ "C1273304471-ASFDEV",
+ "C1273304473-ASFDEV",
+ "C1261819211-ASFDEV",
+ "C1273304517-ASFDEV",
+ "C1273304519-ASFDEV",
+ "C1261819233-ASFDEV",
+ "C1273304466-ASFDEV",
+ "C1273304468-ASFDEV",
+ "C1273421239-ASFDEV",
+ "C1273410799-ASFDEV",
+ "C1273410801-ASFDEV",
+ "C1262134528-ASFDEV",
+ "C1258125097-ASFDEV",
+ "C1258290319-ASFDEV",
+ "C1258301530-ASFDEV",
+ "C1261630276-ASFDEV",
+ "C1256574227-ASFDEV",
+ "C1256579794-ASFDEV",
+ "C1256729502-ASFDEV",
+ "C1256535568-ASFDEV",
+ "C1256578011-ASFDEV",
+ "C1256802323-ASFDEV",
+ "C1276806641-ASFDEV",
+ "C1256535570-ASFDEV",
+ "C1275622488-ASFDEV",
+ # 'C1276777683-ASFDEV',
+ # 'C1280516237-ASFDEV',
+ # 'C1274178360-ASFDEV',
+ # 'C1276991363-ASFDEV',
+ # 'C1261815276-ASFDEV',
+ # 'C1261832632-ASFDEV',
+ # 'C1256358463-ASFDEV',
+ # 'C1274178363-ASFDEV',
+ # UAT
+ "C1261815288-ASF",
+ "C1261832657-ASF",
+ "C1257349121-ASF",
+ "C1273831241-ASF",
+ "C1261832658-ASF",
+ "C1257349120-ASF",
+ "C1273831320-ASF",
+ "C1273445045-ASF",
+ "C1273445159-ASF",
+ "C1273831203-ASF",
+ "C1273153208-ASF",
+ "C1273831205-ASF",
+ "C1273831200-ASF",
+ "C1273153326-ASF",
+ "C1273287787-ASF",
+ "C1261819121-ASF",
+ "C1273220358-ASF",
+ "C1273220386-ASF",
+ "C1261819145-ASF",
+ "C1273316385-ASF",
+ "C1273316399-ASF",
+ "C1273831198-ASF",
+ "C1273397067-ASF",
+ "C1273397074-ASF",
+ "C1261819270-ASF",
+ "C1273424673-ASF",
+ "C1273424675-ASF",
+ "C1273831195-ASF",
+ "C1273428591-ASF",
+ "C1273428593-ASF",
+ "C1261819281-ASF",
+ "C1273429896-ASF",
+ "C1273429898-ASF",
+ "C1273553457-ASF",
+ "C1273602244-ASF",
+ "C1273602265-ASF",
+ "C1262135006-ASF",
+ "C1258836794-ASF",
+ "C1273831207-ASF",
+ "C1258836800-ASF",
+ "C1261712879-ASF",
+ "C1257349088-ASF",
+ "C1257349083-ASF",
+ "C1257349067-ASF",
+ "C1257349089-ASF",
+ "C1257349074-ASF",
+ "C1257349063-ASF",
+ "C1257349059-ASF",
+ "C1257349082-ASF",
+ "C1275622548-ASF",
+ "C1274178507-ASF",
+ # 'C1274665933-ASF',
+ # 'C1280516250-ASF',
+ # 'C1274178361-ASF',
+ # 'C1274177987-ASF',
+ # 'C1273831262-ASF',
+ # 'C1261832671-ASF',
+ # 'C1257349114-ASF',
+ # 'C1274178365-ASF',
+ # PROD
+ "C2850220296-ASF",
+ "C2853068083-ASF",
+ "C2727902012-ASF",
+ "C2850223384-ASF",
+ "C2853086824-ASF",
+ "C3622203972-ASF",
+ "C3622228339-ASF",
+ "C2853089814-ASF",
+ "C3622265756-ASF",
+ "C2850225585-ASF",
+ "C2853145197-ASF",
+ "C3622236985-ASF",
+ "C2850234202-ASF",
+ "C2853147928-ASF",
+ "C3622229381-ASF",
+ "C2850235455-ASF",
+ "C2853153429-ASF",
+ "C3622237369-ASF",
+ "C2850237619-ASF",
+ "C2853156054-ASF",
+ "C3622241997-ASF",
+ "C2850259510-ASF",
+ "C2854332392-ASF",
+ "C3622244601-ASF",
+ "C2850261892-ASF",
+ "C2854335566-ASF",
+ "C3622247503-ASF",
+ "C3622214170-ASF",
+ "C2854338529-ASF",
+ "C3622241360-ASF",
+ "C2850263910-ASF",
+ "C2854341702-ASF",
+ "C3622250865-ASF",
+ "C2850265000-ASF",
+ "C2854344945-ASF",
+ "C3622248530-ASF",
+ "C2874824964-ASF",
+ "C2887469134-ASF",
+ "C2887499907-ASF",
+ "C2887502657-ASF",
+ "C3622222871-ASF",
+ "C2727908375-ASF",
+ "C2727912431-ASF",
+ "C3622253574-ASF",
+ "C3622233495-ASF",
+ "C2727911748-ASF",
+ "C3622219145-ASF",
+ "C3622216140-ASF",
+ "C2727904608-ASF",
+ "C3632501432-ASF",
+ "C3653529349-ASF",
+ # 'C3803703055-ASF',
+ # 'C4066106685-ASF',
+ # 'C3807638962-ASF',
+ # 'C2850225137-ASF',
+ # 'C2853091612-ASF',
+ # 'C3622254588-ASF',
+ # 'C3852453107-ASF',
]
tests:
@@ -370,21 +369,21 @@ tests:
- test-ASFSearch-search-error 400-Error:
parameters: {}
status_code: 400
- report: 'Client Error: This is a Test Error'
+ report: "Client Error: This is a Test Error"
- test-ASFSearch-search-error 400-Error non-empty-results:
parameters:
platform: Sentinel-1
status_code: 400
- report: 'Client Error: This is a Test Error'
+ report: "Client Error: This is a Test Error"
- test-ASFSearch-search-error 500-Error:
parameters: {}
status_code: 500
- report: 'Server Error: This is a Test Error'
+ report: "Server Error: This is a Test Error"
- test-ASFSearch-search-error 500-Error non-empty-results:
parameters:
platform: Sentinel-1
status_code: 500
- report: 'Server Error: This is a Test Error'
+ report: "Server Error: This is a Test Error"
- test-search-dataset S1 Datasets:
dataset:
- SENTINEL-1
@@ -423,12 +422,7 @@ tests:
- L0B
dataset:
- NISAR
- expected: [
- {
- processingLevel: ['RRSD'],
- collections: *nisar_collections
- }
- ]
+ expected: [{ processingLevel: ["RRSD"], collections: *nisar_collections }]
- test-search-build_subquery S1-Platform SLC:
params:
@@ -439,12 +433,12 @@ tests:
- SLC
expected:
- collections:
- - 'C1205428742-ASF'
- - 'C1214470488-ASF'
- - 'C1216244348-ASF'
- - 'C1234413245-ASFDEV'
- - 'C1234413263-ASFDEV'
- - 'C1327985661-ASF'
+ - "C1205428742-ASF"
+ - "C1214470488-ASF"
+ - "C1216244348-ASF"
+ - "C1234413245-ASFDEV"
+ - "C1234413263-ASFDEV"
+ - "C1327985661-ASF"
- test-search-build_subquery S1-Dataset SLC:
params:
dataset:
@@ -516,9 +510,7 @@ tests:
params:
processingLevel:
- UNKNOWN_PROCESSING_TYPE
- expected: [
- {processingLevel: [UNKNOWN_PROCESSING_TYPE]}
- ]
+ expected: [{ processingLevel: [UNKNOWN_PROCESSING_TYPE] }]
- test-search-build_subquery UNKNOWN_PROCESSING_TYPE with collections:
params:
processingLevel:
@@ -531,38 +523,32 @@ tests:
- C1216244348-ASF
- C1234413263-ASFDEV
- C1212001698-ASF
- expected: [
- {
- processingLevel: [UNKNOWN_PROCESSING_TYPE],
- collections: [C1214470488-ASF,
- C1205428742-ASF,
- C1234413245-ASFDEV,
- C1327985661-ASF,
- C1216244348-ASF,
- C1234413263-ASFDEV,
- C1212001698-ASF]
- }
- ]
+ expected:
+ [
+ {
+ processingLevel: [UNKNOWN_PROCESSING_TYPE],
+ collections:
+ [
+ C1214470488-ASF,
+ C1205428742-ASF,
+ C1234413245-ASFDEV,
+ C1327985661-ASF,
+ C1216244348-ASF,
+ C1234413263-ASFDEV,
+ C1212001698-ASF,
+ ],
+ },
+ ]
- test-search-build_subquery mismatched processingLevel for platform:
params:
processingLevel: METADATA
platform: NISAR
- expected: [
- {
- processingLevel: [METADATA],
- platform: [NISAR]
- }
- ]
+ expected: [{ processingLevel: [METADATA], platform: [NISAR] }]
- test-search-build_subquery mismatched processingLevel for platform CSLC and S1A:
params:
processingLevel: METADATA
platform: SENTINEL-1A
- expected: [
- {
- processingLevel: [METADATA],
- platform: [SENTINEL-1A]
- }
- ]
+ expected: [{ processingLevel: [METADATA], platform: [SENTINEL-1A] }]
- test-search-build_subquery UNKNOWN_PROCESSING_TYPE with platform, SLC, & collection (skip set difference with unknown processing level):
params:
platform:
@@ -574,295 +560,303 @@ tests:
- SLC
collections:
- C1212001698-ASF
- expected: [{
- processingLevel: UNKNOWN_PROCESSING_TYPE,
- collections: [
- "C1214353986-ASF",
- "C1214336045-ASF",
- "C1261881077-ASF",
- "C2859376221-ASF",
- "C1214336717-ASF",
- "C1214335430-ASF",
- "C1214335471-ASF",
- "C1214335903-ASF",
- "C1214336154-ASF",
- "C1214336554-ASF",
- "C1214353593-ASF",
- "C1214353754-ASF",
- "C1214353859-ASF",
- "C1214337770-ASF",
- "C1214354144-ASF",
- "C1214354235-ASF",
- "C1214343609-ASF",
- "C1214354031-ASF",
- "C1214408428-ASF",
- "C1214419355-ASF",
- "C1210487703-ASF",
- "C1212030772-ASF",
- "C1206116665-ASF",
- "C1206132445-ASF",
- "C1211962154-ASF",
- "C1212001698-ASF",
- "C1212005594-ASF",
- "C1212019993-ASF",
- "C1207638502-ASF",
- "C1210025872-ASF",
- "C1210485039-ASF",
- "C1207188317-ASF",
- "C1210546638-ASF",
- "C1206122195-ASF",
- "C1209970710-ASF",
- "C1207038647-ASF",
- "C1210599503-ASF",
- "C1210599673-ASF",
- "C1214470488-ASF",
- "C1205428742-ASF",
- "C1234413245-ASFDEV",
- "C1327985661-ASF",
- "C1216244348-ASF",
- "C1234413263-ASFDEV",
- "C2803501758-ASF", # OPERA
- "C2803501097-ASF", # OPERA
- "C1214470488-ASF", # S1A
- "C1214470533-ASF",
- "C1214470576-ASF",
- "C1595422627-ASF",
- "C1214470496-ASF",
- "C1214470532-ASF",
- "C1214472977-ASF",
- "C1214472336-ASF",
- "C1266376001-ASF",
- "C1214472994-ASF",
- "C1214470732-ASF",
- "C1214473170-ASF",
- "C1214470561-ASF",
- "C1214471521-ASF",
- "C1214470682-ASF",
- "C2777443834-ASF",
- "C2777436413-ASF",
- "C1214471197-ASF",
- "C1214471960-ASF",
- "C1214472978-ASF",
- "C1214473165-ASF",
- "C2709161906-ASF",
- "C1596065640-ASF",
- "C1596065639-ASF",
- "C1596065641-ASF",
- "C1595765183-ASF",
- "C2450786986-ASF",
- "C1205428742-ASF",
- "C1212201032-ASF",
- "C1212212560-ASF",
- "C1205264459-ASF",
- "C1208117434-ASF",
- "C1212209035-ASF",
- "C1212209226-ASF",
- "C1208115009-ASF",
- "C1212158327-ASF",
- "C1215704763-ASF",
- "C1225776654-ASF",
- "C1212158318-ASF",
- "C1212212493-ASF",
- "C1212158326-ASF",
- "C1212233976-ASF",
- "C1260726384-ASF",
- "C1258354200-ASF",
- "C1259982010-ASF",
- "C2795135668-ASF",
- "C1260721945-ASF",
- "C1257995185-ASF",
- "C1259976861-ASF",
- "C1258354201-ASF",
- "C1259981910-ASF",
- "C2795135174-ASF",
- "C1260721853-ASF",
- "C1257995186-ASF",
- "C1259974840-ASF",
- "C1212200781-ASF",
- "C1212209075-ASF",
- "C1257024016-ASF",
- "C1225776655-ASF",
- "C1225776657-ASF",
- "C1225776658-ASF",
- "C1225776659-ASF",
- "C1245953394-ASF",
- "C1234413245-ASFDEV",
- "C1234413229-ASFDEV",
- "C1234413237-ASFDEV",
- "C1234413238-ASFDEV",
- "C1234413236-ASFDEV",
- "C1234413230-ASFDEV",
- "C1234413232-ASFDEV",
- "C1234413235-ASFDEV",
- "C1234413240-ASFDEV",
- "C1234413234-ASFDEV",
- "C1234413241-ASFDEV",
- "C1234413233-ASFDEV",
- "C1234413243-ASFDEV",
- "C1234413244-ASFDEV",
- "C1244552887-ASFDEV",
- "C1234413228-ASFDEV",
- "C1234413231-ASFDEV",
- "C1234413239-ASFDEV",
- "C1234413242-ASFDEV",
- "C1257175154-ASFDEV",
- "C1244598379-ASFDEV",
- "C1240784657-ASFDEV",
- "C1327985661-ASF", # S1B
- "C1327985645-ASF",
- "C1595422627-ASF",
- "C1327985617-ASF",
- "C1327985660-ASF",
- "C1327985741-ASF",
- "C1327985578-ASF",
- "C1327985646-ASF",
- "C1327985650-ASF",
- "C1327985579-ASF",
- "C1327985740-ASF",
- "C1327985619-ASF",
- "C1327985739-ASF",
- "C1327985647-ASF",
- "C2777443834-ASF",
- "C2777436413-ASF",
- "C1327985697-ASF",
- "C1327985651-ASF",
- "C1327985644-ASF",
- "C1327985571-ASF",
- "C1327985674-ASF",
- "C2709161906-ASF",
- "C1596065640-ASF",
- "C1596065639-ASF",
- "C1596065641-ASF",
- "C1595765183-ASF",
- "C2450786986-ASF",
- "C1216244348-ASF",
- "C1216244589-ASF",
- "C1216244594-ASF",
- "C1216244593-ASF",
- "C1216244585-ASF",
- "C1216244592-ASF",
- "C1216244595-ASF",
- "C1225776654-ASF",
- "C1216244590-ASF",
- "C1216244601-ASF",
- "C1216244600-ASF",
- "C1216244591-ASF",
- "C1216244587-ASF",
- "C1216244598-ASF",
- "C1216244586-ASF",
- "C1260726384-ASF",
- "C1258354200-ASF",
- "C1259982010-ASF",
- "C2795135668-ASF",
- "C1260721945-ASF",
- "C1257995185-ASF",
- "C1259976861-ASF",
- "C1258354201-ASF",
- "C1259981910-ASF",
- "C2795135174-ASF",
- "C1260721853-ASF",
- "C1257995186-ASF",
- "C1259974840-ASF",
- "C1216244597-ASF",
- "C1216244596-ASF",
- "C1216244588-ASF",
- "C1216244599-ASF",
- "C1257024016-ASF",
- "C1225776655-ASF",
- "C1225776657-ASF",
- "C1225776658-ASF",
- "C1225776659-ASF",
- "C1245953394-ASF",
- "C1234413263-ASFDEV",
- "C1234413247-ASFDEV",
- "C1234413248-ASFDEV",
- "C1234413255-ASFDEV",
- "C1234413254-ASFDEV",
- "C1234413256-ASFDEV",
- "C1234413253-ASFDEV",
- "C1234413252-ASFDEV",
- "C1234413250-ASFDEV",
- "C1234413259-ASFDEV",
- "C1234413251-ASFDEV",
- "C1234413261-ASFDEV",
- "C1234413262-ASFDEV",
- "C1234413258-ASFDEV",
- "C1244552887-ASFDEV",
- "C1234413246-ASFDEV",
- "C1234413249-ASFDEV",
- "C1234413257-ASFDEV",
- "C1234413260-ASFDEV",
- "C1257175154-ASFDEV",
- "C1244598379-ASFDEV",
- ]
- }]
+ expected: [{ processingLevel: UNKNOWN_PROCESSING_TYPE, collections: [
+ "C1214353986-ASF",
+ "C1214336045-ASF",
+ "C1261881077-ASF",
+ "C2859376221-ASF",
+ "C1214336717-ASF",
+ "C1214335430-ASF",
+ "C1214335471-ASF",
+ "C1214335903-ASF",
+ "C1214336154-ASF",
+ "C1214336554-ASF",
+ "C1214353593-ASF",
+ "C1214353754-ASF",
+ "C1214353859-ASF",
+ "C1214337770-ASF",
+ "C1214354144-ASF",
+ "C1214354235-ASF",
+ "C1214343609-ASF",
+ "C1214354031-ASF",
+ "C1214408428-ASF",
+ "C1214419355-ASF",
+ "C1210487703-ASF",
+ "C1212030772-ASF",
+ "C1206116665-ASF",
+ "C1206132445-ASF",
+ "C1211962154-ASF",
+ "C1212001698-ASF",
+ "C1212005594-ASF",
+ "C1212019993-ASF",
+ "C1207638502-ASF",
+ "C1210025872-ASF",
+ "C1210485039-ASF",
+ "C1207188317-ASF",
+ "C1210546638-ASF",
+ "C1206122195-ASF",
+ "C1209970710-ASF",
+ "C1207038647-ASF",
+ "C1210599503-ASF",
+ "C1210599673-ASF",
+ "C1214470488-ASF",
+ "C1205428742-ASF",
+ "C1234413245-ASFDEV",
+ "C1327985661-ASF",
+ "C1216244348-ASF",
+ "C1234413263-ASFDEV",
+ "C2803501758-ASF", # OPERA
+ "C2803501097-ASF", # OPERA
+ "C1214470488-ASF", # S1A
+ "C1214470533-ASF",
+ "C1214470576-ASF",
+ "C1595422627-ASF",
+ "C1214470496-ASF",
+ "C1214470532-ASF",
+ "C1214472977-ASF",
+ "C1214472336-ASF",
+ "C1266376001-ASF",
+ "C1214472994-ASF",
+ "C1214470732-ASF",
+ "C1214473170-ASF",
+ "C1214470561-ASF",
+ "C1214471521-ASF",
+ "C1214470682-ASF",
+ "C2777443834-ASF",
+ "C2777436413-ASF",
+ "C1214471197-ASF",
+ "C1214471960-ASF",
+ "C1214472978-ASF",
+ "C1214473165-ASF",
+ "C2709161906-ASF",
+ "C1596065640-ASF",
+ "C1596065639-ASF",
+ "C1596065641-ASF",
+ "C1595765183-ASF",
+ "C2450786986-ASF",
+ "C1205428742-ASF",
+ "C1212201032-ASF",
+ "C1212212560-ASF",
+ "C1205264459-ASF",
+ "C1208117434-ASF",
+ "C1212209035-ASF",
+ "C1212209226-ASF",
+ "C1208115009-ASF",
+ "C1212158327-ASF",
+ "C1215704763-ASF",
+ "C1225776654-ASF",
+ "C1212158318-ASF",
+ "C1212212493-ASF",
+ "C1212158326-ASF",
+ "C1212233976-ASF",
+ "C1260726384-ASF",
+ "C1258354200-ASF",
+ "C1259982010-ASF",
+ "C2795135668-ASF",
+ "C1260721945-ASF",
+ "C1257995185-ASF",
+ "C1259976861-ASF",
+ "C1258354201-ASF",
+ "C1259981910-ASF",
+ "C2795135174-ASF",
+ "C1260721853-ASF",
+ "C1257995186-ASF",
+ "C1259974840-ASF",
+ "C1212200781-ASF",
+ "C1212209075-ASF",
+ "C1257024016-ASF",
+ "C1225776655-ASF",
+ "C1225776657-ASF",
+ "C1225776658-ASF",
+ "C1225776659-ASF",
+ "C1245953394-ASF",
+ "C1234413245-ASFDEV",
+ "C1234413229-ASFDEV",
+ "C1234413237-ASFDEV",
+ "C1234413238-ASFDEV",
+ "C1234413236-ASFDEV",
+ "C1234413230-ASFDEV",
+ "C1234413232-ASFDEV",
+ "C1234413235-ASFDEV",
+ "C1234413240-ASFDEV",
+ "C1234413234-ASFDEV",
+ "C1234413241-ASFDEV",
+ "C1234413233-ASFDEV",
+ "C1234413243-ASFDEV",
+ "C1234413244-ASFDEV",
+ "C1244552887-ASFDEV",
+ "C1234413228-ASFDEV",
+ "C1234413231-ASFDEV",
+ "C1234413239-ASFDEV",
+ "C1234413242-ASFDEV",
+ "C1257175154-ASFDEV",
+ "C1244598379-ASFDEV",
+ "C1240784657-ASFDEV",
+ "C1327985661-ASF", # S1B
+ "C1327985645-ASF",
+ "C1595422627-ASF",
+ "C1327985617-ASF",
+ "C1327985660-ASF",
+ "C1327985741-ASF",
+ "C1327985578-ASF",
+ "C1327985646-ASF",
+ "C1327985650-ASF",
+ "C1327985579-ASF",
+ "C1327985740-ASF",
+ "C1327985619-ASF",
+ "C1327985739-ASF",
+ "C1327985647-ASF",
+ "C2777443834-ASF",
+ "C2777436413-ASF",
+ "C1327985697-ASF",
+ "C1327985651-ASF",
+ "C1327985644-ASF",
+ "C1327985571-ASF",
+ "C1327985674-ASF",
+ "C2709161906-ASF",
+ "C1596065640-ASF",
+ "C1596065639-ASF",
+ "C1596065641-ASF",
+ "C1595765183-ASF",
+ "C2450786986-ASF",
+ "C1216244348-ASF",
+ "C1216244589-ASF",
+ "C1216244594-ASF",
+ "C1216244593-ASF",
+ "C1216244585-ASF",
+ "C1216244592-ASF",
+ "C1216244595-ASF",
+ "C1225776654-ASF",
+ "C1216244590-ASF",
+ "C1216244601-ASF",
+ "C1216244600-ASF",
+ "C1216244591-ASF",
+ "C1216244587-ASF",
+ "C1216244598-ASF",
+ "C1216244586-ASF",
+ "C1260726384-ASF",
+ "C1258354200-ASF",
+ "C1259982010-ASF",
+ "C2795135668-ASF",
+ "C1260721945-ASF",
+ "C1257995185-ASF",
+ "C1259976861-ASF",
+ "C1258354201-ASF",
+ "C1259981910-ASF",
+ "C2795135174-ASF",
+ "C1260721853-ASF",
+ "C1257995186-ASF",
+ "C1259974840-ASF",
+ "C1216244597-ASF",
+ "C1216244596-ASF",
+ "C1216244588-ASF",
+ "C1216244599-ASF",
+ "C1257024016-ASF",
+ "C1225776655-ASF",
+ "C1225776657-ASF",
+ "C1225776658-ASF",
+ "C1225776659-ASF",
+ "C1245953394-ASF",
+ "C1234413263-ASFDEV",
+ "C1234413247-ASFDEV",
+ "C1234413248-ASFDEV",
+ "C1234413255-ASFDEV",
+ "C1234413254-ASFDEV",
+ "C1234413256-ASFDEV",
+ "C1234413253-ASFDEV",
+ "C1234413252-ASFDEV",
+ "C1234413250-ASFDEV",
+ "C1234413259-ASFDEV",
+ "C1234413251-ASFDEV",
+ "C1234413261-ASFDEV",
+ "C1234413262-ASFDEV",
+ "C1234413258-ASFDEV",
+ "C1244552887-ASFDEV",
+ "C1234413246-ASFDEV",
+ "C1234413249-ASFDEV",
+ "C1234413257-ASFDEV",
+ "C1234413260-ASFDEV",
+ "C1257175154-ASFDEV",
+ "C1244598379-ASFDEV",
+ ] }]
- test-search-build_subquery shortName:
params:
- shortName: 'newShortName'
+ shortName: "newShortName"
+ expected:
+ - shortName: ["newShortName"]
+
+ - test-search-build_subquery granule_list wildcard with maxResults:
+ params:
+ granule_list: "NISAR_L2_PR_GSLC_*"
+ maxResults: 250
expected:
- - shortName: ['newShortName']
+ - granule_list: ["NISAR_L2_PR_GSLC_*"]
+ - maxResults: 250
- test-search-build_subquery shortName multiple:
params:
- shortName: ['newShortName', 'oldShortName']
+ shortName: ["newShortName", "oldShortName"]
expected:
- - shortName: ['newShortName', 'oldShortName']
+ - shortName: ["newShortName", "oldShortName"]
- test-search-build_subquery cmr_keywords:
params:
- cmr_keywords: ['attribute[]', 'unique_value']
+ cmr_keywords: ["attribute[]", "unique_value"]
expected:
- - cmr_keywords: [['attribute[]', 'unique_value']]
+ - cmr_keywords: [["attribute[]", "unique_value"]]
- test-search-build_subquery multiple cmr_keywords:
params:
- cmr_keywords: [['attribute[]', 'unique_value'],['special_key', 'special_value']]
+ cmr_keywords:
+ [["attribute[]", "unique_value"], ["special_key", "special_value"]]
expected:
- - cmr_keywords: [['attribute[]', 'unique_value'],['special_key', 'special_value']]
+ - cmr_keywords:
+ [["attribute[]", "unique_value"], ["special_key", "special_value"]]
- test-search-build_subquery configuration params:
params:
- host: 'cmr.uat.earthdata.nasa.gov'
- provider: 'ASFDEV'
- product_list: ['S1_069649_IW1_20151201T232154_VV_73D6-BURST']
- expected: [
- {
- host: 'cmr.uat.earthdata.nasa.gov',
- provider: 'ASFDEV',
- product_list: ['S1_069649_IW1_20151201T232154_VV_73D6-BURST']
- }
- ]
+ host: "cmr.uat.earthdata.nasa.gov"
+ provider: "ASFDEV"
+ product_list: ["S1_069649_IW1_20151201T232154_VV_73D6-BURST"]
+ expected:
+ [
+ {
+ host: "cmr.uat.earthdata.nasa.gov",
+ provider: "ASFDEV",
+ product_list: ["S1_069649_IW1_20151201T232154_VV_73D6-BURST"],
+ },
+ ]
- test-aliasing-search-against-api SLC:
params:
processingLevel: SLC
- start: '2023-12-01T00:00:00Z'
- end: '2023-12-31T00:00:00Z'
+ start: "2023-12-01T00:00:00Z"
+ end: "2023-12-31T00:00:00Z"
- test-aliasing-search-against-api S1A SLC:
params:
platform: SENTINEL-1A
processingLevel: SLC
- start: '2023-12-01T00:00:00Z'
- end: '2023-12-31T00:00:00Z'
+ start: "2023-12-01T00:00:00Z"
+ end: "2023-12-31T00:00:00Z"
- test-aliasing-search-against-api S1A RTC:
params:
platform: SENTINEL-1A
processingLevel: RTC
- start: '2023-12-01T00:00:00Z'
- end: '2023-12-31T00:00:00Z'
+ start: "2023-12-01T00:00:00Z"
+ end: "2023-12-31T00:00:00Z"
- test-aliasing-search-against-api S1A CSLC:
params:
platform: SENTINEL-1A
processingLevel: CSLC
- start: '2023-12-01T00:00:00Z'
- end: '2023-12-31T00:00:00Z'
+ start: "2023-12-01T00:00:00Z"
+ end: "2023-12-31T00:00:00Z"
- test-ASFSearch-search-error 400-Error circle radius too small:
parameters:
- circle: [0, 0, 2]
+ circle: [0, 0, 2]
status_code: 400
report: "Circle radius must be between 10 and 6000000, but was 2.0"
@@ -901,7 +895,7 @@ tests:
params:
platform: SIRC
processingLevel: SLC
-
+
- test-aliasing-search-against-api ALOS:
params:
platform: ALOS
@@ -950,7 +944,7 @@ tests:
params:
platform: RADARSAT
processingLevel: L0
-
+
- test-aliasing-search-against-api AIRSAR:
params:
platform: AIRSAR
@@ -972,7 +966,7 @@ tests:
params:
platform: SMAP
processingLevel: L1A_RADAR_RO_HDF5
-
+
- test-aliasing-search-against-api UAVSAR:
params:
platform: UAVSAR
@@ -981,3 +975,124 @@ tests:
params:
platform: UAVSAR
processingLevel: AMPLITUDE
+
+ - test-granule-search-patterns basic case NISAR L2 Cycle 10 Relative Orbit 16:
+ params:
+ granule_list: ["NISAR_L2_PR_*_010_16*"]
+ maxResults: 250
+ output:
+ expected_properties:
+ processingLevel: ["GSLC", "GCOV", "GUNW", "GOFF"]
+ productionConfiguration: "PR"
+ pathNumber: [[160, 169]]
+ expect_results: True
+
+ - test-granule-search-patterns basic case NISAR L2 Cycle 10 Relative Orbit 16 DHDH:
+ params:
+ granule_list: ["NISAR_L2_PR_*_010_16*_DHDH_*_001"]
+ maxResults: 250
+ output:
+ expected_properties:
+ processingLevel: ["GSLC", "GCOV", "GUNW", "GOFF"]
+ productionConfiguration: "PR"
+ pathNumber: [[160, 169]]
+ mainBandPolarization: [HH, HV]
+ sideBandPolarization: [HH, HV]
+ expect_results: True
+
+ - test-granule-search-patterns basic case NISAR L1+L2 no mainBandPolarization:
+ params:
+ maxResults: 250
+ flightDirection: "ASCENDING"
+ processingLevel: ["GSLC", "GCOV", "RSLC"]
+ relativeOrbit: [[40, 42]]
+ dataset: ["NISAR"]
+ frameCoverage: "Partial"
+ productionConfiguration: ["PR"]
+ granule_list: ["NISAR_L*_PR_*_NA*"]
+ output:
+ expected_properties:
+ processingLevel: ["GSLC", "GCOV", "RSLC"]
+ productionConfiguration: "PR"
+ pathNumber: [[40, 42]]
+ mainBandPolarization: null
+ flightDirection: ASCENDING
+ expect_results: True
+
+ - test-granule-search-patterns basic case NISAR ? overlapping filters:
+ params:
+ maxResults: 250
+ flightDirection: "ASCENDING"
+ granule_list: ["NISAR_L?_PR_*"]
+ output:
+ expect_results: True
+ expected_properties:
+ flightDirection: ASCENDING
+ processingLevel: ["SME2", "GSLC", "GCOV", "GOFF", "GUNW", "RSLC", "RUNW", "ROFF", "RIFG", "RRSD"]
+
+ - test-granule-search-patterns basic case NISAR wildcard zero overlapping filters:
+ params:
+ maxResults: 250
+ flightDirection: "ASCENDING"
+ processingLevel: ["GSLC", "GCOV", "RSLC"]
+ granule_list: ["NISAR_L3_PR_*_NA*"]
+ output:
+ expect_results: False
+
+ - test-granule-search-patterns basic case NISAR wildcard + ? overlapping filters:
+ params:
+ maxResults: 250
+ flightDirection: "ASCENDING"
+ processingLevel: ["GSLC", "GCOV", "RSLC"]
+ granule_list: ["NISAR_L?_PR_*_NA*"]
+ output:
+ expect_results: True
+ expected_properties:
+ processingLevel: ["GSLC", "GCOV", "RSLC"]
+ productionConfiguration: "PR"
+ mainBandPolarization: null
+ flightDirection: ASCENDING
+
+ - test-granule-search-patterns NISAR crid filter L2 X0500?:
+ params:
+ maxResults: 250
+ dataset: NISAR
+ granule_list: ["NISAR_L2_PR_*X0500?*"]
+ output:
+ expect_results: True
+ expected_properties:
+ processingLevel: ["GSLC", "GCOV", "GUNW", "GOFF"]
+ productionConfiguration: "PR"
+ crid: ['X05000', 'X05001','X05002','X05003','X05004','X05005','X05006','X05007','X05008', 'X05009']
+
+ - test-granule-search-patterns NISAR crid filter X05005:
+ params:
+ maxResults: 250
+ dataset: NISAR
+ granule_list: ["NISAR_L?_PR_*X05005*"]
+ output:
+ expect_results: True
+ expected_properties:
+ processingLevel: ["SME2", "GSLC", "GCOV", "GOFF", "GUNW", "RSLC", "RUNW", "ROFF", "RIFG", "RRSD"]
+ productionConfiguration: "PR"
+ crid: X05005
+
+ - test-granule-search-patterns NISAR RUNW crid filter X05010:
+ params:
+ maxResults: 250
+ dataset: NISAR
+ granule_list: ["NISAR_L1_PR_RUNW*X05010*"]
+ output:
+ expect_results: True
+ expected_properties:
+ processingLevel: RUNW
+ productionConfiguration: "PR"
+ crid: X05010
+
+ - test-granule-search-patterns NISAR RUNW bad crid filter:
+ params:
+ maxResults: 250
+ dataset: NISAR
+ granule_list: ["NISAR_L1_PR_RUNW*Y05010*"]
+ output:
+ expect_results: False
View it on GitLab: https://salsa.debian.org/debian-gis-team/asf-search/-/compare/b1ca093e44023f4fea055f5b909b5fbf80759076...51cb2698b61a965fff616c68282478dc8fc67464
--
View it on GitLab: https://salsa.debian.org/debian-gis-team/asf-search/-/compare/b1ca093e44023f4fea055f5b909b5fbf80759076...51cb2698b61a965fff616c68282478dc8fc67464
You're receiving this email because of your account on salsa.debian.org.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://alioth-lists.debian.net/pipermail/pkg-grass-devel/attachments/20260414/f3ae293d/attachment-0001.htm>
More information about the Pkg-grass-devel
mailing list