Files
eiblog/vendor/qiniupkg.com/api.v7/kodo/bucket_test.go
T
2017-02-18 15:23:57 +08:00

148 lines
2.9 KiB
Go

package kodo
import (
"math/rand"
"strconv"
"testing"
"time"
)
var (
bkey = "abatch"
bnewkey1 = "abatch/newkey1"
bnewkey2 = "abatch/newkey2"
)
func init() {
if skipTest() {
return
}
rand.Seed(time.Now().UnixNano())
bkey += strconv.Itoa(rand.Int())
bnewkey1 += strconv.Itoa(rand.Int())
bnewkey2 += strconv.Itoa(rand.Int())
// 删除 可能存在的 key
bucket.BatchDelete(nil, bkey, bnewkey1, bnewkey2)
}
func TestAll(t *testing.T) {
if skipTest() {
return
}
//上传一个文件用用于测试
err := upFile("bucket_test.go", bkey)
if err != nil {
t.Fatal(err)
}
defer bucket.Delete(nil, bkey)
testBatchStat(t)
testBatchCopy(t)
testBatchMove(t)
testBatchDelete(t)
testBatch(t)
testClient_MakeUptokenBucket(t)
}
func testBatchStat(t *testing.T) {
rets, err := bucket.BatchStat(nil, bkey, bkey, bkey)
if err != nil {
t.Fatal("bucket.BatchStat failed:", err)
}
if len(rets) != 3 {
t.Fatal("BatchStat failed: len(rets) = ", 3)
}
stat, err := bucket.Stat(nil, bkey)
if err != nil {
t.Fatal("bucket.Stat failed:", err)
}
if rets[0].Data != stat || rets[1].Data != stat || rets[2].Data != stat {
t.Fatal("BatchStat failed : returns err")
}
}
func testBatchMove(t *testing.T) {
stat0, err := bucket.Stat(nil, bkey)
if err != nil {
t.Fatal("BathMove get stat failed:", err)
}
_, err = bucket.BatchMove(nil, KeyPair{bkey, bnewkey1}, KeyPair{bnewkey1, bnewkey2})
if err != nil {
t.Fatal("bucket.BatchMove failed:", err)
}
defer bucket.Move(nil, bnewkey2, bkey)
stat1, err := bucket.Stat(nil, bnewkey2)
if err != nil {
t.Fatal("BathMove get stat failed:", err)
}
if stat0.Hash != stat1.Hash {
t.Fatal("BatchMove failed : Move err", stat0, stat1)
}
}
func testBatchCopy(t *testing.T) {
_, err := bucket.BatchCopy(nil, KeyPair{bkey, bnewkey1}, KeyPair{bkey, bnewkey2})
if err != nil {
t.Fatal(err)
}
defer bucket.Delete(nil, bnewkey1)
defer bucket.Delete(nil, bnewkey2)
stat0, _ := bucket.Stat(nil, bkey)
stat1, _ := bucket.Stat(nil, bnewkey1)
stat2, _ := bucket.Stat(nil, bnewkey2)
if stat0.Hash != stat1.Hash || stat0.Hash != stat2.Hash {
t.Fatal("BatchCopy failed : Copy err")
}
}
func testBatchDelete(t *testing.T) {
bucket.Copy(nil, bkey, bnewkey1)
bucket.Copy(nil, bkey, bnewkey2)
_, err := bucket.BatchDelete(nil, bnewkey1, bnewkey2)
if err != nil {
t.Fatal(err)
}
_, err1 := bucket.Stat(nil, bnewkey1)
_, err2 := bucket.Stat(nil, bnewkey2)
//这里 err1 != nil,否则文件没被成功删除
if err1 == nil || err2 == nil {
t.Fatal("BatchDelete failed : File do not delete")
}
}
func testBatch(t *testing.T) {
ops := []string{
URICopy(bucketName, bkey, bucketName, bnewkey1),
URIDelete(bucketName, bkey),
URIMove(bucketName, bnewkey1, bucketName, bkey),
}
var rets []BatchItemRet
err := client.Batch(nil, &rets, ops)
if err != nil {
t.Fatal(err)
}
if len(rets) != 3 {
t.Fatal("len(rets) != 3")
}
}