mirror of
https://github.com/etcd-io/etcd.git
synced 2024-09-27 06:25:44 +00:00
fix store test
This commit is contained in:
parent
fbf40fb74a
commit
c5f9afa0e8
@ -16,7 +16,7 @@ func TestBasicStats(t *testing.T) {
|
|||||||
|
|
||||||
for _, k := range keys {
|
for _, k := range keys {
|
||||||
i++
|
i++
|
||||||
_, err := s.Create(k, "bar", false, false, time.Now().Add(time.Second*time.Duration(rand.Intn(6))), i, 1)
|
_, err := s.Create(k, "bar", false, time.Now().Add(time.Second*time.Duration(rand.Intn(6))), i, 1)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
SetFail++
|
SetFail++
|
||||||
} else {
|
} else {
|
||||||
@ -146,7 +146,7 @@ func TestBasicStats(t *testing.T) {
|
|||||||
|
|
||||||
for _, k := range keys {
|
for _, k := range keys {
|
||||||
i++
|
i++
|
||||||
_, err := s.Create(k, "bar", false, false, time.Now().Add(time.Second*3), i, 1)
|
_, err := s.Create(k, "bar", false, time.Now().Add(time.Second*3), i, 1)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
SetFail++
|
SetFail++
|
||||||
} else {
|
} else {
|
||||||
|
@ -302,7 +302,7 @@ func (s *store) update(nodePath string, newValue string, expireTime time.Time, i
|
|||||||
return e, nil
|
return e, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *store) internalCreate(nodePath string, value string, incrementalSuffix bool, force bool,
|
func (s *store) internalCreate(nodePath string, value string, incrementalSuffix bool, replace bool,
|
||||||
expireTime time.Time, index uint64, term uint64, action string) (*Event, error) {
|
expireTime time.Time, index uint64, term uint64, action string) (*Event, error) {
|
||||||
|
|
||||||
s.Index, s.Term = index, term
|
s.Index, s.Term = index, term
|
||||||
@ -330,7 +330,7 @@ func (s *store) internalCreate(nodePath string, value string, incrementalSuffix
|
|||||||
|
|
||||||
// force will try to replace a existing file
|
// force will try to replace a existing file
|
||||||
if n != nil {
|
if n != nil {
|
||||||
if force {
|
if replace {
|
||||||
if n.IsDir() {
|
if n.IsDir() {
|
||||||
return nil, etcdErr.NewError(etcdErr.EcodeNotFile, nodePath, index, term)
|
return nil, etcdErr.NewError(etcdErr.EcodeNotFile, nodePath, index, term)
|
||||||
}
|
}
|
||||||
|
@ -10,10 +10,10 @@ import (
|
|||||||
func TestCreateAndGet(t *testing.T) {
|
func TestCreateAndGet(t *testing.T) {
|
||||||
s := newStore()
|
s := newStore()
|
||||||
|
|
||||||
s.Create("/foobar", "bar", false, false, Permanent, 1, 1)
|
s.Create("/foobar", "bar", false, Permanent, 1, 1)
|
||||||
|
|
||||||
// already exist, create should fail
|
// already exist, create should fail
|
||||||
_, err := s.Create("/foobar", "bar", false, false, Permanent, 1, 1)
|
_, err := s.Create("/foobar", "bar", false, Permanent, 1, 1)
|
||||||
|
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Fatal("Create should fail")
|
t.Fatal("Create should fail")
|
||||||
@ -21,10 +21,10 @@ func TestCreateAndGet(t *testing.T) {
|
|||||||
|
|
||||||
s.Delete("/foobar", true, 1, 1)
|
s.Delete("/foobar", true, 1, 1)
|
||||||
|
|
||||||
s.Create("/foobar/foo", "bar", false, false, Permanent, 1, 1)
|
s.Create("/foobar/foo", "bar", false, Permanent, 1, 1)
|
||||||
|
|
||||||
// already exist, create should fail
|
// already exist, create should fail
|
||||||
_, err = s.Create("/foobar", "bar", false, false, Permanent, 1, 1)
|
_, err = s.Create("/foobar", "bar", false, Permanent, 1, 1)
|
||||||
|
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Fatal("Create should fail")
|
t.Fatal("Create should fail")
|
||||||
@ -38,14 +38,14 @@ func TestCreateAndGet(t *testing.T) {
|
|||||||
createAndGet(s, "/foo/foo/bar", t)
|
createAndGet(s, "/foo/foo/bar", t)
|
||||||
|
|
||||||
// meet file, create should fail
|
// meet file, create should fail
|
||||||
_, err = s.Create("/foo/bar/bar", "bar", false, false, Permanent, 2, 1)
|
_, err = s.Create("/foo/bar/bar", "bar", false, Permanent, 2, 1)
|
||||||
|
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Fatal("Create should fail")
|
t.Fatal("Create should fail")
|
||||||
}
|
}
|
||||||
|
|
||||||
// create a directory
|
// create a directory
|
||||||
_, err = s.Create("/fooDir", "", false, false, Permanent, 3, 1)
|
_, err = s.Create("/fooDir", "", false, Permanent, 3, 1)
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal("Cannot create /fooDir")
|
t.Fatal("Cannot create /fooDir")
|
||||||
@ -58,7 +58,7 @@ func TestCreateAndGet(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// create a file under directory
|
// create a file under directory
|
||||||
_, err = s.Create("/fooDir/bar", "bar", false, false, Permanent, 4, 1)
|
_, err = s.Create("/fooDir/bar", "bar", false, Permanent, 4, 1)
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal("Cannot create /fooDir/bar = bar")
|
t.Fatal("Cannot create /fooDir/bar = bar")
|
||||||
@ -68,7 +68,7 @@ func TestCreateAndGet(t *testing.T) {
|
|||||||
func TestUpdateFile(t *testing.T) {
|
func TestUpdateFile(t *testing.T) {
|
||||||
s := newStore()
|
s := newStore()
|
||||||
|
|
||||||
_, err := s.Create("/foo/bar", "bar", false, false, Permanent, 1, 1)
|
_, err := s.Create("/foo/bar", "bar", false, Permanent, 1, 1)
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("cannot create %s=bar [%s]", "/foo/bar", err.Error())
|
t.Fatalf("cannot create %s=bar [%s]", "/foo/bar", err.Error())
|
||||||
@ -91,24 +91,24 @@ func TestUpdateFile(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// create a directory, update its ttl, to see if it will be deleted
|
// create a directory, update its ttl, to see if it will be deleted
|
||||||
_, err = s.Create("/foo/foo", "", false, false, Permanent, 3, 1)
|
_, err = s.Create("/foo/foo", "", false, Permanent, 3, 1)
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("cannot create dir [%s] [%s]", "/foo/foo", err.Error())
|
t.Fatalf("cannot create dir [%s] [%s]", "/foo/foo", err.Error())
|
||||||
}
|
}
|
||||||
|
|
||||||
_, err = s.Create("/foo/foo/foo1", "bar1", false, false, Permanent, 4, 1)
|
_, err = s.Create("/foo/foo/foo1", "bar1", false, Permanent, 4, 1)
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal("cannot create [%s]", err.Error())
|
t.Fatal("cannot create [%s]", err.Error())
|
||||||
}
|
}
|
||||||
|
|
||||||
_, err = s.Create("/foo/foo/foo2", "", false, false, Permanent, 5, 1)
|
_, err = s.Create("/foo/foo/foo2", "", false, Permanent, 5, 1)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal("cannot create [%s]", err.Error())
|
t.Fatal("cannot create [%s]", err.Error())
|
||||||
}
|
}
|
||||||
|
|
||||||
_, err = s.Create("/foo/foo/foo2/boo", "boo1", false, false, Permanent, 6, 1)
|
_, err = s.Create("/foo/foo/foo2/boo", "boo1", false, Permanent, 6, 1)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal("cannot create [%s]", err.Error())
|
t.Fatal("cannot create [%s]", err.Error())
|
||||||
}
|
}
|
||||||
@ -165,11 +165,11 @@ func TestListDirectory(t *testing.T) {
|
|||||||
|
|
||||||
// create dir /foo
|
// create dir /foo
|
||||||
// set key-value /foo/foo=bar
|
// set key-value /foo/foo=bar
|
||||||
s.Create("/foo/foo", "bar", false, false, Permanent, 1, 1)
|
s.Create("/foo/foo", "bar", false, Permanent, 1, 1)
|
||||||
|
|
||||||
// create dir /foo/fooDir
|
// create dir /foo/fooDir
|
||||||
// set key-value /foo/fooDir/foo=bar
|
// set key-value /foo/fooDir/foo=bar
|
||||||
s.Create("/foo/fooDir/foo", "bar", false, false, Permanent, 2, 1)
|
s.Create("/foo/fooDir/foo", "bar", false, Permanent, 2, 1)
|
||||||
|
|
||||||
e, err := s.Get("/foo", true, false, 2, 1)
|
e, err := s.Get("/foo", true, false, 2, 1)
|
||||||
|
|
||||||
@ -196,7 +196,7 @@ func TestListDirectory(t *testing.T) {
|
|||||||
|
|
||||||
// create dir /foo/_hidden
|
// create dir /foo/_hidden
|
||||||
// set key-value /foo/_hidden/foo -> bar
|
// set key-value /foo/_hidden/foo -> bar
|
||||||
s.Create("/foo/_hidden/foo", "bar", false, false, Permanent, 3, 1)
|
s.Create("/foo/_hidden/foo", "bar", false, Permanent, 3, 1)
|
||||||
|
|
||||||
e, _ = s.Get("/foo", false, false, 2, 1)
|
e, _ = s.Get("/foo", false, false, 2, 1)
|
||||||
|
|
||||||
@ -208,7 +208,7 @@ func TestListDirectory(t *testing.T) {
|
|||||||
func TestRemove(t *testing.T) {
|
func TestRemove(t *testing.T) {
|
||||||
s := newStore()
|
s := newStore()
|
||||||
|
|
||||||
s.Create("/foo", "bar", false, false, Permanent, 1, 1)
|
s.Create("/foo", "bar", false, Permanent, 1, 1)
|
||||||
_, err := s.Delete("/foo", false, 1, 1)
|
_, err := s.Delete("/foo", false, 1, 1)
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -221,9 +221,9 @@ func TestRemove(t *testing.T) {
|
|||||||
t.Fatalf("can get the node after deletion")
|
t.Fatalf("can get the node after deletion")
|
||||||
}
|
}
|
||||||
|
|
||||||
s.Create("/foo/bar", "bar", false, false, Permanent, 1, 1)
|
s.Create("/foo/bar", "bar", false, Permanent, 1, 1)
|
||||||
s.Create("/foo/car", "car", false, false, Permanent, 1, 1)
|
s.Create("/foo/car", "car", false, Permanent, 1, 1)
|
||||||
s.Create("/foo/dar/dar", "dar", false, false, Permanent, 1, 1)
|
s.Create("/foo/dar/dar", "dar", false, Permanent, 1, 1)
|
||||||
|
|
||||||
_, err = s.Delete("/foo", false, 1, 1)
|
_, err = s.Delete("/foo", false, 1, 1)
|
||||||
|
|
||||||
@ -249,7 +249,7 @@ func TestExpire(t *testing.T) {
|
|||||||
|
|
||||||
expire := time.Now().Add(time.Second)
|
expire := time.Now().Add(time.Second)
|
||||||
|
|
||||||
s.Create("/foo", "bar", false, false, expire, 1, 1)
|
s.Create("/foo", "bar", false, expire, 1, 1)
|
||||||
|
|
||||||
_, err := s.Get("/foo", false, false, 1, 1)
|
_, err := s.Get("/foo", false, false, 1, 1)
|
||||||
|
|
||||||
@ -267,7 +267,7 @@ func TestExpire(t *testing.T) {
|
|||||||
|
|
||||||
// test if we can reach the node before expiration
|
// test if we can reach the node before expiration
|
||||||
expire = time.Now().Add(time.Second)
|
expire = time.Now().Add(time.Second)
|
||||||
s.Create("/foo", "bar", false, false, expire, 1, 1)
|
s.Create("/foo", "bar", false, expire, 1, 1)
|
||||||
|
|
||||||
time.Sleep(time.Millisecond * 50)
|
time.Sleep(time.Millisecond * 50)
|
||||||
_, err = s.Get("/foo", false, false, 1, 1)
|
_, err = s.Get("/foo", false, false, 1, 1)
|
||||||
@ -278,7 +278,7 @@ func TestExpire(t *testing.T) {
|
|||||||
|
|
||||||
expire = time.Now().Add(time.Second)
|
expire = time.Now().Add(time.Second)
|
||||||
|
|
||||||
s.Create("/foo", "bar", false, false, expire, 1, 1)
|
s.Create("/foo", "bar", false, expire, 1, 1)
|
||||||
_, err = s.Delete("/foo", false, 1, 1)
|
_, err = s.Delete("/foo", false, 1, 1)
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -288,7 +288,7 @@ func TestExpire(t *testing.T) {
|
|||||||
|
|
||||||
func TestCompareAndSwap(t *testing.T) { // TODO prevValue == nil ?
|
func TestCompareAndSwap(t *testing.T) { // TODO prevValue == nil ?
|
||||||
s := newStore()
|
s := newStore()
|
||||||
s.Create("/foo", "bar", false, false, Permanent, 1, 1)
|
s.Create("/foo", "bar", false, Permanent, 1, 1)
|
||||||
|
|
||||||
// test on wrong previous value
|
// test on wrong previous value
|
||||||
_, err := s.CompareAndSwap("/foo", "barbar", 0, "car", Permanent, 2, 1)
|
_, err := s.CompareAndSwap("/foo", "barbar", 0, "car", Permanent, 2, 1)
|
||||||
@ -323,7 +323,7 @@ func TestWatch(t *testing.T) {
|
|||||||
s := newStore()
|
s := newStore()
|
||||||
// watch at a deeper path
|
// watch at a deeper path
|
||||||
c, _ := s.Watch("/foo/foo/foo", false, 0, 0, 1)
|
c, _ := s.Watch("/foo/foo/foo", false, 0, 0, 1)
|
||||||
s.Create("/foo/foo/foo", "bar", false, false, Permanent, 1, 1)
|
s.Create("/foo/foo/foo", "bar", false, Permanent, 1, 1)
|
||||||
|
|
||||||
e := nonblockingRetrive(c)
|
e := nonblockingRetrive(c)
|
||||||
if e.Key != "/foo/foo/foo" || e.Action != Create {
|
if e.Key != "/foo/foo/foo" || e.Action != Create {
|
||||||
@ -353,7 +353,7 @@ func TestWatch(t *testing.T) {
|
|||||||
|
|
||||||
// watch at a prefix
|
// watch at a prefix
|
||||||
c, _ = s.Watch("/foo", true, 0, 4, 1)
|
c, _ = s.Watch("/foo", true, 0, 4, 1)
|
||||||
s.Create("/foo/foo/boo", "bar", false, false, Permanent, 5, 1)
|
s.Create("/foo/foo/boo", "bar", false, Permanent, 5, 1)
|
||||||
e = nonblockingRetrive(c)
|
e = nonblockingRetrive(c)
|
||||||
if e.Key != "/foo/foo/boo" || e.Action != Create {
|
if e.Key != "/foo/foo/boo" || e.Action != Create {
|
||||||
t.Fatal("watch for Create subdirectory fails")
|
t.Fatal("watch for Create subdirectory fails")
|
||||||
@ -381,7 +381,7 @@ func TestWatch(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// watch expire
|
// watch expire
|
||||||
s.Create("/foo/foo/boo", "foo", false, false, time.Now().Add(time.Second*1), 9, 1)
|
s.Create("/foo/foo/boo", "foo", false, time.Now().Add(time.Second*1), 9, 1)
|
||||||
c, _ = s.Watch("/foo", true, 0, 9, 1)
|
c, _ = s.Watch("/foo", true, 0, 9, 1)
|
||||||
time.Sleep(time.Second * 2)
|
time.Sleep(time.Second * 2)
|
||||||
e = nonblockingRetrive(c)
|
e = nonblockingRetrive(c)
|
||||||
@ -389,7 +389,7 @@ func TestWatch(t *testing.T) {
|
|||||||
t.Fatal("watch for Expiration of Create() subdirectory fails ", e)
|
t.Fatal("watch for Expiration of Create() subdirectory fails ", e)
|
||||||
}
|
}
|
||||||
|
|
||||||
s.Create("/foo/foo/boo", "foo", false, false, Permanent, 10, 1)
|
s.Create("/foo/foo/boo", "foo", false, Permanent, 10, 1)
|
||||||
s.update("/foo/foo/boo", "bar", time.Now().Add(time.Second*1), 11, 1)
|
s.update("/foo/foo/boo", "bar", time.Now().Add(time.Second*1), 11, 1)
|
||||||
c, _ = s.Watch("/foo", true, 0, 11, 1)
|
c, _ = s.Watch("/foo", true, 0, 11, 1)
|
||||||
time.Sleep(time.Second * 2)
|
time.Sleep(time.Second * 2)
|
||||||
@ -398,7 +398,7 @@ func TestWatch(t *testing.T) {
|
|||||||
t.Fatal("watch for Expiration of Update() subdirectory fails ", e)
|
t.Fatal("watch for Expiration of Update() subdirectory fails ", e)
|
||||||
}
|
}
|
||||||
|
|
||||||
s.Create("/foo/foo/boo", "foo", false, false, Permanent, 12, 1)
|
s.Create("/foo/foo/boo", "foo", false, Permanent, 12, 1)
|
||||||
s.CompareAndSwap("/foo/foo/boo", "foo", 0, "bar", time.Now().Add(time.Second*1), 13, 1)
|
s.CompareAndSwap("/foo/foo/boo", "foo", 0, "bar", time.Now().Add(time.Second*1), 13, 1)
|
||||||
c, _ = s.Watch("/foo", true, 0, 13, 1)
|
c, _ = s.Watch("/foo", true, 0, 13, 1)
|
||||||
time.Sleep(time.Second * 2)
|
time.Sleep(time.Second * 2)
|
||||||
@ -416,7 +416,7 @@ func TestSort(t *testing.T) {
|
|||||||
|
|
||||||
i := uint64(1)
|
i := uint64(1)
|
||||||
for _, k := range keys {
|
for _, k := range keys {
|
||||||
_, err := s.Create(k, "bar", false, false, Permanent, i, 1)
|
_, err := s.Create(k, "bar", false, Permanent, i, 1)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
} else {
|
} else {
|
||||||
@ -454,7 +454,7 @@ func TestSaveAndRecover(t *testing.T) {
|
|||||||
|
|
||||||
i := uint64(1)
|
i := uint64(1)
|
||||||
for _, k := range keys {
|
for _, k := range keys {
|
||||||
_, err := s.Create(k, "bar", false, false, Permanent, i, 1)
|
_, err := s.Create(k, "bar", false, Permanent, i, 1)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
} else {
|
} else {
|
||||||
@ -466,7 +466,7 @@ func TestSaveAndRecover(t *testing.T) {
|
|||||||
// test if we can reach the node before expiration
|
// test if we can reach the node before expiration
|
||||||
|
|
||||||
expire := time.Now().Add(time.Second)
|
expire := time.Now().Add(time.Second)
|
||||||
s.Create("/foo/foo", "bar", false, false, expire, 1, 1)
|
s.Create("/foo/foo", "bar", false, expire, 1, 1)
|
||||||
b, err := s.Save()
|
b, err := s.Save()
|
||||||
|
|
||||||
cloneFs := newStore()
|
cloneFs := newStore()
|
||||||
@ -522,7 +522,7 @@ func GenKeys(num int, depth int) []string {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func createAndGet(s *store, path string, t *testing.T) {
|
func createAndGet(s *store, path string, t *testing.T) {
|
||||||
_, err := s.Create(path, "bar", false, false, Permanent, 1, 1)
|
_, err := s.Create(path, "bar", false, Permanent, 1, 1)
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("cannot create %s=bar [%s]", path, err.Error())
|
t.Fatalf("cannot create %s=bar [%s]", path, err.Error())
|
||||||
|
Loading…
x
Reference in New Issue
Block a user