wecisecode hai 1 semana
pai
achega
1bbbdd3d64
Modificáronse 3 ficheiros con 41 adicións e 13 borrados
  1. 0 11
      odbctest/mql/0/0.mql
  2. 33 0
      odbctest/mql/0/1mqltestfunc.mql
  3. 8 2
      odbctest/odbcmql/mql_run.go

+ 0 - 11
odbctest/mql/0/0.mql

@@ -1,11 +0,0 @@
-
-
-
-SELECT id, prom.date('2024-11-28').avg().sigma() FROM  /test/bucketpromdb
-/**
-output()
-match(id, "bucketpromdb:wecise11", "prom.0.2", 2.661111111111112, "prom.0.5", 0.16034299655179796)
-match(id, "bucketpromdb:wecise", "prom.0.2", 2.663157894736843, "prom.0.5", 0.15630781478860528~0.1563078147886053)
-**/
-;
-

+ 33 - 0
odbctest/mql/0/1mqltestfunc.mql

@@ -0,0 +1,33 @@
+
+
+-- 暂停1秒
+select id,{%d,xx} as v from / where id=?
+/**
+set(xx,1)
+beforerun(
+    add(xx,1),
+    case(xx=10,set(xx,1))
+)
+params('{%d,xx}')
+loop(100)
+sleep(1s)
+fork(a)
+output()
+**/
+;
+
+
+-- 暂停2秒
+/**
+loop(100)
+parallel(10)
+sleep(2s)
+fork(a)
+**/
+;
+
+
+-- /**
+-- wait(a)
+-- **/
+-- ;

+ 8 - 2
odbctest/odbcmql/mql_run.go

@@ -178,6 +178,7 @@ mql语句扩展说明:
         filecount 当前文件的总计数
         dircount  当前目录的总计数
         topcount  整个执行进程的总计数
+		rand      0 ~ 1000000 之间的随机整数
 		now	      当前时间,格式标记 t 相当于 2006-01-02 15:04:05
   mql语句中第一个 /** 到 最后一个 **/ 之间的内容可以标注执行若干预定义动作,多个动作标注用空格分隔
   如 /** output() sleep(1) **/ 表示忽略当前语句执行过程中的任何报错,执行完成后等待一秒后再继续执行下一语句
@@ -191,10 +192,10 @@ mql语句扩展说明:
    fork(G)                   新建并行线程分支,执行当前语句的同时,继续执行后续语句,G 为线程组名,配合 wait 使用
    wait(G)                   执行当前语句前,等待之前创建的分支结束,G 为线程组名,对应由 fork 创建的所有同名线程分支,G 为空表示所有
    beforerun(F,...)          执行当前语句前,执行一系列预定义函数,以通过一些简单逻辑处理产生模拟数据,目前支持的函数包括
-                             set(S,V)       设置变量,S 为变量名,V为变量值
+                             set(S,V)       设置变量,S 为变量名,V为变量值,目前仅支持时间值和整数值
                              add(S,V,u)     累加变量,S 为变量名,V为增量值,u为可选的变量单位,如时间段单位 second,minute,hour
                              mod(S,V)       变量取模,相当于 S = S % V
-                             case(C,F)      根据条件 C 执行函数 F
+                             case(C,F)      根据条件 C 执行函数 F,C为比较判断表达式,目前仅支持等于“=”判断
    -------------  针对错误处理的相关动作
    retry(N)          出错重试 N 次,N为自然数,默认为 0,
    onerror(O,E,...)  retry后仍然有错时的处理方法,E为特定的错误信息关键字,不指定则为任意错误,O为处理方法,包括:
@@ -1165,6 +1166,11 @@ func (mt *MQLTest) runAction(basedir, ffpath, mqlkey, mqlsn string,
 				}
 				v = v.Add(d)
 				mt.setValue(basedir, ffpath, mqlkey, mqlsn, staticactions, ak, v)
+			default:
+				av := cast.ToInt(va)
+				bv := cast.ToInt(vb)
+				nv := av + bv
+				mt.setValue(basedir, ffpath, mqlkey, mqlsn, staticactions, ak, nv)
 			}
 		case "mod":
 			var a, b, va, vb any