From 1d3208a15a5a591bace2a03c4380d3f43b68dcd7 Mon Sep 17 00:00:00 2001 From: Norman Soetbeer Date: Sat, 9 Jul 2016 01:02:54 +0200 Subject: [PATCH] added test for log writer --- log/logwriter_test.go | 78 +++++++++++++++++++++++++++++++++++++++++++ main.go | 2 +- 2 files changed, 79 insertions(+), 1 deletion(-) create mode 100644 log/logwriter_test.go diff --git a/log/logwriter_test.go b/log/logwriter_test.go new file mode 100644 index 0000000..a0e59a7 --- /dev/null +++ b/log/logwriter_test.go @@ -0,0 +1,78 @@ +package log + +import ( + "testing" + "os" + "io/ioutil" + "fmt" + "math/rand" + "bytes" +) + +func TestFileWriter_Reopen(t *testing.T) { + filename := fmt.Sprintf("/tmp/test_%d.log", rand.Int63()) + t.Logf("Creating file %s", filename) + + writer, err := NewFileWriter(filename, 0644) + if err != nil { + t.Fatalf("Unable to create test file (%s): %s", filename, err) + } + defer os.Remove(filename) + + info, err := os.Stat(filename) + if err != nil { + t.Fatalf("File was not created") + } + + if info.Mode() != 0644 { + t.Fatalf("File mode must be 0644, but got %#o instead", info.Mode()) + } + + n, err := writer.Write([]byte("foo bar\n")) + if err != nil { + t.Fatalf("Unable to write to test file") + } + + if n != 8 { + t.Fatalf("Number of written bytes must be 8") + } + + rotatedFilename := fmt.Sprintf("/tmp/test_rotated_%d.log", rand.Int63()) + t.Logf("Rotating file to %s", rotatedFilename) + os.Rename(filename, rotatedFilename) + defer os.Remove(rotatedFilename) + + writer.Reopen() + + info, err = os.Stat(filename) + if err != nil { + t.Fatalf("File was not re-created after rotation") + } + + n, err = writer.Write([]byte("hello world\n")) + if err != nil { + t.Fatalf("Unable to write to re-created file") + } + + if err = writer.Close(); err != nil { + t.Fatalf("Error while closing file: %s", err) + } + + currentContent, err := ioutil.ReadFile(filename) + if err != nil { + t.Fatalf("Unable to read file %s", filename) + } + + if bytes.Compare(currentContent, []byte("hello world\n")) != 0 { + t.Fatalf("Wrong content in file %s (actual: %s, expected: %s)", filename, currentContent, []byte("hello world\n")) + } + + rotatedContent, err := ioutil.ReadFile(rotatedFilename) + if err != nil { + t.Fatalf("Unable to read rotated file %s", rotatedFilename) + } + + if bytes.Compare(rotatedContent, []byte("foo bar\n")) != 0 { + t.Fatalf("Wrong content in rotated file %s (actual: %s, expected: %s)", rotatedFilename, rotatedContent, []byte("foo bar\n")) + } +} \ No newline at end of file diff --git a/main.go b/main.go index d332038..1d0e12a 100644 --- a/main.go +++ b/main.go @@ -48,7 +48,7 @@ func main() { os.Exit(1) } - logWriter, err := log.NewFileWriter(cfg.LogFile, 0660) + logWriter, err := log.NewFileWriter(cfg.LogFile, 0644) if err != nil { fmt.Fprintln(os.Stderr, "Failed to open log file " + cfg.LogFile, err) os.Exit(1)