github.com/greenboxal/deis@v1.12.1/logger/storage/file/adapter_test.go (about) 1 package file 2 3 import ( 4 "fmt" 5 "io/ioutil" 6 "os" 7 "path" 8 "testing" 9 ) 10 11 const app string = "test-app" 12 13 func TestReadFromNonExistingApp(t *testing.T) { 14 logRoot, err := ioutil.TempDir("", "log-tests") 15 if err != nil { 16 t.Error(err) 17 } 18 defer os.Remove(logRoot) 19 // Initialize a new storage adapter 20 a, err := NewStorageAdapter(logRoot) 21 if err != nil { 22 t.Error(err) 23 } 24 // No logs have been writter; there should be no ringBuffer for app 25 messages, err := a.Read(app, 10) 26 if messages != nil { 27 t.Error("Expected no messages, but got some") 28 } 29 if err == nil || err.Error() != fmt.Sprintf("Could not find logs for '%s'", app) { 30 t.Error("Did not receive expected error message") 31 } 32 } 33 34 func TestWithBadLogRoot(t *testing.T) { 35 // Initialize with bad log path (doesn't exist) 36 bogusLogRoot := "/bogus/path" 37 a, err := NewStorageAdapter(bogusLogRoot) 38 if a != nil { 39 t.Error("Expected no storage adapter, but got one") 40 } 41 if err == nil || err.Error() != fmt.Sprintf("Directory %s does not exist", bogusLogRoot) { 42 t.Error("Did not receive expected error message") 43 } 44 // Create a temporary file 45 file, err := ioutil.TempFile("", "log-file") 46 if err != nil { 47 t.Error(err) 48 } 49 defer os.Remove(file.Name()) 50 a, err = NewStorageAdapter(file.Name()) 51 if a != nil { 52 t.Error("Expected no storage adapter, but got one") 53 } 54 if err == nil || err.Error() != fmt.Sprintf("%s is not a directory", file.Name()) { 55 t.Error("Did not receive expected error message") 56 } 57 } 58 59 func TestLogs(t *testing.T) { 60 logRoot, err := ioutil.TempDir("", "log-tests") 61 if err != nil { 62 t.Error(err) 63 } 64 defer os.Remove(logRoot) 65 a, err := NewStorageAdapter(logRoot) 66 if err != nil { 67 t.Error(err) 68 } 69 // And write a few logs 70 for i := 0; i < 5; i++ { 71 if err := a.Write(app, fmt.Sprintf("message %d", i)); err != nil { 72 t.Error(err) 73 } 74 } 75 // Read more logs than there are 76 messages, err := a.Read(app, 8) 77 if err != nil { 78 t.Error(err) 79 } 80 // Should only get as many messages as we actually have 81 if len(messages) != 5 { 82 t.Error("only expected 5 log messages") 83 } 84 // Read fewer logs than there are 85 messages, err = a.Read(app, 3) 86 if err != nil { 87 t.Error(err) 88 } 89 // Should get the 3 MOST RECENT logs 90 if len(messages) != 3 { 91 t.Error("only expected 5 log messages, got %d", len(messages)) 92 } 93 for i := 0; i < 3; i++ { 94 expectedMessage := fmt.Sprintf("message %d", i+2) 95 if messages[i] != expectedMessage { 96 t.Errorf("expected: \"%s\", got \"%s\"", expectedMessage, messages[i]) 97 } 98 } 99 } 100 101 func TestDestroy(t *testing.T) { 102 logRoot, err := ioutil.TempDir("", "log-tests") 103 if err != nil { 104 t.Error(err) 105 } 106 defer os.Remove(logRoot) 107 a, err := NewStorageAdapter(logRoot) 108 if err != nil { 109 t.Error(err) 110 } 111 // Write a log to create the file 112 if err := a.Write(app, "Hello, log!"); err != nil { 113 t.Error(err) 114 } 115 filename := path.Join(logRoot, fmt.Sprintf("%s.log", app)) 116 // Test log file exists 117 if _, err := os.Stat(filename); os.IsNotExist(err) { 118 t.Error("Log file was expected to exist, but doesn't.") 119 } 120 // Now destroy it 121 if err := a.Destroy(app); err != nil { 122 t.Error(err) 123 } 124 // Now check that the file no longer exists 125 if _, err := os.Stat(filename); err == nil { 126 t.Error("Log file still exists, but was expected not to.") 127 } 128 // And that we have no reference to it 129 if _, ok := a.files[app]; ok { 130 t.Error("Log fiel reference still exist, but was expected not to.") 131 } 132 } 133 134 func TestReopen(t *testing.T) { 135 logRoot, err := ioutil.TempDir("", "log-tests") 136 if err != nil { 137 t.Error(err) 138 } 139 defer os.Remove(logRoot) 140 a, err := NewStorageAdapter(logRoot) 141 if err != nil { 142 t.Error(err) 143 } 144 // Write a log to create the file 145 if err := a.Write(app, "Hello, log!"); err != nil { 146 t.Error(err) 147 } 148 // At least one file reference should exist 149 if len(a.files) == 0 { 150 t.Error("At least one log file reference expected to exist, but doesn't.") 151 } 152 // Now "reopen" logs 153 if err := a.Reopen(); err != nil { 154 t.Error(err) 155 } 156 // Now check that no file references exist 157 if len(a.files) != 0 { 158 t.Error("At least one log file reference still exists, but was expected not to.") 159 } 160 }