123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141 |
- package server
- import (
- "reflect"
- "testing"
- "time"
- )
- type Arith2 Arith
- func (t *Arith2) Multiply(args *Args, reply *int) error {
- *reply = args.A * args.B
- return nil
- }
- type testTimer struct{}
- func (t *testTimer) DoTask() {
- Log.Info("timer task fires.")
- }
- func validateGetServerHosts(t *testing.T, flag string, want string) {
- hosts, err := GetServerHosts("test", flag)
- if err != nil {
- t.Error(err)
- }
- if !reflect.DeepEqual(hosts, []string{want}) {
- t.Errorf("error get server hosts, want: %v, got %v", []string{want}, hosts)
- }
- }
- func validateGetRPCHost(t *testing.T) {
- host := GetRPCHost()
- if host == "" {
- t.Error("get rpc host test error")
- }
- }
- func validateServerManager(t *testing.T) {
- validateGetServerHosts(t, FlagTCPHost, *confTCPHost)
- validateGetServerHosts(t, FlagRPCHost, *confRPCHost)
- validateGetServerHosts(t, FlagHTTPHost, *confHTTPHost)
- }
- func registerBadHandlers(t *testing.T) {
- // test TCP
- testtcp := &testEchoHandler{}
- err := RegisterTCPHandler(testtcp)
- if err == nil {
- t.Errorf("RegisterTCPHandler shoud fail when server is not initialized.")
- }
- // test RPC
- testrpc := new(Arith2)
- err = RegisterRPCHandler(testrpc)
- if err == nil {
- t.Errorf("RegisterRPCService shoud fail when server is not initialized.")
- }
- // test HTTP
- testhttp := &testHttpHandler{}
- err = RegisterHTTPHandler(testhttp)
- if err == nil {
- t.Errorf("RegisterHTTPServer shoud fail when server is not initialized.")
- }
- // test timer
- timer := &testTimer{}
- err = RegisterTimerTask(timer)
- if err == nil {
- t.Errorf("RegisterTimerTask shoud fail when server is not initialized.")
- }
- }
- func registerHandlers(t *testing.T) {
- // test TCP
- testtcp := &testEchoHandler{}
- err := RegisterTCPHandler(testtcp)
- if err != nil {
- t.Errorf("RegisterTCPHandler : %s", err)
- }
- // test RPC
- testrpc := new(Arith2)
- err = RegisterRPCHandler(testrpc)
- if err != nil {
- t.Errorf("RegisterRPCService : %s", err)
- }
- // test HTTP
- testhttp := &testHttpHandler{}
- err = RegisterHTTPHandler(testhttp)
- if err != nil {
- t.Errorf("RegisterHTTPServer : %s", err)
- }
- // test timer
- timer := &testTimer{}
- err = RegisterTimerTask(timer)
- if err != nil {
- t.Errorf("RegisterTimerTask : %s", err)
- }
- }
- func TestServer(t *testing.T) {
- *confHTTPHost = "localhost:59000"
- *confTCPHost = "localhost:59001"
- *confRPCHost = "localhost:59002"
- *confUseHttps = true
- *confUseTls = true
- *confCAFile = "testdata/cert.pem"
- *confKeyFile = "testdata/key.pem"
- *confEtcd = "http://localhost:2379"
- // before init , should all fail
- registerBadHandlers(t)
- err := Init("test")
- if err != nil {
- t.Fatalf("%s", err)
- }
- registerHandlers(t)
- go func() {
- err = Run()
- if err != nil {
- t.Errorf("Run Server error : %s", err)
- }
- }()
- time.Sleep(time.Second * 3)
- validateHTTPSServer(t, "https://"+*confHTTPHost)
- validateTLSServer(t, *confTCPHost)
- validateRPCServer(t, *confRPCHost, "Arith2.Multiply")
- validateRPCClient(t)
- validateServerManager(t)
- validateGetRPCHost(t)
- }
|