mirror of
https://github.com/EchoVault/SugarDB.git
synced 2025-10-06 00:16:53 +08:00
Implemented tests for FLUSHDB and FLUSHALL commands
This commit is contained in:
@@ -1898,6 +1898,7 @@ func Test_Generic(t *testing.T) {
|
||||
|
||||
t.Run("Test_HandlerINCR", func(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
conn, err := internal.GetConnection("localhost", port)
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
@@ -2020,6 +2021,7 @@ func Test_Generic(t *testing.T) {
|
||||
t.Run("Test_HandlerDECR", func(t *testing.T) {
|
||||
t.Parallel()
|
||||
conn, err := internal.GetConnection("localhost", port)
|
||||
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
return
|
||||
@@ -2501,4 +2503,138 @@ func Test_Generic(t *testing.T) {
|
||||
})
|
||||
}
|
||||
})
|
||||
|
||||
t.Run("Test_HandleFlush", func(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
port, err := internal.GetFreePort()
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
return
|
||||
}
|
||||
mockServer, err := echovault.NewEchoVault(
|
||||
echovault.WithConfig(config.Config{
|
||||
BindAddr: "localhost",
|
||||
Port: uint16(port),
|
||||
DataDir: "",
|
||||
EvictionPolicy: constants.NoEviction,
|
||||
}),
|
||||
)
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
return
|
||||
}
|
||||
go func() {
|
||||
mockServer.Start()
|
||||
}()
|
||||
t.Cleanup(func() {
|
||||
mockServer.ShutDown()
|
||||
})
|
||||
|
||||
noOfDBs := 4
|
||||
|
||||
// Set values for 3 different databases.
|
||||
for i := 0; i < noOfDBs; i++ {
|
||||
_ = mockServer.SelectDB(i)
|
||||
for k := 1; k <= 3; k++ {
|
||||
_, _, _ = mockServer.Set(
|
||||
fmt.Sprintf("key%d", k),
|
||||
fmt.Sprintf("value%d", k),
|
||||
echovault.SetOptions{},
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
// Connect to the server
|
||||
conn, err := internal.GetConnection("localhost", port)
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
return
|
||||
}
|
||||
client := resp.NewConn(conn)
|
||||
|
||||
// Send FLUSHDB command.
|
||||
// This should flush database 0 as it's the default database.
|
||||
if err = client.WriteArray([]resp.Value{resp.StringValue("FLUSHDB")}); err != nil {
|
||||
t.Error(err)
|
||||
return
|
||||
}
|
||||
res, _, err := client.ReadValue()
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
return
|
||||
}
|
||||
|
||||
if !strings.EqualFold(res.String(), "ok") {
|
||||
t.Errorf("expected OK response, got \"%s\"", res.String())
|
||||
return
|
||||
}
|
||||
|
||||
// Check that database 0 is cleared.
|
||||
_ = mockServer.SelectDB(0)
|
||||
for i := 1; i <= 3; i++ {
|
||||
key := fmt.Sprintf("key%d", i)
|
||||
val, err := mockServer.Get(key)
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
return
|
||||
}
|
||||
if val != "" {
|
||||
t.Errorf("expected key %s to be empty, got \"%s\"", key, val)
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
// Check that all the other databases still have their values.
|
||||
for i := 1; i < noOfDBs; i++ {
|
||||
_ = mockServer.SelectDB(i)
|
||||
for k := 1; k < 3; k++ {
|
||||
key := fmt.Sprintf("key%d", k)
|
||||
value := fmt.Sprintf("value%d", k)
|
||||
val, err := mockServer.Get(key)
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
return
|
||||
}
|
||||
if val != value {
|
||||
t.Errorf("expected value for key %s to be \"%s\", got \"%s\"", key, value, val)
|
||||
return
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Sent FLUSHALL command.
|
||||
// This should flush all the databases.
|
||||
if err = client.WriteArray([]resp.Value{resp.StringValue("FLUSHALL")}); err != nil {
|
||||
t.Error(err)
|
||||
return
|
||||
}
|
||||
res, _, err = client.ReadValue()
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
return
|
||||
}
|
||||
|
||||
if !strings.EqualFold(res.String(), "ok") {
|
||||
t.Errorf("expected OK response, got \"%s\"", res.String())
|
||||
return
|
||||
}
|
||||
|
||||
// Check that all the databases are cleared.
|
||||
for i := 0; i < noOfDBs; i++ {
|
||||
_ = mockServer.SelectDB(i)
|
||||
for k := 1; k < 3; k++ {
|
||||
key := fmt.Sprintf("key%d", k)
|
||||
val, err := mockServer.Get(key)
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
return
|
||||
}
|
||||
if val != "" {
|
||||
t.Errorf("expected empty string at key %s, got \"%s\"", key, val)
|
||||
return
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
|
Reference in New Issue
Block a user