|
@@ -67,6 +67,20 @@ custom_domains = test2.com
|
|
|
health_check_type = http
|
|
|
health_check_interval_s = 1
|
|
|
health_check_url = /health
|
|
|
+
|
|
|
+[http3]
|
|
|
+type = http
|
|
|
+local_port = 15005
|
|
|
+custom_domains = test.balancing.com
|
|
|
+group = test-balancing
|
|
|
+group_key = 123
|
|
|
+
|
|
|
+[http4]
|
|
|
+type = http
|
|
|
+local_port = 15006
|
|
|
+custom_domains = test.balancing.com
|
|
|
+group = test-balancing
|
|
|
+group_key = 123
|
|
|
`
|
|
|
|
|
|
func TestHealthCheck(t *testing.T) {
|
|
@@ -124,6 +138,22 @@ func TestHealthCheck(t *testing.T) {
|
|
|
defer httpSvc2.Stop()
|
|
|
}
|
|
|
|
|
|
+ httpSvc3 := mock.NewHttpServer(15005, func(w http.ResponseWriter, r *http.Request) {
|
|
|
+ w.Write([]byte("http3"))
|
|
|
+ })
|
|
|
+ err = httpSvc3.Start()
|
|
|
+ if assert.NoError(err) {
|
|
|
+ defer httpSvc3.Stop()
|
|
|
+ }
|
|
|
+
|
|
|
+ httpSvc4 := mock.NewHttpServer(15006, func(w http.ResponseWriter, r *http.Request) {
|
|
|
+ w.Write([]byte("http4"))
|
|
|
+ })
|
|
|
+ err = httpSvc4.Start()
|
|
|
+ if assert.NoError(err) {
|
|
|
+ defer httpSvc4.Stop()
|
|
|
+ }
|
|
|
+
|
|
|
time.Sleep(200 * time.Millisecond)
|
|
|
|
|
|
// ****** start frps and frpc ******
|
|
@@ -244,4 +274,20 @@ func TestHealthCheck(t *testing.T) {
|
|
|
assert.NoError(err)
|
|
|
assert.Equal(200, code)
|
|
|
assert.Equal("http2", body)
|
|
|
+
|
|
|
+ // ****** load balancing type http ******
|
|
|
+ result = make([]string, 0)
|
|
|
+
|
|
|
+ code, body, _, err = util.SendHttpMsg("GET", "http://127.0.0.1:14000/xxx", "test.balancing.com", nil, "")
|
|
|
+ assert.NoError(err)
|
|
|
+ assert.Equal(200, code)
|
|
|
+ result = append(result, body)
|
|
|
+
|
|
|
+ code, body, _, err = util.SendHttpMsg("GET", "http://127.0.0.1:14000/xxx", "test.balancing.com", nil, "")
|
|
|
+ assert.NoError(err)
|
|
|
+ assert.Equal(200, code)
|
|
|
+ result = append(result, body)
|
|
|
+
|
|
|
+ assert.Contains(result, "http3")
|
|
|
+ assert.Contains(result, "http4")
|
|
|
}
|