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;
use Icinga\Data\Optional;
use Icinga\Data\The;
use Icinga\Filter\Query\Node;
use Icinga\Protocol;
use Icinga\Data\BaseQuery;
@ -116,17 +119,11 @@ class Query extends BaseQuery
*/
public function hasColumns()
{
return !empty($this->columns);
$columns = $this->getColumns();
return !empty($columns);
}
/**
* @return array
*/
public function getColumns()
{
return $this->columns;
}
/**
* @return bool
@ -222,13 +219,14 @@ class Query extends BaseQuery
return $this;
}
/**
* @param $table
* @param null $columns
* @return $this
* @throws \Exception
*/
public function from($table, $columns = null)
public function from($table, array $attributes = null)
{
if (isset(self::$VALID_TARGETS[$table])) {
$this->source = $table;
@ -396,4 +394,23 @@ class Query extends BaseQuery
}
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 $useSubqueryCount = true;
protected function requireColumn($alias)
public function requireColumn($alias)
{
$this->contacts->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']
+ $this->columnMap['servicestatus'];

View File

@ -28,6 +28,9 @@
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\Protocol\Statusdat;
use Icinga\Exception;
@ -299,9 +302,26 @@ abstract class Query extends BaseQuery implements Filterable
// TODO: Implement getMappedField() method.
}
public function applyFilter(Tree $filter)
public function applyFilter()
{
// 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;
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/HostStatus.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(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/ServiceStatus.php'));
require_once(realpath(BaseTestCase::$moduleDir . '/monitoring/library/Monitoring/DataView/Notification.php'));

View File

@ -2,6 +2,7 @@
namespace Tests\Monitoring\Backend\Statusdat;
use Icinga\Data\DatasourceInterface;
use Zend_Config;
use Tests\Icinga\Protocol\Statusdat\ReaderMock as ReaderMock;
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/ServicegroupsummaryQuery.php"));
class BackendMock extends \Icinga\Module\Monitoring\Backend\AbstractBackend
class BackendMock implements DatasourceInterface
{
public $reader;
@ -37,7 +38,7 @@ class ServicegroupsummaryqueryTest extends \PHPUnit_Framework_TestCase
$backendConfig = new Zend_Config(
array()
);
$backend = new BackendMock($backendConfig);
$backend = new BackendMock();
$backend->setReader($this->getTestDataset());
$q = new ServicegroupsummaryQuery($backend);
$indices = array(

View File

@ -64,11 +64,21 @@ class FilterMock implements Filterable
return $field;
}
public function applyFilter(Tree $filter)
public function applyFilter()
{
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());
$uri = $filterFactory->fromTree($tree);
$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,
'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/FilterBox.php');
require_once('Web/Widget/FilterBadgeRenderer.php');
require_once('library/Monitoring/Backend/AbstractBackend.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()
{
require_once('Application/DbAdapterFactory.php');
require_once('library/Monitoring/Backend/Ido/Query/IdoQuery.php');
$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/Query');
$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()
{
$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
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/Protocol/Statusdat/Query.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/Cache.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."/Data/DatasourceInterface.php");
$statusdat = realpath($libPath."/Protocol/Statusdat/");

View File

@ -17,15 +17,13 @@ require_once 'library/Icinga/Protocol/Statusdat/StatusdatTestLoader.php';
StatusdatTestLoader::requireLibrary();
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/StatusQuery.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 '../../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
{

View File

@ -22,13 +22,10 @@ require_once 'library/Icinga/Protocol/Statusdat/StatusdatTestLoader.php';
StatusdatTestLoader::requireLibrary();
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/Statusdat/Query/Query.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/View/AbstractView.php';
require_once '../../modules/monitoring/library/Monitoring/View/StatusView.php';
require_once '../../library/Icinga/Web/Paginator/ScrollingStyle/SlidingWithBorder.php';
class TestPaginatorAdapter implements Zend_Paginator_Adapter_Interface