Fix tests and a few member access issues

refs #3801
This commit is contained in:
Jannis Moßhammer 2013-10-15 20:21:40 +02:00
parent 44be5e85da
commit c034a5eff8
15 changed files with 74 additions and 193 deletions

View File

@ -1,129 +0,0 @@
<?php
// {{{ICINGA_LICENSE_HEADER}}}
/**
* This file is part of Icinga 2 Web.
*
* Icinga 2 Web - Head for multiple monitoring backends.
* Copyright (C) 2013 Icinga Development Team
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*
* @copyright 2013 Icinga Development Team <info@icinga.org>
* @license http://www.gnu.org/licenses/gpl-2.0.txt GPL, version 2
* @author Icinga Development Team <info@icinga.org>
*/
// {{{ICINGA_LICENSE_HEADER}}}
namespace Icinga\Protocol;
/**
* Class BaseQuery
* @package Icinga\Protocol
*/
abstract class AbstractQuery
{
/**
*
*/
const SORT_ASC = 1;
/**
*
*/
const SORT_DESC = -1;
/**
* @param $key
* @param null $val
* @return mixed
*/
abstract public function where($key, $val = null);
/**
* @param $col
* @return mixed
*/
abstract public function order($col);
/**
* @param null $count
* @param null $offset
* @return mixed
*/
abstract public function limit($count = null, $offset = null);
/**
* @param $table
* @param null $columns
* @return mixed
*/
abstract public function from($table, $columns = null);
/**
* @return bool
*/
public function hasOrder()
{
return false;
}
/**
* @return bool
*/
public function hasColumns()
{
return false;
}
/**
* @return array
*/
public function getColumns()
{
return array();
}
/**
* @return bool
*/
public function hasLimit()
{
return false;
}
/**
* @return bool
*/
public function hasOffset()
{
return false;
}
/**
* @return null
*/
public function getLimit()
{
return null;
}
/**
* @return null
*/
public function getOffset()
{
return null;
}
}

View File

@ -28,6 +28,9 @@
namespace Icinga\Protocol\Statusdat; namespace Icinga\Protocol\Statusdat;
use Icinga\Data\Optional;
use Icinga\Data\The;
use Icinga\Filter\Query\Node;
use Icinga\Protocol; use Icinga\Protocol;
use Icinga\Data\BaseQuery; use Icinga\Data\BaseQuery;
@ -116,17 +119,11 @@ class Query extends BaseQuery
*/ */
public function hasColumns() public function hasColumns()
{ {
return !empty($this->columns); $columns = $this->getColumns();
return !empty($columns);
} }
/**
* @return array
*/
public function getColumns()
{
return $this->columns;
}
/** /**
* @return bool * @return bool
@ -222,13 +219,14 @@ class Query extends BaseQuery
return $this; return $this;
} }
/** /**
* @param $table * @param $table
* @param null $columns * @param null $columns
* @return $this * @return $this
* @throws \Exception * @throws \Exception
*/ */
public function from($table, $columns = null) public function from($table, array $attributes = null)
{ {
if (isset(self::$VALID_TARGETS[$table])) { if (isset(self::$VALID_TARGETS[$table])) {
$this->source = $table; $this->source = $table;
@ -396,4 +394,23 @@ class Query extends BaseQuery
} }
return $result; return $result;
} }
/**
* Parse a backend specific filter expression and return a Query\Node object
*
* @param $expression The expression to parse
* @param $parameters Optional parameters for the expression
* @return Node A query node or null if it's an invalid expression
*/
protected function parseFilterExpression($expression, $parameters = null)
{
// TODO: Implement parseFilterExpression() method.
}
public function applyFilter()
{
// TODO: Implement applyFilter() method.
}
} }

View File

@ -41,7 +41,7 @@ class AllcontactsQuery extends IdoQuery
protected $contactgroups; protected $contactgroups;
protected $useSubqueryCount = true; protected $useSubqueryCount = true;
protected function requireColumn($alias) public function requireColumn($alias)
{ {
$this->contacts->addColumn($alias); $this->contacts->addColumn($alias);
$this->contactgroups->addColumn($alias); $this->contactgroups->addColumn($alias);

View File

@ -46,7 +46,7 @@ class ServicestatusQuery extends IdoQuery
) )
); );
protected function getDefaultColumns() public function getDefaultColumns()
{ {
return $this->columnMap['services'] return $this->columnMap['services']
+ $this->columnMap['servicestatus']; + $this->columnMap['servicestatus'];

View File

@ -28,6 +28,9 @@
namespace Icinga\Module\Monitoring\Backend\Statusdat\Query; namespace Icinga\Module\Monitoring\Backend\Statusdat\Query;
use Icinga\Data\Optional;
use Icinga\Data\The;
use Icinga\Filter\Query\Node;
use Icinga\Filter\Query\Tree; use Icinga\Filter\Query\Tree;
use Icinga\Protocol\Statusdat; use Icinga\Protocol\Statusdat;
use Icinga\Exception; use Icinga\Exception;
@ -299,9 +302,26 @@ abstract class Query extends BaseQuery implements Filterable
// TODO: Implement getMappedField() method. // TODO: Implement getMappedField() method.
} }
public function applyFilter(Tree $filter) public function applyFilter()
{ {
// TODO: Implement applyFilter() method. // TODO: Implement applyFilter() method.
} }
/**
* Parse a backend specific filter expression and return a Query\Node object
*
* @param $expression The expression to parse
* @param $parameters Optional parameters for the expression
* @return Node A query node or null if it's an invalid expression
*/
protected function parseFilterExpression($expression, $parameters = null)
{
// TODO: Implement parseFilterExpression() method.
}
} }

View File

@ -8,7 +8,7 @@ require_once realpath(__DIR__ . '/../../../../../../library/Icinga/Test/BaseTest
use Icinga\Test\BaseTestCase; use Icinga\Test\BaseTestCase;
require_once(realpath(BaseTestCase::$moduleDir . '/monitoring/test/php/testlib/MonitoringControllerTest.php')); require_once(realpath(BaseTestCase::$moduleDir . '/monitoring/test/php/testlib/MonitoringControllerTest.php'));
require_once(realpath(BaseTestCase::$moduleDir . '/monitoring/library/Monitoring/Filter/Backend/TreeToSqlParser.php); require_once(realpath(BaseTestCase::$libDir . '/Data/Db/TreeToSqlParser.php'));
require_once(realpath(BaseTestCase::$moduleDir . '/monitoring/library/Monitoring/DataView/DataView.php')); require_once(realpath(BaseTestCase::$moduleDir . '/monitoring/library/Monitoring/DataView/DataView.php'));
require_once(realpath(BaseTestCase::$moduleDir . '/monitoring/library/Monitoring/DataView/HostStatus.php')); require_once(realpath(BaseTestCase::$moduleDir . '/monitoring/library/Monitoring/DataView/HostStatus.php'));
require_once(realpath(BaseTestCase::$moduleDir . '/monitoring/library/Monitoring/DataView/Notification.php')); require_once(realpath(BaseTestCase::$moduleDir . '/monitoring/library/Monitoring/DataView/Notification.php'));

View File

@ -7,7 +7,7 @@ use Icinga\Test\BaseTestCase;
require_once realpath(__DIR__ . '/../../../../../../library/Icinga/Test/BaseTestCase.php'); require_once realpath(__DIR__ . '/../../../../../../library/Icinga/Test/BaseTestCase.php');
require_once(realpath(BaseTestCase::$moduleDir . '/monitoring/test/php/testlib/MonitoringControllerTest.php')); require_once(realpath(BaseTestCase::$moduleDir . '/monitoring/test/php/testlib/MonitoringControllerTest.php'));
require_once(realpath(BaseTestCase::$moduleDir . '/monitoring/library/Monitoring/Filter/Backend/TreeToSqlParser.php); require_once(realpath(BaseTestCase::$libDir . '/Data/Db/TreeToSqlParser.php'));
require_once(realpath(BaseTestCase::$moduleDir . '/monitoring/library/Monitoring/DataView/DataView.php')); require_once(realpath(BaseTestCase::$moduleDir . '/monitoring/library/Monitoring/DataView/DataView.php'));
require_once(realpath(BaseTestCase::$moduleDir . '/monitoring/library/Monitoring/DataView/ServiceStatus.php')); require_once(realpath(BaseTestCase::$moduleDir . '/monitoring/library/Monitoring/DataView/ServiceStatus.php'));
require_once(realpath(BaseTestCase::$moduleDir . '/monitoring/library/Monitoring/DataView/Notification.php')); require_once(realpath(BaseTestCase::$moduleDir . '/monitoring/library/Monitoring/DataView/Notification.php'));

View File

@ -2,6 +2,7 @@
namespace Tests\Monitoring\Backend\Statusdat; namespace Tests\Monitoring\Backend\Statusdat;
use Icinga\Data\DatasourceInterface;
use Zend_Config; use Zend_Config;
use Tests\Icinga\Protocol\Statusdat\ReaderMock as ReaderMock; use Tests\Icinga\Protocol\Statusdat\ReaderMock as ReaderMock;
use \Icinga\Module\Monitoring\Backend\Statusdat\Query\ServicegroupsummaryQuery; use \Icinga\Module\Monitoring\Backend\Statusdat\Query\ServicegroupsummaryQuery;
@ -14,7 +15,7 @@ StatusdatTestLoader::requireLibrary();
require_once(realpath($base."/library/Monitoring/Backend/Statusdat/Query/GroupsummaryQuery.php")); require_once(realpath($base."/library/Monitoring/Backend/Statusdat/Query/GroupsummaryQuery.php"));
require_once(realpath($base."/library/Monitoring/Backend/Statusdat/Query/ServicegroupsummaryQuery.php")); require_once(realpath($base."/library/Monitoring/Backend/Statusdat/Query/ServicegroupsummaryQuery.php"));
class BackendMock extends \Icinga\Module\Monitoring\Backend\AbstractBackend class BackendMock implements DatasourceInterface
{ {
public $reader; public $reader;
@ -37,7 +38,7 @@ class ServicegroupsummaryqueryTest extends \PHPUnit_Framework_TestCase
$backendConfig = new Zend_Config( $backendConfig = new Zend_Config(
array() array()
); );
$backend = new BackendMock($backendConfig); $backend = new BackendMock();
$backend->setReader($this->getTestDataset()); $backend->setReader($this->getTestDataset());
$q = new ServicegroupsummaryQuery($backend); $q = new ServicegroupsummaryQuery($backend);
$indices = array( $indices = array(

View File

@ -64,11 +64,21 @@ class FilterMock implements Filterable
return $field; return $field;
} }
public function applyFilter(Tree $filter) public function applyFilter()
{ {
return true; return true;
} }
public function clearFilter()
{
// TODO: Implement clearFilter() method.
}
public function addFilter($filter)
{
// TODO: Implement addFilter() method.
}
} }
@ -104,7 +114,7 @@ class UrlViewFilterTest extends BaseTestCase
$filterFactory = new UrlViewFilter(new FilterMock()); $filterFactory = new UrlViewFilter(new FilterMock());
$uri = $filterFactory->fromTree($tree); $uri = $filterFactory->fromTree($tree);
$this->assertEquals( $this->assertEquals(
'attr1!=Hans+wurst|attr2=%2Asomething%2A&attr3=%2Abla|attr4=1&host_last_state_change>=yesterday&attr5=0', 'attr1!=Hans+wurst|attr2=%2Asomething%2A&attr3=bla%2A|attr4=1&host_last_state_change>=yesterday&attr5=0',
$uri, $uri,
'Assert a correct query to be returned when parsing a more complex query ("'. $query .'")' 'Assert a correct query to be returned when parsing a more complex query ("'. $query .'")'
); );

View File

@ -164,8 +164,8 @@ abstract class MonitoringControllerTest extends Zend_Test_PHPUnit_ControllerTest
require_once('Web/Widget/SortBox.php'); require_once('Web/Widget/SortBox.php');
require_once('Web/Widget/FilterBox.php'); require_once('Web/Widget/FilterBox.php');
require_once('Web/Widget/FilterBadgeRenderer.php'); require_once('Web/Widget/FilterBadgeRenderer.php');
require_once('library/Monitoring/Backend/AbstractBackend.php');
require_once('library/Monitoring/Backend.php'); require_once('library/Monitoring/Backend.php');
require_once('library/Monitoring/Controller.php');
} }
@ -176,6 +176,7 @@ abstract class MonitoringControllerTest extends Zend_Test_PHPUnit_ControllerTest
private function requireIDOQueries() private function requireIDOQueries()
{ {
require_once('Application/DbAdapterFactory.php'); require_once('Application/DbAdapterFactory.php');
require_once('library/Monitoring/Backend/Ido/Query/IdoQuery.php');
$this->requireFolder('library/Monitoring/Backend/Ido/Query'); $this->requireFolder('library/Monitoring/Backend/Ido/Query');
} }
@ -207,7 +208,6 @@ abstract class MonitoringControllerTest extends Zend_Test_PHPUnit_ControllerTest
$this->requireFolder('library/Monitoring/Backend/Statusdat/Criteria'); $this->requireFolder('library/Monitoring/Backend/Statusdat/Criteria');
$this->requireFolder('library/Monitoring/Backend/Statusdat/Query'); $this->requireFolder('library/Monitoring/Backend/Statusdat/Query');
$this->requireFolder('library/Monitoring/Backend/Statusdat/DataView'); $this->requireFolder('library/Monitoring/Backend/Statusdat/DataView');
$this->requireFolder('library/Monitoring/Backend/Statusdat/DataView');
} }
/** /**
@ -216,8 +216,7 @@ abstract class MonitoringControllerTest extends Zend_Test_PHPUnit_ControllerTest
private function requireViews() private function requireViews()
{ {
$module = $this->moduleDir; $module = $this->moduleDir;
require_once($module.'library/Monitoring/View/AbstractView.php');
$this->requireFolder('library/Monitoring/View/');
} }
/** /**

View File

@ -1,33 +0,0 @@
<?php
namespace Tests\Icinga\Protocol\Livestatus;
use Icinga\Protocol\Livestatus\Connection;
use Icinga\Protocol\Livestatus\Query;
use PHPUnit_Framework_TestCase as TestCase;
require_once('../../library/Icinga/Protocol/BaseQuery.php');
require_once('../../library/Icinga/Protocol/Livestatus/Connection.php');
require_once('../../library/Icinga/Protocol/Livestatus/Query.php');
/**
*
* Test class for Connection
*
**/
class ConnectionTest extends TestCase
{
/**
* Test for Connection::Select()
*
**/
public function testSelect()
{
$socket = tempnam(sys_get_temp_dir(), 'IcingaTest');
$connection = new Connection($socket);
$this->assertTrue($connection->select() instanceof Query);
unlink($socket);
}
}

View File

@ -1,7 +1,7 @@
<?php <?php
namespace Tests\Icinga\Protocol\Statusdat; namespace Tests\Icinga\Protocol\Statusdat;
require_once('../../library/Icinga/Data/QueryInterface.php'); require_once('../../library/Icinga/Filter/Filterable.php');
require_once('../../library/Icinga/Data/BaseQuery.php'); require_once('../../library/Icinga/Data/BaseQuery.php');
require_once('../../library/Icinga/Protocol/Statusdat/Query.php'); require_once('../../library/Icinga/Protocol/Statusdat/Query.php');
require_once(dirname(__FILE__)."/ReaderMock.php"); require_once(dirname(__FILE__)."/ReaderMock.php");

View File

@ -12,7 +12,8 @@ class StatusdatTestLoader extends LibraryLoader
require_once 'Zend/Config.php'; require_once 'Zend/Config.php';
require_once 'Zend/Cache.php'; require_once 'Zend/Cache.php';
require_once 'Zend/Log.php'; require_once 'Zend/Log.php';
require_once($libPath."/Data/BaseQuery.php require_once($libPath."/Application/Logger.php"); require_once($libPath."/Data/BaseQuery.php");
require_once($libPath."/Application/Logger.php");
require_once($libPath."/Filter/Filterable.php"); require_once($libPath."/Filter/Filterable.php");
require_once($libPath."/Data/DatasourceInterface.php"); require_once($libPath."/Data/DatasourceInterface.php");
$statusdat = realpath($libPath."/Protocol/Statusdat/"); $statusdat = realpath($libPath."/Protocol/Statusdat/");

View File

@ -17,15 +17,13 @@ require_once 'library/Icinga/Protocol/Statusdat/StatusdatTestLoader.php';
StatusdatTestLoader::requireLibrary(); StatusdatTestLoader::requireLibrary();
require_once '../../modules/monitoring/library/Monitoring/Backend/Statusdat/Criteria/Order.php'; require_once '../../modules/monitoring/library/Monitoring/Backend/Statusdat/Criteria/Order.php';
require_once '../../modules/monitoring/library/Monitoring/Backend/AbstractBackend.php';
require_once '../../modules/monitoring/library/Monitoring/Backend/Statusdat/Query/Query.php'; require_once '../../modules/monitoring/library/Monitoring/Backend/Statusdat/Query/Query.php';
require_once '../../modules/monitoring/library/Monitoring/Backend/Statusdat/Query/StatusQuery.php'; require_once '../../modules/monitoring/library/Monitoring/Backend/Statusdat/Query/StatusQuery.php';
require_once '../../modules/monitoring/library/Monitoring/Backend/Statusdat/DataView/HostStatusView.php'; require_once '../../modules/monitoring/library/Monitoring/Backend/Statusdat/DataView/HostStatusView.php';
require_once '../../modules/monitoring/library/Monitoring/View/AbstractView.php';
require_once '../../modules/monitoring/library/Monitoring/View/StatusView.php';
require_once '../../modules/monitoring/library/Monitoring/Backend.php'; require_once '../../modules/monitoring/library/Monitoring/Backend.php';
require_once '../../library/Icinga/Protocol/BaseQuery.phpequire_once '../../library/Icinga/Data/ResourceFactory.php'; require_once '../../library/Icinga/Data/BaseQuery.php';
require_once '../../library/Icinga/Data/ResourceFactory.php';
class QueryAdapterTest extends PHPUnit_Framework_TestCase class QueryAdapterTest extends PHPUnit_Framework_TestCase
{ {

View File

@ -22,13 +22,10 @@ require_once 'library/Icinga/Protocol/Statusdat/StatusdatTestLoader.php';
StatusdatTestLoader::requireLibrary(); StatusdatTestLoader::requireLibrary();
require_once '../../modules/monitoring/library/Monitoring/Backend/Statusdat/Criteria/Order.php'; require_once '../../modules/monitoring/library/Monitoring/Backend/Statusdat/Criteria/Order.php';
require_once '../../modules/monitoring/library/Monitoring/Backend/AbstractBackend.php';
require_once '../../modules/monitoring/library/Monitoring/Backend.php'; require_once '../../modules/monitoring/library/Monitoring/Backend.php';
require_once '../../modules/monitoring/library/Monitoring/Backend/Statusdat/Query/Query.php'; require_once '../../modules/monitoring/library/Monitoring/Backend/Statusdat/Query/Query.php';
require_once '../../modules/monitoring/library/Monitoring/Backend/Statusdat/Query/StatusQuery.php'; require_once '../../modules/monitoring/library/Monitoring/Backend/Statusdat/Query/StatusQuery.php';
require_once '../../modules/monitoring/library/Monitoring/Backend/Statusdat/DataView/HostStatusView.php'; require_once '../../modules/monitoring/library/Monitoring/Backend/Statusdat/DataView/HostStatusView.php';
require_once '../../modules/monitoring/library/Monitoring/View/AbstractView.php';
require_once '../../modules/monitoring/library/Monitoring/View/StatusView.php';
require_once '../../library/Icinga/Web/Paginator/ScrollingStyle/SlidingWithBorder.php'; require_once '../../library/Icinga/Web/Paginator/ScrollingStyle/SlidingWithBorder.php';
class TestPaginatorAdapter implements Zend_Paginator_Adapter_Interface class TestPaginatorAdapter implements Zend_Paginator_Adapter_Interface