예제 #1
0
    def test_get_agent_definition(self):
        loader = IONLoader()
        ooi_loader = OOILoader(None, asset_path='res/preload/r2_ioc/ooi_assets', mapping_path=OOI_MAPPING_DOC)
        loader.ooi_loader = ooi_loader
        loader.ooi_loader.extract_ooi_assets()

        inst_objs = ooi_loader.get_type_assets("instrument")
        node_objs = ooi_loader.get_type_assets("node")
        loader._get_resource_obj = Mock(return_value=IonObject(RT.ExternalDatasetAgent))

        # for ooi_id in sorted(inst_objs):
        #     ooi_rd = OOIReferenceDesignator(ooi_id)
        #     agent_id, agent_obj = loader._get_agent_definition(ooi_rd)
        #     log.info("RD: %s, agent_id: %s", ooi_id, agent_id)

        checks = [
            # Check some mapping override cases
            ("CP01CNSM-MF004-03-DOSTAD999", "DART_DOSTA_D_CSTL"),
            ("CP01CNSM-RI003-05-FLORTD999", "DART_FLORT_D_CSTL"),
            ("CP02PMUO-RI001-01-ADCPSL999", "DART_ADCPS_L_CSTL"),

            # Check some default cases
            ("GA03FLMB-RI001-03-DOSTAD999", "DART_DOSTA_D"),
            ("GA03FLMB-RI001-01-FLORTD999", "DART_FLORT_D"),
            ("GA03FLMB-RI001-04-ADCPSL999", "DART_ADCPS_L"),

            # Check some cases without mapping (using default)
            ("GI05MOAS-GL001-01-FLORDM999", "DART_FLORD_M"),
        ]

        for ooi_id, expected_agent_id in checks:
            ooi_rd = OOIReferenceDesignator(ooi_id)
            agent_id, agent_obj = loader._get_agent_definition(ooi_rd)
            self.assertEquals(agent_id, expected_agent_id)
예제 #2
0
    def test_parse_alert_ranges(self):
        loader = IONLoader()
        out = loader._parse_alert_range('5<temp<10')
        self.assertEqual('<', out['lower_rel_op'])
        self.assertEqual(5, out['lower_bound'])
        self.assertEqual('<', out['upper_rel_op'])
        self.assertEqual(10, out['upper_bound'])
        self.assertEqual('temp', out['value_id'])

        out = loader._parse_alert_range('5<=temp<10')
        self.assertEqual('<=', out['lower_rel_op'])
        self.assertEqual(5, out['lower_bound'])
        self.assertEqual('<', out['upper_rel_op'])
        self.assertEqual(10, out['upper_bound'])
        self.assertEqual('temp', out['value_id'])

        out = loader._parse_alert_range('5<temp<=10')
        self.assertEqual('<', out['lower_rel_op'])
        self.assertEqual(5, out['lower_bound'])
        self.assertEqual('<=', out['upper_rel_op'])
        self.assertEqual(10, out['upper_bound'])
        self.assertEqual('temp', out['value_id'])

        out = loader._parse_alert_range('5<=temp<=10')
        self.assertEqual('<=', out['lower_rel_op'])
        self.assertEqual(5, out['lower_bound'])
        self.assertEqual('<=', out['upper_rel_op'])
        self.assertEqual(10, out['upper_bound'])
        self.assertEqual('temp', out['value_id'])

        out = loader._parse_alert_range('5<temp')
        self.assertEqual('<', out['lower_rel_op'])
        self.assertEqual(5, out['lower_bound'])
        self.assertEqual(3, len(out), msg='value: %r' % out)
        self.assertEqual('temp', out['value_id'])

        out = loader._parse_alert_range('5<=temp')
        self.assertEqual('<=', out['lower_rel_op'])
        self.assertEqual(5, out['lower_bound'])
        self.assertEqual('temp', out['value_id'])
        self.assertEqual(3, len(out))

        out = loader._parse_alert_range('temp<10')
        self.assertEqual('<', out['upper_rel_op'])
        self.assertEqual(10, out['upper_bound'])
        self.assertEqual('temp', out['value_id'])
        self.assertEqual(3, len(out))

        out = loader._parse_alert_range('temp<=10')
        self.assertEqual('<=', out['upper_rel_op'])
        self.assertEqual(10, out['upper_bound'])
        self.assertEqual('temp', out['value_id'])
        self.assertEqual(3, len(out))
예제 #3
0
    def test_parse_alert_ranges(self):
        loader = IONLoader()
        out = loader._parse_alert_range('5<temp<10')
        self.assertEqual('<', out['lower_rel_op'])
        self.assertEqual(5, out['lower_bound'])
        self.assertEqual('<', out['upper_rel_op'])
        self.assertEqual(10, out['upper_bound'])
        self.assertEqual('temp', out['value_id'])

        out = loader._parse_alert_range('5<=temp<10')
        self.assertEqual('<=', out['lower_rel_op'])
        self.assertEqual(5, out['lower_bound'])
        self.assertEqual('<', out['upper_rel_op'])
        self.assertEqual(10, out['upper_bound'])
        self.assertEqual('temp', out['value_id'])

        out = loader._parse_alert_range('5<temp<=10')
        self.assertEqual('<', out['lower_rel_op'])
        self.assertEqual(5, out['lower_bound'])
        self.assertEqual('<=', out['upper_rel_op'])
        self.assertEqual(10, out['upper_bound'])
        self.assertEqual('temp', out['value_id'])

        out = loader._parse_alert_range('5<=temp<=10')
        self.assertEqual('<=', out['lower_rel_op'])
        self.assertEqual(5, out['lower_bound'])
        self.assertEqual('<=', out['upper_rel_op'])
        self.assertEqual(10, out['upper_bound'])
        self.assertEqual('temp', out['value_id'])

        out = loader._parse_alert_range('5<temp')
        self.assertEqual('<', out['lower_rel_op'])
        self.assertEqual(5, out['lower_bound'])
        self.assertEqual(3, len(out), msg='value: %r'%out)
        self.assertEqual('temp', out['value_id'])

        out = loader._parse_alert_range('5<=temp')
        self.assertEqual('<=', out['lower_rel_op'])
        self.assertEqual(5, out['lower_bound'])
        self.assertEqual('temp', out['value_id'])
        self.assertEqual(3, len(out))

        out = loader._parse_alert_range('temp<10')
        self.assertEqual('<', out['upper_rel_op'])
        self.assertEqual(10, out['upper_bound'])
        self.assertEqual('temp', out['value_id'])
        self.assertEqual(3, len(out))

        out = loader._parse_alert_range('temp<=10')
        self.assertEqual('<=', out['upper_rel_op'])
        self.assertEqual(10, out['upper_bound'])
        self.assertEqual('temp', out['value_id'])
        self.assertEqual(3, len(out))
예제 #4
0
파일: preloader.py 프로젝트: ooici/ape
    def __init__(self, config, process, container):
        self.config = config
        self.loader = IONLoader()
        self.loader.categories = DEFAULT_CATEGORIES
        self.loader.excludecategories = []
        self.loader.debug = (
            self.loader.loadooi
        ) = (
            self.loader.loadui
        ) = (
            self.loader.exportui
        ) = self.loader.update = self.loader.bulk = self.loader.idmap = self.loader.clearcols = False
        self.loader.row_count = 0
        self.loader.container = container
        self.loader.rpc_sender = process
        self.loader.CFG = process.CFG

        #        self.loader.obj_classes = {}     # Cache of class for object types
        #        self.loader.resource_ids = {}    # Holds a mapping of preload IDs to internal resource ids
        #        self.loader.resource_objs = {}   # Holds a mapping of preload IDs to the actual resource objects
        #        self.loader.existing_resources = None
        #        self.loader.unknown_fields = {} # track unknown fields so we only warn once
        #        self.loader.constraint_defs = {} # alias -> value for refs, since not stored in DB
        #        self.loader.contact_defs = {} # alias -> value for refs, since not stored in DB
        #        self.loader.stream_config = {} # name -> obj for StreamConfiguration objects, used by *AgentInstance

        self.success = False
예제 #5
0
파일: preloader.py 프로젝트: ooici/ape
class _PreloadBaseTask(object):
    def __init__(self, config, process, container):
        self.config = config
        self.loader = IONLoader()
        self.loader.categories = DEFAULT_CATEGORIES
        self.loader.excludecategories = []
        self.loader.debug = (
            self.loader.loadooi
        ) = (
            self.loader.loadui
        ) = (
            self.loader.exportui
        ) = self.loader.update = self.loader.bulk = self.loader.idmap = self.loader.clearcols = False
        self.loader.row_count = 0
        self.loader.container = container
        self.loader.rpc_sender = process
        self.loader.CFG = process.CFG

        #        self.loader.obj_classes = {}     # Cache of class for object types
        #        self.loader.resource_ids = {}    # Holds a mapping of preload IDs to internal resource ids
        #        self.loader.resource_objs = {}   # Holds a mapping of preload IDs to the actual resource objects
        #        self.loader.existing_resources = None
        #        self.loader.unknown_fields = {} # track unknown fields so we only warn once
        #        self.loader.constraint_defs = {} # alias -> value for refs, since not stored in DB
        #        self.loader.contact_defs = {} # alias -> value for refs, since not stored in DB
        #        self.loader.stream_config = {} # name -> obj for StreamConfiguration objects, used by *AgentInstance

        self.success = False

    def run(self):
        # try:
        #    self.prepare_loader()
        # except:
        #    log.error('preload component failed to initialize', exc_info=True)
        #    return
        try:
            self.perform_preload()
            self.success = True
        except:
            log.error("preload component failed to load rows", exc_info=True)
            return

    def prepare_loader(self):
        if not self.loader.resource_ids:
            self.loader._load_system_ids()
            self.loader._prepare_incremental()
예제 #6
0
    def test_get_agent_definition(self):
        loader = IONLoader()
        ooi_loader = OOILoader(None,
                               asset_path='res/preload/r2_ioc/ooi_assets',
                               mapping_path=OOI_MAPPING_DOC)
        loader.ooi_loader = ooi_loader
        loader.ooi_loader.extract_ooi_assets()

        inst_objs = ooi_loader.get_type_assets("instrument")
        node_objs = ooi_loader.get_type_assets("node")
        loader._get_resource_obj = Mock(
            return_value=IonObject(RT.ExternalDatasetAgent))

        # for ooi_id in sorted(inst_objs):
        #     ooi_rd = OOIReferenceDesignator(ooi_id)
        #     agent_id, agent_obj = loader._get_agent_definition(ooi_rd)
        #     log.info("RD: %s, agent_id: %s", ooi_id, agent_id)

        checks = [
            # Check some mapping override cases
            ("CP01CNSM-MF004-03-DOSTAD999", "DART_DOSTA_D_CSTL"),
            ("CP01CNSM-RI003-05-FLORTD999", "DART_FLORT_D_CSTL"),
            ("CP02PMUO-RI001-01-ADCPSL999", "DART_ADCPS_L_CSTL"),

            # Check some default cases
            ("GA03FLMB-RI001-03-DOSTAD999", "DART_DOSTA_D"),
            ("GA03FLMB-RI001-01-FLORTD999", "DART_FLORT_D"),
            ("GA03FLMB-RI001-04-ADCPSL999", "DART_ADCPS_L"),

            # Check some cases without mapping (using default)
            ("GI05MOAS-GL001-01-FLORDM999", "DART_FLORD_M"),
        ]

        for ooi_id, expected_agent_id in checks:
            ooi_rd = OOIReferenceDesignator(ooi_id)
            agent_id, agent_obj = loader._get_agent_definition(ooi_rd)
            self.assertEquals(agent_id, expected_agent_id)