msrc
/
livenessController_test.go
148 строк · 3.0 Кб
1package msrc2
3import (4"net/http"5"net/http/httptest"6"testing"7"time"8)
9
10func Test_livenessController_Ready(t *testing.T) {11type fields struct {12mainService MultiServiceInterface
13}14type args struct {15writer http.ResponseWriter16}17tests := []struct {18name string19fields fields
20args args
21want bool22}{23{24name: "Тестирование, когда контент не готов",25fields: fields{26mainService: &MultiServiceMock{27IsAlive: false,28IsRun: false,29},30},31args: args{32writer: httptest.NewRecorder(),33},34want: false,35},36{37name: "Тестирование, когда контент готов",38fields: fields{39mainService: &MultiServiceMock{40IsAlive: false,41IsRun: true,42},43},44args: args{45writer: httptest.NewRecorder(),46},47want: true,48},49}50for _, tt := range tests {51t.Run(tt.name, func(t *testing.T) {52l := newLivenessService("39100", tt.fields.mainService)53go func() {54_ = l.Run()55}()56
57defer l.GracefulShutdown()58
59time.Sleep(100 * time.Millisecond)60
61res, err := http.Get("http://localhost:39100/ready")62if nil != err {63t.Fatalf(`/ready error=%v, want=nil`, err)64}65
66switch tt.want {67case true:68if res.StatusCode != http.StatusOK {69t.Fatalf(`/ready status=%v, want=%v`, res.StatusCode, http.StatusOK)70}71case false:72if res.StatusCode != http.StatusInternalServerError {73t.Fatalf(`/ready status=%v, want=%v`, res.StatusCode, http.StatusInternalServerError)74}75}76})77}78}
79
80func Test_livenessController_Alive(t *testing.T) {81type fields struct {82mainService MultiServiceInterface
83}84type args struct {85writer http.ResponseWriter86}87tests := []struct {88name string89fields fields
90args args
91want bool92}{93{94name: "Тестирование, когда контент не готов",95fields: fields{96mainService: &MultiServiceMock{97IsAlive: false,98IsRun: false,99},100},101args: args{102writer: httptest.NewRecorder(),103},104want: false,105},106{107name: "Тестирование, когда контент готов",108fields: fields{109mainService: &MultiServiceMock{110IsAlive: true,111IsRun: false,112},113},114args: args{115writer: httptest.NewRecorder(),116},117want: true,118},119}120for _, tt := range tests {121t.Run(tt.name, func(t *testing.T) {122l := newLivenessService("39100", tt.fields.mainService)123go func() {124_ = l.Run()125}()126
127defer l.GracefulShutdown()128
129time.Sleep(100 * time.Millisecond)130
131res, err := http.Get("http://localhost:39100/alive")132if nil != err {133t.Fatalf(`/alive error=%v, want=nil`, err)134}135
136switch tt.want {137case true:138if res.StatusCode != http.StatusOK {139t.Fatalf(`/alive status=%v, want=%v`, res.StatusCode, http.StatusOK)140}141case false:142if res.StatusCode != http.StatusInternalServerError {143t.Fatalf(`/alive status=%v, want=%v`, res.StatusCode, http.StatusInternalServerError)144}145}146})147}148}
149