msrc
/
livenessController_test.go
148 строк · 3.0 Кб
1package msrc
2
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.ResponseWriter
16}
17tests := []struct {
18name string
19fields fields
20args args
21want bool
22}{
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.ResponseWriter
86}
87tests := []struct {
88name string
89fields fields
90args args
91want bool
92}{
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