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

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

Issue 2213143002: Add infra_libs as a bootstrap dependency. (Closed) Base URL: https://chromium.googlesource.com/infra/infra.git@master
Patch Set: Removed the ugly import hack Created 4 years, 4 months 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
(Empty)
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
3 # found in the LICENSE file.
4
5 import argparse
6 import os
7 import traceback
8 import unittest
9
10 import mock
11
12 import infra_libs
13 from infra_libs import event_mon
14 from infra_libs.event_mon import config, router
15 from infra_libs.event_mon.protos import chrome_infra_log_pb2
16
17
18 class ConfigTest(unittest.TestCase):
19 def tearDown(self):
20 self._close()
21
22 def _set_up_args(self, args=None): # pragma: no cover
23 parser = argparse.ArgumentParser()
24 event_mon.add_argparse_options(parser)
25 args = parser.parse_args((args or []))
26 # Safety net. We really don't want to send something to a real endpoint.
27 self.assertTrue((args.event_mon_run_type not in ('test', 'prod'))
28 or args.dry_run)
29 event_mon.process_argparse_options(args)
30 r = config._router
31 self.assertIsInstance(r, router._Router)
32 # Check that process_argparse_options is idempotent
33 event_mon.process_argparse_options(args)
34 self.assertIs(config._router, r)
35
36 def _close(self):
37 self.assertTrue(event_mon.close())
38 self.assertFalse(config._cache)
39 # Test that calling it twice does not raise an exception.
40 self.assertTrue(event_mon.close())
41
42 def test_no_args_smoke(self): # pragma: no cover
43 self._set_up_args()
44
45 def test_args_and_default_event(self): # pragma: no cover
46 # The protobuf structure is actually an API not an implementation detail
47 # so it's sane to test for changes.
48 hostname = 'a'
49 service_name = 'b'
50 appengine_name = 'c'
51
52 args = ['--event-mon-run-type', 'dry',
53 '--event-mon-hostname', hostname,
54 '--event-mon-service-name', service_name,
55 '--event-mon-appengine-name', appengine_name]
56 self._set_up_args(args=args)
57 event = event_mon.get_default_event()
58 self.assertEquals(event.event_source.host_name, hostname)
59 self.assertEquals(event.event_source.service_name, service_name)
60 self.assertEquals(event.event_source.appengine_name, appengine_name)
61
62 def test_run_type_file_good(self):
63 try:
64 with infra_libs.temporary_directory(prefix='config_test-') as tempdir:
65 filename = os.path.join(tempdir, 'output.db')
66 self._set_up_args(args=['--event-mon-run-type', 'file',
67 '--event-mon-output-file', filename])
68 self.assertEqual(config._router.output_file, filename)
69 except Exception: # pragma: no cover
70 # help for debugging
71 traceback.print_exc()
72 raise
73
74 # Direct setup_monitoring testing below this line.
75 def test_default_event(self):
76 # The protobuf structure is actually an API not an implementation detail
77 # so it's sane to test for changes.
78 event_mon.setup_monitoring()
79 event = event_mon.get_default_event()
80 self.assertTrue(event.event_source.HasField('host_name'))
81 self.assertFalse(event.event_source.HasField('service_name'))
82 self.assertFalse(event.event_source.HasField('appengine_name'))
83
84 @mock.patch('os.environ')
85 def test_logging_on_appengine(self, environ):
86 environ.get.return_value = 'Google App Engine/1.2.3'
87 event_mon.setup_monitoring()
88 self.assertIsInstance(config._router, router._LoggingStreamRouter)
89
90 environ.get.return_value = 'Development/1.2'
91 event_mon.setup_monitoring()
92 self.assertIsInstance(config._router, router._LoggingStreamRouter)
93
94 def test_default_event_with_values(self):
95 # The protobuf structure is actually an API not an implementation detail
96 # so it's sane to test for changes.
97 hostname = 'a'
98 service_name = 'b'
99 appengine_name = 'c'
100
101 event_mon.setup_monitoring(
102 hostname=hostname,
103 service_name=service_name,
104 appengine_name=appengine_name
105 )
106 event = event_mon.get_default_event()
107 self.assertEquals(event.event_source.host_name, hostname)
108 self.assertEquals(event.event_source.service_name, service_name)
109 self.assertEquals(event.event_source.appengine_name, appengine_name)
110
111 def test_set_default_event(self):
112 event_mon.setup_monitoring()
113 orig_event = event_mon.get_default_event()
114
115 # Set the new default event to something different from orig_event
116 # to make sure it has changed.
117 event = chrome_infra_log_pb2.ChromeInfraEvent()
118 new_hostname = orig_event.event_source.host_name + '.foo'
119 event.event_source.host_name = new_hostname
120 event_mon.set_default_event(event)
121
122 new_event = event_mon.get_default_event()
123 self.assertEquals(new_event.event_source.host_name, new_hostname)
124
125 def test_set_default_event_bad_type(self):
126 event_mon.setup_monitoring()
127
128 # bad type
129 with self.assertRaises(TypeError):
130 event_mon.set_default_event({'hostname': 'foo'})
131
132 def test_get_default_event(self):
133 event_mon.setup_monitoring()
134 orig_event = config._cache['default_event']
135 self.assertEqual(orig_event, event_mon.get_default_event())
136 self.assertIsNot(orig_event, event_mon.get_default_event())
137
138 def test_run_type_test(self):
139 event_mon.setup_monitoring(run_type='test', service_account_creds='creds')
140 self.assertEquals(config._cache['service_account_creds'], 'creds')
141
142 def test_run_type_invalid(self):
143 event_mon.setup_monitoring(run_type='invalid.')
144 self.assertFalse(isinstance(config._router, router._HttpRouter))
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698