From 435e7f0e19f6c7cd4497a8c641f61052b9205281 Mon Sep 17 00:00:00 2001 From: Sven Schmit Date: Thu, 25 Apr 2024 15:23:26 -0700 Subject: [PATCH 1/3] clear config store before loading new config (#30) --- eppo_client/configuration_store.py | 1 + test/configuration_store_test.py | 13 +++++++++++++ 2 files changed, 14 insertions(+) diff --git a/eppo_client/configuration_store.py b/eppo_client/configuration_store.py index f9c57f4..3a30e90 100644 --- a/eppo_client/configuration_store.py +++ b/eppo_client/configuration_store.py @@ -23,6 +23,7 @@ def get_configuration(self, key: str) -> Optional[T]: def set_configurations(self, configs: Dict[str, T]): try: self.__lock.acquire_write() + self.__cache.clear() for key, config in configs.items(): self.__cache[key] = config finally: diff --git a/test/configuration_store_test.py b/test/configuration_store_test.py index 40c4beb..469efb1 100644 --- a/test/configuration_store_test.py +++ b/test/configuration_store_test.py @@ -39,3 +39,16 @@ def test_evicts_old_entries_when_max_size_exceeded(): assert ( store.get_configuration("test-entry-{}".format(TEST_MAX_SIZE - 1)) == test_exp ) + + +def test_evicts_old_entries_when_setting_new_flags(): + store: ConfigurationStore[str] = ConfigurationStore(max_size=TEST_MAX_SIZE) + + store.set_configurations({"flag": mock_flag, "second_flag": mock_flag}) + assert store.get_configuration("flag") == mock_flag + assert store.get_configuration("second_flag") == mock_flag + + # Updating the flags should evict flags that no longer exist + store.set_configurations({"flag": mock_flag}) + assert store.get_configuration("flag") == mock_flag + assert store.get_configuration("second_flag") is None From f82ea16684993e936b7fb0da0f535c267d27535b Mon Sep 17 00:00:00 2001 From: Leo Romanovsky Date: Thu, 23 May 2024 12:45:59 -0700 Subject: [PATCH 2/3] bump version v1.3.2 --- eppo_client/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eppo_client/__init__.py b/eppo_client/__init__.py index 67196d9..b611593 100644 --- a/eppo_client/__init__.py +++ b/eppo_client/__init__.py @@ -10,7 +10,7 @@ from eppo_client.http_client import HttpClient, SdkParams from eppo_client.read_write_lock import ReadWriteLock -__version__ = "1.3.1" +__version__ = "1.3.2" __client: Optional[EppoClient] = None __lock = ReadWriteLock() From d42dfc265a0f81d93a1b83b218750fa6a4044e12 Mon Sep 17 00:00:00 2001 From: Leo Romanovsky Date: Thu, 23 May 2024 12:51:34 -0700 Subject: [PATCH 3/3] migrate cherry picked test case to RAC-format --- test/configuration_store_test.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/test/configuration_store_test.py b/test/configuration_store_test.py index 469efb1..433ea89 100644 --- a/test/configuration_store_test.py +++ b/test/configuration_store_test.py @@ -44,11 +44,11 @@ def test_evicts_old_entries_when_max_size_exceeded(): def test_evicts_old_entries_when_setting_new_flags(): store: ConfigurationStore[str] = ConfigurationStore(max_size=TEST_MAX_SIZE) - store.set_configurations({"flag": mock_flag, "second_flag": mock_flag}) - assert store.get_configuration("flag") == mock_flag - assert store.get_configuration("second_flag") == mock_flag + store.set_configurations({"flag": test_exp, "second_flag": test_exp}) + assert store.get_configuration("flag") == test_exp + assert store.get_configuration("second_flag") == test_exp # Updating the flags should evict flags that no longer exist - store.set_configurations({"flag": mock_flag}) - assert store.get_configuration("flag") == mock_flag + store.set_configurations({"flag": test_exp}) + assert store.get_configuration("flag") == test_exp assert store.get_configuration("second_flag") is None