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 | |
| parent | 0df55a731aa3330f82d22b010a7a2a4d66521972 (diff) | |
| download | go-schwift-b698287d0655420713bf6edfbc8de53da7c5a236.tar.gz | |
add DeleteOptions to Object.Delete()
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/largeobject_test.go | 71 | ||||
| -rw-r--r-- | tests/object_test.go | 4 | ||||
| -rw-r--r-- | tests/shared_test.go | 2 |
3 files changed, 74 insertions, 3 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) diff --git a/tests/object_test.go b/tests/object_test.go index 39fdba2..6291527 100644 --- a/tests/object_test.go +++ b/tests/object_test.go @@ -48,7 +48,7 @@ func TestObjectLifecycle(t *testing.T) { //DELETE should be idempotent and not return success on non-existence, but //OpenStack LOVES to be inconsistent with everything (including, notably, itself) - err = o.Delete(nil) + err = o.Delete(nil, nil) expectError(t, err, "expected 204 response, got 404 instead: <html><h1>Not Found</h1><p>The resource could not be found.</p></html>") err = o.Upload(bytes.NewReader([]byte("test")), nil) @@ -56,7 +56,7 @@ func TestObjectLifecycle(t *testing.T) { expectObjectExistence(t, o, true) - err = o.Delete(nil) + err = o.Delete(nil, nil) expectSuccess(t, err) }) } diff --git a/tests/shared_test.go b/tests/shared_test.go index 7867d70..c6b15e4 100644 --- a/tests/shared_test.go +++ b/tests/shared_test.go @@ -99,7 +99,7 @@ func testWithContainer(t *testing.T, testCode func(c *schwift.Container)) { expectSuccess(t, err) if exists { expectSuccess(t, container.Objects().Foreach(func(o *schwift.Object) error { - return o.Delete(nil) + return o.Delete(nil, nil) })) err = container.Delete(nil) expectSuccess(t, err) |
