Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(108)

Side by Side Diff: infra_libs/event_mon/test/config_test.py

Issue 1407143009: Added event_mon.set_default_event (Closed) Base URL: https://chromium.googlesource.com/infra/infra.git@master
Patch Set: Created 5 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 # Copyright 2015 The Chromium Authors. All rights reserved. 1 # Copyright 2015 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be 2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file. 3 # found in the LICENSE file.
4 4
5 import argparse 5 import argparse
6 import os 6 import os
7 import traceback 7 import traceback
8 import unittest 8 import unittest
9 9
10 import infra_libs 10 import infra_libs
11 from infra_libs import event_mon 11 from infra_libs import event_mon
12 from infra_libs.event_mon import config, router 12 from infra_libs.event_mon import config, router
13 from infra_libs.event_mon.protos import chrome_infra_log_pb2
13 14
14 15
15 class ConfigTest(unittest.TestCase): 16 class ConfigTest(unittest.TestCase):
17 def tearDown(self):
18 self._close()
19
16 def _set_up_args(self, args=None): # pragma: no cover 20 def _set_up_args(self, args=None): # pragma: no cover
17 parser = argparse.ArgumentParser() 21 parser = argparse.ArgumentParser()
18 event_mon.add_argparse_options(parser) 22 event_mon.add_argparse_options(parser)
19 args = parser.parse_args((args or [])) 23 args = parser.parse_args((args or []))
20 # Safety net. We really don't want to send something to a real endpoint. 24 # Safety net. We really don't want to send something to a real endpoint.
21 self.assertTrue((args.event_mon_run_type not in ('test', 'prod')) 25 self.assertTrue((args.event_mon_run_type not in ('test', 'prod'))
22 or args.dry_run) 26 or args.dry_run)
23 event_mon.process_argparse_options(args) 27 event_mon.process_argparse_options(args)
24 r = config._router 28 r = config._router
25 self.assertIsInstance(r, router._Router) 29 self.assertIsInstance(r, router._Router)
26 # Check that process_argparse_options is idempotent 30 # Check that process_argparse_options is idempotent
27 event_mon.process_argparse_options(args) 31 event_mon.process_argparse_options(args)
28 self.assertIs(config._router, r) 32 self.assertIs(config._router, r)
29 33
30 def _close(self): 34 def _close(self):
31 self.assertTrue(config._router)
32 self.assertTrue(event_mon.close()) 35 self.assertTrue(event_mon.close())
33 self.assertFalse(config._cache) 36 self.assertFalse(config._cache)
34 # Test that calling it twice does not raise an exception. 37 # Test that calling it twice does not raise an exception.
35 self.assertTrue(event_mon.close()) 38 self.assertTrue(event_mon.close())
36 39
37 def test_no_args_smoke(self): # pragma: no cover 40 def test_no_args_smoke(self): # pragma: no cover
38 self._set_up_args() 41 self._set_up_args()
39 self._close()
40 42
41 def test_args_and_default_event(self): # pragma: no cover 43 def test_args_and_default_event(self): # pragma: no cover
42 # The protobuf structure is actually an API not an implementation detail 44 # The protobuf structure is actually an API not an implementation detail
43 # so it's sane to test for changes. 45 # so it's sane to test for changes.
44 hostname = 'a' 46 hostname = 'a'
45 service_name = 'b' 47 service_name = 'b'
46 appengine_name = 'c' 48 appengine_name = 'c'
47 49
48 args = ['--event-mon-run-type', 'dry', 50 args = ['--event-mon-run-type', 'dry',
49 '--event-mon-hostname', hostname, 51 '--event-mon-hostname', hostname,
50 '--event-mon-service-name', service_name, 52 '--event-mon-service-name', service_name,
51 '--event-mon-appengine-name', appengine_name] 53 '--event-mon-appengine-name', appengine_name]
52 try: 54 self._set_up_args(args=args)
53 self._set_up_args(args=args) 55 event = config._cache['default_event']
54 event = config._cache['default_event'] 56 self.assertEquals(event.event_source.host_name, hostname)
55 self.assertEquals(event.event_source.host_name, hostname) 57 self.assertEquals(event.event_source.service_name, service_name)
56 self.assertEquals(event.event_source.service_name, service_name) 58 self.assertEquals(event.event_source.appengine_name, appengine_name)
57 self.assertEquals(event.event_source.appengine_name, appengine_name)
58 finally:
59 self._close()
60 59
61 def test_run_type_file_good(self): 60 def test_run_type_file_good(self):
62 try: 61 try:
63 with infra_libs.temporary_directory(prefix='config_test-') as tempdir: 62 with infra_libs.temporary_directory(prefix='config_test-') as tempdir:
64 filename = os.path.join(tempdir, 'output.db') 63 filename = os.path.join(tempdir, 'output.db')
65 self._set_up_args(args=['--event-mon-run-type', 'file', 64 self._set_up_args(args=['--event-mon-run-type', 'file',
66 '--event-mon-output-file', filename]) 65 '--event-mon-output-file', filename])
67 self.assertEqual(config._router.output_file, filename) 66 self.assertEqual(config._router.output_file, filename)
68 except Exception: # pragma: no cover 67 except Exception: # pragma: no cover
69 # help for debugging 68 # help for debugging
70 traceback.print_exc() 69 traceback.print_exc()
71 raise 70 raise
72 finally:
73 self._close()
74 71
75 # Direct setup_monitoring testing below this line. 72 # Direct setup_monitoring testing below this line.
76 def test_default_event(self): 73 def test_default_event(self):
77 # The protobuf structure is actually an API not an implementation detail 74 # The protobuf structure is actually an API not an implementation detail
78 # so it's sane to test for changes. 75 # so it's sane to test for changes.
79 event_mon.setup_monitoring() 76 event_mon.setup_monitoring()
80 event = config._cache['default_event'] 77 event = config._cache['default_event']
81 self.assertTrue(event.event_source.HasField('host_name')) 78 self.assertTrue(event.event_source.HasField('host_name'))
82 self.assertFalse(event.event_source.HasField('service_name')) 79 self.assertFalse(event.event_source.HasField('service_name'))
83 self.assertFalse(event.event_source.HasField('appengine_name')) 80 self.assertFalse(event.event_source.HasField('appengine_name'))
84 81
85 self._close()
86
87 def test_default_event_with_values(self): 82 def test_default_event_with_values(self):
88 # The protobuf structure is actually an API not an implementation detail 83 # The protobuf structure is actually an API not an implementation detail
89 # so it's sane to test for changes. 84 # so it's sane to test for changes.
90 hostname = 'a' 85 hostname = 'a'
91 service_name = 'b' 86 service_name = 'b'
92 appengine_name = 'c' 87 appengine_name = 'c'
93 88
94 event_mon.setup_monitoring( 89 event_mon.setup_monitoring(
95 hostname=hostname, 90 hostname=hostname,
96 service_name=service_name, 91 service_name=service_name,
97 appengine_name=appengine_name 92 appengine_name=appengine_name
98 ) 93 )
99 event = config._cache['default_event'] 94 event = config._cache['default_event']
100 self.assertEquals(event.event_source.host_name, hostname) 95 self.assertEquals(event.event_source.host_name, hostname)
101 self.assertEquals(event.event_source.service_name, service_name) 96 self.assertEquals(event.event_source.service_name, service_name)
102 self.assertEquals(event.event_source.appengine_name, appengine_name) 97 self.assertEquals(event.event_source.appengine_name, appengine_name)
103 98
104 self._close() 99 def test_set_default_event(self):
100 event_mon.setup_monitoring()
101 orig_event = config._cache['default_event']
102
103 # Set the new default event to something different from orig_event
104 # to make sure it has changed.
105 event = chrome_infra_log_pb2.ChromeInfraEvent()
106 new_hostname = orig_event.event_source.host_name + '.foo'
107 event.event_source.host_name = new_hostname
108 event_mon.set_default_event(event)
109
110 new_event = config._cache['default_event']
111 self.assertEquals(new_event.event_source.host_name, new_hostname)
112
113 def test_set_default_event_bad_type(self):
114 event_mon.setup_monitoring()
115 orig_event = config._cache['default_event']
116
117 # bad type
118 event_mon.set_default_event({'hostname': 'foo'})
119
120 # no error should happen, and the default event should be unchanged.
121 self.assertIs(orig_event, config._cache['default_event'])
OLDNEW
« infra_libs/event_mon/config.py ('K') | « infra_libs/event_mon/config.py ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698