Skip to content

Commit f47d5ce

Browse files
committed
update rsults
1 parent ebdfbbe commit f47d5ce

15 files changed

Lines changed: 269 additions & 95 deletions

File tree

site/content/docs/add-framework/meta-json.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ Create a `meta.json` file in your framework directory:
1313
"description": "Short description of the framework and its key features.",
1414
"repo": "https://github.com/org/repo",
1515
"enabled": true,
16-
"tests": ["baseline", "pipelined", "limited-conn", "json", "upload", "compression", "noisy", "baseline-h2", "static-h2"]
16+
"tests": ["baseline", "pipelined", "limited-conn", "json", "upload", "compression", "noisy", "mixed", "baseline-h2", "static-h2"]
1717
}
1818
```
1919

@@ -41,6 +41,7 @@ Create a `meta.json` file in your framework directory:
4141
| `upload` | HTTP/1.1 | `/upload` |
4242
| `compression` | HTTP/1.1 | `/compression` |
4343
| `noisy` | HTTP/1.1 | `/baseline11` |
44+
| `mixed` | HTTP/1.1 | `/baseline11`, `/json`, `/db`, `/upload`, `/compression` |
4445
| `baseline-h2` | HTTP/2 | `/baseline2` (TLS, port 8443) |
4546
| `static-h2` | HTTP/2 | `/static/*` (TLS, port 8443) |
4647
| `baseline-h3` | HTTP/3 | `/baseline2` (QUIC, port 8443) |

site/content/docs/add-framework/test-profiles/h1/baseline.md

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,38 @@ A mix of three request types, rotated across connections:
1616

1717
This exercises the full HTTP handling path: request line parsing, header parsing, query string extraction, body reading (both Content-Length and chunked), integer arithmetic, and response serialization.
1818

19+
## Expected request/response
20+
21+
GET — sum of query parameters:
22+
23+
```
24+
GET /baseline11?a=13&b=42 HTTP/1.1
25+
```
26+
27+
```
28+
HTTP/1.1 200 OK
29+
Content-Type: text/plain
30+
31+
55
32+
```
33+
34+
POST with body — sum of query parameters + body:
35+
36+
```
37+
POST /baseline11?a=13&b=42 HTTP/1.1
38+
Content-Type: text/plain
39+
Content-Length: 2
40+
41+
20
42+
```
43+
44+
```
45+
HTTP/1.1 200 OK
46+
Content-Type: text/plain
47+
48+
75
49+
```
50+
1951
## What it measures
2052

2153
- Raw request throughput under ideal conditions

site/content/docs/add-framework/test-profiles/h1/mixed.md

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,29 @@ The Mixed Workload profile measures overall framework performance under a divers
1919
3. Each connection sends 100 requests of its assigned type, then disconnects and **reconnects with the next template type** (round-robin rotation)
2020
4. This rotation ensures all frameworks face a roughly even distribution of request types — fast connections cycle through all templates rather than staying on one type
2121

22+
## Expected request/response
23+
24+
Each template type uses the same endpoint format as its standalone profile:
25+
26+
```
27+
GET /baseline11?a=1&b=2 HTTP/1.1
28+
→ 3
29+
30+
GET /json HTTP/1.1
31+
→ {"items": [...], "count": 50}
32+
33+
GET /db?min=10&max=50 HTTP/1.1
34+
→ {"items": [...], "count": N}
35+
36+
POST /upload HTTP/1.1
37+
Content-Length: 1048576
38+
→ 1048576
39+
40+
GET /compression HTTP/1.1
41+
Accept-Encoding: gzip
42+
→ (gzip-compressed JSON)
43+
```
44+
2245
## Template rotation
2346

2447
Without rotation, connections assigned to lightweight endpoints (baseline: ~2 byte response) would complete hundreds of reconnect cycles, while heavy endpoints (compression: ~234 KB response) complete only a few. This would skew the results — frameworks efficient at heavy endpoints would paradoxically show lower total RPS.

site/content/docs/add-framework/test-profiles/h1/noisy.md

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,31 @@ The Noisy profile measures how well a framework maintains throughput when valid
2020

2121
4. Only **2xx responses** (from valid requests) count toward RPS — all error responses are ignored in scoring
2222

23+
## Expected request/response
24+
25+
Valid requests — same as baseline:
26+
27+
```
28+
GET /baseline11?a=13&b=42 HTTP/1.1
29+
```
30+
31+
```
32+
HTTP/1.1 200 OK
33+
Content-Type: text/plain
34+
35+
55
36+
```
37+
38+
Noise requests should return appropriate error codes:
39+
40+
```
41+
GET /this/path/does/not/exist HTTP/1.1
42+
```
43+
44+
```
45+
HTTP/1.1 404 Not Found
46+
```
47+
2348
## What it measures
2449

2550
- **Error-handling overhead** — how much CPU the framework spends parsing and rejecting bad requests

site/content/docs/add-framework/test-profiles/h1/pipelined.md

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,19 @@ title: Pipelined (16x)
66

77
**Connections:** 512, 4,096, 16,384
88

9+
## Expected request/response
10+
11+
```
12+
GET /pipeline HTTP/1.1
13+
```
14+
15+
```
16+
HTTP/1.1 200 OK
17+
Content-Type: text/plain
18+
19+
ok
20+
```
21+
922
## What it measures
1023

1124
- HTTP pipelining support and efficiency

site/content/docs/add-framework/test-profiles/h1/short-lived.md

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,21 @@ Same workload as baseline, but each connection is closed and re-established afte
66

77
**Connections:** 512, 4,096
88

9+
## Expected request/response
10+
11+
Same as baseline — sum of query parameters:
12+
13+
```
14+
GET /baseline11?a=13&b=42 HTTP/1.1
15+
```
16+
17+
```
18+
HTTP/1.1 200 OK
19+
Content-Type: text/plain
20+
21+
55
22+
```
23+
924
## What it measures
1025

1126
- Socket creation and teardown overhead

site/content/docs/add-framework/test-profiles/h2/baseline-h2.md

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,19 @@ Same workload as the HTTP/1.1 baseline — query parameter parsing and sum compu
1818
- How frameworks handle many concurrent streams per connection
1919
- HPACK header compression performance
2020

21+
## Expected request/response
22+
23+
```
24+
GET /baseline2?a=1&b=1 HTTP/2
25+
```
26+
27+
```
28+
HTTP/2 200 OK
29+
Content-Type: text/plain
30+
31+
2
32+
```
33+
2134
## How it differs from baseline
2235

2336
| | Baseline (HTTP/1.1) | Baseline (HTTP/2) |

site/content/docs/add-framework/test-profiles/h2/static-h2.md

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,30 @@ Total payload: ~325 KB across 20 files.
2929
- Memory-mapped or pre-loaded file serving performance
3030
- TLS overhead with realistic mixed payloads
3131

32+
## Expected request/response
33+
34+
```
35+
GET /static/reset.css HTTP/2
36+
```
37+
38+
```
39+
HTTP/2 200 OK
40+
Content-Type: text/css
41+
42+
(file contents)
43+
```
44+
45+
```
46+
GET /static/app.js HTTP/2
47+
```
48+
49+
```
50+
HTTP/2 200 OK
51+
Content-Type: application/javascript
52+
53+
(file contents)
54+
```
55+
3256
## How it differs from baseline-h2
3357

3458
| | Baseline (HTTP/2) | Static Files (HTTP/2) |

site/content/docs/add-framework/test-profiles/h3/baseline-h3.md

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,19 @@ The HTTP/3 Baseline profile tests raw throughput over QUIC, the UDP-based transp
1919
- **TLS 1.3 integration** — QUIC mandates encryption
2020
- **Framework QUIC implementation quality** — varies significantly across frameworks
2121

22+
## Expected request/response
23+
24+
```
25+
GET /baseline2?a=1&b=1 HTTP/3
26+
```
27+
28+
```
29+
HTTP/3 200 OK
30+
Content-Type: text/plain
31+
32+
2
33+
```
34+
2235
## Parameters
2336

2437
| Parameter | Value |

site/content/docs/add-framework/test-profiles/h3/static-h3.md

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,19 @@ The HTTP/3 Static Files profile serves 20 static files of various types over QUI
3333
| WebP | 3 | `hero.webp`, `thumb1.webp`, `thumb2.webp` |
3434
| JSON | 1 | `manifest.json` |
3535

36+
## Expected request/response
37+
38+
```
39+
GET /static/logo.svg HTTP/3
40+
```
41+
42+
```
43+
HTTP/3 200 OK
44+
Content-Type: image/svg+xml
45+
46+
(file contents)
47+
```
48+
3649
## Parameters
3750

3851
| Parameter | Value |

0 commit comments

Comments
 (0)