Browse Source

etcdserver: split out functional test to new package

Jonathan Boulle 11 years ago
parent
commit
07ce8bc4bc
3 changed files with 76 additions and 61 deletions
  1. 1 60
      etcdserver/etcdhttp/http_test.go
  2. 74 0
      functional/http_functional_test.go
  3. 1 1
      test

+ 1 - 60
etcdserver/etcdhttp/http_test.go

@@ -1,7 +1,6 @@
 package etcdhttp
 
 import (
-	"encoding/json"
 	"net/http"
 	"net/http/httptest"
 	"net/url"
@@ -9,72 +8,14 @@ import (
 	"reflect"
 	"sync"
 	"testing"
-	"time"
 
 	"github.com/coreos/etcd/etcdserver"
 	"github.com/coreos/etcd/etcdserver/etcdserverpb"
-	"github.com/coreos/etcd/raft"
-	"github.com/coreos/etcd/raft/raftpb"
 	"github.com/coreos/etcd/store"
 	"github.com/coreos/etcd/third_party/code.google.com/p/go.net/context"
 )
 
-func nopSave(st raftpb.State, ents []raftpb.Entry) {}
-func nopSend(m []raftpb.Message)                   {}
-
-func TestSet(t *testing.T) {
-	ctx, cancel := context.WithCancel(context.Background())
-	defer cancel()
-
-	st := store.New()
-
-	n := raft.Start(1, []int64{1}, 0, 0)
-	n.Campaign(ctx)
-
-	srv := &etcdserver.Server{
-		Node:  n,
-		Store: st,
-		Send:  etcdserver.SendFunc(nopSend),
-		Save:  func(st raftpb.State, ents []raftpb.Entry) {},
-	}
-	etcdserver.Start(srv)
-	defer srv.Stop()
-
-	h := Handler{
-		Timeout: time.Hour,
-		Server:  srv,
-	}
-
-	s := httptest.NewServer(h)
-	defer s.Close()
-
-	resp, err := http.PostForm(s.URL+"/v2/keys/foo", url.Values{"value": {"bar"}})
-	if err != nil {
-		t.Fatal(err)
-	}
-
-	if resp.StatusCode != 201 {
-		t.Errorf("StatusCode = %d, expected %d", 201, resp.StatusCode)
-	}
-
-	g := new(store.Event)
-	if err := json.NewDecoder(resp.Body).Decode(&g); err != nil {
-		t.Fatal(err)
-	}
-
-	w := &store.NodeExtern{
-		Key:           "/foo/1",
-		Value:         stringp("bar"),
-		ModifiedIndex: 1,
-		CreatedIndex:  1,
-	}
-	if !reflect.DeepEqual(g.Node, w) {
-		t.Errorf("g = %+v, want %+v", g.Node, w)
-	}
-}
-
-func stringp(s string) *string { return &s }
-func boolp(b bool) *bool       { return &b }
+func boolp(b bool) *bool { return &b }
 
 func mustNewURL(t *testing.T, s string) *url.URL {
 	u, err := url.Parse(s)

+ 74 - 0
functional/http_functional_test.go

@@ -0,0 +1,74 @@
+package functional
+
+import (
+	"encoding/json"
+	"net/http"
+	"net/http/httptest"
+	"net/url"
+	"reflect"
+	"testing"
+	"time"
+
+	"github.com/coreos/etcd/etcdserver"
+	"github.com/coreos/etcd/etcdserver/etcdhttp"
+	"github.com/coreos/etcd/raft"
+	"github.com/coreos/etcd/raft/raftpb"
+	"github.com/coreos/etcd/store"
+	"github.com/coreos/etcd/third_party/code.google.com/p/go.net/context"
+)
+
+func nopSave(st raftpb.State, ents []raftpb.Entry) {}
+func nopSend(m []raftpb.Message)                   {}
+
+func TestSet(t *testing.T) {
+	ctx, cancel := context.WithCancel(context.Background())
+	defer cancel()
+
+	st := store.New()
+
+	n := raft.Start(1, []int64{1}, 0, 0)
+	n.Campaign(ctx)
+
+	srv := &etcdserver.Server{
+		Node:  n,
+		Store: st,
+		Send:  etcdserver.SendFunc(nopSend),
+		Save:  func(st raftpb.State, ents []raftpb.Entry) {},
+	}
+	etcdserver.Start(srv)
+	defer srv.Stop()
+
+	h := etcdhttp.Handler{
+		Timeout: time.Hour,
+		Server:  srv,
+	}
+
+	s := httptest.NewServer(h)
+	defer s.Close()
+
+	resp, err := http.PostForm(s.URL+"/v2/keys/foo", url.Values{"value": {"bar"}})
+	if err != nil {
+		t.Fatal(err)
+	}
+
+	if resp.StatusCode != 201 {
+		t.Errorf("StatusCode = %d, expected %d", 201, resp.StatusCode)
+	}
+
+	g := new(store.Event)
+	if err := json.NewDecoder(resp.Body).Decode(&g); err != nil {
+		t.Fatal(err)
+	}
+
+	w := &store.NodeExtern{
+		Key:           "/foo/1",
+		Value:         stringp("bar"),
+		ModifiedIndex: 1,
+		CreatedIndex:  1,
+	}
+	if !reflect.DeepEqual(g.Node, w) {
+		t.Errorf("g = %+v, want %+v", g.Node, w)
+	}
+}
+
+func stringp(s string) *string { return &s }

+ 1 - 1
test

@@ -14,7 +14,7 @@ COVER=${COVER:-"-cover"}
 
 source ./build
 
-TESTABLE="wal snap etcdserver etcdserver/etcdhttp etcdserver/etcdserverpb raft store"
+TESTABLE="wal snap etcdserver etcdserver/etcdhttp etcdserver/etcdserverpb functional raft store"
 FORMATTABLE="$TESTABLE cors.go main.go"
 
 # user has not provided PKG override