From 20913920310f4b1f4dbbd088f3a29b00f1592fe7 Mon Sep 17 00:00:00 2001 From: Kevin Jahns <kevin.jahns@rwth-aachen.de> Date: Wed, 29 Jun 2016 17:48:56 +0200 Subject: [PATCH] implemented random seed generator, in order to reproduce tests --- package.json | 5 +++-- src/SpecHelper.js | 24 ++++++++++++++++++++++++ 2 files changed, 27 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 3ab51ee8..1e34870b 100644 --- a/package.json +++ b/package.json @@ -42,6 +42,7 @@ }, "homepage": "http://y-js.org", "devDependencies": { + "babel-eslint": "^5.0.0-beta6", "babel-plugin-transform-runtime": "^6.1.18", "babel-preset-es2015": "^6.1.18", "babelify": "^7.2.0", @@ -69,10 +70,10 @@ "pre-commit": "^1.1.1", "regenerator": "^0.8.42", "run-sequence": "^1.1.4", + "seedrandom": "^2.4.2", "standard": "^5.2.2", "vinyl-buffer": "^1.0.0", - "vinyl-source-stream": "^1.1.0", - "babel-eslint": "^5.0.0-beta6" + "vinyl-source-stream": "^1.1.0" }, "dependencies": {} } diff --git a/src/SpecHelper.js b/src/SpecHelper.js index b1a58b42..b014c9d6 100644 --- a/src/SpecHelper.js +++ b/src/SpecHelper.js @@ -23,6 +23,29 @@ if (typeof global !== 'undefined') { } g.g = g +// Helper methods for the random number generator +Math.seedrandom = require('seedrandom') + +g.generateRandomSeed = function generateRandomSeed() { + var seed + if (window.location.hash.length > 1) { + seed = window.location.hash.slice(1) // first character is the hash! + console.warn('Using random seed that was specified in the url!') + } else { + seed = JSON.stringify(Math.random()) + } + console.info('Using random seed: ' + seed) + setRandomSeed(seed) + +} + +g.setRandomSeed = function setRandomSeed(seed) { + Math.seedrandom.currentSeed = seed + Math.seedrandom(Math.seedrandom.currentSeed, { global: true }) +} + +g.generateRandomSeed() + g.YConcurrency_TestingMode = true jasmine.DEFAULT_TIMEOUT_INTERVAL = 200000 @@ -86,6 +109,7 @@ function getRandomString () { g.getRandomString = getRandomString function * applyTransactions (relAmount, numberOfTransactions, objects, users, transactions, noReconnect) { + g.generateRandomSeed() // create a new seed, so we can re-create the behavior for (var i = 0; i < numberOfTransactions * relAmount + 1; i++) { var r = Math.random() if (r > 0.95) { -- GitLab