Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
阿拉亮
soar
提交
6a274c66
S
soar
项目概览
阿拉亮
/
soar
与 Fork 源项目一致
Fork自
Xiaomi / soar
通知
1
Star
0
Fork
0
代码
文件
提交
分支
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,发现更多精彩内容 >>
提交
6a274c66
编写于
11月 02, 2018
作者:
martianzhang
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
add shutdown func and code lint
上级
31363ee4
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
27 addition
and
30 deletion
+27
-30
cmd/soar/soar.go
cmd/soar/soar.go
+9
-6
common/signal.go
common/signal.go
+1
-5
env/env.go
env/env.go
+9
-11
env/env_test.go
env/env_test.go
+8
-8
未找到文件。
cmd/soar/soar.go
浏览文件 @
6a274c66
...
...
@@ -80,8 +80,7 @@ func main() {
// 环境初始化,连接检查线上环境+构建测试环境
vEnv
,
rEnv
:=
env
.
BuildEnv
()
// 使用CleanupTestDatabase命令手动清理残余的`optimizer_xxx`数据库
// 为了保护当前正在评审的SQL,只清除前1小时前的残余
// 使用 -cleanup-test-database 命令手动清理残余的 optimizer_xxx 数据库
if
common
.
Config
.
CleanupTestDatabase
{
vEnv
.
CleanupTestDatabase
()
}
...
...
@@ -91,11 +90,9 @@ func main() {
defer
vEnv
.
CleanUp
()
}
//当程序卡死的时候,或者由于某些原因程序没有退出,可以通过捕获信号量的形式让程序优雅退出并且清理测试环境
//
当程序卡死的时候,或者由于某些原因程序没有退出,可以通过捕获信号量的形式让程序优雅退出并且清理测试环境
common
.
HandleSignal
(
func
()
{
if
common
.
Config
.
DropTestTemporary
{
vEnv
.
CleanUp
()
}
shutdown
(
vEnv
,
rEnv
)
})
// 对指定的库表进行索引重复检查
...
...
@@ -493,3 +490,9 @@ func main() {
return
}
}
func
shutdown
(
vEnv
*
env
.
VirtualEnv
,
rEnv
*
database
.
Connector
)
{
if
common
.
Config
.
DropTestTemporary
{
vEnv
.
CleanUp
()
}
}
common/signal.go
浏览文件 @
6a274c66
...
...
@@ -20,10 +20,9 @@ import (
"os"
"os/signal"
"syscall"
"time"
)
//当程序卡死的时候,或者由于某些原因程序没有退出,可以通过捕获信号量的形式让程序优雅退出并且清理测试环境
//
HandleSignal
当程序卡死的时候,或者由于某些原因程序没有退出,可以通过捕获信号量的形式让程序优雅退出并且清理测试环境
func
HandleSignal
(
f
func
())
{
sc
:=
make
(
chan
os
.
Signal
,
1
)
signal
.
Notify
(
sc
,
...
...
@@ -33,13 +32,10 @@ func HandleSignal(f func()) {
syscall
.
SIGQUIT
)
go
func
()
{
select
{
case
n
:=
<-
sc
:
Log
.
Info
(
"receive signal %v, closing"
,
n
)
f
()
time
.
Sleep
(
250
*
time
.
Millisecond
)
os
.
Exit
(
0
)
}
}()
}
env/env.go
浏览文件 @
6a274c66
...
...
@@ -157,7 +157,7 @@ func (ve *VirtualEnv) CleanupTestDatabase() {
if
err
==
nil
{
for
_
,
row
:=
range
dbs
.
Rows
{
testDatabase
:=
row
.
Str
(
0
)
// test temporary database format `op
imt
izer_YYMMDDHHmmss_randomString(16)`
// test temporary database format `op
tim
izer_YYMMDDHHmmss_randomString(16)`
if
len
(
testDatabase
)
!=
39
{
common
.
Log
.
Debug
(
"CleanupTestDatabase by pass %s"
,
testDatabase
)
continue
...
...
@@ -165,26 +165,24 @@ func (ve *VirtualEnv) CleanupTestDatabase() {
s
:=
strings
.
Split
(
testDatabase
,
"_"
)
pastTime
,
err
:=
time
.
Parse
(
"060102150405"
,
s
[
1
])
if
err
!=
nil
{
common
.
Log
.
Error
(
"CleanupTestDatabase compute pastTime Error: %s"
,
err
)
}
nowTime
,
err
:=
time
.
Parse
(
"060102150405"
,
time
.
Now
()
.
Format
(
"060102150405"
))
if
err
!=
nil
{
common
.
Log
.
Error
(
"CleanupTestDatabase compute nowTime Error: %s"
,
err
)
common
.
Log
.
Error
(
"CleanupTestDatabase compute pastTime Error: %s"
,
err
.
Error
())
continue
}
// TODO: 1 hour should be configable
subHour
:=
nowTime
.
Sub
(
pastTime
)
.
Hours
()
// TODO: 1 hour should be config
-
able
subHour
:=
time
.
Now
()
.
Sub
(
pastTime
)
.
Hours
()
if
subHour
>
1
{
_
,
err
:=
ve
.
Query
(
"drop database %s"
,
testDatabase
)
if
err
!=
nil
{
common
.
Log
.
Error
(
"CleanupTestDatabase failed Error: %s"
,
err
)
common
.
Log
.
Error
(
"CleanupTestDatabase failed Error: %s"
,
err
.
Error
())
continue
}
common
.
Log
.
Debug
(
"CleanupTestDatabase drop database %s"
,
testDatabase
)
common
.
Log
.
Debug
(
"CleanupTestDatabase drop database %s
success
"
,
testDatabase
)
}
else
{
common
.
Log
.
Debug
(
"CleanupTestDatabase by pass database %s, less than %d hours"
,
testDatabase
,
subHour
)
}
}
}
else
{
common
.
Log
.
Error
(
"CleanupTestDatabase
failed Error:%s"
,
err
)
common
.
Log
.
Error
(
"CleanupTestDatabase
failed Error:%s"
,
err
.
Error
()
)
}
}
...
...
env/env_test.go
浏览文件 @
6a274c66
...
...
@@ -115,26 +115,26 @@ func TestNewVirtualEnv(t *testing.T) {
func
TestCleanupTestDatabase
(
t
*
testing
.
T
)
{
vEnv
,
_
:=
BuildEnv
()
vEnv
.
Query
(
"drop database if exists optimizer_
100000000000
_xxxxxxxxxxxxxxxx"
)
_
,
err
:=
vEnv
.
Query
(
"create database optimizer_
100000000000
_xxxxxxxxxxxxxxxx"
)
vEnv
.
Query
(
"drop database if exists optimizer_
060102150405
_xxxxxxxxxxxxxxxx"
)
_
,
err
:=
vEnv
.
Query
(
"create database optimizer_
060102150405
_xxxxxxxxxxxxxxxx"
)
if
err
!=
nil
{
t
.
Error
(
err
)
}
vEnv
.
CleanupTestDatabase
()
_
,
err
=
vEnv
.
Query
(
"
drop database optimizer_100000000000
_xxxxxxxxxxxxxxxx"
)
_
,
err
=
vEnv
.
Query
(
"
show create database optimizer_060102150405
_xxxxxxxxxxxxxxxx"
)
if
err
==
nil
{
t
.
Error
(
"optimizer_
100000000000
_xxxxxxxxxxxxxxxx exist, should be droped"
)
t
.
Error
(
"optimizer_
060102150405
_xxxxxxxxxxxxxxxx exist, should be droped"
)
}
vEnv
.
Query
(
"drop database if exists optimizer_
100000000000
"
)
_
,
err
=
vEnv
.
Query
(
"create database optimizer_
100000000000
"
)
vEnv
.
Query
(
"drop database if exists optimizer_
060102150405
"
)
_
,
err
=
vEnv
.
Query
(
"create database optimizer_
060102150405
"
)
if
err
!=
nil
{
t
.
Error
(
err
)
}
vEnv
.
CleanupTestDatabase
()
_
,
err
=
vEnv
.
Query
(
"drop database optimizer_
100000000000
"
)
_
,
err
=
vEnv
.
Query
(
"drop database optimizer_
060102150405
"
)
if
err
!=
nil
{
t
.
Error
(
"optimizer_
100000000000
not exist, should not be droped"
)
t
.
Error
(
"optimizer_
060102150405
not exist, should not be droped"
)
}
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录