Skip to content

Commit 940a4bb

Browse files
committed
Make logrus' log level configurable via FC_TEST_LOG_LEVEL
It makes `go test` less noisy and helps us to find the usage of the global default logger. Since Machine and Client take logrus.Entry, they shouldn't use the default one.
1 parent 242184b commit 940a4bb

File tree

5 files changed

+46
-22
lines changed

5 files changed

+46
-22
lines changed

fctesting/utils.go

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,12 @@ package fctesting
1616
import (
1717
"os"
1818
"testing"
19+
20+
log "github.com/sirupsen/logrus"
1921
)
2022

2123
const rootDisableEnvName = "DISABLE_ROOT_TESTS"
24+
const logLevelEnvName = "FC_TEST_LOG_LEVEL"
2225

2326
var rootDisabled bool
2427

@@ -43,3 +46,24 @@ func RequiresRoot(t testing.TB) {
4346
rootDisableEnvName)
4447
}
4548
}
49+
50+
func newLogger() *log.Logger {
51+
str := os.Getenv(logLevelEnvName)
52+
if str != "" {
53+
logLevel, err := log.ParseLevel(str)
54+
if err != nil {
55+
panic(err)
56+
}
57+
return &log.Logger{
58+
Out: os.Stdout,
59+
Level: logLevel,
60+
}
61+
} else {
62+
return log.New()
63+
}
64+
}
65+
66+
// NewLogEntry creates log.Entry. The level is specified by "FC_TEST_LOG_LEVEL" environment variable
67+
func NewLogEntry() *log.Entry {
68+
return log.NewEntry(newLogger())
69+
}

firecracker_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import (
88
"time"
99

1010
models "github.com/firecracker-microvm/firecracker-go-sdk/client/models"
11-
log "github.com/sirupsen/logrus"
11+
"github.com/firecracker-microvm/firecracker-go-sdk/fctesting"
1212
)
1313

1414
func TestClient(t *testing.T) {
@@ -42,7 +42,7 @@ func TestClient(t *testing.T) {
4242
PathOnHost: String(filepath.Join(testDataPath, "drive-2.img")),
4343
}
4444

45-
client := NewClient(socketpath, log.NewEntry(log.New()), true)
45+
client := NewClient(socketpath, fctesting.NewLogEntry(), true)
4646
deadlineCtx, deadlineCancel := context.WithTimeout(ctx, 250*time.Millisecond)
4747
defer deadlineCancel()
4848
if err := waitForAliveVMM(deadlineCtx, client); err != nil {

handlers_test.go

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,6 @@ import (
88
"reflect"
99
"testing"
1010

11-
log "github.com/sirupsen/logrus"
12-
1311
models "github.com/firecracker-microvm/firecracker-go-sdk/client/models"
1412
ops "github.com/firecracker-microvm/firecracker-go-sdk/client/operations"
1513
"github.com/firecracker-microvm/firecracker-go-sdk/fctesting"
@@ -150,7 +148,7 @@ func TestHandlerListRun(t *testing.T) {
150148

151149
ctx := context.Background()
152150
m := &Machine{
153-
logger: log.NewEntry(log.New()),
151+
logger: fctesting.NewLogEntry(),
154152
}
155153
if err := h.Run(ctx, m); err != bazErr {
156154
t.Errorf("expected an error, but received %v", err)
@@ -615,8 +613,8 @@ func TestHandlers(t *testing.T) {
615613
// resetting called for the next test
616614
called = ""
617615

618-
client := NewClient(socketpath, log.NewEntry(log.New()), true, WithOpsClient(&c.Client))
619-
m, err := NewMachine(ctx, c.Config, WithClient(client))
616+
client := NewClient(socketpath, fctesting.NewLogEntry(), true, WithOpsClient(&c.Client))
617+
m, err := NewMachine(ctx, c.Config, WithClient(client), WithLogger(fctesting.NewLogEntry()))
620618
if err != nil {
621619
t.Fatalf("failed to create machine: %v", err)
622620
}

machine.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -420,10 +420,10 @@ func (m *Machine) StopVMM() error {
420420

421421
func (m *Machine) stopVMM() error {
422422
if m.cmd != nil && m.cmd.Process != nil {
423-
log.Debug("stopVMM(): sending sigterm to firecracker")
423+
m.logger.Debug("stopVMM(): sending sigterm to firecracker")
424424
return m.cmd.Process.Signal(syscall.SIGTERM)
425425
}
426-
log.Debug("stopVMM(): no firecracker process running, not sending a signal")
426+
m.logger.Debug("stopVMM(): no firecracker process running, not sending a signal")
427427

428428
// don't return an error if the process isn't even running
429429
return nil
@@ -517,7 +517,7 @@ func (m *Machine) createMachine(ctx context.Context) error {
517517
m.logger.Debug("PutMachineConfiguration returned")
518518
err = m.refreshMachineConfiguration()
519519
if err != nil {
520-
log.Errorf("Unable to inspect Firecracker MachineConfiguration. Continuing anyway. %s", err)
520+
m.logger.Errorf("Unable to inspect Firecracker MachineConfiguration. Continuing anyway. %s", err)
521521
}
522522
m.logger.Debug("createMachine returning")
523523
return err
@@ -595,7 +595,7 @@ func (m *Machine) UpdateGuestNetworkInterfaceRateLimit(ctx context.Context, ifac
595595
// attachDrive attaches a secondary block device
596596
func (m *Machine) attachDrive(ctx context.Context, dev models.Drive) error {
597597
hostPath := StringValue(dev.PathOnHost)
598-
log.Infof("Attaching drive %s, slot %s, root %t.", hostPath, StringValue(dev.DriveID), BoolValue(dev.IsRootDevice))
598+
m.logger.Infof("Attaching drive %s, slot %s, root %t.", hostPath, StringValue(dev.DriveID), BoolValue(dev.IsRootDevice))
599599
respNoContent, err := m.client.PutGuestDriveByID(ctx, StringValue(dev.DriveID), &dev)
600600
if err == nil {
601601
m.logger.Printf("Attached drive %s: %s", hostPath, respNoContent.Error())

machine_test.go

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,6 @@ import (
3333
"github.com/firecracker-microvm/firecracker-go-sdk/client/operations"
3434
ops "github.com/firecracker-microvm/firecracker-go-sdk/client/operations"
3535
"github.com/firecracker-microvm/firecracker-go-sdk/fctesting"
36-
log "github.com/sirupsen/logrus"
3736
"github.com/stretchr/testify/assert"
3837
)
3938

@@ -86,7 +85,8 @@ func TestNewMachine(t *testing.T) {
8685
ExecFile: "/path/to/firecracker",
8786
ChrootStrategy: NewNaiveChrootStrategy("path", "kernel-image-path"),
8887
},
89-
})
88+
},
89+
WithLogger(fctesting.NewLogEntry()))
9090
if err != nil {
9191
t.Fatalf("failed to create new machine: %v", err)
9292
}
@@ -241,7 +241,7 @@ func TestJailerMicroVMExecution(t *testing.T) {
241241
WithStderr(os.Stderr).
242242
Build(ctx)
243243

244-
m, err := NewMachine(ctx, cfg, WithProcessRunner(cmd))
244+
m, err := NewMachine(ctx, cfg, WithProcessRunner(cmd), WithLogger(fctesting.NewLogEntry()))
245245
if err != nil {
246246
t.Fatalf("failed to create new machine: %v", err)
247247
}
@@ -304,7 +304,7 @@ func TestMicroVMExecution(t *testing.T) {
304304
WithBin(getFirecrackerBinaryPath()).
305305
Build(ctx)
306306

307-
m, err := NewMachine(ctx, cfg, WithProcessRunner(cmd))
307+
m, err := NewMachine(ctx, cfg, WithProcessRunner(cmd), WithLogger(fctesting.NewLogEntry()))
308308
if err != nil {
309309
t.Fatalf("failed to create new machine: %v", err)
310310
}
@@ -368,7 +368,7 @@ func TestStartVMM(t *testing.T) {
368368
WithSocketPath(cfg.SocketPath).
369369
WithBin(getFirecrackerBinaryPath()).
370370
Build(ctx)
371-
m, err := NewMachine(ctx, cfg, WithProcessRunner(cmd))
371+
m, err := NewMachine(ctx, cfg, WithProcessRunner(cmd), WithLogger(fctesting.NewLogEntry()))
372372
if err != nil {
373373
t.Fatalf("failed to create new machine: %v", err)
374374
}
@@ -416,7 +416,7 @@ func TestStartVMMOnce(t *testing.T) {
416416
WithSocketPath(cfg.SocketPath).
417417
WithBin(getFirecrackerBinaryPath()).
418418
Build(ctx)
419-
m, err := NewMachine(ctx, cfg, WithProcessRunner(cmd))
419+
m, err := NewMachine(ctx, cfg, WithProcessRunner(cmd), WithLogger(fctesting.NewLogEntry()))
420420
if err != nil {
421421
t.Fatalf("unexpected error: %v", err)
422422
}
@@ -625,7 +625,8 @@ func TestWaitForSocket(t *testing.T) {
625625
errchan := make(chan error)
626626

627627
m := Machine{
628-
cfg: Config{SocketPath: filename},
628+
cfg: Config{SocketPath: filename},
629+
logger: fctesting.NewLogEntry(),
629630
}
630631

631632
go func() {
@@ -637,13 +638,13 @@ func TestWaitForSocket(t *testing.T) {
637638
}()
638639

639640
// Socket file created, HTTP request succeeded
640-
m.client = NewClient(filename, log.NewEntry(log.New()), true, WithOpsClient(&okClient))
641+
m.client = NewClient(filename, fctesting.NewLogEntry(), true, WithOpsClient(&okClient))
641642
if err := m.waitForSocket(500*time.Millisecond, errchan); err != nil {
642643
t.Errorf("waitForSocket returned unexpected error %s", err)
643644
}
644645

645646
// Socket file exists, HTTP request failed
646-
m.client = NewClient(filename, log.NewEntry(log.New()), true, WithOpsClient(&errClient))
647+
m.client = NewClient(filename, fctesting.NewLogEntry(), true, WithOpsClient(&errClient))
647648
if err := m.waitForSocket(500*time.Millisecond, errchan); err != context.DeadlineExceeded {
648649
t.Error("waitforSocket did not return an expected timeout error")
649650
}
@@ -698,7 +699,7 @@ func TestLogFiles(t *testing.T) {
698699
},
699700
}
700701
ctx := context.Background()
701-
client := NewClient("socket-path", log.NewEntry(log.New()), true, WithOpsClient(&opClient))
702+
client := NewClient("socket-path", fctesting.NewLogEntry(), true, WithOpsClient(&opClient))
702703

703704
stdoutPath := filepath.Join(testDataPath, "stdout.log")
704705
stderrPath := filepath.Join(testDataPath, "stderr.log")
@@ -727,6 +728,7 @@ func TestLogFiles(t *testing.T) {
727728
cfg,
728729
WithClient(client),
729730
WithProcessRunner(cmd),
731+
WithLogger(fctesting.NewLogEntry()),
730732
)
731733
if err != nil {
732734
t.Fatalf("failed to create new machine: %v", err)
@@ -777,7 +779,7 @@ func TestCaptureFifoToFile(t *testing.T) {
777779
t.Fatalf("Failed to create fifo file: %v", err)
778780
}
779781

780-
if err := captureFifoToFile(log.NewEntry(log.New()), fifoPath, fifo); err != nil {
782+
if err := captureFifoToFile(fctesting.NewLogEntry(), fifoPath, fifo); err != nil {
781783
t.Errorf("Unexpected error: %v", err)
782784
}
783785

0 commit comments

Comments
 (0)