|
|
@@ -33,17 +33,30 @@ func (mt *MQLTest) RunFile(t *testing.T, ctx context.Context,
|
|
|
var multilines *MQLRequest
|
|
|
mqs := spliter.NewMQLSpliter(bufio.NewReader(f))
|
|
|
rtinfo := time.Now().Add(5 * time.Second)
|
|
|
+ filterN := mt.stmtfilter[filepath.Clean(ffpath)]
|
|
|
+ if filterN > 0 {
|
|
|
+ logger.Info("仅执行文件 ", ffpath, " 第 ", filterN, " 条语句")
|
|
|
+ }
|
|
|
+ stmtidx := 0
|
|
|
+ skipmultiline := false
|
|
|
for {
|
|
|
mql, fromline, toline, fromchar, tochar, hasnext, _ := mqs.NextMQL()
|
|
|
if !hasnext {
|
|
|
break
|
|
|
}
|
|
|
+ stmtidx++
|
|
|
if time.Now().After(rtinfo) {
|
|
|
logger.Info("reading bigfile ", toline, " lines")
|
|
|
rtinfo = time.Now().Add(5 * time.Second)
|
|
|
}
|
|
|
// 去掉注释
|
|
|
clean_mql := strings.Join(spliter.MQLSplitClean(mql), ";")
|
|
|
+ if skipmultiline {
|
|
|
+ if strings.TrimSpace(clean_mql) == "multilines end" {
|
|
|
+ skipmultiline = false
|
|
|
+ }
|
|
|
+ continue
|
|
|
+ }
|
|
|
if multilines != nil {
|
|
|
// 多条语句处理
|
|
|
if strings.TrimSpace(clean_mql) == "multilines end" {
|
|
|
@@ -72,6 +85,10 @@ func (mt *MQLTest) RunFile(t *testing.T, ctx context.Context,
|
|
|
multilines.Tochar = tochar
|
|
|
}
|
|
|
} else if strings.TrimSpace(clean_mql) == "multilines begin" {
|
|
|
+ if filterN > 0 && stmtidx != filterN {
|
|
|
+ skipmultiline = true
|
|
|
+ continue
|
|
|
+ }
|
|
|
multilines = &MQLRequest{FilePath: ffpath}
|
|
|
// 保留语句中的注释
|
|
|
multilines.OriginQueryString = strings.TrimSpace(strings.Replace(mql, "multilines begin", "", 1))
|
|
|
@@ -80,6 +97,9 @@ func (mt *MQLTest) RunFile(t *testing.T, ctx context.Context,
|
|
|
multilines.Toline = toline
|
|
|
multilines.Tochar = tochar
|
|
|
} else {
|
|
|
+ if filterN > 0 && stmtidx != filterN {
|
|
|
+ continue
|
|
|
+ }
|
|
|
// 单条语句
|
|
|
mqr := &MQLRequest{OriginQueryString: mql, FilePath: ffpath, Fromline: fromline, Toline: toline, Fromchar: fromchar, Tochar: tochar}
|
|
|
// 加入请求组,并初始化,提取动作信息
|