Beispiel #1
0
  def test_logrequest_missing_args(self):
    orig_event = event_mon.get_default_event()
    self.assertIsNot(orig_event, None)

    args = argparse.Namespace()
    args.event_logrequest_path = None
    send_event._process_logrequest_path(args)

    self.assertEqual(orig_event, event_mon.get_default_event())
Beispiel #2
0
    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())
Beispiel #3
0
    def test_set_default_event(self):
        event_mon.setup_monitoring()
        orig_event = event_mon.get_default_event()

        # Set the new default event to something different from orig_event
        # to make sure it has changed.
        event = chrome_infra_log_pb2.ChromeInfraEvent()
        new_hostname = orig_event.event_source.host_name + '.foo'
        event.event_source.host_name = new_hostname
        event_mon.set_default_event(event)

        new_event = event_mon.get_default_event()
        self.assertEquals(new_event.event_source.host_name, new_hostname)
Beispiel #4
0
  def test_set_default_event(self):
    event_mon.setup_monitoring()
    orig_event = event_mon.get_default_event()

    # Set the new default event to something different from orig_event
    # to make sure it has changed.
    event = chrome_infra_log_pb2.ChromeInfraEvent()
    new_hostname = orig_event.event_source.host_name + '.foo'
    event.event_source.host_name = new_hostname
    event_mon.set_default_event(event)

    new_event = event_mon.get_default_event()
    self.assertEquals(new_event.event_source.host_name, new_hostname)
Beispiel #5
0
  def test_logrequest_with_valid_file(self):
    orig_event = event_mon.get_default_event()
    self.assertIsNot(orig_event, None)

    args = argparse.Namespace()
    args.event_logrequest_path = os.path.join(DATA_DIR, 'logrequest-build.bin')
    args.service_event_type = None
    args.build_event_type = None
    send_event._process_logrequest_path(args)

    new_event = event_mon.get_default_event()
    self.assertNotEqual(orig_event, new_event)
    self.assertEqual(new_event.build_event.type, BuildEvent.BUILD)
Beispiel #6
0
  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)
Beispiel #7
0
  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)
Beispiel #8
0
    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)
Beispiel #9
0
  def test_logrequest_with_no_log_event(self):
    orig_event = event_mon.get_default_event()
    self.assertIsNot(orig_event, None)

    args = argparse.Namespace()
    args.event_logrequest_path = os.path.join(DATA_DIR, 'logrequest-empty.bin')
    with self.assertRaises(ValueError):
      send_event._process_logrequest_path(args)
Beispiel #10
0
 def test_default_event(self):
   # The protobuf structure is actually an API not an implementation detail
   # so it's sane to test for changes.
   event_mon.setup_monitoring()
   event = event_mon.get_default_event()
   self.assertTrue(event.event_source.HasField('host_name'))
   self.assertFalse(event.event_source.HasField('service_name'))
   self.assertFalse(event.event_source.HasField('appengine_name'))
Beispiel #11
0
  def test_logrequest_with_bad_content(self):
    orig_event = event_mon.get_default_event()
    self.assertIsNot(orig_event, None)

    args = argparse.Namespace()
    args.event_logrequest_path = os.path.join(DATA_DIR, 'garbage')
    with self.assertRaises(google.protobuf.message.DecodeError):
      send_event._process_logrequest_path(args)
Beispiel #12
0
 def test_default_event(self):
     # The protobuf structure is actually an API not an implementation detail
     # so it's sane to test for changes.
     event_mon.setup_monitoring()
     event = event_mon.get_default_event()
     self.assertTrue(event.event_source.HasField('host_name'))
     self.assertFalse(event.event_source.HasField('service_name'))
     self.assertFalse(event.event_source.HasField('appengine_name'))
Beispiel #13
0
    def test_default_event_with_values(self):
        # The protobuf structure is actually an API not an implementation detail
        # so it's sane to test for changes.
        hostname = 'a'
        service_name = 'b'
        appengine_name = 'c'

        event_mon.setup_monitoring(hostname=hostname,
                                   service_name=service_name,
                                   appengine_name=appengine_name)
        event = event_mon.get_default_event()
        self.assertEquals(event.event_source.host_name, hostname)
        self.assertEquals(event.event_source.service_name, service_name)
        self.assertEquals(event.event_source.appengine_name, appengine_name)
Beispiel #14
0
  def test_args_and_default_event(self):  # pragma: no cover
    # The protobuf structure is actually an API not an implementation detail
    # so it's sane to test for changes.
    hostname = 'a'
    service_name = 'b'
    appengine_name = 'c'

    args = ['--event-mon-run-type', 'dry',
            '--event-mon-hostname', hostname,
            '--event-mon-service-name', service_name,
            '--event-mon-appengine-name', appengine_name]
    self._set_up_args(args=args)
    event = event_mon.get_default_event()
    self.assertEquals(event.event_source.host_name, hostname)
    self.assertEquals(event.event_source.service_name, service_name)
    self.assertEquals(event.event_source.appengine_name, appengine_name)
Beispiel #15
0
  def test_default_event_with_values(self):
    # The protobuf structure is actually an API not an implementation detail
    # so it's sane to test for changes.
    hostname = 'a'
    service_name = 'b'
    appengine_name = 'c'

    event_mon.setup_monitoring(
      hostname=hostname,
      service_name=service_name,
      appengine_name=appengine_name
    )
    event = event_mon.get_default_event()
    self.assertEquals(event.event_source.host_name, hostname)
    self.assertEquals(event.event_source.service_name, service_name)
    self.assertEquals(event.event_source.appengine_name, appengine_name)
Beispiel #16
0
    def test_args_and_default_event(self):  # pragma: no cover
        # The protobuf structure is actually an API not an implementation detail
        # so it's sane to test for changes.
        hostname = 'a'
        service_name = 'b'
        appengine_name = 'c'

        args = [
            '--event-mon-run-type', 'dry', '--event-mon-hostname', hostname,
            '--event-mon-service-name', service_name,
            '--event-mon-appengine-name', appengine_name
        ]
        self._set_up_args(args=args)
        event = event_mon.get_default_event()
        self.assertEquals(event.event_source.host_name, hostname)
        self.assertEquals(event.event_source.service_name, service_name)
        self.assertEquals(event.event_source.appengine_name, appengine_name)
Beispiel #17
0
def process_argparse_options(args):
    """Sets the default event based on --event-logrequest-path.

  This function raises exceptions because if the base event is wrong, then it's
  not worth sending anything anyway.
  """
    event_mon.process_argparse_options(args)
    _extra_argument_checking(args)

    if args.event_logrequest_path:
        try:
            with open(args.event_logrequest_path, 'rb') as f:
                request = LogRequestLite.FromString(f.read())

            if len(request.log_event) == 1:
                default_event = ChromeInfraEvent.FromString(
                    request.log_event[0].source_extension)
                # Assume that the content is sane because we don't want to duplicate
                # any business logic here.
                # TODO(pgervais): find a better solution.
                event_mon.set_default_event(default_event)
            else:
                raise ValueError(
                    'Expected only one log_event in the LogRequestLite proto '
                    'pointed by --event-logrequest-path. Found %d in %s',
                    len(request.log_event), args.event_logrequest_path)
        except Exception:
            LOGGER.exception('Failure when reading/parsing file %s',
                             args.event_logrequest_path)
            raise

    default_event = event_mon.get_default_event()

    # When the default event is set using --event-logrequest-path, passing
    # --build-event-type or --service-event-type is optional. These options
    # still takes precedence but they must keep the event type the same.
    if (default_event.build_event.HasField('type')
            and default_event.service_event.HasField('type')):
        msg = (
            'Default event contains both service_event_type and '
            'build_event_type which is incorrect. Make sure you passed '
            'a correct proto to --event-logrequest-path. Otherwise it\'s an '
            'internal error. Aborting.')
        LOGGER.error(msg)
        raise ValueError(msg)

    if default_event.build_event.HasField('type'):
        if args.service_event_type:
            msg = (
                'The default event contains a type for build_event, but a '
                'service_event type was provided on the command-line. At most '
                'one of them can be specified. Aborting.')
            LOGGER.error(msg)
            raise ValueError(msg)

        if not args.build_event_type:
            args.build_event_type = event_mon.BuildEvent.BuildEventType.Name(
                default_event.build_event.type)

    if default_event.service_event.HasField('type'):
        if args.build_event_type:
            msg = (
                'The default event contains a type for service_event, but a '
                'build_event type was provided on the command-line. At most '
                'one of them can be specified. Aborting.')
            LOGGER.error(msg)
            raise ValueError(msg)
        if not args.service_event_type:
            args.service_event_type = event_mon.ServiceEvent.ServiceEventType.Name(
                default_event.service_event.type)
Beispiel #18
0
def _process_logrequest_path(args):
  """Sets the default event based on --event-logrequest-path.

  This function raises exceptions because if the base event is wrong, then it's
  not worth sending anything anyway.
  """
  if args.event_logrequest_path:
    try:
      with open(args.event_logrequest_path, 'rb') as f:
        request = LogRequestLite.FromString(f.read())

      if len(request.log_event) == 1:
        default_event = ChromeInfraEvent.FromString(
          request.log_event[0].source_extension)
        # Assume that the content is sane because we don't want to duplicate
        # any business logic here.
        # TODO(pgervais): find a better solution.
        event_mon.set_default_event(default_event)
      else:
        raise ValueError(
          'Expected only one log_event in the LogRequestLite proto '
          'pointed by --event-logrequest-path. Found %d in %s',
          len(request.log_event), args.event_logrequest_path)
    except Exception:
      LOGGER.exception('Failure when reading/parsing file %s',
                       args.event_logrequest_path)
      raise

  default_event = event_mon.get_default_event()

  # When the default event is set using --event-logrequest-path, passing
  # --build-event-type or --service-event-type is optional. These options
  # still takes precedence but they must keep the event type the same.
  if (default_event.build_event.HasField('type') and
      default_event.service_event.HasField('type')):
    msg = ('Default event contains both service_event_type and '
           'build_event_type which is incorrect. Make sure you passed '
           'a correct proto to --event-logrequest-path. Otherwise it\'s an '
           'internal error. Aborting.')
    LOGGER.error(msg)
    raise ValueError(msg)

  if default_event.build_event.HasField('type'):
    if args.service_event_type:
      msg = ('The default event contains a type for build_event, but a '
             'service_event type was provided on the command-line. At most '
             'one of them can be specified. Aborting.')
      LOGGER.error(msg)
      raise ValueError(msg)

    if not args.build_event_type:
      args.build_event_type = event_mon.BuildEvent.BuildEventType.Name(
        default_event.build_event.type)

  if default_event.service_event.HasField('type'):
    if args.build_event_type:
      msg = ('The default event contains a type for service_event, but a '
             'build_event type was provided on the command-line. At most '
             'one of them can be specified. Aborting.')
      LOGGER.error(msg)
      raise ValueError(msg)
    if not args.service_event_type:
      args.service_event_type = event_mon.ServiceEvent.ServiceEventType.Name(
        default_event.service_event.type)
Beispiel #19
0
 def test_get_default_event(self):
     event_mon.setup_monitoring()
     orig_event = config._cache['default_event']
     self.assertEqual(orig_event, event_mon.get_default_event())
     self.assertIsNot(orig_event, event_mon.get_default_event())
Beispiel #20
0
 def test_get_default_event(self):
   event_mon.setup_monitoring()
   orig_event = config._cache['default_event']
   self.assertEqual(orig_event, event_mon.get_default_event())
   self.assertIsNot(orig_event, event_mon.get_default_event())