Skip to content

Commit fce6063

Browse files
committed
Cleanup memory leak test
1 parent ad46c94 commit fce6063

File tree

1 file changed

+46
-45
lines changed

1 file changed

+46
-45
lines changed

test/Driver/DriverTest.php

Lines changed: 46 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -326,7 +326,7 @@ public function testDisableWithConsecutiveCancel(string $type, array $args): voi
326326

327327
$invoked = false;
328328
$this->start(function (Driver $loop) use (&$invoked, $type, $args): void {
329-
$func = [$loop, $type];
329+
$func = $loop->{$type}(...);
330330
$callbackId = $func(...$args);
331331
$loop->disable($callbackId);
332332
$loop->defer(function () use (&$invoked, $loop, $callbackId): void {
@@ -347,7 +347,7 @@ public function testCallbackReferenceInfo(string $type, array $args): void
347347

348348
$loop = $this->loop;
349349

350-
$func = [$loop, $type];
350+
$func = $loop->{$type}(...);
351351
if (\str_starts_with($type, "on")) {
352352
$type = "on_" . \lcfirst(\substr($type, 2));
353353
}
@@ -430,7 +430,7 @@ public function testCallbackRegistrationAndCancellationInfo(string $type, array
430430

431431
$loop = $this->loop;
432432

433-
$func = [$loop, $type];
433+
$func = $loop->{$type}(...);
434434
if (\str_starts_with($type, "on")) {
435435
$type = "on_" . \lcfirst(\substr($type, 2));
436436
}
@@ -472,32 +472,37 @@ public function testNoMemoryLeak(string $type, array $args): void
472472
self::markTestSkipped('Skip on Windows for now, investigate');
473473
}
474474

475-
$runs = 2000;
476-
477475
if ($type === "onSignal") {
478476
$this->checkForSignalCapability();
479477
}
480478

481-
$this->start(function (Driver $loop) use ($type, $args, $runs) {
479+
$this->start(function (Driver $loop) use ($type, $args): void {
480+
$runs = 2000;
481+
482482
$initialMem = \memory_get_usage();
483483
$cb = static function ($runs) use ($loop, $type, $args): void {
484-
$func = [$loop, $type];
484+
$func = $loop->{$type}(...);
485485
for ($callbacks = [], $i = 0; $i < $runs; $i++) {
486486
$callbacks[] = $func(...$args);
487487
}
488+
488489
foreach ($callbacks as $callback) {
489490
$loop->cancel($callback);
490491
}
492+
491493
for ($callbacks = [], $i = 0; $i < $runs; $i++) {
492494
$callbacks[] = $func(...$args);
493495
}
496+
494497
foreach ($callbacks as $callback) {
495498
$loop->disable($callback);
496499
$loop->cancel($callback);
497500
}
501+
498502
for ($callbacks = [], $i = 0; $i < $runs; $i++) {
499503
$callbacks[] = $func(...$args);
500504
}
505+
501506
if ($type === "repeat") {
502507
$loop->delay(0.007, function () use ($loop, $callbacks): void {
503508
foreach ($callbacks as $callback) {
@@ -511,33 +516,29 @@ public function testNoMemoryLeak(string $type, array $args): void
511516
}
512517
});
513518
}
519+
514520
$loop->run();
515-
if ($type === "defer") {
516-
$loop->defer($fn = static function () use (&$fn, $loop, $runs): void {
521+
522+
match ($type) {
523+
"defer" => $loop->defer($fn = static function () use (&$fn, $loop, $runs): void {
517524
static $i = null;
518525

519526
$i = $i ?? $runs;
520527

521528
if ($i--) {
522529
$loop->defer($fn);
523530
}
524-
});
525-
$loop->run();
526-
}
527-
if ($type === "delay") {
528-
$loop->delay(0, $fn = static function () use (&$fn, $loop, $runs): void {
531+
}),
532+
"delay" => $loop->delay(0, $fn = static function () use (&$fn, $loop, $runs): void {
529533
static $i = null;
530534

531535
$i = $i ?? $runs;
532536

533537
if ($i--) {
534538
$loop->delay(0, $fn);
535539
}
536-
});
537-
$loop->run();
538-
}
539-
if ($type === "repeat") {
540-
$loop->repeat(0, $fn = static function ($callbackId) use (&$fn, $loop, $runs): void {
540+
}),
541+
"repeat" => $loop->repeat(0, $fn = static function ($callbackId) use (&$fn, $loop, $runs): void {
541542
static $i = null;
542543

543544
$i = $i ?? $runs;
@@ -546,11 +547,8 @@ public function testNoMemoryLeak(string $type, array $args): void
546547
if ($i--) {
547548
$loop->repeat(0, $fn);
548549
}
549-
});
550-
$loop->run();
551-
}
552-
if ($type === "onWritable") {
553-
$loop->defer(static function ($callbackId) use ($loop, $runs): void {
550+
}),
551+
"onReadable", "onWritable" => $loop->defer(static function ($callbackId) use ($loop, $runs): void {
554552
$fn = static function ($callbackId, $socket) use (&$fn, $loop, $runs): void {
555553
static $i = null;
556554

@@ -577,35 +575,38 @@ public function testNoMemoryLeak(string $type, array $args): void
577575
};
578576

579577
$fn($callbackId, null);
580-
});
581-
$loop->run();
582-
}
583-
if ($type === "onSignal") {
584-
$sendSignal = static function (): void {
585-
\posix_kill(\getmypid(), \SIGUSR1);
586-
};
587-
$loop->onSignal(
588-
\SIGUSR1,
589-
$fn = static function ($callbackId) use (&$fn, $loop, $sendSignal, $runs): void {
590-
static $i = null;
578+
}),
579+
"onSignal" => $loop->defer(function () use ($loop, $runs): void {
580+
$sendSignal = static function (): void {
581+
\posix_kill(\getmypid(), \SIGUSR1);
582+
};
583+
$loop->onSignal(
584+
\SIGUSR1,
585+
$fn = static function ($callbackId) use (&$fn, $loop, $sendSignal, $runs): void {
586+
static $i = null;
591587

592-
$i = $i ?? $runs;
588+
$i = $i ?? $runs;
593589

594-
if ($i--) {
595-
$loop->onSignal(\SIGUSR1, $fn);
596-
$loop->delay(0, $sendSignal);
590+
if ($i--) {
591+
$loop->onSignal(\SIGUSR1, $fn);
592+
$loop->delay(0, $sendSignal);
593+
}
594+
$loop->cancel($callbackId);
597595
}
598-
$loop->cancel($callbackId);
599-
}
600-
);
601-
$loop->delay(0, $sendSignal);
602-
$loop->run();
603-
}
596+
);
597+
$loop->delay(0, $sendSignal);
598+
}),
599+
};
600+
601+
$loop->run();
604602
};
603+
605604
$closureMem = \memory_get_usage() - $initialMem;
606605
$cb($runs); /* just to set up eventual structures inside loop without counting towards memory comparison */
606+
607607
\gc_collect_cycles();
608608
$initialMem = \memory_get_usage() - $closureMem;
609+
609610
$cb($runs);
610611
unset($cb);
611612

0 commit comments

Comments
 (0)