def run(arguments): try: config = parse_config_file(arguments['<config_file>']) redis = get_redis(config) split_cache = RedisSplitCache(redis) sdk_api = api_factory(config) split_change_fetcher = ApiSplitChangeFetcher(sdk_api) segment_cache = RedisSegmentCache(redis) split_parser = RedisSplitParser(segment_cache) update_splits(split_cache, split_change_fetcher, split_parser) except: logger.exception('Exception caught updating splits')
class ApiSplitChangeFetcherTests(TestCase): def setUp(self): self.some_since = mock.MagicMock() self.some_api = mock.MagicMock() self.fetcher = ApiSplitChangeFetcher(self.some_api) def test_fetch_from_backend_calls_api_split_changes(self): """Tests that fetch_from_backend calls api split_changes""" self.fetcher.fetch_from_backend(self.some_since) self.some_api.split_changes.assert_called_once_with(self.some_since) def test_fetch_from_backend_returns_api_split_changes_result(self): """Tests that fetch_from_backend returns api split_changes call result""" self.assertEqual(self.some_api.split_changes.return_value, self.fetcher.fetch_from_backend(self.some_since)) def test_fetch_from_backend_raises_exception_if_api_split_changes_does( self): """Tests that fetch_from_backend raises an exception if split_changes does""" self.some_api.split_changes.side_effect = Exception() with self.assertRaises(Exception): self.fetcher.fetch_from_backend(self.some_since)
def _update_splits(seconds, config): try: while True: redis = get_redis(config) split_cache = RedisSplitCache(redis) sdk_api = api_factory(config) split_change_fetcher = ApiSplitChangeFetcher(sdk_api) segment_cache = RedisSegmentCache(redis) split_parser = RedisSplitParser(segment_cache) update_splits(split_cache, split_change_fetcher, split_parser) time.sleep(seconds) except: logger.exception('Exception caught updating splits')
def uwsgi_update_splits(user_config): try: config = _get_config(user_config) seconds = config['featuresRefreshRate'] while True: split_cache = UWSGISplitCache(get_uwsgi()) sdk_api = api_factory(config) split_change_fetcher = ApiSplitChangeFetcher(sdk_api) segment_cache = UWSGISegmentCache(get_uwsgi()) split_parser = UWSGISplitParser(segment_cache) update_splits(split_cache, split_change_fetcher, split_parser) time.sleep(seconds) except: _logger.exception('Exception caught updating splits')
def _build_split_fetcher(self): """ Build the self refreshing split fetcher :return: The self refreshing split fetcher :rtype: SelfRefreshingSplitFetcher """ segment_change_fetcher = ApiSegmentChangeFetcher(self._sdk_api) segment_fetcher = SelfRefreshingSegmentFetcher( segment_change_fetcher, interval=self._segment_fetcher_interval ) split_change_fetcher = ApiSplitChangeFetcher(self._sdk_api) split_parser = SplitParser(segment_fetcher) split_fetcher = SelfRefreshingSplitFetcher( split_change_fetcher, split_parser, interval=self._split_fetcher_interval ) return split_fetcher
def setUp(self): self.some_since = mock.MagicMock() self.some_api = mock.MagicMock() self.fetcher = ApiSplitChangeFetcher(self.some_api)