diff --git a/client/config/config_test.go b/client/config/config_test.go index 83218b5ba..ce24de39f 100644 --- a/client/config/config_test.go +++ b/client/config/config_test.go @@ -10,7 +10,7 @@ import ( "github.com/hashicorp/consul-template/config" "github.com/hashicorp/nomad/ci" "github.com/hashicorp/nomad/helper/pointer" - "github.com/stretchr/testify/require" + "github.com/shoenig/test/must" ) func TestConfigRead(t *testing.T) { @@ -19,16 +19,12 @@ func TestConfigRead(t *testing.T) { config := Config{} actual := config.Read("cake") - if actual != "" { - t.Errorf("Expected empty string; found %s", actual) - } + must.Eq(t, "", actual) expected := "chocolate" config.Options = map[string]string{"cake": expected} actual = config.Read("cake") - if actual != expected { - t.Errorf("Expected %s, found %s", expected, actual) - } + must.Eq(t, expected, actual) } func TestConfigReadDefault(t *testing.T) { @@ -38,16 +34,12 @@ func TestConfigReadDefault(t *testing.T) { expected := "vanilla" actual := config.ReadDefault("cake", expected) - if actual != expected { - t.Errorf("Expected %s, found %s", expected, actual) - } + must.Eq(t, expected, actual) expected = "chocolate" config.Options = map[string]string{"cake": expected} actual = config.ReadDefault("cake", "vanilla") - if actual != expected { - t.Errorf("Expected %s, found %s", expected, actual) - } + must.Eq(t, expected, actual) } func mockWaitConfig() *WaitConfig { @@ -93,13 +85,9 @@ func TestWaitConfig_Copy(t *testing.T) { }, } - for _, _case := range cases { - t.Run(_case.Name, func(t *testing.T) { - result := _case.Expected.Equal(_case.Wait.Copy()) - if !result { - t.Logf("\nExpected %v\n Found %v", _case.Expected, result) - } - require.True(t, result) + for _, tc := range cases { + t.Run(tc.Name, func(t *testing.T) { + must.Equal(t, tc.Expected, tc.Wait.Copy()) }) } } @@ -131,9 +119,9 @@ func TestWaitConfig_IsEmpty(t *testing.T) { }, } - for _, _case := range cases { - t.Run(_case.Name, func(t *testing.T) { - require.Equal(t, _case.Expected, _case.Wait.IsEmpty()) + for _, tc := range cases { + t.Run(tc.Name, func(t *testing.T) { + must.Eq(t, tc.Expected, tc.Wait.IsEmpty()) }) } } @@ -176,9 +164,9 @@ func TestWaitConfig_IsEqual(t *testing.T) { }, } - for _, _case := range cases { - t.Run(_case.Name, func(t *testing.T) { - require.Equal(t, _case.Expected, _case.Wait.Equal(_case.Other)) + for _, tc := range cases { + t.Run(tc.Name, func(t *testing.T) { + must.Eq(t, tc.Expected, tc.Wait.Equal(tc.Other)) }) } } @@ -226,13 +214,13 @@ func TestWaitConfig_IsValid(t *testing.T) { }, } - for _, _case := range cases { - t.Run(_case.Name, func(t *testing.T) { - if _case.Expected == "" { - require.Nil(t, _case.Retry.Validate()) + for _, tc := range cases { + t.Run(tc.Name, func(t *testing.T) { + err := tc.Retry.Validate() + if tc.Expected == "" { + must.NoError(t, err) } else { - err := _case.Retry.Validate() - require.Contains(t, err.Error(), _case.Expected) + must.ErrorContains(t, err, tc.Expected) } }) } @@ -285,14 +273,10 @@ func TestWaitConfig_Merge(t *testing.T) { }, } - for _, _case := range cases { - t.Run(_case.Name, func(t *testing.T) { - merged := _case.Target.Merge(_case.Other) - result := _case.Expected.Equal(merged) - if !result { - t.Logf("\nExpected %v\n Found %v", _case.Expected, merged) - } - require.True(t, result) + for _, tc := range cases { + t.Run(tc.Name, func(t *testing.T) { + merged := tc.Target.Merge(tc.Other) + must.Equal(t, tc.Expected, merged) }) } } @@ -312,9 +296,9 @@ func TestWaitConfig_ToConsulTemplate(t *testing.T) { } actual, err := clientWaitConfig.ToConsulTemplate() - require.NoError(t, err) - require.Equal(t, *expected.Min, *actual.Min) - require.Equal(t, *expected.Max, *actual.Max) + must.NoError(t, err) + must.Eq(t, *expected.Min, *actual.Min) + must.Eq(t, *expected.Max, *actual.Max) } func mockRetryConfig() *RetryConfig { @@ -392,13 +376,9 @@ func TestRetryConfig_Copy(t *testing.T) { }, } - for _, _case := range cases { - t.Run(_case.Name, func(t *testing.T) { - result := _case.Expected.Equal(_case.Retry.Copy()) - if !result { - t.Logf("\nExpected %v\n Found %v", _case.Expected, result) - } - require.True(t, result) + for _, tc := range cases { + t.Run(tc.Name, func(t *testing.T) { + must.Equal(t, tc.Expected, tc.Retry.Copy()) }) } } @@ -430,9 +410,9 @@ func TestRetryConfig_IsEmpty(t *testing.T) { }, } - for _, _case := range cases { - t.Run(_case.Name, func(t *testing.T) { - require.Equal(t, _case.Expected, _case.Retry.IsEmpty()) + for _, tc := range cases { + t.Run(tc.Name, func(t *testing.T) { + must.Eq(t, tc.Expected, tc.Retry.IsEmpty()) }) } } @@ -520,9 +500,9 @@ func TestRetryConfig_IsEqual(t *testing.T) { }, } - for _, _case := range cases { - t.Run(_case.Name, func(t *testing.T) { - require.Equal(t, _case.Expected, _case.Retry.Equal(_case.Other)) + for _, tc := range cases { + t.Run(tc.Name, func(t *testing.T) { + must.Eq(t, tc.Expected, tc.Retry.Equal(tc.Other)) }) } } @@ -585,13 +565,13 @@ func TestRetryConfig_IsValid(t *testing.T) { }, } - for _, _case := range cases { - t.Run(_case.Name, func(t *testing.T) { - if _case.Expected == "" { - require.Nil(t, _case.Retry.Validate()) + for _, tc := range cases { + t.Run(tc.Name, func(t *testing.T) { + err := tc.Retry.Validate() + if tc.Expected == "" { + must.NoError(t, err) } else { - err := _case.Retry.Validate() - require.Contains(t, err.Error(), _case.Expected) + must.ErrorContains(t, err, tc.Expected) } }) } @@ -662,14 +642,10 @@ func TestRetryConfig_Merge(t *testing.T) { }, } - for _, _case := range cases { - t.Run(_case.Name, func(t *testing.T) { - merged := _case.Target.Merge(_case.Other) - result := _case.Expected.Equal(merged) - if !result { - t.Logf("\nExpected %v\n Found %v", _case.Expected, merged) - } - require.True(t, result) + for _, tc := range cases { + t.Run(tc.Name, func(t *testing.T) { + merged := tc.Target.Merge(tc.Other) + must.Equal(t, tc.Expected, merged) }) } } @@ -685,8 +661,7 @@ func TestRetryConfig_ToConsulTemplate(t *testing.T) { } actual := mockRetryConfig() - - require.Equal(t, *expected.Attempts, *actual.Attempts) - require.Equal(t, *expected.Backoff, *actual.Backoff) - require.Equal(t, *expected.MaxBackoff, *actual.MaxBackoff) + must.Eq(t, *expected.Attempts, *actual.Attempts) + must.Eq(t, *expected.Backoff, *actual.Backoff) + must.Eq(t, *expected.MaxBackoff, *actual.MaxBackoff) } diff --git a/client/logmon/logging/rotator_test.go b/client/logmon/logging/rotator_test.go index bd7365a5e..ef91338ae 100644 --- a/client/logmon/logging/rotator_test.go +++ b/client/logmon/logging/rotator_test.go @@ -12,7 +12,7 @@ import ( "github.com/hashicorp/nomad/helper/testlog" "github.com/hashicorp/nomad/testutil" - "github.com/stretchr/testify/require" + "github.com/shoenig/test/must" "go.uber.org/goleak" ) @@ -24,8 +24,8 @@ func TestFileRotator_IncorrectPath(t *testing.T) { defer goleak.VerifyNone(t) _, err := NewFileRotator("/foo", baseFileName, 10, 10, testlog.HCLogger(t)) - require.Error(t, err) - require.Contains(t, err.Error(), "no such file or directory") + must.Error(t, err) + must.ErrorContains(t, err, "no such file or directory") } func TestFileRotator_CreateNewFile(t *testing.T) { @@ -34,11 +34,11 @@ func TestFileRotator_CreateNewFile(t *testing.T) { path := t.TempDir() fr, err := NewFileRotator(path, baseFileName, 10, 10, testlog.HCLogger(t)) - require.NoError(t, err) + must.NoError(t, err) defer fr.Close() _, err = os.Stat(filepath.Join(path, "redis.stdout.0")) - require.NoError(t, err) + must.NoError(t, err) } func TestFileRotator_OpenLastFile(t *testing.T) { @@ -50,18 +50,18 @@ func TestFileRotator_OpenLastFile(t *testing.T) { fname2 := filepath.Join(path, "redis.stdout.2") f1, err := os.Create(fname1) - require.NoError(t, err) + must.NoError(t, err) f1.Close() f2, err := os.Create(fname2) - require.NoError(t, err) + must.NoError(t, err) f2.Close() fr, err := NewFileRotator(path, baseFileName, 10, 10, testlog.HCLogger(t)) - require.NoError(t, err) + must.NoError(t, err) defer fr.Close() - require.Equal(t, fname2, fr.currentFile.Name()) + must.Eq(t, fname2, fr.currentFile.Name()) } func TestFileRotator_WriteToCurrentFile(t *testing.T) { @@ -71,11 +71,11 @@ func TestFileRotator_WriteToCurrentFile(t *testing.T) { fname1 := filepath.Join(path, "redis.stdout.0") f1, err := os.Create(fname1) - require.NoError(t, err) + must.NoError(t, err) f1.Close() fr, err := NewFileRotator(path, baseFileName, 10, 5, testlog.HCLogger(t)) - require.NoError(t, err) + must.NoError(t, err) defer fr.Close() fr.Write([]byte("abcde")) @@ -92,7 +92,7 @@ func TestFileRotator_WriteToCurrentFile(t *testing.T) { return true, nil }, func(err error) { - require.NoError(t, err) + must.NoError(t, err) }) } @@ -102,13 +102,13 @@ func TestFileRotator_RotateFiles(t *testing.T) { path := t.TempDir() fr, err := NewFileRotator(path, baseFileName, 10, 5, testlog.HCLogger(t)) - require.NoError(t, err) + must.NoError(t, err) defer fr.Close() str := "abcdefgh" nw, err := fr.Write([]byte(str)) - require.NoError(t, err) - require.Equal(t, len(str), nw) + must.NoError(t, err) + must.Eq(t, len(str), nw) testutil.WaitForResult(func() (bool, error) { fname1 := filepath.Join(path, "redis.stdout.0") @@ -135,7 +135,7 @@ func TestFileRotator_RotateFiles(t *testing.T) { return true, nil }, func(err error) { - require.NoError(t, err) + must.NoError(t, err) }) } @@ -145,7 +145,7 @@ func TestFileRotator_RotateFiles_Boundary(t *testing.T) { path := t.TempDir() fr, err := NewFileRotator(path, baseFileName, 10, 5, testlog.HCLogger(t)) - require.NoError(t, err) + must.NoError(t, err) defer fr.Close() // We will write three times: @@ -162,8 +162,8 @@ func TestFileRotator_RotateFiles_Boundary(t *testing.T) { for _, str := range []string{"ab\ncdef\n", "1234567890", "\n"} { nw, err := fr.Write([]byte(str)) - require.NoError(t, err) - require.Equal(t, len(str), nw) + must.NoError(t, err) + must.Eq(t, len(str), nw) } testutil.WaitForResult(func() (bool, error) { @@ -181,7 +181,7 @@ func TestFileRotator_RotateFiles_Boundary(t *testing.T) { return true, nil }, func(err error) { - require.NoError(t, err) + must.NoError(t, err) }) } @@ -192,16 +192,16 @@ func TestFileRotator_WriteRemaining(t *testing.T) { fname1 := filepath.Join(path, "redis.stdout.0") err := os.WriteFile(fname1, []byte("abcd"), 0600) - require.NoError(t, err) + must.NoError(t, err) fr, err := NewFileRotator(path, baseFileName, 10, 5, testlog.HCLogger(t)) - require.NoError(t, err) + must.NoError(t, err) defer fr.Close() str := "efghijkl" nw, err := fr.Write([]byte(str)) - require.NoError(t, err) - require.Equal(t, len(str), nw) + must.NoError(t, err) + must.Eq(t, len(str), nw) testutil.WaitForResult(func() (bool, error) { fi, err := os.Stat(fname1) @@ -240,7 +240,7 @@ func TestFileRotator_WriteRemaining(t *testing.T) { return true, nil }, func(err error) { - require.NoError(t, err) + must.NoError(t, err) }) } @@ -251,13 +251,13 @@ func TestFileRotator_PurgeOldFiles(t *testing.T) { path := t.TempDir() fr, err := NewFileRotator(path, baseFileName, 2, 2, testlog.HCLogger(t)) - require.NoError(t, err) + must.NoError(t, err) defer fr.Close() str := "abcdeghijklmn" nw, err := fr.Write([]byte(str)) - require.NoError(t, err) - require.Equal(t, len(str), nw) + must.NoError(t, err) + must.Eq(t, len(str), nw) testutil.WaitForResult(func() (bool, error) { f, err := os.ReadDir(path) @@ -271,7 +271,7 @@ func TestFileRotator_PurgeOldFiles(t *testing.T) { return true, nil }, func(err error) { - require.NoError(t, err) + must.NoError(t, err) }) } @@ -288,7 +288,7 @@ func benchmarkRotatorWithInputSize(size int, b *testing.B) { path := b.TempDir() fr, err := NewFileRotator(path, baseFileName, 5, 1024*1024, testlog.HCLogger(b)) - require.NoError(b, err) + must.NoError(b, err) defer fr.Close() b.ResetTimer() @@ -298,7 +298,7 @@ func benchmarkRotatorWithInputSize(size int, b *testing.B) { // Generate some input data := make([]byte, size) _, err := rand.Read(data) - require.NoError(b, err) + must.NoError(b, err) // Insert random new lines for i := 0; i < 100; i++ { @@ -308,6 +308,6 @@ func benchmarkRotatorWithInputSize(size int, b *testing.B) { // Write the data _, err = fr.Write(data) - require.NoError(b, err) + must.NoError(b, err) } } diff --git a/client/logmon/logmon_test.go b/client/logmon/logmon_test.go index 8d7e54394..9242aee92 100644 --- a/client/logmon/logmon_test.go +++ b/client/logmon/logmon_test.go @@ -16,13 +16,12 @@ import ( "github.com/hashicorp/nomad/helper/testlog" "github.com/hashicorp/nomad/helper/uuid" "github.com/hashicorp/nomad/testutil" - "github.com/stretchr/testify/require" + "github.com/shoenig/test/must" ) func TestLogmon_Start_rotate(t *testing.T) { ci.Parallel(t) - require := require.New(t) var stdoutFifoPath, stderrFifoPath string dir := t.TempDir() @@ -46,35 +45,35 @@ func TestLogmon_Start_rotate(t *testing.T) { } lm := NewLogMon(testlog.HCLogger(t)) - require.NoError(lm.Start(cfg)) + must.NoError(t, lm.Start(cfg)) stdout, err := fifo.OpenWriter(stdoutFifoPath) - require.NoError(err) + must.NoError(t, err) // Write enough bytes such that the log is rotated bytes1MB := make([]byte, 1024*1024) _, err = rand.Read(bytes1MB) - require.NoError(err) + must.NoError(t, err) _, err = stdout.Write(bytes1MB) - require.NoError(err) + must.NoError(t, err) testutil.WaitForResult(func() (bool, error) { _, err = os.Stat(filepath.Join(dir, "stdout.0")) return err == nil, err }, func(err error) { - require.NoError(err) + must.NoError(t, err) }) testutil.WaitForResult(func() (bool, error) { _, err = os.Stat(filepath.Join(dir, "stdout.1")) return err == nil, err }, func(err error) { - require.NoError(err) + must.NoError(t, err) }) _, err = os.Stat(filepath.Join(dir, "stdout.2")) - require.Error(err) - require.NoError(lm.Stop()) - require.NoError(lm.Stop()) + must.Error(t, err) + must.NoError(t, lm.Stop()) + must.NoError(t, lm.Stop()) } // asserts that calling Start twice restarts the log rotator and that any logs @@ -86,7 +85,6 @@ func TestLogmon_Start_restart_flusheslogs(t *testing.T) { t.Skip("windows does not support pushing data to a pipe with no servers") } - require := require.New(t) var stdoutFifoPath, stderrFifoPath string dir := t.TempDir() @@ -111,17 +109,17 @@ func TestLogmon_Start_restart_flusheslogs(t *testing.T) { lm := NewLogMon(testlog.HCLogger(t)) impl, ok := lm.(*logmonImpl) - require.True(ok) - require.NoError(lm.Start(cfg)) + must.True(t, ok) + must.NoError(t, lm.Start(cfg)) stdout, err := fifo.OpenWriter(stdoutFifoPath) - require.NoError(err) + must.NoError(t, err) stderr, err := fifo.OpenWriter(stderrFifoPath) - require.NoError(err) + must.NoError(t, err) // Write a string and assert it was written to the file _, err = stdout.Write([]byte("test\n")) - require.NoError(err) + must.NoError(t, err) testutil.WaitForResult(func() (bool, error) { raw, err := os.ReadFile(filepath.Join(dir, "stdout.0")) @@ -130,27 +128,27 @@ func TestLogmon_Start_restart_flusheslogs(t *testing.T) { } return "test\n" == string(raw), fmt.Errorf("unexpected stdout %q", string(raw)) }, func(err error) { - require.NoError(err) + must.NoError(t, err) }) - require.True(impl.tl.IsRunning()) + must.True(t, impl.tl.IsRunning()) // Close stdout and assert that logmon no longer writes to the file - require.NoError(stdout.Close()) - require.NoError(stderr.Close()) + must.NoError(t, stdout.Close()) + must.NoError(t, stderr.Close()) testutil.WaitForResult(func() (bool, error) { return !impl.tl.IsRunning(), fmt.Errorf("logmon is still running") }, func(err error) { - require.NoError(err) + must.NoError(t, err) }) stdout, err = fifo.OpenWriter(stdoutFifoPath) - require.NoError(err) + must.NoError(t, err) stderr, err = fifo.OpenWriter(stderrFifoPath) - require.NoError(err) + must.NoError(t, err) _, err = stdout.Write([]byte("te")) - require.NoError(err) + must.NoError(t, err) testutil.WaitForResult(func() (bool, error) { raw, err := os.ReadFile(filepath.Join(dir, "stdout.0")) @@ -159,19 +157,19 @@ func TestLogmon_Start_restart_flusheslogs(t *testing.T) { } return "test\n" == string(raw), fmt.Errorf("unexpected stdout %q", string(raw)) }, func(err error) { - require.NoError(err) + must.NoError(t, err) }) // Start logmon again and assert that it appended to the file - require.NoError(lm.Start(cfg)) + must.NoError(t, lm.Start(cfg)) stdout, err = fifo.OpenWriter(stdoutFifoPath) - require.NoError(err) + must.NoError(t, err) stderr, err = fifo.OpenWriter(stderrFifoPath) - require.NoError(err) + must.NoError(t, err) _, err = stdout.Write([]byte("st\n")) - require.NoError(err) + must.NoError(t, err) testutil.WaitForResult(func() (bool, error) { raw, err := os.ReadFile(filepath.Join(dir, "stdout.0")) if err != nil { @@ -181,7 +179,7 @@ func TestLogmon_Start_restart_flusheslogs(t *testing.T) { expected := "test\ntest\n" == string(raw) return expected, fmt.Errorf("unexpected stdout %q", string(raw)) }, func(err error) { - require.NoError(err) + must.NoError(t, err) }) } @@ -189,7 +187,6 @@ func TestLogmon_Start_restart_flusheslogs(t *testing.T) { func TestLogmon_Start_restart(t *testing.T) { ci.Parallel(t) - require := require.New(t) var stdoutFifoPath, stderrFifoPath string dir := t.TempDir() @@ -214,20 +211,20 @@ func TestLogmon_Start_restart(t *testing.T) { lm := NewLogMon(testlog.HCLogger(t)) impl, ok := lm.(*logmonImpl) - require.True(ok) - require.NoError(lm.Start(cfg)) + must.True(t, ok) + must.NoError(t, lm.Start(cfg)) t.Cleanup(func() { - require.NoError(lm.Stop()) + must.NoError(t, lm.Stop()) }) stdout, err := fifo.OpenWriter(stdoutFifoPath) - require.NoError(err) + must.NoError(t, err) stderr, err := fifo.OpenWriter(stderrFifoPath) - require.NoError(err) + must.NoError(t, err) // Write a string and assert it was written to the file _, err = stdout.Write([]byte("test\n")) - require.NoError(err) + must.NoError(t, err) testutil.WaitForResult(func() (bool, error) { raw, err := os.ReadFile(filepath.Join(dir, "stdout.0")) @@ -236,37 +233,37 @@ func TestLogmon_Start_restart(t *testing.T) { } return "test\n" == string(raw), fmt.Errorf("unexpected stdout %q", string(raw)) }, func(err error) { - require.NoError(err) + must.NoError(t, err) }) - require.True(impl.tl.IsRunning()) + must.True(t, impl.tl.IsRunning()) // Close stderr and assert that logmon no longer writes to the file // Keep stdout open to ensure that IsRunning requires both - require.NoError(stderr.Close()) + must.NoError(t, stderr.Close()) testutil.WaitForResult(func() (bool, error) { return !impl.tl.IsRunning(), fmt.Errorf("logmon is still running") }, func(err error) { - require.NoError(err) + must.NoError(t, err) }) // Start logmon again and assert that it can receive logs again - require.NoError(lm.Start(cfg)) + must.NoError(t, lm.Start(cfg)) stdout, err = fifo.OpenWriter(stdoutFifoPath) - require.NoError(err) + must.NoError(t, err) t.Cleanup(func() { - require.NoError(stdout.Close()) + must.NoError(t, stdout.Close()) }) stderr, err = fifo.OpenWriter(stderrFifoPath) - require.NoError(err) + must.NoError(t, err) t.Cleanup(func() { - require.NoError(stderr.Close()) + must.NoError(t, stderr.Close()) }) _, err = stdout.Write([]byte("test\n")) - require.NoError(err) + must.NoError(t, err) testutil.WaitForResult(func() (bool, error) { raw, err := os.ReadFile(filepath.Join(dir, "stdout.0")) if err != nil { @@ -276,7 +273,7 @@ func TestLogmon_Start_restart(t *testing.T) { expected := "test\ntest\n" == string(raw) return expected, fmt.Errorf("unexpected stdout %q", string(raw)) }, func(err error) { - require.NoError(err) + must.NoError(t, err) }) } @@ -304,6 +301,6 @@ func TestLogmon_NewError(t *testing.T) { rotator := panicWriter{} w, err := newLogRotatorWrapper(path, logger, rotator) - require.Error(t, err) - require.Nil(t, w) + must.Error(t, err) + must.Nil(t, w) }