def test_force_refresh_not_modified_config(self): config_fetcher = mock.MagicMock() successful_fetch_response = mock.MagicMock() successful_fetch_response.is_fetched.return_value = True successful_fetch_response.json.return_value = TEST_JSON not_modified_fetch_response = mock.MagicMock() not_modified_fetch_response.is_fetched.return_value = False config_fetcher.get_configuration_json.return_value = successful_fetch_response config_cache = InMemoryConfigCache() cache_policy = LazyLoadingCachePolicy(config_fetcher, config_cache, 160) # Get value from Config Store, which indicates a config_fetcher call with mock.patch('configcatclient.lazyloadingcachepolicy.datetime') as mock_datetime: mock_datetime.datetime.utcnow.return_value = datetime.datetime(2020, 5, 20, 0, 0, 0) value = cache_policy.get() self.assertEqual(mock_datetime.datetime.utcnow.call_count, 2) self.assertEqual(value, TEST_JSON) self.assertEqual(successful_fetch_response.json.call_count, 1) config_fetcher.get_configuration_json.return_value = not_modified_fetch_response new_time = datetime.datetime(2020, 5, 20, 0, 0, 0) + datetime.timedelta(seconds=161) mock_datetime.datetime.utcnow.return_value = new_time cache_policy.force_refresh() self.assertEqual(config_fetcher.get_configuration_json.call_count, 2) # this indicates that is_fetched() was correctly called and # the setting of the new last updated didn't occur self.assertEqual(not_modified_fetch_response.json.call_count, 0) self.assertEqual(mock_datetime.datetime.utcnow.call_count, 3) # last updated should still be set in the case of a 304 self.assertEqual(cache_policy._last_updated, new_time) cache_policy.stop()
def test_force_refresh(self): config_fetcher = ConfigFetcherMock() config_cache = InMemoryConfigCache() cache_policy = LazyLoadingCachePolicy(config_fetcher, config_cache, 160) # Get value from Config Store, which indicates a config_fetcher call value = cache_policy.get() self.assertEqual(value, TEST_JSON) self.assertEqual(config_fetcher.get_call_count, 1) # Get value from Config Store, which indicates a config_fetcher call after cache invalidation cache_policy.force_refresh() value = cache_policy.get() self.assertEqual(value, TEST_JSON) self.assertEqual(config_fetcher.get_call_count, 2) cache_policy.stop()
def test_force_refresh(self): config_fetcher = ConfigFetcherMock() config_cache = InMemoryConfigCache() cache_policy = LazyLoadingCachePolicy(config_fetcher, config_cache, 160) # Get value from Config Store, which indicates a config_fetcher call value = cache_policy.get() self.assertEqual(value, TEST_JSON) self.assertEqual(config_fetcher.get_call_count, 1) with mock.patch('configcatclient.lazyloadingcachepolicy.datetime') as mock_datetime: # assume 160 seconds has elapsed since the last call enough to do a # force refresh mock_datetime.datetime.utcnow.return_value = cache_policy._last_updated + datetime.timedelta(seconds=161) # Get value from Config Store, which indicates a config_fetcher call after cache invalidation cache_policy.force_refresh() value = cache_policy.get() self.assertEqual(value, TEST_JSON) self.assertEqual(config_fetcher.get_call_count, 2) cache_policy.stop()