예제 #1
0
  def test_get_service_event_crash_simple(self):
    self.assertIsInstance(config._router, router._Router)
    self.assertIsInstance(config.cache.get('default_event'), ChromeInfraEvent)

    log_event = monitoring._get_service_event('CRASH')
    event = ChromeInfraEvent.FromString(log_event.source_extension)
    self.assertEqual(event.service_event.type, ServiceEvent.CRASH)
예제 #2
0
  def test_get_service_event_crash_with_unicode_trace(self):
    self.assertIsInstance(config._router, router._Router)
    self.assertIsInstance(config.cache.get('default_event'), ChromeInfraEvent)

    stack_trace = u"Soyez prêt à un étrange goût de Noël."
    log_event = monitoring._get_service_event('CRASH',
                                              stack_trace=stack_trace)
    event = ChromeInfraEvent.FromString(log_event.source_extension)
    self.assertEqual(event.service_event.type, ServiceEvent.CRASH)
    self.assertEqual(event.service_event.stack_trace, stack_trace)
예제 #3
0
  def test_get_service_event_crash_with_ascii_trace(self):
    self.assertIsInstance(config._router, router._Router)
    self.assertIsInstance(config.cache.get('default_event'), ChromeInfraEvent)

    stack_trace = 'A nice ascii string'
    log_event = monitoring._get_service_event('CRASH',
                                              stack_trace=stack_trace)
    event = ChromeInfraEvent.FromString(log_event.source_extension)
    self.assertEqual(event.service_event.type, ServiceEvent.CRASH)
    self.assertEqual(event.service_event.stack_trace, stack_trace)
예제 #4
0
  def test_send_service_event_bad_versions(self):
    # Check that an invalid version does not cause any exception.
    self.assertIsInstance(config._router, router._Router)
    self.assertIsInstance(config.cache.get('default_event'), ChromeInfraEvent)

    code_version = [{}, {'revision': 'https://fake.url'}]
    log_event = monitoring._get_service_event('START',
                                              code_version=code_version)
    event = ChromeInfraEvent.FromString(log_event.source_extension)
    self.assertTrue(event.HasField('service_event'))
    self.assertTrue(event.service_event.HasField('type'))
    self.assertEqual(len(event.service_event.code_version), 0)
예제 #5
0
  def test_get_service_event_trace_without_crash(self):
    self.assertIsInstance(config._router, router._Router)
    self.assertIsInstance(config.cache.get('default_event'), ChromeInfraEvent)

    stack_trace = 'A nice ascii string'
    log_event = monitoring._get_service_event('START',
                                              stack_trace=stack_trace)
    event = ChromeInfraEvent.FromString(log_event.source_extension)

    # Make sure we send even invalid data.
    self.assertEqual(event.service_event.type, ServiceEvent.START)
    self.assertEqual(event.service_event.stack_trace, stack_trace)
예제 #6
0
  def test_get_service_event_crash_with_big_trace(self):
    self.assertIsInstance(config._router, router._Router)
    self.assertIsInstance(config.cache.get('default_event'), ChromeInfraEvent)

    stack_trace = "this is way too long" * 55
    self.assertTrue(len(stack_trace) > monitoring.STACK_TRACE_MAX_SIZE)
    log_event = monitoring._get_service_event('CRASH',
                                              stack_trace=stack_trace)
    event = ChromeInfraEvent.FromString(log_event.source_extension)
    self.assertEqual(event.service_event.type, ServiceEvent.CRASH)
    self.assertEqual(len(event.service_event.stack_trace),
                     monitoring.STACK_TRACE_MAX_SIZE)
예제 #7
0
  def test_send_service_event_bad_type(self):
    # Check that an invalid type for code_version does not raise
    # any exception.

    code_versions = [None, 123, 'string',
                     [None], [123], ['string'], [['list']]]
    for code_version in code_versions:
      log_event = monitoring._get_service_event('START',
                                                code_version=code_version)
      event = ChromeInfraEvent.FromString(log_event.source_extension)
      self.assertTrue(event.HasField('service_event'))
      self.assertTrue(event.service_event.HasField('type'))
      self.assertEqual(len(event.service_event.code_version), 0)
예제 #8
0
  def test_get_service_event_default(self):
    self.assertIsInstance(config._router, router._Router)
    self.assertIsInstance(config.cache.get('default_event'), ChromeInfraEvent)

    log_event = monitoring._get_service_event('START')
    self.assertIsInstance(log_event, LogRequestLite.LogEventLite)
    self.assertTrue(log_event.HasField('event_time_ms'))
    self.assertTrue(log_event.HasField('source_extension'))

    # Check that source_extension deserializes to the right thing.
    event = ChromeInfraEvent.FromString(log_event.source_extension)
    self.assertTrue(event.HasField('service_event'))
    self.assertTrue(event.service_event.HasField('type'))
    self.assertEquals(event.service_event.type, ServiceEvent.START)
예제 #9
0
  def test_get_service_event_crash_invalid_trace(self):
    self.assertIsInstance(config._router, router._Router)
    self.assertIsInstance(config.cache.get('default_event'), ChromeInfraEvent)

    # This is not a stacktrace
    stack_trace = 123456
    # Should not crash
    log_event = monitoring._get_service_event('CRASH',
                                              stack_trace=stack_trace)
    event = ChromeInfraEvent.FromString(log_event.source_extension)

    # Send only valid data this time
    self.assertEqual(event.service_event.type, ServiceEvent.CRASH)
    self.assertFalse(event.service_event.HasField('stack_trace'))
예제 #10
0
  def test_get_service_event_correct_versions(self):
    self.assertIsInstance(config._router, router._Router)
    self.assertIsInstance(config.cache.get('default_event'), ChromeInfraEvent)

    code_version = [
      {'source_url': 'https://fake.url/thing',
       'revision': '708329c2aeece8aac33af6a5a772ffb14b55903f'},
      {'source_url': 'svn://fake_svn.url/other_thing',
       'revision': '123456'},
      {'source_url': 'https://other_fake.url/yet_another_thing',
       'version': 'v2.0'},
      {'source_url': 'https://other_fake2.url/yet_another_thing2',
       'dirty': True},
      ]

    log_event = monitoring._get_service_event('START',
                                              code_version=code_version)
    event = ChromeInfraEvent.FromString(log_event.source_extension)
    code_version_p = event.service_event.code_version
    self.assertEquals(len(code_version_p), len(code_version))

    self.assertEqual(code_version_p[0].source_url,
                     code_version[0]['source_url'])
    self.assertEqual(code_version_p[0].git_hash, code_version[0]['revision'])
    self.assertFalse(code_version_p[0].HasField('svn_revision'))

    self.assertEqual(code_version_p[1].source_url,
                     code_version[1]['source_url'])
    self.assertEqual(code_version_p[1].svn_revision,
                     int(code_version[1]['revision']))
    self.assertFalse(code_version_p[1].HasField('git_hash'))

    self.assertEqual(code_version_p[2].source_url,
                     code_version[2]['source_url'])
    self.assertFalse(code_version_p[2].HasField('svn_revision'))
    self.assertEqual(code_version_p[2].version,
                     code_version[2]['version'])

    self.assertEqual(code_version_p[3].source_url,
                     code_version[3]['source_url'])
    self.assertEqual(code_version_p[3].dirty, True)