Skip to content

Commit

Permalink
ref(storage,syslogish): make all storage adapter initialization func …
Browse files Browse the repository at this point in the history
…return storage.Adapter

Fixes deis#89
  • Loading branch information
Aaron Schlesinger committed Jun 21, 2016
1 parent a9934d4 commit bff3ef8
Show file tree
Hide file tree
Showing 7 changed files with 35 additions and 10 deletions.
5 changes: 3 additions & 2 deletions storage/factory.go → storage/factory/factory.go
Original file line number Diff line number Diff line change
@@ -1,14 +1,15 @@
package storage
package factory

import (
"fmt"
"github.com/deis/logger/storage"
"github.com/deis/logger/storage/file"
"github.com/deis/logger/storage/ringbuffer"
)

// NewAdapter returns a pointer to an appropriate implementation of the Adapter interface, as
// determined by the storeageAdapterType string it is passed.
func NewAdapter(storeageAdapterType string, numLines int) (Adapter, error) {
func NewAdapter(storeageAdapterType string, numLines int) (storage.Adapter, error) {
if storeageAdapterType == "file" {
adapter, err := file.NewStorageAdapter()
if err != nil {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package storage
package factory

import (
"fmt"
Expand Down
4 changes: 3 additions & 1 deletion storage/file/adapter.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@ import (
"strconv"
"strings"
"sync"

"github.com/deis/logger/storage"
)

var logRoot = "/data/logs"
Expand All @@ -18,7 +20,7 @@ type adapter struct {
}

// NewStorageAdapter returns a pointer to a new instance of a file-based storage.Adapter.
func NewStorageAdapter() (*adapter, error) {
func NewStorageAdapter() (storage.Adapter, error) {
return &adapter{files: make(map[string]*os.File)}, nil
}

Expand Down
14 changes: 12 additions & 2 deletions storage/file/adapter_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -82,10 +82,16 @@ func TestDestroy(t *testing.T) {
t.Error(err)
}
defer os.Remove(logRoot)
a, err := NewStorageAdapter()
sa, err := NewStorageAdapter()
if err != nil {
t.Error(err)
}

a, ok := sa.(*adapter)
if !ok {
t.Fatalf("returned adapter was not a ringBuffer")
}

// Write a log to create the file
if err := a.Write(app, "Hello, log!"); err != nil {
t.Error(err)
Expand Down Expand Up @@ -116,10 +122,14 @@ func TestReopen(t *testing.T) {
t.Error(err)
}
defer os.Remove(logRoot)
a, err := NewStorageAdapter()
sa, err := NewStorageAdapter()
if err != nil {
t.Error(err)
}
a, ok := sa.(*adapter)
if !ok {
t.Fatalf("returned adapter was not a ringBuffer")
}
// Write a log to create the file
if err := a.Write(app, "Hello, log!"); err != nil {
t.Error(err)
Expand Down
4 changes: 3 additions & 1 deletion storage/ringbuffer/adapter.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@ import (
"fmt"
"log"
"sync"

"github.com/deis/logger/storage"
)

type ringBuffer struct {
Expand Down Expand Up @@ -56,7 +58,7 @@ type adapter struct {
}

// NewStorageAdapter returns a pointer to a new instance of an in-memory storage.Adapter.
func NewStorageAdapter(bufferSize int) (*adapter, error) {
func NewStorageAdapter(bufferSize int) (storage.Adapter, error) {
if bufferSize <= 0 {
return nil, fmt.Errorf("Invalid ringBuffer size: %d", bufferSize)
}
Expand Down
13 changes: 11 additions & 2 deletions storage/ringbuffer/adapter_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,14 @@ const app string = "test-app"

func TestReadFromNonExistingApp(t *testing.T) {
// Initialize a new storage adapter
a, err := NewStorageAdapter(10)
sa, err := NewStorageAdapter(10)
if err != nil {
t.Error(err)
}
a, ok := sa.(*adapter)
if !ok {
t.Fatalf("returned adapter was not a ringBuffer")
}
// No logs have been writter; there should be no ringBuffer for app
messages, err := a.Read(app, 10)
if messages != nil {
Expand Down Expand Up @@ -97,10 +101,15 @@ func TestLogs(t *testing.T) {
}

func TestDestroy(t *testing.T) {
a, err := NewStorageAdapter(10)
sa, err := NewStorageAdapter(10)
if err != nil {
t.Error(err)
}

a, ok := sa.(*adapter)
if !ok {
t.Fatalf("returned adapter was not a ringBuffer")
}
// Write a log to create the file
if err := a.Write(app, "Hello, log!"); err != nil {
t.Error(err)
Expand Down
3 changes: 2 additions & 1 deletion syslogish/server.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import (
"strings"

"github.com/deis/logger/storage"
"github.com/deis/logger/storage/factory"
)

const (
Expand Down Expand Up @@ -47,7 +48,7 @@ func NewServer(storageType string, numLines int) (*Server, error) {
return nil, err
}

newStorageAdapter, err := storage.NewAdapter(storageType, numLines)
newStorageAdapter, err := factory.NewAdapter(storageType, numLines)
if err != nil {
return nil, fmt.Errorf("configurer: Error creating storage adapter: %v", err)
}
Expand Down

0 comments on commit bff3ef8

Please sign in to comment.