github.com/unirita/cuto@v0.9.8-0.20160830082821-aa6652f877b7/servant/remote/receive_test.go (about) 1 package remote 2 3 import ( 4 "errors" 5 "testing" 6 7 "github.com/unirita/cuto/servant/config" 8 "github.com/unirita/cuto/testutil" 9 ) 10 11 func init() { 12 config.ReadConfig("") 13 } 14 15 func TestStartReceive_ポート番号に定義外の値を渡すとエラーが発生する(t *testing.T) { 16 _, err := StartReceive(config.Servant.Sys.BindAddress, 65536, config.Servant.Job.MultiProc) 17 18 if err == nil { 19 t.Error("エラーが発生していない。") 20 } 21 } 22 23 func TestReceiveLoopProcess_セッションキューにセッションを追加できる(t *testing.T) { 24 listener := testutil.NewListenerStub() 25 sq := make(chan *Session, 1) 26 err := receiveLoopProcess(listener, sq) 27 defer close(sq) 28 29 if err != nil { 30 t.Fatalf("想定外のエラーが発生した: %s", err) 31 } 32 33 session := <-sq 34 if session == nil { 35 t.Error("セッションがキューに挿入されていない。") 36 } 37 } 38 39 func TestReceiveLoopProcess_Acceptに失敗したらエラー(t *testing.T) { 40 listener := testutil.NewListenerStub() 41 listener.AcceptErr = errors.New("testerror") 42 sq := make(chan *Session, 1) 43 err := receiveLoopProcess(listener, sq) 44 close(sq) 45 46 if err == nil { 47 t.Error("エラーが発生していない。") 48 } 49 } 50 51 func TestReceiveMessage_セッションキューにセッションを追加できる(t *testing.T) { 52 reqMsg := `{"type":"request","id":1234,"path":"C:\\work\\test.bat","param":"test","workspace": "C:\\work"}` 53 conn := testutil.NewConnStub() 54 conn.ReadStr = reqMsg + "\n" 55 sq := make(chan *Session, 1) 56 err := receiveMessage(conn, sq) 57 close(sq) 58 59 if err != nil { 60 t.Fatalf("想定外のエラーが発生した: %s", err) 61 } 62 63 session := <-sq 64 if session == nil { 65 t.Error("セッションがキューに挿入されていない。") 66 } 67 68 if session.Conn == nil { 69 t.Error("セッションにコネクションオブジェクトがセットされていない。") 70 } 71 72 if session.Body != reqMsg { 73 t.Error("セッションにセットされたメッセージが間違っている。") 74 t.Logf("想定値: %s", reqMsg) 75 t.Logf("実績値: %s", session.Body) 76 } 77 } 78 79 func TestReceiveMessage_待ち期限の設定に失敗したらエラー(t *testing.T) { 80 conn := testutil.NewConnStub() 81 conn.ReadStr = `{"type":"request","id":1234,"path":"C:\\work\\test.bat","param":"test","workspace": "C:\\work"}` 82 conn.SetReadDeadlineErr = errors.New("testerror") 83 sq := make(chan *Session, 1) 84 err := receiveMessage(conn, sq) 85 close(sq) 86 87 if err == nil { 88 t.Fatal("エラーが発生していない。") 89 } 90 91 session := <-sq 92 if session != nil { 93 t.Error("エラーが発生したにも関わらず、セッションがキューに挿入された。") 94 } 95 } 96 97 func TestReceiveMessage_メッセージの読み込みに失敗したらエラー(t *testing.T) { 98 conn := testutil.NewConnStub() 99 conn.ReadStr = `{"type":"request","id":1234,"path":"C:\\work\\test.bat","param":"test","workspace": "C:\\work"}` 100 conn.ReadErr = errors.New("testerror") 101 sq := make(chan *Session, 1) 102 err := receiveMessage(conn, sq) 103 close(sq) 104 105 if err == nil { 106 t.Fatal("エラーが発生していない。") 107 } 108 109 session := <-sq 110 if session != nil { 111 t.Error("エラーが発生したにも関わらず、セッションがキューに挿入された。") 112 } 113 }