You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

3524 lines
87 KiB

1 year ago
<?php
/*
** Zabbix
** Copyright (C) 2001-2023 Zabbix SIA
**
** 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.
**/
require_once dirname(__FILE__).'/../../include/CWebTest.php';
require_once dirname(__FILE__).'/../behaviors/CMessageBehavior.php';
class testCalculatedFormula extends CWebTest {
public $url;
/**
* Attach MessageBehavior to the test.
*
* @return array
*/
public function getBehaviors() {
return [
CMessageBehavior::class
];
}
public function getCommonValidationData() {
return [
[
[
'expected' => TEST_BAD,
'formula' => '',
'error' => 'Incorrect value for field "Formula": cannot be empty.'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'something',
'error' => 'Invalid parameter "/1/params": incorrect expression starting from "something".'
]
],
// abs() function.
[
[
'formula' => 'abs(change(/Trapper/trap[1]))'
]
],
[
[
'formula' => "abs(change(//trap[1]))"
]
],
// acos() function.
[
[
'formula' => "acos(last(//trap))"
]
],
// asin() function.
[
[
'formula' => "asin(last(//trap))"
]
],
// avg() function.
[
[
'formula' => 'avg(/host/trap,99h)'
]
],
[
[
'formula' => 'avg(/host/trap,"{$USERMACRO}h")'
]
],
[
[
'formula' => 'avg(/host/trap,{$USERMACRO})'
]
],
[
[
'formula' => "avg(//trap,19)"
]
],
// atan() function.
[
[
'formula' => "atan(last(//trap))"
]
],
// baselinedev() function.
[
[
'formula' => 'baselinedev(/host/key, 1h:now/h-1h, "h", 6)'
]
],
[
[
'formula' => 'baselinedev(/host/key, 1d:now/d-1d, "d", 5)'
]
],
[
[
'formula' => 'baselinedev(/host/key, 1w:now/w-1w, "w", 4)'
]
],
[
[
'formula' => 'baselinedev(/host/key, 1w:now/w, "y", 3)'
]
],
[
[
'formula' => 'baselinedev(/host/key, 1M:now/M-1M, "M", 2)'
]
],
[
[
'formula' => 'baselinedev(/host/key, 1y:now/y-1y, "y", 1)'
]
],
// baselinewma() function.
[
[
'formula' => 'baselinewma(/host/key, 1h:now/h-1h, "h", 6)'
]
],
[
[
'formula' => 'baselinewma(/host/key, 1d:now/d-1d, "d", 5)'
]
],
[
[
'formula' => 'baselinewma(/host/key, 1w:now/w-1w, "w", 4)'
]
],
[
[
'formula' => 'baselinewma(/host/key, 1w:now/w, "y", 3)'
]
],
[
[
'formula' => 'baselinewma(/host/key, 1M:now/M-1M, "M", 2)'
]
],
[
[
'formula' => 'baselinewma(/host/key, 1y:now/y-1y, "y", 1)'
]
],
// bitand() function.
[
[
'formula' => "bitand(last(//key,#5:now-24h),123)"
]
],
[
[
'formula' => 'bitand(last(/host/key,"{$USERMACRO}:now-24h"),123)'
]
],
// bucket_percentile() function.
[
[
'formula' => 'bucket_percentile(/host/trap[*],30m,70)'
]
],
// cbrt() function.
[
[
'formula' => "cbrt(last(//trap, {\$USERMACRO}))"
]
],
// ceil() function.
[
[
'formula' => "ceil(last(//trap,{\$USERMACRO}))"
]
],
// change() function.
[
[
'formula' => "change(//trap[1])"
]
],
// changecount() function.
[
[
'formula' => 'changecount(/host/key,10)'
]
],
[
[
'formula' => 'changecount(/host/key,#5:now-5h)'
]
],
[
[
'formula' => 'changecount(/host/key,#10)'
]
],
[
[
'formula' => 'changecount(/host/key,5,)'
]
],
[
[
'formula' => 'changecount(/host/key,#10,"all")'
]
],
[
[
'formula' => 'changecount(/host/key,#10,"dec")'
]
],
[
[
'formula' => 'changecount(/host/key,#10,"inc")'
]
],
[
[
'formula' => 'changecount(/host/key,5s)'
]
],
[
[
'formula' => 'changecount(/host/key,5m)'
]
],
[
[
'formula' => 'changecount(/host/key,5h)'
]
],
[
[
'formula' => 'changecount(/host/key,5d)'
]
],
[
[
'formula' => 'changecount(/host/key,5w)'
]
],
// count() function.
[
[
'formula' => 'count(/host/trap,5:now/d)'
]
],
[
[
'formula' => 'count(/host/trap,#4:now-5h,"eq")'
]
],
[
[
'formula' => 'count(/host/trap,1m,,"0")'
]
],
[
[
'formula' => 'count(/host/trap,"{$USERMACRO}m",,"0")'
]
],
[
[
'formula' => 'count(/host/trap,#10,"like",7)'
]
],
[
[
'formula' => 'count(/host/trap,#10,"ge","99")'
]
],
// count() function with foreach aggregated functions
[
[
'formula' => 'count(exists_foreach(/host/trap))'
]
],
[
[
'formula' => 'count(last_foreach(/host/trap,1h))'
]
],
[
[
'formula' => 'count(last_foreach(/*/trap))'
]
],
[
[
'formula' => 'count(count_foreach(/host/trap,1))'
]
],
[
[
'formula' => 'count(avg_foreach(/host/trap,1))'
]
],
[
[
'formula' => 'count(max_foreach(/host/trap,1))'
]
],
[
[
'formula' => 'count(min_foreach(/host/trap,1))'
]
],
[
[
'formula' => 'count(sum_foreach(/host/trap,1))'
]
],
[
[
'formula' => 'item_count(/host/trap)'
]
],
[
[
'formula' => 'item_count(/*/trap)'
]
],
[
[
'formula' => 'item_count(/host/trap[*])'
]
],
[
[
'formula' => 'item_count(/*/trap?[group="grp"])'
]
],
// cos() function.
[
[
'formula' => "cos(last(//trap,{\$USERMACRO}))"
]
],
// cosh() function.
[
[
'formula' => "cosh(last(//trap))"
]
],
// cot() function.
[
[
'formula' => "cot(last(//trap))"
]
],
// degrees() function.
[
[
'formula' => "degrees(last(//trap))"
]
],
// time and date functions.
[
[
'formula' => 'date()'
]
],
[
[
'formula' => 'dayofmonth()'
]
],
[
[
'formula' => 'dayofweek()'
]
],
[
[
'formula' => 'time()'
]
],
// e() function.
[
[
'formula' => 'e()'
]
],
// exp() function.
[
[
'formula' => "exp(last(//trap))"
]
],
// expm1() function.
[
[
'formula' => "expm1(last(//trap,{\$USERMACRO}))"
]
],
// find() function.
[
[
'formula' => 'find(/host/trap,,"iregexp",7)'
]
],
[
[
'formula' => 'find(/host/trap,,"iregexp")'
]
],
[
[
'formula' => 'find(/host/trap,,,"5")'
]
],
[
[
'formula' => 'find(/host/trap,#10,"ne","test")'
]
],
[
[
'formula' => 'find(/host/trap,#10,"gt",10)'
]
],
[
[
'formula' => 'find(/host/trap,#10,"lt",4)'
]
],
[
[
'formula' => 'find(/host/trap,#10,"le","5")'
]
],
[
[
'formula' => 'find(/host/trap,#10,"bitand",777)'
]
],
[
[
'formula' => 'find(/host/trap,#10,"regexp","expression")'
]
],
[
[
'formula' => 'find(/host/trap,#10,"iregexp","20")'
]
],
// floor() function.
[
[
'formula' => "floor(last(//trap,{\$USERMACRO}))"
]
],
// forecast() function.
[
[
'formula' => 'forecast(/host/trap,#5,25h)'
]
],
[
[
'formula' => 'forecast(/host/trap,#5,"25h","linear")'
]
],
[
[
'formula' => 'forecast(/host/trap,#4:now-5h,25h,"polynomial6")'
]
],
[
[
'formula' => 'forecast(/host/trap,#5,25h,"exponential", "value")'
]
],
[
[
'formula' => 'forecast(/host/trap,"{$USERMACRO}:now/d",25h,"logarithmic","min")'
]
],
[
[
'formula' => 'forecast(/host/trap,#5,25h,"power","delta")'
]
],
[
[
'formula' => 'forecast(/host/trap,5:now/d,25h, ,"avg")'
]
],
[
[
'formula' => 'forecast(/host/trap,#5,25h,,)'
]
],
[
[
'formula' => 'forecast(/host/trap,#1,0)'
]
],
[
[
'formula' => "forecast(//trap,#1,0)"
]
],
// fuzzytime() function.
[
[
'formula' => 'fuzzytime(/host/trap,"{$USERMACRO}s")'
]
],
[
[
'formula' => 'fuzzytime(/host/trap,"5h")'
]
],
[
[
'formula' => 'fuzzytime(/host/trap,5h)'
]
],
// histogram_quantile() function.
[
[
'formula' => 'histogram_quantile(0.7,bucket_rate_foreach(/*/trap,30m))'
]
],
[
[
'formula' => "histogram_quantile(0.3,1.0,last(//trap[1.0]),7.5,last(//trap[7.5]),\"+Inf\",last(//trap[Inf]))"
]
],
// last() function.
[
[
'formula' => 'last(/host/trap)'
]
],
[
[
'formula' => 'last(/host/trap,#3)'
]
],
[
[
'formula' => 'last(/host/trap,{$USERMACRO})'
]
],
// log() function.
[
[
'formula' => "log(last(//trap))"
]
],
// log10() function.
[
[
'formula' => "log10(last(//trap,{\$USERMACRO}))"
]
],
// length() function
[
[
'formula' => 'length(last(/host/key))'
]
],
// logeventid() function.
[
[
'formula' => 'logeventid(/host/trap)'
]
],
[
[
'formula' => 'logeventid(/Trapper/trap[4],,"^error")'
]
],
// logseverity() function.
[
[
'formula' => 'logseverity(/Trapper/trap[4],)'
]
],
// logsource() function.
[
[
'formula' => 'logsource(/Trapper/trap[4],#3:now-1h,"^error")'
]
],
[
[
'formula' => 'logsource(/Trapper/trap[4],"{$USERMACRO}:now-1h","^error")'
]
],
// max() function.
[
[
'formula' => 'max(/host/trap,1w)'
]
],
// min() function.
[
[
'formula' => "min(//trap,\"#4:now-{\$USERMACRO}m\")"
]
],
// mod() function.
[
[
'formula' => "mod(last(//trap),2s)"
]
],
// monoinc() function.
[
[
'formula' => 'monoinc(/host/trap,#5,"weak")'
]
],
[
[
'formula' => 'monoinc(/host/trap,#5)'
]
],
[
[
'formula' => 'monoinc(/host/trap[*],#5)'
]
],
[
[
'formula' => 'monoinc(/host/trap[*],#5:now-1w)'
]
],
[
[
'formula' => 'monoinc(/host/trap[*],#5:now-1w,"strict")'
]
],
// monodec() function.
[
[
'formula' => 'monodec(/host/trap,#5)'
]
],
[
[
'formula' => 'monodec(/host/trap[*],#5)'
]
],
[
[
'formula' => 'monodec(/host/trap,#5,"weak")'
]
],
[
[
'formula' => 'monodec(/host/trap[*],#5:now-1w,"strict")'
]
],
[
[
'formula' => 'monodec(/host/trap[*],#5:now-1w)'
]
],
// nodata() function.
[
[
'formula' => 'nodata(/host/trap,30d)'
]
],
[
[
'formula' => 'nodata(/host/trap,"30d")'
]
],
// now() function.
[
[
'formula' => 'now()'
]
],
// percentile() function.
[
[
'formula' => 'percentile(/host/trap,#4:now-5h,0)'
]
],
// pi() function.
[
[
'formula' => 'pi()'
]
],
// power() function.
[
[
'formula' => "power(last(//trap,#1),2)"
]
],
// rand()function.
[
[
'formula' => 'rand()'
]
],
// radians()function.
[
[
'formula' => "radians(last(//trap))"
]
],
// rate() function.
[
[
'formula' => 'rate(/host/trap,1h:now-30m)'
]
],
[
[
'formula' => "rate(//trap,50m)"
]
],
// round()function.
[
[
'formula' => "round(last(//trap),2)"
]
],
// sum() function.
[
[
'formula' => 'sum(/host/trap,5:now/d)'
]
],
[
[
'formula' => 'sum(/host/trap,"5:{$USERMACRO}")'
]
],
[
[
'formula' => 'sum(/host/trap,"5:now/{$USERMACRO}")'
]
],
// signum()function.
[
[
'formula' => "signum(last(//trap,{\$USERMACRO}))"
]
],
// sin()function.
[
[
'formula' => "sin(last(//trap))"
]
],
// sinh()function.
[
[
'formula' => "sinh(last(//trap))"
]
],
// sqrt()function.
[
[
'formula' => "sqrt(last(//trap,{\$USERMACRO}))"
]
],
// tan()function.
[
[
'formula' => "tan(last(//trap,{\$USERMACRO}))"
]
],
// timeleft() function.
[
[
'formula' => 'timeleft(/host/trap,19s,0)'
]
],
[
[
'formula' => 'timeleft(/host/trap,"#6:now-{$USERMACRO}",20G,"exponential")'
]
],
[
[
'formula' => 'timeleft(/host/trap,#6:now-6h,20G,"logarithmic")'
]
],
[
[
'formula' => 'timeleft(/host/trap,"{$USERMACRO}:now-6h",20G,"power")'
]
],
// truncate() function
[
[
'formula' => "truncate(last(//trap),6)"
]
],
// trendavg() function.
[
[
'formula' => 'trendavg(/host/item,"1M:now/M-{$USERMACRO}")'
]
],
[
[
'formula' => 'trendavg(/host/key,3600:now-3600)'
]
],
// trendcount() function.
[
[
'formula' => 'trendcount(/host/item,1h:now/h)'
]
],
[
[
'formula' => 'trendcount(/host/key,3600:now-3600)'
]
],
// trendmax() function.
[
[
'formula' => 'trendmax(/host/item,7d:now/w)'
]
],
[
[
'formula' => 'trendmax(/host/key,3600:now-3600)'
]
],
// trendmin() function.
[
[
'formula' => 'trendmin(/host/item,7d:now/w-1w)'
]
],
[
[
'formula' => 'trendmin(/host/key,3600:now-3600)'
]
],
[
[
'formula' => 'trendmin(/host/key,"3600:{$USERMACRO}-3600")'
]
],
// trendstl() function.
[
[
'formula' => 'trendstl(/host/item,347h:now/h,300h,7200s)'
]
],
[
[
'formula' => 'trendstl(/host/item,347h:now/h,300h,120m)'
]
],
[
[
'formula' => 'trendstl(/host/item,347d:now/h,3600s,12h,)'
]
],
[
[
'formula' => 'trendstl(/host/item,347h:now/h,60m,12h,)'
]
],
[
[
'formula' => 'trendstl(/host/item,347h:now/m-5m,347h,12h)'
]
],
[
[
'formula' => 'trendstl(/host/item,347h:now/h-1h,347h,12h)'
]
],
[
[
'formula' => 'trendstl(/host/item,347h:now/d-2d,347h,12h)'
]
],
[
[
'formula' => 'trendstl(/host/item,347h:now/w-3w,347h,12h)'
]
],
[
[
'formula' => 'trendstl(/host/item,347h:now/y-3y,347h,12h)'
]
],
[
[
'formula' => 'trendstl(/host/item,347w:now/h,347h,12h,)'
]
],
[
[
'formula' => 'trendstl(/host/item,347h:now/h,347h,12h,,)'
]
],
[
[
'formula' => 'trendstl(/host/item,347h:now/m,347h,12h,,,)'
]
],
[
[
'formula' => 'trendstl(/host/item,347h:now/d,347h,2h)'
]
],
[
[
'formula' => 'trendstl(/host/item,347h:now/M,347h,1d)'
]
],
[
[
'formula' => 'trendstl(/host/item,347h:now/w,347h,1w)'
]
],
[
[
'formula' => 'trendstl(/host/item,347h:now/y,347h,12h,2)'
]
],
[
[
'formula' => 'trendstl(/host/item,347h:now/h,347h,12h,2,)'
]
],
[
[
'formula' => 'trendstl(/host/item,347h:now/h,347h,12h,2,"mad")'
]
],
[
[
'formula' => 'trendstl(/host/item,347h:now/h,347h,12h,2,"stddevpop")'
]
],
[
[
'formula' => 'trendstl(/host/item,347h:now/h,347h,12h,2,"stddevsamp")'
]
],
[
[
'formula' => 'trendstl(/host/item,347h:now/h,347h,12h,2,"mad",7)'
]
],
[
[
'formula' => 'trendstl(/host/item,347h:now/h,347h,12h,2,,7)'
]
],
[
[
'formula' => 'trendstl(/host/item,347h:now/h,347h,12h,,,7)'
]
],
[
[
'formula' => 'trendstl(/host/item,20h:now/h,20h,12w,2.1234)'
]
],
// trendsum() function.
[
[
'formula' => 'trendsum(/host/item,60m:now/h)'
]
],
[
[
'formula' => 'trendsum(/host/key,3600:now-3600)'
]
],
[
[
'formula' => 'trendsum(/host/key,"3600:{$USERMACRO}")'
]
],
// Functions validation.
// abs() function validation.
[
[
'expected' => TEST_BAD,
'formula' => 'abs',
'error' => 'Invalid parameter "/1/params": incorrect expression starting from "abs".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => "Abs(change(/Trapper/trap[1]))",
'error' => 'Invalid parameter "/1/params": incorrect expression starting from "Abs(change(/Trapper/trap[1]))".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'abs(/test/key)',
'error' => 'Invalid parameter "/1/params": incorrect usage of function "abs".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => "abs(change(//trap[1]),1h:now/h)",
'error' => "Invalid parameter \"/1/params\": incorrect expression starting from \"abs(change(//trap[1]),1h:now/h)\"."
]
],
// acos() function validation.
[
[
'expected' => TEST_BAD,
'formula' => "Acos(last(//trap))",
'error' => 'Invalid parameter "/1/params": incorrect expression starting from "Acos(last(//trap))".'
]
],
// avg() function validation.
[
[
'expected' => TEST_BAD,
'formula' => 'avg()',
'error' => 'Invalid parameter "/1/params": invalid number of parameters in function "avg".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'avg(/host/trap,{#LLD}h)',
'error' => 'Invalid parameter "/1/params": incorrect expression starting from "avg(/host/trap,{#LLD}h)".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'avg(/host/trap,"30")',
'error' => 'Invalid parameter "/1/params": invalid second parameter in function "avg".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'avg(/host/trap,"30s")',
'error' => 'Invalid parameter "/1/params": invalid second parameter in function "avg".'
]
],
// baselinedev() function validation.
[
[
'expected' => TEST_BAD,
'formula' => 'baselinedev(/test/trap,1d:now/d-1d,,3)',
'error' => 'Invalid parameter "/1/params": invalid third parameter in function "baselinedev".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'baselinedev(/test/trap,1d:now/d-1d,"d")',
'error' => 'Invalid parameter "/1/params": mandatory parameter is missing in function "baselinedev".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'baselinedev(/test/trap,1d:now/d-1d,"d",0)',
'error' => 'Invalid parameter "/1/params": invalid fourth parameter in function "baselinedev".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'baselinedev(/test/trap,1m:now/m-1m,"d",3)',
'error' => 'Invalid parameter "/1/params": invalid second parameter in function "baselinedev".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'baselinedev(/test/trap,1s:now/s,"h",3)',
'error' => 'Invalid parameter "/1/params": incorrect expression starting from "baselinedev(/test/trap,1s:now/s,"h",3)".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'baselinedev(/test/trap,1h:now/h,"m",3)',
'error' => 'Invalid parameter "/1/params": invalid third parameter in function "baselinedev".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'baselinedev(/test/trap,1h:now/h,"s",3)',
'error' => 'Invalid parameter "/1/params": invalid third parameter in function "baselinedev".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'baselinedev(/test/trap,1h,"h",3)',
'error' => 'Invalid parameter "/1/params": invalid second parameter in function "baselinedev".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'baselinedev(/test/trap,1h:now/h,"h",3.6)',
'error' => 'Invalid parameter "/1/params": invalid fourth parameter in function "baselinedev".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'baselinedev(/test/trap,1h:now/h,"m",120)',
'error' => 'Invalid parameter "/1/params": invalid third parameter in function "baselinedev".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'baselinedev(/test/trap,1h:now/h,"s",120)',
'error' => 'Invalid parameter "/1/params": invalid third parameter in function "baselinedev".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'baselinedev(/test/trap,150m:now/h,"h",12)',
'error' => 'Invalid parameter "/1/params": invalid second parameter in function "baselinedev".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'baselinedev(/test/trap,1h:now/m,"h",12)',
'error' => 'Invalid parameter "/1/params": invalid second parameter in function "baselinedev".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'baselinedev(/host/key,1d:now/d-1d,"d",2,)',
'error' => 'Invalid parameter "/1/params": invalid number of parameters in function "baselinedev".'
]
],
// baselinewma() function validation.
[
[
'expected' => TEST_BAD,
'formula' => 'baselinewma(/test/trap,1d:now/d-1d,,3)',
'error' => 'Invalid parameter "/1/params": invalid third parameter in function "baselinewma".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'baselinewma(/test/trap,1d:now/d-1d,"d")',
'error' => 'Invalid parameter "/1/params": mandatory parameter is missing in function "baselinewma".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'baselinewma(/test/trap,1d:now/d-1d,"d",0)',
'error' => 'Invalid parameter "/1/params": invalid fourth parameter in function "baselinewma".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'baselinewma(/test/trap,1m:now/m-1m,"d",3)',
'error' => 'Invalid parameter "/1/params": invalid second parameter in function "baselinewma".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'baselinewma(/test/trap,1s:now/s,"h",3)',
'error' => 'Invalid parameter "/1/params": incorrect expression starting from "baselinewma(/test/trap,1s:now/s,"h",3)".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'baselinewma(/test/trap,1h:now/h,"m",3)',
'error' => 'Invalid parameter "/1/params": invalid third parameter in function "baselinewma".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'baselinewma(/test/trap,1h:now/h,"s",3)',
'error' => 'Invalid parameter "/1/params": invalid third parameter in function "baselinewma".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'baselinewma(/test/trap,1h,"h",3)',
'error' => 'Invalid parameter "/1/params": invalid second parameter in function "baselinewma".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'baselinewma(/test/trap,1h:now/h,"h",3.6)',
'error' => 'Invalid parameter "/1/params": invalid fourth parameter in function "baselinewma".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'baselinewma(/test/trap,1h:now/h,"m",120)',
'error' => 'Invalid parameter "/1/params": invalid third parameter in function "baselinewma".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'baselinewma(/test/trap,1h:now/h,"s",120)',
'error' => 'Invalid parameter "/1/params": invalid third parameter in function "baselinewma".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'baselinewma(/test/trap,150m:now/h,"h",12)',
'error' => 'Invalid parameter "/1/params": invalid second parameter in function "baselinewma".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'baselinewma(/test/trap,1h:now/m,"h",12)',
'error' => 'Invalid parameter "/1/params": invalid second parameter in function "baselinewma".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'baselinewma(/host/key,1d:now/d-1d,"d",2,)',
'error' => 'Invalid parameter "/1/params": invalid number of parameters in function "baselinewma".'
]
],
// bitand() function validation.
[
[
'expected' => TEST_BAD,
'formula' => 'bitand(last(/*/key,1h:now/h))',
'error' => 'Invalid parameter "/1/params": invalid number of parameters in function "bitand".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => "bitand(last(/host/key,#5:now-#5),123)",
'error' => 'Invalid parameter "/1/params": incorrect expression starting from "bitand(last(/host/key,#5:now-#5),123)".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => "bitand(last(//key,:now-24h),123)",
'error' => 'Invalid parameter "/1/params": incorrect expression starting from "bitand(last(//key,:now-24h),123)".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'bitand(/*/key,1h:now/h,123)',
'error' => 'Invalid parameter "/1/params": incorrect usage of function "bitand".'
]
],
// bucket_percentile() function validation.
[
[
'expected' => TEST_BAD,
'formula' => 'bucket_percentile(/host/trap[*],30m,123)',
'error' => 'Invalid parameter "/1/params": invalid third parameter in function "bucket_percentile".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => "bucket_percentile(//trap[*],#4,10)",
'error' => 'Invalid parameter "/1/params": invalid second parameter in function "bucket_percentile".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'bucket_percentile(host/trap[*],30m,45)',
'error' => 'Invalid parameter "/1/params": incorrect expression starting from "bucket_percentile(host/trap[*],30m,45)".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'bucket_percentile(/host/trap[*],3h)',
'error' => 'Invalid parameter "/1/params": mandatory parameter is missing in function "bucket_percentile".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'bucket_percentile(3h,30)',
'error' => 'Invalid parameter "/1/params": incorrect usage of function "bucket_percentile".'
]
],
// change() function validation.
[
[
'expected' => TEST_BAD,
'formula' => 'change(/Trapper/trap[1],,)',
'error' => 'Invalid parameter "/1/params": invalid number of parameters in function "change".'
]
],
// changecount() function validation.
[
[
'expected' => TEST_BAD,
'formula' => 'changecount(/host/key,#5,"")',
'error' => 'Invalid parameter "/1/params": invalid third parameter in function "changecount".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'changecount(/host/key,#5,"something")',
'error' => 'Invalid parameter "/1/params": invalid third parameter in function "changecount".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'changecount(/host/key,#5,"all",)',
'error' => 'Invalid parameter "/1/params": invalid number of parameters in function "changecount".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'changecount(/host/key,7,all)',
'error' => 'Invalid parameter "/1/params": incorrect expression starting from "changecount(/host/key,7,all)".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'changecount(/host/key,5M)',
'error' => 'Invalid parameter "/1/params": invalid second parameter in function "changecount".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'changecount(/host/key,5y)',
'error' => 'Invalid parameter "/1/params": invalid second parameter in function "changecount".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'changecount(5w)',
'error' => 'Invalid parameter "/1/params": incorrect usage of function "changecount".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'changecount(,5w)',
'error' => 'Invalid parameter "/1/params": incorrect expression starting from "changecount(,5w)".'
]
],
// count() function validation.
[
[
'expected' => TEST_BAD,
'formula' => 'count(/host/trap,999999999999999)',
'error' => 'Invalid parameter "/1/params": invalid second parameter in function "count".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'count(/host/trap,"99m")',
'error' => 'Invalid parameter "/1/params": invalid second parameter in function "count".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'count(/host/key,"3600:now-3600")',
'error' => 'Invalid parameter "/1/params": invalid second parameter in function "count".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'count(/host/trap,:now/d)',
'error' => 'Invalid parameter "/1/params": incorrect expression starting from "count(/host/trap,:now/d)".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'count(/host/trap,:now-5h,"eq")',
'error' => 'Invalid parameter "/1/params": incorrect expression starting from "count(/host/trap,:now-5h,"eq")".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'count(/host/trap,#4:now-5h,"1","eq")',
'error' => 'Invalid parameter "/1/params": invalid third parameter in function "count".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'count(1)',
'error' => 'Invalid parameter "/1/params": incorrect usage of function "count".'
]
],
// count() function with foreach aggregated functions validation
[
[
'expected' => TEST_BAD,
'formula' => 'count(exists_foreach(/host/trap,1,1))',
'error' => 'Invalid parameter "/1/params": invalid number of parameters in function "exists_foreach".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'count(exists_foreach(/host/trap,eg))',
'error' => 'Invalid parameter "/1/params": incorrect expression starting from "count(exists_foreach(/host/trap,eg))".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'count(exists_foreach(/host/trap,#7,eg))',
'error' => 'Invalid parameter "/1/params": incorrect expression starting from "count(exists_foreach(/host/trap,#7,eg))".'
]
],
// Unsupported operator.
[
[
'expected' => TEST_BAD,
'formula' => 'count(max_foreach(/host/trap,1h),1)',
'error' => 'Invalid parameter "/1/params": incorrect usage of function "count".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'count(max_foreach(/host/trap,1h),"x","2")',
'error' => 'Invalid parameter "/1/params": incorrect usage of function "count".'
]
],
// Pattern not provided with operator.
[
[
'expected' => TEST_BAD,
'formula' => 'count(max_foreach(/host/trap,1h),"like", )',
'error' => 'Invalid parameter "/1/params": incorrect expression starting from "count(max_foreach(/host/trap,1h),"like", )".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'count(max_foreach(/host/trap,1h),)',
'error' => 'Invalid parameter "/1/params": incorrect expression starting from "count(max_foreach(/host/trap,1h),)".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'count(max_foreach(/host/trap,1h),,)',
'error' => 'Invalid parameter "/1/params": incorrect expression starting from "count(max_foreach(/host/trap,1h),,)".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'count(max_foreach(/host/trap,1h), ,)',
'error' => 'Invalid parameter "/1/params": incorrect expression starting from "count(max_foreach(/host/trap,1h), ,)".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'item_count(/host/trap,1,eg)',
'error' => 'Invalid parameter "/1/params": incorrect expression starting from "item_count(/host/trap,1,eg)".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'item_count(/host/trap,#1,1,eg)',
'error' => 'Invalid parameter "/1/params": incorrect expression starting from "item_count(/host/trap,#1,1,eg)".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'item_count(1)',
'error' => 'Invalid parameter "/1/params": incorrect usage of function "item_count".'
]
],
// cot() function validation.
[
[
'expected' => TEST_BAD,
'formula' => "coT(last(//trap))",
'error' => "Invalid parameter \"/1/params\": incorrect expression starting from \"coT(last(//trap))\"."
]
],
// degrees() function validation.
[
[
'expected' => TEST_BAD,
'formula' => "Degrees(last(//trap))",
'error' => 'Invalid parameter "/1/params": incorrect expression starting from "Degrees(last(//trap))".'
]
],
// date() function validation.
[
[
'expected' => TEST_BAD,
'formula' => 'date(/host/trap)',
'error' => 'Invalid parameter "/1/params": incorrect usage of function "date".'
]
],
// dayofmonth() function validation.
[
[
'expected' => TEST_BAD,
'formula' => 'dayofmonth(1)',
'error' => 'Invalid parameter "/1/params": invalid number of parameters in function "dayofmonth".'
]
],
// dayofweek() function validation.
[
[
'expected' => TEST_BAD,
'formula' => 'dayofweek',
'error' => 'Invalid parameter "/1/params": incorrect expression starting from "dayofweek".'
]
],
// find() function validation.
[
[
'expected' => TEST_BAD,
'formula' => 'find(/host/trap,1M)',
'error' => 'Invalid parameter "/1/params": invalid second parameter in function "find".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'FIND(/host/trap,#10,"le","5")',
'error' => 'Invalid parameter "/1/params": incorrect expression starting from "FIND(/host/trap,#10,"le","5")".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'find(/host/trap,#4:now-5h,eq,1)',
'error' => 'Invalid parameter "/1/params": incorrect expression starting from "find(/host/trap,#4:now-5h,eq,1)".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'find(/host/trap,#4:now-5h,"test",1)',
'error' => 'Invalid parameter "/1/params": invalid third parameter in function "find".'
]
],
// forecast() function validation.
[
[
'expected' => TEST_BAD,
'formula' => 'forecast(/host/trap,#77)',
'error' => 'Invalid parameter "/1/params": mandatory parameter is missing in function "forecast".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'forecast(/host/trap,:now/d,25h,"logarithmic","min")',
'error' => 'Invalid parameter "/1/params": incorrect expression starting from "forecast(/host/trap,:now/d,25h,"logarithmic","min")".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'forecast(/host/trap,":now/d",25h,"logarithmic","min")',
'error' => 'Invalid parameter "/1/params": invalid second parameter in function "forecast".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'forecast(/host/trap,#7,,)',
'error' => 'Invalid parameter "/1/params": invalid third parameter in function "forecast".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'forecast(/host/trap,0)',
'error' => 'Invalid parameter "/1/params": invalid second parameter in function "forecast".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'forecast(/host/trap,#1,"test")',
'error' => 'Invalid parameter "/1/params": invalid third parameter in function "forecast".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'forecast(/host/trap,#5,25h,"")',
'error' => 'Invalid parameter "/1/params": invalid fourth parameter in function "forecast".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'forecast(/host/trap,#5,25h,"polynomial7")',
'error' => 'Invalid parameter "/1/params": invalid fourth parameter in function "forecast".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'forecast(/host/trap,#5,25h,"polynomial1","test")',
'error' => 'Invalid parameter "/1/params": invalid fifth parameter in function "forecast".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'forecast(/host/trap,#5,25h,"polynomial1","")',
'error' => 'Invalid parameter "/1/params": invalid fifth parameter in function "forecast".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'forecast(/*/trap,#1,0)',
'error' => 'Invalid parameter "/1/params": invalid first parameter in function "forecast".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'forecast(/host/trap,"#4:now-5h",25h)',
'error' => 'Invalid parameter "/1/params": invalid second parameter in function "forecast".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'forecast(/host/trap,"5:now/d","25h")',
'error' => 'Invalid parameter "/1/params": invalid second parameter in function "forecast".'
]
],
// fuzzytime() function validation.
[
[
'expected' => TEST_BAD,
'formula' => 'fuzzytime(/host/trap)',
'error' => 'Invalid parameter "/1/params": mandatory parameter is missing in function "fuzzytime".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'fuzzytime(/host/trap,test)',
'error' => 'Invalid parameter "/1/params": incorrect expression starting from "fuzzytime(/host/trap,test)".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'fuzzytime(/*/trap,65w)',
'error' => 'Invalid parameter "/1/params": invalid first parameter in function "fuzzytime".'
]
],
// histogram_quantile() function validation.
[
[
'expected' => TEST_BAD,
'formula' => 'histogram_quantile(0.7,bucket_rate_foreach(/host/trap[*]))',
'error' => 'Invalid parameter "/1/params": mandatory parameter is missing in function "bucket_rate_foreach".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'histogram_quantile(0.7,bucket_rate_foreach(host/trap[*],30m))',
'error' => 'Invalid parameter "/1/params": incorrect expression starting from "histogram_quantile(0.7,bucket_rate_foreach(host/trap[*],30m))".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => "histogram_quantile(test,bucket_rate_foreach(//trap[*],3h))",
'error' => 'Invalid parameter "/1/params": incorrect expression starting from "histogram_quantile(test,bucket_rate_foreach(//trap[*],3h))".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'histogram_quantile(test,1.0,last(/host/trap[1.0]),7.5,last(/host/trap[7.5]),"+Inf",last(/host/trap[Inf]))',
'error' => 'Invalid parameter "/1/params": incorrect expression starting from "histogram_quantile(test,1.0,last(/host/trap[1.0]),7.5,last(/host/trap[7.5]),"+Inf",last(/host/trap[Inf]))".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'histogram_quantile(0.7,test,last(/host/trap[1.0]),7.5,last(/host/trap[7.5]),"+Inf",last(/host/trap[Inf]))',
'error' => 'Invalid parameter "/1/params": incorrect expression starting from "histogram_quantile(0.7,test,last(/host/trap[1.0]),7.5,last(/host/trap[7.5]),"+Inf",last(/host/trap[Inf]))".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => "histogram_quantile(0.7,1.0,last(/host/trap[1.0]))",
'error' => 'Invalid parameter "/1/params": invalid number of parameters in function "histogram_quantile".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'histogram_quantile(0.7,1.0,last(/host/trap[1.0]),7.5,(/host/trap[7.5]),"+Inf",last(/host/trap[Inf]))',
'error' => 'Invalid parameter "/1/params": incorrect expression starting from "histogram_quantile(0.7,1.0,last(/host/trap[1.0]),7.5,(/host/trap[7.5]),"+Inf",last(/host/trap[Inf]))".'
]
],
// last() function validation.
[
[
'expected' => TEST_BAD,
'formula' => 'last()',
'error' => 'Invalid parameter "/1/params": incorrect usage of function "last".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'last(/host/trap,7)',
'error' => 'Invalid parameter "/1/params": invalid second parameter in function "last".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'last(/host/trap,7s)',
'error' => 'Invalid parameter "/1/params": invalid second parameter in function "last".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'last(/host/trap,"#3")',
'error' => 'Invalid parameter "/1/params": invalid second parameter in function "last".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'last(/*/trap,#3:now-1d)',
'error' => 'Invalid parameter "/1/params": invalid first parameter in function "last".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'last(/host/trap,,)',
'error' => 'Invalid parameter "/1/params": invalid number of parameters in function "last".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'last(/*/trap,#3:now-1d)',
'error' => 'Invalid parameter "/1/params": invalid first parameter in function "last".'
]
],
// length() function validation.
[
[
'expected' => TEST_BAD,
'formula' => 'length(/host/trap)',
'error' => 'Invalid parameter "/1/params": incorrect usage of function "length".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'length(/host/trap,7d)',
'error' => 'Invalid parameter "/1/params": incorrect usage of function "length".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'length(last(/host/trap,7s))',
'error' => 'Invalid parameter "/1/params": invalid second parameter in function "last".'
]
],
// logeventid() function validation.
[
[
'expected' => TEST_BAD,
'formula' => 'logeventid(/Trapper/trap[4],^error)',
'error' => 'Invalid parameter "/1/params": incorrect expression starting from "logeventid(/Trapper/trap[4],^error)".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'logeventid(/Trapper/trap[4],1)',
'error' => 'Invalid parameter "/1/params": invalid second parameter in function "logeventid".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'logeventid(/*/trap)',
'error' => 'Invalid parameter "/1/params": invalid first parameter in function "logeventid".'
]
],
// logseverity() function validation.
[
[
'expected' => TEST_BAD,
'formula' => 'logseverity(/host/key,123)',
'error' => 'Invalid parameter "/1/params": invalid second parameter in function "logseverity".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'logseverity(/Trapper/trap[4],^error)',
'error' => 'Invalid parameter "/1/params": incorrect expression starting from "logseverity(/Trapper/trap[4],^error)".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'logseverity(/Trapper/trap[4],,"^error")',
'error' => 'Invalid parameter "/1/params": invalid number of parameters in function "logseverity".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'logseverity(/Trapper/trap[4],1)',
'error' => 'Invalid parameter "/1/params": invalid second parameter in function "logseverity".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'logseverity(/*/key)',
'error' => 'Invalid parameter "/1/params": invalid first parameter in function "logseverity".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'logseverity(/Trapper/trap[4],"High")',
'error' => 'Invalid parameter "/1/params": invalid second parameter in function "logseverity".'
]
],
// logsource() function validation.
[
[
'expected' => TEST_BAD,
'formula' => 'logsource(/*/trap)',
'error' => 'Invalid parameter "/1/params": invalid first parameter in function "logsource".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'logsource(/Trapper/trap[4],#3:now-#3,"^error")',
'error' => 'Invalid parameter "/1/params": incorrect expression starting from "logsource(/Trapper/trap[4],#3:now-#3,"^error")".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'logsource(/Trapper/trap[4],^error)',
'error' => 'Invalid parameter "/1/params": incorrect expression starting from "logsource(/Trapper/trap[4],^error)".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'logsource(/Trapper/trap[4],#2,^error)',
'error' => 'Invalid parameter "/1/params": incorrect expression starting from "logsource(/Trapper/trap[4],#2,^error)".'
]
],
// max() function validation.
[
[
'expected' => TEST_BAD,
'formula' => 'max(/host/trap,,)',
'error' => 'Invalid parameter "/1/params": invalid number of parameters in function "max".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'max(/host/trap,#3d:now-d)',
'error' => 'Invalid parameter "/1/params": incorrect expression starting from "max(/host/trap,#3d:now-d)".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'max(/host/trap,#3d:now-{$USERMACRO})',
'error' => 'Invalid parameter "/1/params": incorrect expression starting from "max(/host/trap,#3d:now-{$USERMACRO})".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'max(/host/trap,#3d:now-{#LLD})',
'error' => 'Invalid parameter "/1/params": incorrect expression starting from "max(/host/trap,#3d:now-{#LLD})".'
]
],
// min() function validation.
[
[
'expected' => TEST_BAD,
'formula' => 'min(/host/trap,1M)',
'error' => 'Invalid parameter "/1/params": invalid second parameter in function "min".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'min(/*/trap,#4:now-1m)',
'error' => 'Invalid parameter "/1/params": invalid first parameter in function "min".'
]
],
// monoinc() function validation.
[
[
'expected' => TEST_BAD,
'formula' => 'monoinc(/*/trap[1],#5:now-1h)',
'error' => 'Invalid parameter "/1/params": invalid first parameter in function "monoinc".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'monoinc(/host/*,#5:now-1h)',
'error' => 'Invalid parameter "/1/params": invalid first parameter in function "monoinc".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'monoinc(/host/trap,#5:now-1h,weak)',
'error' => 'Invalid parameter "/1/params": incorrect expression starting from "monoinc(/host/trap,#5:now-1h,weak)".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'monoinc(/host/trap,#5:now-1h,"strict",1)',
'error' => 'Invalid parameter "/1/params": invalid number of parameters in function "monoinc".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'monoinc(/host/trap,#5:now-1h,"test")',
'error' => 'Invalid parameter "/1/params": invalid third parameter in function "monoinc".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'monoinc(/host/trap,now-1h,"weak")',
'error' => 'Invalid parameter "/1/params": incorrect expression starting from "monoinc(/host/trap,now-1h,"weak")".'
]
],
// monodec() function validation.
[
[
'expected' => TEST_BAD,
'formula' => 'monodec(/*/trap[1],#5:now-1h)',
'error' => 'Invalid parameter "/1/params": invalid first parameter in function "monodec".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'monodec(/host/*,#5:now-1h)',
'error' => 'Invalid parameter "/1/params": invalid first parameter in function "monodec".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'monodec(/host/trap,#5:now-1h,weak)',
'error' => 'Invalid parameter "/1/params": incorrect expression starting from "monodec(/host/trap,#5:now-1h,weak)".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'monodec(/host/trap,#5:now-1h,"strict",1)',
'error' => 'Invalid parameter "/1/params": invalid number of parameters in function "monodec".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'monodec(/host/trap,#5:now-1h,"test")',
'error' => 'Invalid parameter "/1/params": invalid third parameter in function "monodec".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'monodec(/host/trap,now-1h,"weak")',
'error' => 'Invalid parameter "/1/params": incorrect expression starting from "monodec(/host/trap,now-1h,"weak")".'
]
],
// nodata() function validation.
[
[
'expected' => TEST_BAD,
'formula' => 'nodata',
'error' => 'Invalid parameter "/1/params": incorrect expression starting from "nodata".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'nodata()',
'error' => 'Invalid parameter "/1/params": incorrect usage of function "nodata".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'nodata(/host/trap,0s)',
'error' => 'Invalid parameter "/1/params": invalid second parameter in function "nodata".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'nodata(/*/trap,30)',
'error' => 'Invalid parameter "/1/params": invalid first parameter in function "nodata".'
]
],
// now() function validation.
[
[
'expected' => TEST_BAD,
'formula' => 'now',
'error' => 'Invalid parameter "/1/params": incorrect expression starting from "now".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'now(/host/trap)',
'error' => 'Invalid parameter "/1/params": incorrect usage of function "now".'
]
],
// percentile() function validation.
[
[
'expected' => TEST_BAD,
'formula' => 'percentile(/host/trap,,5)',
'error' => 'Invalid parameter "/1/params": invalid second parameter in function "percentile".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'percentile(/host/trap,test,test)',
'error' => 'Invalid parameter "/1/params": incorrect expression starting from "percentile(/host/trap,test,test)".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'percentile(/*/trap,#5,100)',
'error' => 'Invalid parameter "/1/params": invalid first parameter in function "percentile".'
]
],
// sum() function validation.
[
[
'expected' => TEST_BAD,
'formula' => 'sum(/host/trap)',
'error' => 'Invalid parameter "/1/params": mandatory parameter is missing in function "sum".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'sum(/host/trap,":now/d")',
'error' => 'Invalid parameter "/1/params": invalid second parameter in function "sum".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'sum(/host/trap,:now/d)',
'error' => 'Invalid parameter "/1/params": incorrect expression starting from "sum(/host/trap,:now/d)".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'sum(/host/trap,,)',
'error' => 'Invalid parameter "/1/params": invalid number of parameters in function "sum".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'sum(/host/trap,#3d:now-d)',
'error' => 'Invalid parameter "/1/params": incorrect expression starting from "sum(/host/trap,#3d:now-d)".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'sum(/host/trap,60:now/60)',
'error' => 'Invalid parameter "/1/params": incorrect expression starting from "sum(/host/trap,60:now/60)".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'sum(/host/trap,a)',
'error' => 'Invalid parameter "/1/params": incorrect expression starting from "sum(/host/trap,a)".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'sum(/host/trap,1Y)',
'error' => 'Invalid parameter "/1/params": incorrect expression starting from "sum(/host/trap,1Y)".'
]
],
// time() function validation.
[
[
'expected' => TEST_BAD,
'formula' => 'Date()',
'error' => 'Invalid parameter "/1/params": incorrect expression starting from "Date()".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'Dayofweek()',
'error' => 'Invalid parameter "/1/params": incorrect expression starting from "Dayofweek()".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'time(/host/trap)',
'error' => 'Invalid parameter "/1/params": incorrect usage of function "time".'
]
],
// timeleft() function validation.
[
[
'expected' => TEST_BAD,
'formula' => 'timeleft(/host/trap,5,,"logarithmic")',
'error' => 'Invalid parameter "/1/params": invalid third parameter in function "timeleft".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'timeleft(/host/trap,,20G,"power")',
'error' => 'Invalid parameter "/1/params": invalid second parameter in function "timeleft".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'timeleft(/host/trap,5M,"20G","power")',
'error' => 'Invalid parameter "/1/params": invalid second parameter in function "timeleft".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'timeleft(/host/trap,5,20G,"test")',
'error' => 'Invalid parameter "/1/params": invalid fourth parameter in function "timeleft".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'timeleft(/*/trap,#100,1M)',
'error' => 'Invalid parameter "/1/params": invalid first parameter in function "timeleft".'
]
],
// trendavg() function validation.
[
[
'expected' => TEST_BAD,
'formula' => 'trendavg(/host/item)',
'error' => 'Invalid parameter "/1/params": mandatory parameter is missing in function "trendavg".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'trendavg(/host/key,:now-3600)',
'error' => 'Invalid parameter "/1/params": incorrect expression starting from "trendavg(/host/key,:now-3600)".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'trendavg(/host/key,":now-3600")',
'error' => 'Invalid parameter "/1/params": invalid second parameter in function "trendavg".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'trendavg(/host/key,30m:now-30m)',
'error' => 'Invalid parameter "/1/params": invalid second parameter in function "trendavg".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'trendavg(/host/item,,)',
'error' => 'Invalid parameter "/1/params": invalid number of parameters in function "trendavg".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'trendavg(/host/item,0)',
'error' => 'Invalid parameter "/1/params": invalid second parameter in function "trendavg".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'trendavg(/host/item,-1h)',
'error' => 'Invalid parameter "/1/params": incorrect expression starting from "trendavg(/host/item,-1h)".'
]
],
// trendcount() function validation.
[
[
'expected' => TEST_BAD,
'formula' => 'trendcount(/host/item)',
'error' => 'Invalid parameter "/1/params": mandatory parameter is missing in function "trendcount".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'trendcount(/host/key,30:now-30)',
'error' => 'Invalid parameter "/1/params": invalid second parameter in function "trendcount".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'trendcount(/host/key,0:now-0h)',
'error' => 'Invalid parameter "/1/params": invalid second parameter in function "trendcount".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'trendcount(/host/item,0)',
'error' => 'Invalid parameter "/1/params": invalid second parameter in function "trendcount".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'trendcount(/host/item,-1h)',
'error' => 'Invalid parameter "/1/params": incorrect expression starting from "trendcount(/host/item,-1h)".'
]
],
// trendmax() function validation.
[
[
'expected' => TEST_BAD,
'formula' => 'trendmax(/host/item,1h)',
'error' => 'Invalid parameter "/1/params": invalid second parameter in function "trendmax".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'trendmax(/host/key,30s:now-30s)',
'error' => 'Invalid parameter "/1/params": invalid second parameter in function "trendmax".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'trendmax(/host/item,:now/w)',
'error' => 'Invalid parameter "/1/params": incorrect expression starting from "trendmax(/host/item,:now/w)".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'trendmax(/host/item,0d:now/d)',
'error' => 'Invalid parameter "/1/params": invalid second parameter in function "trendmax".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'trendmax(/host/item,0)',
'error' => 'Invalid parameter "/1/params": invalid second parameter in function "trendmax".'
]
],
// trendmin() function validation.
[
[
'expected' => TEST_BAD,
'formula' => 'trendmin(/host/item)',
'error' => 'Invalid parameter "/1/params": mandatory parameter is missing in function "trendmin".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'trendmin(/host/key,59m:now-59m)',
'error' => 'Invalid parameter "/1/params": invalid second parameter in function "trendmin".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'trendmin(/host/key,now/d-2d)',
'error' => 'Invalid parameter "/1/params": incorrect expression starting from "trendmin(/host/key,now/d-2d)".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'trendmin(/host/item,,)',
'error' => 'Invalid parameter "/1/params": invalid number of parameters in function "trendmin".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'trendmin(/host/item,1h)',
'error' => 'Invalid parameter "/1/params": invalid second parameter in function "trendmin".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'trendmin(/host/item,0)',
'error' => 'Invalid parameter "/1/params": invalid second parameter in function "trendmin".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'trendmin(/host/item,-1h)',
'error' => 'Invalid parameter "/1/params": incorrect expression starting from "trendmin(/host/item,-1h)".'
]
],
// trendstl() function validation.
[
[
'expected' => TEST_BAD,
'formula' => 'trendstl(/host/item)',
'error' => 'Invalid parameter "/1/params": mandatory parameter is missing in function "trendstl".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'trendstl(/host/item,20h)',
'error' => 'Invalid parameter "/1/params": invalid second parameter in function "trendstl".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'trendstl(/host/item,:now/h,20h,12h,2)',
'error' => 'Invalid parameter "/1/params": incorrect expression starting from "trendstl(/host/item,:now/h,20h,12h,2)".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'trendstl(/host/item,20h:now/h,20.15h,12h,2)',
'error' => 'Invalid parameter "/1/params": invalid third parameter in function "trendstl".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'trendstl(/host/item,347h:now/h,5m,3h)',
'error' => 'Invalid parameter "/1/params": invalid third parameter in function "trendstl".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'trendstl(/host/item,347h:now/h,70s,3h)',
'error' => 'Invalid parameter "/1/params": invalid third parameter in function "trendstl".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'trendstl(/host/item,20h:now/h,20M,12h,2)',
'error' => 'Invalid parameter "/1/params": invalid third parameter in function "trendstl".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'trendstl(/host/item,20h:now/h,20y,12h,2)',
'error' => 'Invalid parameter "/1/params": invalid third parameter in function "trendstl".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'trendstl(/host/item,347h:now/h,20h,3m)',
'error' => 'Invalid parameter "/1/params": invalid fourth parameter in function "trendstl".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'trendstl(/host/item,347h:now/h,20h,58s)',
'error' => 'Invalid parameter "/1/params": invalid fourth parameter in function "trendstl".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'trendstl(/host/item,20h:now/h,20h,12.23h,2)',
'error' => 'Invalid parameter "/1/params": invalid fourth parameter in function "trendstl".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'trendstl(/host/item,20h:now/h,20h,1h)',
'error' => 'Invalid parameter "/1/params": invalid fourth parameter in function "trendstl".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'trendstl(/host/item,20h:now/h,20h,12M,2)',
'error' => 'Invalid parameter "/1/params": invalid fourth parameter in function "trendstl".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'trendstl(/host/item,20h:now/h,20h,12y,2)',
'error' => 'Invalid parameter "/1/params": invalid fourth parameter in function "trendstl".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'trendstl(/host/item,20h:now/h,20h,12w,0.5)',
'error' => 'Invalid parameter "/1/params": invalid fifth parameter in function "trendstl".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'trendstl(/host/item,20h:now/h,20h,12w,2.12345)',
'error' => 'Invalid parameter "/1/params": invalid fifth parameter in function "trendstl".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'trendstl(/host/item,20h:now/h,20h,12h,0)',
'error' => 'Invalid parameter "/1/params": invalid fifth parameter in function "trendstl".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'trendstl(/host/item,20h:now/h,20h,12h,-3)',
'error' => 'Invalid parameter "/1/params": invalid fifth parameter in function "trendstl".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'trendstl(/host/item,20h:now/h,20h,12w,2,"")',
'error' => 'Invalid parameter "/1/params": invalid sixth parameter in function "trendstl".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'trendstl(/host/item,20h:now/h,20h,12h,2,"bad")',
'error' => 'Invalid parameter "/1/params": invalid sixth parameter in function "trendstl".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'trendstl(/host/item,20h:now/h,20h,12w,2,"mad)',
'error' => 'Invalid parameter "/1/params": incorrect expression starting from "trendstl(/host/item,20h:now/h,20h,12w,2,"mad)".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'trendstl(/host/item,20h:now/h,20h,12w,2,"mad",3)',
'error' => 'Invalid parameter "/1/params": invalid seventh parameter in function "trendstl".'
]
],
// trendsum() function validation.
[
[
'expected' => TEST_BAD,
'formula' => 'trendsum(/host/item)',
'error' => 'Invalid parameter "/1/params": mandatory parameter is missing in function "trendsum".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'trendsum(/host/key,59:now-59)',
'error' => 'Invalid parameter "/1/params": invalid second parameter in function "trendsum".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'trendsum(/host/key,:now/d-2d)',
'error' => 'Invalid parameter "/1/params": incorrect expression starting from "trendsum(/host/key,:now/d-2d)".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'trendsum(/host/item,,)',
'error' => 'Invalid parameter "/1/params": invalid number of parameters in function "trendsum".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'trendsum(/host/item,1h)',
'error' => 'Invalid parameter "/1/params": invalid second parameter in function "trendsum".'
]
],
// rate() function validation.
[
[
'expected' => TEST_BAD,
'formula' => 'rate(/host/item,test)',
'error' => 'Invalid parameter "/1/params": incorrect expression starting from "rate(/host/item,test)".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => "rate(//item,,)",
'error' => 'Invalid parameter "/1/params": invalid number of parameters in function "rate".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'rate(/host/item,)',
'error' => 'Invalid parameter "/1/params": invalid second parameter in function "rate".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'rate(/item,1h:now-30m)',
'error' => 'Invalid parameter "/1/params": incorrect expression starting from "rate(/item,1h:now-30m)".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => "rate(//4321)",
'error' => 'Invalid parameter "/1/params": mandatory parameter is missing in function "rate".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'rate(10h)',
'error' => 'Invalid parameter "/1/params": incorrect usage of function "rate".'
]
],
// Deprecated functions validation.
[
[
'expected' => TEST_BAD,
'formula' => "abschange(//trap)",
'error' => 'Invalid parameter "/1/params": unknown function "abschange".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'regexp(/*/trap,"test")',
'error' => 'Invalid parameter "/1/params": unknown function "regexp".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'regexp(/*/trap)',
'error' => 'Invalid parameter "/1/params": unknown function "regexp".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'iregexp(/*/trap,"test")',
'error' => 'Invalid parameter "/1/params": unknown function "iregexp".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'iregexp(/*/trap)',
'error' => 'Invalid parameter "/1/params": unknown function "iregexp".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'prev(/*/trap)',
'error' => 'Invalid parameter "/1/params": unknown function "prev".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'regexp(/*/trap)',
'error' => 'Invalid parameter "/1/params": unknown function "regexp".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'regexp(/*/trap,"pattern",50s)',
'error' => 'Invalid parameter "/1/params": unknown function "regexp".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'str(/*/trap)',
'error' => 'Invalid parameter "/1/params": unknown function "str".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'str(/*/trap,"pattern",50s)',
'error' => 'Invalid parameter "/1/params": unknown function "str".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'strlen(/*/trap)',
'error' => 'Invalid parameter "/1/params": unknown function "strlen".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'strlen(/*/trap,"pattern",#5)',
'error' => 'Invalid parameter "/1/params": incorrect expression starting from "strlen(/*/trap,"pattern",#5)".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'trenddelta(/*/trap)',
'error' => 'Invalid parameter "/1/params": unknown function "trenddelta".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'trenddelta(/*/trap,1h,now/h)',
'error' => 'Invalid parameter "/1/params": incorrect expression starting from "trenddelta(/*/trap,1h,now/h)".'
]
],
// foreach() aggregated functions.
[
[
'formula' => 'mad(last_foreach(/*/trap))'
]
],
[
[
'formula' => 'sum(last_foreach(/*/trap))'
]
],
[
[
'formula' => 'avg(sum_foreach(/*/trap,20s))'
]
],
[
[
'formula' => 'min(avg_foreach(/host/key[*,param],{$USERMACRO}))'
]
],
[
[
'formula' => 'avg(count_foreach(/*/trap?[tag="tag1"],99h))'
]
],
[
[
'formula' => 'max(min_foreach(/*/trap?[group="Servers"],6))'
]
],
[
[
'formula' => 'min(max_foreach(/*/trap,20s))'
]
],
// foreach() aggregated functions validation.
[
[
'expected' => TEST_BAD,
'formula' => 'last_foreach(/*/trap)',
'error' => 'Invalid parameter "/1/params": incorrect usage of function "last_foreach".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'sum_foreach(/*/trap,20s)',
'error' => 'Invalid parameter "/1/params": incorrect usage of function "sum_foreach".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'avg_foreach(/host/key[*,param],19)',
'error' => 'Invalid parameter "/1/params": incorrect usage of function "avg_foreach".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'min(Avg_foreach(/host/key[*,param],{$USERMACRO}))',
'error' => 'Invalid parameter "/1/params": incorrect expression starting from "min(Avg_foreach(/host/key[*,param],{$USERMACRO}))".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'count_foreach(/*/trap?[tag="tag1"],99h)',
'error' => 'Invalid parameter "/1/params": incorrect usage of function "count_foreach".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'min_foreach(/*/trap?[group="Servers"],6)',
'error' => 'Invalid parameter "/1/params": incorrect usage of function "min_foreach".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'max_foreach(/*/trap,20s)',
'error' => 'Invalid parameter "/1/params": incorrect usage of function "max_foreach".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'last_foreach(/host/key,{$PERIOD}:now-1d)',
'error' => 'Invalid parameter "/1/params": invalid second parameter in function "last_foreach".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'last_foreach(/host/key,"{$PERIOD}:now-1d")',
'error' => 'Invalid parameter "/1/params": incorrect usage of function "last_foreach".'
]
],
// Aggregated math functions.
[
[
'formula' => 'countunique(/host/trap,60s)'
]
],
[
[
'formula' => 'countunique(/host/trap,60s,"eq",1)'
]
],
[
[
'formula' => 'countunique(/host/trap,60s,"like","test")'
]
],
[
[
'formula' => "first(//trap,60)"
]
],
[
[
'formula' => "kurtosis(//trap,60d)"
]
],
[
[
'formula' => "mad(//trap,60w)"
]
],
[
[
'formula' => "skewness(//trap,60h)"
]
],
[
[
'formula' => "stddevpop(//trap,{\$USERMACRO})"
]
],
[
[
'formula' => "stddevsamp(//trap,{\$USERMACRO})"
]
],
[
[
'formula' => "sumofsquares(//trap,#6)"
]
],
[
[
'formula' => "varpop(//trap,#1:now-1d)"
]
],
[
[
'formula' => "varsamp(//trap,{\$USERMACRO})"
]
],
// Aggregated math functions validation.
[
[
'expected' => TEST_BAD,
'formula' => "countunique(//trap)",
'error' => 'Invalid parameter "/1/params": mandatory parameter is missing in function "countunique".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'countunique(/host/trap,60s,"test",1)',
'error' => 'Invalid parameter "/1/params": invalid third parameter in function "countunique".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'countunique(/host/trap,60s,like,1)',
'error' => 'Invalid parameter "/1/params": incorrect expression starting from "countunique(/host/trap,60s,like,1)".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => "first(//trap,60s,)",
'error' => 'Invalid parameter "/1/params": invalid number of parameters in function "first".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => "Kurtosis(//trap,60d)",
'error' => 'Invalid parameter "/1/params": incorrect expression starting from "Kurtosis(//trap,60d)".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'kurtosis(/*/trap,60s)',
'error' => 'Invalid parameter "/1/params": invalid first parameter in function "kurtosis".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'mad()',
'error' => 'Invalid parameter "/1/params": invalid number of parameters in function "mad".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => "Mad(//trap,60w)",
'error' => 'Invalid parameter "/1/params": incorrect expression starting from "Mad(//trap,60w)".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'skewness(/trap)',
'error' => 'Invalid parameter "/1/params": incorrect expression starting from "skewness(/trap)".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'stddevpop(trap)',
'error' => 'Invalid parameter "/1/params": incorrect expression starting from "stddevpop(trap)".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => "sumofsquares(//trap,{TEST})",
'error' => "Invalid parameter \"/1/params\": incorrect expression starting from \"sumofsquares(//trap,{TEST})\"."
]
],
[
[
'expected' => TEST_BAD,
'formula' => "varpop(//trap,1M:now/M-1y)",
'error' => 'Invalid parameter "/1/params": invalid second parameter in function "varpop".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => "varpop(//trap,#1:now-#1)",
'error' => 'Invalid parameter "/1/params": incorrect expression starting from "varpop(//trap,#1:now-#1)".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => "varsamp(//trap,{TEST})",
'error' => "Invalid parameter \"/1/params\": incorrect expression starting from \"varsamp(//trap,{TEST})\"."
]
],
[
[
'expected' => TEST_BAD,
'formula' => "varsamp(//trap)",
'error' => 'Invalid parameter "/1/params": mandatory parameter is missing in function "varsamp".'
]
],
// String functions.
[
[
'formula' => "ascii(last(//trap_text))"
]
],
[
[
'formula' => "bitlength(last(//trap_text))"
]
],
[
[
'formula' => "char(last(//trap))=\"d\""
]
],
[
[
'formula' => "concat(last(//trap_text),\"test\")=\"testtest\""
]
],
[
[
'formula' => "concat(last(//trap_text),123)=\"test123\""
]
],
[
[
'formula' => "concat(last(//trap_text),\"#1\")=\"test123\""
]
],
[
[
'formula' => "concat(\"Last value: \", last(//trap_text), \"Average value: \", avg(//trap_text,1h))"
]
],
[
[
'formula' => "insert(last(//trap_text),2,1,\"ab\")=\"Zabbix\""
]
],
[
[
'formula' => "left(last(//trap_text),3)=\"Zab\""
]
],
[
[
'formula' => "ltrim(last(//trap_text),\"T\")=\"Zabbix\""
]
],
[
[
'formula' => "ltrim(last(//trap_text))=\"Zabbix\""
]
],
[
[
'formula' => "bytelength(last(//trap_text))"
]
],
[
[
'formula' => "repeat(last(//trap_text),2)=\"ZabbixZabbix\""
]
],
[
[
'formula' => "replace(last(//trap_text),\"ix\",\"aaah\")=\"Zabbaaah\""
]
],
[
[
'formula' => "replace(last(//trap_text),\"\",\"\")=\"Zabbaaah\""
]
],
[
[
'formula' => "right(last(//trap_text),3)=\"bix\""
]
],
[
[
'formula' => "rtrim(last(//trap_text),\"z\")=\"Test\""
]
],
[
[
'formula' => "rtrim(last(//trap_text))=\"Test\""
]
],
[
[
'formula' => "mid(last(//trap_text),2,4)=\"abbi\""
]
],
[
[
'formula' => "trim(last(//trap_text))=\"Zabbix\""
]
],
[
[
'formula' => "trim(last(//trap_text),\"t\")=\"Zabbix\""
]
],
// String functions validation.
[
[
'expected' => TEST_BAD,
'formula' => "ascii(//trap_text)",
'error' => 'Invalid parameter "/1/params": incorrect usage of function "ascii".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => "ASCII(//trap_text)",
'error' => 'Invalid parameter "/1/params": incorrect expression starting from "ASCII(//trap_text)".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => "bitlength(//trap_text)",
'error' => 'Invalid parameter "/1/params": incorrect usage of function "bitlength".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => "char(//trap)=\"d\"",
'error' => 'Invalid parameter "/1/params": incorrect usage of function "char".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => "concat(last(//trap_text))=\"testtest\"",
'error' => 'Invalid parameter "/1/params": invalid number of parameters in function "concat".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => "concat(last(//trap_text),#1)=\"testtest\"",
'error' => "Invalid parameter \"/1/params\": incorrect expression starting from \"concat(last(//trap_text),#1)=\"testtest\"\"."
]
],
[
[
'expected' => TEST_BAD,
'formula' => "insert(last(//trap_text),2)=\"Zabbix\"",
'error' => 'Invalid parameter "/1/params": invalid number of parameters in function "insert".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => "insert(last(//trap_text),2,1)=\"Zabbix\"",
'error' => 'Invalid parameter "/1/params": invalid number of parameters in function "insert".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => "insert(last(//trap_text),2,1,test)=\"Zabbix\"",
'error' => "Invalid parameter \"/1/params\": incorrect expression starting from \"insert(last(//trap_text),2,1,test)=\"Zabbix\"\"."
]
],
[
[
'expected' => TEST_BAD,
'formula' => "insert(last(//trap_text),,,\"test\")=\"Zabbix\"",
'error' => "Invalid parameter \"/1/params\": incorrect expression starting from \"insert(last(//trap_text),,,\"test\")=\"Zabbix\"\"."
]
],
[
[
'expected' => TEST_BAD,
'formula' => "Insert(last(//trap_text),2,1,\"ab\")=\"Zabbix\"",
'error' => "Invalid parameter \"/1/params\": incorrect expression starting from \"Insert(last(//trap_text),2,1,\"ab\")=\"Zabbix\"\"."
]
],
[
[
'expected' => TEST_BAD,
'formula' => "left(last(//trap_text))=\"Zab\"",
'error' => 'Invalid parameter "/1/params": invalid number of parameters in function "left".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => "left(last(//trap_text),test)=\"Zab\"",
'error' => "Invalid parameter \"/1/params\": incorrect expression starting from \"left(last(//trap_text),test)=\"Zab\"\"."
]
],
[
[
'expected' => TEST_BAD,
'formula' => "left(last(//trap_text),#1)=\"Zab\"",
'error' => "Invalid parameter \"/1/params\": incorrect expression starting from \"left(last(//trap_text),#1)=\"Zab\"\"."
]
],
[
[
'expected' => TEST_BAD,
'formula' => "ltrim(last(//trap_text),test)=\"Zabbix\"",
'error' => "Invalid parameter \"/1/params\": incorrect expression starting from \"ltrim(last(//trap_text),test)=\"Zabbix\"\"."
]
],
[
[
'expected' => TEST_BAD,
'formula' => "bytelength(//trap_text)",
'error' => 'Invalid parameter "/1/params": incorrect usage of function "bytelength".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => "repeat(last(//trap_text))=\"ZabbixZabbix\"",
'error' => 'Invalid parameter "/1/params": invalid number of parameters in function "repeat".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => "replace(last(//trap_text))=\"Zabbaaah\"",
'error' => 'Invalid parameter "/1/params": invalid number of parameters in function "replace".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => "replace(last(//trap_text),\"Zab\")=\"Zabbaaah\"",
'error' => 'Invalid parameter "/1/params": invalid number of parameters in function "replace".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => "replace(last(//trap_text),,\"Zab\")=\"Zabbaaah\"",
'error' => "Invalid parameter \"/1/params\": incorrect expression starting from \"replace(last(//trap_text),,\"Zab\")=\"Zabbaaah\"\"."
]
],
[
[
'expected' => TEST_BAD,
'formula' => "right(last(//trap_text))=\"bix\"",
'error' => 'Invalid parameter "/1/params": invalid number of parameters in function "right".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => "rtrim(//trap_text)=\"bix\"",
'error' => 'Invalid parameter "/1/params": incorrect usage of function "rtrim".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => "mid(last(//trap_text),\"1\",\"2\",\"3\")=\"bix\"",
'error' => 'Invalid parameter "/1/params": invalid number of parameters in function "mid".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => "mid(last(//trap_text),,)=\"bix\"",
'error' => "Invalid parameter \"/1/params\": incorrect expression starting from \"mid(last(//trap_text),,)=\"bix\"\"."
]
],
[
[
'expected' => TEST_BAD,
'formula' => "trim(last(//trap_text),\"1\",\"2\")=\"bix\"",
'error' => 'Invalid parameter "/1/params": invalid number of parameters in function "trim".'
]
],
// Operator functions.
[
[
'formula' => 'between(5,(last(/host/trap)),{$USERMACRO})'
]
],
[
[
'formula' => 'in(5,(last(/host/trap)),{$USERMACRO},5,10)'
]
],
// Operator functions validation.
[
[
'expected' => TEST_BAD,
'formula' => "between(5,(last(//trap)),10,1)",
'error' => 'Invalid parameter "/1/params": invalid number of parameters in function "between".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => "between(5,(last(//trap)))",
'error' => 'Invalid parameter "/1/params": invalid number of parameters in function "between".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => "in(last(//trap))",
'error' => 'Invalid parameter "/1/params": invalid number of parameters in function "in".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'in(5,(last(/host/trap)),,6,10)',
'error' => 'Invalid parameter "/1/params": incorrect expression starting from "in(5,(last(/host/trap)),,6,10)".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'In(5,(last(/host/trap)),{$USERMACRO},5,10)',
'error' => 'Invalid parameter "/1/params": incorrect expression starting from "In(5,(last(/host/trap)),{$USERMACRO},5,10)".'
]
],
// Bitwise functions.
[
[
'formula' => 'bitor(last(/host/trap),7)'
]
],
[
[
'formula' => 'bitxor(last(/host/trap),7)'
]
],
[
[
'formula' => 'bitnot(last(/host/trap))'
]
],
[
[
'formula' => 'bitrshift(last(/host/trap),{$USERMACRO})'
]
],
// Bitwise functions validation.
[
[
'expected' => TEST_BAD,
'formula' => "bitor(last(//trap))",
'error' => 'Invalid parameter "/1/params": invalid number of parameters in function "bitor".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'BITOR(last(/host/trap),7)',
'error' => 'Invalid parameter "/1/params": incorrect expression starting from "BITOR(last(/host/trap),7)".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => "bitxor(last(//trap),7,9)",
'error' => 'Invalid parameter "/1/params": invalid number of parameters in function "bitxor".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => "bitnot(last(//trap),1)",
'error' => 'Invalid parameter "/1/params": invalid number of parameters in function "bitnot".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'Bitnot(last(/host/trap))',
'error' => 'Invalid parameter "/1/params": incorrect expression starting from "Bitnot(last(/host/trap))".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'bitlshift()',
'error' => 'Invalid parameter "/1/params": invalid number of parameters in function "bitlshift".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => 'bitrshift(last(/*/trap),1)',
'error' => 'Invalid parameter "/1/params": invalid first parameter in function "last".'
]
],
// Complex calculations.
[
[
'formula' => 'last(/host/trap,#3)+min(/host/trap,5)-max(/host/trap,5:now/m)/avg(/host/trap,#6:now-6h)'.
'*count(/host/trap,#4:now-5h,"eq","0")'
]
],
[
[
'formula' => 'sum(last(/host/trap,#3)+min(/host/trap,5)-max(/host/trap,5:now/m)/avg(/host/trap,#6:now-6h)'.
'*count(/host/trap,#4:now-5h,"eq","0"))'
]
],
[
[
'formula' => 'sum(last(/host/trap,#3)+min(/host/trap,5)-max(/host/trap,5:now/m))/percentile(/host/trap,#5,5)'
]
],
[
[
'formula' => "max(min_foreach(/*/trap?[group=\"Servers\"],{\$USERMACRO}))+avg(count_foreach(/*/trap?[tag=\"tag1\"],\"{\$USERMACRO}h\"))-bitrshift".
"(last(//trap),1)/between(5,(last(//trap)),10)*fuzzytime(/host/trap,60)>=trendsum(/host/item,\"{\$USERMACRO}:now/h\")"
]
],
[
[
'formula' => 'avg(avg(sum(max(min(trendmax(/host/item,1h:now-1h),2),3),12d)))'
]
],
[
[
'formula' => 'truncate(bitxor(bytelength(cbrt(cosh(bytelength(cos(count(/host/key,1s)))))),1), 2)'
]
],
// Complex calculations validation.
[
[
'expected' => TEST_BAD,
'formula' => "max(min_foreach(/*/trap?[group=\"Servers\"],6))+avg(count_foreach(/*/trap?[tag=\"tag1\"],99h))-".
"bitrshift(last(/*/trap),1)/between(5,(last(//trap)),10)*fuzzytime(/host/trap,60)>=trendsum(/host/item,60m:now/h)",
'error' => 'Invalid parameter "/1/params": invalid first parameter in function "last".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => "min_foreach(/*/trap?[group=\"Servers\"],6)+avg(count_foreach(/*/trap?[tag=\"tag1\"],99h))-bitrshift(last(//trap),1)".
"/between(5,(last(//trap)),10)*fuzzytime(/host/trap,60)>=trendsum(/host/item,60m:now/h)",
'error' => 'Invalid parameter "/1/params": incorrect usage of function "min_foreach".'
]
],
[
[
'expected' => TEST_BAD,
'formula' => "max(min_foreach(/*/trap?[group=\"Servers\"],6))+avg(count_foreach(/*/trap?[tag=\"tag1\"],99h))-bitrshift(last(//trap),1)".
"/between(5,(last(//trap)),10)*fuzzytime(/host/trap,60)=>trendsum(/host/item,60m:now/h)",
'error' => 'Invalid parameter "/1/params": incorrect expression starting from ">trendsum(/host/item,60m:now/h)".'
]
]
];
}
/**
* Function for testing formula field in calculated item or item prototype.
*
* @param array $data data provider
* @param boolean $prototype false if item, true if item prototype
*/
public function executeValidation($data, $prototype = false) {
if (CTestArrayHelper::get($data, 'expected', TEST_GOOD) === TEST_BAD) {
$old_hash = CDBHelper::getHash('SELECT * FROM items ORDER BY itemid');
}
$this->page->login()->open($this->url)->waitUntilReady();
$form = $this->query('name:itemForm')->asForm()->waitUntilVisible()->one();
$key = 'calc'.microtime(true).'[{#KEY}]';
$form->fill([
'Name' => 'Calc',
'Type' => 'Calculated',
'Key' => $key,
'Formula' => $data['formula']
]);
$form->submit();
if (CTestArrayHelper::get($data, 'expected', TEST_GOOD) === TEST_BAD) {
$title = (CTestArrayHelper::get($data, 'formula') === '')
? 'Page received incorrect data'
: ($prototype ? 'Cannot add item prototype' : 'Cannot add item');
$this->assertMessage(TEST_BAD, $title, $data['error']);
$this->assertEquals(0, CDBHelper::getCount('SELECT * FROM items WHERE key_='.zbx_dbstr($key)));
$this->assertEquals($old_hash, CDBHelper::getHash('SELECT * FROM items ORDER BY itemid'));
}
else {
$this->assertMessage(TEST_GOOD, ($prototype ? 'Item prototype added' : 'Item added'));
$this->assertEquals(1, CDBHelper::getCount('SELECT * FROM items WHERE key_='.zbx_dbstr($key)));
}
}
}