---
test case: Evaluate last() <- 0.1, 0.2
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_FLOAT
    data:
    - value: 0.1
      ts: 2017-01-10 10:00:00.000000000 +00:00
    - value: 0.2
      ts: 2017-01-10 10:00:30.000000000 +00:00
  time: 2017-01-10 10:10:00.000000000 +00:00
  function: last
  params: ''
out:
  return: SUCCEED
  value: 0.2
---
test case: Evaluate last(#2) <- 0.1, 0.2
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_FLOAT
    data:
    - value: 0.1
      ts: 2017-01-10 10:00:00.000000000 +00:00
    - value: 0.2
      ts: 2017-01-10 10:00:30.000000000 +00:00
  time: 2017-01-10 10:10:00.000000000 +00:00
  function: last
  params: '#2'
out:
  return: SUCCEED
  value: 0.1
---
test case: Evaluate last() <- 'xyz'
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_STR
    data:
    - value: xyz
      ts: 2017-01-10 10:00:00.000000000 +00:00
  time: 2017-01-10 10:10:00.000000000 +00:00
  function: last
  params: ''
out:
  return: SUCCEED
  value: 'xyz'
---
test case: Evaluate last() <- '😓...'
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_TEXT
    data:
    - value:    
        page: 😓
        pages: 20000
      ts: 2017-01-10 10:00:00.000000000 +00:00
  time: 2017-01-10 10:10:00.000000000 +00:00
  function: last
  params: ''
out:
  return: SUCCEED
  value: 
     header: ''
     page: 😓
     pages: 20000
     footer: ''
---
test case: Evaluate last() <- '123'
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_STR
    data:
    - value: 123
      ts: 2017-01-10 10:00:00.000000000 +00:00
  time: 2017-01-10 10:10:00.000000000 +00:00
  function: last
  params: ''
out:
  return: SUCCEED
  value: '123'
---
test case: Evaluate last() <- ' a b '
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_STR
    data:
    - value: ' a b '
      ts: 2017-01-10 10:00:00.000000000 +00:00
  time: 2017-01-10 10:10:00.000000000 +00:00
  function: last
  params: ''
out:
  return: SUCCEED
  value: ' a b '
---
test case: Evaluate last()  <- '\"c:\\\"'
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_STR
    data:
    - value: '"c:\"'
      ts: 2017-01-10 10:00:00.000000000 +00:00
  time: 2017-01-10 10:10:00.000000000 +00:00
  function: last
  params: ''
out:
  return: SUCCEED
  value: '"c:\"'
---
test case: Evaluate last(:now-10m) <- 0.1, 0.2
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_FLOAT
    data:
    - value: 0.1
      ts: 2017-01-10 10:00:00.000000000 +00:00
    - value: 0.2
      ts: 2017-01-10 10:00:30.000000000 +00:00
  time: 2017-01-10 10:10:00.000000000 +00:00
  function: last
  params: :now-10m
out:
  return: SUCCEED
  value: 0.1
---
test case: Evaluate avg(#2)
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_UINT64
    data:
    - value: 1
      ts: 2017-01-10 10:01:00.000000000 +00:00
    - value: 2
      ts: 2017-01-10 10:02:00.000000000 +00:00
    - value: 3
      ts: 2017-01-10 10:03:00.000000000 +00:00
    - value: 4
      ts: 2017-01-10 10:04:00.000000000 +00:00
    - value: 5
      ts: 2017-01-10 10:05:00.000000000 +00:00
  time: 2017-01-10 10:05:00.000000000 +00:00
  function: avg
  params: '#2'
out:
  return: SUCCEED
  value: 4.5
---
test case: Evaluate avg(3m)
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_UINT64
    data:
    - value: 1
      ts: 2017-01-10 10:01:00.000000000 +00:00
    - value: 2
      ts: 2017-01-10 10:02:00.000000000 +00:00
    - value: 3
      ts: 2017-01-10 10:03:00.000000000 +00:00
    - value: 4
      ts: 2017-01-10 10:04:00.000000000 +00:00
    - value: 5
      ts: 2017-01-10 10:05:00.000000000 +00:00
  time: 2017-01-10 10:05:00.000000000 +00:00
  function: avg
  params: 3m
out:
  return: SUCCEED
  value: 4
---
test case: Evaluate avg(180)
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_UINT64
    data:
    - value: 1
      ts: 2017-01-10 10:01:00.000000000 +00:00
    - value: 2
      ts: 2017-01-10 10:02:00.000000000 +00:00
    - value: 3
      ts: 2017-01-10 10:03:00.000000000 +00:00
    - value: 4
      ts: 2017-01-10 10:04:00.000000000 +00:00
    - value: 5
      ts: 2017-01-10 10:05:00.000000000 +00:00
  time: 2017-01-10 10:05:00.000000000 +00:00
  function: avg
  params: 180
out:
  return: SUCCEED
  value: 4
---
test case: Evaluate avg(#2:now-1m)
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_UINT64
    data:
    - value: 1
      ts: 2017-01-10 10:01:00.000000000 +00:00
    - value: 2
      ts: 2017-01-10 10:02:00.000000000 +00:00
    - value: 3
      ts: 2017-01-10 10:03:00.000000000 +00:00
    - value: 4
      ts: 2017-01-10 10:04:00.000000000 +00:00
    - value: 5
      ts: 2017-01-10 10:05:00.000000000 +00:00
  time: 2017-01-10 10:05:00.000000000 +00:00
  function: avg
  params: '#2:now-1m'
out:
  return: SUCCEED
  value: 3.5
---
test case: Evaluate bitand(#1,1)
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_UINT64
    data:
    - value: 1
      ts: 2017-01-10 10:01:00.000000000 +00:00
    - value: 2
      ts: 2017-01-10 10:02:00.000000000 +00:00
    - value: 3
      ts: 2017-01-10 10:03:00.000000000 +00:00
    - value: 4
      ts: 2017-01-10 10:04:00.000000000 +00:00
    - value: 5
      ts: 2017-01-10 10:05:00.000000000 +00:00
  time: 2017-01-10 10:05:00.000000000 +00:00
  function: bitand
  params: '#1,1'
out:
  return: SUCCEED
  value: 1
---
test case: Evaluate bitand(#2,1)
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_UINT64
    data:
    - value: 1
      ts: 2017-01-10 10:01:00.000000000 +00:00
    - value: 2
      ts: 2017-01-10 10:02:00.000000000 +00:00
    - value: 3
      ts: 2017-01-10 10:03:00.000000000 +00:00
    - value: 4
      ts: 2017-01-10 10:04:00.000000000 +00:00
    - value: 5
      ts: 2017-01-10 10:05:00.000000000 +00:00
  time: 2017-01-10 10:05:00.000000000 +00:00
  function: bitand
  params: '#2,1'
out:
  return: SUCCEED
  value: 0
---
test case: Evaluate bitand(#2:now-1m,2)
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_UINT64
    data:
    - value: 1
      ts: 2017-01-10 10:01:00.000000000 +00:00
    - value: 2
      ts: 2017-01-10 10:02:00.000000000 +00:00
    - value: 3
      ts: 2017-01-10 10:03:00.000000000 +00:00
    - value: 4
      ts: 2017-01-10 10:04:00.000000000 +00:00
    - value: 5
      ts: 2017-01-10 10:05:00.000000000 +00:00
  time: 2017-01-10 10:05:00.000000000 +00:00
  function: bitand
  params: '#2:now-1m,2'
out:
  return: SUCCEED
  value: 2
---
test case: Evaluate count(#3,ge,4)
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_UINT64
    data:
    - value: 1
      ts: 2017-01-10 10:01:00.000000000 +00:00
    - value: 2
      ts: 2017-01-10 10:02:00.000000000 +00:00
    - value: 3
      ts: 2017-01-10 10:03:00.000000000 +00:00
    - value: 4
      ts: 2017-01-10 10:04:00.000000000 +00:00
    - value: 5
      ts: 2017-01-10 10:05:00.000000000 +00:00
  time: 2017-01-10 10:05:00.000000000 +00:00
  function: count
  params: '#3,ge,4'
out:
  return: SUCCEED
  value: 2
---
test case: Evaluate count(5m,like,"o")
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_STR
    data:
    - value: One
      ts: 2017-01-10 10:01:00.000000000 +00:00
    - value: Two
      ts: 2017-01-10 10:02:00.000000000 +00:00
    - value: Three
      ts: 2017-01-10 10:03:00.000000000 +00:00
    - value: Four
      ts: 2017-01-10 10:04:00.000000000 +00:00
    - value: Five
      ts: 2017-01-10 10:05:00.000000000 +00:00
  time: 2017-01-10 10:05:00.000000000 +00:00
  function: count
  params: '5m,like,"o"'
out:
  return: SUCCEED
  value: 2
---
test case: Evaluate count(300,like,"o")
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_STR
    data:
    - value: One
      ts: 2017-01-10 10:01:00.000000000 +00:00
    - value: Two
      ts: 2017-01-10 10:02:00.000000000 +00:00
    - value: Three
      ts: 2017-01-10 10:03:00.000000000 +00:00
    - value: Four
      ts: 2017-01-10 10:04:00.000000000 +00:00
    - value: Five
      ts: 2017-01-10 10:05:00.000000000 +00:00
  time: 2017-01-10 10:05:00.000000000 +00:00
  function: count
  params: '300,like,"o"'
out:
  return: SUCCEED
  value: 2
---
test case: Evaluate count(5m,regexp,"o$")
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_STR
    data:
    - value: One
      ts: 2017-01-10 10:01:00.000000000 +00:00
    - value: Two
      ts: 2017-01-10 10:02:00.000000000 +00:00
    - value: Three
      ts: 2017-01-10 10:03:00.000000000 +00:00
    - value: Four
      ts: 2017-01-10 10:04:00.000000000 +00:00
    - value: Five
      ts: 2017-01-10 10:05:00.000000000 +00:00
  time: 2017-01-10 10:05:00.000000000 +00:00
  function: count
  params: '5m,regexp,"o$"'
out:
  return: SUCCEED
  value: 1
---
test case: Evaluate count(5m,iregexp,"o")
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_STR
    data:
    - value: One
      ts: 2017-01-10 10:01:00.000000000 +00:00
    - value: Two
      ts: 2017-01-10 10:02:00.000000000 +00:00
    - value: Three
      ts: 2017-01-10 10:03:00.000000000 +00:00
    - value: Four
      ts: 2017-01-10 10:04:00.000000000 +00:00
    - value: Five
      ts: 2017-01-10 10:05:00.000000000 +00:00
  time: 2017-01-10 10:05:00.000000000 +00:00
  function: count
  params: '5m,iregexp,"o"'
out:
  return: SUCCEED
  value: 3
---
test case: Evaluate count(5m,iregexp)
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_STR
    data:
    - value: One
      ts: 2017-01-10 10:01:00.000000000 +00:00
    - value: Two
      ts: 2017-01-10 10:02:00.000000000 +00:00
    - value: Three
      ts: 2017-01-10 10:03:00.000000000 +00:00
    - value: Four
      ts: 2017-01-10 10:04:00.000000000 +00:00
    - value: Five
      ts: 2017-01-10 10:05:00.000000000 +00:00
  time: 2017-01-10 10:05:00.000000000 +00:00
  function: count
  params: '5m,iregexp'
out:
  return: SUCCEED
  value: 5
---
test case: Evaluate count(5m,eq)
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_STR
    data:
    - value: One
      ts: 2017-01-10 10:01:00.000000000 +00:00
    - value: Two
      ts: 2017-01-10 10:02:00.000000000 +00:00
    - value: ''
      ts: 2017-01-10 10:03:00.000000000 +00:00
    - value: Four
      ts: 2017-01-10 10:04:00.000000000 +00:00
    - value: Five
      ts: 2017-01-10 10:05:00.000000000 +00:00
  time: 2017-01-10 10:05:00.000000000 +00:00
  function: count
  params: '5m,eq'
out:
  return: SUCCEED
  value: 1
---
test case: Evaluate count(5m,bitand,1/3)
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_UINT64
    data:
    - value: 1
      ts: 2017-01-10 10:01:00.000000000 +00:00
    - value: 2
      ts: 2017-01-10 10:02:00.000000000 +00:00
    - value: 3
      ts: 2017-01-10 10:03:00.000000000 +00:00
    - value: 4
      ts: 2017-01-10 10:04:00.000000000 +00:00
    - value: 5
      ts: 2017-01-10 10:05:00.000000000 +00:00
  time: 2017-01-10 10:05:00.000000000 +00:00
  function: count
  params: '5m,bitand,1/3'
out:
  return: SUCCEED
  value: 2
---
test case: Evaluate count(5m,bitand,"2/3")
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_UINT64
    data:
    - value: 1
      ts: 2017-01-10 10:01:00.000000000 +00:00
    - value: 2
      ts: 2017-01-10 10:02:00.000000000 +00:00
    - value: 3
      ts: 2017-01-10 10:03:00.000000000 +00:00
    - value: 4
      ts: 2017-01-10 10:04:00.000000000 +00:00
    - value: 5
      ts: 2017-01-10 10:05:00.000000000 +00:00
  time: 2017-01-10 10:05:00.000000000 +00:00
  function: count
  params: '5m,bitand,2/3'
out:
  return: SUCCEED
  value: 1
---
test case: Evaluate bitand(#1,0)
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_UINT64
    data:
    - value: 1
      ts: 2017-01-10 10:01:00.000000000 +00:00
    - value: 2
      ts: 2017-01-10 10:02:00.000000000 +00:00
    - value: 3
      ts: 2017-01-10 10:03:00.000000000 +00:00
    - value: 4
      ts: 2017-01-10 10:04:00.000000000 +00:00
    - value: 5
      ts: 2017-01-10 10:05:00.000000000 +00:00
  time: 2017-01-10 10:05:00.000000000 +00:00
  function: bitand
  params: '#1,0'
out:
  return: SUCCEED
  value: 0
---
test case: Evaluate bitand(#0,1)
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_UINT64
    data:
    - value: 1
      ts: 2017-01-10 10:01:00.000000000 +00:00
    - value: 2
      ts: 2017-01-10 10:02:00.000000000 +00:00
    - value: 3
      ts: 2017-01-10 10:03:00.000000000 +00:00
    - value: 4
      ts: 2017-01-10 10:04:00.000000000 +00:00
    - value: 5
      ts: 2017-01-10 10:05:00.000000000 +00:00
  time: 2017-01-10 10:05:00.000000000 +00:00
  function: bitand
  params: '#0,1'
out:
  return: FAIL
---
test case: Evaluate bitand(#1,)
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_UINT64
    data:
    - value: 1
      ts: 2017-01-10 10:01:00.000000000 +00:00
    - value: 2
      ts: 2017-01-10 10:02:00.000000000 +00:00
    - value: 3
      ts: 2017-01-10 10:03:00.000000000 +00:00
    - value: 4
      ts: 2017-01-10 10:04:00.000000000 +00:00
    - value: 5
      ts: 2017-01-10 10:05:00.000000000 +00:00
  time: 2017-01-10 10:05:00.000000000 +00:00
  function: bitand
  params: '#1,'
out:
  return: FAIL
---
test case: Evaluate bitand(,1)
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_UINT64
    data:
    - value: 1
      ts: 2017-01-10 10:01:00.000000000 +00:00
    - value: 2
      ts: 2017-01-10 10:02:00.000000000 +00:00
    - value: 3
      ts: 2017-01-10 10:03:00.000000000 +00:00
    - value: 4
      ts: 2017-01-10 10:04:00.000000000 +00:00
    - value: 5
      ts: 2017-01-10 10:05:00.000000000 +00:00
  time: 2017-01-10 10:05:00.000000000 +00:00
  function: bitand
  params: ',1'
out:
  return: SUCCEED
  value: 1
---
test case: Evaluate bitand(#-1,-1)
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_UINT64
    data:
    - value: 1
      ts: 2017-01-10 10:01:00.000000000 +00:00
    - value: 2
      ts: 2017-01-10 10:02:00.000000000 +00:00
    - value: 3
      ts: 2017-01-10 10:03:00.000000000 +00:00
    - value: 4
      ts: 2017-01-10 10:04:00.000000000 +00:00
    - value: 5
      ts: 2017-01-10 10:05:00.000000000 +00:00
  time: 2017-01-10 10:05:00.000000000 +00:00
  function: bitand
  params: '#-1,-1'
out:
  return: FAIL
---
test case: Evaluate bitand(-#1,1)
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_UINT64
    data:
    - value: 1
      ts: 2017-01-10 10:01:00.000000000 +00:00
    - value: 2
      ts: 2017-01-10 10:02:00.000000000 +00:00
    - value: 3
      ts: 2017-01-10 10:03:00.000000000 +00:00
    - value: 4
      ts: 2017-01-10 10:04:00.000000000 +00:00
    - value: 5
      ts: 2017-01-10 10:05:00.000000000 +00:00
  time: 2017-01-10 10:05:00.000000000 +00:00
  function: bitand
  params: '-#1,1'
out:
  return: FAIL
---
test case: Evaluate count(#3,ge)
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_UINT64
    data:
    - value: 1
      ts: 2017-01-10 10:01:00.000000000 +00:00
    - value: 2
      ts: 2017-01-10 10:02:00.000000000 +00:00
    - value: 3
      ts: 2017-01-10 10:03:00.000000000 +00:00
    - value: 4
      ts: 2017-01-10 10:04:00.000000000 +00:00
    - value: 5
      ts: 2017-01-10 10:05:00.000000000 +00:00
  time: 2017-01-10 10:05:00.000000000 +00:00
  function: count
  params: '#3,ge'
out:
  return: FAIL
  value: 2
---
test case: Evaluate countunique(5m) FLOAT 5 3 3 1 2
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_FLOAT
    data:
    - value: 5
      ts: 2017-01-10 10:01:00.000000000 +00:00
    - value: 3
      ts: 2017-01-10 10:02:00.000000000 +00:00
    - value: 3
      ts: 2017-01-10 10:03:00.000000000 +00:00
    - value: 1
      ts: 2017-01-10 10:04:00.000000000 +00:00
    - value: 2
      ts: 2017-01-10 10:05:00.000000000 +00:00
  time: 2017-01-10 10:05:00.000000000 +00:00
  function: countunique
  params: '5m'
out:
  return: SUCCEED
  value: 4
---
test case: Evaluate countunique(5m) FLOAT 1 1 1 1 1
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_FLOAT
    data:
    - value: 1
      ts: 2017-01-10 10:01:00.000000000 +00:00
    - value: 1
      ts: 2017-01-10 10:02:00.000000000 +00:00
    - value: 1
      ts: 2017-01-10 10:03:00.000000000 +00:00
    - value: 1
      ts: 2017-01-10 10:04:00.000000000 +00:00
    - value: 1
      ts: 2017-01-10 10:05:00.000000000 +00:00
  time: 2017-01-10 10:05:00.000000000 +00:00
  function: countunique
  params: '5m'
out:
  return: SUCCEED
  value: 1
---
test case: Evaluate countunique(5m) UINT64 5 3 3 1 2
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_UINT64
    data:
    - value: 5
      ts: 2017-01-10 10:01:00.000000000 +00:00
    - value: 3
      ts: 2017-01-10 10:02:00.000000000 +00:00
    - value: 3
      ts: 2017-01-10 10:03:00.000000000 +00:00
    - value: 1
      ts: 2017-01-10 10:04:00.000000000 +00:00
    - value: 2
      ts: 2017-01-10 10:05:00.000000000 +00:00
  time: 2017-01-10 10:05:00.000000000 +00:00
  function: countunique
  params: '5m'
out:
  return: SUCCEED
  value: 4
---
test case: Evaluate countunique(5m) UINT64 1 1 1 1 1
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_UINT64
    data:
    - value: 1
      ts: 2017-01-10 10:01:00.000000000 +00:00
    - value: 1
      ts: 2017-01-10 10:02:00.000000000 +00:00
    - value: 1
      ts: 2017-01-10 10:03:00.000000000 +00:00
    - value: 1
      ts: 2017-01-10 10:04:00.000000000 +00:00
    - value: 1
      ts: 2017-01-10 10:05:00.000000000 +00:00
  time: 2017-01-10 10:05:00.000000000 +00:00
  function: countunique
  params: '5m'
out:
  return: SUCCEED
  value: 1
---
test case: Evaluate countunique(5m) STR One One One One One
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_STR
    data:
    - value: One
      ts: 2017-01-10 10:01:00.000000000 +00:00
    - value: One
      ts: 2017-01-10 10:02:00.000000000 +00:00
    - value: One
      ts: 2017-01-10 10:03:00.000000000 +00:00
    - value: One
      ts: 2017-01-10 10:04:00.000000000 +00:00
    - value: One
      ts: 2017-01-10 10:05:00.000000000 +00:00
  time: 2017-01-10 10:05:00.000000000 +00:00
  function: countunique
  params: '5m'
out:
  return: SUCCEED
  value: 1
---
test case: Evaluate countunique(5m) STR One Two Three Four One
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_STR
    data:
    - value: One
      ts: 2017-01-10 10:01:00.000000000 +00:00
    - value: Two
      ts: 2017-01-10 10:02:00.000000000 +00:00
    - value: Three
      ts: 2017-01-10 10:03:00.000000000 +00:00
    - value: Four
      ts: 2017-01-10 10:04:00.000000000 +00:00
    - value: One
      ts: 2017-01-10 10:05:00.000000000 +00:00
  time: 2017-01-10 10:05:00.000000000 +00:00
  function: countunique
  params: '5m'
out:
  return: SUCCEED
  value: 4
---
test case: Evaluate countunique(11m) LOG 'abc', 'abc' no sources
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_LOG
    data:
    - value: abc
      source:
      logeventid: 1
      severity: 1
      timestamp: 2
      ts: 2017-01-10 10:00:00.000000000 +00:00
    - value: abc
      source:
      logeventid: 2
      severity: 1
      timestamp: 2
      ts: 2017-01-10 10:00:30.000000000 +00:00
  time: 2017-01-10 10:10:00.000000000 +00:00
  function: countunique
  params: '11m'
out:
  return: SUCCEED
  value: 1
---
test case: Evaluate countunique(11m) LOG 'qwerty' 'abc' no sources
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_LOG
    data:
    - value: qwerty
      source:
      logeventid: 1
      severity: 1
      timestamp: 2
      ts: 2017-01-10 10:00:00.000000000 +00:00
    - value: abc
      source:
      logeventid: 2
      severity: 1
      timestamp: 2
      ts: 2017-01-10 10:00:30.000000000 +00:00
  time: 2017-01-10 10:10:00.000000000 +00:00
  function: countunique
  params: '11m'
out:
  return: SUCCEED
  value: 2
---
test case: Evaluate countunique(11m) LOG 'abc' 'abc' different sources
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_LOG
    data:
    - value: abc
      source: serv1
      logeventid: 1
      severity: 1
      timestamp: 2
      ts: 2017-01-10 10:00:00.000000000 +00:00
    - value: abc
      source: serv2
      logeventid: 2
      severity: 1
      timestamp: 2
      ts: 2017-01-10 10:00:30.000000000 +00:00
  time: 2017-01-10 10:10:00.000000000 +00:00
  function: countunique
  params: '11m'
out:
  return: SUCCEED
  value: 2
---
test case: Evaluate countunique(11m) LOG 'abc' 'abc' only source 1
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_LOG
    data:
    - value: abc
      source: serv1
      logeventid: 1
      severity: 1
      timestamp: 2
      ts: 2017-01-10 10:00:00.000000000 +00:00
    - value: abc
      source:
      logeventid: 2
      severity: 1
      timestamp: 2
      ts: 2017-01-10 10:00:30.000000000 +00:00
  time: 2017-01-10 10:10:00.000000000 +00:00
  function: countunique
  params: '11m'
out:
  return: SUCCEED
  value: 2
---
test case: Evaluate countunique(11m) LOG 'abc' 'abc' only source 2
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_LOG
    data:
    - value: abc
      source:
      logeventid: 1
      severity: 1
      timestamp: 2
      ts: 2017-01-10 10:00:00.000000000 +00:00
    - value: abc
      source: serv2
      logeventid: 2
      severity: 1
      timestamp: 2
      ts: 2017-01-10 10:00:30.000000000 +00:00
  time: 2017-01-10 10:10:00.000000000 +00:00
  function: countunique
  params: '11m'
out:
  return: SUCCEED
  value: 2
---
test case: Evaluate forecast(#5,1h)
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_UINT64
    data:
    - value: 1
      ts: 2017-01-10 10:01:00.000000000 +00:00
    - value: 2
      ts: 2017-01-10 10:02:00.000000000 +00:00
    - value: 3
      ts: 2017-01-10 10:03:00.000000000 +00:00
    - value: 4
      ts: 2017-01-10 10:04:00.000000000 +00:00
    - value: 5
      ts: 2017-01-10 10:05:00.000000000 +00:00
  time: 2017-01-10 10:05:00.000000000 +00:00
  function: forecast
  params: '#5,1h'
out:
  return: SUCCEED
  value: 65
---
test case: Evaluate forecast(#5:now-1h,1h)
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_UINT64
    data:
    - value: 1
      ts: 2017-01-10 10:01:00.000000000 +00:00
    - value: 2
      ts: 2017-01-10 10:02:00.000000000 +00:00
    - value: 3
      ts: 2017-01-10 10:03:00.000000000 +00:00
    - value: 4
      ts: 2017-01-10 10:04:00.000000000 +00:00
    - value: 5
      ts: 2017-01-10 10:05:00.000000000 +00:00
  time: 2017-01-10 10:05:00.000000000 +00:00
  function: forecast
  params: '#5:now-1h,1h'
out:
  return: SUCCEED
  value: -1
---
test case: Evaluate forecast(#5:now-1h,1h,test)
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_UINT64
    data:
    - value: 1
      ts: 2017-01-10 10:01:00.000000000 +00:00
    - value: 2
      ts: 2017-01-10 10:02:00.000000000 +00:00
    - value: 3
      ts: 2017-01-10 10:03:00.000000000 +00:00
    - value: 4
      ts: 2017-01-10 10:04:00.000000000 +00:00
    - value: 5
      ts: 2017-01-10 10:05:00.000000000 +00:00
  time: 2017-01-10 10:05:00.000000000 +00:00
  function: forecast
  params: '#5:now-1h,1h,test'
out:
  return: FAIL
  value: -1
---
test case: Evaluate fuzzytime(1s) < @uint64
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_UINT64
    data:
    - value: 1
      ts: 2017-01-10 10:01:00.000000000 +00:00
  time: 2017-01-10 10:05:00.000000000 +00:00
  function: fuzzytime
  params: '1s'
out:
  return: SUCCEED
  value: 0
---
test case:  Evaluate fuzzytime(1s) < @float
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_FLOAT
    data:
    - value: 1.0
      ts: 2017-01-10 10:01:00.000000000 +00:00
  time: 2017-01-10 10:05:00.000000000 +00:00
  function: fuzzytime
  params: '1s'
out:
  return: SUCCEED
  value: 0
---
test case: Evaluate find(#5,"iregexp","^o")
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_STR
    data:
    - value: One
      ts: 2017-01-10 10:01:00.000000000 +00:00
    - value: Two
      ts: 2017-01-10 10:02:00.000000000 +00:00
  time: 2017-01-10 10:05:00.000000000 +00:00
  function: find
  params: '#5,"iregexp","^o"'
out:
  return: SUCCEED
  value: 1
---
test case: Evaluate find(#5,"regexp","^o")
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_STR
    data:
    - value: One
      ts: 2017-01-10 10:01:00.000000000 +00:00
    - value: Two
      ts: 2017-01-10 10:02:00.000000000 +00:00
  time: 2017-01-10 10:05:00.000000000 +00:00
  function: find
  params: '#5,"regexp","^o"'
out:
  return: SUCCEED
  value: 0
---
test case: Evaluate find(#5,"like","o")
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_STR
    data:
    - value: One
      ts: 2017-01-10 10:01:00.000000000 +00:00
    - value: Two
      ts: 2017-01-10 10:02:00.000000000 +00:00
  time: 2017-01-10 10:05:00.000000000 +00:00
  function: find
  params: '#5,"like","o"'
out:
  return: SUCCEED
  value: 1
---
test case: Evaluate logeventid(,"^12")
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_LOG
    data:
    - value: a
      source:
      logeventid: 1234
      severity: 1
      timestamp: 2
      ts: 2017-01-10 10:00:00.000000000 +00:00
  time: 2017-01-10 10:10:00.000000000 +00:00
  function: logeventid
  params: ',"^12"'
out:
  return: SUCCEED
  value: 1
---
test case: Evaluate logeventid(,"^34")
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_LOG
    data:
    - value: a
      source:
      logeventid: 1234
      severity: 1
      timestamp: 2
      ts: 2017-01-10 10:00:00.000000000 +00:00
  time: 2017-01-10 10:10:00.000000000 +00:00
  function: logeventid
  params: ',"^34"'
out:
  return: SUCCEED
  value: 0
---
test case: Evaluate logseverity()
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_LOG
    data:
    - value: a
      source:
      logeventid: 1234
      severity: 4
      timestamp: 2
      ts: 2017-01-10 10:00:00.000000000 +00:00
  time: 2017-01-10 10:10:00.000000000 +00:00
  function: logseverity
  params: ''
out:
  return: SUCCEED
  value: 4
---
test case: Evaluate logsource(,"(Application|System)") <- Application
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_LOG
    data:
    - value: a
      source: Application
      logeventid: 1234
      severity: 4
      timestamp: 2
      ts: 2017-01-10 10:00:00.000000000 +00:00
  time: 2017-01-10 10:10:00.000000000 +00:00
  function: logsource
  params: ',"(Application|System)"'
out:
  return: SUCCEED
  value: 1
---
test case: Evaluate logsource(,"(Application|System)") <- Security
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_LOG
    data:
    - value: a
      source: Security
      logeventid: 1234
      severity: 4
      timestamp: 2
      ts: 2017-01-10 10:00:00.000000000 +00:00
  time: 2017-01-10 10:10:00.000000000 +00:00
  function: logsource
  params: ',"(Application|System)"'
out:
  return: SUCCEED
  value: 0
---
test case: Evaluate max(5m)
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_UINT64
    data:
    - value: 1
      ts: 2017-01-10 10:01:00.000000000 +00:00
    - value: 2
      ts: 2017-01-10 10:02:00.000000000 +00:00
    - value: 3
      ts: 2017-01-10 10:03:00.000000000 +00:00
    - value: 4
      ts: 2017-01-10 10:04:00.000000000 +00:00
    - value: 5
      ts: 2017-01-10 10:05:00.000000000 +00:00
  time: 2017-01-10 10:05:00.000000000 +00:00
  function: max
  params: '5m'
out:
  return: SUCCEED
  value: 5
---
test case: Evaluate max(5m,2m)
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_UINT64
    data:
    - value: 1
      ts: 2017-01-10 10:01:00.000000000 +00:00
    - value: 2
      ts: 2017-01-10 10:02:00.000000000 +00:00
    - value: 3
      ts: 2017-01-10 10:03:00.000000000 +00:00
    - value: 4
      ts: 2017-01-10 10:04:00.000000000 +00:00
    - value: 5
      ts: 2017-01-10 10:05:00.000000000 +00:00
  time: 2017-01-10 10:05:00.000000000 +00:00
  function: max
  params: '5m:now-2m'
out:
  return: SUCCEED
  value: 3
---
test case: Evaluate min(4m)
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_UINT64
    data:
    - value: 1
      ts: 2017-01-10 10:01:00.000000000 +00:00
    - value: 2
      ts: 2017-01-10 10:02:00.000000000 +00:00
    - value: 3
      ts: 2017-01-10 10:03:00.000000000 +00:00
    - value: 4
      ts: 2017-01-10 10:04:00.000000000 +00:00
    - value: 5
      ts: 2017-01-10 10:05:00.000000000 +00:00
  time: 2017-01-10 10:05:00.000000000 +00:00
  function: min
  params: '4m'
out:
  return: SUCCEED
  value: 2
---
test case: Evaluate min(4m,2m)
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_UINT64
    data:
    - value: 1
      ts: 2017-01-10 10:01:00.000000000 +00:00
    - value: 2
      ts: 2017-01-10 10:02:00.000000000 +00:00
    - value: 3
      ts: 2017-01-10 10:03:00.000000000 +00:00
    - value: 4
      ts: 2017-01-10 10:04:00.000000000 +00:00
    - value: 5
      ts: 2017-01-10 10:05:00.000000000 +00:00
  time: 2017-01-10 10:05:00.000000000 +00:00
  function: min
  params: '4m:now-2m'
out:
  return: SUCCEED
  value: 1
---
test case: Evaluate nodata(1m)
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_UINT64
    data:
    - value: 1
      ts: 2017-01-10 10:01:00.000000000 +00:00
  time: 2017-01-10 10:05:00.000000000 +00:00
  function: nodata
  params: '1m'
out:
  return: SUCCEED
  value: 1
---
test case: Evaluate nodata(5m)
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_UINT64
    data:
    - value: 1
      ts: 2017-01-10 10:01:00.000000000 +00:00
  time: 2017-01-10 10:05:00.000000000 +00:00
  function: nodata
  params: '5m'
out:
  return: SUCCEED
  value: 0
---
test case: Evaluate percentile(5m,100)
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_UINT64
    data:
    - value: 1
      ts: 2017-01-10 10:01:00.000000000 +00:00
    - value: 2
      ts: 2017-01-10 10:02:00.000000000 +00:00
    - value: 3
      ts: 2017-01-10 10:03:00.000000000 +00:00
    - value: 4
      ts: 2017-01-10 10:04:00.000000000 +00:00
    - value: 5
      ts: 2017-01-10 10:05:00.000000000 +00:00
  time: 2017-01-10 10:05:00.000000000 +00:00
  function: percentile
  params: '5m,100'
out:
  return: SUCCEED
  value: 5
---
test case: Evaluate percentile(5m,50)
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_UINT64
    data:
    - value: 1
      ts: 2017-01-10 10:01:00.000000000 +00:00
    - value: 2
      ts: 2017-01-10 10:02:00.000000000 +00:00
    - value: 3
      ts: 2017-01-10 10:03:00.000000000 +00:00
    - value: 4
      ts: 2017-01-10 10:04:00.000000000 +00:00
    - value: 5
      ts: 2017-01-10 10:05:00.000000000 +00:00
  time: 2017-01-10 10:05:00.000000000 +00:00
  function: percentile
  params: '5m,50'
out:
  return: SUCCEED
  value: 3
---
test case: Evaluate sum(#4)
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_UINT64
    data:
    - value: 1
      ts: 2017-01-10 10:01:00.000000000 +00:00
    - value: 2
      ts: 2017-01-10 10:02:00.000000000 +00:00
    - value: 3
      ts: 2017-01-10 10:03:00.000000000 +00:00
    - value: 4
      ts: 2017-01-10 10:04:00.000000000 +00:00
    - value: 5
      ts: 2017-01-10 10:05:00.000000000 +00:00
  time: 2017-01-10 10:05:00.000000000 +00:00
  function: sum
  params: '#4'
out:
  return: SUCCEED
  value: 14
---
test case: Evaluate sum(4m:now-1m)
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_UINT64
    data:
    - value: 1
      ts: 2017-01-10 10:01:00.000000000 +00:00
    - value: 2
      ts: 2017-01-10 10:02:00.000000000 +00:00
    - value: 3
      ts: 2017-01-10 10:03:00.000000000 +00:00
    - value: 4
      ts: 2017-01-10 10:04:00.000000000 +00:00
    - value: 5
      ts: 2017-01-10 10:05:00.000000000 +00:00
  time: 2017-01-10 10:05:00.000000000 +00:00
  function: sum
  params: '4m:now-1m'
out:
  return: SUCCEED
  value: 10
---
test case: Evaluate sum(2m)
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_UINT64
    data:
    - value: 1
      ts: 2017-01-10 10:01:00.000000000 +00:00
    - value: 2
      ts: 2017-01-10 10:01:30.000000000 +00:00
    - value: 3
      ts: 2017-01-10 10:02:00.000000000 +00:00
    - value: 4
      ts: 2017-01-10 10:02:30.000000000 +00:00
    - value: 5
      ts: 2017-01-10 10:03:00.000000000 +00:00
    - value: 6
      ts: 2017-01-10 10:03:30.000000000 +00:00
    - value: 7
      ts: 2017-01-10 10:04:00.000000000 +00:00
    - value: 8
      ts: 2017-01-10 10:04:30.000000000 +00:00
    - value: 9
      ts: 2017-01-10 10:05:00.000000000 +00:00
  time: 2017-01-10 10:05:00.000000000 +00:00
  function: sum
  params: '2m'
out:
  return: SUCCEED
  value: 30
---
test case: Evaluate sum(#2)
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_UINT64
    data:
    - value: 1
      ts: 2017-01-10 10:01:00.000000000 +00:00
    - value: 2
      ts: 2017-01-10 10:01:30.000000000 +00:00
    - value: 3
      ts: 2017-01-10 10:02:00.000000000 +00:00
    - value: 4
      ts: 2017-01-10 10:02:30.000000000 +00:00
    - value: 5
      ts: 2017-01-10 10:03:00.000000000 +00:00
    - value: 6
      ts: 2017-01-10 10:03:30.000000000 +00:00
    - value: 7
      ts: 2017-01-10 10:04:00.000000000 +00:00
    - value: 8
      ts: 2017-01-10 10:04:30.000000000 +00:00
    - value: 9
      ts: 2017-01-10 10:05:00.000000000 +00:00
  time: 2017-01-10 10:05:00.000000000 +00:00
  function: sum
  params: '#2'
out:
  return: SUCCEED
  value: 17
---
test case: Evaluate sum(2m:now-1m)
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_UINT64
    data:
    - value: 1
      ts: 2017-01-10 10:01:00.000000000 +00:00
    - value: 2
      ts: 2017-01-10 10:01:30.000000000 +00:00
    - value: 3
      ts: 2017-01-10 10:02:00.000000000 +00:00
    - value: 4
      ts: 2017-01-10 10:02:30.000000000 +00:00
    - value: 5
      ts: 2017-01-10 10:03:00.000000000 +00:00
    - value: 6
      ts: 2017-01-10 10:03:30.000000000 +00:00
    - value: 7
      ts: 2017-01-10 10:04:00.000000000 +00:00
    - value: 8
      ts: 2017-01-10 10:04:30.000000000 +00:00
    - value: 9
      ts: 2017-01-10 10:05:00.000000000 +00:00
  time: 2017-01-10 10:05:00.000000000 +00:00
  function: sum
  params: '2m:now-1m'
out:
  return: SUCCEED
  value: 22
---
test case: Evaluate sum(#2:now-1m)
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_UINT64
    data:
    - value: 1
      ts: 2017-01-10 10:01:00.000000000 +00:00
    - value: 2
      ts: 2017-01-10 10:01:30.000000000 +00:00
    - value: 3
      ts: 2017-01-10 10:02:00.000000000 +00:00
    - value: 4
      ts: 2017-01-10 10:02:30.000000000 +00:00
    - value: 5
      ts: 2017-01-10 10:03:00.000000000 +00:00
    - value: 6
      ts: 2017-01-10 10:03:30.000000000 +00:00
    - value: 7
      ts: 2017-01-10 10:04:00.000000000 +00:00
    - value: 8
      ts: 2017-01-10 10:04:30.000000000 +00:00
    - value: 9
      ts: 2017-01-10 10:05:00.000000000 +00:00
  time: 2017-01-10 10:05:00.000000000 +00:00
  function: sum
  params: '#2:now-1m'
out:
  return: SUCCEED
  value: 13
---
test case: Evaluate timeleft(5m,65)
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_UINT64
    data:
    - value: 1
      ts: 2017-01-10 10:01:00.000000000 +00:00
    - value: 2
      ts: 2017-01-10 10:02:00.000000000 +00:00
    - value: 3
      ts: 2017-01-10 10:03:00.000000000 +00:00
    - value: 4
      ts: 2017-01-10 10:04:00.000000000 +00:00
    - value: 5
      ts: 2017-01-10 10:05:00.000000000 +00:00
  time: 2017-01-10 10:05:00.000000000 +00:00
  function: timeleft
  params: '5m,65'
out:
  return: SUCCEED
  value: 3600
---
test case: Evaluate timeleft(5m,65,test)
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_UINT64
    data:
    - value: 1
      ts: 2017-01-10 10:01:00.000000000 +00:00
    - value: 2
      ts: 2017-01-10 10:02:00.000000000 +00:00
    - value: 3
      ts: 2017-01-10 10:03:00.000000000 +00:00
    - value: 4
      ts: 2017-01-10 10:04:00.000000000 +00:00
    - value: 5
      ts: 2017-01-10 10:05:00.000000000 +00:00
  time: 2017-01-10 10:05:00.000000000 +00:00
  function: timeleft
  params: '5m,65,test'
out:
  return: FAIL
  value: 3600
---
test case: Evaluate change() <- 0.1, 0.2
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_FLOAT
    data:
    - value: 0.1
      ts: 2017-01-10 10:00:00.000000000 +00:00
    - value: 0.2
      ts: 2017-01-10 10:00:30.000000000 +00:00
  time: 2017-01-10 10:10:00.000000000 +00:00
  function: change
  params: ''
out:
  return: SUCCEED
  value: 0.1
---
test case: Evaluate change() <- 10, 7
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_UINT64
    data:
    - value: 10
      ts: 2017-01-10 10:00:00.000000000 +00:00
    - value: 7
      ts: 2017-01-10 10:00:30.000000000 +00:00
  time: 2017-01-10 10:10:00.000000000 +00:00
  function: change
  params: ''
out:
  return: SUCCEED
  value: -3
---
test case: Evaluate change() <- 'a', 'b'
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_STR
    data:
    - value: a
      ts: 2017-01-10 10:00:00.000000000 +00:00
    - value: b
      ts: 2017-01-10 10:00:30.000000000 +00:00
  time: 2017-01-10 10:10:00.000000000 +00:00
  function: change
  params: ''
out:
  return: SUCCEED
  value: 1
---
test case: Evaluate change() <- 'x', 'x'
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_TEXT
    data:
    - value: x
      ts: 2017-01-10 10:00:00.000000000 +00:00
    - value: x
      ts: 2017-01-10 10:00:30.000000000 +00:00
  time: 2017-01-10 10:10:00.000000000 +00:00
  function: change
  params: ''
out:
  return: SUCCEED
  value: 0
---
test case: Evaluate change() <- @log 'a', 'b'
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_LOG
    data:
    - value: a
      source:
      logeventid: 1
      severity: 1
      timestamp: 2
      ts: 2017-01-10 10:00:00.000000000 +00:00
    - value: b
      source:
      logeventid: 2
      severity: 1
      timestamp: 2
      ts: 2017-01-10 10:00:30.000000000 +00:00
  time: 2017-01-10 10:10:00.000000000 +00:00
  function: change
  params: ''
out:
  return: SUCCEED
  value: 1
---
test case: Evaluate change() <- @log 'x', 'x'
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_LOG
    data:
    - value: x
      source:
      logeventid: 1
      severity: 1
      timestamp: 2
      ts: 2017-01-10 10:00:00.000000000 +00:00
    - value: x
      source:
      logeventid: 2
      severity: 1
      timestamp: 2
      ts: 2017-01-10 10:00:30.000000000 +00:00
  time: 2017-01-10 10:10:00.000000000 +00:00
  function: change
  params: ''
out:
  return: SUCCEED
  value: 0
---
test case: Evaluate change() <- 18446744073709551610, 18446744073709551615
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_UINT64
    data:
    - value: 18446744073709551610
      ts: 2017-01-10 10:00:00.000000000 +00:00
    - value: 18446744073709551615
      ts: 2017-01-10 10:00:30.000000000 +00:00
  time: 2017-01-10 10:10:00.000000000 +00:00
  function: change
  params: ''
out:
  return: SUCCEED
  value: 5
---
test case: Evaluate change() <- 18446744073709551615, 18446744073709551610
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_UINT64
    data:
    - value: 18446744073709551615
      ts: 2017-01-10 10:00:00.000000000 +00:00
    - value: 18446744073709551610
      ts: 2017-01-10 10:00:30.000000000 +00:00
  time: 2017-01-10 10:10:00.000000000 +00:00
  function: change
  params: ''
out:
  return: SUCCEED
  value: -5
---
test case: Evaluate first() <- 0.1, 0.2. It should FAIL because no argument is specified.
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_FLOAT
    data:
    - value: 0.1
      ts: 2017-01-10 10:00:00.000000000 +00:00
    - value: 0.2
      ts: 2017-01-10 10:00:30.000000000 +00:00
  time: 2017-01-10 10:10:00.000000000 +00:00
  function: first
  params: ''
out:
  return: FAIL
  value:
---
test case: Evaluate first(#2) <- 0.1, 0.2. It should FAIL because number of value is specified.
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_FLOAT
    data:
    - value: 0.1
      ts: 2017-01-10 10:00:00.000000000 +00:00
    - value: 0.2
      ts: 2017-01-10 10:00:30.000000000 +00:00
  time: 2017-01-10 10:10:00.000000000 +00:00
  function: first
  params: '#2'
out:
  return: FAIL
  value:
---
test case: Evaluate first(600) <- 'xyz'. It should FAIL because not enough data.
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_STR
    data:
    - value: xyz
      ts: 2017-01-10 10:00:00.000000000 +00:00
  time: 2017-01-10 10:10:00.000000000 +00:00
  function: first
  params: '600'
out:
  return: FAIL
  value:
---
test case: Evaluate first(601) <- 'xyz'
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_STR
    data:
    - value: xyz
      ts: 2017-01-10 10:00:00.000000000 +00:00
  time: 2017-01-10 10:10:00.000000000 +00:00
  function: first
  params: '601'
out:
  return: SUCCEED
  value: 'xyz'
---
test case: Evaluate first(:now-10m) <- 0.1, 0.2. It should FAIL because no time interval is specified.
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_FLOAT
    data:
    - value: 0.1
      ts: 2017-01-10 10:00:00.000000000 +00:00
    - value: 0.2
      ts: 2017-01-10 10:00:30.000000000 +00:00
  time: 2017-01-10 10:10:00.000000000 +00:00
  function: first
  params: :now-10m
out:
  return: FAIL
  value:
---
test case: Evaluate first(60:now-10m) <- 0.1, 0.2, 0.3
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_FLOAT
    data:
    - value: 0.1
      ts: 2017-01-10 10:00:00.000000000 +00:00
    - value: 0.2
      ts: 2017-01-10 10:00:30.000000000 +00:00
    - value: 0.3
      ts: 2017-01-10 10:01:00.000000000 +00:00
  time: 2017-01-10 10:11:00.000000000 +00:00
  function: first
  params: 60:now-10m
out:
  return: SUCCEED
  value: 0.2
---
test case: Evaluate first(61:now-10m) <- 0.1, 0.2, 0.3
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_FLOAT
    data:
    - value: 0.1
      ts: 2017-01-10 10:00:00.000000000 +00:00
    - value: 0.2
      ts: 2017-01-10 10:00:30.000000000 +00:00
    - value: 0.3
      ts: 2017-01-10 10:01:00.000000000 +00:00
  time: 2017-01-10 10:11:00.000000000 +00:00
  function: first
  params: 61:now-10m
out:
  return: SUCCEED
  value: 0.1
---
test case: Evaluate kurtosis(3m) FLOAT 0
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_FLOAT
    data:
    - value: 0
      ts: 2021-03-27 10:03:00.000000000 +00:00
  time: 2021-03-27 10:05:00.000000000 +00:00
  function: kurtosis
  params: 3m
out:
  return: FAIL
  value:
---
test case: Evaluate kurtosis(3m) UINT64 0
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_UINT64
    data:
    - value: 0
      ts: 2021-03-27 10:03:00.000000000 +00:00
  time: 2021-03-27 10:05:00.000000000 +00:00
  function: kurtosis
  params: 3m
out:
  return: FAIL
  value:
---
test case: Evaluate kurtosis(3m) FLOAT 0, 1, 2
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_FLOAT
    data:
    - value: 1
      ts: 2021-03-27 10:01:00.000000000 +00:00
    - value: 2
      ts: 2021-03-27 10:02:00.000000000 +00:00
    - value: 0
      ts: 2021-03-27 10:03:00.000000000 +00:00
    - value: 1
      ts: 2021-03-27 10:04:00.000000000 +00:00
    - value: 2
      ts: 2021-03-27 10:05:00.000000000 +00:00
  time: 2021-03-27 10:05:00.000000000 +00:00
  function: kurtosis
  params: 3m
out:
  return: SUCCEED
  value: 1.5
---
test case: Evaluate kurtosis(3m) UINT64 0, 1, 2
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_UINT64
    data:
    - value: 1
      ts: 2021-03-27 10:01:00.000000000 +00:00
    - value: 2
      ts: 2021-03-27 10:02:00.000000000 +00:00
    - value: 0
      ts: 2021-03-27 10:03:00.000000000 +00:00
    - value: 1
      ts: 2021-03-27 10:04:00.000000000 +00:00
    - value: 2
      ts: 2021-03-27 10:05:00.000000000 +00:00
  time: 2021-03-27 10:05:00.000000000 +00:00
  function: kurtosis
  params: 3m
out:
  return: SUCCEED
  value: 1.5
---
test case: Evaluate kurtosis(6m) FLOAT 26, 12, 16, 56, 112, 24
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_FLOAT
    data:
    - value: 1
      ts: 2021-03-27 10:01:00.000000000 +00:00
    - value: 26
      ts: 2021-03-27 10:02:00.000000000 +00:00
    - value: 12
      ts: 2021-03-27 10:03:00.000000000 +00:00
    - value: 16
      ts: 2021-03-27 10:04:00.000000000 +00:00
    - value: 56
      ts: 2021-03-27 10:05:00.000000000 +00:00
    - value: 112
      ts: 2021-03-27 10:06:00.000000000 +00:00
    - value: 24
      ts: 2021-03-27 10:07:00.000000000 +00:00
  time: 2021-03-27 10:07:00.000000000 +00:00
  function: kurtosis
  params: 6m
out:
  return: SUCCEED
  value: 3.050521
---
test case: Evaluate kurtosis(6m) UINT64 26, 12, 16, 56, 112, 24
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_UINT64
    data:
    - value: 1
      ts: 2021-03-27 10:01:00.000000000 +00:00
    - value: 26
      ts: 2021-03-27 10:02:00.000000000 +00:00
    - value: 12
      ts: 2021-03-27 10:03:00.000000000 +00:00
    - value: 16
      ts: 2021-03-27 10:04:00.000000000 +00:00
    - value: 56
      ts: 2021-03-27 10:05:00.000000000 +00:00
    - value: 112
      ts: 2021-03-27 10:06:00.000000000 +00:00
    - value: 24
      ts: 2021-03-27 10:07:00.000000000 +00:00
  time: 2021-03-27 10:07:00.000000000 +00:00
  function: kurtosis
  params: 6m
out:
  return: SUCCEED
  value: 3.050521
---
test case: Evaluate mad(7m) FLOAT 1, 1, 2, 2, 4, 6, 9 - odd number of values
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_FLOAT
    data:
    - value: 100
      ts: 2021-03-27 10:01:00.000000000 +00:00
    - value: 1
      ts: 2021-03-27 10:02:00.000000000 +00:00
    - value: 1
      ts: 2021-03-27 10:03:00.000000000 +00:00
    - value: 2
      ts: 2021-03-27 10:04:00.000000000 +00:00
    - value: 2
      ts: 2021-03-27 10:05:00.000000000 +00:00
    - value: 4
      ts: 2021-03-27 10:06:00.000000000 +00:00
    - value: 6
      ts: 2021-03-27 10:07:00.000000000 +00:00
    - value: 9
      ts: 2021-03-27 10:08:00.000000000 +00:00
  time: 2021-03-27 10:08:00.000000000 +00:00
  function: mad
  params: 7m
out:
  return: SUCCEED
  value: 1.0
---
test case: Evaluate mad(7m) UINT64 1, 1, 2, 2, 4, 6, 9 - odd number of values
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_UINT64
    data:
    - value: 100
      ts: 2021-03-27 10:01:00.000000000 +00:00
    - value: 1
      ts: 2021-03-27 10:02:00.000000000 +00:00
    - value: 1
      ts: 2021-03-27 10:03:00.000000000 +00:00
    - value: 2
      ts: 2021-03-27 10:04:00.000000000 +00:00
    - value: 2
      ts: 2021-03-27 10:05:00.000000000 +00:00
    - value: 4
      ts: 2021-03-27 10:06:00.000000000 +00:00
    - value: 6
      ts: 2021-03-27 10:07:00.000000000 +00:00
    - value: 9
      ts: 2021-03-27 10:08:00.000000000 +00:00
  time: 2021-03-27 10:08:00.000000000 +00:00
  function: mad
  params: 7m
out:
  return: SUCCEED
  value: 1.0
---
test case: Evaluate mad(6m) FLOAT 26, 12, 16, 56, 112, 24 - even number of values
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_FLOAT
    data:
    - value: 1
      ts: 2021-03-27 10:01:00.000000000 +00:00
    - value: 26
      ts: 2021-03-27 10:02:00.000000000 +00:00
    - value: 12
      ts: 2021-03-27 10:03:00.000000000 +00:00
    - value: 16
      ts: 2021-03-27 10:04:00.000000000 +00:00
    - value: 56
      ts: 2021-03-27 10:05:00.000000000 +00:00
    - value: 112
      ts: 2021-03-27 10:06:00.000000000 +00:00
    - value: 24
      ts: 2021-03-27 10:07:00.000000000 +00:00
  time: 2021-03-27 10:07:00.000000000 +00:00
  function: mad
  params: 6m
out:
  return: SUCCEED
  value: 11.0
---
test case: Evaluate mad(6m) UINT64 26, 12, 16, 56, 112, 24 - even number of values
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_UINT64
    data:
    - value: 1
      ts: 2021-03-27 10:01:00.000000000 +00:00
    - value: 26
      ts: 2021-03-27 10:02:00.000000000 +00:00
    - value: 12
      ts: 2021-03-27 10:03:00.000000000 +00:00
    - value: 16
      ts: 2021-03-27 10:04:00.000000000 +00:00
    - value: 56
      ts: 2021-03-27 10:05:00.000000000 +00:00
    - value: 112
      ts: 2021-03-27 10:06:00.000000000 +00:00
    - value: 24
      ts: 2021-03-27 10:07:00.000000000 +00:00
  time: 2021-03-27 10:07:00.000000000 +00:00
  function: mad
  params: 6m
out:
  return: SUCCEED
  value: 11.0
---
test case: Evaluate skewness(3m) FLOAT 0, 1, 2
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_FLOAT
    data:
    - value: 1
      ts: 2021-03-27 10:01:00.000000000 +00:00
    - value: 2
      ts: 2021-03-27 10:02:00.000000000 +00:00
    - value: 0
      ts: 2021-03-27 10:03:00.000000000 +00:00
    - value: 1
      ts: 2021-03-27 10:04:00.000000000 +00:00
    - value: 2
      ts: 2021-03-27 10:05:00.000000000 +00:00
  time: 2021-03-27 10:05:00.000000000 +00:00
  function: skewness
  params: 3m
out:
  return: SUCCEED
  value: 0
---
test case: Evaluate skewness(3m) UINT64 0, 1, 2
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_UINT64
    data:
    - value: 1
      ts: 2021-03-27 10:01:00.000000000 +00:00
    - value: 2
      ts: 2021-03-27 10:02:00.000000000 +00:00
    - value: 0
      ts: 2021-03-27 10:03:00.000000000 +00:00
    - value: 1
      ts: 2021-03-27 10:04:00.000000000 +00:00
    - value: 2
      ts: 2021-03-27 10:05:00.000000000 +00:00
  time: 2021-03-27 10:05:00.000000000 +00:00
  function: skewness
  params: 3m
out:
  return: SUCCEED
  value: 0
---
test case: Evaluate skewness(6m) FLOAT 26, 12, 16, 56, 112, 24
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_FLOAT
    data:
    - value: 1
      ts: 2021-03-27 10:01:00.000000000 +00:00
    - value: 26
      ts: 2021-03-27 10:02:00.000000000 +00:00
    - value: 12
      ts: 2021-03-27 10:03:00.000000000 +00:00
    - value: 16
      ts: 2021-03-27 10:04:00.000000000 +00:00
    - value: 56
      ts: 2021-03-27 10:05:00.000000000 +00:00
    - value: 112
      ts: 2021-03-27 10:06:00.000000000 +00:00
    - value: 24
      ts: 2021-03-27 10:07:00.000000000 +00:00
  time: 2021-03-27 10:07:00.000000000 +00:00
  function: skewness
  params: 6m
out:
  return: SUCCEED
  value: 1.24294
---
test case: Evaluate skewness(6m) UINT64 26, 12, 16, 56, 112, 24
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_UINT64
    data:
    - value: 1
      ts: 2021-03-27 10:01:00.000000000 +00:00
    - value: 26
      ts: 2021-03-27 10:02:00.000000000 +00:00
    - value: 12
      ts: 2021-03-27 10:03:00.000000000 +00:00
    - value: 16
      ts: 2021-03-27 10:04:00.000000000 +00:00
    - value: 56
      ts: 2021-03-27 10:05:00.000000000 +00:00
    - value: 112
      ts: 2021-03-27 10:06:00.000000000 +00:00
    - value: 24
      ts: 2021-03-27 10:07:00.000000000 +00:00
  time: 2021-03-27 10:07:00.000000000 +00:00
  function: skewness
  params: 6m
out:
  return: SUCCEED
  value: 1.24294
---
test case: Evaluate stddevpop(3m) FLOAT 0, 1, 2
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_FLOAT
    data:
    - value: 1
      ts: 2021-03-27 10:01:00.000000000 +00:00
    - value: 2
      ts: 2021-03-27 10:02:00.000000000 +00:00
    - value: 0
      ts: 2021-03-27 10:03:00.000000000 +00:00
    - value: 1
      ts: 2021-03-27 10:04:00.000000000 +00:00
    - value: 2
      ts: 2021-03-27 10:05:00.000000000 +00:00
  time: 2021-03-27 10:05:00.000000000 +00:00
  function: stddevpop
  params: 3m
out:
  return: SUCCEED
  value: 0.816497
---
test case: Evaluate stddevpop(3m) UINT64 0, 1, 2
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_UINT64
    data:
    - value: 1
      ts: 2021-03-27 10:01:00.000000000 +00:00
    - value: 2
      ts: 2021-03-27 10:02:00.000000000 +00:00
    - value: 0
      ts: 2021-03-27 10:03:00.000000000 +00:00
    - value: 1
      ts: 2021-03-27 10:04:00.000000000 +00:00
    - value: 2
      ts: 2021-03-27 10:05:00.000000000 +00:00
  time: 2021-03-27 10:05:00.000000000 +00:00
  function: stddevpop
  params: 3m
out:
  return: SUCCEED
  value: 0.816497
---
test case: Evaluate stddevpop(6m) FLOAT 26, 12, 16, 56, 112, 24
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_FLOAT
    data:
    - value: 1
      ts: 2021-03-27 10:01:00.000000000 +00:00
    - value: 26
      ts: 2021-03-27 10:02:00.000000000 +00:00
    - value: 12
      ts: 2021-03-27 10:03:00.000000000 +00:00
    - value: 16
      ts: 2021-03-27 10:04:00.000000000 +00:00
    - value: 56
      ts: 2021-03-27 10:05:00.000000000 +00:00
    - value: 112
      ts: 2021-03-27 10:06:00.000000000 +00:00
    - value: 24
      ts: 2021-03-27 10:07:00.000000000 +00:00
  time: 2021-03-27 10:07:00.000000000 +00:00
  function: stddevpop
  params: 6m
out:
  return: SUCCEED
  value: 34.751499
---
test case: Evaluate stddevpop(6m) FLOAT 135.190000
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_FLOAT
    data:
    - value: 1
      ts: 2021-03-27 10:01:00.000000000 +00:00
    - value: 135.190000
      ts: 2021-03-27 10:02:00.000000000 +00:00
    - value: 122.200000
      ts: 2021-03-27 10:03:00.000000000 +00:00
    - value: 66.700000
      ts: 2021-03-27 10:04:00.000000000 +00:00
    - value: 58.990000
      ts: 2021-03-27 10:05:00.000000000 +00:00
    - value: 40.000000
      ts: 2021-03-27 10:06:00.000000000 +00:00
    - value: 47.420000
      ts: 2021-03-27 10:07:00.000000000 +00:00
  time: 2021-03-27 10:07:00.000000000 +00:00
  function: stddevpop
  params: 6m
out:
  return: SUCCEED
  value: 36.723065
---
test case: Evaluate stddevpop(6m) UINT64 26, 12, 16, 56, 112, 24
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_UINT64
    data:
    - value: 1
      ts: 2021-03-27 10:01:00.000000000 +00:00
    - value: 26
      ts: 2021-03-27 10:02:00.000000000 +00:00
    - value: 12
      ts: 2021-03-27 10:03:00.000000000 +00:00
    - value: 16
      ts: 2021-03-27 10:04:00.000000000 +00:00
    - value: 56
      ts: 2021-03-27 10:05:00.000000000 +00:00
    - value: 112
      ts: 2021-03-27 10:06:00.000000000 +00:00
    - value: 24
      ts: 2021-03-27 10:07:00.000000000 +00:00
  time: 2021-03-27 10:07:00.000000000 +00:00
  function: stddevpop
  params: 6m
out:
  return: SUCCEED
  value: 34.751499
---
test case: Evaluate stddevsamp(3m) FLOAT 0, 1, 2
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_FLOAT
    data:
    - value: 1
      ts: 2021-03-27 10:01:00.000000000 +00:00
    - value: 2
      ts: 2021-03-27 10:02:00.000000000 +00:00
    - value: 0
      ts: 2021-03-27 10:03:00.000000000 +00:00
    - value: 1
      ts: 2021-03-27 10:04:00.000000000 +00:00
    - value: 2
      ts: 2021-03-27 10:05:00.000000000 +00:00
  time: 2021-03-27 10:05:00.000000000 +00:00
  function: stddevsamp
  params: 3m
out:
  return: SUCCEED
  value: 1
---
test case: Evaluate stddevsamp(3m) UINT64 0, 1, 2
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_UINT64
    data:
    - value: 1
      ts: 2021-03-27 10:01:00.000000000 +00:00
    - value: 2
      ts: 2021-03-27 10:02:00.000000000 +00:00
    - value: 0
      ts: 2021-03-27 10:03:00.000000000 +00:00
    - value: 1
      ts: 2021-03-27 10:04:00.000000000 +00:00
    - value: 2
      ts: 2021-03-27 10:05:00.000000000 +00:00
  time: 2021-03-27 10:05:00.000000000 +00:00
  function: stddevsamp
  params: 3m
out:
  return: SUCCEED
  value: 1
---
test case: Evaluate stddevsamp(6m) FLOAT 26, 12, 16, 56, 112, 24
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_FLOAT
    data:
    - value: 1
      ts: 2021-03-27 10:01:00.000000000 +00:00
    - value: 26
      ts: 2021-03-27 10:02:00.000000000 +00:00
    - value: 12
      ts: 2021-03-27 10:03:00.000000000 +00:00
    - value: 16
      ts: 2021-03-27 10:04:00.000000000 +00:00
    - value: 56
      ts: 2021-03-27 10:05:00.000000000 +00:00
    - value: 112
      ts: 2021-03-27 10:06:00.000000000 +00:00
    - value: 24
      ts: 2021-03-27 10:07:00.000000000 +00:00
  time: 2021-03-27 10:07:00.000000000 +00:00
  function: stddevsamp
  params: 6m
out:
  return: SUCCEED
  value: 38.068360
---
test case: Evaluate stddevsamp(6m) UINT64 26, 12, 16, 56, 112, 24
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_UINT64
    data:
    - value: 1
      ts: 2021-03-27 10:01:00.000000000 +00:00
    - value: 26
      ts: 2021-03-27 10:02:00.000000000 +00:00
    - value: 12
      ts: 2021-03-27 10:03:00.000000000 +00:00
    - value: 16
      ts: 2021-03-27 10:04:00.000000000 +00:00
    - value: 56
      ts: 2021-03-27 10:05:00.000000000 +00:00
    - value: 112
      ts: 2021-03-27 10:06:00.000000000 +00:00
    - value: 24
      ts: 2021-03-27 10:07:00.000000000 +00:00
  time: 2021-03-27 10:07:00.000000000 +00:00
  function: stddevsamp
  params: 6m
out:
  return: SUCCEED
  value: 38.068360
---
test case: Evaluate sumofsquares(3m) FLOAT 0, 1, 2
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_FLOAT
    data:
    - value: 1
      ts: 2021-03-27 10:01:00.000000000 +00:00
    - value: 2
      ts: 2021-03-27 10:02:00.000000000 +00:00
    - value: 0
      ts: 2021-03-27 10:03:00.000000000 +00:00
    - value: 1
      ts: 2021-03-27 10:04:00.000000000 +00:00
    - value: 2
      ts: 2021-03-27 10:05:00.000000000 +00:00
  time: 2021-03-27 10:05:00.000000000 +00:00
  function: sumofsquares
  params: 3m
out:
  return: SUCCEED
  value: 5
---
test case: Evaluate sumofsquares(3m) UINT64 0, 1, 2
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_UINT64
    data:
    - value: 1
      ts: 2021-03-27 10:01:00.000000000 +00:00
    - value: 2
      ts: 2021-03-27 10:02:00.000000000 +00:00
    - value: 0
      ts: 2021-03-27 10:03:00.000000000 +00:00
    - value: 1
      ts: 2021-03-27 10:04:00.000000000 +00:00
    - value: 2
      ts: 2021-03-27 10:05:00.000000000 +00:00
  time: 2021-03-27 10:05:00.000000000 +00:00
  function: sumofsquares
  params: 3m
out:
  return: SUCCEED
  value: 5
---
test case: Evaluate sumofsquares(6m) FLOAT 26, 12, 16, 56, 112, 24
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_FLOAT
    data:
    - value: 1
      ts: 2021-03-27 10:01:00.000000000 +00:00
    - value: 26
      ts: 2021-03-27 10:02:00.000000000 +00:00
    - value: 12
      ts: 2021-03-27 10:03:00.000000000 +00:00
    - value: 16
      ts: 2021-03-27 10:04:00.000000000 +00:00
    - value: 56
      ts: 2021-03-27 10:05:00.000000000 +00:00
    - value: 112
      ts: 2021-03-27 10:06:00.000000000 +00:00
    - value: 24
      ts: 2021-03-27 10:07:00.000000000 +00:00
  time: 2021-03-27 10:07:00.000000000 +00:00
  function: sumofsquares
  params: 6m
out:
  return: SUCCEED
  value: 17332
---
test case: Evaluate sumofsquares(6m) UINT64 26, 12, 16, 56, 112, 24
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_UINT64
    data:
    - value: 1
      ts: 2021-03-27 10:01:00.000000000 +00:00
    - value: 26
      ts: 2021-03-27 10:02:00.000000000 +00:00
    - value: 12
      ts: 2021-03-27 10:03:00.000000000 +00:00
    - value: 16
      ts: 2021-03-27 10:04:00.000000000 +00:00
    - value: 56
      ts: 2021-03-27 10:05:00.000000000 +00:00
    - value: 112
      ts: 2021-03-27 10:06:00.000000000 +00:00
    - value: 24
      ts: 2021-03-27 10:07:00.000000000 +00:00
  time: 2021-03-27 10:07:00.000000000 +00:00
  function: sumofsquares
  params: 6m
out:
  return: SUCCEED
  value: 17332
---
test case: Evaluate varpop(3m) FLOAT 0, 1, 2
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_FLOAT
    data:
    - value: 1
      ts: 2021-03-27 10:01:00.000000000 +00:00
    - value: 2
      ts: 2021-03-27 10:02:00.000000000 +00:00
    - value: 0
      ts: 2021-03-27 10:03:00.000000000 +00:00
    - value: 1
      ts: 2021-03-27 10:04:00.000000000 +00:00
    - value: 2
      ts: 2021-03-27 10:05:00.000000000 +00:00
  time: 2021-03-27 10:05:00.000000000 +00:00
  function: varpop
  params: 3m
out:
  return: SUCCEED
  value: 0.666667
---
test case: Evaluate varpop(3m) UINT64 0, 1, 2
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_UINT64
    data:
    - value: 1
      ts: 2021-03-27 10:01:00.000000000 +00:00
    - value: 2
      ts: 2021-03-27 10:02:00.000000000 +00:00
    - value: 0
      ts: 2021-03-27 10:03:00.000000000 +00:00
    - value: 1
      ts: 2021-03-27 10:04:00.000000000 +00:00
    - value: 2
      ts: 2021-03-27 10:05:00.000000000 +00:00
  time: 2021-03-27 10:05:00.000000000 +00:00
  function: varpop
  params: 3m
out:
  return: SUCCEED
  value: 0.666667
---
test case: Evaluate varpop(6m) FLOAT 26, 12, 16, 56, 112, 24
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_FLOAT
    data:
    - value: 1
      ts: 2021-03-27 10:01:00.000000000 +00:00
    - value: 26
      ts: 2021-03-27 10:02:00.000000000 +00:00
    - value: 12
      ts: 2021-03-27 10:03:00.000000000 +00:00
    - value: 16
      ts: 2021-03-27 10:04:00.000000000 +00:00
    - value: 56
      ts: 2021-03-27 10:05:00.000000000 +00:00
    - value: 112
      ts: 2021-03-27 10:06:00.000000000 +00:00
    - value: 24
      ts: 2021-03-27 10:07:00.000000000 +00:00
  time: 2021-03-27 10:07:00.000000000 +00:00
  function: varpop
  params: 6m
out:
  return: SUCCEED
  value: 1207.666667
---
test case: Evaluate varpop(6m) UINT64 26, 12, 16, 56, 112, 24
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_UINT64
    data:
    - value: 1
      ts: 2021-03-27 10:01:00.000000000 +00:00
    - value: 26
      ts: 2021-03-27 10:02:00.000000000 +00:00
    - value: 12
      ts: 2021-03-27 10:03:00.000000000 +00:00
    - value: 16
      ts: 2021-03-27 10:04:00.000000000 +00:00
    - value: 56
      ts: 2021-03-27 10:05:00.000000000 +00:00
    - value: 112
      ts: 2021-03-27 10:06:00.000000000 +00:00
    - value: 24
      ts: 2021-03-27 10:07:00.000000000 +00:00
  time: 2021-03-27 10:07:00.000000000 +00:00
  function: varpop
  params: 6m
out:
  return: SUCCEED
  value: 1207.666667
---
test case: Evaluate varsamp(3m) FLOAT 0, 1, 2
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_FLOAT
    data:
    - value: 1
      ts: 2021-03-27 10:01:00.000000000 +00:00
    - value: 2
      ts: 2021-03-27 10:02:00.000000000 +00:00
    - value: 0
      ts: 2021-03-27 10:03:00.000000000 +00:00
    - value: 1
      ts: 2021-03-27 10:04:00.000000000 +00:00
    - value: 2
      ts: 2021-03-27 10:05:00.000000000 +00:00
  time: 2021-03-27 10:05:00.000000000 +00:00
  function: varsamp
  params: 3m
out:
  return: SUCCEED
  value: 1
---
test case: Evaluate varsamp(3m) UINT64 0, 1, 2
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_UINT64
    data:
    - value: 1
      ts: 2021-03-27 10:01:00.000000000 +00:00
    - value: 2
      ts: 2021-03-27 10:02:00.000000000 +00:00
    - value: 0
      ts: 2021-03-27 10:03:00.000000000 +00:00
    - value: 1
      ts: 2021-03-27 10:04:00.000000000 +00:00
    - value: 2
      ts: 2021-03-27 10:05:00.000000000 +00:00
  time: 2021-03-27 10:05:00.000000000 +00:00
  function: varsamp
  params: 3m
out:
  return: SUCCEED
  value: 1
---
test case: Evaluate varsamp(6m) FLOAT 26, 12, 16, 56, 112, 24
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_FLOAT
    data:
    - value: 1
      ts: 2021-03-27 10:01:00.000000000 +00:00
    - value: 26
      ts: 2021-03-27 10:02:00.000000000 +00:00
    - value: 12
      ts: 2021-03-27 10:03:00.000000000 +00:00
    - value: 16
      ts: 2021-03-27 10:04:00.000000000 +00:00
    - value: 56
      ts: 2021-03-27 10:05:00.000000000 +00:00
    - value: 112
      ts: 2021-03-27 10:06:00.000000000 +00:00
    - value: 24
      ts: 2021-03-27 10:07:00.000000000 +00:00
  time: 2021-03-27 10:07:00.000000000 +00:00
  function: varsamp
  params: 6m
out:
  return: SUCCEED
  value: 1449.2
---
test case: Evaluate varsamp(6m) UINT64 26, 12, 16, 56, 112, 24
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_UINT64
    data:
    - value: 1
      ts: 2021-03-27 10:01:00.000000000 +00:00
    - value: 26
      ts: 2021-03-27 10:02:00.000000000 +00:00
    - value: 12
      ts: 2021-03-27 10:03:00.000000000 +00:00
    - value: 16
      ts: 2021-03-27 10:04:00.000000000 +00:00
    - value: 56
      ts: 2021-03-27 10:05:00.000000000 +00:00
    - value: 112
      ts: 2021-03-27 10:06:00.000000000 +00:00
    - value: 24
      ts: 2021-03-27 10:07:00.000000000 +00:00
  time: 2021-03-27 10:07:00.000000000 +00:00
  function: varsamp
  params: 6m
out:
  return: SUCCEED
  value: 1449.2
---
test case: Evaluate default weak, monoinc() is true
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_UINT64
    data:
    - value: 1
      ts: 2021-03-27 10:01:00.000000000 +00:00
    - value: 2
      ts: 2021-03-27 10:02:00.000000000 +00:00
    - value: 3
      ts: 2021-03-27 10:03:00.000000000 +00:00
    - value: 4
      ts: 2021-03-27 10:04:00.000000000 +00:00
    - value: 5
      ts: 2021-03-27 10:05:00.000000000 +00:00
    - value: 6
      ts: 2021-03-27 10:06:00.000000000 +00:00
    - value: 7
      ts: 2021-03-27 10:07:00.000000000 +00:00
  time: 2021-03-27 10:07:00.000000000 +00:00
  function: monoinc
  params: '#6'
out:
  return: SUCCEED
  value: 1
---
test case: Evaluate default weak monoinc() is false
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_UINT64
    data:
    - value: 1
      ts: 2021-03-27 10:01:00.000000000 +00:00
    - value: 26
      ts: 2021-03-27 10:02:00.000000000 +00:00
    - value: 12
      ts: 2021-03-27 10:03:00.000000000 +00:00
    - value: 16
      ts: 2021-03-27 10:04:00.000000000 +00:00
    - value: 56
      ts: 2021-03-27 10:05:00.000000000 +00:00
    - value: 112
      ts: 2021-03-27 10:06:00.000000000 +00:00
    - value: 24
      ts: 2021-03-27 10:07:00.000000000 +00:00
  time: 2021-03-27 10:07:00.000000000 +00:00
  function: monoinc
  params: '#6'
out:
  return: SUCCEED
  value: 0
---
test case: Evaluate specific weak monoinc() is true
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_UINT64
    data:
    - value: 1
      ts: 2021-03-27 10:01:00.000000000 +00:00
    - value: 2
      ts: 2021-03-27 10:02:00.000000000 +00:00
    - value: 2
      ts: 2021-03-27 10:03:00.000000000 +00:00
    - value: 3
      ts: 2021-03-27 10:04:00.000000000 +00:00
    - value: 5
      ts: 2021-03-27 10:05:00.000000000 +00:00
    - value: 6
      ts: 2021-03-27 10:06:00.000000000 +00:00
    - value: 7
      ts: 2021-03-27 10:07:00.000000000 +00:00
  time: 2021-03-27 10:07:00.000000000 +00:00
  function: monoinc
  params: '#6,"weak"'
out:
  return: SUCCEED
  value: 1
---
test case: Evaluate specific weak monoinc() is false
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_UINT64
    data:
    - value: 1
      ts: 2021-03-27 10:01:00.000000000 +00:00
    - value: 1
      ts: 2021-03-27 10:02:00.000000000 +00:00
    - value: 2
      ts: 2021-03-27 10:03:00.000000000 +00:00
    - value: 2
      ts: 2021-03-27 10:04:00.000000000 +00:00
    - value: 1
      ts: 2021-03-27 10:05:00.000000000 +00:00
    - value: 2
      ts: 2021-03-27 10:06:00.000000000 +00:00
    - value: 1
      ts: 2021-03-27 10:07:00.000000000 +00:00
  time: 2021-03-27 10:07:00.000000000 +00:00
  function: monoinc
  params: '#6,"weak"'
out:
  return: SUCCEED
  value: 0
---
test case: Evaluate strict monoinc() is true
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_UINT64
    data:
    - value: 0
      ts: 2021-03-27 10:01:00.000000000 +00:00
    - value: 1
      ts: 2021-03-27 10:02:00.000000000 +00:00
    - value: 2
      ts: 2021-03-27 10:03:00.000000000 +00:00
    - value: 3
      ts: 2021-03-27 10:04:00.000000000 +00:00
    - value: 4
      ts: 2021-03-27 10:05:00.000000000 +00:00
    - value: 5
      ts: 2021-03-27 10:06:00.000000000 +00:00
    - value: 6
      ts: 2021-03-27 10:07:00.000000000 +00:00
  time: 2021-03-27 10:07:00.000000000 +00:00
  function: monoinc
  params: '#6,"strict"'
out:
  return: SUCCEED
  value: 1
---
test case: Evaluate strict monoinc() is false
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_UINT64
    data:
    - value: 1
      ts: 2021-03-27 10:01:00.000000000 +00:00
    - value: 1
      ts: 2021-03-27 10:02:00.000000000 +00:00
    - value: 2
      ts: 2021-03-27 10:03:00.000000000 +00:00
    - value: 3
      ts: 2021-03-27 10:04:00.000000000 +00:00
    - value: 4
      ts: 2021-03-27 10:05:00.000000000 +00:00
    - value: 5
      ts: 2021-03-27 10:06:00.000000000 +00:00
  time: 2021-03-27 10:07:00.000000000 +00:00
  function: monoinc
  params: '#6,"strict"'
out:
  return: SUCCEED
  value: 0
---
test case: Evaluate weak monoinc() is true for single element
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_UINT64
    data:
    - value: 0
      ts: 2021-03-27 10:01:00.000000000 +00:00
  time: 2021-03-27 10:07:00.000000000 +00:00
  function: monoinc
  params: '#6'
out:
  return: SUCCEED
  value: 1
---
test case: Evaluate strict monoinc() is true for single element
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_UINT64
    data:
    - value: 0
      ts: 2021-03-27 10:01:00.000000000 +00:00
  time: 2021-03-27 10:07:00.000000000 +00:00
  function: monoinc
  params: '#6,"strict"'
out:
  return: SUCCEED
  value: 1
---
test case: Evaluate strict monoinc() is true, breaking element is too old
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_UINT64
    data:
    - value: 1
      ts: 2021-03-27 10:01:00.000000000 +00:00
    - value: 1
      ts: 2021-03-27 10:02:00.000000000 +00:00
    - value: 2
      ts: 2021-03-27 10:03:00.000000000 +00:00
    - value: 3
      ts: 2021-03-27 10:04:00.000000000 +00:00
    - value: 4
      ts: 2021-03-27 10:05:00.000000000 +00:00
    - value: 5
      ts: 2021-03-27 10:06:00.000000000 +00:00
    - value: 6
      ts: 2021-03-27 10:07:00.000000000 +00:00
  time: 2021-03-27 10:07:00.000000000 +00:00
  function: monoinc
  params: '#6,"strict"'
out:
  return: SUCCEED
  value: 1
---
test case: Evaluate strict monoinc() is true, using time
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_UINT64
    data:
    - value: 200
      ts: 2021-03-27 10:02:00.000000000 +00:00
    - value: 100
      ts: 2021-03-27 10:03:00.000000000 +00:00
    - value: 3
      ts: 2021-03-27 10:04:00.000000000 +00:00
    - value: 4
      ts: 2021-03-27 10:05:00.000000000 +00:00
    - value: 5
      ts: 2021-03-27 10:06:00.000000000 +00:00
    - value: 6
      ts: 2021-03-27 10:07:00.000000000 +00:00
  time: 2021-03-27 10:07:00.000000000 +00:00
  function: monoinc
  params: '4m,"strict"'
out:
  return: SUCCEED
  value: 1
---
test case: Evaluate strict monoinc() is false, using time
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_UINT64
    data:
    - value: 200
      ts: 2021-03-27 10:02:00.000000000 +00:00
    - value: 100
      ts: 2021-03-27 10:03:00.000000000 +00:00
    - value: 3
      ts: 2021-03-27 10:04:00.000000000 +00:00
    - value: 4
      ts: 2021-03-27 10:05:00.000000000 +00:00
    - value: 5
      ts: 2021-03-27 10:06:00.000000000 +00:00
    - value: 6
      ts: 2021-03-27 10:07:00.000000000 +00:00
  time: 2021-03-27 10:07:00.000000000 +00:00
  function: monoinc
  params: '5m,"strict"'
out:
  return: SUCCEED
  value: 0
---
test case: Evaluate strict monoinc() is true, breaking element is ignored by time shift
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_UINT64
    data:
    - value: 1
      ts: 2021-03-27 10:01:00.000000000 +00:00
    - value: 1
      ts: 2021-03-27 10:02:00.000000000 +00:00
    - value: 2
      ts: 2021-03-27 10:03:00.000000000 +00:00
    - value: 3
      ts: 2021-03-27 10:04:00.000000000 +00:00
    - value: 4
      ts: 2021-03-27 10:05:00.000000000 +00:00
    - value: 0
      ts: 2021-03-27 10:06:00.000000000 +00:00
    - value: 0
      ts: 2021-03-27 10:07:00.000000000 +00:00
  time: 2021-03-27 10:07:00.000000000 +00:00
  function: monoinc
  params: '4m:now-2m,"strict"'
out:
  return: SUCCEED
  value: 1
---
test case: Evaluate strict monoinc() is false, breaking element is NOT ignored by time shift
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_UINT64
    data:
    - value: 1
      ts: 2021-03-27 10:01:00.000000000 +00:00
    - value: 1
      ts: 2021-03-27 10:02:00.000000000 +00:00
    - value: 2
      ts: 2021-03-27 10:03:00.000000000 +00:00
    - value: 3
      ts: 2021-03-27 10:04:00.000000000 +00:00
    - value: 4
      ts: 2021-03-27 10:05:00.000000000 +00:00
    - value: 0
      ts: 2021-03-27 10:06:00.000000000 +00:00
    - value: 0
      ts: 2021-03-27 10:07:00.000000000 +00:00
  time: 2021-03-27 10:07:00.000000000 +00:00
  function: monoinc
  params: '4m:now-1m,"strict"'
out:
  return: SUCCEED
  value: 0
---
test case: Evaluate weak monoinc() is true DOUBLE
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_FLOAT
    data:
    - value: 1.000001
      ts: 2021-03-27 10:01:00.000000000 +00:00
    - value: 1.000002
      ts: 2021-03-27 10:02:00.000000000 +00:00
    - value: 1.000003
      ts: 2021-03-27 10:03:00.000000000 +00:00
  time: 2021-03-27 10:07:00.000000000 +00:00
  function: monoinc
  params: '#3'
out:
  return: SUCCEED
  value: 1
---
test case: Evaluate weak monoinc() is false DOUBLE
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_FLOAT
    data:
    - value: 1.000001
      ts: 2021-03-27 10:01:00.000000000 +00:00
    - value: 1.000002
      ts: 2021-03-27 10:02:00.000000000 +00:00
    - value: 1.000001
      ts: 2021-03-27 10:03:00.000000000 +00:00
  time: 2021-03-27 10:07:00.000000000 +00:00
  function: monoinc
  params: '#3'
out:
  return: SUCCEED
  value: 0
---
test case: Evaluate weak monoinc() is true, due to lack precision DOUBLE
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_FLOAT
    data:
    - value: 1.0000001
      ts: 2021-03-27 10:01:00.000000000 +00:00
    - value: 1.00000099
      ts: 2021-03-27 10:02:00.000000000 +00:00
    - value: 1.0000001
      ts: 2021-03-27 10:03:00.000000000 +00:00
  time: 2021-03-27 10:07:00.000000000 +00:00
  function: monoinc
  params: '#3'
out:
  return: SUCCEED
  value: 1

---
test case: Evaluate strict monoinc() is false DOUBLE
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_FLOAT
    data:
    - value: 1.00001
      ts: 2021-03-27 10:01:00.000000000 +00:00
    - value: 1.00002
      ts: 2021-03-27 10:02:00.000000000 +00:00
    - value: 1.00001
      ts: 2021-03-27 10:03:00.000000000 +00:00
  time: 2021-03-27 10:07:00.000000000 +00:00
  function: monoinc
  params: '#3,"strict"'
out:
  return: SUCCEED
  value: 0
---
test case: Evaluate strict monoinc() is true, precision is enough to pass DOUBLE
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_FLOAT
    data:
    - value: 1.0000001
      ts: 2021-03-27 10:01:00.000000000 +00:00
    - value: 1.0000001
      ts: 2021-03-27 10:02:00.000000000 +00:00
    - value: 1.0000001
      ts: 2021-03-27 10:03:00.000000000 +00:00
  time: 2021-03-27 10:07:00.000000000 +00:00
  function: monoinc
  params: '#3,"strict"'
out:
  return: SUCCEED
  value: 1
---
test case: Evaluate strict monoinc() is true, precision is still enough to pass DOUBLE
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_FLOAT
    data:
    - value: 1.0000001
      ts: 2021-03-27 10:01:00.000000000 +00:00
    - value: 1.0000010
      ts: 2021-03-27 10:02:00.000000000 +00:00
    - value: 1.0000001
      ts: 2021-03-27 10:03:00.000000000 +00:00
  time: 2021-03-27 10:07:00.000000000 +00:00
  function: monoinc
  params: '#3,"strict"'
out:
  return: SUCCEED
  value: 1
---
test case: Evaluate strict monoinc() is false, precision is NOT enough to pass DOUBLE
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_FLOAT
    data:
    - value: 1.0000001
      ts: 2021-03-27 10:01:00.000000000 +00:00
    - value: 1.0000011
      ts: 2021-03-27 10:02:00.000000000 +00:00
    - value: 1.0000001
      ts: 2021-03-27 10:03:00.000000000 +00:00
  time: 2021-03-27 10:07:00.000000000 +00:00
  function: monoinc
  params: '#3,"strict"'
out:
  return: SUCCEED
  value: 0
---
test case: Evaluate default weak, monodec() is false
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_UINT64
    data:
    - value: 1
      ts: 2021-03-27 10:01:00.000000000 +00:00
    - value: 2
      ts: 2021-03-27 10:02:00.000000000 +00:00
    - value: 3
      ts: 2021-03-27 10:03:00.000000000 +00:00
    - value: 4
      ts: 2021-03-27 10:04:00.000000000 +00:00
    - value: 5
      ts: 2021-03-27 10:05:00.000000000 +00:00
    - value: 6
      ts: 2021-03-27 10:06:00.000000000 +00:00
    - value: 7
      ts: 2021-03-27 10:07:00.000000000 +00:00
  time: 2021-03-27 10:07:00.000000000 +00:00
  function: monodec
  params: '#6'
out:
  return: SUCCEED
  value: 0
---
test case: Evaluate default weak monodec() is false
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_UINT64
    data:
    - value: 1
      ts: 2021-03-27 10:01:00.000000000 +00:00
    - value: 26
      ts: 2021-03-27 10:02:00.000000000 +00:00
    - value: 12
      ts: 2021-03-27 10:03:00.000000000 +00:00
    - value: 16
      ts: 2021-03-27 10:04:00.000000000 +00:00
    - value: 56
      ts: 2021-03-27 10:05:00.000000000 +00:00
    - value: 112
      ts: 2021-03-27 10:06:00.000000000 +00:00
    - value: 24
      ts: 2021-03-27 10:07:00.000000000 +00:00
  time: 2021-03-27 10:07:00.000000000 +00:00
  function: monodec
  params: '#6'
out:
  return: SUCCEED
  value: 0
---
test case: Evaluate specific weak monodec() is true
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_UINT64
    data:
    - value: 7
      ts: 2021-03-27 10:01:00.000000000 +00:00
    - value: 6
      ts: 2021-03-27 10:02:00.000000000 +00:00
    - value: 5
      ts: 2021-03-27 10:03:00.000000000 +00:00
    - value: 4
      ts: 2021-03-27 10:04:00.000000000 +00:00
    - value: 3
      ts: 2021-03-27 10:05:00.000000000 +00:00
    - value: 2
      ts: 2021-03-27 10:06:00.000000000 +00:00
    - value: 1
      ts: 2021-03-27 10:07:00.000000000 +00:00
  time: 2021-03-27 10:07:00.000000000 +00:00
  function: monodec
  params: '#6,"weak"'
out:
  return: SUCCEED
  value: 1
---
test case: Evaluate specific weak monodec() is true
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_UINT64
    data:
    - value: 5
      ts: 2021-03-27 10:01:00.000000000 +00:00
    - value: 4
      ts: 2021-03-27 10:02:00.000000000 +00:00
    - value: 4
      ts: 2021-03-27 10:03:00.000000000 +00:00
    - value: 3
      ts: 2021-03-27 10:04:00.000000000 +00:00
    - value: 2
      ts: 2021-03-27 10:05:00.000000000 +00:00
    - value: 2
      ts: 2021-03-27 10:06:00.000000000 +00:00
    - value: 2
      ts: 2021-03-27 10:07:00.000000000 +00:00
  time: 2021-03-27 10:07:00.000000000 +00:00
  function: monodec
  params: '#6,"weak"'
out:
  return: SUCCEED
  value: 1
---
test case: Evaluate strict monodec() is true
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_UINT64
    data:
    - value: 888
      ts: 2021-03-27 10:01:00.000000000 +00:00
    - value: 777
      ts: 2021-03-27 10:02:00.000000000 +00:00
    - value: 666
      ts: 2021-03-27 10:03:00.000000000 +00:00
    - value: 555
      ts: 2021-03-27 10:04:00.000000000 +00:00
    - value: 444
      ts: 2021-03-27 10:05:00.000000000 +00:00
    - value: 333
      ts: 2021-03-27 10:06:00.000000000 +00:00
    - value: 222
      ts: 2021-03-27 10:07:00.000000000 +00:00
  time: 2021-03-27 10:07:00.000000000 +00:00
  function: monodec
  params: '#6,"strict"'
out:
  return: SUCCEED
  value: 1
---
test case: Evaluate strict monodec() is false
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_UINT64
    data:
    - value: 7
      ts: 2021-03-27 10:01:00.000000000 +00:00
    - value: 7
      ts: 2021-03-27 10:02:00.000000000 +00:00
    - value: 6
      ts: 2021-03-27 10:03:00.000000000 +00:00
    - value: 5
      ts: 2021-03-27 10:04:00.000000000 +00:00
    - value: 4
      ts: 2021-03-27 10:05:00.000000000 +00:00
    - value: 3
      ts: 2021-03-27 10:06:00.000000000 +00:00
  time: 2021-03-27 10:07:00.000000000 +00:00
  function: monodec
  params: '#6,"strict"'
out:
  return: SUCCEED
  value: 0
---
test case: Evaluate weak monodec() is true for single element
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_UINT64
    data:
    - value: 0
      ts: 2021-03-27 10:01:00.000000000 +00:00
  time: 2021-03-27 10:07:00.000000000 +00:00
  function: monodec
  params: '#6'
out:
  return: SUCCEED
  value: 1
---
test case: Evaluate strict monodec() is true for single element
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_UINT64
    data:
    - value: 0
      ts: 2021-03-27 10:01:00.000000000 +00:00
  time: 2021-03-27 10:07:00.000000000 +00:00
  function: monodec
  params: '#6,"strict"'
out:
  return: SUCCEED
  value: 1
---
test case: Evaluate strict monodec() is true, breaking element is too old
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_UINT64
    data:
    - value: 6
      ts: 2021-03-27 10:01:00.000000000 +00:00
    - value: 6
      ts: 2021-03-27 10:02:00.000000000 +00:00
    - value: 5
      ts: 2021-03-27 10:03:00.000000000 +00:00
    - value: 4
      ts: 2021-03-27 10:04:00.000000000 +00:00
    - value: 3
      ts: 2021-03-27 10:05:00.000000000 +00:00
    - value: 2
      ts: 2021-03-27 10:06:00.000000000 +00:00
    - value: 1
      ts: 2021-03-27 10:07:00.000000000 +00:00
  time: 2021-03-27 10:07:00.000000000 +00:00
  function: monodec
  params: '#6,"strict"'
out:
  return: SUCCEED
  value: 1
---
test case: Evaluate strict monodec() is true, using time
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_UINT64
    data:
    - value: 1
      ts: 2021-03-27 10:02:00.000000000 +00:00
    - value: 200
      ts: 2021-03-27 10:03:00.000000000 +00:00
    - value: 4
      ts: 2021-03-27 10:04:00.000000000 +00:00
    - value: 3
      ts: 2021-03-27 10:05:00.000000000 +00:00
    - value: 2
      ts: 2021-03-27 10:06:00.000000000 +00:00
    - value: 1
      ts: 2021-03-27 10:07:00.000000000 +00:00
  time: 2021-03-27 10:07:00.000000000 +00:00
  function: monodec
  params: '4m,"strict"'
out:
  return: SUCCEED
  value: 1
---
test case: Evaluate strict monodec() is false, using time
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_UINT64
    data:
    - value: 1
      ts: 2021-03-27 10:02:00.000000000 +00:00
    - value: 1
      ts: 2021-03-27 10:03:00.000000000 +00:00
    - value: 4
      ts: 2021-03-27 10:04:00.000000000 +00:00
    - value: 3
      ts: 2021-03-27 10:05:00.000000000 +00:00
    - value: 2
      ts: 2021-03-27 10:06:00.000000000 +00:00
    - value: 1
      ts: 2021-03-27 10:07:00.000000000 +00:00
  time: 2021-03-27 10:07:00.000000000 +00:00
  function: monodec
  params: '5m,"strict"'
out:
  return: SUCCEED
  value: 0
---
test case: Evaluate strict monodec() is true, breaking element is ignored by time shift
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_UINT64
    data:
    - value: 6
      ts: 2021-03-27 10:01:00.000000000 +00:00
    - value: 6
      ts: 2021-03-27 10:02:00.000000000 +00:00
    - value: 5
      ts: 2021-03-27 10:03:00.000000000 +00:00
    - value: 4
      ts: 2021-03-27 10:04:00.000000000 +00:00
    - value: 3
      ts: 2021-03-27 10:05:00.000000000 +00:00
    - value: 2
      ts: 2021-03-27 10:06:00.000000000 +00:00
    - value: 1
      ts: 2021-03-27 10:07:00.000000000 +00:00
  time: 2021-03-27 10:07:00.000000000 +00:00
  function: monodec
  params: '4m:now-2m,"strict"'
out:
  return: SUCCEED
  value: 1
---
test case: Evaluate strict monodec() is false, breaking element is NOT ignored by time shift
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_UINT64
    data:
    - value: 5
      ts: 2021-03-27 10:01:00.000000000 +00:00
    - value: 4
      ts: 2021-03-27 10:02:00.000000000 +00:00
    - value: 3
      ts: 2021-03-27 10:03:00.000000000 +00:00
    - value: 2
      ts: 2021-03-27 10:04:00.000000000 +00:00
    - value: 1
      ts: 2021-03-27 10:05:00.000000000 +00:00
    - value: 100
      ts: 2021-03-27 10:06:00.000000000 +00:00
    - value: 200
      ts: 2021-03-27 10:07:00.000000000 +00:00
  time: 2021-03-27 10:07:00.000000000 +00:00
  function: monodec
  params: '4m:now-1m,"strict"'
out:
  return: SUCCEED
  value: 0
---
test case: Evaluate weak monodec() is true DOUBLE
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_FLOAT
    data:
    - value: -1.000001
      ts: 2021-03-27 10:01:00.000000000 +00:00
    - value: -1.000002
      ts: 2021-03-27 10:02:00.000000000 +00:00
    - value: -1.000003
      ts: 2021-03-27 10:03:00.000000000 +00:00
  time: 2021-03-27 10:07:00.000000000 +00:00
  function: monodec
  params: '#3'
out:
  return: SUCCEED
  value: 1
---
test case: Evaluate weak monodec() is false DOUBLE
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_FLOAT
    data:
    - value: -1.000001
      ts: 2021-03-27 10:01:00.000000000 +00:00
    - value: -1.000002
      ts: 2021-03-27 10:02:00.000000000 +00:00
    - value: -1.000001
      ts: 2021-03-27 10:03:00.000000000 +00:00
  time: 2021-03-27 10:07:00.000000000 +00:00
  function: monodec
  params: '#3'
out:
  return: SUCCEED
  value: 0
---
test case: Evaluate weak monodec() is true, due to lack precision DOUBLE
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_FLOAT
    data:
    - value: -1.0000001
      ts: 2021-03-27 10:01:00.000000000 +00:00
    - value: -1.00000099
      ts: 2021-03-27 10:02:00.000000000 +00:00
    - value: -1.0000001
      ts: 2021-03-27 10:03:00.000000000 +00:00
  time: 2021-03-27 10:07:00.000000000 +00:00
  function: monodec
  params: '#3'
out:
  return: SUCCEED
  value: 1

---
test case: Evaluate strict monodec() is false DOUBLE
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_FLOAT
    data:
    - value: -1.00001
      ts: 2021-03-27 10:01:00.000000000 +00:00
    - value: -1.00002
      ts: 2021-03-27 10:02:00.000000000 +00:00
    - value: -1.00001
      ts: 2021-03-27 10:03:00.000000000 +00:00
  time: 2021-03-27 10:07:00.000000000 +00:00
  function: monodec
  params: '#3,"strict"'
out:
  return: SUCCEED
  value: 0
---
test case: Evaluate strict monodec() is true, precision is enough to pass DOUBLE
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_FLOAT
    data:
    - value: -1.0000001
      ts: 2021-03-27 10:01:00.000000000 +00:00
    - value: -1.0000001
      ts: 2021-03-27 10:02:00.000000000 +00:00
    - value: -1.0000001
      ts: 2021-03-27 10:03:00.000000000 +00:00
  time: 2021-03-27 10:07:00.000000000 +00:00
  function: monodec
  params: '#3,"strict"'
out:
  return: SUCCEED
  value: 1
---
test case: Evaluate strict monodec() is true, precision is still enough to pass DOUBLE
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_FLOAT
    data:
    - value: -1.0000001
      ts: 2021-03-27 10:01:00.000000000 +00:00
    - value: -1.0000010
      ts: 2021-03-27 10:02:00.000000000 +00:00
    - value: -1.0000001
      ts: 2021-03-27 10:03:00.000000000 +00:00
  time: 2021-03-27 10:07:00.000000000 +00:00
  function: monodec
  params: '#3,"strict"'
out:
  return: SUCCEED
  value: 1
---
test case: Evaluate strict monodec() is false, precision is NOT enough to pass DOUBLE
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_FLOAT
    data:
    - value: -1.0000001
      ts: 2021-03-27 10:01:00.000000000 +00:00
    - value: -1.0000011
      ts: 2021-03-27 10:02:00.000000000 +00:00
    - value: -1.0000001
      ts: 2021-03-27 10:03:00.000000000 +00:00
  time: 2021-03-27 10:07:00.000000000 +00:00
  function: monodec
  params: '#3,"strict"'
out:
  return: SUCCEED
  value: 0
---
test case: Evaluate default weak, monoinc(), not enough data, but there is some data
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_UINT64
    data:
    - value: 1
      ts: 2021-03-27 10:01:00.000000000 +00:00
  time: 2021-03-27 10:07:00.000000000 +00:00
  function: monoinc
  params: '#6'
out:
  return: SUCCEED
  value: 1
---
test case: Evaluate default weak, monodec(), not enough data
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_UINT64
    data:
    - value: 1
      ts: 2021-03-27 10:01:00.000000000 +00:00
  time: 2021-03-27 10:07:00.000000000 +00:00
  function: monoinc
  params: '10s'
out:
  return: FAIL
  value:
---
test case: Evaluate rate(), with DOUBLE data
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_FLOAT
    data:
    - value: 1
      ts: 2021-03-27 10:01:00.000000001 +00:00
    - value: 2
      ts: 2021-03-27 10:01:01.000000000 +00:00
    - value: 3
      ts: 2021-03-27 10:01:02.000000000 +00:00
  time: 2021-03-27 10:01:02.000000000 +00:00
  function: rate
  params: '2'
out:
  return: SUCCEED
  value: 1
---
test case: Evaluate rate(), with UINT64 data
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_UINT64
    data:
    - value: 1
      ts: 2021-03-27 10:01:00.000000001 +00:00
    - value: 2
      ts: 2021-03-27 10:01:01.000000000 +00:00
    - value: 3
      ts: 2021-03-27 10:01:02.000000000 +00:00
  time: 2021-03-27 10:01:02.000000000 +00:00
  function: rate
  params: '2'
out:
  return: SUCCEED
  value: 1
---
test case: Evaluate rate() extrapolation, with DOUBLE data
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_FLOAT
    data:
    - value: 1
      ts: 2021-03-27 10:01:00.000000001 +00:00
    - value: 2
      ts: 2021-03-27 10:01:01.000000000 +00:00
    - value: 3
      ts: 2021-03-27 10:01:02.000000000 +00:00
  time: 2021-03-27 10:01:02.500000000 +00:00
  function: rate
  params: '3'
out:
  return: SUCCEED
  value: 1
---
test case: Evaluate rate() extrapolation, with UINT64 data
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_UINT64
    data:
    - value: 1
      ts: 2021-03-27 10:01:00.000000001 +00:00
    - value: 2
      ts: 2021-03-27 10:01:01.000000000 +00:00
    - value: 3
      ts: 2021-03-27 10:01:02.000000000 +00:00
  time: 2021-03-27 10:01:02.500000000 +00:00
  function: rate
  params: '3'
out:
  return: SUCCEED
  value: 1
---
test case: Evaluate rate() with reset and DOUBLE data
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_FLOAT
    data:
    - value: 1
      ts: 2021-03-27 10:01:00.000000001 +00:00
    - value: 2
      ts: 2021-03-27 10:01:01.000000000 +00:00
    - value: 1
      ts: 2021-03-27 10:01:02.000000000 +00:00
    - value: 2
      ts: 2021-03-27 10:01:03.000000000 +00:00
    - value: 3
      ts: 2021-03-27 10:01:04.000000000 +00:00
  time: 2021-03-27 10:01:04.000000000 +00:00
  function: rate
  params: '4'
out:
  return: SUCCEED
  value: 1

---
test case: Evaluate rate() with reset and UINT64 data
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_UINT64
    data:
    - value: 1
      ts: 2021-03-27 10:01:00.000000001 +00:00
    - value: 2
      ts: 2021-03-27 10:01:01.000000000 +00:00
    - value: 1
      ts: 2021-03-27 10:01:02.000000000 +00:00
    - value: 2
      ts: 2021-03-27 10:01:03.000000000 +00:00
    - value: 3
      ts: 2021-03-27 10:01:04.000000000 +00:00
  time: 2021-03-27 10:01:04.000000000 +00:00
  function: rate
  params: '4'
out:
  return: SUCCEED
  value: 1
---
test case: Evaluate rate() extrapolation without change UINT64 data
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_UINT64
    data:
    - value: 1
      ts: 2021-03-27 10:01:00.000000001 +00:00
    - value: 1
      ts: 2021-03-27 10:01:01.000000000 +00:00
    - value: 1
      ts: 2021-03-27 10:01:02.000000000 +00:00
  time: 2021-03-27 10:01:02.500000000 +00:00
  function: rate
  params: '3'
out:
  return: SUCCEED
  value: 0
---
test case: Evaluate rate() extrapolation without change DOUBLE data
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_FLOAT
    data:
    - value: 1
      ts: 2021-03-27 10:01:00.000000001 +00:00
    - value: 1
      ts: 2021-03-27 10:01:01.000000000 +00:00
    - value: 1
      ts: 2021-03-27 10:01:02.000000000 +00:00
  time: 2021-03-27 10:01:02.500000000 +00:00
  function: rate
  params: '3'
out:
  return: SUCCEED
  value: 0
---
test case: Evaluate rate() without DOUBLE data
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_FLOAT
    data:
    - value: 1
      ts: 2021-03-27 10:01:00.000000001 +00:00
    - value: 2
      ts: 2021-03-27 10:01:01.000000000 +00:00
  time: 2021-03-27 10:01:04.500000000 +00:00
  function: rate
  params: '1'
out:
  return: FAIL
  value: 0
---
test case: Evaluate rate() without 2 DOUBLE bucket
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_FLOAT
    data:
    - value: 1
      ts: 2021-03-27 10:01:00.000000001 +00:00
    - value: 2
      ts: 2021-03-27 10:01:02.000000000 +00:00
  time: 2021-03-27 10:01:02.500000000 +00:00
  function: rate
  params: '1'
out:
  return: FAIL
  value: 0
---
test case: Evaluate rate() with STR data
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_STR
    data:
    - value: 1
      ts: 2021-03-27 10:01:00.000000001 +00:00
    - value: 2
      ts: 2021-03-27 10:01:02.000000000 +00:00
  time: 2021-03-27 10:01:02.000000000 +00:00
  function: rate
  params: '2'
out:
  return: FAIL
  value: 0
---
test case: Evaluate rate() with negative reset
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_FLOAT
    data:
    - value: 11
      ts: 2021-03-27 10:01:00.000000001 +00:00
    - value: 1
      ts: 2021-03-27 10:01:01.000000000 +00:00
  time: 2021-03-27 10:01:01.000000000 +00:00
  function: rate
  params: '1'
out:
  return: SUCCEED
  value: 1
---
test case: Evaluate default all changecount() with UINT64 data (all values different)
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_UINT64
    data:
    - value: 64
      ts: 2021-03-27 10:01:00.000000001 +00:00
    - value: 24
      ts: 2021-03-27 10:01:02.000000000 +00:00
    - value: 69
      ts: 2021-03-27 10:01:03.000000000 +00:00
    - value: 32
      ts: 2021-03-27 10:01:04.000000000 +00:00
    - value: 96
      ts: 2021-03-27 10:01:05.000000000 +00:00
  time: 2021-03-27 10:01:05.000000000 +00:00
  function: changecount
  params: '#5'
out:
  return: SUCCEED
  value: 4
---
test case: Evaluate default all changecount() with UINT64 data (some adjacent values are equal)
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_UINT64
    data:
    - value: 97
      ts: 2021-03-27 10:01:00.000000001 +00:00
    - value: 35
      ts: 2021-03-27 10:01:02.000000000 +00:00
    - value: 35
      ts: 2021-03-27 10:01:03.000000000 +00:00
    - value: 29
      ts: 2021-03-27 10:01:04.000000000 +00:00
    - value: 29
      ts: 2021-03-27 10:01:05.000000000 +00:00
  time: 2021-03-27 10:01:05.000000000 +00:00
  function: changecount
  params: '#5'
out:
  return: SUCCEED
  value: 2
---
test case: Evaluate inc changecount() with UINT64 data
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_UINT64
    data:
    - value: 21
      ts: 2021-03-27 10:01:00.000000001 +00:00
    - value: 34
      ts: 2021-03-27 10:01:02.000000000 +00:00
    - value: 73
      ts: 2021-03-27 10:01:03.000000000 +00:00
    - value: 55
      ts: 2021-03-27 10:01:04.000000000 +00:00
    - value: 46
      ts: 2021-03-27 10:01:05.000000000 +00:00
  time: 2021-03-27 10:01:05.000000000 +00:00
  function: changecount
  params: '#5,"inc"'
out:
  return: SUCCEED
  value: 2
---
test case: Evaluate dec changecount() with UINT64 data
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_UINT64
    data:
    - value: 7
      ts: 2021-03-27 10:01:00.000000001 +00:00
    - value: 92
      ts: 2021-03-27 10:01:02.000000000 +00:00
    - value: 67
      ts: 2021-03-27 10:01:03.000000000 +00:00
    - value: 96
      ts: 2021-03-27 10:01:04.000000000 +00:00
    - value: 44
      ts: 2021-03-27 10:01:05.000000000 +00:00
  time: 2021-03-27 10:01:05.000000000 +00:00
  function: changecount
  params: '#5,"dec"'
out:
  return: SUCCEED
  value: 2
---
test case: Evaluate explicit all changecount() with UINT64 data
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_UINT64
    data:
    - value: 55
      ts: 2021-03-27 10:01:00.000000001 +00:00
    - value: 93
      ts: 2021-03-27 10:01:02.000000000 +00:00
    - value: 76
      ts: 2021-03-27 10:01:03.000000000 +00:00
    - value: 76
      ts: 2021-03-27 10:01:04.000000000 +00:00
    - value: 33
      ts: 2021-03-27 10:01:05.000000000 +00:00
  time: 2021-03-27 10:01:05.000000000 +00:00
  function: changecount
  params: '#5,"all"'
out:
  return: SUCCEED
  value: 3
---
test case: Evaluate default all changecount() with DOUBLE data and time period
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_FLOAT
    data:
    - value: 0.000005
      ts: 2021-03-27 10:01:00.000000001 +00:00
    - value: 0.000001
      ts: 2021-03-27 10:01:02.000000000 +00:00
    - value: 0.000007
      ts: 2021-03-27 10:08:03.000000000 +00:00
    - value: 0.000004
      ts: 2021-03-27 10:09:04.000000000 +00:00
    - value: 0.000002
      ts: 2021-03-27 10:10:05.000000000 +00:00
  time: 2021-03-27 10:10:05.000000000 +00:00
  function: changecount
  params: '5m'
out:
  return: SUCCEED
  value: 2
---
test case: Evaluate explicit all changecount() with DOUBLE data
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_FLOAT
    data:
    - value: 0.0001
      ts: 2021-03-27 10:01:00.000000001 +00:00
    - value: 0.0011
      ts: 2021-03-27 10:01:02.000000000 +00:00
    - value: 0.0011
      ts: 2021-03-27 10:01:03.000000000 +00:00
    - value: 0.0002
      ts: 2021-03-27 10:01:04.000000000 +00:00
    - value: 0.0005
      ts: 2021-03-27 10:01:05.000000000 +00:00
  time: 2021-03-27 10:01:05.000000000 +00:00
  function: changecount
  params: '#5,"all"'
out:
  return: SUCCEED
  value: 3
---
test case: Evaluate inc changecount() with DOUBLE data
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_FLOAT
    data:
    - value: 0.0001
      ts: 2021-03-27 10:01:00.000000001 +00:00
    - value: 0.0002
      ts: 2021-03-27 10:01:02.000000000 +00:00
    - value: 0.0003
      ts: 2021-03-27 10:01:03.000000000 +00:00
    - value: 0.0004
      ts: 2021-03-27 10:01:04.000000000 +00:00
    - value: 0.0004
      ts: 2021-03-27 10:01:05.000000000 +00:00
  time: 2021-03-27 10:01:05.000000000 +00:00
  function: changecount
  params: '#5,"inc"'
out:
  return: SUCCEED
  value: 3
---
test case: Evaluate dec changecount() with DOUBLE data
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_FLOAT
    data:
    - value: 0.00001
      ts: 2021-03-27 10:01:00.000000001 +00:00
    - value: 0.00002
      ts: 2021-03-27 10:01:02.000000000 +00:00
    - value: 0.00003
      ts: 2021-03-27 10:01:03.000000000 +00:00
    - value: 0.00004
      ts: 2021-03-27 10:01:04.000000000 +00:00
    - value: 0.00003
      ts: 2021-03-27 10:01:05.000000000 +00:00
  time: 2021-03-27 10:01:05.000000000 +00:00
  function: changecount
  params: '#5,"dec"'
out:
  return: SUCCEED
  value: 1
---
test case: Evaluate changecount() with STR data (all values are different)
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_STR
    data:
    - value: abc
      ts: 2021-03-27 10:01:00.000000001 +00:00
    - value: def
      ts: 2021-03-27 10:01:02.000000000 +00:00
    - value: ghi
      ts: 2021-03-27 10:01:03.000000000 +00:00
    - value: jkl
      ts: 2021-03-27 10:01:04.000000000 +00:00
    - value: mno
      ts: 2021-03-27 10:01:05.000000000 +00:00
  time: 2021-03-27 10:01:05.000000000 +00:00
  function: changecount
  params: '#5'
out:
  return: SUCCEED
  value: 4
---
test case: Evaluate changecount() with STR data (some adjacent values are same)
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_STR
    data:
    - value: abc
      ts: 2021-03-27 10:01:00.000000001 +00:00
    - value: abc
      ts: 2021-03-27 10:01:02.000000000 +00:00
    - value: ghi
      ts: 2021-03-27 10:01:03.000000000 +00:00
    - value: ghi
      ts: 2021-03-27 10:01:04.000000000 +00:00
    - value: mno
      ts: 2021-03-27 10:01:05.000000000 +00:00
  time: 2021-03-27 10:01:05.000000000 +00:00
  function: changecount
  params: '#5'
out:
  return: SUCCEED
  value: 2
---
test case: Evaluate changecount() with TEXT data (some adjacent values are same)
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_TEXT
    data:
    - value: llgucwmznmykyfvfdtoexhqedpdjnlmentkjbmkkxtlkqvxfirozlohrtagakrmtiosiaftyqvksmeaacpgsthqvprtxgkazkpueusrldcnidlguhlwynedvlokmhgowfhgvffgoklbunjfgakrnmpejixhbmwfsornmunqyvmlaabhiaiqgtureptxqhhmcbhgphvnqzrsdkujodhmoprswdiofuyqzzagopedlgxuuysucqmzqvctaolygqtxgemol
      ts: 2021-03-27 10:01:00.000000001 +00:00
    - value: llgucwmznmykyfvfdtoexhqedpdjnlmentkjbmkkxtlkqvxfirozlohrtagakrmtiosiaftyqvksmeaacpgsthqvprtxgkazkpueusrldcnidlguhlwynedvlokmhgowfhgvffgoklbunjfgakrnmpejixhbmwfsornmunqyvmlaabhiaiqgtureptxqhhmcbhgphvnqzrsdkujodhmoprswdiofuyqzzagopedlgxuuysucqmzqvctaolygqtxgemol
      ts: 2021-03-27 10:01:02.000000000 +00:00
    - value: llgucwmznmykyfvfdtoexhqedpdjnlmentkjbmkkxtlkqvxfirozlohrtagakrmtiosiaftyqvksmeaacpgsthqvprtxgkazkpueusrldcnidlguhlwynedvlokmhgowfhgvffgoklbunjfgakrnmpejixhbmwfsornmunqyvmlaabhiaiqgtureptxqhhmcbhgphvnqzrsdkujodhmoprswdiofuyqzzagopedlgxuuysucqmzqvctaolygqtxgemol
      ts: 2021-03-27 10:01:03.000000000 +00:00
    - value: enomgtjipnfhdrypmeegwyswqyfkbdrecxmcwzyellribxnciorcjpdhdmjnbohvgyccasnvmdboomrlliwepwpnugobqhlfsplwcnckhrhkasgncitekpubaiirzifwxsbmipsfjxiewahmjshwvcpbyxxzsgkbiyjefpwordfjmybcaktybbnaeumkbbvbklecxccbrhflprnfyrmacoaweeviljgcaxqajqgdsluokbwgyqktrduxatuotajofmuh
      ts: 2021-03-27 10:01:04.000000000 +00:00
    - value: llgucwmznmykyfvfdtoexhqedpdjnlmentkjbmkkxtlkqvxfirozlohrtagakrmtiosiaftyqvksmeaacpgsthqvprtxgkazkpueusrldcnidlguhlwynedvlokmhgowfhgvffgoklbunjfgakrnmpejixhbmwfsornmunqyvmlaabhiaiqgtureptxqhhmcbhgphvnqzrsdkujodhmoprswdiofuyqzzagopedlgxuuysucqmzqvctaolygqtxgemol
      ts: 2021-03-27 10:01:05.000000000 +00:00
  time: 2021-03-27 10:01:05.000000000 +00:00
  function: changecount
  params: '#5'
out:
  return: SUCCEED
  value: 2
---
test case: Evaluate changecount() with LOG data
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_LOG
    data:
    - value: abc
      source:
      logeventid: 1
      severity: 1
      timestamp: 2
      ts: 2017-01-10 10:00:00.000000000 +00:00
    - value: abc
      source:
      logeventid: 2
      severity: 1
      timestamp: 2
      ts: 2017-01-10 10:00:30.000000000 +00:00
  time: 2017-01-10 10:10:00.000000000 +00:00
  function: changecount
  params: '11m'
out:
  return: SUCCEED
  value: 0
---
test case: Evaluate changecount() with not enough data
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_LOG
    data:
    - value: abc
      source:
      logeventid: 1
      severity: 1
      timestamp: 2
      ts: 2017-01-10 10:00:00.000000000 +00:00
  time: 2017-01-10 10:10:00.000000000 +00:00
  function: changecount
  params: '11m'
out:
  return: FAIL
  value: 0
---
test case: Evaluate changecount() with wrong count of arguments
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_FLOAT
    data:
    - value: 0.00001
      ts: 2021-03-27 10:01:00.000000001 +00:00
    - value: 0.00002
      ts: 2021-03-27 10:01:02.000000000 +00:00
    - value: 0.00003
      ts: 2021-03-27 10:01:03.000000000 +00:00
    - value: 0.00004
      ts: 2021-03-27 10:01:04.000000000 +00:00
    - value: 0.00003
      ts: 2017-01-10 10:01:05.000000000 +00:00
  time: 2017-01-10 10:01:05.000000000 +00:00
  function: changecount
  params: '#5,"inc","strict"'
out:
  return: FAIL
  value: 0
---
test case: Evaluate changecount() without arguments
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_FLOAT
    data:
    - value: 0.00001
      ts: 2021-03-27 10:01:00.000000001 +00:00
    - value: 0.00002
      ts: 2021-03-27 10:01:02.000000000 +00:00
    - value: 0.00003
      ts: 2021-03-27 10:01:03.000000000 +00:00
    - value: 0.00004
      ts: 2021-03-27 10:01:04.000000000 +00:00
    - value: 0.00003
      ts: 2017-01-10 10:01:05.000000000 +00:00
  time: 2017-01-10 10:01:05.000000000 +00:00
  function: changecount
  params: ''
out:
  return: FAIL
  value: 0
---
test case: Evaluate changecount() with wrong first argument
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_FLOAT
    data:
    - value: 0.00001
      ts: 2021-03-27 10:01:00.000000001 +00:00
    - value: 0.00002
      ts: 2021-03-27 10:01:02.000000000 +00:00
    - value: 0.00003
      ts: 2021-03-27 10:01:03.000000000 +00:00
    - value: 0.00004
      ts: 2021-03-27 10:01:04.000000000 +00:00
    - value: 0.00003
      ts: 2017-01-10 10:01:05.000000000 +00:00
  time: 2017-01-10 10:01:05.000000000 +00:00
  function: changecount
  params: '"inc"'
out:
  return: FAIL
---
test case: Evaluate changecount() with wrong second argument
in:
  history:
  - itemid: 1
    value type: ITEM_VALUE_TYPE_FLOAT
    data:
    - value: 0.00001
      ts: 2021-03-27 10:01:00.000000001 +00:00
    - value: 0.00002
      ts: 2021-03-27 10:01:02.000000000 +00:00
    - value: 0.00003
      ts: 2021-03-27 10:01:03.000000000 +00:00
    - value: 0.00004
      ts: 2021-03-27 10:01:04.000000000 +00:00
    - value: 0.00003
      ts: 2017-01-10 10:01:05.000000000 +00:00
  time: 2017-01-10 10:01:05.000000000 +00:00
  function: changecount
  params: '#20,"strict"'
out:
  return: FAIL
  value: 0
...