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())
Exemple #2
0
        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())