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"
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;
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()
{
InSequence dummy;
expectNamespaceConfigurationIsDbBackendUseEnabled_returnTrue();
- //AsyncRedisStorage creation causes AsyncHiredisDatabaseDiscovery to post stateChanged callback
- expectPostCallback();
AsyncStorage& returnedHandler1 = asyncStorageImpl->getOperationHandler(ns);
EXPECT_EQ(typeid(AsyncRedisStorage&), typeid(returnedHandler1));
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));
+}