summaryrefslogtreecommitdiff
path: root/service/rpc/service_test.go
diff options
context:
space:
mode:
authorWolfy-J <[email protected]>2018-06-11 11:28:24 +0300
committerWolfy-J <[email protected]>2018-06-11 11:28:24 +0300
commit2f135b359575cc1625d1461bb6d8e478da8ccf54 (patch)
tree8561f84318c3a291f4a38df6b347954bda777e41 /service/rpc/service_test.go
parent6efaa0aa951240c2bb643761f103ee3f0fafb4d9 (diff)
refactor
Diffstat (limited to 'service/rpc/service_test.go')
-rw-r--r--service/rpc/service_test.go95
1 files changed, 95 insertions, 0 deletions
diff --git a/service/rpc/service_test.go b/service/rpc/service_test.go
new file mode 100644
index 00000000..a57ce1bd
--- /dev/null
+++ b/service/rpc/service_test.go
@@ -0,0 +1,95 @@
+package rpc
+
+import (
+ "encoding/json"
+ "github.com/spiral/roadrunner/service"
+ "github.com/stretchr/testify/assert"
+ "testing"
+)
+
+type testService struct{}
+
+func (ts *testService) Echo(msg string, r *string) error { *r = msg; return nil }
+
+type testCfg struct{ cfg string }
+
+func (cfg *testCfg) Get(name string) service.Config { return nil }
+func (cfg *testCfg) Unmarshal(out interface{}) error { return json.Unmarshal([]byte(cfg.cfg), out) }
+
+func Test_ConfigError(t *testing.T) {
+ s := &Service{}
+ ok, err := s.Configure(&testCfg{`{"enable":false`}, nil)
+
+ assert.Error(t, err)
+ assert.False(t, ok)
+}
+
+func Test_Disabled(t *testing.T) {
+ s := &Service{}
+ ok, err := s.Configure(&testCfg{`{"enable":false}`}, nil)
+
+ assert.NoError(t, err)
+ assert.False(t, ok)
+}
+
+func Test_RegisterNotConfigured(t *testing.T) {
+ s := &Service{}
+ assert.Error(t, s.Register("test", &testService{}))
+
+ client, err := s.Client()
+ assert.Nil(t, client)
+ assert.Error(t, err)
+ assert.Error(t, s.Serve())
+}
+
+func Test_Enabled(t *testing.T) {
+ s := &Service{}
+ ok, err := s.Configure(&testCfg{`{"enable":true, "listen":"tcp://localhost:9008"}`}, nil)
+
+ assert.NoError(t, err)
+ assert.True(t, ok)
+}
+
+func Test_StopNonServing(t *testing.T) {
+ s := &Service{}
+ ok, err := s.Configure(&testCfg{`{"enable":true, "listen":"tcp://localhost:9008"}`}, nil)
+
+ assert.NoError(t, err)
+ assert.True(t, ok)
+ s.Stop()
+}
+
+func Test_Serve_Errors(t *testing.T) {
+ s := &Service{}
+ ok, err := s.Configure(&testCfg{`{"enable":true, "listen":"mailformed"}`}, nil)
+ assert.NoError(t, err)
+ assert.True(t, ok)
+
+ assert.Error(t, s.Serve())
+
+ client, err := s.Client()
+ assert.Nil(t, client)
+ assert.Error(t, err)
+}
+
+func Test_Serve_Client(t *testing.T) {
+ s := &Service{}
+ ok, err := s.Configure(&testCfg{`{"enable":true, "listen":"tcp://localhost:9008"}`}, nil)
+ assert.NoError(t, err)
+ assert.True(t, ok)
+
+ defer s.Stop()
+
+ assert.NoError(t, s.Register("test", &testService{}))
+
+ go func() { assert.NoError(t, s.Serve()) }()
+
+ client, err := s.Client()
+ assert.NotNil(t, client)
+ assert.NoError(t, err)
+ defer client.Close()
+
+ var resp string
+ assert.NoError(t, client.Call("test.Echo", "hello world", &resp))
+ assert.Equal(t, "hello world", resp)
+}