23 #include "gtest/gtest.h"
24 #include "integration_test.h"
28 using std::shared_ptr;
29 using std::make_shared;
32 using com::seagate::kinetic::client::proto::Command_Algorithm_CRC32;
33 using com::seagate::kinetic::client::proto::Command_Algorithm_SHA1;
35 TEST_F(IntegrationTest, BlockingSmoketest) {
36 ASSERT_TRUE(blocking_connection_->NoOp().ok());
38 auto record1 = make_shared<KineticRecord>(make_shared<string>(
"value1"),
39 make_shared<string>(
"v1"), make_shared<string>(
"t1"), Command_Algorithm_CRC32);
40 KineticStatus kineticStatus = blocking_connection_->Put(
"key1",
"", WriteMode::IGNORE_VERSION, *record1);
41 ASSERT_TRUE(kineticStatus.ok());
43 auto record2 = make_shared<KineticRecord>(make_shared<string>(
"value2"),
44 make_shared<string>(
"v2"), make_shared<string>(
"t2"), Command_Algorithm_SHA1);
45 ASSERT_TRUE(blocking_connection_->Put(make_shared<string>(
"key2"), make_shared<string>(
""),
46 WriteMode::IGNORE_VERSION, record2).ok());
48 auto record3 = make_shared<KineticRecord>(make_shared<string>(
"value3"),
49 make_shared<string>(
"v3"), make_shared<string>(
"t3"), Command_Algorithm_CRC32);
50 ASSERT_TRUE(blocking_connection_->Put(make_shared<string>(
"key3"), make_shared<string>(
""),
51 WriteMode::IGNORE_VERSION, record3).ok());
53 KeyRangeIterator it = blocking_connection_->IterateKeyRange(
"key1",
true,
"key3",
false, 1);
54 ASSERT_EQ(
"key1", *it);
56 ASSERT_EQ(
"key2", *it);
58 ASSERT_EQ(KeyRangeEnd(), it);
61 std::unique_ptr<KineticRecord> result_record;
62 ASSERT_TRUE(blocking_connection_->Get(
"key2", result_record).ok());
63 EXPECT_EQ(
"value2", *(result_record->value()));
64 EXPECT_EQ(
"v2", *(result_record->version()));
65 EXPECT_EQ(
"t2", *(result_record->tag()));
66 EXPECT_EQ(Command_Algorithm_SHA1, result_record->algorithm());
68 unique_ptr<string> result_key(
nullptr);
69 ASSERT_TRUE(blocking_connection_->GetNext(
"key1", result_key, result_record).ok());
70 EXPECT_EQ(
"key2", *result_key);
71 EXPECT_EQ(
"value2", *(result_record->value()));
72 EXPECT_EQ(
"v2", *(result_record->version()));
73 EXPECT_EQ(
"t2", *(result_record->tag()));
74 EXPECT_EQ(Command_Algorithm_SHA1, result_record->algorithm());
76 ASSERT_TRUE(blocking_connection_->GetPrevious(
"key3", result_key, result_record).ok());
77 EXPECT_EQ(
"key2", *result_key);
78 EXPECT_EQ(
"value2", *(result_record->value()));
79 EXPECT_EQ(
"v2", *(result_record->version()));
80 EXPECT_EQ(
"t2", *(result_record->tag()));
81 EXPECT_EQ(Command_Algorithm_SHA1, result_record->algorithm());
83 unique_ptr<string> result_version(
nullptr);
84 ASSERT_TRUE(blocking_connection_->GetVersion(
"key3", result_version).ok());
85 EXPECT_EQ(
"v3", *result_version);
87 unique_ptr<vector<string>> actual_keys(
new vector<string>);
88 vector<string> expected_keys = {
"key2",
"key3"};
89 KineticStatus status =
90 blocking_connection_->GetKeyRange(
"key1",
false,
"key3",
true,
false, 2, actual_keys);
91 ASSERT_TRUE(status.ok());
92 EXPECT_EQ(expected_keys, *actual_keys);
94 ASSERT_TRUE(blocking_connection_->Delete(
"key1",
"", WriteMode::IGNORE_VERSION).ok());
96 ASSERT_EQ(blocking_connection_->Get(
"key1", result_record).statusCode(), StatusCode::REMOTE_NOT_FOUND);
98 ASSERT_TRUE(blocking_connection_->InstantErase(
"").ok());
100 ASSERT_EQ(blocking_connection_->Get(
"key3", result_record).statusCode(), StatusCode::REMOTE_NOT_FOUND);
102 blocking_connection_->SetClientClusterVersion(33);
104 ASSERT_EQ(blocking_connection_->Get(
"key1", result_record).statusCode(),
105 StatusCode::REMOTE_CLUSTER_VERSION_MISMATCH);