aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--test/parallel/test-math-random.js17
-rw-r--r--tools/code_cache/mkcodecache.cc5
-rw-r--r--tools/snapshot/node_mksnapshot.cc2
3 files changed, 24 insertions, 0 deletions
diff --git a/test/parallel/test-math-random.js b/test/parallel/test-math-random.js
new file mode 100644
index 0000000000..bfa3335f7f
--- /dev/null
+++ b/test/parallel/test-math-random.js
@@ -0,0 +1,17 @@
+'use strict';
+
+require('../common');
+const assert = require('assert');
+const { spawnSync } = require('child_process');
+
+const results = new Set();
+for (let i = 0; i < 10; i++) {
+ const result = spawnSync(process.execPath, ['-p', 'Math.random()']);
+ assert.strictEqual(result.status, 0);
+ results.add(result.stdout.toString());
+}
+// It's theoretically possible if _very_ unlikely to see some duplicates.
+// Therefore, don't expect that the size of the set is exactly 10 but do
+// assume it's > 1 because if you get 10 duplicates in a row you should
+// go out real quick and buy some lottery tickets, you lucky devil you!
+assert(results.size > 1);
diff --git a/tools/code_cache/mkcodecache.cc b/tools/code_cache/mkcodecache.cc
index defa1462ce..e5b43a44b8 100644
--- a/tools/code_cache/mkcodecache.cc
+++ b/tools/code_cache/mkcodecache.cc
@@ -26,6 +26,8 @@ int wmain(int argc, wchar_t* argv[]) {
int main(int argc, char* argv[]) {
#endif // _WIN32
+ v8::V8::SetFlagsFromString("--random_seed=42");
+
if (argc < 2) {
std::cerr << "Usage: " << argv[0] << " <path/to/output.cc>\n";
return 1;
@@ -53,6 +55,9 @@ int main(int argc, char* argv[]) {
v8::Local<v8::Context> context = v8::Context::New(isolate);
v8::Context::Scope context_scope(context);
+ // The command line flags are part of the code cache's checksum so reset
+ // --random_seed= to its default value before creating the code cache.
+ v8::V8::SetFlagsFromString("--random_seed=0");
std::string cache = CodeCacheBuilder::Generate(context);
out << cache;
out.close();
diff --git a/tools/snapshot/node_mksnapshot.cc b/tools/snapshot/node_mksnapshot.cc
index f52cccb705..29f9e1cbcb 100644
--- a/tools/snapshot/node_mksnapshot.cc
+++ b/tools/snapshot/node_mksnapshot.cc
@@ -19,6 +19,8 @@ int wmain(int argc, wchar_t* argv[]) {
int main(int argc, char* argv[]) {
#endif // _WIN32
+ v8::V8::SetFlagsFromString("--random_seed=42");
+
if (argc < 2) {
std::cerr << "Usage: " << argv[0] << " <path/to/output.cc>\n";
return 1;