Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
tp-qemu
提交
4ab5e816
T
tp-qemu
项目概览
openeuler
/
tp-qemu
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
T
tp-qemu
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
未验证
提交
4ab5e816
编写于
6月 22, 2020
作者:
Y
Yanan Fu
提交者:
GitHub
6月 22, 2020
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #2204 from YanhuiMa/pause_resume
timedrift_adjust_time: add four timer device cases
上级
8f6edeb2
eb1b94f5
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
83 addition
and
14 deletion
+83
-14
qemu/tests/cfg/timedrift_adjust_time.cfg
qemu/tests/cfg/timedrift_adjust_time.cfg
+21
-2
qemu/tests/timedrift_adjust_time.py
qemu/tests/timedrift_adjust_time.py
+62
-12
未找到文件。
qemu/tests/cfg/timedrift_adjust_time.cfg
浏览文件 @
4ab5e816
...
@@ -14,7 +14,14 @@
...
@@ -14,7 +14,14 @@
host_epoch_time_cmd = 'epoch=$(date +%s); datetime=$(date);'
host_epoch_time_cmd = 'epoch=$(date +%s); datetime=$(date);'
host_epoch_time_cmd += 'echo "datetime: $datetime epoch: $epoch"'
host_epoch_time_cmd += 'echo "datetime: $datetime epoch: $epoch"'
time_difference = 0
time_difference = 0
hwclock_time_command = "hwclock -u"
hwclock_time_filter_re = "(\d+-\d+-\d+ \d+:\d+:\d+).*"
hwclock_time_format = "%Y-%m-%d %H:%M:%S"
RHEL.6, RHEL.7:
hwclock_time_filter_re = "(\S+ \S+\s+\d+ \d+:\d+:\d+ \d+).*"
hwclock_time_format = "%a %b %d %H:%M:%S %Y"
variants:
variants:
- no_adjust_clock:
- adjust_host_clock:
- adjust_host_clock:
seconds_to_forward = 1800
seconds_to_forward = 1800
set_host_time_cmd = 'date -s "${seconds_to_forward} seconds"; hwclock -w'
set_host_time_cmd = 'date -s "${seconds_to_forward} seconds"; hwclock -w'
...
@@ -41,13 +48,16 @@
...
@@ -41,13 +48,16 @@
rtc_base = localtime
rtc_base = localtime
variants:
variants:
- guest_pause_resume:
- guest_pause_resume:
only adjust_host_clock
only
no_adjust_clock
adjust_host_clock
vm_action = pause_resume
vm_action = pause_resume
sleep_seconds = 1800
sleep_seconds = 1800
time_difference = 3600
time_difference = 1800
time_difference_hwclock = 0
- guest_reboot:
- guest_reboot:
no no_adjust_clock
vm_action = reboot
vm_action = reboot
time_difference = 0
time_difference = 0
time_difference_hwclock = 0
- guest_s3:
- guest_s3:
only adjust_host_clock
only adjust_host_clock
vm_action = suspend_resume
vm_action = suspend_resume
...
@@ -61,10 +71,17 @@
...
@@ -61,10 +71,17 @@
read_clock_source_cmd += "/clocksource0/current_clocksource"
read_clock_source_cmd += "/clocksource0/current_clocksource"
timedrift_adjust_time.guest_reboot.clock_vm.adjust_host_clock:
timedrift_adjust_time.guest_reboot.clock_vm.adjust_host_clock:
time_difference = 1800
time_difference = 1800
time_difference_hwclock = 1800
timedrift_adjust_time.guest_s3.clock_vm.adjust_host_clock:
timedrift_adjust_time.guest_s3.clock_vm.adjust_host_clock:
time_difference = 1800
time_difference = 1800
timedrift_adjust_time.guest_s3.clock_host.adjust_host_clock:
timedrift_adjust_time.guest_s3.clock_host.adjust_host_clock:
time_difference = 1800
time_difference = 1800
timedrift_adjust_time.guest_pause_resume.clock_vm.no_adjust_clock:
time_difference = 1800
time_difference_hwclock = 1800
timedrift_adjust_time.guest_pause_resume.clock_vm.adjust_host_clock:
time_difference = 1800
time_difference_hwclock = 3600
RHEL.6:
RHEL.6:
timedrift_adjust_time.guest_reboot..adjust_guest_clock:
timedrift_adjust_time.guest_reboot..adjust_guest_clock:
time_difference = 1800
time_difference = 1800
...
@@ -85,6 +102,8 @@
...
@@ -85,6 +102,8 @@
time_difference = 1800
time_difference = 1800
timedrift_adjust_time.guest_s3.clock_vm.adjust_host_clock:
timedrift_adjust_time.guest_s3.clock_vm.adjust_host_clock:
time_difference = 1800
time_difference = 1800
timedrift_adjust_time.guest_pause_resume..no_adjust_clock:
time_difference = 1800
Win7, Win2008:
Win7, Win2008:
timedrift_adjust_time.guest_pause_resume.clock_host.adjust_host_clock:
timedrift_adjust_time.guest_pause_resume.clock_host.adjust_host_clock:
time_difference = 0
time_difference = 0
qemu/tests/timedrift_adjust_time.py
浏览文件 @
4ab5e816
...
@@ -130,6 +130,28 @@ class TimedriftTest(object):
...
@@ -130,6 +130,28 @@ class TimedriftTest(object):
"Guest Time: %s"
%
guest_timestr
)
"Guest Time: %s"
%
guest_timestr
)
return
list
(
map
(
float
,
[
epoch_host
,
epoch_guest
]))
return
list
(
map
(
float
,
[
epoch_host
,
epoch_guest
]))
def
get_hwtime
(
self
,
session
):
"""
Get guest's hardware clock in epoch.
:param session: VM session.
"""
hwclock_time_command
=
self
.
params
.
get
(
"hwclock_time_command"
,
"hwclock -u"
)
hwclock_time_filter_re
=
self
.
params
.
get
(
"hwclock_time_filter_re"
,
r
"(\d+-\d+-\d+ \d+:\d+:\d+).*"
)
hwclock_time_format
=
self
.
params
.
get
(
"hwclock_time_format"
,
"%Y-%m-%d %H:%M:%S"
)
output
=
session
.
cmd_output_safe
(
hwclock_time_command
)
try
:
str_time
=
re
.
findall
(
hwclock_time_filter_re
,
output
)[
0
]
guest_time
=
time
.
mktime
(
time
.
strptime
(
str_time
,
hwclock_time_format
))
except
Exception
as
err
:
logging
.
debug
(
"(time_format, output): (%s, %s)"
,
hwclock_time_format
,
output
)
raise
err
return
guest_time
@
error_context
.
context_aware
@
error_context
.
context_aware
def
verify_clock_source
(
self
,
session
):
def
verify_clock_source
(
self
,
session
):
"""
"""
...
@@ -198,14 +220,28 @@ class BackwardtimeTest(TimedriftTest):
...
@@ -198,14 +220,28 @@ class BackwardtimeTest(TimedriftTest):
while
time
.
time
()
<
start_time
+
timeout
:
while
time
.
time
()
<
start_time
+
timeout
:
host_epoch_time
,
guest_epoch_time
=
self
.
get_epoch_seconds
(
session
)
host_epoch_time
,
guest_epoch_time
=
self
.
get_epoch_seconds
(
session
)
real_difference
=
abs
(
host_epoch_time
-
guest_epoch_time
)
real_difference
=
abs
(
host_epoch_time
-
guest_epoch_time
)
if
abs
(
real_difference
-
expect_difference
)
<
tolerance
:
if
self
.
params
[
"os_type"
]
==
'linux'
:
return
expect_difference_hwclock
=
float
(
self
.
params
[
"time_difference_hwclock"
])
guest_hwtime
=
self
.
get_hwtime
(
session
)
real_difference_hw
=
abs
(
host_epoch_time
-
guest_hwtime
)
if
abs
(
real_difference
-
expect_difference
)
<
tolerance
and
\
abs
(
real_difference_hw
-
expect_difference_hwclock
)
<
tolerance
:
return
else
:
if
abs
(
real_difference
-
expect_difference
)
<
tolerance
:
return
logging
.
info
(
"Host epoch time: %s"
%
host_epoch_time
)
logging
.
info
(
"Host epoch time: %s"
%
host_epoch_time
)
logging
.
info
(
"Guest epoch time: %s"
%
guest_epoch_time
)
logging
.
info
(
"Guest epoch time: %s"
%
guest_epoch_time
)
err_msg
=
"Unexcept time difference between host and guest after"
if
self
.
params
[
"os_type"
]
==
'linux'
:
err_msg
+=
" testing.(actual difference: %s)"
%
real_difference
logging
.
info
(
"Guest hardware time: %s"
%
guest_hwtime
)
err_msg
+=
" except difference: %s)"
%
expect_difference
err_msg
=
"Unexpected sys and hardware time difference (%s %s)
\
self
.
test
.
fail
(
err_msg
)
between host and guest after adjusting time."
\
%
(
real_difference
,
real_difference_hw
)
else
:
err_msg
=
"Unexpected time difference between host and guest after"
err_msg
+=
" testing.(actual difference: %s)"
%
real_difference
err_msg
+=
" expected difference: %s)"
%
expect_difference
self
.
test
.
fail
(
err_msg
)
@
error_context
.
context_aware
@
error_context
.
context_aware
def
check_dirft_before_adjust_time
(
self
,
session
):
def
check_dirft_before_adjust_time
(
self
,
session
):
...
@@ -223,12 +259,24 @@ class BackwardtimeTest(TimedriftTest):
...
@@ -223,12 +259,24 @@ class BackwardtimeTest(TimedriftTest):
tolerance
=
float
(
self
.
params
.
get
(
"tolerance"
,
6
))
tolerance
=
float
(
self
.
params
.
get
(
"tolerance"
,
6
))
host_epoch_time
,
guest_epoch_time
=
self
.
get_epoch_seconds
(
session
)
host_epoch_time
,
guest_epoch_time
=
self
.
get_epoch_seconds
(
session
)
real_difference
=
abs
(
host_epoch_time
-
guest_epoch_time
)
real_difference
=
abs
(
host_epoch_time
-
guest_epoch_time
)
if
real_difference
>
tolerance
:
if
self
.
params
[
"os_type"
]
==
'linux'
:
logging
.
info
(
"Host epoch time: %s"
%
host_epoch_time
)
guest_hwtime
=
self
.
get_hwtime
(
session
)
logging
.
info
(
"Guest epoch time: %s"
%
guest_epoch_time
)
real_difference_hw
=
abs
(
host_epoch_time
-
guest_hwtime
)
err_msg
=
"Unexcept time difference (%s) "
%
real_difference
if
real_difference
>
tolerance
or
real_difference_hw
>
tolerance
:
err_msg
+=
" between host and guest before testing."
logging
.
info
(
"Host epoch time: %s"
%
host_epoch_time
)
self
.
test
.
fail
(
err_msg
)
logging
.
info
(
"Guest epoch time: %s"
%
guest_epoch_time
)
logging
.
info
(
"Guest hardware time: %s"
%
guest_hwtime
)
err_msg
=
"Unexpected sys and hardware time difference (%s %s)
\
between host and guest before testing."
\
%
(
real_difference
,
real_difference_hw
)
self
.
test
.
fail
(
err_msg
)
else
:
if
real_difference
>
tolerance
:
logging
.
info
(
"Host epoch time: %s"
%
host_epoch_time
)
logging
.
info
(
"Guest epoch time: %s"
%
guest_epoch_time
)
err_msg
=
"Unexcept time difference (%s) "
%
real_difference
err_msg
+=
" between host and guest before testing."
self
.
test
.
fail
(
err_msg
)
def
pre_test
(
self
):
def
pre_test
(
self
):
"""
"""
...
@@ -243,6 +291,8 @@ class BackwardtimeTest(TimedriftTest):
...
@@ -243,6 +291,8 @@ class BackwardtimeTest(TimedriftTest):
vm
=
self
.
get_vm
(
create
=
True
)
vm
=
self
.
get_vm
(
create
=
True
)
if
self
.
params
[
"os_type"
]
==
'windows'
:
if
self
.
params
[
"os_type"
]
==
'windows'
:
utils_time
.
sync_timezone_win
(
vm
)
utils_time
.
sync_timezone_win
(
vm
)
else
:
utils_time
.
sync_timezone_linux
(
vm
)
session
=
self
.
get_session
(
vm
)
session
=
self
.
get_session
(
vm
)
self
.
check_dirft_before_adjust_time
(
session
)
self
.
check_dirft_before_adjust_time
(
session
)
if
self
.
params
.
get
(
"read_clock_source_cmd"
):
if
self
.
params
.
get
(
"read_clock_source_cmd"
):
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录