From 28722e21277f77f5f4bc90a52e584766aee959b0 Mon Sep 17 00:00:00 2001 From: Xiang Li Date: Wed, 16 Oct 2013 23:57:42 -0700 Subject: [PATCH 1/5] fix v1 handler: use create command when test against prevexistence --- server/v1/set_key_handler.go | 20 ++++++++++++++------ store/event.go | 7 +++++-- 2 files changed, 19 insertions(+), 8 deletions(-) diff --git a/server/v1/set_key_handler.go b/server/v1/set_key_handler.go index 887c8c22e..d12d931ed 100644 --- a/server/v1/set_key_handler.go +++ b/server/v1/set_key_handler.go @@ -30,12 +30,20 @@ func SetKeyHandler(w http.ResponseWriter, req *http.Request, s Server) error { // If the "prevValue" is specified then test-and-set. Otherwise create a new key. var c raft.Command - if prevValueArr, ok := req.Form["prevValue"]; ok && len(prevValueArr) > 0 { - c = &store.CompareAndSwapCommand{ - Key: key, - Value: value, - PrevValue: prevValueArr[0], - ExpireTime: expireTime, + if prevValueArr, ok := req.Form["prevValue"]; ok { + if len(prevValueArr) > 0 { // test against previous value + c = &store.CompareAndSwapCommand{ + Key: key, + Value: value, + PrevValue: prevValueArr[0], + ExpireTime: expireTime, + } + } else { + c = &store.CreateCommand{ // test against existence + Key: key, + Value: value, + ExpireTime: expireTime, + } } } else { diff --git a/store/event.go b/store/event.go index 14ba1e529..92c0b9647 100644 --- a/store/event.go +++ b/store/event.go @@ -55,13 +55,16 @@ func (event *Event) Response() interface{} { Expiration: event.Expiration, } - if response.Action == Create || response.Action == Set { - response.Action = "set" + if response.Action == Set { if response.PrevValue == "" { response.NewKey = true } } + if response.Action == CompareAndSwap || response.Action == Create { + response.Action = "testAndSet" + } + return response } else { responses := make([]*Response, len(event.KVPairs)) From 4479d72e938ee69c6de78229d3581c6bea06651b Mon Sep 17 00:00:00 2001 From: Xiang Li Date: Thu, 17 Oct 2013 00:12:39 -0700 Subject: [PATCH 2/5] fix hmm... another stupid mistake --- server/v1/set_key_handler.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/server/v1/set_key_handler.go b/server/v1/set_key_handler.go index d12d931ed..3ce179b69 100644 --- a/server/v1/set_key_handler.go +++ b/server/v1/set_key_handler.go @@ -1,6 +1,7 @@ package v1 import ( + "fmt" "net/http" etcdErr "github.com/coreos/etcd/error" @@ -31,7 +32,7 @@ func SetKeyHandler(w http.ResponseWriter, req *http.Request, s Server) error { // If the "prevValue" is specified then test-and-set. Otherwise create a new key. var c raft.Command if prevValueArr, ok := req.Form["prevValue"]; ok { - if len(prevValueArr) > 0 { // test against previous value + if len(prevValueArr[0]) > 0 { // test against previous value c = &store.CompareAndSwapCommand{ Key: key, Value: value, From 87b2a0d9c5e2b95d2cf2d409338aeb1f91953ccf Mon Sep 17 00:00:00 2001 From: Xiang Li Date: Thu, 17 Oct 2013 10:50:00 -0700 Subject: [PATCH 3/5] fix remove unused package --- server/v1/set_key_handler.go | 1 - 1 file changed, 1 deletion(-) diff --git a/server/v1/set_key_handler.go b/server/v1/set_key_handler.go index 3ce179b69..5e29fafe6 100644 --- a/server/v1/set_key_handler.go +++ b/server/v1/set_key_handler.go @@ -1,7 +1,6 @@ package v1 import ( - "fmt" "net/http" etcdErr "github.com/coreos/etcd/error" From 4135f425d30ce06503c98d02fec3e141f20104ea Mon Sep 17 00:00:00 2001 From: Xiang Li Date: Thu, 17 Oct 2013 20:53:30 -0700 Subject: [PATCH 4/5] fix bad cert path --- tests/functional/util.go | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/tests/functional/util.go b/tests/functional/util.go index 981ff1be6..3ef0028cd 100644 --- a/tests/functional/util.go +++ b/tests/functional/util.go @@ -57,14 +57,14 @@ func Set(stop chan bool) { func CreateCluster(size int, procAttr *os.ProcAttr, ssl bool) ([][]string, []*os.Process, error) { argGroup := make([][]string, size) - sslServer1 := []string{"-serverCAFile=./fixtures/ca/ca.crt", - "-serverCert=./fixtures/ca/server.crt", - "-serverKey=./fixtures/ca/server.key.insecure", + sslServer1 := []string{"-serverCAFile=../../fixtures/ca/ca.crt", + "-serverCert=../../fixtures/ca/server.crt", + "-serverKey=../../fixtures/ca/server.key.insecure", } - sslServer2 := []string{"-serverCAFile=./fixtures/ca/ca.crt", - "-serverCert=./fixtures/ca/server2.crt", - "-serverKey=./fixtures/ca/server2.key.insecure", + sslServer2 := []string{"-serverCAFile=../../fixtures/ca/ca.crt", + "-serverCert=../../fixtures/ca/server2.crt", + "-serverKey=../../fixtures/ca/server2.key.insecure", } for i := 0; i < size; i++ { From a6f706926438bbbfaf539cee323d89d5d7d66fe0 Mon Sep 17 00:00:00 2001 From: Xiang Li Date: Thu, 17 Oct 2013 20:57:00 -0700 Subject: [PATCH 5/5] fix use right gopath --- test.sh | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/test.sh b/test.sh index 31196f7ec..f48faffd3 100755 --- a/test.sh +++ b/test.sh @@ -4,8 +4,13 @@ set -e # Get GOPATH, etc from build . ./build +# use right GOPATH +export GOPATH="${PWD}" + # Unit tests +go test -i ./store go test -v ./store # Functional tests +go test -i ./tests/functional ETCD_BIN_PATH=$(pwd)/etcd go test -v ./tests/functional