Skip to content

Commit 1323068

Browse files
authored
render non default params (#197)
- Improve non-default params check - Add basic unittests for params - Show table with non-default params in place of the summar view - Globally set hue-rate to change all blue color tones to red
1 parent bf0a6cd commit 1323068

File tree

5 files changed

+130
-6
lines changed

5 files changed

+130
-6
lines changed

JetStream.css

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,64 @@ body {
6868
height: 100%;
6969
}
7070

71+
table {
72+
border-spacing: 0;
73+
}
74+
75+
body.nonDefaultParams {
76+
filter: hue-rotate(152deg);
77+
}
78+
79+
.nonDefaultParams .summary {
80+
display: none;
81+
}
82+
83+
#non-default-params {
84+
display: none;
85+
text-align: center;
86+
87+
& h2 {
88+
text-align: center;
89+
}
90+
91+
& p {
92+
text-align: center;
93+
}
94+
}
95+
96+
.nonDefaultParams #non-default-params {
97+
display: block;
98+
}
99+
100+
#non-standard-params-table {
101+
border-collapse: collapse;
102+
text-align: left;
103+
display: inline-block;
104+
margin-top: var(--gap);
105+
}
106+
107+
#non-standard-params-table tr {
108+
padding: 2px;
109+
}
110+
111+
#non-standard-params-table thead th {
112+
border-bottom: 1px solid var(--foreground);
113+
}
114+
115+
#non-standard-params-table tbody td {
116+
font-weight: normal;
117+
text-align: left;
118+
}
119+
120+
#non-standard-params-table thead th,
121+
#non-standard-params-table tbody td {
122+
padding: 0.1em 0.3em;
123+
}
124+
#non-standard-params-table tbody td:nth-child(2) {
125+
color: var(--highlight);
126+
}
127+
128+
71129
.overflow-scroll {
72130
overflow-y: auto;
73131
}

cli.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ const CLI_PARAMS = {
4141
param: "dumpJSONResults",
4242
},
4343
"dump-test-list": {
44-
help: "Print test list instead of running.",
44+
help: "Print the selected test list instead of running.",
4545
param: "dumpTestList",
4646
},
4747
ramification: {

index.html

Lines changed: 35 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,9 @@
3636
const isInBrowser = true;
3737
const isD8 = false;
3838
const isSpiderMonkey = false;
39-
globalThis.JetStreamParamsSource = new URLSearchParams(globalThis?.location?.search);
39+
if (globalThis?.location?.search) {
40+
globalThis.JetStreamParamsSource = new URLSearchParams(globalThis?.location?.search);
41+
}
4042
globalThis.allIsGood = true;
4143
window.onerror = function(e) {
4244
if (e == "Script error.") {
@@ -49,6 +51,9 @@
4951
}
5052

5153
async function initialize() {
54+
if (!JetStreamParams.isDefault) {
55+
showNonDefaultParams();
56+
}
5257
if (globalThis.allIsGood) {
5358
try {
5459
await JetStream.initialize();
@@ -64,6 +69,18 @@
6469
statusElement.innerHTML = "<h2>ERROR</h2><p>Errors were encountered during page load. Refusing to run a partial benchmark suite.</p>";
6570
}
6671
}
72+
73+
function showNonDefaultParams() {
74+
document.body.classList.add("nonDefaultParams");
75+
const body = document.querySelector("#non-standard-params-table tbody");
76+
for (const [key, value] of Object.entries(JetStreamParams.nonDefaultParams)) {
77+
const defaultValue = DefaultJetStreamParams[key]
78+
const row = body.insertRow();
79+
row.insertCell().textContent = key;
80+
row.insertCell().textContent = JSON.stringify(value);
81+
row.insertCell().textContent = JSON.stringify(defaultValue);
82+
}
83+
}
6784
</script>
6885

6986
<script src="params.js"></script>
@@ -79,6 +96,23 @@ <h1 class="logo">
7996

8097
<main>
8198
<p class="summary">JetStream 3 is a JavaScript and WebAssembly benchmark suite focused on the most advanced web applications. It rewards browsers that start up quickly, execute code quickly, and run smoothly. For more information, read the <a href="in-depth.html">in-depth analysis</a>. Bigger scores are better.</p>
99+
<div id="non-default-params">
100+
<h2>Non-standard Parameters</h2>
101+
<p>
102+
JetStream ran with non-standard parameters.<br />
103+
The results are likely not comparable to default runs.
104+
</p>
105+
<table id="non-standard-params-table">
106+
<thead>
107+
<tr>
108+
<th>Param</th>
109+
<th>Value</th>
110+
<th>Default</th>
111+
</tr>
112+
</thead>
113+
<tbody></tbody>
114+
</table>
115+
</div>
82116
<p class="summary" id="mode-description"></p>
83117

84118
<div id="result-summary"></div>

params.js

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -140,8 +140,9 @@ class Params {
140140
_parseBooleanParam(sourceParams, paramKey) {
141141
if (!sourceParams.has(paramKey))
142142
return DefaultJetStreamParams[paramKey];
143-
const value = sourceParams.get(paramKey).toLowerCase();
143+
const rawValue = sourceParams.get(paramKey);;
144144
sourceParams.delete(paramKey);
145+
const value = rawValue.toLowerCase();
145146
return !(value === "false" || value === "0");
146147
}
147148

@@ -170,9 +171,10 @@ class Params {
170171
get nonDefaultParams() {
171172
const diff = Object.create(null);
172173
for (const [key, value] of Object.entries(this)) {
173-
if (value !== DefaultJetStreamParams[key]) {
174-
diff[key] = value;
175-
}
174+
const defaultValue = DefaultJetStreamParams[key]
175+
if (value == defaultValue) continue;
176+
if (value?.length == 0 && defaultValue?.length == 0) continue;
177+
diff[key] = value;
176178
}
177179
return diff;
178180
}
@@ -183,6 +185,10 @@ let maybeCustomParams = DefaultJetStreamParams;
183185
if (globalThis?.JetStreamParamsSource) {
184186
try {
185187
maybeCustomParams = new Params(globalThis?.JetStreamParamsSource);
188+
// We might have parsed the same values again, do a poor-mans deep-equals:
189+
if (JSON.stringify(maybeCustomParams) === JSON.stringify(DefaultJetStreamParams)) {
190+
maybeCustomParams = DefaultJetStreamParams
191+
}
186192
} catch (e) {
187193
console.error("Invalid Params", e, "\nUsing defaults as fallback:", maybeCustomParams);
188194
}

tests/unit-tests.js

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -300,6 +300,32 @@ async function testStartupBenchmarkInnerTests() {
300300
);
301301
})();
302302

303+
(function testDefaultParams() {
304+
assertTrue(DefaultJetStreamParams.isDefault);
305+
assertTrue(Object.isFrozen(DefaultJetStreamParams));
306+
assertEquals(Object.entries(DefaultJetStreamParams.nonDefaultParams).length, 0);
307+
})();
308+
309+
(function testCustomParamsSingle() {
310+
const sourceParams = new Map(Object.entries({ developerMode: "true" }));
311+
const params = new Params(sourceParams);
312+
assertFalse(params.isDefault);
313+
const nonDefaults = params.nonDefaultParams;
314+
assertEquals(Object.entries(nonDefaults).length, 1);
315+
assertEquals(nonDefaults.developerMode, true);
316+
})();
317+
318+
319+
(function testCustomParamsMultiple() {
320+
const sourceParams = new Map(Object.entries({ iterationCount: 123, test: "wasm,js"}));
321+
const params = new Params(sourceParams);
322+
assertFalse(params.isDefault);
323+
const nonDefaults = params.nonDefaultParams;
324+
assertEquals(Object.entries(nonDefaults).length, 2);
325+
assertEquals(nonDefaults.testIterationCount, 123);
326+
assertEquals(JSON.stringify(nonDefaults.testList), JSON.stringify(["wasm", "js"]));
327+
})();
328+
303329

304330
(function testParseIterationCount() {
305331
assertThrows("Cannot parse negative iterationCounts",

0 commit comments

Comments
 (0)