msrc

Форк
0
/
livenessController_test.go 
148 строк · 3.0 Кб
1
package msrc
2

3
import (
4
	"net/http"
5
	"net/http/httptest"
6
	"testing"
7
	"time"
8
)
9

10
func Test_livenessController_Ready(t *testing.T) {
11
	type fields struct {
12
		mainService MultiServiceInterface
13
	}
14
	type args struct {
15
		writer http.ResponseWriter
16
	}
17
	tests := []struct {
18
		name   string
19
		fields fields
20
		args   args
21
		want   bool
22
	}{
23
		{
24
			name: "Тестирование, когда контент не готов",
25
			fields: fields{
26
				mainService: &MultiServiceMock{
27
					IsAlive: false,
28
					IsRun:   false,
29
				},
30
			},
31
			args: args{
32
				writer: httptest.NewRecorder(),
33
			},
34
			want: false,
35
		},
36
		{
37
			name: "Тестирование, когда контент готов",
38
			fields: fields{
39
				mainService: &MultiServiceMock{
40
					IsAlive: false,
41
					IsRun:   true,
42
				},
43
			},
44
			args: args{
45
				writer: httptest.NewRecorder(),
46
			},
47
			want: true,
48
		},
49
	}
50
	for _, tt := range tests {
51
		t.Run(tt.name, func(t *testing.T) {
52
			l := newLivenessService("39100", tt.fields.mainService)
53
			go func() {
54
				_ = l.Run()
55
			}()
56

57
			defer l.GracefulShutdown()
58

59
			time.Sleep(100 * time.Millisecond)
60

61
			res, err := http.Get("http://localhost:39100/ready")
62
			if nil != err {
63
				t.Fatalf(`/ready error=%v, want=nil`, err)
64
			}
65

66
			switch tt.want {
67
			case true:
68
				if res.StatusCode != http.StatusOK {
69
					t.Fatalf(`/ready status=%v, want=%v`, res.StatusCode, http.StatusOK)
70
				}
71
			case false:
72
				if res.StatusCode != http.StatusInternalServerError {
73
					t.Fatalf(`/ready status=%v, want=%v`, res.StatusCode, http.StatusInternalServerError)
74
				}
75
			}
76
		})
77
	}
78
}
79

80
func Test_livenessController_Alive(t *testing.T) {
81
	type fields struct {
82
		mainService MultiServiceInterface
83
	}
84
	type args struct {
85
		writer http.ResponseWriter
86
	}
87
	tests := []struct {
88
		name   string
89
		fields fields
90
		args   args
91
		want   bool
92
	}{
93
		{
94
			name: "Тестирование, когда контент не готов",
95
			fields: fields{
96
				mainService: &MultiServiceMock{
97
					IsAlive: false,
98
					IsRun:   false,
99
				},
100
			},
101
			args: args{
102
				writer: httptest.NewRecorder(),
103
			},
104
			want: false,
105
		},
106
		{
107
			name: "Тестирование, когда контент готов",
108
			fields: fields{
109
				mainService: &MultiServiceMock{
110
					IsAlive: true,
111
					IsRun:   false,
112
				},
113
			},
114
			args: args{
115
				writer: httptest.NewRecorder(),
116
			},
117
			want: true,
118
		},
119
	}
120
	for _, tt := range tests {
121
		t.Run(tt.name, func(t *testing.T) {
122
			l := newLivenessService("39100", tt.fields.mainService)
123
			go func() {
124
				_ = l.Run()
125
			}()
126

127
			defer l.GracefulShutdown()
128

129
			time.Sleep(100 * time.Millisecond)
130

131
			res, err := http.Get("http://localhost:39100/alive")
132
			if nil != err {
133
				t.Fatalf(`/alive error=%v, want=nil`, err)
134
			}
135

136
			switch tt.want {
137
			case true:
138
				if res.StatusCode != http.StatusOK {
139
					t.Fatalf(`/alive status=%v, want=%v`, res.StatusCode, http.StatusOK)
140
				}
141
			case false:
142
				if res.StatusCode != http.StatusInternalServerError {
143
					t.Fatalf(`/alive status=%v, want=%v`, res.StatusCode, http.StatusInternalServerError)
144
				}
145
			}
146
		})
147
	}
148
}
149

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.