Skip to content

Commit 0a2c591

Browse files
committed
check logs for CRIT|PANIC|FATAL logs and fail the test
1 parent f3e38d0 commit 0a2c591

File tree

7 files changed

+99
-0
lines changed

7 files changed

+99
-0
lines changed

framework/config.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,8 @@ func Load[X any](t *testing.T) (*X, error) {
132132
require.NoError(t, err)
133133
err = WriteAllContainersLogs()
134134
require.NoError(t, err)
135+
err = checkNodeLogErrors(DefaultCTFLogsDir)
136+
require.NoError(t, err)
135137
})
136138
// TODO: not all the people have AWS access, sadly enough, uncomment when granted
137139
//if os.Getenv(EnvVarAWSSecretsManager) == "true" {

framework/logs.go

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
package framework
2+
3+
import (
4+
"bufio"
5+
"fmt"
6+
"os"
7+
"path/filepath"
8+
"regexp"
9+
)
10+
11+
// checkNodeLogsErrors check Chainlink nodes logs for error levels
12+
func checkNodeLogErrors(dir string) error {
13+
fileRegex := regexp.MustCompile(`^node.*\.log$`)
14+
logLevelRegex := regexp.MustCompile(`(CRIT|PANIC|FATAL)`)
15+
16+
err := filepath.Walk(dir, func(path string, info os.FileInfo, err error) error {
17+
if err != nil {
18+
return err
19+
}
20+
if !info.IsDir() && fileRegex.MatchString(info.Name()) {
21+
file, err := os.Open(path)
22+
if err != nil {
23+
return fmt.Errorf("failed to open file %s: %w", path, err)
24+
}
25+
defer file.Close()
26+
27+
scanner := bufio.NewScanner(file)
28+
lineNumber := 1
29+
for scanner.Scan() {
30+
line := scanner.Text()
31+
if logLevelRegex.MatchString(line) {
32+
return fmt.Errorf("file %s contains a matching log level at line %d: %s", path, lineNumber, line)
33+
}
34+
lineNumber++
35+
}
36+
if err := scanner.Err(); err != nil {
37+
return fmt.Errorf("error reading file %s: %w", path, err)
38+
}
39+
}
40+
return nil
41+
})
42+
return err
43+
}

framework/logs_test.go

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
package framework
2+
3+
import (
4+
"path/filepath"
5+
"testing"
6+
)
7+
8+
// Table test for checkLogFilesForLevels
9+
func TestCheckLogFilesForLevels(t *testing.T) {
10+
tests := []struct {
11+
name string
12+
dir string
13+
content string
14+
expectError bool
15+
}{
16+
{
17+
name: "Clean",
18+
dir: "clean",
19+
expectError: false,
20+
},
21+
{
22+
name: "Contains CRIT",
23+
dir: "crit",
24+
expectError: true,
25+
},
26+
{
27+
name: "Contains PANIC",
28+
dir: "panic",
29+
expectError: true,
30+
},
31+
{
32+
name: "Contains FATAL",
33+
dir: "fatal",
34+
expectError: true,
35+
},
36+
}
37+
38+
for _, tt := range tests {
39+
t.Run(tt.name, func(t *testing.T) {
40+
err := checkNodeLogErrors(filepath.Join("testdata", tt.dir))
41+
if tt.expectError && err == nil {
42+
t.Errorf("expected error but got none")
43+
} else if !tt.expectError && err != nil {
44+
t.Errorf("did not expect error but got: %v", err)
45+
}
46+
})
47+
}
48+
}
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
2024-11-29T09:09:31.901Z [INFO] StartUpHealthReport shutdown complete services/health.go:47 version=2.17.0@5ebb632
2+
2024-11-29T09:09:31.901Z [DEBUG] StartUpHealthReport shutdown complete services/health.go:47 version=2.17.0@5ebb632
3+
2024-11-29T09:09:31.901Z [WARN] StartUpHealthReport shutdown complete services/health.go:47 version=2.17.0@5ebb632
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
2024-11-29T09:09:31.901Z [CRIT] StartUpHealthReport shutdown complete services/health.go:47 version=2.17.0@5ebb632
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
2024-11-29T09:09:31.901Z [FATAL] StartUpHealthReport shutdown complete services/health.go:47 version=2.17.0@5ebb632
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
2024-11-29T09:09:31.901Z [PANIC] StartUpHealthReport shutdown complete services/health.go:47 version=2.17.0@5ebb632

0 commit comments

Comments
 (0)