Doc fixes

refs #4580
This commit is contained in:
Johannes Meyer 2013-09-06 09:25:56 +02:00 committed by Eric Lippmann
parent 8e60e2dcd9
commit 4964d84e78
1 changed files with 125 additions and 109 deletions

View File

@ -28,10 +28,11 @@
namespace Tests\Icinga\Protocol\Commandpipe;
require_once(__DIR__.'/CommandPipeLoader.php');
require_once(realpath(__DIR__ . '/CommandPipeLoader.php'));
CommandPipeLoader::requireLibrary();
use Zend_Config;
use PHPUnit_Framework_TestCase;
use Icinga\Protocol\Commandpipe\Comment;
use Icinga\Protocol\Commandpipe\Commandpipe as Commandpipe;
use Icinga\Protocol\Commandpipe\PropertyModifier as MONFLAG;
@ -44,8 +45,8 @@ use Icinga\Module\Monitoring\Command\DelayNotificationCommand;
use Icinga\Module\Monitoring\Command\ScheduleCheckCommand;
use Icinga\Module\Monitoring\Command\SubmitPassiveCheckresultCommand;
if (!defined("EXTCMD_TEST_BIN")) {
define("EXTCMD_TEST_BIN", "./bin/extcmd_test");
if (!defined('EXTCMD_TEST_BIN')) {
define('EXTCMD_TEST_BIN', './bin/extcmd_test');
}
/**
@ -53,10 +54,8 @@ if (!defined("EXTCMD_TEST_BIN")) {
*
* Uses the helper script extcmd_test, which is basically the extracted command
* parser functions from the icinga core
*
*
*/
class CommandPipeTest extends \PHPUnit_Framework_TestCase
class CommandPipeTest extends PHPUnit_Framework_TestCase
{
/**
* Return the path of the test pipe used in these tests
@ -65,7 +64,7 @@ class CommandPipeTest extends \PHPUnit_Framework_TestCase
*/
public function getPipeName()
{
return sys_get_temp_dir()."/icinga_test_pipe";
return sys_get_temp_dir() . '/icinga_test_pipe';
}
/**
@ -81,8 +80,8 @@ class CommandPipeTest extends \PHPUnit_Framework_TestCase
$cfg = new Zend_Config(
array(
"path" => $tmpPipe,
"name" => "test"
'path' => $tmpPipe,
'name' => 'test'
)
);
@ -90,7 +89,8 @@ class CommandPipeTest extends \PHPUnit_Framework_TestCase
}
/**
* Return a @see Icinga\Protocal\CommandPipe\CommandPipe instance set up for the local test pipe, but with ssh as the transport layer
* Return a @see Icinga\Protocal\CommandPipe\CommandPipe instance set up
* for the local test pipe, but with ssh as the transport layer
*
* @return Commandpipe
*/
@ -102,12 +102,12 @@ class CommandPipeTest extends \PHPUnit_Framework_TestCase
$cfg = new Zend_Config(
array(
"path" => $tmpPipe,
"user" => "vagrant",
"password" => "vagrant",
"host" => 'localhost',
"port" => 22,
"name" => "test"
'path' => $tmpPipe,
'user' => 'vagrant',
'password' => 'vagrant',
'host' => 'localhost',
'port' => 22,
'name' => 'test'
)
);
@ -116,11 +116,11 @@ class CommandPipeTest extends \PHPUnit_Framework_TestCase
/**
* Remove the testpipe if it exists
*
*/
private function cleanup() {
if(file_exists($this->getPipeName()))
if (file_exists($this->getPipeName())) {
unlink($this->getPipeName());
}
}
/**
@ -137,39 +137,43 @@ class CommandPipeTest extends \PHPUnit_Framework_TestCase
* (optional, leave it to just test for the return code)
* @param bool $command The commandstring to send (optional, leave it for using the command pipe content)
*/
private function assertCommandSucceeded($expectedString = false,$command = false) {
private function assertCommandSucceeded($expectedString = false, $command = false) {
$resultCode = null;
$resultArr = array();
$receivedCmd = exec(EXTCMD_TEST_BIN." ".escapeshellarg($command ? $command : file_get_contents($this->getPipeName())),$resultArr,$resultCode);
$this->assertEquals(0, $resultCode, "Submit of external command returned error : ".$receivedCmd);
if (!$expectedString)
return;
$this->assertEquals(
$expectedString,
$receivedCmd,
'Asserting that the command icinga received matches the command we send'
$receivedCmd = exec(EXTCMD_TEST_BIN . ' ' . escapeshellarg(
$command ? $command : file_get_contents($this->getPipeName())),
$resultArr,
$resultCode
);
$this->assertEquals(0, $resultCode, 'Submit of external command returned error : ' . $receivedCmd);
if ($expectedString) {
$this->assertEquals(
$expectedString,
$receivedCmd,
'Asserting that the command icinga received matches the command we send'
);
}
}
/**
* Test whether a single host acknowledgment is serialized and send correctly
*
* @throws \Exception|Exception
* @throws Exception
*/
public function testAcknowledgeSingleHost()
{
$pipe = $this->getLocalTestPipe();
try {
$ack = new AcknowledgeCommand(new Comment("I can", "sends teh ack"));
$ack = new AcknowledgeCommand(new Comment('I can', 'sends teh ack'));
$pipe->sendCommand(
$ack,
array(
(object) array(
"host_name" => "hostA"
'host_name' => 'hostA'
)
)
);
$this->assertCommandSucceeded("ACKNOWLEDGE_HOST_PROBLEM;hostA;0;0;0;I can;sends teh ack");
$this->assertCommandSucceeded('ACKNOWLEDGE_HOST_PROBLEM;hostA;0;0;0;I can;sends teh ack');
} catch(Exception $e) {
$this->cleanup();
throw $e;
@ -180,37 +184,37 @@ class CommandPipeTest extends \PHPUnit_Framework_TestCase
/**
* Test whether multiple host and service acknowledgments are serialized and send correctly
*
* @throws \Exception|Exception
* @throws Exception
*/
public function testAcknowledgeMultipleObjects()
{
$pipe = $this->getLocalTestPipe();
try {
$ack = new AcknowledgeCommand(new Comment("I can", "sends teh ack"));
$pipe->getTransport()->setOpenMode("a");
$ack = new AcknowledgeCommand(new Comment('I can', 'sends teh ack'));
$pipe->getTransport()->setOpenMode('a');
$pipe->sendCommand(
$ack,
array(
(object) array(
"host_name" => "hostA"
'host_name' => 'hostA'
),(object) array(
"host_name" => "hostB"
'host_name' => 'hostB'
),(object) array(
"host_name" => "hostC"
'host_name' => 'hostC'
),(object) array(
"host_name" => "hostC",
"service_description" => "svc"
'host_name' => 'hostC',
'service_description' => 'svc'
)
)
);
$result = explode("\n", file_get_contents($this->getPipeName()));
$this->assertCount(5, $result, "Asserting the correct number of commands being written to the command pipe");
$this->assertCount(5, $result, 'Asserting the correct number of commands being written to the command pipe');
$this->assertCommandSucceeded("ACKNOWLEDGE_HOST_PROBLEM;hostA;0;0;0;I can;sends teh ack", $result[0]);
$this->assertCommandSucceeded("ACKNOWLEDGE_HOST_PROBLEM;hostB;0;0;0;I can;sends teh ack", $result[1]);
$this->assertCommandSucceeded("ACKNOWLEDGE_HOST_PROBLEM;hostC;0;0;0;I can;sends teh ack", $result[2]);
$this->assertCommandSucceeded("ACKNOWLEDGE_SVC_PROBLEM;hostC;svc;0;0;0;I can;sends teh ack", $result[3]);
$this->assertCommandSucceeded('ACKNOWLEDGE_HOST_PROBLEM;hostA;0;0;0;I can;sends teh ack', $result[0]);
$this->assertCommandSucceeded('ACKNOWLEDGE_HOST_PROBLEM;hostB;0;0;0;I can;sends teh ack', $result[1]);
$this->assertCommandSucceeded('ACKNOWLEDGE_HOST_PROBLEM;hostC;0;0;0;I can;sends teh ack', $result[2]);
$this->assertCommandSucceeded('ACKNOWLEDGE_SVC_PROBLEM;hostC;svc;0;0;0;I can;sends teh ack', $result[3]);
} catch(Exception $e) {
$this->cleanup();
@ -231,17 +235,17 @@ class CommandPipeTest extends \PHPUnit_Framework_TestCase
$pipe->sendCommand(
new AddCommentCommand(
new Comment(
"Autor",
"Comment"
'Autor',
'Comment'
)
),
array(
(object) array(
"host_name" => "hostA"
'host_name' => 'hostA'
)
)
);
$this->assertCommandSucceeded("ADD_HOST_COMMENT;hostA;0;Autor;Comment");
$this->assertCommandSucceeded('ADD_HOST_COMMENT;hostA;0;Autor;Comment');
} catch(Exception $e) {
$this->cleanup();
throw $e;
@ -252,18 +256,20 @@ class CommandPipeTest extends \PHPUnit_Framework_TestCase
/**
* Test whether removing all hostcomments is correctly serialized and send to the command pipe
*
* @throws \Exception|Exception
* @throws Exception
*/
public function testRemoveAllHostComment()
{
$pipe = $this->getLocalTestPipe();
try {
$pipe->removeComment(array(
(object) array(
"host_name" => "test"
$pipe->removeComment(
array(
(object) array(
'host_name' => 'test'
)
)
));
$this->assertCommandSucceeded("DEL_ALL_HOST_COMMENTS;test");
);
$this->assertCommandSucceeded('DEL_ALL_HOST_COMMENTS;test');
} catch(Exception $e) {
$this->cleanup();
throw $e;
@ -274,14 +280,21 @@ class CommandPipeTest extends \PHPUnit_Framework_TestCase
/**
* Test whether removing a single host comment is correctly serialized and send to the command pipe
*
* @throws \Exception|Exception
* @throws Exception
*/
public function testRemoveSpecificComment()
{
$pipe = $this->getLocalTestPipe();
try {
$pipe->removeComment(array((object) array("comment_id"=>34,"host_name"=>"test")));
$this->assertCommandSucceeded("DEL_HOST_COMMENT;34");
$pipe->removeComment(
array(
(object) array(
'comment_id' => 34,
'host_name' => 'test'
)
)
);
$this->assertCommandSucceeded('DEL_HOST_COMMENT;34');
} catch(Exception $e) {
$this->cleanup();
throw $e;
@ -292,7 +305,7 @@ class CommandPipeTest extends \PHPUnit_Framework_TestCase
/**
* Test whether a multiple reschedules for services and hosts are correctly serialized and send to the commandpipe
*
* @throws \Exception|Exception
* @throws Exception
*/
public function testScheduleChecks()
{
@ -304,10 +317,10 @@ class CommandPipeTest extends \PHPUnit_Framework_TestCase
$command,
array(
(object) array(
'host_name' => 'test'
'host_name' => 'test'
),
(object) array(
'host_name' => 'test',
'host_name' => 'test',
'service_description' => 'svc1'
)
)
@ -317,10 +330,10 @@ class CommandPipeTest extends \PHPUnit_Framework_TestCase
$command,
array(
(object) array(
'host_name' => 'test'
'host_name' => 'test'
),
(object) array(
'host_name' => 'test',
'host_name' => 'test',
'service_description' => 'svc1'
)
)
@ -353,36 +366,39 @@ class CommandPipeTest extends \PHPUnit_Framework_TestCase
/**
* Test whether modifying monitoringflags of a host and service is correctly serialized and send to the command pipe
*
* @throws \Exception|Exception
* @throws Exception
*/
public function testObjectStateModifications()
{
$pipe = $this->getLocalTestPipe();
try {
$pipe->getTransport()->setOpenMode("a");
$pipe->setMonitoringProperties(array(
$pipe->getTransport()->setOpenMode('a');
$pipe->setMonitoringProperties(
array(
(object) array(
"host_name" => "Testhost"
'host_name' => 'Testhost'
),
(object) array(
"host_name" => "host",
"service_description" => "svc"
'host_name' => 'host',
'service_description' => 'svc'
)
), new MONFLAG(array(
MONFLAG::ACTIVE => MONFLAG::STATE_DISABLE,
MONFLAG::PASSIVE => MONFLAG::STATE_ENABLE,
MONFLAG::NOTIFICATIONS => MONFLAG::STATE_DISABLE,
MONFLAG::EVENTHANDLER => MONFLAG::STATE_ENABLE,
MONFLAG::FLAPPING => MONFLAG::STATE_DISABLE,
MONFLAG::FRESHNESS => MONFLAG::STATE_ENABLE,
))
), new MONFLAG(
array(
MONFLAG::ACTIVE => MONFLAG::STATE_DISABLE,
MONFLAG::PASSIVE => MONFLAG::STATE_ENABLE,
MONFLAG::NOTIFICATIONS => MONFLAG::STATE_DISABLE,
MONFLAG::EVENTHANDLER => MONFLAG::STATE_ENABLE,
MONFLAG::FLAPPING => MONFLAG::STATE_DISABLE,
MONFLAG::FRESHNESS => MONFLAG::STATE_ENABLE,
)
)
);
$result = explode("\n",file_get_contents($this->getPipeName()));
$result = explode("\n", file_get_contents($this->getPipeName()));
array_pop($result); // remove empty last line
$this->assertCount(12,$result, "Asserting a correct number of commands being written to the commandpipe");
$this->assertCount(12, $result, 'Asserting a correct number of commands being written to the commandpipe');
foreach ($result as $command) {
$this->assertCommandSucceeded(false,$command);
$this->assertCommandSucceeded(false, $command);
}
} catch (Exception $e) {
@ -395,16 +411,16 @@ class CommandPipeTest extends \PHPUnit_Framework_TestCase
/**
* Test whether enabling and disabling global notifications are send correctly to the pipe
*
* @throws \Exception|Exception
* @throws Exception
*/
public function testGlobalNotificationTrigger()
{
$pipe = $this->getLocalTestPipe();
try {
$pipe->enableGlobalNotifications();
$this->assertCommandSucceeded("ENABLE_NOTIFICATIONS;");
$this->assertCommandSucceeded('ENABLE_NOTIFICATIONS;');
$pipe->disableGlobalNotifications();
$this->assertCommandSucceeded("DISABLE_NOTIFICATIONS;");
$this->assertCommandSucceeded('DISABLE_NOTIFICATIONS;');
} catch (Exception $e) {
$this->cleanup();
throw $e;
@ -503,33 +519,35 @@ class CommandPipeTest extends \PHPUnit_Framework_TestCase
/**
* Test whether the removal of downtimes is correctly serialized and send to the commandpipe for hosts and services
*
* @throws \Exception|Exception
* @throws Exception
*/
public function testRemoveDowntime()
{
$pipe = $this->getLocalTestPipe();
try {
$pipe->getTransport()->setOpenMode("a");
$pipe->removeDowntime(array(
(object) array(
"host_name" => "Testhost"
),
(object) array(
"host_name" => "host",
"service_description" => "svc"
),
(object) array(
"host_name" => "host",
"service_description" => "svc",
"downtime_id" => 123
$pipe->getTransport()->setOpenMode('a');
$pipe->removeDowntime(
array(
(object) array(
'host_name' => 'Testhost'
),
(object) array(
'host_name' => 'host',
'service_description' => 'svc'
),
(object) array(
'host_name' => 'host',
'service_description' => 'svc',
'downtime_id' => 123
)
)
));
$result = explode("\n",file_get_contents($this->getPipeName()));
);
$result = explode("\n", file_get_contents($this->getPipeName()));
array_pop($result); // remove empty last line
$this->assertCount(3,$result, "Asserting a correct number of commands being written to the commandpipe");
$this->assertCommandSucceeded("DEL_DOWNTIME_BY_HOST_NAME;Testhost",$result[0]);
$this->assertCommandSucceeded("DEL_DOWNTIME_BY_HOST_NAME;host;svc",$result[1]);
$this->assertCommandSucceeded("DEL_SVC_DOWNTIME;123",$result[2]);
$this->assertCount(3, $result, 'Asserting a correct number of commands being written to the commandpipe');
$this->assertCommandSucceeded('DEL_DOWNTIME_BY_HOST_NAME;Testhost', $result[0]);
$this->assertCommandSucceeded('DEL_DOWNTIME_BY_HOST_NAME;host;svc', $result[1]);
$this->assertCommandSucceeded('DEL_SVC_DOWNTIME;123', $result[2]);
} catch (Exception $e) {
$this->cleanup();
@ -671,26 +689,24 @@ class CommandPipeTest extends \PHPUnit_Framework_TestCase
/**
* Test sending of commands via SSH (currently disabled)
*
* @throws \Exception|Exception
* @throws Exception
*/
public function testSSHCommands()
{
$this->markTestSkipped("This test assumes running in a vagrant VM with key-auth");
$this->markTestSkipped('This test assumes running in a vagrant VM with key-auth');
if (!is_dir("/vagrant")) {
}
$pipe = $this->getSSHTestPipe();
try {
$ack = new AcknowledgeCommand(new Comment("I can", "sends teh ack"));
$ack = new AcknowledgeCommand(new Comment('I can', 'sends teh ack'));
$pipe->sendCommand(
$ack,
array(
(object) array(
"host_name" => "hostA"
'host_name' => 'hostA'
)
)
);
$this->assertCommandSucceeded("ACKNOWLEDGE_HOST_PROBLEM;hostA;0;0;0;I can;sends teh ack");
$this->assertCommandSucceeded('ACKNOWLEDGE_HOST_PROBLEM;hostA;0;0;0;I can;sends teh ack');
} catch(Exception $e) {
$this->cleanup();
throw $e;