def test_logrequest_path_build_type_override(self): # logrequest contains build event, overrid the type with an arg. with infra_libs.temporary_directory(prefix='common_test-') as tmpdir: outfile = os.path.join(tmpdir, 'out.bin') args = get_arguments([ '--event-mon-run-type', 'file', '--event-mon-output-file', outfile, '--event-mon-service-name', 'thing', '--event-logrequest-path', os.path.join(DATA_DIR, 'build-foo-builder.bin'), '--build-event-build-number', '3', '--build-event-type', 'STEP', ]) self.assertEquals(args.event_mon_run_type, 'file') event_mon.process_argparse_options(args) common.process_argparse_options(args) self.assertTrue(common.send_build_event(args)) # Now open the resulting file and check what was written with open(outfile, 'rb') as f: request = LogRequestLite.FromString(f.read()) self.assertEqual(len(request.log_event), 1) event = ChromeInfraEvent.FromString( request.log_event[0].source_extension) self.assertEqual(event.build_event.host_name, 'myhostname') self.assertEqual(event.build_event.type, BuildEvent.STEP) self.assertEqual(event.build_event.build_number, 3) self.assertEqual(event.timestamp_kind, ChromeInfraEvent.BEGIN)
def test_logrequest_path_service_type_override(self): with infra_libs.temporary_directory(prefix='common_test-') as tmpdir: outfile = os.path.join(tmpdir, 'out.bin') args = get_arguments([ '--event-mon-run-type', 'file', '--event-mon-output-file', outfile, '--event-mon-service-name', 'thing', '--event-logrequest-path', os.path.join(DATA_DIR, 'service-bar-service.bin'), '--service-event-type', 'STOP', ]) self.assertEquals(args.event_mon_run_type, 'file') event_mon.process_argparse_options(args) common.process_argparse_options(args) self.assertTrue(common.send_service_event(args)) # Now open the resulting file and check what was written with open(outfile, 'rb') as f: request = LogRequestLite.FromString(f.read()) self.assertEqual(len(request.log_event), 1) event = ChromeInfraEvent.FromString( request.log_event[0].source_extension) self.assertEqual(event.event_source.host_name, 'myhostname') self.assertEqual(event.service_event.type, ServiceEvent.STOP) self.assertEqual(event.timestamp_kind, ChromeInfraEvent.END)
def test_logrequest_with_bad_content(self): orig_event = event_mon.get_default_event() self.assertIsNot(orig_event, None) opts = _parse_arguments([]) opts.event_logrequest_path = os.path.join(DATA_DIR, 'garbage') with self.assertRaises(google.protobuf.message.DecodeError): common.process_argparse_options(opts)
def test_logrequest_with_no_log_event(self): orig_event = event_mon.get_default_event() self.assertIsNot(orig_event, None) opts = _parse_arguments([]) opts.event_logrequest_path = os.path.join(DATA_DIR, 'logrequest-empty.bin') with self.assertRaises(ValueError): common.process_argparse_options(opts)
def test_logrequest_missing_args(self): orig_event = event_mon.get_default_event() self.assertIsNot(orig_event, None) opts = _parse_arguments([]) opts.event_logrequest_path = None common.process_argparse_options(opts) self.assertEqual(orig_event, event_mon.get_default_event())
def test_logrequest_with_valid_file(self): orig_event = event_mon.get_default_event() self.assertIsNot(orig_event, None) opts = _parse_arguments([]) opts.event_logrequest_path = os.path.join(DATA_DIR, 'logrequest-build.bin') opts.service_event_type = None opts.build_event_type = None common.process_argparse_options(opts) new_event = event_mon.get_default_event() self.assertNotEqual(orig_event, new_event) self.assertEqual(new_event.build_event.type, BuildEvent.BUILD)
def test_logrequest_path_service_build_conflict(self): with infra_libs.temporary_directory(prefix='common_test-') as tmpdir: outfile = os.path.join(tmpdir, 'out.bin') args = get_arguments( ['--event-mon-run-type', 'file', '--event-mon-output-file', outfile, '--event-mon-service-name', 'thing', '--event-logrequest-path', os.path.join(DATA_DIR, 'service-bar-service.bin'), '--build-event-type', 'BUILD', ]) self.assertEquals(args.event_mon_run_type, 'file') event_mon.process_argparse_options(args) with self.assertRaises(ValueError): common.process_argparse_options(args)
def test_logrequest_path_service_build_and_service(self): # The logrequest provided contains both a service and a build type, # which is invalid. with infra_libs.temporary_directory(prefix='common_test-') as tmpdir: outfile = os.path.join(tmpdir, 'out.bin') args = get_arguments( ['--event-mon-run-type', 'file', '--event-mon-output-file', outfile, '--event-mon-service-name', 'thing', '--event-logrequest-path', os.path.join(DATA_DIR, 'build-and-service-event.bin'), ]) self.assertEquals(args.event_mon_run_type, 'file') event_mon.process_argparse_options(args) with self.assertRaises(ValueError): common.process_argparse_options(args)
def test_logrequest_path_build_service_conflicts(self): # logrequest contains build event, provides service event as arg with infra_libs.temporary_directory(prefix='common_test-') as tmpdir: outfile = os.path.join(tmpdir, 'out.bin') args = get_arguments( ['--event-mon-run-type', 'file', '--event-mon-output-file', outfile, '--event-mon-service-name', 'thing', '--event-logrequest-path', os.path.join(DATA_DIR, 'build-foo-builder.bin'), '--build-event-build-number', '3', '--service-event-type', 'START', ]) self.assertEquals(args.event_mon_run_type, 'file') event_mon.process_argparse_options(args) with self.assertRaises(ValueError): common.process_argparse_options(args)
def process_argparse_options(self, opts): super(SendMonitoringEvent, self).process_argparse_options(opts) common.process_argparse_options(opts)
def test_logrequest_with_missing_file(self): opts = _parse_arguments([]) opts.event_logrequest_path = os.path.join(DATA_DIR, 'non-existent-file.bin') with self.assertRaises(IOError): common.process_argparse_options(opts)