diff options
| author | Stefan Majewsky <majewsky@gmx.net> | 2018-04-30 13:47:38 +0200 |
|---|---|---|
| committer | Stefan Majewsky <majewsky@gmx.net> | 2018-04-30 13:47:38 +0200 |
| commit | b698287d0655420713bf6edfbc8de53da7c5a236 (patch) | |
| tree | c352afca8cb528f552a3d909420ccb3c4e89603c /tests/largeobject_test.go | |
| parent | 0df55a731aa3330f82d22b010a7a2a4d66521972 (diff) | |
| download | go-schwift-b698287d0655420713bf6edfbc8de53da7c5a236.tar.gz | |
add DeleteOptions to Object.Delete()
Diffstat (limited to 'tests/largeobject_test.go')
| -rw-r--r-- | tests/largeobject_test.go | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/tests/largeobject_test.go b/tests/largeobject_test.go index 8e57e0d..758083d 100644 --- a/tests/largeobject_test.go +++ b/tests/largeobject_test.go @@ -300,6 +300,77 @@ func TestSLOGuessSegmentPrefix(t *testing.T) { }) } +func TestDeleteLargeObjectAndKeepSegments(t *testing.T) { + foreachLargeObjectStrategy(func(strategy schwift.LargeObjectStrategy, strategyStr string) { + testWithContainer(t, func(c *schwift.Container) { + obj := c.Object("largeobject") + + //setup phase: create an SLO + lo, err := obj.AsLargeObject() + expectSuccess(t, err) + lo.SegmentContainer = c + lo.SegmentPrefix = "foo/bar/baz/" + w, err := lo.Open(schwift.OpenTruncate) + expectSuccess(t, err) + + segment1 := getRandomSegmentContent(128) + segment2 := getRandomSegmentContent(128) + _, err = w.Write([]byte(segment1)) + expectSuccess(t, err) + _, err = w.Write([]byte(segment2)) + expectSuccess(t, err) + expectSuccess(t, w.Close()) + + //test deletion that keeps segments + expectSuccess(t, obj.Delete(nil, nil)) + + iter := c.Objects() + iter.Prefix = lo.SegmentPrefix + names, err := iter.Collect() + expectSuccess(t, err) + expectObjectNames(t, names, + "foo/bar/baz/0000000000000001", + "foo/bar/baz/0000000000000002") + }) + }) +} + +func TestDeleteLargeObjectIncludingSegments(t *testing.T) { + foreachLargeObjectStrategy(func(strategy schwift.LargeObjectStrategy, strategyStr string) { + testWithContainer(t, func(c *schwift.Container) { + obj := c.Object("largeobject") + + //setup phase: create an SLO + lo, err := obj.AsLargeObject() + expectSuccess(t, err) + lo.SegmentContainer = c + lo.SegmentPrefix = "foo/bar/baz/" + w, err := lo.Open(schwift.OpenTruncate) + expectSuccess(t, err) + + segment1 := getRandomSegmentContent(128) + segment2 := getRandomSegmentContent(128) + _, err = w.Write([]byte(segment1)) + expectSuccess(t, err) + _, err = w.Write([]byte(segment2)) + expectSuccess(t, err) + expectSuccess(t, w.Close()) + + //test deletion that keeps segments + expectSuccess(t, obj.Delete(&schwift.DeleteOptions{DeleteSegments: true}, nil)) + + iter := c.Objects() + iter.Prefix = lo.SegmentPrefix + names, err := iter.Collect() + expectSuccess(t, err) + expectObjectNames(t, names) + }) + }) +} + +//////////////////////////////////////////////////////////////////////////////// +// helpers + func expectLargeObject(t *testing.T, obj *schwift.Object, expected []schwift.SegmentInfo) { t.Helper() expectObjectExistence(t, obj, true) |
