62 lines
1.2 KiB
Go
62 lines
1.2 KiB
Go
package locking
|
|
|
|
import (
|
|
"io/ioutil"
|
|
"os"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
func TestLockCache(t *testing.T) {
|
|
var err error
|
|
|
|
tmpf, err := ioutil.TempFile("", "testCacheLock")
|
|
assert.Nil(t, err)
|
|
defer func() {
|
|
os.Remove(tmpf.Name())
|
|
}()
|
|
tmpf.Close()
|
|
|
|
cache, err := NewLockCache(tmpf.Name())
|
|
assert.Nil(t, err)
|
|
|
|
testLocks := []Lock{
|
|
Lock{Path: "folder/test1.dat", Id: "101"},
|
|
Lock{Path: "folder/test2.dat", Id: "102"},
|
|
Lock{Path: "root.dat", Id: "103"},
|
|
}
|
|
|
|
for _, l := range testLocks {
|
|
err = cache.Add(l)
|
|
assert.Nil(t, err)
|
|
}
|
|
|
|
locks := cache.Locks()
|
|
for _, l := range testLocks {
|
|
assert.Contains(t, locks, l)
|
|
}
|
|
assert.Equal(t, len(testLocks), len(locks))
|
|
|
|
err = cache.RemoveByPath("folder/test2.dat")
|
|
assert.Nil(t, err)
|
|
|
|
locks = cache.Locks()
|
|
// delete item 1 from test locls
|
|
testLocks = append(testLocks[:1], testLocks[2:]...)
|
|
for _, l := range testLocks {
|
|
assert.Contains(t, locks, l)
|
|
}
|
|
assert.Equal(t, len(testLocks), len(locks))
|
|
|
|
err = cache.RemoveById("101")
|
|
assert.Nil(t, err)
|
|
|
|
locks = cache.Locks()
|
|
testLocks = testLocks[1:]
|
|
for _, l := range testLocks {
|
|
assert.Contains(t, locks, l)
|
|
}
|
|
assert.Equal(t, len(testLocks), len(locks))
|
|
}
|