mirror of
				https://github.com/Icinga/icingaweb2.git
				synced 2025-11-04 13:14:41 +01:00 
			
		
		
		
	Rename docs, tests and test/ui to doc, test and test/frontend to suite skeleton definition. refs #4212
		
			
				
	
	
		
			234 lines
		
	
	
		
			6.1 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			234 lines
		
	
	
		
			6.1 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable File
		
	
	
	
	
<?php
 | 
						|
 | 
						|
namespace Tests\Icinga\Protocol\Statusdat;
 | 
						|
require_once("../../library/Icinga/Protocol/Statusdat/Exception/ParsingException.php");
 | 
						|
require_once("../../library/Icinga/Exception/ProgrammingError.php");
 | 
						|
require_once("../../library/Icinga/Protocol/Statusdat/Parser.php");
 | 
						|
use Icinga\Protocol\Statusdat\Parser;
 | 
						|
/**
 | 
						|
*
 | 
						|
* Test class for Parser 
 | 
						|
* Created Wed, 16 Jan 2013 15:15:16 +0000 
 | 
						|
*
 | 
						|
**/
 | 
						|
class ParserTest extends \PHPUnit_Framework_TestCase
 | 
						|
{
 | 
						|
 | 
						|
    private function getStringAsFileHandle($string)
 | 
						|
    {
 | 
						|
        $maxsize = strlen($string)*2;
 | 
						|
        $fhandle = fopen("php://memory", 'r+');
 | 
						|
        fputs($fhandle,$string);
 | 
						|
        rewind($fhandle);
 | 
						|
        return $fhandle;
 | 
						|
    }
 | 
						|
 | 
						|
    public function testSimpleObjectCacheParsing()
 | 
						|
    {
 | 
						|
        $fd = $this->getStringAsFileHandle("
 | 
						|
define hostescalation {
 | 
						|
    host_name\ttest
 | 
						|
    key\tvalue
 | 
						|
}
 | 
						|
 | 
						|
define host {
 | 
						|
    host_name\ttest
 | 
						|
    alias\ttest123
 | 
						|
}
 | 
						|
 | 
						|
define host {
 | 
						|
    host_name\ttest2
 | 
						|
    alias\ttest123
 | 
						|
}
 | 
						|
 | 
						|
define service {
 | 
						|
    host_name\ttest
 | 
						|
    service_description\tCurrent Users
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
define servicegroup {
 | 
						|
    servicegroup_name\tgroup
 | 
						|
    members\ttest,Current Users
 | 
						|
}
 | 
						|
        ");
 | 
						|
        $testParser = new Parser($fd);
 | 
						|
        $testParser->parseObjectsFile();
 | 
						|
        $state = $testParser->getRuntimeState();
 | 
						|
        $this->assertTrue(is_array($state));
 | 
						|
        $this->assertTrue(isset($state["host"]));
 | 
						|
        $this->assertTrue(isset($state["service"]));
 | 
						|
        $this->assertEquals("test",$state["host"]["test"]->host_name);
 | 
						|
        $this->assertTrue(is_array($state["host"]["test"]->escalation));
 | 
						|
        $this->assertTrue(isset($state["service"]["test;Current Users"]->group));
 | 
						|
        $this->assertTrue(is_array($state["service"]["test;Current Users"]->group));
 | 
						|
        $this->assertCount(1,$state["service"]["test;Current Users"]->group);
 | 
						|
        $this->assertEquals("group",$state["service"]["test;Current Users"]->group[0]);
 | 
						|
        $this->assertEquals("value",$state["host"]["test"]->escalation[0]->key);
 | 
						|
        $this->assertEquals("test2",$state["host"]["test2"]->host_name);
 | 
						|
    }
 | 
						|
 | 
						|
    public function testRuntimeParsing()
 | 
						|
    {
 | 
						|
        $baseState = array(
 | 
						|
            "host" => array(
 | 
						|
                "test" => (object) array(
 | 
						|
                    "host_name" => "test"
 | 
						|
                ),
 | 
						|
                "test2" => (object) array(
 | 
						|
                    "host_name" => "test2"
 | 
						|
                )
 | 
						|
            ),
 | 
						|
            "service" => array(
 | 
						|
                "test;Current Users" => (object) array(
 | 
						|
                    "host_name" => "test",
 | 
						|
                    "service_description" => "Current Users"
 | 
						|
                )
 | 
						|
            )
 | 
						|
        );
 | 
						|
        $fd = $this->getStringAsFileHandle(self::RUNTIME_STATE1);
 | 
						|
 | 
						|
        $testParser = new Parser($fd, $baseState);
 | 
						|
        $testParser->parseRuntimeState();
 | 
						|
        $state = $testParser->getRuntimeState();
 | 
						|
 | 
						|
        $this->assertTrue(isset($state["host"]["test"]->status));
 | 
						|
        $this->assertEquals(3,$state["host"]["test"]->status->current_state);
 | 
						|
 | 
						|
        $this->assertTrue(is_array($state["host"]["test"]->comment));
 | 
						|
        $this->assertEquals(2,count($state["host"]["test"]->comment));
 | 
						|
    }
 | 
						|
 | 
						|
    public function testOverwriteRuntime()
 | 
						|
    {
 | 
						|
        $baseState = array(
 | 
						|
            "host" => array(
 | 
						|
                "test" => (object) array(
 | 
						|
                    "host_name" => "test"
 | 
						|
                ),
 | 
						|
                "test2" => (object) array(
 | 
						|
                    "host_name" => "test2"
 | 
						|
                )
 | 
						|
            ),
 | 
						|
            "service" => array(
 | 
						|
                "test;Current Users" => (object) array(
 | 
						|
                    "host_name" => "test",
 | 
						|
                    "service_description" => "Current Users"
 | 
						|
                )
 | 
						|
            )
 | 
						|
        );
 | 
						|
        $fd = $this->getStringAsFileHandle(self::RUNTIME_STATE1);
 | 
						|
 | 
						|
 | 
						|
        $testParser = new Parser($fd, $baseState);
 | 
						|
        $testParser->parseRuntimeState();
 | 
						|
        $state = $testParser->getRuntimeState();
 | 
						|
 | 
						|
        $this->assertTrue(isset($state["host"]["test"]->status));
 | 
						|
        $this->assertEquals(3,$state["host"]["test"]->status->current_state);
 | 
						|
 | 
						|
        $this->assertTrue(is_array($state["host"]["test"]->comment));
 | 
						|
        $this->assertEquals(2,count($state["host"]["test"]->comment));
 | 
						|
 | 
						|
        $fd = $this->getStringAsFileHandle(self::RUNTIME_STATE2);
 | 
						|
        $testParser->parseRuntimeState($fd);
 | 
						|
        $state = $testParser->getRuntimeState();
 | 
						|
 | 
						|
        $this->assertTrue(isset($state["host"]["test"]->status));
 | 
						|
        $this->assertEquals(2,$state["host"]["test"]->status->current_state);
 | 
						|
        $this->assertTrue(is_array($state["host"]["test"]->comment));
 | 
						|
        $this->assertEquals(3,count($state["host"]["test"]->comment));
 | 
						|
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * Assert no errors occuring
 | 
						|
     */
 | 
						|
    public function testRuntimeParsingForBigFile()
 | 
						|
    {
 | 
						|
        $this->markTestSkipped('Skipped slow tests');
 | 
						|
        $objects = fopen("res/status/objects.cache","r");
 | 
						|
        $status = fopen("res/status/status.big.dat","r");
 | 
						|
        $testParser = new Parser($objects);
 | 
						|
        $testParser->parseObjectsFile();
 | 
						|
        $testParser->parseRuntimeState($status);
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * Assert no errors occuring
 | 
						|
     */
 | 
						|
    public function testRuntimeParsingForIcinga2()
 | 
						|
    {
 | 
						|
        $this->markTestSkipped('Skipped slow tests');
 | 
						|
        $objects = fopen("res/status/objects.icinga2.cache","r");
 | 
						|
        $status = fopen("res/status/status.icinga2.dat","r");
 | 
						|
        $testParser = new Parser($objects);
 | 
						|
        $testParser->parseObjectsFile();
 | 
						|
        $testParser->parseRuntimeState($status);
 | 
						|
    }
 | 
						|
 | 
						|
    const RUNTIME_STATE1 = "
 | 
						|
 | 
						|
hoststatus {
 | 
						|
    host_name=test
 | 
						|
    current_state=3
 | 
						|
    test=test123
 | 
						|
}
 | 
						|
 | 
						|
hoststatus {
 | 
						|
    host_name=test2
 | 
						|
    current_state=3
 | 
						|
    test=test123
 | 
						|
}
 | 
						|
 | 
						|
servicestatus {
 | 
						|
    host_name=test
 | 
						|
    service_description=Current Users
 | 
						|
    current_state=3
 | 
						|
}
 | 
						|
 | 
						|
hostcomment {
 | 
						|
    host_name=test
 | 
						|
    key=value1
 | 
						|
}
 | 
						|
 | 
						|
hostcomment {
 | 
						|
    host_name=test
 | 
						|
    key=value2
 | 
						|
}";
 | 
						|
    const RUNTIME_STATE2 = "
 | 
						|
 | 
						|
hoststatus {
 | 
						|
    host_name=test
 | 
						|
    current_state=2
 | 
						|
    test=test123
 | 
						|
}
 | 
						|
 | 
						|
hoststatus {
 | 
						|
    host_name=test2
 | 
						|
    current_state=2
 | 
						|
    test=test123
 | 
						|
}
 | 
						|
 | 
						|
servicestatus {
 | 
						|
    host_name=test
 | 
						|
    service_description=Current Users
 | 
						|
    current_state=2
 | 
						|
}
 | 
						|
 | 
						|
hostcomment {
 | 
						|
    host_name=test
 | 
						|
    key=value14
 | 
						|
}
 | 
						|
hostcomment {
 | 
						|
    host_name=test
 | 
						|
    key=value15
 | 
						|
}
 | 
						|
 | 
						|
hostcomment {
 | 
						|
    host_name=test
 | 
						|
    key=value24
 | 
						|
}";
 | 
						|
 | 
						|
}
 |