def test_calls_test_impressions(self): """Test that report_impressions calls test_impression with the result of build_impressions_data""" self.build_impressions_data_mock.return_value = [mock.MagicMock()] report_impressions(self.some_impressions_cache, self.some_api_sdk) self.some_api_sdk.test_impressions.assert_called_once_with( self.build_impressions_data_mock.return_value)
def run(arguments): try: config = parse_config_file(arguments['<config_file>']) redis = get_redis(config) impressions_cache = RedisImpressionsCache(redis) sdk_api = api_factory(config) report_impressions(impressions_cache, sdk_api) except: logger.exception('Exception caught posting impressions')
def _report_impressions(seconds, config): try: while True: redis = get_redis(config) impressions_cache = RedisImpressionsCache(redis) sdk_api = api_factory(config) report_impressions(impressions_cache, sdk_api) time.sleep(seconds) except: logger.exception('Exception caught posting impressions')
def uwsgi_report_impressions(user_config): try: config = _get_config(user_config) seconds = config['impressionsRefreshRate'] while True: impressions_cache = UWSGIImpressionsCache(get_uwsgi()) sdk_api = api_factory(config) report_impressions(impressions_cache, sdk_api) time.sleep(seconds) except: _logger.exception('Exception caught posting impressions')
def test_uwsgi_impression_listener(self): impressions_cache = mock.MagicMock() impressions = {'testName': 'someTest', 'keyImpressions': [1, 2, 3]} impressions_cache.fetch_all_and_clear.return_value = { 'someTest': [1, 2, 3] } some_api = mock.MagicMock() listener = mock.MagicMock() with mock.patch('splitio.tasks.build_impressions_data', return_value=impressions): report_impressions(impressions_cache, some_api, listener=listener) listener.assert_called_with({'impressions': impressions})
def test_cache_disabled_if_exception_is_raised(self): """Test that report_impressions disables the cache if an exception is raised""" self.build_impressions_data_mock.side_effect = Exception() report_impressions(self.some_impressions_cache, self.some_api_sdk) self.some_impressions_cache.disable.assert_called_once_with()
def test_doesnt_call_test_impressions_if_data_is_empty(self): """Test that report_impressions doesn't call test_impressions if build_impressions_data returns an empty list""" self.build_impressions_data_mock.return_value = [] report_impressions(self.some_impressions_cache, self.some_api_sdk) self.some_api_sdk.test_impressions.assert_not_called()
def test_calls_build_impressions_data(self): """Test that report_impressions calls build_impressions_data_mock""" report_impressions(self.some_impressions_cache, self.some_api_sdk) self.build_impressions_data_mock.assert_called_once_with( self.some_impressions_cache.fetch_all_and_clear.return_value)
def test_calls_fetch_all_and_clear(self): """Test that report_impressions calls fetch_all_and_clear""" report_impressions(self.some_impressions_cache, self.some_api_sdk) self.some_impressions_cache.fetch_all_and_clear.assert_called_once_with( )
def test_doesnt_call_test_impressions_if_disabled(self): """Test that report_impressions doesn't call test_impressions if the cache is disabled""" self.some_impressions_cache.is_enabled.return_value = False report_impressions(self.some_impressions_cache, self.some_api_sdk) self.some_api_sdk.test_impressions.assert_not_called()
def test_doesnt_call_fetch_all_and_clear_if_disabled(self): """Test that report_impressions doesn't call fetch_all_and_clear if the cache is disabled""" self.some_impressions_cache.is_enabled.return_value = False report_impressions(self.some_impressions_cache, self.some_api_sdk) self.some_impressions_cache.fetch_all_and_clear.assert_not_called()
def test_calls_is_enabled(self): """Test that report_impressions call is_enabled""" report_impressions(self.some_impressions_cache, self.some_api_sdk) self.some_impressions_cache.is_enabled.assert_called_once_with()