diff --git a/commands.go b/commands.go index dbbad083f..2537c0ac5 100644 --- a/commands.go +++ b/commands.go @@ -558,6 +558,13 @@ func (c cmdable) Wait(ctx context.Context, numSlaves int, timeout time.Duration) return cmd } +func (c cmdable) WaitAOF(ctx context.Context, numLocal, numSlaves int, timeout time.Duration) *IntCmd { + cmd := NewIntCmd(ctx, "waitAOF", numLocal, numSlaves, int(timeout/time.Millisecond)) + cmd.setReadTimeout(timeout) + _ = c(ctx, cmd) + return cmd +} + func (c statefulCmdable) Select(ctx context.Context, index int) *StatusCmd { cmd := NewStatusCmd(ctx, "select", index) _ = c(ctx, cmd) diff --git a/commands_test.go b/commands_test.go index 812d682d6..8e00c8368 100644 --- a/commands_test.go +++ b/commands_test.go @@ -95,6 +95,18 @@ var _ = Describe("Commands", func() { Expect(time.Now()).To(BeTemporally("~", start.Add(wait), 3*time.Second)) }) + It("should WaitAOF", func() { + const waitAOF = 3 * time.Second + Skip("flaky test") + + // assuming that the redis instance doesn't have AOF enabled + start := time.Now() + val, err := client.WaitAOF(ctx, 1, 1, waitAOF).Result() + Expect(err).NotTo(HaveOccurred()) + Expect(val).NotTo(ContainSubstring("ERR WAITAOF cannot be used when numlocal is set but appendonly is disabled")) + Expect(time.Now()).To(BeTemporally("~", start.Add(waitAOF), 3*time.Second)) + }) + It("should Select", func() { pipe := client.Pipeline() sel := pipe.Select(ctx, 1)