fix probe_resist_test.go test cases, the repose header['Alt-Svc'] is different from different server
Signed-off-by: johnzhanghua <johnzhanghua@gmail.com>
This commit is contained in:
parent
71e3f6ebe4
commit
5b6051e578
2 changed files with 65 additions and 4 deletions
|
|
@ -364,6 +364,9 @@ func TestMain(m *testing.M) {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// wait server ready for tls dial
|
||||||
|
time.Sleep(500 * time.Millisecond)
|
||||||
|
|
||||||
retCode := m.Run()
|
retCode := m.Run()
|
||||||
|
|
||||||
caddy.Stop()
|
caddy.Stop()
|
||||||
|
|
|
||||||
|
|
@ -50,7 +50,13 @@ func TestGETAuthWrongProbeResist(t *testing.T) {
|
||||||
responseReference.StatusCode, responseProbeResist.StatusCode)
|
responseReference.StatusCode, responseProbeResist.StatusCode)
|
||||||
}
|
}
|
||||||
if err = responsesAreEqual(responseProbeResist, responseReference); err != nil {
|
if err = responsesAreEqual(responseProbeResist, responseReference); err != nil {
|
||||||
t.Fatal(err)
|
var e errorHeaderAlternativeServiceNotEqual
|
||||||
|
if !errors.As(err, &e) {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
if err = e.CheckAlternativeServiceError(caddyForwardProxyProbeResist.addr, caddyDummyProbeResist.addr); err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if err = responsesAreEqual(responseProbeResist, responseForwardProxy); err == nil {
|
if err = responsesAreEqual(responseProbeResist, responseForwardProxy); err == nil {
|
||||||
t.Fatalf("Responses from servers with and without Probe Resistance are expected to be different."+
|
t.Fatalf("Responses from servers with and without Probe Resistance are expected to be different."+
|
||||||
|
|
@ -78,7 +84,13 @@ func TestGETAuthWrongProbeResist(t *testing.T) {
|
||||||
responseProbeResist.StatusCode)
|
responseProbeResist.StatusCode)
|
||||||
}
|
}
|
||||||
if err = responsesAreEqual(responseProbeResist, responseReference); err != nil {
|
if err = responsesAreEqual(responseProbeResist, responseReference); err != nil {
|
||||||
t.Fatal(err)
|
var e errorHeaderAlternativeServiceNotEqual
|
||||||
|
if !errors.As(err, &e) {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
if err = e.CheckAlternativeServiceError(caddyForwardProxyProbeResist.addr, caddyDummyProbeResist.addr); err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if err = responsesAreEqual(responseProbeResist, responseForwardProxy); err == nil {
|
if err = responsesAreEqual(responseProbeResist, responseForwardProxy); err == nil {
|
||||||
t.Fatalf("Responses from servers with and without Probe Resistance are expected to be different."+
|
t.Fatalf("Responses from servers with and without Probe Resistance are expected to be different."+
|
||||||
|
|
@ -174,7 +186,13 @@ func TestConnectAuthWrongProbeResist(t *testing.T) {
|
||||||
responseReference.StatusCode, responseProbeResist.StatusCode)
|
responseReference.StatusCode, responseProbeResist.StatusCode)
|
||||||
}
|
}
|
||||||
if err = responsesAreEqual(responseProbeResist, responseReference); err != nil {
|
if err = responsesAreEqual(responseProbeResist, responseReference); err != nil {
|
||||||
t.Fatal(err)
|
var e errorHeaderAlternativeServiceNotEqual
|
||||||
|
if !errors.As(err, &e) {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
if err = e.CheckAlternativeServiceError(caddyForwardProxyProbeResist.addr, caddyDummyProbeResist.addr); err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if err = responsesAreEqual(responseProbeResist, responseForwardProxy); err == nil {
|
if err = responsesAreEqual(responseProbeResist, responseForwardProxy); err == nil {
|
||||||
t.Fatalf("Responses from servers with and without Probe Resistance are expected to be different."+
|
t.Fatalf("Responses from servers with and without Probe Resistance are expected to be different."+
|
||||||
|
|
@ -202,7 +220,13 @@ func TestConnectAuthWrongProbeResist(t *testing.T) {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
if err = responsesAreEqual(responseProbeResist, responseReference); err != nil {
|
if err = responsesAreEqual(responseProbeResist, responseReference); err != nil {
|
||||||
t.Fatal(err)
|
var e errorHeaderAlternativeServiceNotEqual
|
||||||
|
if !errors.As(err, &e) {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
if err = e.CheckAlternativeServiceError(caddyForwardProxyProbeResist.addr, caddyDummyProbeResist.addr); err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if err = responsesAreEqual(responseProbeResist, responseForwardProxy); err == nil {
|
if err = responsesAreEqual(responseProbeResist, responseForwardProxy); err == nil {
|
||||||
t.Fatalf("Responses from servers with and without Probe Resistance are expected to be different."+
|
t.Fatalf("Responses from servers with and without Probe Resistance are expected to be different."+
|
||||||
|
|
@ -263,6 +287,37 @@ func TestConnectAuthWrongProbeResistRedir(t *testing.T) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type errorHeaderAlternativeServiceNotEqual struct {
|
||||||
|
ValueA []string
|
||||||
|
ValueB []string
|
||||||
|
}
|
||||||
|
|
||||||
|
func (e errorHeaderAlternativeServiceNotEqual) Error() string {
|
||||||
|
return fmt.Sprintf("header 'Alt-Svc' not equal: %v, %v\n", e.ValueA, e.ValueB)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (e errorHeaderAlternativeServiceNotEqual) CheckAlternativeServiceError(serverAddrA, serverAddrB string) error {
|
||||||
|
if len(e.ValueA) == 0 || len(e.ValueB) == 0 {
|
||||||
|
return fmt.Errorf("header 'Alt-Svc' is empty: %w", e)
|
||||||
|
}
|
||||||
|
_, port, err := net.SplitHostPort(serverAddrA)
|
||||||
|
if err != nil {
|
||||||
|
return fmt.Errorf("failed to split server address :%w", err)
|
||||||
|
}
|
||||||
|
if !strings.Contains(e.ValueA[0], port) {
|
||||||
|
return fmt.Errorf("Alt-Svc address :%s does not contain the server port: %s", e.ValueA[0], port)
|
||||||
|
}
|
||||||
|
_, port, err = net.SplitHostPort(serverAddrB)
|
||||||
|
if err != nil {
|
||||||
|
return fmt.Errorf("failed to split server address :%w", err)
|
||||||
|
}
|
||||||
|
if !strings.Contains(e.ValueB[0], port) {
|
||||||
|
return fmt.Errorf("Alt-Svc address :%s does not contain the server port: %s", e.ValueB[0], port)
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
// returns nil if are equal
|
// returns nil if are equal
|
||||||
func responsesAreEqual(res1, res2 *http.Response) error {
|
func responsesAreEqual(res1, res2 *http.Response) error {
|
||||||
if res1 == nil {
|
if res1 == nil {
|
||||||
|
|
@ -343,6 +398,9 @@ func responsesAreEqual(res1, res2 *http.Response) error {
|
||||||
return fmt.Errorf("header \"%s: %s\" is absent in res2", k1, v1)
|
return fmt.Errorf("header \"%s: %s\" is absent in res2", k1, v1)
|
||||||
}
|
}
|
||||||
if errStr = stringSlicesAreEqual(v1, v2); errStr != "" {
|
if errStr = stringSlicesAreEqual(v1, v2); errStr != "" {
|
||||||
|
if k1 == "Alt-Svc" {
|
||||||
|
return errorHeaderAlternativeServiceNotEqual{v1, v2}
|
||||||
|
}
|
||||||
return fmt.Errorf("header \"%s\" is different: %s", k1, errStr)
|
return fmt.Errorf("header \"%s\" is different: %s", k1, errStr)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue