Skip to content

Commit 499fe92

Browse files
committed
tests for aliasing
Signed-off-by: Abhijat Malviya <[email protected]>
1 parent 39e0e46 commit 499fe92

File tree

1 file changed

+29
-0
lines changed

1 file changed

+29
-0
lines changed

src/server/dragonfly_test.cc

+29
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ ABSL_DECLARE_FLAG(float, mem_defrag_threshold);
2525
ABSL_DECLARE_FLAG(float, mem_defrag_waste_threshold);
2626
ABSL_DECLARE_FLAG(uint32_t, mem_defrag_check_sec_interval);
2727
ABSL_DECLARE_FLAG(std::vector<std::string>, rename_command);
28+
ABSL_DECLARE_FLAG(std::vector<std::string>, command_alias);
2829
ABSL_DECLARE_FLAG(bool, lua_resp2_legacy_float);
2930
ABSL_DECLARE_FLAG(double, eviction_memory_budget_threshold);
3031

@@ -846,4 +847,32 @@ TEST_F(DflyEngineTest, CommandMetricLabels) {
846847
EXPECT_EQ(metrics.facade_stats.conn_stats.num_conns_other, 0);
847848
}
848849

850+
class DflyCommandAliasTest : public DflyEngineTest {
851+
protected:
852+
DflyCommandAliasTest() {
853+
// Test an interaction of rename and alias, where we rename and then add an alias on the rename
854+
absl::SetFlag(&FLAGS_rename_command, {"ping=gnip"});
855+
absl::SetFlag(&FLAGS_command_alias, {"___set=set", "___ping=gnip"});
856+
}
857+
858+
void TearDown() override {
859+
absl::SetFlag(&FLAGS_command_alias, {""});
860+
absl::SetFlag(&FLAGS_rename_command, {""});
861+
DflyEngineTest::TearDown();
862+
}
863+
};
864+
865+
TEST_F(DflyCommandAliasTest, Aliasing) {
866+
EXPECT_EQ(Run({"SET", "foo", "bar"}), "OK");
867+
EXPECT_EQ(Run({"___SET", "a", "b"}), "OK");
868+
EXPECT_EQ(Run({"GET", "foo"}), "bar");
869+
EXPECT_EQ(Run({"GET", "a"}), "b");
870+
// test the alias
871+
EXPECT_EQ(Run({"___ping"}), "PONG");
872+
// test the rename
873+
EXPECT_EQ(Run({"gnip"}), "PONG");
874+
// the original command is not accessible
875+
EXPECT_THAT(Run({"PING"}), ErrArg("unknown command `PING`"));
876+
}
877+
849878
} // namespace dfly

0 commit comments

Comments
 (0)