Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Xiaomi
soar
提交
b27e59f3
S
soar
项目概览
Xiaomi
/
soar
9 个月 前同步成功
通知
373
Star
8512
Fork
1328
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
S
soar
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
b27e59f3
编写于
10月 30, 2018
作者:
martianzhang
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
init english version
上级
153c0c51
变更
5
展开全部
隐藏空白更改
内联
并排
Showing
5 changed file
with
699 addition
and
7 deletion
+699
-7
advisor/rules.go
advisor/rules.go
+38
-7
advisor/rules_english.go
advisor/rules_english.go
+522
-0
advisor/rules_test.go
advisor/rules_test.go
+19
-0
advisor/testdata/TestTranslation.golden
advisor/testdata/TestTranslation.golden
+116
-0
common/config.go
common/config.go
+4
-0
未找到文件。
advisor/rules.go
浏览文件 @
b27e59f3
...
@@ -1116,13 +1116,9 @@ func FormatSuggest(sql string, format string, suggests ...map[string]Rule) (map[
...
@@ -1116,13 +1116,9 @@ func FormatSuggest(sql string, format string, suggests ...map[string]Rule) (map[
id
=
query
.
Id
(
fingerprint
)
id
=
query
.
Id
(
fingerprint
)
}
}
// 合并重复的建议
// merge and translation suggestions
suggest
:=
make
(
map
[
string
]
Rule
)
suggest
:=
Translation
(
common
.
Config
.
Language
,
suggests
...
)
for
_
,
s
:=
range
suggests
{
for
item
,
rule
:=
range
s
{
suggest
[
item
]
=
rule
}
}
suggest
=
MergeConflictHeuristicRules
(
suggest
)
suggest
=
MergeConflictHeuristicRules
(
suggest
)
// 是否忽略显示OK建议,测试的时候大家都喜欢看OK,线上跑起来的时候OK太多反而容易看花眼
// 是否忽略显示OK建议,测试的时候大家都喜欢看OK,线上跑起来的时候OK太多反而容易看花眼
...
@@ -1377,3 +1373,38 @@ func ListTestSQLs() {
...
@@ -1377,3 +1373,38 @@ func ListTestSQLs() {
fmt
.
Println
(
sql
)
fmt
.
Println
(
sql
)
}
}
}
}
// Translation i18n support
func
Translation
(
language
string
,
suggests
...
map
[
string
]
Rule
)
map
[
string
]
Rule
{
// 合并重复的建议
suggest
:=
make
(
map
[
string
]
Rule
)
for
_
,
s
:=
range
suggests
{
for
item
,
rule
:=
range
s
{
suggest
[
item
]
=
rule
}
}
// i18n translation
var
i18nSuggest
map
[
string
]
Rule
common
.
Log
.
Debug
(
"Translation into : %s language"
,
language
)
switch
language
{
case
"english"
,
"en"
:
i18nSuggest
=
HeuristicRulesEnglish
}
for
item
,
rule
:=
range
suggest
{
// check if item exists
if
_
,
ok
:=
i18nSuggest
[
item
];
!
ok
{
continue
}
// check empty mistake
if
i18nSuggest
[
item
]
.
Summary
==
""
||
i18nSuggest
[
item
]
.
Content
==
""
{
continue
}
rule
.
Summary
=
i18nSuggest
[
item
]
.
Summary
rule
.
Content
=
i18nSuggest
[
item
]
.
Content
suggest
[
item
]
=
rule
}
return
suggest
}
advisor/rules_english.go
0 → 100644
浏览文件 @
b27e59f3
此差异已折叠。
点击以展开。
advisor/rules_test.go
浏览文件 @
b27e59f3
...
@@ -21,6 +21,8 @@ import (
...
@@ -21,6 +21,8 @@ import (
"testing"
"testing"
"github.com/XiaoMi/soar/common"
"github.com/XiaoMi/soar/common"
"github.com/kr/pretty"
)
)
var
update
=
flag
.
Bool
(
"update"
,
false
,
"update .golden files"
)
var
update
=
flag
.
Bool
(
"update"
,
false
,
"update .golden files"
)
...
@@ -52,3 +54,20 @@ func TestIsIgnoreRule(t *testing.T) {
...
@@ -52,3 +54,20 @@ func TestIsIgnoreRule(t *testing.T) {
t
.
Error
(
"should be true"
)
t
.
Error
(
"should be true"
)
}
}
}
}
func
TestTranslation
(
t
*
testing
.
T
)
{
languages
:=
[]
string
{
"english"
}
testRules
:=
make
(
map
[
string
]
Rule
)
for
item
,
rule
:=
range
HeuristicRules
{
testRules
[
item
]
=
rule
}
err
:=
common
.
GoldenDiff
(
func
()
{
for
_
,
language
:=
range
languages
{
common
.
Log
.
Debug
(
"TestTranslation %s"
,
language
)
pretty
.
Println
(
Translation
(
language
,
testRules
))
}
},
t
.
Name
(),
update
)
if
nil
!=
err
{
t
.
Fatal
(
err
)
}
}
advisor/testdata/TestTranslation.golden
0 → 100644
浏览文件 @
b27e59f3
此差异已折叠。
点击以展开。
common/config.go
浏览文件 @
b27e59f3
...
@@ -52,6 +52,7 @@ type Configration struct {
...
@@ -52,6 +52,7 @@ type Configration struct {
ConnTimeOut
int
`yaml:"conn-time-out"`
// 数据库连接超时时间,单位秒
ConnTimeOut
int
`yaml:"conn-time-out"`
// 数据库连接超时时间,单位秒
QueryTimeOut
int
`yaml:"query-time-out"`
// 数据库SQL执行超时时间,单位秒
QueryTimeOut
int
`yaml:"query-time-out"`
// 数据库SQL执行超时时间,单位秒
Delimiter
string
`yaml:"delimiter"`
// SQL分隔符
Delimiter
string
`yaml:"delimiter"`
// SQL分隔符
Language
string
`yaml:"language"`
// 支持的语言
// +++++++++++++++日志相关+++++++++++++++++
// +++++++++++++++日志相关+++++++++++++++++
// 日志级别,这里使用了beego的log包
// 日志级别,这里使用了beego的log包
...
@@ -155,6 +156,7 @@ var Config = &Configration{
...
@@ -155,6 +156,7 @@ var Config = &Configration{
ConnTimeOut
:
3
,
ConnTimeOut
:
3
,
QueryTimeOut
:
30
,
QueryTimeOut
:
30
,
Delimiter
:
";"
,
Delimiter
:
";"
,
Language
:
""
,
// default "" or "chinese" means Chinese
MaxJoinTableCount
:
5
,
MaxJoinTableCount
:
5
,
MaxGroupByColsCount
:
5
,
MaxGroupByColsCount
:
5
,
...
@@ -487,6 +489,7 @@ func readCmdFlags() error {
...
@@ -487,6 +489,7 @@ func readCmdFlags() error {
connTimeOut
:=
flag
.
Int
(
"conn-time-out"
,
Config
.
ConnTimeOut
,
"ConnTimeOut, 数据库连接超时时间,单位秒"
)
connTimeOut
:=
flag
.
Int
(
"conn-time-out"
,
Config
.
ConnTimeOut
,
"ConnTimeOut, 数据库连接超时时间,单位秒"
)
queryTimeOut
:=
flag
.
Int
(
"query-time-out"
,
Config
.
QueryTimeOut
,
"QueryTimeOut, 数据库SQL执行超时时间,单位秒"
)
queryTimeOut
:=
flag
.
Int
(
"query-time-out"
,
Config
.
QueryTimeOut
,
"QueryTimeOut, 数据库SQL执行超时时间,单位秒"
)
delimiter
:=
flag
.
String
(
"delimiter"
,
Config
.
Delimiter
,
"Delimiter, SQL分隔符"
)
delimiter
:=
flag
.
String
(
"delimiter"
,
Config
.
Delimiter
,
"Delimiter, SQL分隔符"
)
language
:=
flag
.
String
(
"language"
,
Config
.
Language
,
"Output language, chinese or english"
)
// +++++++++++++++日志相关+++++++++++++++++
// +++++++++++++++日志相关+++++++++++++++++
logLevel
:=
flag
.
Int
(
"log-level"
,
Config
.
LogLevel
,
"LogLevel, 日志级别, [0:Emergency, 1:Alert, 2:Critical, 3:Error, 4:Warning, 5:Notice, 6:Informational, 7:Debug]"
)
logLevel
:=
flag
.
Int
(
"log-level"
,
Config
.
LogLevel
,
"LogLevel, 日志级别, [0:Emergency, 1:Alert, 2:Critical, 3:Error, 4:Warning, 5:Notice, 6:Informational, 7:Debug]"
)
logOutput
:=
flag
.
String
(
"log-output"
,
Config
.
LogOutput
,
"LogOutput, 日志输出位置"
)
logOutput
:=
flag
.
String
(
"log-output"
,
Config
.
LogOutput
,
"LogOutput, 日志输出位置"
)
...
@@ -571,6 +574,7 @@ func readCmdFlags() error {
...
@@ -571,6 +574,7 @@ func readCmdFlags() error {
Config
.
SamplingStatisticTarget
=
*
samplingStatisticTarget
Config
.
SamplingStatisticTarget
=
*
samplingStatisticTarget
Config
.
ConnTimeOut
=
*
connTimeOut
Config
.
ConnTimeOut
=
*
connTimeOut
Config
.
QueryTimeOut
=
*
queryTimeOut
Config
.
QueryTimeOut
=
*
queryTimeOut
Config
.
Language
=
*
language
Config
.
LogLevel
=
*
logLevel
Config
.
LogLevel
=
*
logLevel
if
strings
.
HasPrefix
(
*
logOutput
,
"/"
)
{
if
strings
.
HasPrefix
(
*
logOutput
,
"/"
)
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录