def test_list_ingested(self, mock_aws): conf = read_conf('example-config.json') ingester = Ingester(conf) self.assertIsNotNone(ingester) # 200 with empty [] should be OK with patch('requests.get', return_value=Mock(status_code=200)) as mock_get: mock_get.return_value.json.return_value = [] empty = ingester.list_ingested() self.assertIsInstance(empty, list) self.assertEqual(len(empty), 0) # 404 with empty body should be OK with patch('requests.get', return_value=Mock(status_code=404)) as mock_get: mock_get.return_value.json.return_value = '' empty = ingester.list_ingested() self.assertIsInstance(empty, list) self.assertEqual(len(empty), 0) with patch('requests.get', return_value=Mock(status_code=500)) as mock_get: mock_get.return_value.json.return_value = '' with self.assertRaises(OSError) as cm: empty = ingester.list_ingested() self.assertEqual(str(cm.exception), 'HTTP 500') with patch('requests.get', return_value=Mock(status_code=200)) as mock_get: mock_get.return_value.json.return_value = [{'name': 'one'}, {'name': 'two'}] result = ingester.list_ingested() self.assertIsInstance(result, list) self.assertEqual(len(result), 2)
def parse_command(description='Ingest records from HCP to Database through API server'): parser = ArgumentParser(description=description) parser.add_argument('name', help='Path to the json.xz file to be ingested') parser.add_argument('-t', '--tracker', default='', help='A string, commonly name of an object in store') parser.add_argument('--conf', default='debugger_api_conf.json', help='Path to config.json. Default = debugger_api_conf.json') args = parser.parse_args() if args.tracker: return args.name, args.tracker, args.conf else: return args.name, args.name, args.conf if __name__ == "__main__": #logging.basicConfig(format='%(levelname)s:%(message)s', level=logging.DEBUG) logging.basicConfig(format='%(levelname)s:%(message)s') # It only needs DB_API of a normal conf file: API end point, secret and optional schema # But currently Ingester is not flexible for it. try: file_name, tracker, conf_file = parse_command('Ingest records from HCP to Database through API server') except Exception as e: logging.error(e) sys.exit(2) logging.debug("Ingesting %s tracked as %s with connection conf in %s" % (file_name, tracker, conf_file)) conf = read_conf(conf_file) ingester = Ingester(conf) #logging.debug(ingester.check_input(tracker)) ingester.put_local_xz(file_name, tracker, True)