Ejemplo n.º 1
0
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')
Ejemplo n.º 2
0
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)
Ejemplo n.º 3
0
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')
Ejemplo n.º 4
0
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')
Ejemplo n.º 5
0
 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
Ejemplo n.º 6
0
 def setUp(self):
     self.some_since = mock.MagicMock()
     self.some_api = mock.MagicMock()
     self.fetcher = ApiSplitChangeFetcher(self.some_api)