forked from TrueCloudLab/frostfs-s3-gw
[#165] Fix versions listing
Signed-off-by: Denis Kirillov <d.kirillov@yadro.com>
This commit is contained in:
parent
4ad84b9b94
commit
c7ee628ab0
10 changed files with 232 additions and 138 deletions
|
@ -1,14 +1,12 @@
|
|||
package handler
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"net/http"
|
||||
"net/url"
|
||||
"sort"
|
||||
"strconv"
|
||||
"strings"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"git.frostfs.info/TrueCloudLab/frostfs-s3-gw/api/data"
|
||||
"git.frostfs.info/TrueCloudLab/frostfs-s3-gw/api/layer"
|
||||
|
@ -368,88 +366,6 @@ func checkVersionsNames(t *testing.T, versions *ListObjectsVersionsResponse, nam
|
|||
}
|
||||
}
|
||||
|
||||
func TestHugeListV2(t *testing.T) {
|
||||
hc := prepareHandlerContext(t)
|
||||
|
||||
bktName := "bucket-for-listingv2"
|
||||
bktInfo := createTestBucket(hc, bktName)
|
||||
|
||||
objects := prepareObjects(hc, bktInfo, "", 50005)
|
||||
|
||||
fmt.Println("listing start")
|
||||
start := time.Now()
|
||||
|
||||
resp := &ListObjectsV2Response{IsTruncated: true}
|
||||
for resp.IsTruncated {
|
||||
resp = listObjectsV2(hc, bktName, "", "", "", resp.NextContinuationToken, -1)
|
||||
for i, content := range resp.Contents {
|
||||
if content.Key != objects[i] {
|
||||
t.Errorf("expected '%s', got '%s'", objects[i], content.Key)
|
||||
}
|
||||
}
|
||||
objects = objects[len(resp.Contents):]
|
||||
}
|
||||
require.Empty(t, objects)
|
||||
|
||||
fmt.Println(time.Since(start))
|
||||
}
|
||||
|
||||
func TestListV2StreamNested1(t *testing.T) {
|
||||
hc := prepareHandlerContext(t)
|
||||
|
||||
bktName := "bucket-for-listingv2-nested"
|
||||
bktInfo := createTestBucket(hc, bktName)
|
||||
|
||||
objects1 := prepareObjects(hc, bktInfo, "prefix", 10)
|
||||
objects2 := prepareObjects(hc, bktInfo, "prefix2", 10)
|
||||
|
||||
objects := append(objects1, objects2...)
|
||||
|
||||
fmt.Println("listing start")
|
||||
start := time.Now()
|
||||
|
||||
resp := &ListObjectsV2Response{IsTruncated: true}
|
||||
for resp.IsTruncated {
|
||||
resp = listObjectsV2(hc, bktName, "", "", "", resp.NextContinuationToken, -1)
|
||||
for i, content := range resp.Contents {
|
||||
if content.Key != objects[i] {
|
||||
t.Errorf("expected '%s', got '%s'", objects[i], content.Key)
|
||||
}
|
||||
}
|
||||
objects = objects[len(resp.Contents):]
|
||||
}
|
||||
require.Empty(t, objects)
|
||||
|
||||
fmt.Println(time.Since(start))
|
||||
}
|
||||
|
||||
func TestHugeListV1(t *testing.T) {
|
||||
hc := prepareHandlerContext(t)
|
||||
|
||||
bktName := "bucket-for-listingv1"
|
||||
bktInfo := createTestBucket(hc, bktName)
|
||||
|
||||
objects := prepareObjects(hc, bktInfo, "", 50005)
|
||||
|
||||
fmt.Println("listing start")
|
||||
start := time.Now()
|
||||
|
||||
resp := &ListObjectsV1Response{IsTruncated: true}
|
||||
for resp.IsTruncated {
|
||||
resp = listObjectsV1(hc, bktName, "", "", resp.NextMarker, -1)
|
||||
for i, content := range resp.Contents {
|
||||
if content.Key != objects[i] {
|
||||
t.Errorf("expected '%s', got '%s'", objects[i], content.Key)
|
||||
}
|
||||
}
|
||||
objects = objects[len(resp.Contents):]
|
||||
}
|
||||
|
||||
require.Empty(t, objects)
|
||||
|
||||
fmt.Println(time.Since(start))
|
||||
}
|
||||
|
||||
func prepareObjects(hc *handlerContext, bktInfo *data.BucketInfo, prefix string, size int) []string {
|
||||
treeID := "version"
|
||||
parentID := uint64(0)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue