aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDimitri Sokolyuk <demon@dim13.org>2016-03-27 23:52:21 +0200
committerDimitri Sokolyuk <demon@dim13.org>2016-03-27 23:52:21 +0200
commitad1d07b46509adc15670678480479edcf78370b2 (patch)
treed775580fb31e6eae96888bc8867bd2109da9b3e2
parent13ce0d0853fc888cf465742ed2e134e9bc5be77a (diff)
Tweak rpc
-rw-r--r--rpc.go9
-rw-r--r--server.go4
-rw-r--r--server_test.go17
3 files changed, 17 insertions, 13 deletions
diff --git a/rpc.go b/rpc.go
index e7a6a20..574993d 100644
--- a/rpc.go
+++ b/rpc.go
@@ -24,6 +24,9 @@ func (s *GoXY) Add(e Entry, _ *struct{}) error {
// Add new entry (client)
func Add(e Entry, server string) error {
+ if server == "" {
+ server = ":http-alt"
+ }
client, err := rpc.DialHTTP("tcp", server)
if err != nil {
return err
@@ -42,6 +45,9 @@ func (s *GoXY) Del(serverName string, _ *struct{}) error {
// Del removes a route (client)
func Del(serverName string, server string) error {
+ if server == "" {
+ server = ":http-alt"
+ }
client, err := rpc.DialHTTP("tcp", server)
if err != nil {
return err
@@ -57,6 +63,9 @@ func (s GoXY) List(_ struct{}, r *Route) error {
}
func List(server string) (Route, error) {
+ if server == "" {
+ server = ":http-alt"
+ }
client, err := rpc.DialHTTP("tcp", server)
if err != nil {
return nil, err
diff --git a/server.go b/server.go
index 5225ffc..4cb40e0 100644
--- a/server.go
+++ b/server.go
@@ -51,10 +51,10 @@ func (s *Server) Load() error {
return gob.NewDecoder(fd).Decode(&s.Route)
}
-func (s *Server) Start() error {
+func (s *Server) Start() <-chan error {
errc := make(chan error, 3)
go func() { errc <- s.ListenAndServe() }()
go func() { errc <- s.ListenAndServeTLS("", "") }()
go func() { errc <- http.ListenAndServe(":http-alt", nil) }()
- return <-errc
+ return errc
}
diff --git a/server_test.go b/server_test.go
index 8ef9a5a..9dd10c9 100644
--- a/server_test.go
+++ b/server_test.go
@@ -5,7 +5,6 @@ import (
"io/ioutil"
"net/http"
"net/http/httptest"
- "net/rpc"
"testing"
)
@@ -22,22 +21,18 @@ func TestNewServer(t *testing.T) {
t.Error(err)
}
- err = server.Start()
- if err != nil {
- t.Error(err)
- }
-
- client, err := rpc.DialHTTP("tcp", ":http-alt")
- if err != nil {
+ select {
+ case err := <-server.Start():
t.Error(err)
+ default:
}
- defer client.Close()
- e := Entry{
+ if err = Add(Entry{
ServerName: "localhost",
Upstream: backendServer.URL,
+ }, ""); err != nil {
+ t.Error(err)
}
- client.Call("GoXY.Add", e, nil)
resp, err := http.Get("http://localhost")
if err != nil {