1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/vcs-all-in-one-lfs-test-server

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
meta_store_test.go 6.2 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Shuanglei Tao Отправлено 19.06.2017 11:03 f5f7f0f
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")
}

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/vcs-all-in-one-lfs-test-server.git
git@api.gitlife.ru:oschina-mirror/vcs-all-in-one-lfs-test-server.git
oschina-mirror
vcs-all-in-one-lfs-test-server
vcs-all-in-one-lfs-test-server
master