|
|
|
@ -29,6 +29,8 @@ import (
|
|
|
|
|
|
|
|
|
|
|
|
"github.com/gocarina/gocsv"
|
|
|
|
"github.com/gocarina/gocsv"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
"d7y.io/dragonfly/v2/scheduler/config"
|
|
|
|
)
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
var (
|
|
|
|
var (
|
|
|
|
@ -146,21 +148,19 @@ func TestStorage_New(t *testing.T) {
|
|
|
|
tests := []struct {
|
|
|
|
tests := []struct {
|
|
|
|
name string
|
|
|
|
name string
|
|
|
|
baseDir string
|
|
|
|
baseDir string
|
|
|
|
options []Option
|
|
|
|
|
|
|
|
expect func(t *testing.T, s Storage, err error)
|
|
|
|
expect func(t *testing.T, s Storage, err error)
|
|
|
|
}{
|
|
|
|
}{
|
|
|
|
{
|
|
|
|
{
|
|
|
|
name: "new storage",
|
|
|
|
name: "new storage",
|
|
|
|
baseDir: os.TempDir(),
|
|
|
|
baseDir: os.TempDir(),
|
|
|
|
options: []Option{},
|
|
|
|
|
|
|
|
expect: func(t *testing.T, s Storage, err error) {
|
|
|
|
expect: func(t *testing.T, s Storage, err error) {
|
|
|
|
assert := assert.New(t)
|
|
|
|
assert := assert.New(t)
|
|
|
|
assert.NoError(err)
|
|
|
|
assert.NoError(err)
|
|
|
|
assert.Equal(reflect.TypeOf(s).Elem().Name(), "storage")
|
|
|
|
assert.Equal(reflect.TypeOf(s).Elem().Name(), "storage")
|
|
|
|
assert.Equal(s.(*storage).maxSize, int64(DefaultMaxSize*megabyte))
|
|
|
|
assert.Equal(s.(*storage).maxSize, int64(config.DefaultStorageMaxSize*megabyte))
|
|
|
|
assert.Equal(s.(*storage).maxBackups, DefaultMaxBackups)
|
|
|
|
assert.Equal(s.(*storage).maxBackups, config.DefaultStorageMaxBackups)
|
|
|
|
assert.Equal(s.(*storage).bufferSize, DefaultBufferSize)
|
|
|
|
assert.Equal(s.(*storage).bufferSize, config.DefaultStorageBufferSize)
|
|
|
|
assert.Equal(cap(s.(*storage).buffer), DefaultBufferSize)
|
|
|
|
assert.Equal(cap(s.(*storage).buffer), config.DefaultStorageBufferSize)
|
|
|
|
assert.Equal(len(s.(*storage).buffer), 0)
|
|
|
|
assert.Equal(len(s.(*storage).buffer), 0)
|
|
|
|
assert.Equal(s.(*storage).count, int64(0))
|
|
|
|
assert.Equal(s.(*storage).count, int64(0))
|
|
|
|
|
|
|
|
|
|
|
|
@ -169,68 +169,9 @@ func TestStorage_New(t *testing.T) {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
{
|
|
|
|
|
|
|
|
name: "new storage with maxSize",
|
|
|
|
|
|
|
|
baseDir: os.TempDir(),
|
|
|
|
|
|
|
|
options: []Option{WithMaxSize(1)},
|
|
|
|
|
|
|
|
expect: func(t *testing.T, s Storage, err error) {
|
|
|
|
|
|
|
|
assert := assert.New(t)
|
|
|
|
|
|
|
|
assert.NoError(err)
|
|
|
|
|
|
|
|
assert.Equal(reflect.TypeOf(s).Elem().Name(), "storage")
|
|
|
|
|
|
|
|
assert.Equal(s.(*storage).maxSize, int64(1*megabyte))
|
|
|
|
|
|
|
|
assert.Equal(s.(*storage).maxBackups, DefaultMaxBackups)
|
|
|
|
|
|
|
|
assert.Equal(s.(*storage).bufferSize, DefaultBufferSize)
|
|
|
|
|
|
|
|
assert.Equal(cap(s.(*storage).buffer), DefaultBufferSize)
|
|
|
|
|
|
|
|
assert.Equal(len(s.(*storage).buffer), 0)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if err := s.Clear(); err != nil {
|
|
|
|
|
|
|
|
t.Fatal(err)
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
name: "new storage with maxBackups",
|
|
|
|
|
|
|
|
baseDir: os.TempDir(),
|
|
|
|
|
|
|
|
options: []Option{WithMaxBackups(1)},
|
|
|
|
|
|
|
|
expect: func(t *testing.T, s Storage, err error) {
|
|
|
|
|
|
|
|
assert := assert.New(t)
|
|
|
|
|
|
|
|
assert.NoError(err)
|
|
|
|
|
|
|
|
assert.Equal(reflect.TypeOf(s).Elem().Name(), "storage")
|
|
|
|
|
|
|
|
assert.Equal(s.(*storage).maxSize, int64(DefaultMaxSize*megabyte))
|
|
|
|
|
|
|
|
assert.Equal(s.(*storage).maxBackups, 1)
|
|
|
|
|
|
|
|
assert.Equal(s.(*storage).bufferSize, DefaultBufferSize)
|
|
|
|
|
|
|
|
assert.Equal(cap(s.(*storage).buffer), DefaultBufferSize)
|
|
|
|
|
|
|
|
assert.Equal(len(s.(*storage).buffer), 0)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if err := s.Clear(); err != nil {
|
|
|
|
|
|
|
|
t.Fatal(err)
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
name: "new storage with bufferSize",
|
|
|
|
|
|
|
|
baseDir: os.TempDir(),
|
|
|
|
|
|
|
|
options: []Option{WithBufferSize(1)},
|
|
|
|
|
|
|
|
expect: func(t *testing.T, s Storage, err error) {
|
|
|
|
|
|
|
|
assert := assert.New(t)
|
|
|
|
|
|
|
|
assert.NoError(err)
|
|
|
|
|
|
|
|
assert.Equal(reflect.TypeOf(s).Elem().Name(), "storage")
|
|
|
|
|
|
|
|
assert.Equal(s.(*storage).maxSize, int64(DefaultMaxSize*megabyte))
|
|
|
|
|
|
|
|
assert.Equal(s.(*storage).maxBackups, DefaultMaxBackups)
|
|
|
|
|
|
|
|
assert.Equal(s.(*storage).bufferSize, 1)
|
|
|
|
|
|
|
|
assert.Equal(cap(s.(*storage).buffer), 1)
|
|
|
|
|
|
|
|
assert.Equal(len(s.(*storage).buffer), 0)
|
|
|
|
|
|
|
|
assert.Equal(len(s.(*storage).buffer), 0)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if err := s.Clear(); err != nil {
|
|
|
|
|
|
|
|
t.Fatal(err)
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
{
|
|
|
|
{
|
|
|
|
name: "new storage failed",
|
|
|
|
name: "new storage failed",
|
|
|
|
baseDir: "/foo",
|
|
|
|
baseDir: "/foo",
|
|
|
|
options: []Option{WithMaxBackups(100)},
|
|
|
|
|
|
|
|
expect: func(t *testing.T, s Storage, err error) {
|
|
|
|
expect: func(t *testing.T, s Storage, err error) {
|
|
|
|
assert := assert.New(t)
|
|
|
|
assert := assert.New(t)
|
|
|
|
assert.Error(err)
|
|
|
|
assert.Error(err)
|
|
|
|
@ -240,7 +181,7 @@ func TestStorage_New(t *testing.T) {
|
|
|
|
|
|
|
|
|
|
|
|
for _, tc := range tests {
|
|
|
|
for _, tc := range tests {
|
|
|
|
t.Run(tc.name, func(t *testing.T) {
|
|
|
|
t.Run(tc.name, func(t *testing.T) {
|
|
|
|
s, err := New(tc.baseDir, tc.options...)
|
|
|
|
s, err := New(tc.baseDir, config.DefaultStorageMaxSize, config.DefaultStorageMaxBackups, config.DefaultStorageBufferSize)
|
|
|
|
tc.expect(t, s, err)
|
|
|
|
tc.expect(t, s, err)
|
|
|
|
})
|
|
|
|
})
|
|
|
|
}
|
|
|
|
}
|
|
|
|
@ -250,14 +191,14 @@ func TestStorage_Create(t *testing.T) {
|
|
|
|
tests := []struct {
|
|
|
|
tests := []struct {
|
|
|
|
name string
|
|
|
|
name string
|
|
|
|
baseDir string
|
|
|
|
baseDir string
|
|
|
|
options []Option
|
|
|
|
bufferSize int
|
|
|
|
mock func(s Storage)
|
|
|
|
mock func(s Storage)
|
|
|
|
expect func(t *testing.T, s Storage, baseDir string)
|
|
|
|
expect func(t *testing.T, s Storage, baseDir string)
|
|
|
|
}{
|
|
|
|
}{
|
|
|
|
{
|
|
|
|
{
|
|
|
|
name: "create record",
|
|
|
|
name: "create record",
|
|
|
|
baseDir: os.TempDir(),
|
|
|
|
baseDir: os.TempDir(),
|
|
|
|
options: []Option{WithBufferSize(1)},
|
|
|
|
bufferSize: 1,
|
|
|
|
mock: func(s Storage) {},
|
|
|
|
mock: func(s Storage) {},
|
|
|
|
expect: func(t *testing.T, s Storage, baseDir string) {
|
|
|
|
expect: func(t *testing.T, s Storage, baseDir string) {
|
|
|
|
assert := assert.New(t)
|
|
|
|
assert := assert.New(t)
|
|
|
|
@ -269,7 +210,7 @@ func TestStorage_Create(t *testing.T) {
|
|
|
|
{
|
|
|
|
{
|
|
|
|
name: "create record without buffer",
|
|
|
|
name: "create record without buffer",
|
|
|
|
baseDir: os.TempDir(),
|
|
|
|
baseDir: os.TempDir(),
|
|
|
|
options: []Option{WithBufferSize(0)},
|
|
|
|
bufferSize: 0,
|
|
|
|
mock: func(s Storage) {
|
|
|
|
mock: func(s Storage) {
|
|
|
|
},
|
|
|
|
},
|
|
|
|
expect: func(t *testing.T, s Storage, baseDir string) {
|
|
|
|
expect: func(t *testing.T, s Storage, baseDir string) {
|
|
|
|
@ -282,7 +223,7 @@ func TestStorage_Create(t *testing.T) {
|
|
|
|
{
|
|
|
|
{
|
|
|
|
name: "write record to file",
|
|
|
|
name: "write record to file",
|
|
|
|
baseDir: os.TempDir(),
|
|
|
|
baseDir: os.TempDir(),
|
|
|
|
options: []Option{WithBufferSize(1)},
|
|
|
|
bufferSize: 1,
|
|
|
|
mock: func(s Storage) {
|
|
|
|
mock: func(s Storage) {
|
|
|
|
},
|
|
|
|
},
|
|
|
|
expect: func(t *testing.T, s Storage, baseDir string) {
|
|
|
|
expect: func(t *testing.T, s Storage, baseDir string) {
|
|
|
|
@ -297,7 +238,7 @@ func TestStorage_Create(t *testing.T) {
|
|
|
|
{
|
|
|
|
{
|
|
|
|
name: "open file failed",
|
|
|
|
name: "open file failed",
|
|
|
|
baseDir: os.TempDir(),
|
|
|
|
baseDir: os.TempDir(),
|
|
|
|
options: []Option{WithBufferSize(0)},
|
|
|
|
bufferSize: 0,
|
|
|
|
mock: func(s Storage) {
|
|
|
|
mock: func(s Storage) {
|
|
|
|
s.(*storage).baseDir = "foo"
|
|
|
|
s.(*storage).baseDir = "foo"
|
|
|
|
},
|
|
|
|
},
|
|
|
|
@ -312,7 +253,7 @@ func TestStorage_Create(t *testing.T) {
|
|
|
|
|
|
|
|
|
|
|
|
for _, tc := range tests {
|
|
|
|
for _, tc := range tests {
|
|
|
|
t.Run(tc.name, func(t *testing.T) {
|
|
|
|
t.Run(tc.name, func(t *testing.T) {
|
|
|
|
s, err := New(tc.baseDir, tc.options...)
|
|
|
|
s, err := New(tc.baseDir, config.DefaultStorageMaxSize, config.DefaultStorageMaxBackups, tc.bufferSize)
|
|
|
|
if err != nil {
|
|
|
|
if err != nil {
|
|
|
|
t.Fatal(err)
|
|
|
|
t.Fatal(err)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
@ -330,7 +271,7 @@ func TestStorage_List(t *testing.T) {
|
|
|
|
tests := []struct {
|
|
|
|
tests := []struct {
|
|
|
|
name string
|
|
|
|
name string
|
|
|
|
baseDir string
|
|
|
|
baseDir string
|
|
|
|
options []Option
|
|
|
|
bufferSize int
|
|
|
|
record Record
|
|
|
|
record Record
|
|
|
|
mock func(t *testing.T, s Storage, baseDir string, record Record)
|
|
|
|
mock func(t *testing.T, s Storage, baseDir string, record Record)
|
|
|
|
expect func(t *testing.T, s Storage, baseDir string, record Record)
|
|
|
|
expect func(t *testing.T, s Storage, baseDir string, record Record)
|
|
|
|
@ -338,7 +279,7 @@ func TestStorage_List(t *testing.T) {
|
|
|
|
{
|
|
|
|
{
|
|
|
|
name: "empty csv file given",
|
|
|
|
name: "empty csv file given",
|
|
|
|
baseDir: os.TempDir(),
|
|
|
|
baseDir: os.TempDir(),
|
|
|
|
options: []Option{},
|
|
|
|
bufferSize: config.DefaultStorageBufferSize,
|
|
|
|
mock: func(t *testing.T, s Storage, baseDir string, record Record) {},
|
|
|
|
mock: func(t *testing.T, s Storage, baseDir string, record Record) {},
|
|
|
|
expect: func(t *testing.T, s Storage, baseDir string, record Record) {
|
|
|
|
expect: func(t *testing.T, s Storage, baseDir string, record Record) {
|
|
|
|
assert := assert.New(t)
|
|
|
|
assert := assert.New(t)
|
|
|
|
@ -349,7 +290,7 @@ func TestStorage_List(t *testing.T) {
|
|
|
|
{
|
|
|
|
{
|
|
|
|
name: "get file infos failed",
|
|
|
|
name: "get file infos failed",
|
|
|
|
baseDir: os.TempDir(),
|
|
|
|
baseDir: os.TempDir(),
|
|
|
|
options: []Option{},
|
|
|
|
bufferSize: config.DefaultStorageBufferSize,
|
|
|
|
mock: func(t *testing.T, s Storage, baseDir string, record Record) {
|
|
|
|
mock: func(t *testing.T, s Storage, baseDir string, record Record) {
|
|
|
|
s.(*storage).baseDir = "bae"
|
|
|
|
s.(*storage).baseDir = "bae"
|
|
|
|
},
|
|
|
|
},
|
|
|
|
@ -363,7 +304,7 @@ func TestStorage_List(t *testing.T) {
|
|
|
|
{
|
|
|
|
{
|
|
|
|
name: "open file failed",
|
|
|
|
name: "open file failed",
|
|
|
|
baseDir: os.TempDir(),
|
|
|
|
baseDir: os.TempDir(),
|
|
|
|
options: []Option{},
|
|
|
|
bufferSize: config.DefaultStorageBufferSize,
|
|
|
|
mock: func(t *testing.T, s Storage, baseDir string, record Record) {
|
|
|
|
mock: func(t *testing.T, s Storage, baseDir string, record Record) {
|
|
|
|
file, err := os.OpenFile(filepath.Join(baseDir, "record-test.csv"), os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0300)
|
|
|
|
file, err := os.OpenFile(filepath.Join(baseDir, "record-test.csv"), os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0300)
|
|
|
|
if err != nil {
|
|
|
|
if err != nil {
|
|
|
|
@ -380,7 +321,7 @@ func TestStorage_List(t *testing.T) {
|
|
|
|
{
|
|
|
|
{
|
|
|
|
name: "list records of a file",
|
|
|
|
name: "list records of a file",
|
|
|
|
baseDir: os.TempDir(),
|
|
|
|
baseDir: os.TempDir(),
|
|
|
|
options: []Option{WithBufferSize(1)},
|
|
|
|
bufferSize: 1,
|
|
|
|
record: mockRecord,
|
|
|
|
record: mockRecord,
|
|
|
|
mock: func(t *testing.T, s Storage, baseDir string, record Record) {
|
|
|
|
mock: func(t *testing.T, s Storage, baseDir string, record Record) {
|
|
|
|
if err := s.Create(record); err != nil {
|
|
|
|
if err := s.Create(record); err != nil {
|
|
|
|
@ -404,7 +345,7 @@ func TestStorage_List(t *testing.T) {
|
|
|
|
{
|
|
|
|
{
|
|
|
|
name: "list records of multi files",
|
|
|
|
name: "list records of multi files",
|
|
|
|
baseDir: os.TempDir(),
|
|
|
|
baseDir: os.TempDir(),
|
|
|
|
options: []Option{WithBufferSize(1)},
|
|
|
|
bufferSize: 1,
|
|
|
|
record: Record{},
|
|
|
|
record: Record{},
|
|
|
|
mock: func(t *testing.T, s Storage, baseDir string, record Record) {
|
|
|
|
mock: func(t *testing.T, s Storage, baseDir string, record Record) {
|
|
|
|
file, err := os.OpenFile(filepath.Join(baseDir, "record-test.csv"), os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0600)
|
|
|
|
file, err := os.OpenFile(filepath.Join(baseDir, "record-test.csv"), os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0600)
|
|
|
|
@ -438,7 +379,7 @@ func TestStorage_List(t *testing.T) {
|
|
|
|
|
|
|
|
|
|
|
|
for _, tc := range tests {
|
|
|
|
for _, tc := range tests {
|
|
|
|
t.Run(tc.name, func(t *testing.T) {
|
|
|
|
t.Run(tc.name, func(t *testing.T) {
|
|
|
|
s, err := New(tc.baseDir, tc.options...)
|
|
|
|
s, err := New(tc.baseDir, config.DefaultStorageMaxSize, config.DefaultStorageMaxBackups, tc.bufferSize)
|
|
|
|
if err != nil {
|
|
|
|
if err != nil {
|
|
|
|
t.Fatal(err)
|
|
|
|
t.Fatal(err)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
@ -456,7 +397,7 @@ func TestStorage_Open(t *testing.T) {
|
|
|
|
tests := []struct {
|
|
|
|
tests := []struct {
|
|
|
|
name string
|
|
|
|
name string
|
|
|
|
baseDir string
|
|
|
|
baseDir string
|
|
|
|
options []Option
|
|
|
|
bufferSize int
|
|
|
|
record Record
|
|
|
|
record Record
|
|
|
|
mock func(t *testing.T, s Storage, baseDir string, record Record)
|
|
|
|
mock func(t *testing.T, s Storage, baseDir string, record Record)
|
|
|
|
expect func(t *testing.T, s Storage, baseDir string, record Record)
|
|
|
|
expect func(t *testing.T, s Storage, baseDir string, record Record)
|
|
|
|
@ -464,7 +405,7 @@ func TestStorage_Open(t *testing.T) {
|
|
|
|
{
|
|
|
|
{
|
|
|
|
name: "open storage withempty csv file given",
|
|
|
|
name: "open storage withempty csv file given",
|
|
|
|
baseDir: os.TempDir(),
|
|
|
|
baseDir: os.TempDir(),
|
|
|
|
options: []Option{},
|
|
|
|
bufferSize: config.DefaultStorageBufferSize,
|
|
|
|
mock: func(t *testing.T, s Storage, baseDir string, record Record) {},
|
|
|
|
mock: func(t *testing.T, s Storage, baseDir string, record Record) {},
|
|
|
|
expect: func(t *testing.T, s Storage, baseDir string, record Record) {
|
|
|
|
expect: func(t *testing.T, s Storage, baseDir string, record Record) {
|
|
|
|
assert := assert.New(t)
|
|
|
|
assert := assert.New(t)
|
|
|
|
@ -475,7 +416,7 @@ func TestStorage_Open(t *testing.T) {
|
|
|
|
{
|
|
|
|
{
|
|
|
|
name: "open file infos failed",
|
|
|
|
name: "open file infos failed",
|
|
|
|
baseDir: os.TempDir(),
|
|
|
|
baseDir: os.TempDir(),
|
|
|
|
options: []Option{},
|
|
|
|
bufferSize: config.DefaultStorageBufferSize,
|
|
|
|
mock: func(t *testing.T, s Storage, baseDir string, record Record) {
|
|
|
|
mock: func(t *testing.T, s Storage, baseDir string, record Record) {
|
|
|
|
s.(*storage).baseDir = "bas"
|
|
|
|
s.(*storage).baseDir = "bas"
|
|
|
|
},
|
|
|
|
},
|
|
|
|
@ -489,7 +430,7 @@ func TestStorage_Open(t *testing.T) {
|
|
|
|
{
|
|
|
|
{
|
|
|
|
name: "open storage with records of a file",
|
|
|
|
name: "open storage with records of a file",
|
|
|
|
baseDir: os.TempDir(),
|
|
|
|
baseDir: os.TempDir(),
|
|
|
|
options: []Option{WithBufferSize(1)},
|
|
|
|
bufferSize: 1,
|
|
|
|
record: mockRecord,
|
|
|
|
record: mockRecord,
|
|
|
|
mock: func(t *testing.T, s Storage, baseDir string, record Record) {
|
|
|
|
mock: func(t *testing.T, s Storage, baseDir string, record Record) {
|
|
|
|
if err := s.Create(record); err != nil {
|
|
|
|
if err := s.Create(record); err != nil {
|
|
|
|
@ -518,7 +459,7 @@ func TestStorage_Open(t *testing.T) {
|
|
|
|
{
|
|
|
|
{
|
|
|
|
name: "open storage with records of multi files",
|
|
|
|
name: "open storage with records of multi files",
|
|
|
|
baseDir: os.TempDir(),
|
|
|
|
baseDir: os.TempDir(),
|
|
|
|
options: []Option{WithBufferSize(1)},
|
|
|
|
bufferSize: 1,
|
|
|
|
record: Record{},
|
|
|
|
record: Record{},
|
|
|
|
mock: func(t *testing.T, s Storage, baseDir string, record Record) {
|
|
|
|
mock: func(t *testing.T, s Storage, baseDir string, record Record) {
|
|
|
|
file, err := os.OpenFile(filepath.Join(baseDir, "record-test.csv"), os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0600)
|
|
|
|
file, err := os.OpenFile(filepath.Join(baseDir, "record-test.csv"), os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0600)
|
|
|
|
@ -556,7 +497,7 @@ func TestStorage_Open(t *testing.T) {
|
|
|
|
|
|
|
|
|
|
|
|
for _, tc := range tests {
|
|
|
|
for _, tc := range tests {
|
|
|
|
t.Run(tc.name, func(t *testing.T) {
|
|
|
|
t.Run(tc.name, func(t *testing.T) {
|
|
|
|
s, err := New(tc.baseDir, tc.options...)
|
|
|
|
s, err := New(tc.baseDir, config.DefaultStorageMaxSize, config.DefaultStorageMaxBackups, tc.bufferSize)
|
|
|
|
if err != nil {
|
|
|
|
if err != nil {
|
|
|
|
t.Fatal(err)
|
|
|
|
t.Fatal(err)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
@ -574,14 +515,12 @@ func TestStorage_Clear(t *testing.T) {
|
|
|
|
tests := []struct {
|
|
|
|
tests := []struct {
|
|
|
|
name string
|
|
|
|
name string
|
|
|
|
baseDir string
|
|
|
|
baseDir string
|
|
|
|
options []Option
|
|
|
|
|
|
|
|
mock func(s Storage)
|
|
|
|
mock func(s Storage)
|
|
|
|
expect func(t *testing.T, s Storage, baseDir string)
|
|
|
|
expect func(t *testing.T, s Storage, baseDir string)
|
|
|
|
}{
|
|
|
|
}{
|
|
|
|
{
|
|
|
|
{
|
|
|
|
name: "clear file",
|
|
|
|
name: "clear file",
|
|
|
|
baseDir: os.TempDir(),
|
|
|
|
baseDir: os.TempDir(),
|
|
|
|
options: []Option{},
|
|
|
|
|
|
|
|
mock: func(s Storage) {},
|
|
|
|
mock: func(s Storage) {},
|
|
|
|
expect: func(t *testing.T, s Storage, baseDir string) {
|
|
|
|
expect: func(t *testing.T, s Storage, baseDir string) {
|
|
|
|
assert := assert.New(t)
|
|
|
|
assert := assert.New(t)
|
|
|
|
@ -602,7 +541,6 @@ func TestStorage_Clear(t *testing.T) {
|
|
|
|
{
|
|
|
|
{
|
|
|
|
name: "open file failed",
|
|
|
|
name: "open file failed",
|
|
|
|
baseDir: os.TempDir(),
|
|
|
|
baseDir: os.TempDir(),
|
|
|
|
options: []Option{},
|
|
|
|
|
|
|
|
mock: func(s Storage) {
|
|
|
|
mock: func(s Storage) {
|
|
|
|
s.(*storage).baseDir = "baz"
|
|
|
|
s.(*storage).baseDir = "baz"
|
|
|
|
},
|
|
|
|
},
|
|
|
|
@ -618,7 +556,7 @@ func TestStorage_Clear(t *testing.T) {
|
|
|
|
|
|
|
|
|
|
|
|
for _, tc := range tests {
|
|
|
|
for _, tc := range tests {
|
|
|
|
t.Run(tc.name, func(t *testing.T) {
|
|
|
|
t.Run(tc.name, func(t *testing.T) {
|
|
|
|
s, err := New(tc.baseDir, tc.options...)
|
|
|
|
s, err := New(tc.baseDir, config.DefaultStorageMaxSize, config.DefaultStorageMaxBackups, config.DefaultStorageBufferSize)
|
|
|
|
if err != nil {
|
|
|
|
if err != nil {
|
|
|
|
t.Fatal(err)
|
|
|
|
t.Fatal(err)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
@ -633,14 +571,12 @@ func TestStorage_create(t *testing.T) {
|
|
|
|
tests := []struct {
|
|
|
|
tests := []struct {
|
|
|
|
name string
|
|
|
|
name string
|
|
|
|
baseDir string
|
|
|
|
baseDir string
|
|
|
|
options []Option
|
|
|
|
|
|
|
|
mock func(s Storage)
|
|
|
|
mock func(s Storage)
|
|
|
|
expect func(t *testing.T, s Storage, baseDir string)
|
|
|
|
expect func(t *testing.T, s Storage, baseDir string)
|
|
|
|
}{
|
|
|
|
}{
|
|
|
|
{
|
|
|
|
{
|
|
|
|
name: "create record",
|
|
|
|
name: "create record",
|
|
|
|
baseDir: os.TempDir(),
|
|
|
|
baseDir: os.TempDir(),
|
|
|
|
options: []Option{},
|
|
|
|
|
|
|
|
mock: func(s Storage) {},
|
|
|
|
mock: func(s Storage) {},
|
|
|
|
expect: func(t *testing.T, s Storage, baseDir string) {
|
|
|
|
expect: func(t *testing.T, s Storage, baseDir string) {
|
|
|
|
assert := assert.New(t)
|
|
|
|
assert := assert.New(t)
|
|
|
|
@ -651,7 +587,6 @@ func TestStorage_create(t *testing.T) {
|
|
|
|
{
|
|
|
|
{
|
|
|
|
name: "open file failed",
|
|
|
|
name: "open file failed",
|
|
|
|
baseDir: os.TempDir(),
|
|
|
|
baseDir: os.TempDir(),
|
|
|
|
options: []Option{},
|
|
|
|
|
|
|
|
mock: func(s Storage) {
|
|
|
|
mock: func(s Storage) {
|
|
|
|
s.(*storage).baseDir = "foo"
|
|
|
|
s.(*storage).baseDir = "foo"
|
|
|
|
},
|
|
|
|
},
|
|
|
|
@ -666,7 +601,7 @@ func TestStorage_create(t *testing.T) {
|
|
|
|
|
|
|
|
|
|
|
|
for _, tc := range tests {
|
|
|
|
for _, tc := range tests {
|
|
|
|
t.Run(tc.name, func(t *testing.T) {
|
|
|
|
t.Run(tc.name, func(t *testing.T) {
|
|
|
|
s, err := New(tc.baseDir, tc.options...)
|
|
|
|
s, err := New(tc.baseDir, config.DefaultStorageMaxSize, config.DefaultStorageMaxBackups, config.DefaultStorageBufferSize)
|
|
|
|
if err != nil {
|
|
|
|
if err != nil {
|
|
|
|
t.Fatal(err)
|
|
|
|
t.Fatal(err)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
@ -684,14 +619,19 @@ func TestStorage_openFile(t *testing.T) {
|
|
|
|
tests := []struct {
|
|
|
|
tests := []struct {
|
|
|
|
name string
|
|
|
|
name string
|
|
|
|
baseDir string
|
|
|
|
baseDir string
|
|
|
|
options []Option
|
|
|
|
maxSize int
|
|
|
|
|
|
|
|
maxBackups int
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
bufferSize int
|
|
|
|
mock func(t *testing.T, s Storage)
|
|
|
|
mock func(t *testing.T, s Storage)
|
|
|
|
expect func(t *testing.T, s Storage, baseDir string)
|
|
|
|
expect func(t *testing.T, s Storage, baseDir string)
|
|
|
|
}{
|
|
|
|
}{
|
|
|
|
{
|
|
|
|
{
|
|
|
|
name: "open file failed",
|
|
|
|
name: "open file failed",
|
|
|
|
baseDir: os.TempDir(),
|
|
|
|
baseDir: os.TempDir(),
|
|
|
|
options: []Option{},
|
|
|
|
maxSize: config.DefaultStorageMaxSize,
|
|
|
|
|
|
|
|
maxBackups: config.DefaultStorageMaxBackups,
|
|
|
|
|
|
|
|
bufferSize: config.DefaultStorageBufferSize,
|
|
|
|
mock: func(t *testing.T, s Storage) {
|
|
|
|
mock: func(t *testing.T, s Storage) {
|
|
|
|
s.(*storage).baseDir = "bat"
|
|
|
|
s.(*storage).baseDir = "bat"
|
|
|
|
},
|
|
|
|
},
|
|
|
|
@ -705,7 +645,9 @@ func TestStorage_openFile(t *testing.T) {
|
|
|
|
{
|
|
|
|
{
|
|
|
|
name: "open new record file",
|
|
|
|
name: "open new record file",
|
|
|
|
baseDir: os.TempDir(),
|
|
|
|
baseDir: os.TempDir(),
|
|
|
|
options: []Option{WithMaxSize(0), WithBufferSize(1)},
|
|
|
|
maxSize: 0,
|
|
|
|
|
|
|
|
maxBackups: config.DefaultStorageMaxBackups,
|
|
|
|
|
|
|
|
bufferSize: 1,
|
|
|
|
mock: func(t *testing.T, s Storage) {
|
|
|
|
mock: func(t *testing.T, s Storage) {
|
|
|
|
if err := s.Create(Record{ID: "1"}); err != nil {
|
|
|
|
if err := s.Create(Record{ID: "1"}); err != nil {
|
|
|
|
t.Fatal(err)
|
|
|
|
t.Fatal(err)
|
|
|
|
@ -726,7 +668,9 @@ func TestStorage_openFile(t *testing.T) {
|
|
|
|
{
|
|
|
|
{
|
|
|
|
name: "remove record file",
|
|
|
|
name: "remove record file",
|
|
|
|
baseDir: os.TempDir(),
|
|
|
|
baseDir: os.TempDir(),
|
|
|
|
options: []Option{WithMaxSize(0), WithMaxBackups(1), WithBufferSize(1)},
|
|
|
|
maxSize: 0,
|
|
|
|
|
|
|
|
maxBackups: 1,
|
|
|
|
|
|
|
|
bufferSize: 1,
|
|
|
|
mock: func(t *testing.T, s Storage) {
|
|
|
|
mock: func(t *testing.T, s Storage) {
|
|
|
|
if err := s.Create(Record{ID: "1"}); err != nil {
|
|
|
|
if err := s.Create(Record{ID: "1"}); err != nil {
|
|
|
|
t.Fatal(err)
|
|
|
|
t.Fatal(err)
|
|
|
|
@ -744,7 +688,7 @@ func TestStorage_openFile(t *testing.T) {
|
|
|
|
|
|
|
|
|
|
|
|
for _, tc := range tests {
|
|
|
|
for _, tc := range tests {
|
|
|
|
t.Run(tc.name, func(t *testing.T) {
|
|
|
|
t.Run(tc.name, func(t *testing.T) {
|
|
|
|
s, err := New(tc.baseDir, tc.options...)
|
|
|
|
s, err := New(tc.baseDir, tc.maxSize, tc.maxBackups, tc.bufferSize)
|
|
|
|
if err != nil {
|
|
|
|
if err != nil {
|
|
|
|
t.Fatal(err)
|
|
|
|
t.Fatal(err)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
@ -760,7 +704,7 @@ func TestStorage_openFile(t *testing.T) {
|
|
|
|
|
|
|
|
|
|
|
|
func TestStorage_backupFilename(t *testing.T) {
|
|
|
|
func TestStorage_backupFilename(t *testing.T) {
|
|
|
|
baseDir := os.TempDir()
|
|
|
|
baseDir := os.TempDir()
|
|
|
|
s, err := New(baseDir)
|
|
|
|
s, err := New(baseDir, config.DefaultStorageMaxSize, config.DefaultStorageMaxBackups, config.DefaultStorageBufferSize)
|
|
|
|
if err != nil {
|
|
|
|
if err != nil {
|
|
|
|
t.Fatal(err)
|
|
|
|
t.Fatal(err)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
@ -779,14 +723,12 @@ func TestStorage_backups(t *testing.T) {
|
|
|
|
tests := []struct {
|
|
|
|
tests := []struct {
|
|
|
|
name string
|
|
|
|
name string
|
|
|
|
baseDir string
|
|
|
|
baseDir string
|
|
|
|
options []Option
|
|
|
|
|
|
|
|
mock func(t *testing.T, s Storage)
|
|
|
|
mock func(t *testing.T, s Storage)
|
|
|
|
expect func(t *testing.T, s Storage, baseDir string)
|
|
|
|
expect func(t *testing.T, s Storage, baseDir string)
|
|
|
|
}{
|
|
|
|
}{
|
|
|
|
{
|
|
|
|
{
|
|
|
|
name: "open file failed",
|
|
|
|
name: "open file failed",
|
|
|
|
baseDir: os.TempDir(),
|
|
|
|
baseDir: os.TempDir(),
|
|
|
|
options: []Option{},
|
|
|
|
|
|
|
|
mock: func(t *testing.T, s Storage) {
|
|
|
|
mock: func(t *testing.T, s Storage) {
|
|
|
|
s.(*storage).baseDir = "bar"
|
|
|
|
s.(*storage).baseDir = "bar"
|
|
|
|
},
|
|
|
|
},
|
|
|
|
@ -803,7 +745,6 @@ func TestStorage_backups(t *testing.T) {
|
|
|
|
{
|
|
|
|
{
|
|
|
|
name: "not found record file",
|
|
|
|
name: "not found record file",
|
|
|
|
baseDir: os.TempDir(),
|
|
|
|
baseDir: os.TempDir(),
|
|
|
|
options: []Option{},
|
|
|
|
|
|
|
|
mock: func(t *testing.T, s Storage) {},
|
|
|
|
mock: func(t *testing.T, s Storage) {},
|
|
|
|
expect: func(t *testing.T, s Storage, baseDir string) {
|
|
|
|
expect: func(t *testing.T, s Storage, baseDir string) {
|
|
|
|
assert := assert.New(t)
|
|
|
|
assert := assert.New(t)
|
|
|
|
@ -819,7 +760,7 @@ func TestStorage_backups(t *testing.T) {
|
|
|
|
|
|
|
|
|
|
|
|
for _, tc := range tests {
|
|
|
|
for _, tc := range tests {
|
|
|
|
t.Run(tc.name, func(t *testing.T) {
|
|
|
|
t.Run(tc.name, func(t *testing.T) {
|
|
|
|
s, err := New(tc.baseDir, tc.options...)
|
|
|
|
s, err := New(tc.baseDir, config.DefaultStorageMaxSize, config.DefaultStorageMaxBackups, config.DefaultStorageBufferSize)
|
|
|
|
if err != nil {
|
|
|
|
if err != nil {
|
|
|
|
t.Fatal(err)
|
|
|
|
t.Fatal(err)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|