Code Coverage
 
Classes and Traits
Functions and Methods
Lines
Total
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 3
CRAP
0.00% covered (danger)
0.00%
0 / 14
DockerTask
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 3
12
0.00% covered (danger)
0.00%
0 / 14
 getStatsAttribute
0.00% covered (danger)
0.00%
0 / 1
2
0.00% covered (danger)
0.00%
0 / 2
 getStatsAvgAttribute
0.00% covered (danger)
0.00%
0 / 1
2
0.00% covered (danger)
0.00%
0 / 11
 serializeDate
0.00% covered (danger)
0.00%
0 / 1
2
0.00% covered (danger)
0.00%
0 / 1
1<?php
2
3namespace Qmp\Laravel\DockerScale\Models;
4
5use Illuminate\Database\Eloquent\Model;
6use Illuminate\Support\Facades\Log;
7
8class DockerTask extends Model
9{
10    protected $connection = 'dockerScale';
11    protected $table = 'docker_tasks';
12    
13    protected $fillable = ['task_id', 'service', 'task', 'node', 'desired_state', 'current_state', 'error', ];
14
15    public function getStatsAttribute()
16    {
17        $stats = DockerStat::where('name', $this->service . '.' . $this->task . '.' . $this->task_id)->where('updated_at', '>=', (new \DateTime('-5 minutes'))->format('Y-m-d H:i:s'))->get();
18
19        return $stats;
20    }
21
22    public function getStatsAvgAttribute()
23    {
24        $stats = $this->stats->map(function($item) {
25            $item->cpu_perc = (float) $item->cpu_perc;
26            $item->memory_perc = (float) $item->memory_perc;
27            $item->pids = (float) $item->pids;
28
29            return $item;
30        });
31
32        $cpu = number_format($stats->average('cpu_perc'), 3);
33        $memory = number_format($stats->average('memory_perc'), 3);
34        $pids = (int) $stats->average('pids');
35        $stats = collect(compact('cpu', 'memory', 'pids'));
36
37        return $stats;
38    }
39
40    /**
41     * Prepare a date for array / JSON serialization.
42     *
43     * @param  \DateTimeInterface  $date
44     * @return string
45     */
46    protected function serializeDate(\DateTimeInterface $date)
47    {
48        return $date->format('Y-m-d H:i:s');
49    }
50
51}