Added test setup that adds keys for RANDOMKEY command instead of relying on keys from other tests.

This commit is contained in:
Kelvin Clement Mwinuka
2024-08-18 02:17:45 +08:00
parent e5977ec5ef
commit f28a59cae8
3 changed files with 1814 additions and 1707 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -642,22 +642,22 @@ func (server *EchoVault) randomKey(ctx context.Context) string {
defer server.storeLock.RUnlock() defer server.storeLock.RUnlock()
database := ctx.Value("Database").(int) database := ctx.Value("Database").(int)
_max := len(server.store[database])
if _max == 0 {
return ""
}
randnum := rand.Intn(_max) _max := len(server.store[database])
i := 0 if _max == 0 {
var randkey string return ""
}
for key, _ := range server.store[database] { randnum := rand.Intn(_max)
if i == randnum { i := 0
randkey = key var randkey string
} else {
i++ for key, _ := range server.store[database] {
} if i == randnum {
randkey = key
} else {
i++
}
} }
return randkey return randkey

View File

@@ -2021,7 +2021,6 @@ func Test_Generic(t *testing.T) {
t.Run("Test_HandlerDECR", func(t *testing.T) { t.Run("Test_HandlerDECR", func(t *testing.T) {
t.Parallel() t.Parallel()
conn, err := internal.GetConnection("localhost", port) conn, err := internal.GetConnection("localhost", port)
if err != nil { if err != nil {
t.Error(err) t.Error(err)
return return
@@ -2760,6 +2759,20 @@ func Test_Generic(t *testing.T) {
t.Run("Test_HandleRANDOMKEY", func(t *testing.T) { t.Run("Test_HandleRANDOMKEY", func(t *testing.T) {
t.Parallel() t.Parallel()
// Populate the store with keys first
for i := 0; i < 10; i++ {
_, _, err := mockServer.Set(
fmt.Sprintf("RandomKey%d", i),
fmt.Sprintf("Value%d", i),
echovault.SetOptions{},
)
if err != nil {
t.Error(err)
return
}
}
conn, err := internal.GetConnection("localhost", port) conn, err := internal.GetConnection("localhost", port)
if err != nil { if err != nil {
t.Error(err) t.Error(err)
@@ -2770,23 +2783,18 @@ func Test_Generic(t *testing.T) {
}() }()
client := resp.NewConn(conn) client := resp.NewConn(conn)
// Reuse existing keys to test RANDOMKEY expected := "Key"
// All keys used for other tests contain the substring 'Key' if err = client.WriteArray([]resp.Value{resp.StringValue("RANDOMKEY")}); err != nil {
expected := "Key" t.Error(err)
// Test RANDOMKEY }
if err = client.WriteArray([]resp.Value{resp.StringValue("RANDOMKEY")}); err != nil {
t.Error(err)
}
res, _, err := client.ReadValue() res, _, err := client.ReadValue()
if err != nil { if err != nil {
t.Error(err) t.Error(err)
} }
if !strings.Contains(res.String(), expected) {
t.Errorf("expected a key containing substring '%s', got %s", expected, res.String())
}
if !strings.Contains(res.String(), expected) {
t.Errorf("expected a key containing substring '%s', got %s", expected, res.String())
}
}) })
} }