예제 #1
0
    def setUp(self):
        self.process = DWHVariableDefinitionsExportProcess()
        self.process_cfg = ProcessConfiguration()
        self.process_cfg.load_dict({
            ProcessConfiguration.Props.SITE_CODE: 'unit-test',
            ProcessConfiguration.Props.REPORT_TO: '*****@*****.**',
            ProcessConfiguration.Props.SERVER: {
                ProcessConfiguration.Props.HOST: 'unittest',
                ProcessConfiguration.Props.AUTH: {
                    ProcessConfiguration.Props.LOGIN: '******',
                    ProcessConfiguration.Props.PASSWORD: '******'
                }
            }
        })
        # avoid cluttering unit tests report with logging
        self.process.logger.setLevel(logging.ERROR)

        # monkey patch requests module
        requests.post = self.mock_post
예제 #2
0
class TestProcess01(unittest.TestCase):
    devcfg_name = 'device_config_01.json'
    enabled_outputs_cnt = 7

    class MockResponse(object):
        ok = None
        message = None

    def mock_post(self, url, data=None, **kwargs):
        data.seek(0)

        tmp = tempfile.NamedTemporaryFile(suffix='.json', delete=False)
        tmp.write(data.read())
        tmp.close()
        self.tmp = tmp

        resp = self.MockResponse()
        resp.ok = True
        resp.text = json.dumps({'message': 'OK'})

        return resp

    @classmethod
    def setUpClass(cls):
        devcfg.METADATA_HOME = fixture_path('devcfg.d')
        cls.dev_cfg = DeviceNetworkConfiguration(fixture_path(cls.devcfg_name), autoload=True)
        cls.vars_meta = json.load(file(fixture_path('vars_metadata.json')))

    def setUp(self):
        self.process = DWHVariableDefinitionsExportProcess()
        self.process_cfg = ProcessConfiguration()
        self.process_cfg.load_dict({
            ProcessConfiguration.Props.SITE_CODE: 'unit-test',
            ProcessConfiguration.Props.REPORT_TO: '*****@*****.**',
            ProcessConfiguration.Props.SERVER: {
                ProcessConfiguration.Props.HOST: 'unittest',
                ProcessConfiguration.Props.AUTH: {
                    ProcessConfiguration.Props.LOGIN: '******',
                    ProcessConfiguration.Props.PASSWORD: '******'
                }
            }
        })
        # avoid cluttering unit tests report with logging
        self.process.logger.setLevel(logging.ERROR)

        # monkey patch requests module
        requests.post = self.mock_post

    def test_01(self):
        rc = self.process.run(self.process_cfg, self.dev_cfg, self.vars_meta)
        self.assertEqual(rc, 0)

        try:
            with file(self.tmp.name) as fp:
                defs = json.load(fp)

            self.assertEqual(len(defs), self.enabled_outputs_cnt)
            d = dict([
                (entry['varname'], entry) for entry in defs
            ])
            for v in self.vars_meta:
                self.assertIn(v, d)

        finally:
            os.remove(self.tmp.name)
예제 #3
0
    pycstbox.log.set_loglevel_from_args(log, args)

    log.info('loading process configuration')
    process_cfg = ProcessConfiguration()

    # Loads the configuration parameters
    try:
        process_cfg.load(pycstbox.config.make_config_file_path(CONFIG_FILE_NAME))

    except ConfigParser.Error as e:
        log.fatal('configuration error (%s)', e)
        sys.exit(1)

    else:
        log.info('initializing export process')
        process = DWHVariableDefinitionsExportProcess()
        process.log_setLevel_from_args(args)

        try:
            devices_cfg = pycstbox.devcfg.DeviceNetworkConfiguration(autoload=True)
            vars_metadata = json.load(file(pycstbox.config.make_config_file_path(VARS_METATDATA_FILE_NAME)))

            error = process.run(process_cfg, devices_cfg, vars_metadata)

        except Exception as e:      #pylint: disable=W0703
            log.exception(e)
            log.fatal('process failed')
            sys.exit(1)

        else:
            if error: