def test_basic_hbase_crashstorage(self): mock_logging = mock.Mock() required_config = HBaseCrashStorage.required_config required_config.add_option('logger', default=mock_logging) config_manager = ConfigurationManager( [required_config], app_name='testapp', app_version='1.0', app_description='app description', values_source_list=[{ 'logger': mock_logging, 'hbase_timeout': 100, 'hbase_host': commonconfig.hbaseHost.default, 'hbase_port': commonconfig.hbasePort.default, }] ) with config_manager.context() as config: crashstorage = HBaseCrashStorage(config) self.assertEqual(list(crashstorage.new_crashes()), []) crash_id = '86b58ff2-9708-487d-bfc4-9dac32121214' raw = ('{"name":"Peter", ' '"submitted_timestamp":"%d"}' % time.time()) fake_raw_dump_1 = 'peter is a swede' fake_raw_dump_2 = 'lars is a norseman' fake_raw_dump_3 = 'adrian is a frenchman' fake_dumps = {'upload_file_minidump': fake_raw_dump_1, 'lars': fake_raw_dump_2, 'adrian': fake_raw_dump_3} crashstorage.save_raw_crash(json.loads(raw), fake_dumps, crash_id) assert config.logger.info.called assert config.logger.info.call_count > 1 msg_tmpl, msg_arg = config.logger.info.call_args_list[1][0] # ie logging.info(<template>, <arg>) msg = msg_tmpl % msg_arg self.assertTrue('saved' in msg) self.assertTrue(crash_id in msg) raw_crash = crashstorage.get_raw_crash(crash_id) assert isinstance(raw_crash, dict) self.assertEqual(raw_crash['name'], 'Peter') dump = crashstorage.get_raw_dump(crash_id) assert isinstance(dump, basestring) self.assertTrue('peter is a swede' in dump) dumps = crashstorage.get_raw_dumps(crash_id) assert isinstance(dumps, dict) self.assertTrue('upload_file_minidump' in dumps) self.assertTrue('lars' in dumps) self.assertTrue('adrian' in dumps) self.assertEqual(dumps['upload_file_minidump'], fake_dumps['upload_file_minidump']) self.assertEqual(dumps['lars'], fake_dumps['lars']) self.assertEqual(dumps['adrian'], fake_dumps['adrian']) # hasn't been processed yet self.assertRaises(CrashIDNotFound, crashstorage.get_processed, crash_id) pro = ('{"name":"Peter",' '"uuid":"86b58ff2-9708-487d-bfc4-9dac32121214", ' '"submitted_timestamp":"%d", ' '"completeddatetime": "%d"}' % (time.time(), time.time())) crashstorage.save_processed(json.loads(pro)) data = crashstorage.get_processed(crash_id) self.assertEqual(data['name'], u'Peter') hb_connection = crashstorage.hbaseConnectionPool.connection() self.assertTrue(hb_connection.transport.isOpen()) crashstorage.close() self.assertFalse(hb_connection.transport.isOpen())
def test_basic_hbase_crashstorage(self): mock_logging = mock.Mock() required_config = HBaseCrashStorage.required_config required_config.add_option('logger', default=mock_logging) config_manager = ConfigurationManager( [required_config], app_name='testapp', app_version='1.0', app_description='app description', values_source_list=[{ 'logger': mock_logging, 'hbase_timeout': 100, 'hbase_host': commonconfig.hbaseHost.default, 'hbase_port': commonconfig.hbasePort.default, }]) with config_manager.context() as config: crashstorage = HBaseCrashStorage(config) self.assertEqual(list(crashstorage.new_crashes()), []) crash_id = '86b58ff2-9708-487d-bfc4-9dac32121214' raw = ('{"name":"Peter", ' '"submitted_timestamp":"%d"}' % time.time()) fake_raw_dump_1 = 'peter is a swede' fake_raw_dump_2 = 'lars is a norseman' fake_raw_dump_3 = 'adrian is a frenchman' fake_dumps = { 'upload_file_minidump': fake_raw_dump_1, 'lars': fake_raw_dump_2, 'adrian': fake_raw_dump_3 } crashstorage.save_raw_crash(json.loads(raw), fake_dumps, crash_id) assert config.logger.info.called assert config.logger.info.call_count > 1 msg_tmpl, msg_arg = config.logger.info.call_args_list[1][0] # ie logging.info(<template>, <arg>) msg = msg_tmpl % msg_arg self.assertTrue('saved' in msg) self.assertTrue(crash_id in msg) raw_crash = crashstorage.get_raw_crash(crash_id) assert isinstance(raw_crash, dict) self.assertEqual(raw_crash['name'], 'Peter') dump = crashstorage.get_raw_dump(crash_id) assert isinstance(dump, basestring) self.assertTrue('peter is a swede' in dump) dumps = crashstorage.get_raw_dumps(crash_id) assert isinstance(dumps, dict) self.assertTrue('upload_file_minidump' in dumps) self.assertTrue('lars' in dumps) self.assertTrue('adrian' in dumps) self.assertEqual(dumps['upload_file_minidump'], fake_dumps['upload_file_minidump']) self.assertEqual(dumps['lars'], fake_dumps['lars']) self.assertEqual(dumps['adrian'], fake_dumps['adrian']) # hasn't been processed yet self.assertRaises(CrashIDNotFound, crashstorage.get_processed, crash_id) pro = ('{"name":"Peter",' '"uuid":"86b58ff2-9708-487d-bfc4-9dac32121214", ' '"submitted_timestamp":"%d", ' '"completeddatetime": "%d"}' % (time.time(), time.time())) crashstorage.save_processed(json.loads(pro)) data = crashstorage.get_processed(crash_id) self.assertEqual(data['name'], u'Peter') hb_connection = crashstorage.hbaseConnectionPool.connection() self.assertTrue(hb_connection.transport.isOpen()) crashstorage.close() self.assertFalse(hb_connection.transport.isOpen())
def test_basic_hbase_crashstorage(self): mock_logging = mock.Mock() required_config = HBaseCrashStorage.required_config required_config.add_option("logger", default=mock_logging) config_manager = ConfigurationManager( [required_config], app_name="testapp", app_version="1.0", app_description="app description", values_source_list=[ { "logger": mock_logging, "hbase_timeout": 100, "hbase_host": commonconfig.hbaseHost.default, "hbase_port": commonconfig.hbasePort.default, } ], argv_source=[], ) with config_manager.context() as config: crashstorage = HBaseCrashStorage(config) eq_(list(crashstorage.new_crashes()), []) crash_id = "86b58ff2-9708-487d-bfc4-9dac32121214" raw = '{"name":"Peter", ' '"submitted_timestamp":"%d"}' % time.time() fake_raw_dump_1 = "peter is a swede" fake_raw_dump_2 = "lars is a norseman" fake_raw_dump_3 = "adrian is a frenchman" fake_dumps = MemoryDumpsMapping( {"upload_file_minidump": fake_raw_dump_1, "lars": fake_raw_dump_2, "adrian": fake_raw_dump_3} ) crashstorage.save_raw_crash(json.loads(raw), fake_dumps, crash_id) assert config.logger.info.called assert config.logger.info.call_count > 1 msg_tmpl, msg_arg = config.logger.info.call_args_list[1][0] # ie logging.info(<template>, <arg>) msg = msg_tmpl % msg_arg ok_("saved" in msg) ok_(crash_id in msg) raw_crash = crashstorage.get_raw_crash(crash_id) assert isinstance(raw_crash, dict) eq_(raw_crash["name"], "Peter") dump = crashstorage.get_raw_dump(crash_id) assert isinstance(dump, basestring) ok_("peter is a swede" in dump) dumps = crashstorage.get_raw_dumps(crash_id) assert isinstance(dumps, dict) ok_("upload_file_minidump" in dumps) ok_("lars" in dumps) ok_("adrian" in dumps) eq_(dumps["upload_file_minidump"], fake_dumps["upload_file_minidump"]) eq_(dumps["lars"], fake_dumps["lars"]) eq_(dumps["adrian"], fake_dumps["adrian"]) # hasn't been processed yet assert_raises(CrashIDNotFound, crashstorage.get_processed, crash_id) pro = ( '{"name":"Peter",' '"uuid":"86b58ff2-9708-487d-bfc4-9dac32121214", ' '"submitted_timestamp":"%d", ' '"completeddatetime": "%d"}' % (time.time(), time.time()) ) crashstorage.save_processed(json.loads(pro)) data = crashstorage.get_processed(crash_id) eq_(data["name"], u"Peter") hb_connection = crashstorage.hbaseConnectionPool.connection() ok_(hb_connection.transport.isOpen()) crashstorage.close() ok_(not hb_connection.transport.isOpen())
def test_basic_hbase_crashstorage(self): mock_logging = mock.Mock() required_config = HBaseCrashStorage.required_config required_config.add_option('logger', default=mock_logging) config_manager = ConfigurationManager( [required_config], app_name='testapp', app_version='1.0', app_description='app description', values_source_list=[{ 'logger': mock_logging, 'hbase_timeout': 100, 'hbase_host': commonconfig.hbaseHost.default, 'hbase_port': commonconfig.hbasePort.default, }]) with config_manager.context() as config: crashstorage = HBaseCrashStorage(config) self.assertEqual(list(crashstorage.new_crashes()), []) # data doesn't contain an 'ooid' key #raw = '{"name": "Peter"}' #self.assertRaises( #CrashIDNotFound, #crashstorage.save_raw_crash, #json.loads(raw), #raw #) #raw = '{"name":"Peter","ooid":"abc123"}' #self.assertRaises( #ValueError, # missing the 'submitted_timestamp' key #crashstorage.save_raw_crash, #json.loads(raw), #raw #) raw = ('{"name":"Peter", ' '"submitted_timestamp":"%d"}' % time.time()) crashstorage.save_raw_crash(json.loads(raw), raw, "abc123") assert config.logger.info.called assert config.logger.info.call_count > 1 msg_tmpl, msg_arg = config.logger.info.call_args_list[1][0] # ie logging.info(<template>, <arg>) msg = msg_tmpl % msg_arg self.assertTrue('saved' in msg) self.assertTrue('abc123' in msg) meta = crashstorage.get_raw_crash('abc123') assert isinstance(meta, dict) self.assertEqual(meta['name'], 'Peter') dump = crashstorage.get_raw_dump('abc123') assert isinstance(dump, basestring) self.assertTrue('"name":"Peter"' in dump) # hasn't been processed yet self.assertRaises(CrashIDNotFound, crashstorage.get_processed_crash, 'abc123') pro = ('{"name":"Peter","uuid":"abc123", ' '"submitted_timestamp":"%d", ' '"completeddatetime": "%d"}' % (time.time(), time.time())) crashstorage.save_processed(json.loads(pro)) data = crashstorage.get_processed_crash('abc123') self.assertEqual(data['name'], u'Peter') assert crashstorage.hbaseConnection.transport.isOpen() crashstorage.close() transport = crashstorage.hbaseConnection.transport self.assertTrue(not transport.isOpen())
def test_basic_hbase_crashstorage(self): mock_logging = mock.Mock() required_config = HBaseCrashStorage.required_config required_config.add_option('logger', default=mock_logging) config_manager = ConfigurationManager( [required_config], app_name='testapp', app_version='1.0', app_description='app description', values_source_list=[{ 'logger': mock_logging, 'hbase_timeout': 100, 'hbase_host': commonconfig.hbaseHost.default, 'hbase_port': commonconfig.hbasePort.default, }] ) with config_manager.context() as config: crashstorage = HBaseCrashStorage(config) self.assertEqual(list(crashstorage.new_crashes()), []) # data doesn't contain an 'ooid' key #raw = '{"name": "Peter"}' #self.assertRaises( #CrashIDNotFound, #crashstorage.save_raw_crash, #json.loads(raw), #raw #) #raw = '{"name":"Peter","ooid":"abc123"}' #self.assertRaises( #ValueError, # missing the 'submitted_timestamp' key #crashstorage.save_raw_crash, #json.loads(raw), #raw #) raw = ('{"name":"Peter", ' '"submitted_timestamp":"%d"}' % time.time()) crashstorage.save_raw_crash(json.loads(raw), raw, "abc123") assert config.logger.info.called assert config.logger.info.call_count > 1 msg_tmpl, msg_arg = config.logger.info.call_args_list[1][0] # ie logging.info(<template>, <arg>) msg = msg_tmpl % msg_arg self.assertTrue('saved' in msg) self.assertTrue('abc123' in msg) meta = crashstorage.get_raw_crash('abc123') assert isinstance(meta, dict) self.assertEqual(meta['name'], 'Peter') dump = crashstorage.get_raw_dump('abc123') assert isinstance(dump, basestring) self.assertTrue('"name":"Peter"' in dump) # hasn't been processed yet self.assertRaises(CrashIDNotFound, crashstorage.get_processed_crash, 'abc123') pro = ('{"name":"Peter","uuid":"abc123", ' '"submitted_timestamp":"%d", ' '"completeddatetime": "%d"}' % (time.time(), time.time())) crashstorage.save_processed(json.loads(pro)) data = crashstorage.get_processed_crash('abc123') self.assertEqual(data['name'], u'Peter') assert crashstorage.hbaseConnection.transport.isOpen() crashstorage.close() transport = crashstorage.hbaseConnection.transport self.assertTrue(not transport.isOpen())