Skip to content

Commit 813c8a1

Browse files
authored
feat(tests): Split storager tests into files (#1021)
Signed-off-by: Xuanwo <[email protected]>
1 parent 9cf9a49 commit 813c8a1

File tree

7 files changed

+436
-366
lines changed

7 files changed

+436
-366
lines changed

tests/storager.go

Lines changed: 0 additions & 366 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,10 @@
11
package tests
22

33
import (
4-
"bytes"
5-
"errors"
6-
"fmt"
7-
"io"
8-
"math/rand"
94
"testing"
105

11-
"github.com/google/uuid"
126
"github.com/stretchr/testify/suite"
137

14-
ps "go.beyondstorage.io/v5/pairs"
15-
"go.beyondstorage.io/v5/pkg/randbytes"
168
"go.beyondstorage.io/v5/types"
179
)
1810

@@ -94,361 +86,3 @@ func (s *StorageSuite) TestPath() {
9486

9587
suite.Run(s.T(), &storagePathSuite{p: s})
9688
}
97-
98-
type storageReadSuite struct {
99-
suite.Suite
100-
101-
p *StorageSuite
102-
103-
size int64
104-
content []byte
105-
path string
106-
}
107-
108-
func (s *storageReadSuite) SetupTest() {
109-
var err error
110-
111-
s.size = rand.Int63n(4 * 1024 * 1024) // Max file size is 4MB
112-
s.content, err = io.ReadAll(io.LimitReader(randbytes.NewRand(), s.size))
113-
s.NoError(err)
114-
115-
s.path = uuid.New().String()
116-
117-
_, err = s.p.store.Write(s.path, bytes.NewReader(s.content), s.size)
118-
s.NoError(err)
119-
}
120-
121-
func (s *storageReadSuite) TearDownTest() {
122-
err := s.p.store.Delete(s.path)
123-
s.NoError(err)
124-
}
125-
126-
func (s *storageReadSuite) TestRead() {
127-
var buf bytes.Buffer
128-
129-
n, err := s.p.store.Read(s.path, &buf)
130-
s.NoError(err)
131-
s.Equal(s.size, n, "size should equal")
132-
s.EqualValues(s.content, buf.Bytes(), "content should equal")
133-
}
134-
135-
func (s *storageReadSuite) TestReadWithIoCallback() {
136-
curRead := int64(0)
137-
readFn := func(bs []byte) {
138-
curRead += int64(len(bs))
139-
}
140-
141-
var buf bytes.Buffer
142-
143-
n, err := s.p.store.Read(s.path, &buf, ps.WithIoCallback(readFn))
144-
s.NoError(err)
145-
s.Equal(s.size, n, "size should equal")
146-
s.Equal(s.size, curRead, "io callback should be called")
147-
s.EqualValues(s.content, buf.Bytes(), "content should equal")
148-
}
149-
150-
func (s *storageReadSuite) TestReadWithOffset() {
151-
offset := rand.Int63n(s.size)
152-
153-
var buf bytes.Buffer
154-
155-
n, err := s.p.store.Read(s.path, &buf, ps.WithOffset(offset))
156-
s.NoError(err)
157-
s.Equal(s.size-offset, n, "size should equal")
158-
s.EqualValues(s.content[offset:], buf.Bytes(), "content should equal")
159-
}
160-
161-
func (s *storageReadSuite) TestReadWithSize() {
162-
length := rand.Int63n(s.size)
163-
164-
var buf bytes.Buffer
165-
166-
n, err := s.p.store.Read(s.path, &buf, ps.WithSize(length))
167-
s.NoError(err)
168-
s.Equal(length, n, "size should equal")
169-
s.EqualValues(s.content[:length], buf.Bytes(), "content should equal")
170-
}
171-
172-
func (s *storageReadSuite) TestReadWithSizeAndOffset() {
173-
offset := rand.Int63n(s.size)
174-
length := rand.Int63n(s.size - offset)
175-
176-
var buf bytes.Buffer
177-
178-
n, err := s.p.store.Read(s.path, &buf, ps.WithOffset(offset), ps.WithSize(length))
179-
s.NoError(err)
180-
s.Equal(length, n, "size should equal")
181-
s.EqualValues(s.content[offset:offset+length], buf.Bytes(), "content should equal")
182-
}
183-
184-
type storageWriteSuite struct {
185-
suite.Suite
186-
187-
p *StorageSuite
188-
189-
size int64
190-
content []byte
191-
path string
192-
}
193-
194-
func (s *storageWriteSuite) SetupTest() {
195-
var err error
196-
197-
s.size = rand.Int63n(4 * 1024 * 1024) // Max file size is 4MB
198-
s.content, err = io.ReadAll(io.LimitReader(randbytes.NewRand(), s.size))
199-
s.NoError(err)
200-
201-
s.path = uuid.New().String()
202-
}
203-
204-
func (s *storageWriteSuite) TearDownTest() {
205-
err := s.p.store.Delete(s.path)
206-
s.NoError(err)
207-
}
208-
209-
func (s *storageWriteSuite) TestWrite() {
210-
n, err := s.p.store.Write(s.path, bytes.NewReader(s.content), s.size)
211-
s.NoError(err)
212-
s.Equal(s.size, n)
213-
}
214-
215-
func (s *storageWriteSuite) TestWriteWithSize() {
216-
size := rand.Int63n(s.size)
217-
218-
n, err := s.p.store.Write(s.path, bytes.NewReader(s.content[:size]), size)
219-
s.NoError(err)
220-
s.Equal(size, n)
221-
}
222-
223-
func (s *storageWriteSuite) TestWriteWithIoCallback() {
224-
curWrite := int64(0)
225-
writeFn := func(bs []byte) {
226-
curWrite += int64(len(bs))
227-
}
228-
229-
n, err := s.p.store.Write(s.path, bytes.NewReader(s.content), s.size,
230-
ps.WithIoCallback(writeFn))
231-
s.NoError(err)
232-
s.Equal(s.size, n, "write size should be equal")
233-
s.Equal(s.size, curWrite, "io callback should be called")
234-
}
235-
236-
func (s *storageWriteSuite) TestWriteViaNilReader() {
237-
_, err := s.p.store.Write(s.path, nil, 0)
238-
s.NoError(err)
239-
}
240-
241-
func (s *storageWriteSuite) TestWriteViaValidReaderAndZeroSize() {
242-
n, err := s.p.store.Write(s.path, bytes.NewReader(s.content), 0)
243-
s.NoError(err)
244-
s.Equal(int64(0), n)
245-
}
246-
247-
func (s *storageWriteSuite) TestWriteViaNilReaderAndValidSize() {
248-
_, err := s.p.store.Write(s.path, nil, s.size)
249-
s.Error(err)
250-
}
251-
252-
type storageStatSuite struct {
253-
suite.Suite
254-
255-
p *StorageSuite
256-
257-
size int64
258-
content []byte
259-
path string
260-
}
261-
262-
func (s *storageStatSuite) SetupTest() {
263-
var err error
264-
265-
s.size = rand.Int63n(4 * 1024 * 1024) // Max file size is 4MB
266-
s.content, err = io.ReadAll(io.LimitReader(randbytes.NewRand(), s.size))
267-
s.NoError(err)
268-
269-
s.path = uuid.New().String()
270-
271-
_, err = s.p.store.Write(s.path, bytes.NewReader(s.content), s.size)
272-
s.NoError(err)
273-
}
274-
275-
func (s *storageStatSuite) TearDownTest() {
276-
err := s.p.store.Delete(s.path)
277-
s.NoError(err)
278-
}
279-
280-
func (s *storageStatSuite) TestStat() {
281-
o, err := s.p.store.Stat(s.path)
282-
s.NoError(err)
283-
s.NotNil(o)
284-
285-
osize, ok := o.GetContentLength()
286-
s.True(ok)
287-
s.Equal(osize, s.size)
288-
}
289-
290-
type storageDeleteSuite struct {
291-
suite.Suite
292-
293-
p *StorageSuite
294-
295-
size int64
296-
content []byte
297-
path string
298-
}
299-
300-
func (s *storageDeleteSuite) SetupTest() {
301-
var err error
302-
303-
s.size = rand.Int63n(4 * 1024 * 1024) // Max file size is 4MB
304-
s.content, err = io.ReadAll(io.LimitReader(randbytes.NewRand(), s.size))
305-
s.NoError(err)
306-
307-
s.path = uuid.New().String()
308-
309-
_, err = s.p.store.Write(s.path, bytes.NewReader(s.content), s.size)
310-
s.NoError(err)
311-
}
312-
313-
func (s *storageDeleteSuite) TestDelete() {
314-
err := s.p.store.Delete(s.path)
315-
s.NoError(err)
316-
}
317-
318-
type storageListSuite struct {
319-
suite.Suite
320-
321-
p *StorageSuite
322-
323-
base string
324-
length int
325-
paths []string
326-
}
327-
328-
func (s *storageListSuite) SetupTest() {
329-
size := rand.Int63n(256)
330-
331-
s.length = rand.Intn(16)
332-
s.base = uuid.NewString()
333-
s.paths = make([]string, s.length)
334-
335-
for i := 0; i < s.length; i++ {
336-
s.paths[i] = fmt.Sprintf("%s/%s", s.base, uuid.NewString())
337-
338-
_, err := s.p.store.Write(s.paths[i],
339-
io.LimitReader(randbytes.NewRand(), size), size)
340-
s.NoError(err)
341-
}
342-
}
343-
344-
func (s *storageListSuite) TearDownTest() {
345-
for i := 0; i < s.length; i++ {
346-
err := s.p.store.Delete(s.paths[i])
347-
s.NoError(err)
348-
}
349-
}
350-
351-
func (s *storageListSuite) TestList() {
352-
it, err := s.p.store.List(s.base, ps.WithListMode(types.ListModeDir))
353-
s.NoError(err)
354-
s.NotNil(it)
355-
356-
paths := make([]string, 0)
357-
for {
358-
o, err := it.Next()
359-
if errors.Is(err, types.IterateDone) {
360-
break
361-
}
362-
s.NoError(err)
363-
364-
paths = append(paths, o.Path)
365-
}
366-
s.ElementsMatch(s.paths, paths)
367-
}
368-
369-
func (s *storageListSuite) TestListWithoutListMode() {
370-
it, err := s.p.store.List(s.base)
371-
s.NoError(err)
372-
s.NotNil(it)
373-
374-
paths := make([]string, 0)
375-
for {
376-
o, err := it.Next()
377-
if errors.Is(err, types.IterateDone) {
378-
break
379-
}
380-
s.NoError(err)
381-
382-
paths = append(paths, o.Path)
383-
}
384-
s.ElementsMatch(s.paths, paths)
385-
}
386-
387-
func (s *storageListSuite) TestListEmptyDir() {
388-
path := uuid.New().String()
389-
390-
it, err := s.p.store.List(path, ps.WithListMode(types.ListModeDir))
391-
s.NoError(err)
392-
s.NotNil(it)
393-
394-
o, err := it.Next()
395-
s.ErrorIs(err, types.IterateDone)
396-
s.Nil(o)
397-
}
398-
399-
type storagePathSuite struct {
400-
suite.Suite
401-
402-
p *StorageSuite
403-
404-
base string
405-
path string
406-
}
407-
408-
func (s *storagePathSuite) SetupTest() {
409-
s.base = uuid.NewString()
410-
s.path = uuid.NewString()
411-
}
412-
413-
func (s *storagePathSuite) TearDownTest() {
414-
path := fmt.Sprintf("%s/%s", s.base, s.path)
415-
416-
err := s.p.store.Delete(path)
417-
s.NoError(err)
418-
}
419-
420-
func (s *storagePathSuite) TestAbsPath() {
421-
m := s.p.store.Metadata()
422-
423-
path := fmt.Sprintf("%s%s/%s", m.WorkDir, s.base, s.path)
424-
425-
size := rand.Int63n(4 * 1024 * 1024)
426-
content, err := io.ReadAll(io.LimitReader(randbytes.NewRand(), size))
427-
s.NoError(err)
428-
429-
_, err = s.p.store.Write(path, bytes.NewReader(content), size)
430-
s.NoError(err)
431-
432-
var buf bytes.Buffer
433-
434-
n, err := s.p.store.Read(path, &buf)
435-
s.NoError(err)
436-
s.Equal(size, n)
437-
}
438-
439-
func (s *storagePathSuite) TestBackslash() {
440-
path := s.base + "\\" + s.path
441-
442-
size := rand.Int63n(4 * 1024 * 1024)
443-
content, err := io.ReadAll(io.LimitReader(randbytes.NewRand(), size))
444-
s.NoError(err)
445-
446-
_, err = s.p.store.Write(path, bytes.NewReader(content), size)
447-
s.NoError(err)
448-
449-
var buf bytes.Buffer
450-
451-
n, err := s.p.store.Read(path, &buf)
452-
s.NoError(err)
453-
s.Equal(size, n)
454-
}

0 commit comments

Comments
 (0)