Skip to content

Commit 590e782

Browse files
authored
[Feature] Refactored checking for scheduled tests (alexjustesen#626)
1 parent 7d720fb commit 590e782

File tree

2 files changed

+37
-49
lines changed

2 files changed

+37
-49
lines changed

app/Console/Kernel.php

Lines changed: 37 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,9 @@
22

33
namespace App\Console;
44

5-
use App\Jobs\SearchForSpeedtests;
5+
use App\Jobs\ExecSpeedtest;
6+
use App\Settings\GeneralSettings;
7+
use Cron\CronExpression;
68
use Illuminate\Console\Scheduling\Schedule;
79
use Illuminate\Foundation\Console\Kernel as ConsoleKernel;
810

@@ -13,11 +15,41 @@ class Kernel extends ConsoleKernel
1315
*/
1416
protected function schedule(Schedule $schedule): void
1517
{
16-
$schedule->job(new SearchForSpeedtests())->everyMinute();
18+
$settings = new GeneralSettings();
1719

18-
// $schedule->command('inspire')
19-
// ->everyMinute()
20-
// ->appendOutputTo(storage_path('logs/inspire.log'));
20+
/**
21+
* Check for speedtests that need to run.
22+
*/
23+
$schedule->call(function () use ($settings) {
24+
$ooklaServerId = null;
25+
26+
if (! blank($settings->speedtest_server)) {
27+
$item = array_rand($settings->speedtest_server);
28+
29+
$ooklaServerId = $settings->speedtest_server[$item];
30+
}
31+
32+
$speedtest = [
33+
'ookla_server_id' => $ooklaServerId,
34+
];
35+
36+
ExecSpeedtest::dispatch(
37+
speedtest: $speedtest,
38+
scheduled: true
39+
);
40+
})
41+
->everyMinute()
42+
->when(function () use ($settings) {
43+
// Don't run if the schedule is missing (aka disabled)
44+
if (blank($settings->speedtest_schedule)) {
45+
return false;
46+
}
47+
48+
// Evaluate if a run is needed based on the schedule
49+
$cron = new CronExpression($settings->speedtest_schedule);
50+
51+
return $cron->isDue();
52+
});
2153
}
2254

2355
/**

app/Jobs/SearchForSpeedtests.php

Lines changed: 0 additions & 44 deletions
This file was deleted.

0 commit comments

Comments
 (0)