From d3bfc49b7cfe17b1d27f1b75cf14d205112f4964 Mon Sep 17 00:00:00 2001 From: Ben Johnson Date: Mon, 4 Nov 2013 14:36:20 -0700 Subject: [PATCH] Remove leading slash from handlers. --- server/v1/delete_key_handler.go | 2 +- server/v1/get_key_handler.go | 2 +- server/v1/set_key_handler.go | 2 +- server/v1/watch_key_handler.go | 2 +- server/v2/delete_handler.go | 2 +- server/v2/get_handler.go | 2 +- server/v2/post_handler.go | 2 +- server/v2/put_handler.go | 2 +- tests/functional/v1_migration_test.go | 50 +++++++++++++++++++++++++-- 9 files changed, 56 insertions(+), 10 deletions(-) diff --git a/server/v1/delete_key_handler.go b/server/v1/delete_key_handler.go index 44fe459e4..561196b95 100644 --- a/server/v1/delete_key_handler.go +++ b/server/v1/delete_key_handler.go @@ -8,7 +8,7 @@ import ( // Removes a key from the store. func DeleteKeyHandler(w http.ResponseWriter, req *http.Request, s Server) error { vars := mux.Vars(req) - key := "/" + vars["key"] + key := vars["key"] c := s.Store().CommandFactory().CreateDeleteCommand(key, false) return s.Dispatch(c, w, req) } diff --git a/server/v1/get_key_handler.go b/server/v1/get_key_handler.go index 53558e142..9a68212c6 100644 --- a/server/v1/get_key_handler.go +++ b/server/v1/get_key_handler.go @@ -10,7 +10,7 @@ import ( // Retrieves the value for a given key. func GetKeyHandler(w http.ResponseWriter, req *http.Request, s Server) error { vars := mux.Vars(req) - key := "/" + vars["key"] + key := vars["key"] // Retrieve the key from the store. event, err := s.Store().Get(key, false, false, s.CommitIndex(), s.Term()) diff --git a/server/v1/set_key_handler.go b/server/v1/set_key_handler.go index 7acfe7ecb..c047ebfb7 100644 --- a/server/v1/set_key_handler.go +++ b/server/v1/set_key_handler.go @@ -12,7 +12,7 @@ import ( // Sets the value for a given key. func SetKeyHandler(w http.ResponseWriter, req *http.Request, s Server) error { vars := mux.Vars(req) - key := "/" + vars["key"] + key := vars["key"] req.ParseForm() diff --git a/server/v1/watch_key_handler.go b/server/v1/watch_key_handler.go index e8db56c30..8a617a50b 100644 --- a/server/v1/watch_key_handler.go +++ b/server/v1/watch_key_handler.go @@ -14,7 +14,7 @@ import ( func WatchKeyHandler(w http.ResponseWriter, req *http.Request, s Server) error { var err error vars := mux.Vars(req) - key := "/" + vars["key"] + key := vars["key"] // Create a command to watch from a given index (default 0). var sinceIndex uint64 = 0 diff --git a/server/v2/delete_handler.go b/server/v2/delete_handler.go index 7afc02f04..17030c757 100644 --- a/server/v2/delete_handler.go +++ b/server/v2/delete_handler.go @@ -8,7 +8,7 @@ import ( func DeleteHandler(w http.ResponseWriter, req *http.Request, s Server) error { vars := mux.Vars(req) - key := "/" + vars["key"] + key := vars["key"] recursive := (req.FormValue("recursive") == "true") c := s.Store().CommandFactory().CreateDeleteCommand(key, recursive) diff --git a/server/v2/get_handler.go b/server/v2/get_handler.go index 39e932fe0..640533b05 100644 --- a/server/v2/get_handler.go +++ b/server/v2/get_handler.go @@ -18,7 +18,7 @@ func GetHandler(w http.ResponseWriter, req *http.Request, s Server) error { var event *store.Event vars := mux.Vars(req) - key := "/" + vars["key"] + key := vars["key"] // Help client to redirect the request to the current leader if req.FormValue("consistent") == "true" && s.State() != raft.Leader { diff --git a/server/v2/post_handler.go b/server/v2/post_handler.go index 4dc98b925..ca94b4a93 100644 --- a/server/v2/post_handler.go +++ b/server/v2/post_handler.go @@ -10,7 +10,7 @@ import ( func PostHandler(w http.ResponseWriter, req *http.Request, s Server) error { vars := mux.Vars(req) - key := "/" + vars["key"] + key := vars["key"] value := req.FormValue("value") expireTime, err := store.TTL(req.FormValue("ttl")) diff --git a/server/v2/put_handler.go b/server/v2/put_handler.go index 3afb018b7..cb44a7237 100644 --- a/server/v2/put_handler.go +++ b/server/v2/put_handler.go @@ -15,7 +15,7 @@ func PutHandler(w http.ResponseWriter, req *http.Request, s Server) error { var c raft.Command vars := mux.Vars(req) - key := "/" + vars["key"] + key := vars["key"] req.ParseForm() diff --git a/tests/functional/v1_migration_test.go b/tests/functional/v1_migration_test.go index b4c9a07bc..a01d00c20 100644 --- a/tests/functional/v1_migration_test.go +++ b/tests/functional/v1_migration_test.go @@ -14,7 +14,53 @@ import ( ) // Ensure that we can start a v2 node from the log of a v1 node. -func TestV1Migration(t *testing.T) { +func TestV1SoloMigration(t *testing.T) { + path, _ := ioutil.TempDir("", "etcd-") + os.MkdirAll(path, 0777) + defer os.RemoveAll(path) + + nodepath := filepath.Join(path, "node0") + fixturepath, _ := filepath.Abs("../fixtures/v1.solo/node0") + + + // Copy over fixture files. + c := exec.Command("cp", "-rf", fixturepath, nodepath) + if out, err := c.CombinedOutput(); err != nil { + fmt.Println(">>>>>>\n", string(out), "<<<<<<") + panic("Fixture initialization error:" + err.Error()) + } + + procAttr := new(os.ProcAttr) + procAttr.Files = []*os.File{nil, os.Stdout, os.Stderr} + + args := []string{"etcd", fmt.Sprintf("-d=%s", nodepath)} + args = append(args, "-c", "127.0.0.1:4001") + args = append(args, "-s", "127.0.0.1:7001") + process, err := os.StartProcess(EtcdBinPath, args, procAttr) + if err != nil { + t.Fatal("start process failed:" + err.Error()) + return + } + defer process.Kill() + time.Sleep(time.Second) + + time.Sleep(120 * time.Second) + + // Ensure deleted message is removed. + resp, err := tests.Get("http://localhost:4001/v2/keys/message") + tests.ReadBody(resp) + assert.Nil(t, err, "") + assert.Equal(t, resp.StatusCode, 404, "") + + // Ensure TTL'd message is removed. + resp, err = tests.Get("http://localhost:4001/v2/keys/foo") + tests.ReadBody(resp) + assert.Nil(t, err, "") + assert.Equal(t, resp.StatusCode, 404, "") +} + +// Ensure that we can start a v2 cluster from the logs of a v1 cluster. +func TestV1ClusterMigration(t *testing.T) { path, _ := ioutil.TempDir("", "etcd-") os.RemoveAll(path) defer os.RemoveAll(path) @@ -22,7 +68,7 @@ func TestV1Migration(t *testing.T) { nodes := []string{"node0", "node2"} for i, node := range nodes { nodepath := filepath.Join(path, node) - fixturepath, _ := filepath.Abs(filepath.Join("../fixtures/v1/", node)) + fixturepath, _ := filepath.Abs(filepath.Join("../fixtures/v1.cluster/", node)) fmt.Println("FIXPATH =", fixturepath) fmt.Println("NODEPATH =", nodepath) os.MkdirAll(filepath.Dir(nodepath), 0777)