def _assert_doc_citations(doc, is_update): """Assert citations.""" tu.assert_int(doc.citations, 2) c = doc.citations[0] tu.assert_str(c.collective_title, "Bellouin N., O. Boucher", True) tu.assert_str(c.location, "http://www.metoffice.gov.uk/publications/HCTN/HCTN_73.pdf") tu.assert_str(c.title, "Bellouin et al. 2007") tu.assert_str(c.type, "Online Other")
def _assert_doc_tile(doc, is_update): """Assert tile information.""" g = doc.esm_model_grids[0] tu.assert_int(g.tile_count, 1) tu.assert_iter(g.tiles, 1, cim.v1.GridTile) tu.assert_object(g.tiles[0], cim.v1.GridTile) t = g.tiles[0] tu.assert_str(t.description, "Horizontal properties: The N96", True) tu.assert_str(t.discretization_type, "logically_rectangular") tu.assert_str(t.mnemonic, "N96")
def _assert_doc_core(doc, is_update): """Assert core information.""" tu.assert_str(doc.description, "The HadGEM2-A model", True) if not is_update: tu.assert_str(doc.long_name, "Hadley Global Environment Model 2 - Atmosphere") tu.assert_date(doc.release_date, "2009") tu.assert_str(doc.short_name, "HadGEM2-A") tu.assert_str(doc.type, "model") tu.assert_int(doc.types, 2) tu.assert_str(doc.types[1], "model")
def _test(mod, doc, encoding): """Perform encoding specific serialization tests.""" # Encode/decode and re-assert document. as_repr = tu.encode(doc, encoding) as_doc_1 = tu.decode(as_repr, encoding) tu.assert_doc(mod, as_doc_1) # Re-encode and assert encodings. as_repr_1 = tu.encode(as_doc_1, encoding) tu.assert_int(len(as_repr), len(as_repr_1)) tu.assert_str(as_repr, as_repr_1)
def assert_extension_info(ext): """Asserts a document's extension information. :param object ext: Document extension information. """ tu.assert_str(ext.display_name, "IBM Power 6_Other") tu.assert_str(ext.description, "Machine IBM Power 6", True) tu.assert_str(ext.full_display_name, "CMIP5 Platform : MOHC - IBM Power 6_Other") tu.assert_int(ext.summary_fields, 2) tu.assert_str(ext.summary_fields[0], "IBM Power 6_Other") tu.assert_str(ext.summary_fields[1], "Machine IBM Power 6", True)
def assert_extension_info(ext): """Asserts a document's extension information. :param object ext: Document extension information. """ tu.assert_str(ext.display_name, "amip") tu.assert_str(ext.description, "AMIP (1979 - at least 2008)", True) tu.assert_str(ext.full_display_name, "CMIP5 Experiment : MOHC - amip") tu.assert_int(ext.summary_fields, 2) tu.assert_str(ext.summary_fields[0], "amip") tu.assert_str(ext.summary_fields[1], "AMIP")
def assert_extension_info(ext): """Asserts a document's extension information. :param object ext: Document extension information. """ tu.assert_str(ext.display_name, u"amip") tu.assert_str(ext.description, u"Six element ensemble", True) tu.assert_str(ext.full_display_name, u"CMIP5 Ensemble : MOHC - amip") tu.assert_int(ext.summary_fields, 2) tu.assert_str(ext.summary_fields[0], u"amip") tu.assert_str(ext.summary_fields[1], u"3.3 AMIP and AMIP Ensemble")
def assert_extension_info(ext): """Asserts a document's extension information. :param object ext: Document extension information. """ tu.assert_str(ext.display_name, "HadGEM2-A") tu.assert_str(ext.description, "The HadGEM2-A model", True) tu.assert_str(ext.full_display_name, "CMIP5 Model : MOHC - HadGEM2-A") tu.assert_int(ext.summary_fields, 2) tu.assert_str(ext.summary_fields[0], "HadGEM2-A") tu.assert_str(ext.summary_fields[1], "Hadley Global Environment Model 2 - Atmosphere")
def assert_extension_info(ext): """Asserts a document's extension information. :param object ext: Document extension information. """ tu.assert_str(ext.display_name, "UM N96L38 ATM Grid System") tu.assert_str(ext.description, "Met Office Unified Model", True) tu.assert_str(ext.full_display_name, "CMIP5 Grid Spec : MOHC - UM N96L38 ATM Grid System") tu.assert_int(ext.summary_fields, 2) tu.assert_str(ext.summary_fields[0], "UM N96L38 ATM Grid System") tu.assert_str(ext.summary_fields[1], "Met Office Unified Model", True)
def assert_extension_info(ext): """Asserts a document's extension information. :param object ext: Document extension information. """ tu.assert_str(ext.display_name, "amip") tu.assert_str(ext.description, "Main amip ensemble simulations", True) tu.assert_str(ext.full_display_name, "CMIP5 Simulation : MOHC - amip") tu.assert_int(ext.summary_fields, 2) tu.assert_str(ext.summary_fields[0], "amip") tu.assert_str(ext.summary_fields[1], "3.3 AMIP and AMIP Ensemble", True)
def assert_extension_info(ext): """Asserts a document's extension information. :param object ext: Document extension information. """ tu.assert_str(ext.display_name, "CMIP5 Quality Control Data Level 2") tu.assert_str(ext.description, "CMIP5 Quality Control", True) tu.assert_str(ext.full_display_name, "CMIP5 QC Record : MOHC - CMIP5 Quality Control Data Level 2") tu.assert_str(ext.type_display_name, "QC Record") tu.assert_int(ext.summary_fields, 1) tu.assert_str(ext.summary_fields[0], "cmip5.output1.", True)
def assert_extension_info(ext): """Asserts a document's extension information. :param object ext: Document extension information. """ tu.assert_str(ext.display_name, "fossil_fuel_organic_carbon") tu.assert_str(ext.description, "2D gridded monthly-mean", True) tu.assert_str(ext.full_display_name, "CMIP5 Data Object : MOHC - fossil_fuel_organic_carbon") tu.assert_int(ext.summary_fields, 2) tu.assert_str(ext.summary_fields[0], "fossil_fuel_organic_carbon") tu.assert_str(ext.summary_fields[1], "2D gridded monthly-mean", True)
def _assert_doc_deployments(doc, is_update): """Assert simulation deployments.""" tu.assert_iter(doc.deployments, 1, cim.v1.Deployment) dep = doc.deployments[0] tu.assert_str(dep.description, "The resources(deployment) on which", True) tu.assert_object(dep.platform_reference, cim.v1.DocReference) ref = dep.platform_reference tu.assert_str(ref.description, "Reference to a platform", True) tu.assert_uuid(ref.id, "b765775a-e2ac-11df-9efb-00163e9152a5") tu.assert_str(ref.name, "IBM Power 6") tu.assert_str(ref.type, "platform") tu.assert_int(ref.version, 1)
def assert_extension_info(ext): """Asserts a document's extension information. :param object ext: Document extension information. """ tu.assert_str(ext.display_name, "amip") tu.assert_str(ext.description, "Main amip ensemble simulations", True) tu.assert_str(ext.full_display_name, "CMIP5 Simulation : MOHC - amip") tu.assert_str(ext.type_display_name, "Simulation") tu.assert_int(ext.summary_fields, 2) tu.assert_str(ext.summary_fields[0], "amip") tu.assert_str(ext.summary_fields[1], "3.3 AMIP and AMIP Ensemble", True)
def assert_extension_info(ext): """Asserts a document's extension information. :param object ext: Document extension information. """ tu.assert_str(ext.display_name, "fossil_fuel_organic_carbon") tu.assert_str(ext.description, "2D gridded monthly-mean", True) tu.assert_str(ext.full_display_name, "CMIP5 Data Object : MOHC - fossil_fuel_organic_carbon") tu.assert_str(ext.type_display_name, "Data Object") tu.assert_int(ext.summary_fields, 2) tu.assert_str(ext.summary_fields[0], "fossil_fuel_organic_carbon") tu.assert_str(ext.summary_fields[1], "2D gridded monthly-mean", True)
def assert_extension_info(ext): """Asserts a document's extension information. :param object ext: Document extension information. """ tu.assert_str(ext.display_name, "amip") tu.assert_str(ext.description, "AMIP (1979 - at least 2008)", True) tu.assert_str(ext.full_display_name, "CMIP5 Experiment : MOHC - amip") tu.assert_str(ext.type_display_name, "Experiment") tu.assert_int(ext.summary_fields, 2) tu.assert_str(ext.summary_fields[0], "amip") tu.assert_str(ext.summary_fields[1], "AMIP")
def _assert_doc_machine(doc, is_update): """Assert machine information.""" tu.assert_object(doc.units[0].machine, cim.v1.Machine) m = doc.units[0].machine tu.assert_int(m.cores_per_processor, 32) tu.assert_str(m.interconnect, "Infiniband") tu.assert_str(m.name, "IBM Power 6") tu.assert_iter(m.libraries, 0) tu.assert_int(m.maximum_processors, 2) tu.assert_str(m.operating_system, "AIX") tu.assert_str(m.system, "Parallel") tu.assert_str(m.vendor, "IBM") tu.assert_str(m.processor_type, "Other")
def _assert_doc_responsible_parties(doc, is_update): """Assert responsible parties.""" tu.assert_int(doc.responsible_parties, 4) rp = doc.responsible_parties[0] tu.assert_str(rp.abbreviation, "Chris Jones") tu.assert_str(rp.contact_info.address, "Met Office Hadley Centre", True) tu.assert_str(rp.contact_info.email, "*****@*****.**") tu.assert_str(rp.contact_info.url, r"http://www.metoffice.gov.uk/research/our-scientists/climate-chemistry-ecosystems/chris-jones", True) tu.assert_str(rp.individual_name, "Chris Jones") tu.assert_str(rp.role, "PI") rp = doc.responsible_parties[1] tu.assert_str(rp.organisation_name, "UK Met Office Hadley Centre")
def assert_extension_info(ext): """Asserts a document's extension information. :param object ext: Document extension information. """ tu.assert_str(ext.display_name, "UM N96L38 ATM Grid System") tu.assert_str(ext.description, "Met Office Unified Model", True) tu.assert_str(ext.full_display_name, "CMIP5 Grid Spec : MOHC - UM N96L38 ATM Grid System") tu.assert_str(ext.type_display_name, "Grid Spec") tu.assert_int(ext.summary_fields, 2) tu.assert_str(ext.summary_fields[0], "UM N96L38 ATM Grid System") tu.assert_str(ext.summary_fields[1], "Met Office Unified Model", True)
def assert_extension_info(ext): """Asserts a document's extension information. :param object ext: Document extension information. """ tu.assert_str(ext.display_name, "IBM Power 6_Other") tu.assert_str(ext.description, "Machine IBM Power 6", True) tu.assert_str(ext.full_display_name, "CMIP5 Platform : MOHC - IBM Power 6_Other") tu.assert_str(ext.type_display_name, "Platform") tu.assert_int(ext.summary_fields, 2) tu.assert_str(ext.summary_fields[0], "IBM Power 6_Other") tu.assert_str(ext.summary_fields[1], "Machine IBM Power 6", True)
def assert_extension_info(ext): """Asserts a document's extension information. :param object ext: Document extension information. """ tu.assert_str(ext.display_name, "HadGEM2-A") tu.assert_str(ext.description, "The HadGEM2-A model", True) tu.assert_str(ext.full_display_name, "CMIP5 Model : MOHC - HadGEM2-A") tu.assert_str(ext.type_display_name, "Model") tu.assert_int(ext.summary_fields, 2) tu.assert_str(ext.summary_fields[0], "HadGEM2-A") tu.assert_str(ext.summary_fields[1], "Hadley Global Environment Model 2 - Atmosphere")
def _assert_doc_extent(doc, is_update): """Assert extent information.""" tu.assert_object(doc.extent, cim.v1.DataExtent) e = doc.extent tu.assert_object(e.geographical, cim.v1.DataExtentGeographical) tu.assert_float(e.geographical.east, 360.0) tu.assert_float(e.geographical.north, 90.0) tu.assert_float(e.geographical.south, -90.0) tu.assert_object(e.temporal, cim.v1.DataExtentTemporal) tu.assert_date(e.temporal.begin, "1859-12-01 00:00:00") tu.assert_date(e.temporal.end, "1999-12-30 00:00:00") tu.assert_object(e.temporal.time_interval, cim.v1.DataExtentTimeInterval) ti = e.temporal.time_interval tu.assert_int(ti.factor, -1) tu.assert_int(ti.radix, 50430) tu.assert_str(ti.unit, "day")
def _assert_doc_tile_extent(doc, is_update): """Assert tile extent information.""" t = doc.esm_model_grids[0].tiles[0] tu.assert_object(t.extent, cim.v1.GridExtent) e = t.extent tu.assert_int(e.maximum_latitude, 90) tu.assert_int(e.minimum_latitude, -90) tu.assert_int(e.minimum_longitude, 0) tu.assert_int(e.maximum_longitude, 360, int)
def _assert_doc_responsible_parties(doc, is_update): """Assert responsible parties.""" tu.assert_int(doc.responsible_parties, 4) rp = doc.responsible_parties[0] tu.assert_str(rp.abbreviation, "Chris Jones") tu.assert_str(rp.contact_info.address, "Met Office Hadley Centre", True) tu.assert_str(rp.contact_info.email, "*****@*****.**") tu.assert_str( rp.contact_info.url, r"http://www.metoffice.gov.uk/research/our-scientists/climate-chemistry-ecosystems/chris-jones", True) tu.assert_str(rp.individual_name, "Chris Jones") tu.assert_str(rp.role, "PI") rp = doc.responsible_parties[1] tu.assert_str(rp.organisation_name, "UK Met Office Hadley Centre")
def _assert_doc_conformances(doc, is_update): """Assert simulation conformances.""" tu.assert_iter(doc.conformances, 13, cim.v1.Conformance) c = doc.conformances[0] tu.assert_str(c.type, "standard config") tu.assert_iter(c.requirements_references, 1, cim.v1.DocReference) ref = c.requirements_references[0] tu.assert_str(ref.description, "Reference to a NumericalRequirement", True) tu.assert_uuid(ref.id, "9fa513fc-d3a5-11df-837f-00163e9152a5") tu.assert_str(ref.name, "ic.003") tu.assert_str(ref.type, "NumericalRequirement") tu.assert_int(ref.version, 1) c = doc.conformances[7] tu.assert_str(c.description, "Prescribed land use", True) tu.assert_bool(c.is_conformant, True) tu.assert_str(c.type, "via inputs")
def _test(mod, doc, encoding): """Perform encoding specific serialization tests.""" # Encode/decode and re-assert document. as_repr = tu.encode(doc, encoding) as_doc_1 = tu.decode(as_repr, encoding) tu.assert_doc(mod, as_doc_1) # Re-encode. as_repr_1 = tu.encode(as_doc_1, encoding) # TODO - explore why sometimes XML encoding is problematic # although all good when reencoding to json. if len(as_repr) != len(as_repr_1) and encoding == 'xml': as_repr = tu.encode(tu.decode(as_repr, encoding), 'json') as_repr_1 = tu.encode(tu.decode(as_repr_1, encoding), 'json') # Verify encoding equivalence. tu.assert_int(len(as_repr), len(as_repr_1), msg=str(type(doc))) tu.assert_str(as_repr, as_repr_1)
def _assert_doc_references(doc, is_update): """Assert simulation references.""" # Model reference. tu.assert_object(doc.model_reference, cim.v1.DocReference) ref = doc.model_reference tu.assert_str(ref.description, "Reference to a modelComponent", True) tu.assert_uuid(ref.id, "7a2b64cc-03ca-11e1-a36a-00163e9152a5") tu.assert_str(ref.name, "HadGEM2-A") tu.assert_str(ref.type, "modelComponent") tu.assert_int(ref.version, 1) # Experiment reference. tu.assert_iter(doc.supports_references, 1, cim.v1.DocReference) ref = doc.supports_references[0] tu.assert_str(ref.description, "Reference to an Experiment", True) tu.assert_uuid(ref.id, "9fa513fc-d3a5-11df-837f-00163e9152a5") tu.assert_str(ref.name, "amip") tu.assert_str(ref.type, "experiment") tu.assert_int(ref.version, 1)
def _test_list_types(): """Test listing supported types.""" # supported - all types = pyesdoc.list_types() tu.assert_int(len(types), 103) # supported - cim v1 types = pyesdoc.list_types(_CIM, _CIM_V1) tu.assert_int(len(types), 103) # unsupported types = pyesdoc.list_types('x', 'x') tu.assert_int(len(types), 0)
def _test_archive_config(): """Test archive configuration.""" import pyesdoc.archive.config as cfg tu.assert_path(cfg.get_directory()) tu.assert_int(cfg.get_projects(), 6) tu.assert_int(cfg.get_sources(), 4) tu.assert_int(cfg.get_projects()[0].feeds, 2) tu.assert_int(cfg.get_projects()[1].feeds, 1) tu.assert_int(cfg.get_projects()[2].feeds, 1) tu.assert_int(cfg.get_projects()[3].feeds, 1) tu.assert_int(cfg.get_projects()[4].feeds, 1) tu.assert_int(cfg.get_project_sources(), 7)
def _test_archive_get_counts(): """Test archive document counts.""" tu.assert_int(pyesdoc.archive.get_count(), 37019, assert_type=tu.COMPARE_LTE)
def _assert_doc_sub_components(doc, is_update): """Assert sub-components.""" tu.assert_int(doc.sub_components, 4) sc = doc.sub_components[0] tu.assert_int(sc.citations, 1) tu.assert_str(sc.description, "The model includes interactive schemes", True) tu.assert_uuid(sc.meta.id, "7a44cb24-03ca-11e1-a36a-00163e9152a5") tu.assert_int(sc.meta.version, 1) tu.assert_date(sc.meta.create_date, "2012-04-23 14:59:04.757315") tu.assert_str(sc.long_name, "Aerosols") tu.assert_int(sc.properties, 4) tu.assert_int(sc.responsible_parties, 4) tu.assert_int(sc.sub_components, 3) tu.assert_str(sc.short_name, "Aerosols") tu.assert_str(sc.type, "Aerosols") tu.assert_int(sc.types, 3) # Property. p = sc.properties[0] tu.assert_bool(p.is_represented, True) tu.assert_str(p.long_name, "Aerosols") tu.assert_str(p.short_name, "Aerosol Key Properties") tu.assert_int(p.sub_properties, 6) p = sc.properties[2] tu.assert_int(p.standard_names, 1) tu.assert_str(p.standard_names[0], "tendency_of_atmosphere", True) tu.assert_str(p.units, "kg/m2/s") # Sub-property. p = sc.properties[0].sub_properties[0] tu.assert_str(p.short_name, "AerosolSchemeScope") tu.assert_str(p.long_name, "AerosolSchemeScope") tu.assert_int(p.values, 1) tu.assert_str(p.values[0], "Whole atmosphere")