diff options
author | Larisa Grigorjeva <larisa.grigorjeva@zabbix.com> | 2022-10-28 09:43:25 +0300 |
---|---|---|
committer | Larisa Grigorjeva <larisa.grigorjeva@zabbix.com> | 2022-10-28 10:01:35 +0300 |
commit | a4dc08a8628214aa9ae5b8fee4d80d4b2e0ca208 (patch) | |
tree | 74d1835b0be03f3e8d8bdf474ee16df8c8ef3cf8 | |
parent | 664aca994669d7d4e06e929e0704ce6904aa2ce3 (diff) |
.......... [ZBXNEXT-686] fixed time related tests
(cherry picked from commit 737aef0b96a1a5926946343af9c6201f46348d55)
-rw-r--r-- | ui/tests/include/helpers/CAPIHelper.php | 4 | ||||
-rw-r--r-- | ui/tests/selenium/common/testFormFilter.php | 1 | ||||
-rw-r--r-- | ui/tests/selenium/filterTabs/testFormFilterProblems.php | 118 | ||||
-rw-r--r-- | ui/tests/selenium/reports/testPageReportsActionLog.php | 5 | ||||
-rw-r--r-- | ui/tests/selenium/reports/testPageReportsTriggerTop.php | 219 |
5 files changed, 284 insertions, 63 deletions
diff --git a/ui/tests/include/helpers/CAPIHelper.php b/ui/tests/include/helpers/CAPIHelper.php index a957ff95b10..ef826788ab3 100644 --- a/ui/tests/include/helpers/CAPIHelper.php +++ b/ui/tests/include/helpers/CAPIHelper.php @@ -19,6 +19,7 @@ ** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. **/ + require_once 'vendor/autoload.php'; require_once dirname(__FILE__).'/../../../include/defines.inc.php'; @@ -78,12 +79,13 @@ class CAPIHelper { ] ]; - $handle = fopen($URL, 'rb', false, stream_context_create($params)); + $handle = @fopen($URL, 'rb', false, stream_context_create($params)); if ($handle) { $response = @stream_get_contents($handle); fclose($handle); } else { + $php_errormsg = CTestArrayHelper::get(error_get_last(), 'message'); $response = false; } diff --git a/ui/tests/selenium/common/testFormFilter.php b/ui/tests/selenium/common/testFormFilter.php index 50990e7b22c..dcdca2e953e 100644 --- a/ui/tests/selenium/common/testFormFilter.php +++ b/ui/tests/selenium/common/testFormFilter.php @@ -18,6 +18,7 @@ ** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. **/ + require_once 'vendor/autoload.php'; require_once dirname(__FILE__).'/../../include/CWebTest.php'; diff --git a/ui/tests/selenium/filterTabs/testFormFilterProblems.php b/ui/tests/selenium/filterTabs/testFormFilterProblems.php index 163d1d59de5..6531499aba9 100644 --- a/ui/tests/selenium/filterTabs/testFormFilterProblems.php +++ b/ui/tests/selenium/filterTabs/testFormFilterProblems.php @@ -18,16 +18,120 @@ ** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. **/ + require_once dirname(__FILE__).'/../common/testFormFilter.php'; /** - * @backup profiles + * @backup profiles, hosts + * + * @onBefore prepareProblemsData */ class testFormFilterProblems extends testFormFilter { - public $url = 'zabbix.php?action=problem.view'; + /** + * Id of the host with problems. + * + * @var integer + */ + protected static $hostid; + + /** + * Ids of the triggers for problems. + * + * @var array + */ + protected static $triggerids; + + /** + * Time when events were created. + * + * @var int + */ + protected static $two_yeasr_ago_1; + protected static $two_years_ago_2; + + public $url = 'zabbix.php?action=problem.view&show_timeline=0'; public $table_selector = 'class:list-table'; + public function prepareProblemsData() { + // Create hostgroup for hosts with items triggers. + $hostgroups = CDataHelper::call('hostgroup.create', [['name' => 'Group for Problems Filter']]); + $this->assertArrayHasKey('groupids', $hostgroups); + $groupid = $hostgroups['groupids'][0]; + + // Create host for items and triggers. + $hosts = CDataHelper::call('host.create', [ + 'host' => 'Host for Problems Filter', + 'groups' => [['groupid' => $groupid]] + ]); + + $this->assertArrayHasKey('hostids', $hosts); + self::$hostid = $hosts['hostids'][0]; + + // Create items on previously created host. + $item_names = ['float', 'char']; + + $items_data = []; + foreach ($item_names as $i => $item) { + $items_data[] = [ + 'hostid' => self::$hostid, + 'name' => $item, + 'key_' => $item, + 'type' => 2, + 'value_type' => $i + ]; + } + + $items = CDataHelper::call('item.create', $items_data); + $this->assertArrayHasKey('itemids', $items); + + // Create triggers based on items. + $triggers_data = []; + foreach ($item_names as $i => $item) { + $triggers_data[] = [ + 'description' => 'Filter problems trigger '.$i, + 'expression' => 'last(/Host for Problems Filter/'.$item.')=0', + 'priority' => $i + ]; + } + + $triggers = CDataHelper::call('trigger.create', $triggers_data); + $this->assertArrayHasKey('triggerids', $triggers); + self::$triggerids = CDataHelper::getIds('description'); + + // Make timestamp a little less 1 year ago. + self::$two_yeasr_ago_1 = time()-62985600; + + // Make timestamp a little less than 2 years ago. + self::$two_years_ago_2 = time()-62983800; + + DBexecute('INSERT INTO events (eventid, source, object, objectid, clock, ns, value, name, severity) VALUES (1005500, 0, 0, '. + zbx_dbstr(self::$triggerids['Filter problems trigger 0']).', '.self::$two_yeasr_ago_1.', 0, 1, '. + zbx_dbstr('Filter problems trigger 0').', 0)' + ); + + DBexecute('INSERT INTO events (eventid, source, object, objectid, clock, ns, value, name, severity) VALUES (1005501, 0, 0, '. + zbx_dbstr(self::$triggerids['Filter problems trigger 1']).', '.self::$two_years_ago_2.', 0, 1, '. + zbx_dbstr('Filter problems trigger 1').', 1)' + ); + + // Create problems. + DBexecute('INSERT INTO problem (eventid, source, object, objectid, clock, ns, name, severity) VALUES (1005500, 0, 0, '. + zbx_dbstr(self::$triggerids['Filter problems trigger 0']).', '.self::$two_yeasr_ago_1.', 0, '. + zbx_dbstr('Filter problems trigger 0').', 0)' + ); + + DBexecute('INSERT INTO problem (eventid, source, object, objectid, clock, ns, name, severity) VALUES (1005501, 0, 0, '. + zbx_dbstr(self::$triggerids['Filter problems trigger 1']).', '.self::$two_years_ago_2.', 0, '. + zbx_dbstr('Filter problems trigger 1').', 1)' + ); + + // Change triggers' state to Problem. + DBexecute('UPDATE triggers SET value = 1 WHERE description IN ('.zbx_dbstr('Filter problems trigger 0').', '. + zbx_dbstr('Filter problems trigger 1').')' + ); + } + public static function getCheckCreatedFilterData() { return [ [ @@ -202,7 +306,7 @@ class testFormFilterProblems extends testFormFilter { [ [ 'filter_form' => [ - 'Hosts' => ['Host for tag permissions'] + 'Hosts' => ['Host for Problems Filter'] ], 'filter' => [ 'Name' => 'Timeselect_1' @@ -212,7 +316,7 @@ class testFormFilterProblems extends testFormFilter { [ [ 'filter_form' => [ - 'Hosts' => ['Host for tag permissions'] + 'Hosts' => ['Host for Problems Filter'] ], 'filter' => [ 'Name' => 'Timeselect_2' @@ -241,7 +345,7 @@ class testFormFilterProblems extends testFormFilter { // Enable Set custom time period option. $filter_container->editProperties(); $dialog = COverlayDialogElement::find()->asForm()->all()->last()->waitUntilReady(); - $dialog->fill(['Set custom time period' => true, 'From' => '2020-10-23 18:00']); + $dialog->fill(['Set custom time period' => true, 'From' => 'now-2y']); $dialog->submit(); COverlayDialogElement::ensureNotPresent(); $this->page->waitUntilReady(); @@ -251,7 +355,7 @@ class testFormFilterProblems extends testFormFilter { // Changing time period from timeselector tab. $form->fill(['Show' => 'History']); $this->query('xpath://a[@class="tabfilter-item-link btn-time"]')->one()->click(); - $this->query('xpath://input[@id="from"]')->one()->fill('2020-10-23 18:00'); + $this->query('xpath://input[@id="from"]')->one()->fill('now-2y'); $this->query('id:apply')->one()->click(); $filter_container->selectTab($data['filter']['Name']); $this->query('button:Update')->one()->click(); @@ -268,6 +372,6 @@ class testFormFilterProblems extends testFormFilter { $this->assertTrue($this->query('xpath://li[@data-target="tabfilter_timeselector"]')->one()->isEnabled($value)); // Checking that table result changed. - $this->assertEquals(1, $table->getRows()->count()); + $this->assertEquals(2, $table->getRows()->count()); } } diff --git a/ui/tests/selenium/reports/testPageReportsActionLog.php b/ui/tests/selenium/reports/testPageReportsActionLog.php index 63e91060feb..26969d759f9 100644 --- a/ui/tests/selenium/reports/testPageReportsActionLog.php +++ b/ui/tests/selenium/reports/testPageReportsActionLog.php @@ -18,15 +18,14 @@ ** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. **/ + require_once dirname(__FILE__).'/../../include/CLegacyWebTest.php'; class testPageReportsActionLog extends CLegacyWebTest { public function testPageReportsActionLog_CheckLayout() { - // from: 2012-02-20 09:00:00 - // to: 2014-02-19 09:00:00 // dates can be in relative format, example: now-1y/y, now-1w, now - $this->zbxTestLogin('auditacts.php?from=2012-02-20+09%3A00%3A00&to=2014-02-19+09%3A00%3A00'); + $this->zbxTestLogin('auditacts.php?from=now-2y&to=now'); $this->zbxTestCheckTitle('Action log'); $this->zbxTestAssertElementPresentId('config'); $this->zbxTestCheckHeader('Action log'); diff --git a/ui/tests/selenium/reports/testPageReportsTriggerTop.php b/ui/tests/selenium/reports/testPageReportsTriggerTop.php index 2935d9c3e02..e855b7b4ae9 100644 --- a/ui/tests/selenium/reports/testPageReportsTriggerTop.php +++ b/ui/tests/selenium/reports/testPageReportsTriggerTop.php @@ -18,12 +18,139 @@ ** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. **/ + require_once dirname(__FILE__).'/../../include/CLegacyWebTest.php'; use Facebook\WebDriver\WebDriverBy; +/** + * @backup hosts + * + * @onBefore prepareTriggersData + */ class testPageReportsTriggerTop extends CLegacyWebTest { + /** + * Id of the host with problems. + * + * @var integer + */ + protected static $hostid; + + /** + * Ids of the triggers for problems. + * + * @var array + */ + protected static $triggerids; + + /** + * Time when events were created. + * + * @var int + */ + protected static $one_year_ago_approx; + protected static $two_years_ago_approx; + protected static $three_months_ago_approx; + protected static $two_months_ago_approx; + + public function prepareTriggersData() { + // Create hostgroup for hosts with items triggers. + $hostgroups = CDataHelper::call('hostgroup.create', [['name' => 'Group for Reports Trigger']]); + $this->assertArrayHasKey('groupids', $hostgroups); + $groupid = $hostgroups['groupids'][0]; + + // Create host for items and triggers. + $hosts = CDataHelper::call('host.create', [ + 'host' => 'Host for Reports Trigger', + 'groups' => [['groupid' => $groupid]] + ]); + + $this->assertArrayHasKey('hostids', $hosts); + self::$hostid = $hosts['hostids'][0]; + + // Create items on previously created host. + $item_names = ['float', 'char', 'log', 'unsigned']; + + $items_data = []; + foreach ($item_names as $i => $item) { + $items_data[] = [ + 'hostid' => self::$hostid, + 'name' => $item, + 'key_' => $item, + 'type' => 2, + 'value_type' => $i + ]; + } + + $items = CDataHelper::call('item.create', $items_data); + $this->assertArrayHasKey('itemids', $items); + + // Create triggers based on items. + $triggers_data = []; + foreach ($item_names as $i => $item) { + $triggers_data[] = [ + 'description' => 'Reports trigger '.$i, + 'expression' => 'last(/Host for Reports Trigger/'.$item.')=0', + 'priority' => $i + ]; + } + + $triggers = CDataHelper::call('trigger.create', $triggers_data); + $this->assertArrayHasKey('triggerids', $triggers); + self::$triggerids = CDataHelper::getIds('description'); + + // Make timestamp a little less 1 year ago. + self::$one_year_ago_approx = time()-31449600; + + // Make timestamp a little less than 2 years ago. + self::$two_years_ago_approx = time()-62985600; + + // Make timestamp a little less than 3 months ago. + self::$three_months_ago_approx = time()-7872000; + + // Make timestamp a little less than 2 months ago. + self::$two_months_ago_approx = time()-5184000; + + DBexecute('INSERT INTO events (eventid, source, object, objectid, clock, ns, value, name, severity) VALUES (1005500, 0, 0, '. + zbx_dbstr(self::$triggerids['Reports trigger 0']).', '.self::$one_year_ago_approx.', 0, 1, '.zbx_dbstr('Reports trigger 0').', 0)' + ); + + DBexecute('INSERT INTO events (eventid, source, object, objectid, clock, ns, value, name, severity) VALUES (1005501, 0, 0, '. + zbx_dbstr(self::$triggerids['Reports trigger 1']).', '.self::$two_years_ago_approx.', 0, 1, '.zbx_dbstr('Reports trigger 1').', 1)' + ); + + DBexecute('INSERT INTO events (eventid, source, object, objectid, clock, ns, value, name, severity) VALUES (1005502, 0, 0, '. + zbx_dbstr(self::$triggerids['Reports trigger 2']).', '.self::$three_months_ago_approx.', 0, 1, '.zbx_dbstr('Reports trigger 2').', 2)' + ); + + DBexecute('INSERT INTO events (eventid, source, object, objectid, clock, ns, value, name, severity) VALUES (1005503, 0, 0, '. + zbx_dbstr(self::$triggerids['Reports trigger 3']).', '.self::$two_months_ago_approx.', 0, 1, '.zbx_dbstr('Reports trigger 3').', 3)' + ); + + // Create problems. + DBexecute('INSERT INTO problem (eventid, source, object, objectid, clock, ns, name, severity) VALUES (1005500, 0, 0, '. + zbx_dbstr(self::$triggerids['Reports trigger 0']).', '.self::$one_year_ago_approx.', 0, '.zbx_dbstr('Reports trigger 0').', 0)' + ); + + DBexecute('INSERT INTO problem (eventid, source, object, objectid, clock, ns, name, severity) VALUES (1005501, 0, 0, '. + zbx_dbstr(self::$triggerids['Reports trigger 1']).', '.self::$two_years_ago_approx.', 0, '.zbx_dbstr('Reports trigger 1').', 1)' + ); + + DBexecute('INSERT INTO problem (eventid, source, object, objectid, clock, ns, name, severity) VALUES (1005502, 0, 0, '. + zbx_dbstr(self::$triggerids['Reports trigger 2']).', '.self::$three_months_ago_approx.', 0, '.zbx_dbstr('Reports trigger 2').', 2)' + ); + + DBexecute('INSERT INTO problem (eventid, source, object, objectid, clock, ns, name, severity) VALUES (1005503, 0, 0, '. + zbx_dbstr(self::$triggerids['Reports trigger 3']).', '.self::$two_months_ago_approx.', 0, '.zbx_dbstr('Reports trigger 3').', 3)' + ); + + // Change triggers' state to Problem. + DBexecute('UPDATE triggers SET value = 1 WHERE description IN ('.zbx_dbstr('Reports trigger 0').', '. + zbx_dbstr('Reports trigger 1').', '.zbx_dbstr('Reports trigger 2').', '.zbx_dbstr('Reports trigger 3').')' + ); + } + public function testPageReportsTriggerTop_FilterLayout() { $this->zbxTestLogin('toptriggers.php'); $this->zbxTestCheckTitle('100 busiest triggers'); @@ -53,22 +180,22 @@ class testPageReportsTriggerTop extends CLegacyWebTest { [ [ 'filter' => [ - 'host_group' => 'Zabbix servers' + 'host_group' => 'Group for Reports Trigger' ], 'date' => [ - 'from' => '2020-10-23 00:00', - 'to' => 'now/d' + 'from' => 'now-2y', + 'to' => 'now' ], 'result' => [ - 'Test trigger to check tag filter on problem page', - 'Test trigger with tag' + 'Reports trigger 0', + 'Reports trigger 1' ] ] ], [ [ 'filter' => [ - 'host_group' => 'Zabbix servers' + 'host_group' => 'Group for Reports Trigger' ], 'date' => [ 'from' => 'now/d', @@ -79,21 +206,23 @@ class testPageReportsTriggerTop extends CLegacyWebTest { [ [ 'filter' => [ - 'host_group' => 'Zabbix servers', - 'host' => 'ЗАББИКС Сервер' + 'host_group' => 'Group for Reports Trigger', + 'host' => 'Host for Reports Trigger' ], 'date' => [ - 'from' => '2020-10-23 17:00' + // Time is now - 2 years exactly. + 'from' => date('Y-m-d H:i', time()-62985600) ], 'result' => [ - 'Test trigger with tag' + 'Reports trigger 0', + 'Reports trigger 1' ] ] ], [ [ 'filter' => [ - 'host_group' => 'Zabbix servers', + 'host_group' => 'Group for Reports Trigger', 'host' => 'Host ZBX6663' ], 'date' => [ @@ -105,39 +234,40 @@ class testPageReportsTriggerTop extends CLegacyWebTest { [ [ 'filter' => [ - 'host_group' => 'Zabbix servers', - 'host' => 'ЗАББИКС Сервер' + 'host_group' => 'Group for Reports Trigger', + 'host' => 'Host for Reports Trigger' ], 'date' => [ - 'from' => '2020-10-22 04:01', - 'to' => '2020-10-24 04:01' + // Time around 1 year ago. + 'from' => date('Y-m-d H:i', time()-31449700), + 'to' => date('Y-m-d H:i', time()-31449500) ], 'result' => [ - 'Test trigger to check tag filter on problem page', - 'Test trigger with tag' + 'Reports trigger 0' ] ] ], [ [ 'filter' => [ - 'host_group' => 'Zabbix servers', - 'host' => 'ЗАББИКС Сервер' + 'host_group' => 'Group for Reports Trigger', + 'host' => 'Host for Reports Trigger' ], 'date' => [ - 'from' => '2020-10-26 00:00', - 'to' => 'now/d' + 'from' => date('Y-m-d H:i', time()-5183000), + 'to' => 'now-1d/d' ] ] ], [ [ 'date' => [ - 'from' => '2020-10-23 15:35', - 'to' => '2020-10-23 15:36' + // Time around 3 months ago. + 'from' => date('Y-m-d H:i', time()-7872400), + 'to' => date('Y-m-d H:i', time()-7870800) ], 'result' => [ - 'Trigger for tag permissions MySQL' + 'Reports trigger 2' ] ] ], @@ -145,16 +275,16 @@ class testPageReportsTriggerTop extends CLegacyWebTest { [ 'filter' => [ 'severities' => [ - 'Average', + 'Warning', 'High', 'Disaster' ] ], 'date' => [ - 'from' => '2020-10-22 00:00' + 'from' => 'now-2y' ], 'result' => [ - 'Test trigger to check tag filter on problem page' + 'Reports trigger 2' ] ] ], @@ -167,19 +297,20 @@ class testPageReportsTriggerTop extends CLegacyWebTest { ] ], 'date' => [ - 'from' => '2020-10-22 00:00' + 'from' => 'now-2y' ] ] ], [ [ 'date' => [ - 'from' => '2020-10-23 15:33', - 'to' => '2020-10-23 15:36' + // Time interval 3 -2 months ago. + 'from' => date('Y-m-d H:i', time()-7872400), + 'to' => date('Y-m-d H:i', time()-5183000) ], 'result' => [ - 'Test trigger to check tag filter on problem page', - 'Trigger for tag permissions MySQL' + 'Reports trigger 2', + 'Reports trigger 3' ] ] ] @@ -196,33 +327,17 @@ class testPageReportsTriggerTop extends CLegacyWebTest { $this->zbxTestClickButtonText('Reset'); $this->zbxTestWaitForPageToLoad(); + $filter_form = $this->query('name:zbx_filter')->asForm()->one(); + if (array_key_exists('filter', $data)) { $filter = $data['filter']; if (array_key_exists('host_group', $filter)) { - $this->zbxTestClickButtonMultiselect('groupids_'); - $this->zbxTestLaunchOverlayDialog('Host groups'); - $this->zbxTestClickLinkTextWait($filter['host_group']); - $this->zbxTestWaitUntilElementNotVisible(WebDriverBy::xpath('//div[contains(@class, "overlay-dialogue modal")]')); - $this->zbxTestMultiselectAssertSelected('groupids_', $filter['host_group']); + $filter_form->fill(['Host groups' => $filter['host_group']]); } if (array_key_exists('host', $filter)) { - $this->zbxTestClickButtonMultiselect('hostids_'); - $this->zbxTestLaunchOverlayDialog('Hosts'); - COverlayDialogElement::find()->one()->query('class:multiselect-button')->one()->click(); - $this->zbxTestLaunchOverlayDialog('Host groups'); - $groups_form = $this->query('name:hostGroupsform')->one(); - $all_groups = $groups_form->query('xpath:.//a')->all()->asText(); - $groups = ['Host group for tag permissions', 'Zabbix servers', 'ZBX6648 All Triggers', - 'ZBX6648 Disabled Triggers', 'ZBX6648 Enabled Triggers']; - $this->assertTrue(count(array_diff($groups, $all_groups)) === 0); - $groups_form->query('xpath://a[text()="Zabbix servers"]')->one()->click(); - COverlayDialogElement::find()->one()->waitUntilReady(); - $this->zbxTestClickXpathWait('//div[contains(@class, "overlay-dialogue modal")]//a[text()="'. - $filter['host'].'"]'); - $this->zbxTestWaitUntilElementNotVisible(WebDriverBy::xpath('//div[contains(@class, "overlay-dialogue modal")]')); - $this->zbxTestMultiselectAssertSelected('hostids_', $filter['host']); + $filter_form->fill(['Hosts' => $filter['host']]); } if (array_key_exists('severities', $filter)) { |