X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=tst%2Fconfigurationreader_test.cpp;h=d9f4f6d3dd14be646f857e579305a7cdd1f27bf5;hb=refs%2Fheads%2Fi-release;hp=4e730f04eb4d7acf0ba5d3b4202ed79b82ee58c1;hpb=ece67088ea6c4f67b9d0db74477a9d5c614d7763;p=ric-plt%2Fsdl.git diff --git a/tst/configurationreader_test.cpp b/tst/configurationreader_test.cpp index 4e730f0..d9f4f6d 100644 --- a/tst/configurationreader_test.cpp +++ b/tst/configurationreader_test.cpp @@ -1,5 +1,5 @@ /* - Copyright (c) 2018-2019 Nokia. + Copyright (c) 2018-2022 Nokia. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -62,19 +62,25 @@ namespace EXPECT_CALL(databaseConfigurationMock, checkAndApplyDbType(type)); } + void expectGetDbTypeAndWillOnceReturn(DatabaseConfiguration::DbType type) + { + EXPECT_CALL(databaseConfigurationMock, getDbType()) + .WillOnce(Return(type)); + } + void expectDBServerAddressConfigurationCheckAndApply(const std::string& address) { EXPECT_CALL(databaseConfigurationMock, checkAndApplyServerAddress(address)); } - void expectSentinelAddressConfigurationCheckAndApply(const std::string& address) + void expectCheckAndApplySentinelPorts(const std::string& portsEnvStr) { - EXPECT_CALL(databaseConfigurationMock, checkAndApplySentinelAddress(address)); + EXPECT_CALL(databaseConfigurationMock, checkAndApplySentinelPorts(portsEnvStr)); } void expectSentinelMasterNameConfigurationCheckAndApply(const std::string& address) { - EXPECT_CALL(databaseConfigurationMock, checkAndApplySentinelMasterName(address)); + EXPECT_CALL(databaseConfigurationMock, checkAndApplySentinelMasterNames(address)); } void expectDatabaseConfigurationIsEmpty_returnFalse() @@ -763,13 +769,15 @@ public: { } - void readEnvironmentConfigurationAndExpectConfigurationErrorException() + void readEnvironmentConfigurationAndExpectConfigurationErrorException(const std::string& msg, + bool expectCall) { std::ostringstream os; - os << "Configuration error in " << someKnownInputSource << ": some error"; + os << "Configuration error in " << someKnownInputSource << ": " << msg; - EXPECT_CALL(databaseConfigurationMock, checkAndApplyDbType(_)) - .WillOnce(Throw(Exception("some error"))); + if (expectCall) + EXPECT_CALL(databaseConfigurationMock, checkAndApplyDbType(_)) + .WillOnce(Throw(Exception("some error"))); EXPECT_THROW( { try @@ -806,6 +814,7 @@ TEST_F(ConfigurationReaderEnvironmentVariableTest, EnvironmentConfigurationCanOv expectDbTypeConfigurationCheckAndApply("redis-standalone"); expectDBServerAddressConfigurationCheckAndApply("unknownAddress.local:12345"); + expectGetDbTypeAndWillOnceReturn(DatabaseConfiguration::DbType::REDIS_STANDALONE); initializeReaderWithSDLconfigFileDirectory(); configurationReader->readConfigurationFromInputStream(is); configurationReader->readDatabaseConfiguration(databaseConfigurationMock); @@ -823,6 +832,7 @@ TEST_F(ConfigurationReaderEnvironmentVariableTest, EnvironmentConfigurationWitho expectDbTypeConfigurationCheckAndApply("redis-standalone"); expectDBServerAddressConfigurationCheckAndApply("server.local"); + expectGetDbTypeAndWillOnceReturn(DatabaseConfiguration::DbType::REDIS_STANDALONE); initializeReaderWithoutDirectories(); configurationReader->readDatabaseConfiguration(databaseConfigurationMock); } @@ -830,13 +840,14 @@ TEST_F(ConfigurationReaderEnvironmentVariableTest, EnvironmentConfigurationWitho TEST_F(ConfigurationReaderEnvironmentVariableTest, EmptyEnvironmentVariableThrows) { dbHostEnvVariableValue = ""; - readEnvironmentConfigurationAndExpectConfigurationErrorException(); + readEnvironmentConfigurationAndExpectConfigurationErrorException("Missing environment variable configuration!", + false); } TEST_F(ConfigurationReaderEnvironmentVariableTest, IllegalCharacterInEnvironmentVariableThrows) { dbHostEnvVariableValue = "@"; - readEnvironmentConfigurationAndExpectConfigurationErrorException(); + readEnvironmentConfigurationAndExpectConfigurationErrorException("some error", true); } TEST_F(ConfigurationReaderEnvironmentVariableTest, EnvironmentConfigurationAcceptIPv6Address) @@ -851,6 +862,7 @@ TEST_F(ConfigurationReaderEnvironmentVariableTest, EnvironmentConfigurationAccep expectDbTypeConfigurationCheckAndApply("redis-standalone"); expectDBServerAddressConfigurationCheckAndApply("[2001::123]:12345"); + expectGetDbTypeAndWillOnceReturn(DatabaseConfiguration::DbType::REDIS_STANDALONE); initializeReaderWithoutDirectories(); configurationReader->readDatabaseConfiguration(databaseConfigurationMock); } @@ -869,7 +881,9 @@ TEST_F(ConfigurationReaderEnvironmentVariableTest, EnvironmentConfigurationWithS expectGetEnvironmentString(nullptr); //DB_CLUSTER_ENV_VAR_NAME expectDbTypeConfigurationCheckAndApply("redis-sentinel"); - expectSentinelAddressConfigurationCheckAndApply("sentinelAddress.local:2222"); + expectDBServerAddressConfigurationCheckAndApply("sentinelAddress.local:1111"); + expectGetDbTypeAndWillOnceReturn(DatabaseConfiguration::DbType::REDIS_SENTINEL); + expectCheckAndApplySentinelPorts(sentinelPortEnvVariableValue); expectSentinelMasterNameConfigurationCheckAndApply(sentinelMasterNameEnvVariableValue); initializeReaderWithoutDirectories(); configurationReader->readDatabaseConfiguration(databaseConfigurationMock); @@ -880,21 +894,62 @@ TEST_F(ConfigurationReaderEnvironmentVariableTest, EnvironmentConfigurationWithS InSequence dummy; dbHostEnvVariableValue = "address-0.local"; expectGetEnvironmentString(dbHostEnvVariableValue.c_str()); - dbPortEnvVariableValue = "1111"; - expectGetEnvironmentString(dbPortEnvVariableValue.c_str()); - sentinelPortEnvVariableValue = "2222"; + expectGetEnvironmentString(nullptr); //DB_PORT_ENV_VAR_NAME + sentinelPortEnvVariableValue = "2222,2223,2224"; expectGetEnvironmentString(sentinelPortEnvVariableValue.c_str()); - sentinelMasterNameEnvVariableValue = "mymaster"; + sentinelMasterNameEnvVariableValue = "mymaster-0,mymaster-1,mymaster-2"; expectGetEnvironmentString(sentinelMasterNameEnvVariableValue.c_str()); dbClusterAddrListEnvVariableValue = "address-0.local,address-1.local,address-2.local"; expectGetEnvironmentString(dbClusterAddrListEnvVariableValue.c_str()); - expectDbTypeConfigurationCheckAndApply("sdl-cluster"); + expectDbTypeConfigurationCheckAndApply("sdl-sentinel-cluster"); expectDBServerAddressConfigurationCheckAndApply("address-0.local"); expectDBServerAddressConfigurationCheckAndApply("address-1.local"); expectDBServerAddressConfigurationCheckAndApply("address-2.local"); - expectSentinelAddressConfigurationCheckAndApply("address-0.local:2222"); + expectGetDbTypeAndWillOnceReturn(DatabaseConfiguration::DbType::SDL_SENTINEL_CLUSTER); + expectCheckAndApplySentinelPorts(sentinelPortEnvVariableValue); expectSentinelMasterNameConfigurationCheckAndApply(sentinelMasterNameEnvVariableValue); initializeReaderWithoutDirectories(); configurationReader->readDatabaseConfiguration(databaseConfigurationMock); } + +TEST_F(ConfigurationReaderEnvironmentVariableTest, EnvironmentConfigurationWithoutSentinelAndWithClusterConfiguration) +{ + InSequence dummy; + dbHostEnvVariableValue = "address-0.local"; + expectGetEnvironmentString(dbHostEnvVariableValue.c_str()); + expectGetEnvironmentString(nullptr); //DB_PORT_ENV_VAR_NAME + expectGetEnvironmentString(nullptr); //SENTINEL_PORT_ENV_VAR_NAME + expectGetEnvironmentString(nullptr); //SENTINEL_MASTER_NAME_ENV_VAR_NAME + dbClusterAddrListEnvVariableValue = "address-0.local,address-1.local,address-2.local"; + expectGetEnvironmentString(dbClusterAddrListEnvVariableValue.c_str()); + + expectDbTypeConfigurationCheckAndApply("sdl-standalone-cluster"); + expectDBServerAddressConfigurationCheckAndApply("address-0.local"); + expectDBServerAddressConfigurationCheckAndApply("address-1.local"); + expectDBServerAddressConfigurationCheckAndApply("address-2.local"); + expectGetDbTypeAndWillOnceReturn(DatabaseConfiguration::DbType::SDL_STANDALONE_CLUSTER); + initializeReaderWithoutDirectories(); + configurationReader->readDatabaseConfiguration(databaseConfigurationMock); +} + +TEST_F(ConfigurationReaderEnvironmentVariableTest, EnvironmentConfigurationWithoutSentinelAndWithClusterConfigurationAndDbPort) +{ + InSequence dummy; + dbHostEnvVariableValue = "address-0.local"; + expectGetEnvironmentString(dbHostEnvVariableValue.c_str()); + dbPortEnvVariableValue = "1111"; + expectGetEnvironmentString(dbPortEnvVariableValue.c_str()); + expectGetEnvironmentString(nullptr); //SENTINEL_PORT_ENV_VAR_NAME + expectGetEnvironmentString(nullptr); //SENTINEL_MASTER_NAME_ENV_VAR_NAME + dbClusterAddrListEnvVariableValue = "address-0.local,address-1.local,address-2.local"; + expectGetEnvironmentString(dbClusterAddrListEnvVariableValue.c_str()); + + expectDbTypeConfigurationCheckAndApply("sdl-standalone-cluster"); + expectDBServerAddressConfigurationCheckAndApply("address-0.local:1111"); + expectDBServerAddressConfigurationCheckAndApply("address-1.local:1111"); + expectDBServerAddressConfigurationCheckAndApply("address-2.local:1111"); + expectGetDbTypeAndWillOnceReturn(DatabaseConfiguration::DbType::SDL_STANDALONE_CLUSTER); + initializeReaderWithoutDirectories(); + configurationReader->readDatabaseConfiguration(databaseConfigurationMock); +}