Merge branch 'develop' into feature/TD-1413
This commit is contained in:
commit
dfebc184ab
|
@ -61,7 +61,7 @@ The use of each configuration item is:
|
||||||
|
|
||||||
* **port**: This is the `http` service port which enables other application to manage rules by `restful API`.
|
* **port**: This is the `http` service port which enables other application to manage rules by `restful API`.
|
||||||
* **database**: rules are stored in a `sqlite` database, this is the path of the database file (if the file does not exist, the alert application creates it automatically).
|
* **database**: rules are stored in a `sqlite` database, this is the path of the database file (if the file does not exist, the alert application creates it automatically).
|
||||||
* **tdengine**: connection string of `TDEngine` server, note the database name should be put in the `sql` field of a rule in most cases, thus it should NOT be included in the string.
|
* **tdengine**: connection string of `TDEngine` server (please refer the documentation of GO connector for the detailed format of this string), note the database name should be put in the `sql` field of a rule in most cases, thus it should NOT be included in the string.
|
||||||
* **log > level**: log level, could be `production` or `debug`.
|
* **log > level**: log level, could be `production` or `debug`.
|
||||||
* **log > path**: log output file path.
|
* **log > path**: log output file path.
|
||||||
* **receivers > alertManager**: the alert application pushes alerts to `AlertManager` at this URL.
|
* **receivers > alertManager**: the alert application pushes alerts to `AlertManager` at this URL.
|
||||||
|
|
|
@ -58,7 +58,7 @@ $ go build
|
||||||
|
|
||||||
* **port**:报警监测程序支持使用 `restful API` 对规则进行管理,这个参数用于配置 `http` 服务的侦听端口。
|
* **port**:报警监测程序支持使用 `restful API` 对规则进行管理,这个参数用于配置 `http` 服务的侦听端口。
|
||||||
* **database**:报警监测程序将规则保存到了一个 `sqlite` 数据库中,这个参数用于指定数据库文件的路径(不需要提前创建这个文件,如果它不存在,程序会自动创建它)。
|
* **database**:报警监测程序将规则保存到了一个 `sqlite` 数据库中,这个参数用于指定数据库文件的路径(不需要提前创建这个文件,如果它不存在,程序会自动创建它)。
|
||||||
* **tdengine**:`TDEngine` 的连接字符串,一般来说,数据库名应该在报警规则的 `sql` 语句中指定,所以这个字符串中 **不** 应包含数据库名。
|
* **tdengine**:`TDEngine` 的连接字符串(这个字符串的详细格式说明请见 GO 连接器的文档),一般来说,数据库名应该在报警规则的 `sql` 语句中指定,所以这个字符串中 **不** 应包含数据库名。
|
||||||
* **log > level**:日志的记录级别,可选 `production` 或 `debug`。
|
* **log > level**:日志的记录级别,可选 `production` 或 `debug`。
|
||||||
* **log > path**:日志文件的路径。
|
* **log > path**:日志文件的路径。
|
||||||
* **receivers > alertManager**:报警监测程序会将报警推送到 `AlertManager`,在这里指定 `AlertManager` 的接收地址。
|
* **receivers > alertManager**:报警监测程序会将报警推送到 `AlertManager`,在这里指定 `AlertManager` 的接收地址。
|
||||||
|
|
|
@ -84,6 +84,7 @@ func (alert *Alert) doRefresh(firing bool, rule *Rule) bool {
|
||||||
|
|
||||||
case firing && (alert.State == AlertStateWaiting):
|
case firing && (alert.State == AlertStateWaiting):
|
||||||
alert.StartsAt = time.Now()
|
alert.StartsAt = time.Now()
|
||||||
|
alert.EndsAt = time.Time{}
|
||||||
if rule.For.Nanoseconds() > 0 {
|
if rule.For.Nanoseconds() > 0 {
|
||||||
alert.State = AlertStatePending
|
alert.State = AlertStatePending
|
||||||
return false
|
return false
|
||||||
|
@ -95,6 +96,7 @@ func (alert *Alert) doRefresh(firing bool, rule *Rule) bool {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
alert.StartsAt = alert.StartsAt.Add(rule.For.Duration)
|
alert.StartsAt = alert.StartsAt.Add(rule.For.Duration)
|
||||||
|
alert.EndsAt = time.Time{}
|
||||||
alert.State = AlertStateFiring
|
alert.State = AlertStateFiring
|
||||||
|
|
||||||
case firing && (alert.State == AlertStateFiring):
|
case firing && (alert.State == AlertStateFiring):
|
||||||
|
|
|
@ -6412,7 +6412,7 @@ int32_t doCheckForQuery(SSqlObj* pSql, SQuerySQL* pQuerySql, int32_t index) {
|
||||||
return code;
|
return code;
|
||||||
}
|
}
|
||||||
|
|
||||||
tVariantListItem* p1 = taosArrayGet(pQuerySql->from, i);
|
tVariantListItem* p1 = taosArrayGet(pQuerySql->from, i + 1);
|
||||||
if (p1->pVar.nType != TSDB_DATA_TYPE_BINARY) {
|
if (p1->pVar.nType != TSDB_DATA_TYPE_BINARY) {
|
||||||
return invalidSqlErrMsg(tscGetErrorMsgPayload(pCmd), msg11);
|
return invalidSqlErrMsg(tscGetErrorMsgPayload(pCmd), msg11);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
today=`date +"%Y%m%d"`
|
today=`date +"%Y%m%d"`
|
||||||
WORK_DIR=/home/ubuntu/pxiao/
|
WORK_DIR=/home/ubuntu/pxiao
|
||||||
PERFORMANCE_TEST_REPORT=$TDENGINE_DIR/tests/performance-test-report-$today.log
|
PERFORMANCE_TEST_REPORT=$WORK_DIR/TDengine/tests/performance-test-report-$today.log
|
||||||
|
|
||||||
# Coloured Echoes #
|
# Coloured Echoes #
|
||||||
function red_echo { echo -e "\033[31m$@\033[0m"; } #
|
function red_echo { echo -e "\033[31m$@\033[0m"; } #
|
||||||
|
@ -60,11 +60,12 @@ function buildTDengine {
|
||||||
}
|
}
|
||||||
|
|
||||||
function runQueryPerfTest {
|
function runQueryPerfTest {
|
||||||
nohup $WORK_DIR/TDengine/debug/build/bin/taosd -c /etc/taodperf/ > /dev/null 2>&1 &
|
[ -f $PERFORMANCE_TEST_REPORT ] && rm $PERFORMANCE_TEST_REPORT
|
||||||
|
nohup $WORK_DIR/TDengine/debug/build/bin/taosd -c /etc/taosperf/ > /dev/null 2>&1 &
|
||||||
echoInfo "Run Performance Test"
|
echoInfo "Run Performance Test"
|
||||||
cd $WORK_DIR/TDengine/tests/pytest
|
cd $WORK_DIR/TDengine/tests/pytest
|
||||||
|
|
||||||
python3 query/queryPerformance.py | tee -a $PERFORMANCE_TEST_REPORT
|
python3 query/queryPerformance.py 0 | tee -a $PERFORMANCE_TEST_REPORT
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -77,9 +78,9 @@ function sendReport {
|
||||||
|
|
||||||
sed -i 's/\x1b\[[0-9;]*m//g' $PERFORMANCE_TEST_REPORT
|
sed -i 's/\x1b\[[0-9;]*m//g' $PERFORMANCE_TEST_REPORT
|
||||||
BODY_CONTENT=`cat $PERFORMANCE_TEST_REPORT`
|
BODY_CONTENT=`cat $PERFORMANCE_TEST_REPORT`
|
||||||
echo -e "to: ${receiver}\nsubject: Query Performace Report ${today}, commit ID: ${LOCAL_COMMIT}\n\n${today}:\n${BODY_CONTENT}" | \
|
echo -e "From: <support@taosdata.com>\nto: ${receiver}\nsubject: Query Performace Report ${today}, commit ID: ${LOCAL_COMMIT}\n\n${today}:\n${BODY_CONTENT}" | \
|
||||||
(cat - && uuencode $PERFORMANCE_TEST_REPORT performance-test-report-$today.log) | \
|
(cat - && uuencode $PERFORMANCE_TEST_REPORT performance-test-report-$today.log) | \
|
||||||
ssmtp "${receiver}" && echo "Report Sent!"
|
/usr/sbin/ssmtp "${receiver}" && echo "Report Sent!"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -202,6 +202,7 @@ python3 queryCount.py
|
||||||
python3 ./test.py -f query/queryGroupbyWithInterval.py
|
python3 ./test.py -f query/queryGroupbyWithInterval.py
|
||||||
python3 client/twoClients.py
|
python3 client/twoClients.py
|
||||||
python3 test.py -f query/queryInterval.py
|
python3 test.py -f query/queryInterval.py
|
||||||
|
python3 test.py -f query/queryFillTest.py
|
||||||
|
|
||||||
# tools
|
# tools
|
||||||
python3 test.py -f tools/taosdemo.py
|
python3 test.py -f tools/taosdemo.py
|
||||||
|
|
|
@ -0,0 +1,70 @@
|
||||||
|
###################################################################
|
||||||
|
# Copyright (c) 2016 by TAOS Technologies, Inc.
|
||||||
|
# All rights reserved.
|
||||||
|
#
|
||||||
|
# This file is proprietary and confidential to TAOS Technologies.
|
||||||
|
# No part of this file may be reproduced, stored, transmitted,
|
||||||
|
# disclosed or used in any form or by any means other than as
|
||||||
|
# expressly provided by the written permission from Jianhui Tao
|
||||||
|
#
|
||||||
|
###################################################################
|
||||||
|
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
import sys
|
||||||
|
import taos
|
||||||
|
from util.log import tdLog
|
||||||
|
from util.cases import tdCases
|
||||||
|
from util.sql import tdSql
|
||||||
|
|
||||||
|
|
||||||
|
class TDTestCase:
|
||||||
|
def init(self, conn, logSql):
|
||||||
|
tdLog.debug("start to execute %s" % __file__)
|
||||||
|
tdSql.init(conn.cursor(), logSql)
|
||||||
|
|
||||||
|
self.ts = 1537146000000
|
||||||
|
|
||||||
|
def run(self):
|
||||||
|
tdSql.prepare()
|
||||||
|
|
||||||
|
print("==============step1")
|
||||||
|
tdSql.execute(
|
||||||
|
"create table if not exists stb (ts timestamp, col1 int, col2 int, col3 int) tags(loc nchar(20), id int)")
|
||||||
|
tdSql.execute(
|
||||||
|
"insert into tb0 using stb tags('beijing', 1) values(%s, 1, 1, 1)(%s, 2, 2, 2)(%s, 3, 3, 3)(%s, 4, 4, 4)" % (self.ts, self.ts + 1000000, self.ts + 2000000, self.ts + 3000000))
|
||||||
|
tdSql.execute(
|
||||||
|
"insert into tb1 using stb tags('beijing', 2) values(%s, 1, 1, 1)(%s, 2, 2, 2)(%s, 3, 3, 3)(%s, 4, 4, 4)" % (self.ts + 4000000, self.ts + 5000000, self.ts + 6000000, self.ts + 7000000))
|
||||||
|
tdSql.execute(
|
||||||
|
"insert into tb2 using stb tags('shanghai', 1) values(%s, 1, 1, 1)(%s, 2, 2, 2)(%s, 3, 3, 3)(%s, 4, 4, 4)" % (self.ts + 8000000, self.ts + 9000000, self.ts + 10000000, self.ts + 11000000))
|
||||||
|
tdSql.execute(
|
||||||
|
"insert into tb3 using stb tags('shanghai', 2) values(%s, 1, 1, 1)(%s, 2, 2, 2)(%s, 3, 3, 3)(%s, 4, 4, 4)" % (self.ts + 12000000, self.ts + 13000000, self.ts + 14000000, self.ts + 15000000))
|
||||||
|
tdSql.execute(
|
||||||
|
"insert into tb4 using stb tags('shanghai', 3) values(%s, null, null, null)(%s, null, null, null)(%s, null, null, null)(%s, null, null, null)" % (self.ts + 16000000, self.ts + 17000000, self.ts + 18000000, self.ts + 19000000))
|
||||||
|
|
||||||
|
tdSql.query("select first(col1) - avg(col1) from stb where ts > '2018-09-17 08:00:00.000' and ts < '2018-09-17 14:16:41.000' interval(1h)")
|
||||||
|
tdSql.checkRows(5)
|
||||||
|
tdSql.checkData(0, 1, -1.5)
|
||||||
|
tdSql.checkData(1, 1, -1.5)
|
||||||
|
tdSql.checkData(2, 1, -1.0)
|
||||||
|
tdSql.checkData(3, 1, 1.5)
|
||||||
|
tdSql.checkData(4, 1, 0)
|
||||||
|
|
||||||
|
tdSql.query("select first(col1) - avg(col1) from stb where ts > '2018-09-17 08:00:00.000' and ts < '2018-09-17 14:16:41.000' interval(1h) fill(null)")
|
||||||
|
tdSql.checkRows(7)
|
||||||
|
tdSql.checkData(0, 1, None)
|
||||||
|
tdSql.checkData(6, 1, None)
|
||||||
|
|
||||||
|
tdSql.query("select max(col1) - min(col1) from stb where ts > '2018-09-17 08:00:00.000' and ts < '2018-09-17 14:16:41.000' and id = 1 group by loc, id")
|
||||||
|
tdSql.checkRows(2)
|
||||||
|
|
||||||
|
tdSql.query("select spread(col1) from stb where ts > '2018-09-17 08:00:00.000' and ts < '2018-09-17 14:16:41.000' and id = 1 group by loc, id")
|
||||||
|
tdSql.checkRows(2)
|
||||||
|
|
||||||
|
def stop(self):
|
||||||
|
tdSql.close()
|
||||||
|
tdLog.success("%s successfully executed" % __file__)
|
||||||
|
|
||||||
|
|
||||||
|
tdCases.addWindows(__file__, TDTestCase())
|
||||||
|
tdCases.addLinux(__file__, TDTestCase())
|
|
@ -23,7 +23,7 @@ class taosdemoQueryPerformace:
|
||||||
self.host = "127.0.0.1"
|
self.host = "127.0.0.1"
|
||||||
self.user = "root"
|
self.user = "root"
|
||||||
self.password = "taosdata"
|
self.password = "taosdata"
|
||||||
self.config = "/etc/taos"
|
self.config = "/etc/taosperf"
|
||||||
self.conn = taos.connect(
|
self.conn = taos.connect(
|
||||||
self.host,
|
self.host,
|
||||||
self.user,
|
self.user,
|
||||||
|
|
Loading…
Reference in New Issue