From 3f98ee77d07c0cb732fdc0f1e90b4e41a208d292 Mon Sep 17 00:00:00 2001 From: NitishKumar06 Date: Tue, 13 Feb 2024 22:36:09 +0530 Subject: [PATCH] etcdserver: add TestErrorLogs test to check for error logs Signed-off-by: NitishKumar06 fix static analysis check Signed-off-by: NitishKumar06 minor fixes Signed-off-by: NitishKumar06 --- tests/e2e/logging_test.go | 64 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 tests/e2e/logging_test.go diff --git a/tests/e2e/logging_test.go b/tests/e2e/logging_test.go new file mode 100644 index 000000000..5476f46d5 --- /dev/null +++ b/tests/e2e/logging_test.go @@ -0,0 +1,64 @@ +// Copyright 2024 The etcd Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package e2e + +import ( + "context" + "encoding/json" + "testing" + "time" + + "github.com/stretchr/testify/require" + + "go.etcd.io/etcd/tests/v3/framework/e2e" +) + +func TestNoErrorLogsDuringNormalOperations(t *testing.T) { + e2e.BeforeTest(t) + ctx := context.TODO() + + epc, err := e2e.NewEtcdProcessCluster(ctx, t, + e2e.WithClusterSize(1), + e2e.WithLogLevel("debug"), + ) + require.NoError(t, err) + defer epc.Close() + + logs := epc.Procs[0].Logs() + time.Sleep(time.Second) + if err = epc.Close(); err != nil { + t.Fatalf("error closing etcd processes (%v)", err) + } + var entry logEntry + lines := logs.Lines() + if len(lines) == 0 { + t.Errorf("Expected at least one log line") + } + + allowedErrors := map[string]bool{"setting up serving from embedded etcd failed.": true} + + for _, line := range lines { + err := json.Unmarshal([]byte(line), &entry) + if err != nil { + t.Errorf("Failed to parse log line as json, err: %q, line: %s", err, line) + continue + } + if allowedErrors[entry.Message] { + continue + } + + require.NotEqual(t, "error", entry.Level) + } +}