aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/largeobject_test.go71
-rw-r--r--tests/object_test.go4
-rw-r--r--tests/shared_test.go2
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)