diff options
Diffstat (limited to 'ringlogger/cli_test.go')
-rw-r--r-- | ringlogger/cli_test.go | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/ringlogger/cli_test.go b/ringlogger/cli_test.go new file mode 100644 index 00000000..64057b34 --- /dev/null +++ b/ringlogger/cli_test.go @@ -0,0 +1,80 @@ +/* SPDX-License-Identifier: MIT + * + * Copyright (C) 2019 WireGuard LLC. All Rights Reserved. + */ + +package ringlogger + +import ( + "fmt" + "os" + "sync" + "testing" + "time" +) + +func TestThreads(t *testing.T) { + wg := sync.WaitGroup{} + wg.Add(2) + go func() { + rl, err := NewRinglogger("ringlogger_test.bin", "ONE") + if err != nil { + t.Fatal(err) + } + for i := 0; i < 1024; i++ { + fmt.Fprintf(rl, "bla bla bla %d", i) + } + rl.Close() + wg.Done() + }() + go func() { + rl, err := NewRinglogger("ringlogger_test.bin", "TWO") + if err != nil { + t.Fatal(err) + } + for i := 1024; i < 2047; i++ { + fmt.Fprintf(rl, "bla bla bla %d", i) + } + rl.Close() + wg.Done() + }() + wg.Wait() +} + +func TestWriteText(t *testing.T) { + rl, err := NewRinglogger("ringlogger_test.bin", "TXT") + if err != nil { + t.Fatal(err) + } + if len(os.Args) != 3 { + t.Fatal("Should pass exactly one argument") + } + fmt.Fprintf(rl, os.Args[2]) + rl.Close() +} + +func TestDump(t *testing.T) { + rl, err := NewRinglogger("ringlogger_test.bin", "DMP") + if err != nil { + t.Fatal(err) + } + _, err = rl.WriteTo(os.Stdout) + if err != nil { + t.Fatal(err) + } + rl.Close() +} + +func TestFollow(t *testing.T) { + rl, err := NewRinglogger("ringlogger_test.bin", "FOL") + if err != nil { + t.Fatal(err) + } + cursor := CursorAll + for { + cursor = rl.FollowFromCursor(cursor, func(line string, stamp time.Time) { + fmt.Printf("%v: %s\n", stamp, line) + }) + time.Sleep(300 * time.Millisecond) + } +} |