Skip to content

Commit d743410

Browse files
authoredJun 26, 2020
chore(test): Make unit tests go faster (#276)
1 parent a34b8a8 commit d743410

File tree

3 files changed

+30
-22
lines changed

3 files changed

+30
-22
lines changed
 

‎optimizely/config_manager.py

+5-3
Original file line numberDiff line numberDiff line change
@@ -402,9 +402,11 @@ def _set_access_token(self, access_token):
402402

403403
def fetch_datafile(self):
404404
""" Fetch authenticated datafile and set ProjectConfig. """
405-
request_headers = {}
406-
request_headers[enums.HTTPHeaders.AUTHORIZATION] = \
407-
enums.ConfigManager.AUTHORIZATION_HEADER_DATA_TEMPLATE.format(access_token=self.access_token)
405+
request_headers = {
406+
enums.HTTPHeaders.AUTHORIZATION: enums.ConfigManager.AUTHORIZATION_HEADER_DATA_TEMPLATE.format(
407+
access_token=self.access_token
408+
)
409+
}
408410

409411
if self.last_modified:
410412
request_headers[enums.HTTPHeaders.IF_MODIFIED_SINCE] = self.last_modified

‎tests/test_config_manager.py

+9-4
Original file line numberDiff line numberDiff line change
@@ -211,11 +211,11 @@ def test_get_config(self):
211211
def test_get_config_blocks(self):
212212
""" Test that get_config blocks until blocking timeout is hit. """
213213
start_time = time.time()
214-
project_config_manager = config_manager.PollingConfigManager(sdk_key='sdk_key', blocking_timeout=5)
214+
project_config_manager = config_manager.PollingConfigManager(sdk_key='sdk_key', blocking_timeout=1)
215215
# Assert get_config should block until blocking timeout.
216216
project_config_manager.get_config()
217217
end_time = time.time()
218-
self.assertEqual(5, round(end_time - start_time))
218+
self.assertEqual(1, round(end_time - start_time))
219219

220220

221221
@mock.patch('requests.get')
@@ -425,17 +425,22 @@ def test_fetch_datafile(self, _):
425425
""" Test that fetch_datafile sets authorization header in request header and sets config based on response. """
426426
access_token = 'some_token'
427427
sdk_key = 'some_key'
428-
with mock.patch('optimizely.config_manager.AuthDatafilePollingConfigManager.fetch_datafile'):
428+
with mock.patch('optimizely.config_manager.AuthDatafilePollingConfigManager.fetch_datafile'), mock.patch(
429+
'optimizely.config_manager.AuthDatafilePollingConfigManager._run'
430+
):
429431
project_config_manager = config_manager.AuthDatafilePollingConfigManager(
430432
access_token=access_token, sdk_key=sdk_key)
431433
expected_datafile_url = enums.ConfigManager.AUTHENTICATED_DATAFILE_URL_TEMPLATE.format(sdk_key=sdk_key)
434+
test_headers = {'Last-Modified': 'New Time'}
432435
test_datafile = json.dumps(self.config_dict_with_features)
433436
test_response = requests.Response()
434437
test_response.status_code = 200
438+
test_response.headers = test_headers
435439
test_response._content = test_datafile
436440

437441
# Call fetch_datafile and assert that request was sent with correct authorization header
438-
with mock.patch('requests.get', return_value=test_response) as mock_request:
442+
with mock.patch('requests.get',
443+
return_value=test_response) as mock_request:
439444
project_config_manager.fetch_datafile()
440445

441446
mock_request.assert_called_once_with(

‎tests/test_event_processor.py

+16-15
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
from optimizely.event.user_event_factory import UserEventFactory
2727
from optimizely.event_dispatcher import EventDispatcher as default_event_dispatcher
2828
from optimizely.helpers import enums
29-
from optimizely.logger import SimpleLogger
29+
from optimizely.logger import NoOpLogger
3030
from . import base
3131

3232

@@ -114,15 +114,16 @@ class BatchEventProcessorTest(base.BaseTest):
114114

115115
DEFAULT_QUEUE_CAPACITY = 1000
116116
MAX_BATCH_SIZE = 10
117-
MAX_DURATION_SEC = 1
118-
MAX_TIMEOUT_INTERVAL_SEC = 5
117+
MAX_DURATION_SEC = 0.2
118+
MAX_TIMEOUT_INTERVAL_SEC = 0.1
119+
TEST_TIMEOUT = 0.3
119120

120121
def setUp(self, *args, **kwargs):
121122
base.BaseTest.setUp(self, 'config_dict_with_multiple_experiments')
122123
self.test_user_id = 'test_user'
123124
self.event_name = 'test_event'
124125
self.event_queue = queue.Queue(maxsize=self.DEFAULT_QUEUE_CAPACITY)
125-
self.optimizely.logger = SimpleLogger()
126+
self.optimizely.logger = NoOpLogger()
126127
self.notification_center = self.optimizely.notification_center
127128

128129
def tearDown(self):
@@ -154,7 +155,7 @@ def test_drain_on_stop(self):
154155
self.event_processor.process(user_event)
155156
event_dispatcher.expect_conversion(self.event_name, self.test_user_id)
156157

157-
time.sleep(5)
158+
time.sleep(self.TEST_TIMEOUT)
158159

159160
self.assertStrictTrue(event_dispatcher.compare_events())
160161
self.assertEqual(0, self.event_processor.event_queue.qsize())
@@ -169,15 +170,15 @@ def test_flush_on_max_timeout(self):
169170
self.event_processor.process(user_event)
170171
event_dispatcher.expect_conversion(self.event_name, self.test_user_id)
171172

172-
time.sleep(3)
173+
time.sleep(self.TEST_TIMEOUT)
173174

174175
self.assertStrictTrue(event_dispatcher.compare_events())
175176
self.assertEqual(0, self.event_processor.event_queue.qsize())
176177

177178
def test_flush_once_max_timeout(self):
178179
event_dispatcher = TestEventDispatcher()
179180

180-
self.optimizely.logger = SimpleLogger(enums.LogLevels.DEBUG)
181+
self.optimizely.logger = NoOpLogger()
181182

182183
with mock.patch.object(self.optimizely, 'logger') as mock_config_logging:
183184
self._set_event_processor(event_dispatcher, mock_config_logging)
@@ -186,7 +187,7 @@ def test_flush_once_max_timeout(self):
186187
self.event_processor.process(user_event)
187188
event_dispatcher.expect_conversion(self.event_name, self.test_user_id)
188189

189-
time.sleep(1.75)
190+
time.sleep(self.TEST_TIMEOUT)
190191

191192
self.assertStrictTrue(event_dispatcher.compare_events())
192193
self.assertEqual(0, self.event_processor.event_queue.qsize())
@@ -195,7 +196,7 @@ def test_flush_once_max_timeout(self):
195196
mock_config_logging.debug.assert_any_call('Flushing batch size 1')
196197
mock_config_logging.debug.assert_any_call('Flush interval deadline. Flushed batch.')
197198
self.assertTrue(mock_config_logging.debug.call_count == 3)
198-
self.optimizely.logger = SimpleLogger()
199+
self.optimizely.logger = NoOpLogger()
199200

200201
def test_flush_max_batch_size(self):
201202
event_dispatcher = TestEventDispatcher()
@@ -208,7 +209,7 @@ def test_flush_max_batch_size(self):
208209
self.event_processor.process(user_event)
209210
event_dispatcher.expect_conversion(self.event_name, self.test_user_id)
210211

211-
time.sleep(1)
212+
time.sleep(self.TEST_TIMEOUT)
212213

213214
self.assertStrictTrue(event_dispatcher.compare_events())
214215
self.assertEqual(0, self.event_processor.event_queue.qsize())
@@ -228,7 +229,7 @@ def test_flush(self):
228229
self.event_processor.flush()
229230
event_dispatcher.expect_conversion(self.event_name, self.test_user_id)
230231

231-
time.sleep(3)
232+
time.sleep(self.TEST_TIMEOUT)
232233

233234
self.assertStrictTrue(event_dispatcher.compare_events())
234235
self.assertEqual(0, self.event_processor.event_queue.qsize())
@@ -253,7 +254,7 @@ def test_flush_on_mismatch_revision(self):
253254
self.event_processor.process(user_event_2)
254255
event_dispatcher.expect_conversion(self.event_name, self.test_user_id)
255256

256-
time.sleep(3)
257+
time.sleep(self.TEST_TIMEOUT)
257258

258259
self.assertStrictTrue(event_dispatcher.compare_events())
259260
self.assertEqual(0, self.event_processor.event_queue.qsize())
@@ -278,7 +279,7 @@ def test_flush_on_mismatch_project_id(self):
278279
self.event_processor.process(user_event_2)
279280
event_dispatcher.expect_conversion(self.event_name, self.test_user_id)
280281

281-
time.sleep(3)
282+
time.sleep(self.TEST_TIMEOUT)
282283

283284
self.assertStrictTrue(event_dispatcher.compare_events())
284285
self.assertEqual(0, self.event_processor.event_queue.qsize())
@@ -293,7 +294,7 @@ def test_stop_and_start(self):
293294
self.event_processor.process(user_event)
294295
event_dispatcher.expect_conversion(self.event_name, self.test_user_id)
295296

296-
time.sleep(3)
297+
time.sleep(self.TEST_TIMEOUT)
297298

298299
self.assertStrictTrue(event_dispatcher.compare_events())
299300
self.event_processor.stop()
@@ -509,7 +510,7 @@ def setUp(self, *args, **kwargs):
509510
base.BaseTest.setUp(self, 'config_dict_with_multiple_experiments')
510511
self.test_user_id = 'test_user'
511512
self.event_name = 'test_event'
512-
self.optimizely.logger = SimpleLogger()
513+
self.optimizely.logger = NoOpLogger()
513514
self.notification_center = self.optimizely.notification_center
514515
self.event_dispatcher = TestForwardingEventDispatcher(is_updated=False)
515516

0 commit comments

Comments
 (0)