Added field for manual/scheduled tests

This commit is contained in:
Henry Whitaker
2020-07-03 10:42:18 +01:00
parent 04d24098ef
commit b1f00d2aa1
10 changed files with 58 additions and 9 deletions

View File

@@ -1,6 +1,6 @@
# Speedtest Tracker
[![Docker pulls](https://img.shields.io/docker/pulls/henrywhitaker3/speedtest-tracker?style=flat-square)](https://hub.docker.com/r/henrywhitaker3/speedtest-tracker) [![last_commit](https://img.shields.io/github/last-commit/henrywhitaker3/Speedtest-Tracker?style=flat-square)](https://github.com/henrywhitaker3/Speedtest-Tracker/commits) [![issues](https://img.shields.io/github/issues/henrywhitaker3/Speedtest-Tracker?style=flat-square)](https://github.com/henrywhitaker3/Speedtest-Tracker/issues) [![commit_freq](https://img.shields.io/github/commit-activity/m/henrywhitaker3/Speedtest-Tracker?style=flat-square)](https://github.com/henrywhitaker3/Speedtest-Tracker/commits) ![version](https://img.shields.io/badge/version-v1.7.1-success?style=flat-square) [![license](https://img.shields.io/github/license/henrywhitaker3/Speedtest-Tracker?style=flat-square)](https://github.com/henrywhitaker3/Speedtest-Tracker/blob/master/LICENSE)
[![Docker pulls](https://img.shields.io/docker/pulls/henrywhitaker3/speedtest-tracker?style=flat-square)](https://hub.docker.com/r/henrywhitaker3/speedtest-tracker) [![last_commit](https://img.shields.io/github/last-commit/henrywhitaker3/Speedtest-Tracker?style=flat-square)](https://github.com/henrywhitaker3/Speedtest-Tracker/commits) [![issues](https://img.shields.io/github/issues/henrywhitaker3/Speedtest-Tracker?style=flat-square)](https://github.com/henrywhitaker3/Speedtest-Tracker/issues) [![commit_freq](https://img.shields.io/github/commit-activity/m/henrywhitaker3/Speedtest-Tracker?style=flat-square)](https://github.com/henrywhitaker3/Speedtest-Tracker/commits) ![version](https://img.shields.io/badge/version-v1.7.2-success?style=flat-square) [![license](https://img.shields.io/github/license/henrywhitaker3/Speedtest-Tracker?style=flat-square)](https://github.com/henrywhitaker3/Speedtest-Tracker/blob/master/LICENSE)
This program runs a speedtest check every hour and graphs the results. The back-end is written in [Laravel](https://laravel.com/) and the front-end uses [React](https://reactjs.org/). It uses the [Ookla's speedtest cli](https://www.speedtest.net/apps/cli) package to get the data and uses [Chart.js](https://www.chartjs.org/) to plot the results.

View File

@@ -40,7 +40,7 @@ class SpeedtestCommand extends Command
{
$this->info('Running speedtest, this might take a while...');
$results = SpeedtestHelper::runSpeedtest();
$results = SpeedtestHelper::runSpeedtest(false, false);
if(!is_object($results)) {
$this->error('Something went wrong running the speedtest.');

View File

@@ -17,7 +17,7 @@ class SpeedtestHelper {
* @param boolean|string $output If false, new speedtest runs. If anything else, will try to parse as JSON for speedtest results.
* @return \App\Speedtest|boolean
*/
public static function runSpeedtest($output = false)
public static function runSpeedtest($output = false, $scheduled = true)
{
if($output === false) {
$output = SpeedtestHelper::output();
@@ -38,6 +38,7 @@ class SpeedtestHelper {
'server_name' => $output['server']['name'],
'server_host' => $output['server']['host'] . ':' . $output['server']['port'],
'url' => $output['result']['url'],
'scheduled' => $scheduled
]);
} catch(JsonException $e) {
Log::error('Failed to parse speedtest JSON');

View File

@@ -98,7 +98,7 @@ class SpeedtestController extends Controller
public function run()
{
try {
$data = SpeedtestJob::dispatch();
$data = SpeedtestJob::dispatch(false);
return response()->json([
'method' => 'run speedtest',
'data' => 'a new speedtest has been added to the queue'

View File

@@ -14,14 +14,16 @@ class SpeedtestJob implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
private $scheduled;
/**
* Create a new job instance.
*
* @return void
*/
public function __construct()
public function __construct($scheduled = true)
{
//
$this->scheduled = $scheduled;
}
/**
@@ -32,7 +34,7 @@ class SpeedtestJob implements ShouldQueue
public function handle()
{
$output = SpeedtestHelper::output();
$speedtest = SpeedtestHelper::runSpeedtest($output);
$speedtest = SpeedtestHelper::runSpeedtest($output, $this->scheduled);
event(new SpeedtestCompleteEvent($speedtest));
return $speedtest;
}

View File

@@ -20,6 +20,7 @@ class Speedtest extends Model
'server_name',
'server_host',
'url',
'scheduled',
];
protected $table = 'speedtests';

View File

@@ -1,4 +1,14 @@
{
"1.7.2": [
{
"description": "Updated UI for speedtest info",
"link": ""
},
{
"description": "Added field to track manual vs scheduled tests",
"link": ""
}
],
"1.7.1": [
{
"description": "Updated dependencies",

View File

@@ -7,7 +7,7 @@ return [
|--------------------------------------------------------------------------
*/
'version' => '1.7.1',
'version' => '1.7.2',
/*
|--------------------------------------------------------------------------

View File

@@ -0,0 +1,32 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class UpdateSpeedtestsAddManualColumn extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table('speedtests', function($table) {
$table->boolean('scheduled')->nullable();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('speedtests', function($table) {
$table->dropColumn('scheduled');
});
}
}

View File

@@ -47,7 +47,10 @@ export default class TableRow extends Component {
<p>Server ID: {e.server_id}</p>
<p>Name: {e.server_name}</p>
<p>Host: {e.server_host}</p>
<a href={e.url} target="_blank" rel="noopener noreferer">Speedtest.net</a>
<p>URL: <a href={e.url} target="_blank" rel="noopener noreferer">Speedtest.net</a></p>
{e.scheduled != undefined &&
<p>Type: {e.scheduled == true ? 'scheduled' : 'manual'}</p>
}
</Modal.Body>
</Modal>
</td>