aboutsummaryrefslogtreecommitdiff
path: root/fs_test.go
diff options
context:
space:
mode:
authorGravatar Erik Dubbelboer <erik@dubbelboer.com> 2019-10-17 19:06:14 +0200
committerGravatar Erik Dubbelboer <erik@dubbelboer.com> 2019-10-19 21:02:31 +0200
commitd428e1b05ec9f322d7f48868c2e9abd4a515e45d (patch)
treec710697cfcfd8b57747b40d5b380bcfe52e1ffd2 /fs_test.go
parentSpeed up testing by running tests in parallel (diff)
downloadfasthttp-d428e1b05ec9f322d7f48868c2e9abd4a515e45d.tar.gz
fasthttp-d428e1b05ec9f322d7f48868c2e9abd4a515e45d.tar.bz2
fasthttp-d428e1b05ec9f322d7f48868c2e9abd4a515e45d.zip
Fix race condition in tests, fix URI bug
- Some tests can't be run in parallel. - `URI` had a pointer to `RequestHeader` which was updated with `RequestHeader.CopyTo` which resulted in the URI pointing to the wrong `RequestHeader` causing bugs and race conditions. The only reason `URI` contained a pointer to `RequestHeader` was to delay the call to `RequestHeader.Host()` until really needed. But these days instead of parsing all headers, `RequestHeader.Host()` uses `RequestHeader.peekRawHeader()` which is rather fast. So we can remove the pointer in `URI` and completely decouple the two structs improving code quality and fixing the bug. For some reason this results in faster code on average as well: benchmark old ns/op new ns/op delta BenchmarkClientGetEndToEnd1Inmemory-8 1189 1369 +15.14% BenchmarkClientGetEndToEnd10Inmemory-8 1143 1161 +1.57% BenchmarkClientGetEndToEnd100Inmemory-8 1228 1236 +0.65% BenchmarkClientGetEndToEnd1000Inmemory-8 1213 1213 +0.00% BenchmarkClientGetEndToEnd10KInmemory-8 1362 1350 -0.88% BenchmarkClientEndToEndBigResponse1Inmemory-8 139967 130070 -7.07% BenchmarkClientEndToEndBigResponse10Inmemory-8 142233 131809 -7.33% BenchmarkServerGet1ReqPerConn-8 1726 1593 -7.71% BenchmarkServerGet2ReqPerConn-8 882 927 +5.10% BenchmarkServerGet10ReqPerConn-8 440 436 -0.91% BenchmarkServerGet10KReqPerConn-8 341 339 -0.59% BenchmarkServerPost1ReqPerConn-8 1728 1706 -1.27% BenchmarkServerPost2ReqPerConn-8 968 963 -0.52% BenchmarkServerPost10ReqPerConn-8 506 505 -0.20% BenchmarkServerPost10KReqPerConn-8 424 420 -0.94% BenchmarkServerGet1ReqPerConn10KClients-8 1117 1051 -5.91% BenchmarkServerGet2ReqPerConn10KClients-8 565 514 -9.03% BenchmarkServerGet10ReqPerConn10KClients-8 390 387 -0.77% BenchmarkServerGet100ReqPerConn10KClients-8 355 348 -1.97% BenchmarkServerHijack-8 339 348 +2.65% BenchmarkServerMaxConnsPerIP-8 326 325 -0.31% BenchmarkServerTimeoutError-8 24355 24180 -0.72%
Diffstat (limited to 'fs_test.go')
-rw-r--r--fs_test.go6
1 files changed, 4 insertions, 2 deletions
diff --git a/fs_test.go b/fs_test.go
index 5d53f68..19d1f30 100644
--- a/fs_test.go
+++ b/fs_test.go
@@ -435,6 +435,8 @@ func testParseByteRangeError(t *testing.T, v string, contentLength int) {
}
func TestFSCompressConcurrent(t *testing.T) {
+ // This test can't run parallel as files in / might by changed by other tests.
+
fs := &FS{
Root: ".",
GenerateIndexPages: true,
@@ -465,7 +467,7 @@ func TestFSCompressConcurrent(t *testing.T) {
}
func TestFSCompressSingleThread(t *testing.T) {
- t.Parallel()
+ // This test can't run parallel as files in / might by changed by other tests.
fs := &FS{
Root: ".",
@@ -525,7 +527,7 @@ func testFSCompress(t *testing.T, h RequestHandler, filePath string) {
t.Fatalf("unexpected error when gunzipping response body: %s. filePath=%q", err, filePath)
}
if string(zbody) != body {
- t.Fatalf("unexpected body %q. Expected %q. FilePath=%q", zbody, body, filePath)
+ t.Fatalf("unexpected body len=%d. Expected len=%d. FilePath=%q", len(zbody), len(body), filePath)
}
}