RIC:1060: Change in PTL
[ric-plt/sdl.git] / tst / asyncstorageimpl_test.cpp
index b6a2319..d1b3649 100644 (file)
    limitations under the License.
 */
 
+/*
+ * This source code is part of the near-RT RIC (RAN Intelligent Controller)
+ * platform project (RICP).
+*/
+
 #include <gtest/gtest.h>
 #include <type_traits>
+#include "config.h"
 #include "private/asyncdummystorage.hpp"
 #include "private/asyncstorageimpl.hpp"
 #include "private/createlogger.hpp"
 #include "private/logger.hpp"
 #include "private/redis/asyncredisstorage.hpp"
 #include "private/tst/enginemock.hpp"
+#include "private/tst/asyncdatabasediscoverymock.hpp"
 #include "private/tst/databaseconfigurationmock.hpp"
 #include "private/tst/namespaceconfigurationsmock.hpp"
 
@@ -37,6 +44,7 @@ namespace
         std::shared_ptr<StrictMock<EngineMock>> engineMock;
         std::shared_ptr<DatabaseConfiguration> dummyDatabaseConfiguration;
         std::shared_ptr<StrictMock<NamespaceConfigurationsMock>> namespaceConfigurationsMock;
+        std::shared_ptr<NiceMock<AsyncDatabaseDiscoveryMock>> discoveryMock;
         int fd;
         AsyncStorage::Namespace ns;
         Engine::Callback storedCallback;
@@ -47,13 +55,34 @@ namespace
             engineMock(std::make_shared<StrictMock<EngineMock>>()),
             dummyDatabaseConfiguration(std::make_shared<DatabaseConfigurationImpl>()),
             namespaceConfigurationsMock(std::make_shared<StrictMock<NamespaceConfigurationsMock>>()),
+            discoveryMock(std::make_shared<NiceMock<AsyncDatabaseDiscoveryMock>>()),
             fd(10),
             ns("someKnownNamespace"),
             logger(createLogger(SDL_LOG_PREFIX))
         {
             dummyDatabaseConfiguration->checkAndApplyDbType("redis-standalone");
             dummyDatabaseConfiguration->checkAndApplyServerAddress("dummydatabaseaddress.local");
-            asyncStorageImpl.reset(new AsyncStorageImpl(engineMock, boost::none, dummyDatabaseConfiguration, namespaceConfigurationsMock, logger));
+            asyncStorageImpl.reset(new AsyncStorageImpl(engineMock,
+                                                        boost::none,
+                                                        dummyDatabaseConfiguration,
+                                                        namespaceConfigurationsMock,
+                                                        logger,
+                                                        std::bind(&AsyncStorageImplTest::asyncDatabaseDiscoveryCreator,
+                                                                  this,
+                                                                  std::placeholders::_1,
+                                                                  std::placeholders::_2,
+                                                                  std::placeholders::_3,
+                                                                  std::placeholders::_4,
+                                                                  std::placeholders::_5)));
+        }
+
+        std::shared_ptr<redis::AsyncDatabaseDiscovery> asyncDatabaseDiscoveryCreator(std::shared_ptr<Engine>,
+                                                                                     const std::string&,
+                                                                                     const DatabaseConfiguration&,
+                                                                                     const boost::optional<std::size_t>&,
+                                                                                     std::shared_ptr<Logger>)
+        {
+            return discoveryMock;
         }
 
         void expectNamespaceConfigurationIsDbBackendUseEnabled_returnFalse()
@@ -108,8 +137,6 @@ TEST_F(AsyncStorageImplTest, CorrectHandlerIsUsedBasedOnConfiguration)
 {
     InSequence dummy;
     expectNamespaceConfigurationIsDbBackendUseEnabled_returnTrue();
-    //AsyncRedisStorage creation causes AsyncHiredisDatabaseDiscovery to post stateChanged callback
-    expectPostCallback();
     AsyncStorage& returnedHandler1 = asyncStorageImpl->getOperationHandler(ns);
     EXPECT_EQ(typeid(AsyncRedisStorage&), typeid(returnedHandler1));
 
@@ -117,3 +144,11 @@ TEST_F(AsyncStorageImplTest, CorrectHandlerIsUsedBasedOnConfiguration)
     AsyncStorage& returnedHandler2 = asyncStorageImpl->getOperationHandler(ns);
     EXPECT_EQ(typeid(AsyncDummyStorage&), typeid(returnedHandler2));
 }
+
+TEST_F(AsyncStorageImplTest, CorrectSdlClusterHandlerIsUsedBasedOnConfiguration)
+{
+    expectNamespaceConfigurationIsDbBackendUseEnabled_returnTrue();
+    dummyDatabaseConfiguration->checkAndApplyDbType("sdl-sentinel-cluster");
+    AsyncStorage& returnedHandler = asyncStorageImpl->getOperationHandler(ns);
+    EXPECT_EQ(typeid(AsyncRedisStorage&), typeid(returnedHandler));
+}