list: Fix handling of maxKeys and prefixes.

This fixes a problem of requeuing the same request
and also fixes a major problem of sending truncated
for full key prefixes.

Fixes #1177
This commit is contained in:
Harshavardhana
2016-03-01 15:59:16 -08:00
parent 53ca192fe7
commit c7021f6a95
3 changed files with 53 additions and 56 deletions

View File

@@ -173,22 +173,20 @@ func testPaging(c *check.C, create func() Filesystem) {
key := "obj" + strconv.Itoa(i)
_, err = fs.CreateObject("bucket", key, "", int64(len(key)), bytes.NewBufferString(key), nil)
c.Assert(err, check.IsNil)
// TODO
//result, err = fs.ListObjects("bucket", "", "", "", 5)
//c.Assert(err, check.IsNil)
//c.Assert(len(result.Objects), check.Equals, i+1)
//c.Assert(result.IsTruncated, check.Equals, false)
result, err = fs.ListObjects("bucket", "", "", "", 5)
c.Assert(err, check.IsNil)
c.Assert(len(result.Objects), check.Equals, i+1)
c.Assert(result.IsTruncated, check.Equals, false)
}
// check after paging occurs pages work
for i := 6; i <= 10; i++ {
key := "obj" + strconv.Itoa(i)
_, err = fs.CreateObject("bucket", key, "", int64(len(key)), bytes.NewBufferString(key), nil)
c.Assert(err, check.IsNil)
// TODO
//result, err = fs.ListObjects("bucket", "", "", "", 5)
//c.Assert(err, check.IsNil)
//c.Assert(len(result.Objects), check.Equals, 5)
//c.Assert(result.IsTruncated, check.Equals, true)
result, err = fs.ListObjects("bucket", "", "", "", 5)
c.Assert(err, check.IsNil)
c.Assert(len(result.Objects), check.Equals, 5)
c.Assert(result.IsTruncated, check.Equals, true)
}
// check paging with prefix at end returns less objects
{