16#include <gtest/gtest.h>
38 backend_ = std::make_unique<redis_backend>();
60 EXPECT_EQ(backend_->type(), database_types::redis);
74 EXPECT_FALSE(backend_->is_initialized());
79 EXPECT_FALSE(backend_->in_transaction());
88 auto result = backend_->execute_query(
"mykey:myvalue");
89 EXPECT_FALSE(result.is_ok());
94 auto result = backend_->select_query(
"mykey");
95 EXPECT_FALSE(result.is_ok());
100 auto result = backend_->begin_transaction();
101 EXPECT_FALSE(result.is_ok());
106 auto result = backend_->commit_transaction();
107 EXPECT_FALSE(result.is_ok());
112 auto result = backend_->rollback_transaction();
113 EXPECT_FALSE(result.is_ok());
122 auto result = backend_->shutdown();
123 EXPECT_TRUE(result.is_ok());
132 auto backend = redis_backend::create();
133 ASSERT_NE(backend,
nullptr);
134 EXPECT_EQ(backend->type(), database_types::redis);
135 EXPECT_FALSE(backend->is_initialized());
144 auto info = backend_->connection_info();
150 auto error = backend_->last_error();
163 config.
host =
"localhost";
166 auto result = backend_->initialize(config);
167 if (!result.is_ok()) {
168 GTEST_SKIP() <<
"Local Redis not available: " << backend_->last_error();
171 EXPECT_TRUE(backend_->is_initialized());
177 config.
host =
"localhost";
180 if (!backend_->initialize(config).is_ok()) {
181 GTEST_SKIP() <<
"Local Redis not available";
185 auto insert_result = backend_->execute_query(
"redis_test_key:test_value");
186 EXPECT_TRUE(insert_result.is_ok());
189 auto select_result = backend_->select_query(
"redis_test_key");
191 EXPECT_FALSE(select_result.value().empty());
194 auto update_result = backend_->execute_query(
"redis_test_key:updated_value");
195 EXPECT_TRUE(update_result.is_ok());
198 auto delete_result = backend_->execute_query(
"redis_test_key");
199 EXPECT_TRUE(delete_result.is_ok());
202 auto verify_result = backend_->select_query(
"redis_test_key");
203 if (verify_result.is_ok()) {
204 EXPECT_TRUE(verify_result.value().empty());
211 config.
host =
"localhost";
214 if (!backend_->initialize(config).is_ok()) {
215 GTEST_SKIP() <<
"Local Redis not available";
219 EXPECT_TRUE(backend_->begin_transaction().is_ok());
220 EXPECT_TRUE(backend_->in_transaction());
222 backend_->execute_query(
"redis_tx_key:tx_value");
224 EXPECT_TRUE(backend_->commit_transaction().is_ok());
225 EXPECT_FALSE(backend_->in_transaction());
228 backend_->execute_query(
"redis_tx_key");
234 config.
host =
"localhost";
237 if (!backend_->initialize(config).is_ok()) {
238 GTEST_SKIP() <<
"Local Redis not available";
242 EXPECT_TRUE(backend_->begin_transaction().is_ok());
243 backend_->execute_query(
"redis_discard_key:value");
244 EXPECT_TRUE(backend_->rollback_transaction().is_ok());
245 EXPECT_FALSE(backend_->in_transaction());
252 ::testing::InitGoogleTest(&argc, argv);
253 return RUN_ALL_TESTS();
connection_config test_config_
std::unique_ptr< redis_backend > backend_
static constexpr const char * backend_name()
Backend name for error messages.
Abstract interface for database backends.
Redis database backend plugin implementation.
TEST_F(RedisBackendTest, TypeReturnsRedis)
Configuration for database connection.
#define ASSERT_TRUE(condition, message)