aboutsummaryrefslogtreecommitdiff
path: root/src/net/http/sniff_test.go
AgeCommit message (Collapse)Author
4 daysnet/http: run tests for HTTP/3 where it can already passNicholas S. Husin
By default, our test harnesses (run and runSynctest) now use http3Mode, in addition to http1Mode and http2Mode, when no []testMode were explicitly defined for a given test. Tests that cannot currently pass for HTTP/3 have been modified to use http3SkippedMode, which serves as a convenient alias for the old default of []testMode{http1Mode, http2Mode}. We changed the default mode and defined http3SkippedMode so we have a clear list of TODOs in terms of how much changes are still needed before our HTTP/3 implementation reaches basic feature parity with HTTP/1 and HTTP/2. For #70914 Change-Id: I719d5d66399a51f7c3d96180ebed9b606a6a6964 Reviewed-on: https://go-review.googlesource.com/c/go/+/765320 Reviewed-by: Damien Neil <dneil@google.com> LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com> Reviewed-by: Nicholas Husin <husin@google.com>
2024-07-25net: use slices and maps to clean up testsapocelipes
Replace reflect.DeepEqual with slices.Equal/maps.Equal, which is much faster. Change-Id: I54600fb63a56460c11d3d5af9072da585e31b1a2 GitHub-Last-Rev: 08c1445ad5be94d071e8ceb4b060b8f4ab0d77ba GitHub-Pull-Request: golang/go#67606 Reviewed-on: https://go-review.googlesource.com/c/go/+/587816 Reviewed-by: Ian Lance Taylor <iant@google.com> Reviewed-by: Dmitri Shuralyov <dmitshur@google.com> LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com> Auto-Submit: Ian Lance Taylor <iant@google.com>
2022-10-07net/http: refactor tests to run most in HTTP/1 and HTTP/2 modesDamien Neil
Replace the ad-hoc approach to running tests in HTTP/1 and HTTP/2 modes with a 'run' function that executes a test in various modes. By default, these modes are HTTP/1 and HTTP/2, but tests can opt-in to HTTPS/1 as well. The 'run' function also takes care of post-test cleanup (running the afterTest function). The 'run' function runs tests in parallel by default. Tests which can't run in parallel (generally because they use global test hooks) pass a testNotParallel option to disable parallelism. Update clientServerTest to use t.Cleanup to clean up after itself, rather than leaving this up to tests to handle. Drop an unnecessary mutex in SetReadLoopBeforeNextReadHook. Test hooks can't be set in parallel, and we want the race detector to notify us if two simultaneous tests try to set a hook. Fixes #56032 Change-Id: I16be64913c426fc93d84abc6ad85dbd3bc191224 Reviewed-on: https://go-review.googlesource.com/c/go/+/438137 TryBot-Result: Gopher Robot <gobot@golang.org> Run-TryBot: Damien Neil <dneil@google.com> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> Reviewed-by: David Chase <drchase@google.com>
2021-06-04net/http: fix ResponseWriter.ReadFrom with short readsDamien Neil
CL 249238 changes ResponseWriter.ReadFrom to probe the source with a single read of sniffLen bytes before writing the response header. If the source returns less than sniffLen bytes without reaching EOF, this can cause Content-Type and Content-Length detection to fail. Fix ResponseWrite.ReadFrom to copy a full sniffLen bytes from the source as a probe. Drop the explicit call to w.WriteHeader; writing the probe will trigger a WriteHeader call. Consistently use io.CopyBuffer; ReadFrom has already acquired a copy buffer, so it may as well use it. Fixes #44953. Change-Id: Ic49305fb827a2bd7da4764b68d64b797b5157dc0 Reviewed-on: https://go-review.googlesource.com/c/go/+/301449 Trust: Damien Neil <dneil@google.com> Run-TryBot: Damien Neil <dneil@google.com> TryBot-Result: Go Bot <gobot@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
2020-10-20all: update references to symbols moved from io/ioutil to ioRuss Cox
The old ioutil references are still valid, but update our code to reflect best practices and get used to the new locations. Code compiled with the bootstrap toolchain (cmd/asm, cmd/dist, cmd/compile, debug/elf) must remain Go 1.4-compatible and is excluded. Also excluded vendored code. For #41190. Change-Id: I6d86f2bf7bc37a9d904b6cee3fe0c7af6d94d5b1 Reviewed-on: https://go-review.googlesource.com/c/go/+/263142 Trust: Russ Cox <rsc@golang.org> Run-TryBot: Russ Cox <rsc@golang.org> TryBot-Result: Go Bot <gobot@golang.org> Reviewed-by: Emmanuel Odeke <emm.odeke@gmail.com>
2019-03-19net/http: fix wrong mime rar signatureLE Manh Cuong
MIME sniffing standard defines the RAR signature as 52 61 72 20 1A 07 00. But this signature is wrong, the RARlab spec defines the 4th byte must be 0x21 or "!", not 0x20 or " ". Checking a rar file also indicates that: $ file abc.rar abc.rar: RAR archive data, v1d, os: Win32 $ head -c 7 abc.rar | od -v -t x1 0000000 52 61 72 21 1a 07 00 0000007 There is also an issue to fix this problem in MIME standard. See: - https://www.rarlab.com/technote.htm#rarsign - https://github.com/whatwg/mimesniff/issues/63 Fixes #30926 Change-Id: Id2e2de7ecbf7f44d37ebaf280efd05e4972c5078 Reviewed-on: https://go-review.googlesource.com/c/go/+/167781 Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> Reviewed-by: Emmanuel Odeke <emm.odeke@gmail.com> Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
2019-03-18net/http: Detect MIME type of v5 RAR archivesbakape
Change-Id: Id9dedc861523e2dafe0e67f70862973124fa07b3 GitHub-Last-Rev: b662561f1980dff9861dd8a738c75a03baa72681 GitHub-Pull-Request: golang/go#30909 Reviewed-on: https://go-review.googlesource.com/c/go/+/168039 Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
2019-03-06net/http: remove discrepancies between the MIME Sniffing Spec and its ↵Kshitij Saraogi
implementation The change fixes the following deviations between the existing implementation and the Spec: 1. Using pattern instead of "mask" for assertion and iteration in the Pattern Matching Algorithm. 2. Rename "image/vnd.microsoft.icon" to "image/x-icon" and add another signature for the same. 3. Using named strings instead of hexadecimal representation in "application/zip" and "application/x-rar-compressed". 4. Reordering "sniffSignatures" in accordance with the Spec section "Identifying a resource with an unknown MIME type". In addition to the above fixes, unit tests for Image MIME type group are added. Fixes #30570 Change-Id: I97d2ae22b426c3c57bf8efd2ed9396c0be983688 Reviewed-on: https://go-review.googlesource.com/c/go/+/165277 Reviewed-by: Emmanuel Odeke <emm.odeke@gmail.com> Run-TryBot: Emmanuel Odeke <emm.odeke@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org>
2018-06-10net/http: add application/wasm mime typeAgniva De Sarker
Although not part of http://mimesniff.spec.whatwg.org, for WASM streaming compilation to happen, the response needs to have the application/wasm MIME type as mentioned here: https://webassembly.github.io/spec/web-api/index.html#streaming-modules. And all current browsers prevent streaming compilation from happening if this MIME type is not present in the response. The magic number is mentioned here: https://webassembly.org/docs/binary-encoding Since we are already adding WASM support, it makes sense to support this MIME type. Change-Id: I8dd7b413a8c438a5c23c29d843b42f6da2a20ba4 Reviewed-on: https://go-review.googlesource.com/113396 Reviewed-by: Richard Musiol <neelance@gmail.com> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
2018-03-25net/http: use top-level font media typeAgniva De Sarker
RFC 8081 declares a top level font media type for all types of fonts. Updating the mime types in sniffer to reflect the new changes. Fixes #24524 Change-Id: Iba6cef4c5974e9930e14705720d42550ee87ba56 Reviewed-on: https://go-review.googlesource.com/102458 Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
2018-03-24net/http: add sniffing support for woff2Agniva De Sarker
Sniffing woff2 is now added to the spec - https://github.com/whatwg/mimesniff/commit/e29b9f4a22843bf6c7f0177223b0147bc03e37f7 Change-Id: Ie63744454d0ee54ed0f985c2873d7eb20a14015a Reviewed-on: https://go-review.googlesource.com/102455 Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
2017-12-06net/http: keep testing DetectContentType of empty bodyRuss Cox
Historically, DetectContentType has returned "text/plain; charset=utf-8" for an empty body, there was a test for this, and there should continue to be one. CL 46631 changed the content-serving handlers to avoid setting any Content-Type header when serving empty content. Even if that change in behavior is correct, the CL is explicitly not changing DetectContentType, so it must also not change DetectContentType's tests. Change-Id: I7a19c9fabb43be47e349b40e729e49fceb3f2894 Reviewed-on: https://go-review.googlesource.com/82077 Run-TryBot: Russ Cox <rsc@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
2017-11-22net/http: implement sniffing for some fontsEmmanuel Odeke
Implement sniffing for fonts: * MS Font object --> "application/vnd.ms-fontobject" * ttf --> "application/font-ttf" * off --> "application/font-off" * otf --> "application/font-off" * cff --> "application/font-cff" * woff --> "application/font-woff" Fixes #20808 Change-Id: Ibe02a87d3c9d610c6a30e1b6c03f4e520404e70f Reviewed-on: https://go-review.googlesource.com/47553 Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
2017-11-15net/http: don't set Content-Type with empty body automaticallyTw
We set Content-Type to "text/plain; charset=utf-8" even with blank body before. Let's strip this unnecessary header though it's harmless in most cases. Fixes #20784 Signed-off-by: Tw <tw19881113@gmail.com> Change-Id: Ic58a410dcbc89f457c6ddd92961d9cbf545b2f4f Reviewed-on: https://go-review.googlesource.com/46631 Run-TryBot: Emmanuel Odeke <emm.odeke@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
2017-06-13net/http: fix application/ogg sniff signatureEmmanuel Odeke
I accidentally set the wrong pattern mask as * []byte("\x4F\x67\x67\x53\x00") --> "OggS", the byte pattern itself. instead of * []byte("\xFF\xFF\xFF\xFF\xFF") which was a copy-paste error. The correct pattern is described at https://mimesniff.spec.whatwg.org/#matching-an-audio-or-video-type-pattern which I was using as a reference but I mistyped. Fixes #20513 Change-Id: Ie9cb60ac7edbf03075070878775b964116ce92d0 Reviewed-on: https://go-review.googlesource.com/44336 Run-TryBot: Emmanuel Odeke <emm.odeke@gmail.com> Reviewed-by: Joe Tsai <thebrokentoaster@gmail.com>
2016-11-04net/http: speed up tests, use t.Parallel when it's safeBrad Fitzpatrick
Before: 8.9 seconds for go test -short After: 2.8 seconds There are still 250 tests without t.Parallel, but I got the important onces using a script: $ go test -short -v 2>&1 | go run ~/slowtests.go Where slowtests.go is https://play.golang.org/p/9mh5Wg1nLN The remaining 250 (the output lines from slowtests.go) all have a reported duration of 0ms, except one 50ms test which has to be serial. Where tests can't be parallel, I left a comment at the top saying why, so people don't add t.Parallel later and get surprised at failures. Updates #17751 Change-Id: Icbe32cbe2b996e23c89f1af6339287fa22af5115 Reviewed-on: https://go-review.googlesource.com/32684 Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Josh Bleecher Snyder <josharian@gmail.com>
2016-03-26net/http: add more audio/video mime sniffingEmmanuel Odeke
Following the spec at https://mimesniff.spec.whatwg.org/#matching-an-audio-or-video-type-pattern Adds signatures for: + audio/aiff + audio/basic + audio/midi + audio/mpeg + video/avi Updates the signature for: + application/ogg Also updates the pattern matching algorithm in https://mimesniff.spec.whatwg.org/#matching-a-mime-type-pattern by implementing clause 4 that dictates that the number of bytes in the pattern must match the number of bytes in the mask. Fixes #13383 Change-Id: Ie321f392e6570299c17176adf1c75f62f357e1e8 Reviewed-on: https://go-review.googlesource.com/17132 Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
2015-12-10net/http: run more tests in http2 modeBrad Fitzpatrick
Failing ones are marked skipped. Fixes #13543 (was just a test issue) Updates #13555 (to be fixed later) Updates #13556 (to be fixed later) Updates #13557 (to be fixed later) Fixes bug in golang.org/cl/17428 (http1 now uses HTTP status 431, not 413) Change-Id: I8f7431fee35f2fc081cfe2c232ae75a00800a60b Reviewed-on: https://go-review.googlesource.com/17683 Reviewed-by: Blake Mizerany <blake.mizerany@gmail.com> Reviewed-by: Emmanuel Odeke <emm.odeke@gmail.com> Reviewed-by: Burcu Dogan <jbd@google.com> Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
2015-12-09net/http: sniffTest for 5953 set in http2 modeEmmanuel Odeke
Change-Id: I345b6ea7024a1c85c805b2d2e22f9f79aeca5816 Reviewed-on: https://go-review.googlesource.com/17462 Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
2015-12-07net/http: sniffWrite test also in http2 modeEmmanuel Odeke
Change-Id: Ifa9f1ed6a3b8d3f7536f2d315259940335b0ee49 Reviewed-on: https://go-review.googlesource.com/17438 Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
2015-12-04net/http: sniff tests ported to h2Emmanuel Odeke
Change-Id: Icad6cc130252ac177946b23c12f36d6ba3275bf0 Reviewed-on: https://go-review.googlesource.com/17436 Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
2015-11-17net/http: add/update mp4 sniffingEmmanuel Odeke
Completes sniffing for mp4 signature according to the spec at: https://mimesniff.spec.whatwg.org/#signature-for-mp4 Clause 6.2.1 Fixes #8773 Change-Id: Icfc4a23324ae249db52c94a21c0e8509e1833e19 Reviewed-on: https://go-review.googlesource.com/16951 Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
2014-09-08build: move package sources from src/pkg to srcRuss Cox
Preparation was in CL 134570043. This CL contains only the effect of 'hg mv src/pkg/* src'. For more about the move, see golang.org/s/go14nopkg.