Skip to content

Commit ab30f27

Browse files
divinity76TimWolla
andauthored
random: Perform fewer iterations if SKIP_SLOW_TESTS is set (#12279)
Co-authored-by: Tim Düsterhus <[email protected]>
1 parent b94ef61 commit ab30f27

File tree

11 files changed

+24
-13
lines changed

11 files changed

+24
-13
lines changed

ext/random/tests/02_engine/all_serialize_user.phpt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ final class CountingEngine32 implements Engine
2121
$engines = [];
2222
$engines[] = new CountingEngine32();
2323
$engines[] = new TestShaEngine();
24+
$iterations = getenv("SKIP_SLOW_TESTS") ? 3_000 : 10_000;
2425

2526
foreach ($engines as $engine) {
2627
echo $engine::class, PHP_EOL;
@@ -31,7 +32,7 @@ foreach ($engines as $engine) {
3132

3233
$engine2 = unserialize(serialize($engine));
3334

34-
for ($i = 0; $i < 10_000; $i++) {
35+
for ($i = 0; $i < $iterations; $i++) {
3536
if ($engine->generate() !== $engine2->generate()) {
3637
die("failure: state differs at {$i}");
3738
}

ext/random/tests/03_randomizer/compatibility_user.phpt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,14 +16,15 @@ $engines = [];
1616
$engines[] = new Mt19937(1234);
1717
$engines[] = new PcgOneseq128XslRr64(1234);
1818
$engines[] = new Xoshiro256StarStar(1234);
19+
$iterations = getenv("SKIP_SLOW_TESTS") ? 3_000 : 10_000;
1920

2021
foreach ($engines as $engine) {
2122
echo $engine::class, PHP_EOL;
2223

2324
$native_randomizer = new Randomizer(clone $engine);
2425
$user_randomizer = new Randomizer(new TestWrapperEngine(clone $engine));
2526

26-
for ($i = 0; $i < 10_000; $i++) {
27+
for ($i = 0; $i < $iterations; $i++) {
2728
$native = $native_randomizer->getInt(0, $i);
2829
$user = $user_randomizer->getInt(0, $i);
2930

ext/random/tests/03_randomizer/methods/getBytes.phpt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,14 +20,15 @@ $engines[] = new PcgOneseq128XslRr64();
2020
$engines[] = new Xoshiro256StarStar();
2121
$engines[] = new Secure();
2222
$engines[] = new TestShaEngine();
23+
// Using 10_000 is very slow.
24+
$iterations = getenv("SKIP_SLOW_TESTS") ? 100 : 1_000;
2325

2426
foreach ($engines as $engine) {
2527
echo $engine::class, PHP_EOL;
2628

2729
$randomizer = new Randomizer($engine);
2830

29-
// Using 10_000 is very slow.
30-
for ($i = 1; $i < 1_000; $i++) {
31+
for ($i = 1; $i < $iterations; $i++) {
3132
if (\strlen($randomizer->getBytes($i)) !== $i) {
3233
die("failure: incorrect string length at {$i}");
3334
}

ext/random/tests/03_randomizer/methods/getBytesFromString.phpt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ $engines[] = new PcgOneseq128XslRr64();
2020
$engines[] = new Xoshiro256StarStar();
2121
$engines[] = new Secure();
2222
$engines[] = new TestShaEngine();
23+
$iterations = getenv("SKIP_SLOW_TESTS") ? 10 : 250;
2324

2425
foreach ($engines as $engine) {
2526
echo $engine::class, PHP_EOL;
@@ -28,7 +29,7 @@ foreach ($engines as $engine) {
2829
var_dump($randomizer->getBytesFromString('a', 10));
2930
var_dump($randomizer->getBytesFromString(str_repeat('a', 256), 5));
3031

31-
for ($i = 1; $i < 250; $i++) {
32+
for ($i = 1; $i < $iterations; $i++) {
3233
$output = $randomizer->getBytesFromString(str_repeat('ab', $i), 500);
3334

3435
// This check can theoretically fail with a chance of 0.5**500.

ext/random/tests/03_randomizer/methods/getFloat.phpt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,14 +21,15 @@ $engines[] = new PcgOneseq128XslRr64();
2121
$engines[] = new Xoshiro256StarStar();
2222
$engines[] = new Secure();
2323
$engines[] = new TestShaEngine();
24+
$max = getenv("SKIP_SLOW_TESTS") ? 3_000.0 : 10_000.0;
2425

2526
foreach ($engines as $engine) {
2627
echo $engine::class, PHP_EOL;
2728

2829
$randomizer = new Randomizer($engine);
2930

3031
// Basic range test.
31-
for ($i = 0.0; $i < 10_000.0; $i += 1.2345) {
32+
for ($i = 0.0; $i < $max; $i += 1.2345) {
3233
$result = $randomizer->getFloat(-$i, $i, IntervalBoundary::ClosedClosed);
3334

3435
if ($result > $i || $result < -$i) {

ext/random/tests/03_randomizer/methods/getInt.phpt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,14 +20,15 @@ $engines[] = new PcgOneseq128XslRr64();
2020
$engines[] = new Xoshiro256StarStar();
2121
$engines[] = new Secure();
2222
$engines[] = new TestShaEngine();
23+
$iterations = getenv("SKIP_SLOW_TESTS") ? 3_000 : 10_000;
2324

2425
foreach ($engines as $engine) {
2526
echo $engine::class, PHP_EOL;
2627

2728
$randomizer = new Randomizer($engine);
2829

2930
// Basic range test.
30-
for ($i = 0; $i < 10_000; $i++) {
31+
for ($i = 0; $i < $iterations; $i++) {
3132
$result = $randomizer->getInt(-$i, $i);
3233

3334
if ($result > $i || $result < -$i) {
@@ -36,7 +37,7 @@ foreach ($engines as $engine) {
3637
}
3738

3839
// Test that extreme ranges do not throw.
39-
for ($i = 0; $i < 10_000; $i++) {
40+
for ($i = 0; $i < $iterations; $i++) {
4041
$randomizer->getInt(PHP_INT_MIN, PHP_INT_MAX);
4142
}
4243
}

ext/random/tests/03_randomizer/methods/nextFloat.phpt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,14 +20,15 @@ $engines[] = new PcgOneseq128XslRr64();
2020
$engines[] = new Xoshiro256StarStar();
2121
$engines[] = new Secure();
2222
$engines[] = new TestShaEngine();
23+
$iterations = getenv("SKIP_SLOW_TESTS") ? 3_000 : 10_000;
2324

2425
foreach ($engines as $engine) {
2526
echo $engine::class, PHP_EOL;
2627

2728
$randomizer = new Randomizer($engine);
2829

2930
// Basic range test.
30-
for ($i = 0; $i < 10_000; $i++) {
31+
for ($i = 0; $i < $iterations; $i++) {
3132
$result = $randomizer->nextFloat();
3233

3334
if ($result >= 1 || $result < 0) {

ext/random/tests/03_randomizer/methods/pickArrayKeys.phpt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ $engines[] = new PcgOneseq128XslRr64();
2020
$engines[] = new Xoshiro256StarStar();
2121
$engines[] = new Secure();
2222
$engines[] = new TestShaEngine();
23+
$iterations = getenv("SKIP_SLOW_TESTS") ? 10 : 100;
2324

2425
$array1 = []; // list
2526
$array2 = []; // associative array with only strings
@@ -38,7 +39,7 @@ foreach ($engines as $engine) {
3839

3940
$randomizer = new Randomizer($engine);
4041

41-
for ($i = 1; $i < 100; $i++) {
42+
for ($i = 1; $i < $iterations; $i++) {
4243
$result = $randomizer->pickArrayKeys($array1, $i);
4344

4445
if (array_unique($result) !== $result) {

ext/random/tests/03_randomizer/methods/shuffleArray.phpt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,14 +20,15 @@ $engines[] = new PcgOneseq128XslRr64();
2020
$engines[] = new Xoshiro256StarStar();
2121
$engines[] = new Secure();
2222
$engines[] = new TestShaEngine();
23+
$length = getenv("SKIP_SLOW_TESTS") ? 1_000 : 5_000;
2324

2425
foreach ($engines as $engine) {
2526
echo $engine::class, PHP_EOL;
2627

2728
$randomizer = new Randomizer($engine);
2829

2930
// This test is slow, test all numbers smaller than 50 and then in steps of 677 (which is prime).
30-
for ($i = 1; $i < 5_000; $i += ($i < 50 ? 1 : 677)) {
31+
for ($i = 1; $i < $length; $i += ($i < 50 ? 1 : 677)) {
3132
$array = range(1, $i);
3233

3334
$result = $randomizer->shuffleArray($array);

ext/random/tests/03_randomizer/methods/shuffleBytes.phpt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ $engines[] = new PcgOneseq128XslRr64();
2020
$engines[] = new Xoshiro256StarStar();
2121
$engines[] = new Secure();
2222
$engines[] = new TestShaEngine();
23+
$length = getenv("SKIP_SLOW_TESTS") ? 1_000 : 5_000;
2324

2425
function sort_bytes(string $bytes): string
2526
{
@@ -34,7 +35,7 @@ foreach ($engines as $engine) {
3435
$randomizer = new Randomizer($engine);
3536

3637
// This test is slow, test all numbers smaller than 50 and then in steps of 677 (which is prime).
37-
for ($i = 1; $i < 5_000; $i += ($i < 50 ? 1 : 677)) {
38+
for ($i = 1; $i < $length; $i += ($i < 50 ? 1 : 677)) {
3839
$bytes = sort_bytes(random_bytes($i));
3940

4041
$result = $randomizer->shuffleBytes($bytes);

ext/random/tests/03_randomizer/serialize.phpt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ $engines[] = new Mt19937(1234, MT_RAND_PHP);
1818
$engines[] = new PcgOneseq128XslRr64(1234);
1919
$engines[] = new Xoshiro256StarStar(1234);
2020
$engines[] = new TestShaEngine("1234");
21+
$iterations = getenv("SKIP_SLOW_TESTS") ? 3_000 : 10_000;
2122

2223
foreach ($engines as $engine) {
2324
echo $engine::class, PHP_EOL;
@@ -30,7 +31,7 @@ foreach ($engines as $engine) {
3031

3132
$randomizer2 = unserialize(serialize($randomizer));
3233

33-
for ($i = 0; $i < 10_000; $i++) {
34+
for ($i = 0; $i < $iterations; $i++) {
3435
if ($randomizer->getInt(0, $i) !== $randomizer2->getInt(0, $i)) {
3536
$className = $engine::class;
3637

0 commit comments

Comments
 (0)