mosn

Форк
0
/
http_test.go 
70 строк · 1.7 Кб
1
package http
2

3
import (
4
	"testing"
5
	"time"
6
)
7

8
func TestHttpSimple(t *testing.T) {
9
	config := &HttpServerConfig{
10
		Addr: "127.0.0.1:8080",
11
	}
12
	srv := NewHTTPServer(config)
13
	srv.Start()
14
	defer func() {
15
		srv.Stop()
16
	}()
17

18
	time.Sleep(time.Second) // wait server start
19
	client := NewHttpClient(&HttpClientConfig{
20
		TargetAddr: "127.0.0.1:8080",
21
		MaxConn:    1,
22
		Request:    nil,
23
		Verify: &VerifyConfig{
24
			ExpectedStatusCode: 200,
25
			ExpectedHeader: map[string][]string{
26
				"mosn-test-default": []string{"http1"},
27
			},
28
			ExpectedBody: []byte("default-http1"),
29
		},
30
	})
31
	for i := 0; i < 10; i++ {
32
		if !client.SyncCall() {
33
			t.Fatal("request failed")
34
		}
35
	}
36
	// verify stats
37
	stats := srv.Stats()
38
	connTotal := stats.ConnectionTotal()
39
	connActive := stats.ConnectionActive()
40
	respInfo, total := stats.ResponseInfo()
41
	request := stats.Requests()
42
	if !(connTotal == 1 &&
43
		connActive == 1 &&
44
		respInfo[200] == 10 &&
45
		total == 10 &&
46
		request == 10) {
47
		t.Fatalf("server metrics not expected: %v", stats)
48
	}
49
	cstats := client.Stats()
50
	crespInfo, ctotal := cstats.ResponseInfo()
51
	if !(cstats.ConnectionTotal() == 1 &&
52
		cstats.ConnectionActive() == 1 &&
53
		cstats.Requests() == 10 &&
54
		cstats.ExpectedResponseCount() == 10 &&
55
		crespInfo[200] == 10 &&
56
		ctotal == 10) {
57
		t.Fatalf("client metrics not expected: %v", cstats)
58
	}
59
	// close connection
60
	client.Close()
61
	time.Sleep(time.Second) // wait connection closed event
62
	if !(cstats.ConnectionActive() == 0 &&
63
		cstats.ConnectionTotal() == 1 &&
64
		cstats.ConnectionClosed() == 1 &&
65
		stats.ConnectionActive() == 0 &&
66
		stats.ConnectionClosed() == 1 &&
67
		stats.ConnectionTotal() == 1) {
68
		t.Fatalf("conn metrics not expected: %v, %v", cstats, stats)
69
	}
70
}
71

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

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

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

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