Skip to content
Snippets Groups Projects
SensorsTest.php 4.25 KiB
<?php

namespace Tests\Unit;

use App\Server;
use App\Status;

use App\Sensor\Disks;
use App\Sensor\CPUtemperature;
use App\Sensor\Ifconfig;
use App\Sensor\Updates;
use App\Sensor\Netstat;
use App\Sensor\Temper;

use Tests\TestCase;

/**
 * Description of SensorsTest
 *
 * @author tibo
 */
class SensorsTest extends TestCase
{
    /**
     * @group ifconfig
     * @group sensors
     */
    public function testIfconfig()
    {
        $string = file_get_contents(__DIR__ . "/ifconfig");
        $sensor = new Ifconfig();
        $interfaces = $sensor->parseIfconfig($string);
        $this->assertEquals(2, count($interfaces));
        $this->assertEquals("enp0s31f6", $interfaces[0]->name);
        $this->assertEquals("10.67.1.32", $interfaces[1]->address);
        $this->assertEquals(1074590056, $interfaces[1]->rx);
        $this->assertEquals(2074977132, $interfaces[1]->tx);
    }

    /**
     * Test parsing of ifconfig string from a ubuntu 18.04 server
     *
     * @group ifconfig
     * @group sensors
     */
    public function testIfconfig1804()
    {
        $string = file_get_contents(__DIR__ . "/ifconfig1804");
        $sensor = new Ifconfig();
        $interfaces = $sensor->parseIfconfig($string);
        $this->assertEquals(2, count($interfaces));
        $this->assertEquals("eno1", $interfaces[0]->name);
        $this->assertEquals("172.20.0.8", $interfaces[1]->address);
        $this->assertEquals(185252610, $interfaces[1]->rx);
        $this->assertEquals(266912412, $interfaces[1]->tx);
    }

    /**
     * @group Disks
     */

    public function testDisksSensor()
    {
        $string = file_get_contents(__DIR__ . "/df");
        $sensor = new Disks();
        $disks = $sensor->parse($string);
        $this->assertEquals(2, count($disks));
        $this->assertEquals("/dev/sda1", $disks[0]->filesystem);
        $this->assertEquals(1128926648, $disks[0]->blocks);
    }

    public function testNetstatListening()
    {
        $string = file_get_contents(__DIR__ . "/netstat-tcp");
        $sensor = new \App\Sensor\ListeningPorts();
        $ports = $sensor->parse($string);
        $this->assertEquals(4, count($ports));
        $this->assertEquals(111, $ports[0]->port);
        $this->assertEquals("0.0.0.0", $ports[0]->bind);
    }

    public function testSsacli()
    {
        $string = file_get_contents(__DIR__ . "/ssacli");
        $sensor = new \App\Sensor\Ssacli();
        $disks = $sensor->parse($string);
        $this->assertEquals("OK", $disks[0]->status);
    }

    public function testPerccli()
    {
        $string = file_get_contents(__DIR__ . "/perccli");
        $sensor = new \App\Sensor\Perccli();
        $disks = $sensor->parse($string);
        
        $this->assertEquals(Status::ok(), $disks[0]->status);
        $this->assertEquals("SSD", $disks[0]->type);
        $this->assertEquals("446.625 GB", $disks[0]->size);
    }

    public function testUpdates()
    {
        $sensor = new Updates();

        $string1 = "6 packages can be updated.
2 updates are security updates.";
        $status = $sensor->parse($string1);
        $this->assertEquals(2, $status["security"]);

        $string2 = "1 package can be updated.
1 update is a security update.
";
        $status2 = $sensor->parse($string2);
        $this->assertEquals(1, $status2["security"]);
    }
    
    
    /**
     * @group netstat
     */
    public function testNetstat()
    {
        $string = file_get_contents(__DIR__ . "/netstat");
        $server = new Server();
        $netstat = new Netstat($server);
        $this->assertEquals(24004, $netstat->parse($string)->tcp_segments_retransmitted);
    }
    
    
    /**
     * @group CPUtemp
     */
    public function testCPUtemp()
    {
        $string = file_get_contents(__DIR__ . "/sensors");
        $sensor = new CPUtemperature();
        
        $cpus = $sensor->parse($string);
        $this->assertEquals(4, count($cpus[0]->cores));
        $this->assertEquals("Core 3", $cpus[0]->cores[3]->name);
        $this->assertEquals("34.0", $cpus[0]->cores[3]->value);
    }
    /**
     * @group USBtemp
     */
    public function testTEMPer()
    {
        $string = file_get_contents(__DIR__ . "/TEMPer");
        
        $temper = new Temper();
        $t = $temper->convert($string);
        $this->assertEquals(23.75, $t);
    }
}