3 Star 0 Fork 0

Gitee 极速下载/lfs-test-server

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
此仓库是为了提升国内下载速度的镜像仓库,每日同步一次。 原始仓库: https://github.com/github/lfs-test-server
克隆/下载
meta_store_test.go 6.20 KB
一键复制 编辑 原始数据 按行查看 历史
tsl0922 提交于 8年前 . Add locks API
package main
import (
"fmt"
"os"
"testing"
"time"
)
var (
metaStoreTest *MetaStore
)
func TestGetMeta(t *testing.T) {
setupMeta()
defer teardownMeta()
meta, err := metaStoreTest.Get(&RequestVars{Oid: contentOid})
if err != nil {
t.Fatalf("Error retreiving meta: %s", err)
}
if meta.Oid != contentOid {
t.Errorf("expected to get content oid, got: %s", meta.Oid)
}
if meta.Size != contentSize {
t.Errorf("expected to get content size, got: %d", meta.Size)
}
}
func TestPutMeta(t *testing.T) {
setupMeta()
defer teardownMeta()
meta, err := metaStoreTest.Put(&RequestVars{Oid: nonExistingOid, Size: 42})
if err != nil {
t.Errorf("expected put to succeed, got : %s", err)
}
if meta.Existing {
t.Errorf("expected meta to not have existed")
}
meta, err = metaStoreTest.Get(&RequestVars{Oid: nonExistingOid})
if err != nil {
t.Errorf("expected to be able to retreive new put, got : %s", err)
}
if meta.Oid != nonExistingOid {
t.Errorf("expected oids to match, got: %s", meta.Oid)
}
if meta.Size != 42 {
t.Errorf("expected sizes to match, got: %d", meta.Size)
}
meta, err = metaStoreTest.Put(&RequestVars{Oid: nonExistingOid, Size: 42})
if err != nil {
t.Errorf("expected put to succeed, got : %s", err)
}
if !meta.Existing {
t.Errorf("expected meta to now exist")
}
}
func TestLocks(t *testing.T) {
setupMeta()
defer teardownMeta()
for i := 0; i < 5; i++ {
lock := NewTestLock(randomLockId(), fmt.Sprintf("path-%d", i), fmt.Sprintf("user-%d", i))
if err := metaStoreTest.AddLocks(testRepo, lock); err != nil {
t.Errorf("expected AddLocks to succeed, got : %s", err)
}
}
locks, err := metaStoreTest.Locks(testRepo)
if err != nil {
t.Errorf("expected Locks to succeed, got : %s", err)
}
if len(locks) != 5 {
t.Errorf("expected returned lock count to match, got: %d", len(locks))
}
}
func TestFilteredLocks(t *testing.T) {
setupMeta()
defer teardownMeta()
testLocks := make([]Lock, 0, 5)
for i := 0; i < 5; i++ {
lock := NewTestLock(randomLockId(), fmt.Sprintf("path-%d", i), fmt.Sprintf("user-%d", i))
testLocks = append(testLocks, lock)
}
if err := metaStoreTest.AddLocks(testRepo, testLocks...); err != nil {
t.Errorf("expected AddLocks to succeed, got : %s", err)
}
locks, next, err := metaStoreTest.FilteredLocks(testRepo, "", "", "3")
if err != nil {
t.Errorf("expected FilteredLocks to succeed, got : %s", err)
}
if len(locks) != 3 {
t.Errorf("expected locks count to match limit, got: %d", len(locks))
}
if next == "" {
t.Errorf("expected next to exist")
}
locks, next, err = metaStoreTest.FilteredLocks(testRepo, "", next, "2")
if err != nil {
t.Errorf("expected FilteredLocks to succeed, got : %s", err)
}
if len(locks) != 2 {
t.Errorf("expected locks count to match limit, got: %d", len(locks))
}
if next != "" {
t.Errorf("expected next to not exist, got: %s", next)
}
}
func TestAddLocks(t *testing.T) {
setupMeta()
defer teardownMeta()
lock := NewTestLock(lockId, lockPath, testUser)
if err := metaStoreTest.AddLocks(testRepo, lock); err != nil {
t.Errorf("expected AddLocks to succeed, got : %s", err)
}
locks, _, err := metaStoreTest.FilteredLocks(testRepo, lock.Path, "", "1")
if err != nil {
t.Errorf("expected FilteredLocks to succeed, got : %s", err)
}
if len(locks) != 1 {
t.Errorf("expected lock to be existed")
}
if locks[0].Id != lockId {
t.Errorf("expected lockId to match, got: %s", locks[0])
}
}
func TestDeleteLock(t *testing.T) {
setupMeta()
defer teardownMeta()
lock := NewTestLock(lockId, lockPath, testUser)
if err := metaStoreTest.AddLocks(testRepo, lock); err != nil {
t.Errorf("expected AddLocks to succeed, got : %s", err)
}
deleted, err := metaStoreTest.DeleteLock(testRepo, testUser, lock.Id, false)
if err != nil {
t.Errorf("expected DeleteLock to succeed, got : %s", err)
}
if deleted == nil || deleted.Id != lock.Id {
t.Errorf("expected deleted lock to be returned, got : %s", deleted)
}
}
func TestDeleteLockNotOwner(t *testing.T) {
setupMeta()
defer teardownMeta()
lock := NewTestLock(lockId, lockPath, testUser)
if err := metaStoreTest.AddLocks(testRepo, lock); err != nil {
t.Errorf("expected AddLocks to succeed, got : %s", err)
}
deleted, err := metaStoreTest.DeleteLock(testRepo, testUser1, lock.Id, false)
if err == nil || deleted != nil {
t.Errorf("expected DeleteLock to failed")
}
if err != errNotOwner {
t.Errorf("expected DeleteLock error match, got: %s", err)
}
}
func TestDeleteLockNotOwnerForce(t *testing.T) {
setupMeta()
defer teardownMeta()
lock := NewTestLock(lockId, lockPath, testUser)
if err := metaStoreTest.AddLocks(testRepo, lock); err != nil {
t.Errorf("expected AddLocks to succeed, got : %s", err)
}
deleted, err := metaStoreTest.DeleteLock(testRepo, testUser1, lock.Id, true)
if err != nil {
t.Errorf("expected DeleteLock(force) to succeed, got : %s", err)
}
if deleted == nil || deleted.Id != lock.Id {
t.Errorf("expected deleted lock to be returned, got : %s", deleted)
}
}
func TestDeleteLockNonExisting(t *testing.T) {
setupMeta()
defer teardownMeta()
lock := NewTestLock(lockId, lockPath, testUser)
if err := metaStoreTest.AddLocks(testRepo, lock); err != nil {
t.Errorf("expected AddLocks to succeed, got : %s", err)
}
deleted, err := metaStoreTest.DeleteLock(testRepo, testUser, nonExistingLockId, false)
if err != nil {
t.Errorf("expected DeleteLock to succeed, got : %s", err)
}
if deleted != nil {
t.Errorf("expected nil returned, got : %s", deleted)
}
}
func NewTestLock(id, path, user string) Lock {
return Lock{
Id: id,
Path: path,
Owner: User{
Name: user,
},
LockedAt: time.Now(),
}
}
func setupMeta() {
store, err := NewMetaStore("test-meta-store.db")
if err != nil {
fmt.Printf("error initializing test meta store: %s\n", err)
os.Exit(1)
}
metaStoreTest = store
if err := metaStoreTest.AddUser(testUser, testPass); err != nil {
teardownMeta()
fmt.Printf("error adding test user to meta store: %s\n", err)
os.Exit(1)
}
rv := &RequestVars{Oid: contentOid, Size: contentSize}
if _, err := metaStoreTest.Put(rv); err != nil {
teardownMeta()
fmt.Printf("error seeding test meta store: %s\n", err)
os.Exit(1)
}
}
func teardownMeta() {
metaStoreTest.Close()
os.RemoveAll("test-meta-store.db")
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/mirrors/lfs-test-server.git
git@gitee.com:mirrors/lfs-test-server.git
mirrors
lfs-test-server
lfs-test-server
main

搜索帮助