Parcourir la source

Add tests for proxy dialers

tags/v2.0.0-rc1
9seconds il y a 5 ans
Parent
révision
8f7e79862b
1 fichiers modifiés avec 96 ajouts et 0 suppressions
  1. 96
    0
      mtglib/network/proxy_dialer_internal_test.go

+ 96
- 0
mtglib/network/proxy_dialer_internal_test.go Voir le fichier

1
+package network
2
+
3
+import (
4
+	"fmt"
5
+	"net/url"
6
+	"testing"
7
+	"time"
8
+
9
+	"github.com/stretchr/testify/suite"
10
+)
11
+
12
+type ProxyDialerTestSuite struct {
13
+	suite.Suite
14
+
15
+	u *url.URL
16
+}
17
+
18
+func (suite *ProxyDialerTestSuite) SetupSuite() {
19
+	u, _ := url.Parse("socks5://hello:world@10.0.0.10:3128")
20
+	suite.u = u
21
+}
22
+
23
+func (suite *ProxyDialerTestSuite) TestSetupDefaults() {
24
+	d := newProxyDialer(&DialerMock{}, suite.u).(*circuitBreakerDialer)
25
+
26
+	suite.EqualValues(ProxyDialerOpenThreshold, d.openThreshold)
27
+	suite.EqualValues(ProxyDialerHalfOpenTimeout, d.halfOpenTimeout)
28
+	suite.EqualValues(ProxyDialerResetFailuresTimeout, d.resetFailuresTimeout)
29
+}
30
+
31
+func (suite *ProxyDialerTestSuite) TestSetupValuesAllOk() {
32
+	query := url.Values{}
33
+
34
+	query.Set("open_threshold", "30")
35
+	query.Set("reset_failures_timeout", "1s")
36
+	query.Set("half_open_timeout", "2s")
37
+
38
+	suite.u.RawQuery = query.Encode()
39
+	d := newProxyDialer(&DialerMock{}, suite.u).(*circuitBreakerDialer)
40
+
41
+	suite.EqualValues(30, d.openThreshold)
42
+	suite.EqualValues(2*time.Second, d.halfOpenTimeout)
43
+	suite.EqualValues(time.Second, d.resetFailuresTimeout)
44
+}
45
+
46
+func (suite *ProxyDialerTestSuite) TestOpenThreshold() {
47
+	query := url.Values{}
48
+	params := []string{"-30", "aaa", "1.0", "-1.0"}
49
+
50
+	for _, v := range params {
51
+		suite.T().Run(fmt.Sprintf("param=%s", v), func(t *testing.T) {
52
+			query.Set("open_threshold", v)
53
+
54
+			suite.u.RawQuery = query.Encode()
55
+			d := newProxyDialer(&DialerMock{}, suite.u).(*circuitBreakerDialer)
56
+
57
+			suite.EqualValues(ProxyDialerOpenThreshold, d.openThreshold)
58
+		})
59
+	}
60
+}
61
+
62
+func (suite *ProxyDialerTestSuite) TestHalfOpenTimeout() {
63
+	query := url.Values{}
64
+	params := []string{"-30", "30", "aaa", "-3.0", "3.0"}
65
+
66
+	for _, v := range params {
67
+		suite.T().Run(fmt.Sprintf("param=%s", v), func(t *testing.T) {
68
+			query.Set("half_open_timeout", v)
69
+
70
+			suite.u.RawQuery = query.Encode()
71
+			d := newProxyDialer(&DialerMock{}, suite.u).(*circuitBreakerDialer)
72
+
73
+			suite.EqualValues(ProxyDialerHalfOpenTimeout, d.halfOpenTimeout)
74
+		})
75
+	}
76
+}
77
+
78
+func (suite *ProxyDialerTestSuite) TestResetFailuresTimeout() {
79
+	query := url.Values{}
80
+	params := []string{"-30", "30", "aaa", "-3.0", "3.0"}
81
+
82
+	for _, v := range params {
83
+		suite.T().Run(fmt.Sprintf("param=%s", v), func(t *testing.T) {
84
+			query.Set("reset_failures_timeout", v)
85
+
86
+			suite.u.RawQuery = query.Encode()
87
+			d := newProxyDialer(&DialerMock{}, suite.u).(*circuitBreakerDialer)
88
+
89
+			suite.EqualValues(ProxyDialerHalfOpenTimeout, d.halfOpenTimeout)
90
+		})
91
+	}
92
+}
93
+
94
+func TestProxyDialer(t *testing.T) {
95
+	suite.Run(t, &ProxyDialerTestSuite{})
96
+}

Chargement…
Annuler
Enregistrer