summaryrefslogtreecommitdiff
path: root/service/http/rpc_test.go
diff options
context:
space:
mode:
authorWolfy-J <[email protected]>2018-06-23 17:34:58 +0300
committerWolfy-J <[email protected]>2018-06-23 17:34:58 +0300
commit2a5c85f115945ca343c3104f09bce2ff089b4fc0 (patch)
treeb7707dd0d2f6349468612ddc4a91ce279f70d02f /service/http/rpc_test.go
parente170f8ab968db9746918c4abb731a7d9677e2ada (diff)
properly close
Diffstat (limited to 'service/http/rpc_test.go')
-rw-r--r--service/http/rpc_test.go68
1 files changed, 67 insertions, 1 deletions
diff --git a/service/http/rpc_test.go b/service/http/rpc_test.go
index de7ed0c3..491e863c 100644
--- a/service/http/rpc_test.go
+++ b/service/http/rpc_test.go
@@ -10,6 +10,8 @@ import (
"testing"
"time"
"runtime"
+ "os"
+ "encoding/json"
)
func Test_RPC(t *testing.T) {
@@ -78,8 +80,72 @@ func Test_RPC_Unix(t *testing.T) {
c.Register(rpc.ID, &rpc.Service{})
c.Register(ID, &Service{})
+ sock := `unix://` + os.TempDir() + `/rpc.unix`
+ j, _ := json.Marshal(sock)
+
+ assert.NoError(t, c.Init(&testCfg{
+ rpcCfg: `{"enable":true, "listen":` + string(j) + `}`,
+ httpCfg: `{
+ "enable": true,
+ "address": ":6029",
+ "maxRequest": 1024,
+ "uploads": {
+ "dir": ` + tmpDir() + `,
+ "forbid": []
+ },
+ "workers":{
+ "command": "php ../../php-src/tests/http/client.php pid pipes",
+ "relay": "pipes",
+ "pool": {
+ "numWorkers": 1,
+ "allocateTimeout": 10000000,
+ "destroyTimeout": 10000000
+ }
+ }
+ }`}))
+
+ s, _ := c.Get(ID)
+ ss := s.(*Service)
+
+ s2, _ := c.Get(rpc.ID)
+ rs := s2.(*rpc.Service)
+
+ go func() { c.Serve() }()
+ time.Sleep(time.Millisecond * 100)
+ defer c.Stop()
+
+ res, _, _ := get("http://localhost:6029")
+ assert.Equal(t, strconv.Itoa(*ss.rr.Workers()[0].Pid), res)
+
+ cl, err := rs.Client()
+ assert.NoError(t, err)
+
+ r := ""
+ assert.NoError(t, cl.Call("http.Reset", true, &r))
+ assert.Equal(t, "OK", r)
+
+ res2, _, _ := get("http://localhost:6029")
+ assert.Equal(t, strconv.Itoa(*ss.rr.Workers()[0].Pid), res2)
+ assert.NotEqual(t, res, res2)
+}
+
+func Test_RPC_Unix_Double(t *testing.T) {
+ if runtime.GOOS == "windows" {
+ t.Skip("not supported on " + runtime.GOOS)
+ }
+
+ logger, _ := test.NewNullLogger()
+ logger.SetLevel(logrus.DebugLevel)
+
+ c := service.NewContainer(logger)
+ c.Register(rpc.ID, &rpc.Service{})
+ c.Register(ID, &Service{})
+
+ sock := `unix://` + os.TempDir() + `/rpc.unix`
+ j, _ := json.Marshal(sock)
+
assert.NoError(t, c.Init(&testCfg{
- rpcCfg: `{"enable":true, "listen":"unix://` + tmpDir() + `/rpc.unix"}`,
+ rpcCfg: `{"enable":true, "listen":` + string(j) + `}`,
httpCfg: `{
"enable": true,
"address": ":6029",