75 lines
1.9 KiB
Go
75 lines
1.9 KiB
Go
|
package azure
|
||
|
|
||
|
import (
|
||
|
"math"
|
||
|
"testing"
|
||
|
|
||
|
azure "github.com/MSOpenTech/azure-sdk-for-go/clients/storage"
|
||
|
)
|
||
|
|
||
|
func Test_blockIdGenerator(t *testing.T) {
|
||
|
r := newBlockIDGenerator()
|
||
|
|
||
|
for i := 1; i <= 10; i++ {
|
||
|
if expected := i - 1; len(r.pool) != expected {
|
||
|
t.Fatalf("rand pool had wrong number of items: %d, expected:%d", len(r.pool), expected)
|
||
|
}
|
||
|
if id := r.Generate(); id == "" {
|
||
|
t.Fatal("returned empty id")
|
||
|
}
|
||
|
if expected := i; len(r.pool) != expected {
|
||
|
t.Fatalf("rand pool has wrong number of items: %d, expected:%d", len(r.pool), expected)
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func Test_blockIdGenerator_Feed(t *testing.T) {
|
||
|
r := newBlockIDGenerator()
|
||
|
if expected := 0; len(r.pool) != expected {
|
||
|
t.Fatalf("rand pool had wrong number of items: %d, expected:%d", len(r.pool), expected)
|
||
|
}
|
||
|
|
||
|
// feed empty list
|
||
|
blocks := azure.BlockListResponse{}
|
||
|
r.Feed(blocks)
|
||
|
if expected := 0; len(r.pool) != expected {
|
||
|
t.Fatalf("rand pool had wrong number of items: %d, expected:%d", len(r.pool), expected)
|
||
|
}
|
||
|
|
||
|
// feed blocks
|
||
|
blocks = azure.BlockListResponse{
|
||
|
CommittedBlocks: []azure.BlockResponse{
|
||
|
{"1", 1},
|
||
|
{"2", 2},
|
||
|
},
|
||
|
UncommittedBlocks: []azure.BlockResponse{
|
||
|
{"3", 3},
|
||
|
}}
|
||
|
r.Feed(blocks)
|
||
|
if expected := 3; len(r.pool) != expected {
|
||
|
t.Fatalf("rand pool had wrong number of items: %d, expected:%d", len(r.pool), expected)
|
||
|
}
|
||
|
|
||
|
// feed same block IDs with committed/uncommitted place changed
|
||
|
blocks = azure.BlockListResponse{
|
||
|
CommittedBlocks: []azure.BlockResponse{
|
||
|
{"3", 3},
|
||
|
},
|
||
|
UncommittedBlocks: []azure.BlockResponse{
|
||
|
{"1", 1},
|
||
|
}}
|
||
|
r.Feed(blocks)
|
||
|
if expected := 3; len(r.pool) != expected {
|
||
|
t.Fatalf("rand pool had wrong number of items: %d, expected:%d", len(r.pool), expected)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func Test_toBlockId(t *testing.T) {
|
||
|
min := 0
|
||
|
max := math.MaxInt64
|
||
|
|
||
|
if len(toBlockID(min)) != len(toBlockID(max)) {
|
||
|
t.Fatalf("different-sized blockIDs are returned")
|
||
|
}
|
||
|
}
|