server_test.go 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  1. package server
  2. import (
  3. "reflect"
  4. "testing"
  5. "time"
  6. )
  7. type Arith2 Arith
  8. func (t *Arith2) Multiply(args *Args, reply *int) error {
  9. *reply = args.A * args.B
  10. return nil
  11. }
  12. type testTimer struct{}
  13. func (t *testTimer) DoTask() {
  14. Log.Info("timer task fires.")
  15. }
  16. func validateGetServerHosts(t *testing.T, flag string, want string) {
  17. hosts, err := GetServerHosts("test", flag)
  18. if err != nil {
  19. t.Error(err)
  20. }
  21. if !reflect.DeepEqual(hosts, []string{want}) {
  22. t.Errorf("error get server hosts, want: %v, got %v", []string{want}, hosts)
  23. }
  24. }
  25. func validateGetRPCHost(t *testing.T) {
  26. host := GetRPCHost()
  27. if host == "" {
  28. t.Error("get rpc host test error")
  29. }
  30. }
  31. func validateServerManager(t *testing.T) {
  32. validateGetServerHosts(t, FlagTCPHost, *confTCPHost)
  33. validateGetServerHosts(t, FlagRPCHost, *confRPCHost)
  34. validateGetServerHosts(t, FlagHTTPHost, *confHTTPHost)
  35. }
  36. func registerBadHandlers(t *testing.T) {
  37. // test TCP
  38. testtcp := &testEchoHandler{}
  39. err := RegisterTCPHandler(testtcp)
  40. if err == nil {
  41. t.Errorf("RegisterTCPHandler shoud fail when server is not initialized.")
  42. }
  43. // test RPC
  44. testrpc := new(Arith2)
  45. err = RegisterRPCHandler(testrpc)
  46. if err == nil {
  47. t.Errorf("RegisterRPCService shoud fail when server is not initialized.")
  48. }
  49. // test HTTP
  50. testhttp := &testHttpHandler{}
  51. err = RegisterHTTPHandler(testhttp)
  52. if err == nil {
  53. t.Errorf("RegisterHTTPServer shoud fail when server is not initialized.")
  54. }
  55. // test timer
  56. timer := &testTimer{}
  57. err = RegisterTimerTask(timer)
  58. if err == nil {
  59. t.Errorf("RegisterTimerTask shoud fail when server is not initialized.")
  60. }
  61. }
  62. func registerHandlers(t *testing.T) {
  63. // test TCP
  64. testtcp := &testEchoHandler{}
  65. err := RegisterTCPHandler(testtcp)
  66. if err != nil {
  67. t.Errorf("RegisterTCPHandler : %s", err)
  68. }
  69. // test RPC
  70. testrpc := new(Arith2)
  71. err = RegisterRPCHandler(testrpc)
  72. if err != nil {
  73. t.Errorf("RegisterRPCService : %s", err)
  74. }
  75. // test HTTP
  76. testhttp := &testHttpHandler{}
  77. err = RegisterHTTPHandler(testhttp)
  78. if err != nil {
  79. t.Errorf("RegisterHTTPServer : %s", err)
  80. }
  81. // test timer
  82. timer := &testTimer{}
  83. err = RegisterTimerTask(timer)
  84. if err != nil {
  85. t.Errorf("RegisterTimerTask : %s", err)
  86. }
  87. }
  88. func TestServer(t *testing.T) {
  89. *confHTTPHost = "localhost:59000"
  90. *confTCPHost = "localhost:59001"
  91. *confRPCHost = "localhost:59002"
  92. *confUseHttps = true
  93. *confUseTls = true
  94. *confCAFile = "testdata/cert.pem"
  95. *confKeyFile = "testdata/key.pem"
  96. *confEtcd = "http://localhost:2379"
  97. // before init , should all fail
  98. registerBadHandlers(t)
  99. err := Init("test")
  100. if err != nil {
  101. t.Fatalf("%s", err)
  102. }
  103. registerHandlers(t)
  104. go func() {
  105. err = Run()
  106. if err != nil {
  107. t.Errorf("Run Server error : %s", err)
  108. }
  109. }()
  110. time.Sleep(time.Second * 3)
  111. validateHTTPSServer(t, "https://"+*confHTTPHost)
  112. validateTLSServer(t, *confTCPHost)
  113. validateRPCServer(t, *confRPCHost, "Arith2.Multiply")
  114. validateRPCClient(t)
  115. validateServerManager(t)
  116. validateGetRPCHost(t)
  117. }