From 7f032b0b396f37c055eaeac669570a1bd69ad4e7 Mon Sep 17 00:00:00 2001 From: Agniva De Sarker Date: Mon, 18 Nov 2024 14:55:34 +0530 Subject: [PATCH] MM-61524: Fix flaky test RedisPubSub (#29311) - We refactor some of the testlib assertion code and add a new function to just return true or false. https://mattermost.atlassian.net/browse/MM-61524 ```release-note NONE ``` --- server/channels/testlib/assertions.go | 40 +++++++++++++-------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/server/channels/testlib/assertions.go b/server/channels/testlib/assertions.go index a7ec27cdaa1..1e7cf3c7647 100644 --- a/server/channels/testlib/assertions.go +++ b/server/channels/testlib/assertions.go @@ -7,33 +7,33 @@ import ( "encoding/json" "io" "testing" + + "github.com/stretchr/testify/assert" ) // AssertLog asserts that a JSON-encoded buffer of logs contains one with the given level and message. func AssertLog(t *testing.T, logs io.Reader, level, message string) { - dec := json.NewDecoder(logs) - for { - var log struct { - Level string - Msg string - } - if err := dec.Decode(&log); err == io.EOF { - break - } else if err != nil { - t.Logf("Error decoding log entry: %s", err) - continue - } - - if log.Level == level && log.Msg == message { - return - } + t.Helper() + if !hasMsg(t, logs, level, message) { + assert.Failf(t, "failed to find %s log message: %s", level, message) } - - t.Fatalf("failed to find %s log message: %s", level, message) } // AssertNoLog asserts that a JSON-encoded buffer of logs does not contains one with the given level and message. func AssertNoLog(t *testing.T, logs io.Reader, level, message string) { + t.Helper() + if hasMsg(t, logs, level, message) { + assert.Failf(t, "found %s log message: %s", level, message) + } +} + +// CheckLog checks whether a JSON-encoded buffer of logs contain the given +// message at the level or not. +func CheckLog(t *testing.T, logs io.Reader, level, message string) bool { + return hasMsg(t, logs, level, message) +} + +func hasMsg(t *testing.T, logs io.Reader, level, message string) bool { dec := json.NewDecoder(logs) for { var log struct { @@ -48,8 +48,8 @@ func AssertNoLog(t *testing.T, logs io.Reader, level, message string) { } if log.Level == level && log.Msg == message { - t.Fatalf("found %s log message: %s", level, message) - return + return true } } + return false }