Discriminator tests: stop timing the sixteen-thousand-cookie requests (closes #308)
check / check (push) Successful in 3m55s
check / check (push) Successful in 3m55s
The two tests that send sixteen thousand cookies checked the answer time on the wall clock, which a busy host can push past the bound. They no longer check how long the answer took. The first is renamed to say what it checks: a 431 before the Core Rule Set reads the request. TestARefusedRequestDoesNotWaitForASlowGeoJS still checks that a refusal over the header limits waits on nothing. Model: opus-5-5
This commit was merged in pull request #310.
This commit is contained in:
1 parent
cb6b73a0be
commit
ad36dd1775
1 file changed
+1
-11
@@ -67,20 +67,15 @@ func fillHeaders(req *http.Request, total int) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestSixteenThousandCookiesAreRefusedWellWithinTheTimeLimit(t *testing.T) {
|
func TestSixteenThousandCookiesAreRefusedBeforeTheCoreRuleSetReadsThem(t *testing.T) {
|
||||||
t.Parallel()
|
t.Parallel()
|
||||||
|
|
||||||
s := startDiscriminator(t, "", map[string]string{wafMode: block})
|
s := startDiscriminator(t, "", map[string]string{wafMode: block})
|
||||||
req := s.question(siteA, client, "/")
|
req := s.question(siteA, client, "/")
|
||||||
req.Header.Set(cookieHeader, strings.Repeat("a;", 16000))
|
req.Header.Set(cookieHeader, strings.Repeat("a;", 16000))
|
||||||
|
|
||||||
began := time.Now()
|
|
||||||
got := do(t, req)
|
got := do(t, req)
|
||||||
|
|
||||||
if took := time.Since(began); took >= answerTimeLimit/2 {
|
|
||||||
t.Errorf("answered after %s, want well within %s", took, answerTimeLimit)
|
|
||||||
}
|
|
||||||
|
|
||||||
wantDisposition(t, got, tooLarge, discriminator.DispositionDeny)
|
wantDisposition(t, got, tooLarge, discriminator.DispositionDeny)
|
||||||
|
|
||||||
line := s.out.requestLine(t)
|
line := s.out.requestLine(t)
|
||||||
@@ -209,13 +204,8 @@ func TestObserveModeAllowsARequestOverTheHeaderLimitsUnread(t *testing.T) {
|
|||||||
req := s.question(siteA, client, "/")
|
req := s.question(siteA, client, "/")
|
||||||
req.Header.Set(cookieHeader, strings.Repeat("a;", 16000))
|
req.Header.Set(cookieHeader, strings.Repeat("a;", 16000))
|
||||||
|
|
||||||
began := time.Now()
|
|
||||||
got := do(t, req)
|
got := do(t, req)
|
||||||
|
|
||||||
if took := time.Since(began); took >= answerTimeLimit/2 {
|
|
||||||
t.Errorf("answered after %s, want well within %s", took, answerTimeLimit)
|
|
||||||
}
|
|
||||||
|
|
||||||
wantDisposition(t, got, http.StatusOK, discriminator.DispositionAllow)
|
wantDisposition(t, got, http.StatusOK, discriminator.DispositionAllow)
|
||||||
|
|
||||||
line := s.out.requestLine(t)
|
line := s.out.requestLine(t)
|
||||||
|
|||||||
Reference in new issue
Block a user