From 925d56091daf39aebf1aac41afd47d3279c93984 Mon Sep 17 00:00:00 2001 From: "Pablo M. Bermudo Garay" Date: Tue, 8 Feb 2022 19:45:27 +0100 Subject: Delete empty buckets --- objectstore/memory_backend.go | 5 +++++ objectstore/memory_backend_test.go | 10 ++++++++++ 2 files changed, 15 insertions(+) (limited to 'objectstore') diff --git a/objectstore/memory_backend.go b/objectstore/memory_backend.go index 09f7d8a..7dcfe4a 100644 --- a/objectstore/memory_backend.go +++ b/objectstore/memory_backend.go @@ -70,5 +70,10 @@ func (os *MemObjectStore) DeleteObject(bucketId string, objectId string) error { } delete(bucket.objects, objectId) + // Delete the bucket if it's empty + if len(bucket.objects) == 0 { + delete(os.buckets, bucketId) + } + return nil } diff --git a/objectstore/memory_backend_test.go b/objectstore/memory_backend_test.go index 3fc2852..3ac347c 100644 --- a/objectstore/memory_backend_test.go +++ b/objectstore/memory_backend_test.go @@ -47,6 +47,11 @@ func TestCreateAndDelete(t *testing.T) { t.Error("Delete non-existent object. Got nil, want error") } + // Check the number of buckets + if numBuckets := len(objects.buckets); numBuckets != 1 { + t.Errorf("Number of buckets. Got %v, want 1", numBuckets) + } + // Delete the object if err := objects.DeleteObject(bucketId, objectId); err != nil { t.Fatalf("Delete test object: %v", err) @@ -56,4 +61,9 @@ func TestCreateAndDelete(t *testing.T) { if err := objects.DeleteObject(bucketId, objectId); err == nil { t.Error("Delete already deleted object. Got nil, want error") } + + // Re-check the number of buckets + if numBuckets := len(objects.buckets); numBuckets != 0 { + t.Errorf("Number of buckets. Got %v, want 0", numBuckets) + } } -- cgit v1.2.3-70-g09d2