def testCfgValuesFromNamedSection(self): cfg_parser = SafeConfigParser() cfg_parser.set('DEFAULT', 'host', 'myhost') cfg_parser.set('DEFAULT', 'bucket', 'mybucket') cfg_parser.set('DEFAULT', 'password', 'mypassword') cfg_parser.set('DEFAULT', 'cfg_docid', 'mycfg_docid') cfg_parser.add_section('pdc') cfg_parser.set('pdc', 'host', 'pdchost') cfg_parser.set('pdc', 'bucket', 'pdcbucket') cfg_parser.set('pdc', 'password', 'pdcpassword') cfg_parser.set('pdc', 'cfg_docid', 'pdccfg_docid') _, cfg_file = tempfile.mkstemp() with open(cfg_file, 'w') as fp: cfg_parser.write(fp) params = util.read_cb_cfg('pdc', '', cfg_path=cfg_file) os.remove(cfg_file) self.assertEqual('pdchost', params['host']) self.assertEqual('pdcbucket', params['bucket']) self.assertEqual('pdcpassword', params['password']) self.assertEqual('pdccfg_docid', params['cfg_docid'])
def run(self): self.logger = self._setup_logger(self.service_name) self.logger.info('starting') try: cb_cfg = util.read_cb_cfg(self.service_name, self.default_cfg_docid) self.logger.info('read Couchbase configuration: %(host)s, %(bucket)s' % cb_cfg) except Exception as e: self.logger.error('error reading Couchbase configuration: %s' % e) return 1 try: self.cb = util.init_cb_client(cb_cfg) self.logger.info('created Couchbase client') except Exception as e: self.logger.error('error creating Couchbase client: %s' % e) return 1 self.logger.info('finished initialization') try: while True: time.sleep(self.pause) try: self.cfg = util.get_service_cfg(self.cb, cb_cfg['cfg_docid']) except Exception as e: self.logger.error('error reading service configuration: %s' % e) continue try: self._validate_service_cfg(self.cfg) util.heartbeat(self.cb, self.heartbeat_docid) except Exception as e: msg = 'service configuration error: %s' % e util.heartbeat(self.cb, self.heartbeat_docid, status='ERROR', message=msg) self.logger.error(msg) continue for job in self._jobs(): job_id = self._job_id(job) self.logger.info('evaluating %s' % job_id) if self._claim(job): self.logger.info('claimed %s' % job_id) self._execute(job) except SystemExit: util.heartbeat(self.cb, self.heartbeat_docid, status='STOPPED', message='normal shutdown') self.logger.info('terminated') except Exception as e: util.heartbeat(self.cb, self.heartbeat_docid, status='ERROR', message=str(e)) self.logger.error('unexpected exception: %s' % traceback.format_exc())
def testDefaultsFromEmptyCfg(self): _, cfg_file = tempfile.mkstemp() params = util.read_cb_cfg('pdc', '', cfg_path=cfg_file) os.remove(cfg_file) self.assertEqual('localhost', params['host']) self.assertEqual('default', params['bucket']) self.assertEqual('', params['password']) self.assertEqual('', params['cfg_docid'])