aboutsummaryrefslogtreecommitdiff
path: root/server_test.go
diff options
context:
space:
mode:
authorDimitri Sokolyuk <demon@dim13.org>2016-03-27 21:23:53 +0200
committerDimitri Sokolyuk <demon@dim13.org>2016-03-27 21:23:53 +0200
commitd21557ca8920525494670ab59474dd0c3a3517ad (patch)
treeb3d55785a574f0ca7b2260201bc01bab766ddc97 /server_test.go
parent0824f4bcd9a31add8e7cfa1662d2cb40900de073 (diff)
Add testing
Diffstat (limited to 'server_test.go')
-rw-r--r--server_test.go60
1 files changed, 60 insertions, 0 deletions
diff --git a/server_test.go b/server_test.go
new file mode 100644
index 0000000..f3ad3d8
--- /dev/null
+++ b/server_test.go
@@ -0,0 +1,60 @@
+package goxy
+
+import (
+ "io"
+ "io/ioutil"
+ "net/http"
+ "net/http/httptest"
+ "net/rpc"
+ "testing"
+)
+
+const cannary = "hello from backend"
+
+func TestNewServer(t *testing.T) {
+ backendServer := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
+ io.WriteString(w, cannary)
+ }))
+ defer backendServer.Close()
+
+ server, err := NewServer("data.gob")
+ if err != nil {
+ t.Error(err)
+ }
+
+ errc := make(chan error, 2)
+ go func() { errc <- server.ListenAndServe() }()
+ go func() { errc <- http.ListenAndServe(":http-alt", nil) }()
+ select {
+ case err := <-errc:
+ t.Error(err)
+ default:
+ }
+
+ client, err := rpc.DialHTTP("tcp", ":http-alt")
+ if err != nil {
+ t.Error(err)
+ }
+ defer client.Close()
+
+ e := Entry{
+ ServerName: "localhost",
+ Upstream: backendServer.URL,
+ }
+ client.Call("GoXY.Add", e, nil)
+
+ resp, err := http.Get("http://localhost")
+ if err != nil {
+ t.Error(err)
+ }
+ defer resp.Body.Close()
+
+ b, err := ioutil.ReadAll(resp.Body)
+ if err != nil {
+ t.Error(err)
+ }
+
+ if string(b) != cannary {
+ t.Error("got", string(b), "expected", cannary)
+ }
+}