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  }