Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
G
Grpc
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Container Registry
Model registry
Operate
Environments
Monitor
Incidents
Service Desk
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
tci-gateway-module
Grpc
Commits
7134a316
Commit
7134a316
authored
8 years ago
by
Jan Tattermusch
Browse files
Options
Downloads
Patches
Plain Diff
add --manual_run option for running interop tests
parent
d159af31
No related branches found
Branches containing commit
No related tags found
Tags containing commit
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
tools/run_tests/run_interop_tests.py
+94
-24
94 additions, 24 deletions
tools/run_tests/run_interop_tests.py
with
94 additions
and
24 deletions
tools/run_tests/run_interop_tests.py
+
94
−
24
View file @
7134a316
...
@@ -501,6 +501,28 @@ def docker_run_cmdline(cmdline, image, docker_args=[], cwd=None, environ=None):
...
@@ -501,6 +501,28 @@ def docker_run_cmdline(cmdline, image, docker_args=[], cwd=None, environ=None):
return
docker_cmdline
return
docker_cmdline
def
manual_cmdline
(
docker_cmdline
):
"""
Returns docker cmdline adjusted for manual invocation.
"""
print_cmdline
=
[]
for
item
in
docker_cmdline
:
if
item
.
startswith
(
'
--name=
'
):
continue
# add quotes when necessary
if
any
(
character
.
isspace
()
for
character
in
item
):
item
=
"
\"
%s
\"
"
%
item
print_cmdline
.
append
(
item
)
return
'
'
.
join
(
print_cmdline
)
def
write_cmdlog_maybe
(
cmdlog
,
filename
):
"""
Returns docker cmdline adjusted for manual invocation.
"""
if
cmdlog
:
with
open
(
filename
,
'
w
'
)
as
logfile
:
logfile
.
write
(
'
#!/bin/bash
\n
'
)
logfile
.
writelines
(
"
%s
\n
"
%
line
for
line
in
cmdlog
)
print
(
'
Command log written to file %s
'
%
filename
)
def
bash_cmdline
(
cmdline
):
def
bash_cmdline
(
cmdline
):
"""
Creates bash -c cmdline from args list.
"""
"""
Creates bash -c cmdline from args list.
"""
# Use login shell:
# Use login shell:
...
@@ -551,7 +573,8 @@ def _job_kill_handler(job):
...
@@ -551,7 +573,8 @@ def _job_kill_handler(job):
def
cloud_to_prod_jobspec
(
language
,
test_case
,
server_host_name
,
def
cloud_to_prod_jobspec
(
language
,
test_case
,
server_host_name
,
server_host_detail
,
docker_image
=
None
,
auth
=
False
):
server_host_detail
,
docker_image
=
None
,
auth
=
False
,
manual_cmd_log
=
None
):
"""
Creates jobspec for cloud-to-prod interop test
"""
"""
Creates jobspec for cloud-to-prod interop test
"""
container_name
=
None
container_name
=
None
cmdargs
=
[
cmdargs
=
[
...
@@ -576,7 +599,9 @@ def cloud_to_prod_jobspec(language, test_case, server_host_name,
...
@@ -576,7 +599,9 @@ def cloud_to_prod_jobspec(language, test_case, server_host_name,
cwd
=
cwd
,
cwd
=
cwd
,
environ
=
environ
,
environ
=
environ
,
docker_args
=
[
'
--net=host
'
,
docker_args
=
[
'
--net=host
'
,
'
--name
'
,
container_name
])
'
--name=%s
'
%
container_name
])
if
manual_cmd_log
is
not
None
:
manual_cmd_log
.
append
(
manual_cmdline
(
cmdline
))
cwd
=
None
cwd
=
None
environ
=
None
environ
=
None
...
@@ -597,7 +622,8 @@ def cloud_to_prod_jobspec(language, test_case, server_host_name,
...
@@ -597,7 +622,8 @@ def cloud_to_prod_jobspec(language, test_case, server_host_name,
def
cloud_to_cloud_jobspec
(
language
,
test_case
,
server_name
,
server_host
,
def
cloud_to_cloud_jobspec
(
language
,
test_case
,
server_name
,
server_host
,
server_port
,
docker_image
=
None
,
insecure
=
False
):
server_port
,
docker_image
=
None
,
insecure
=
False
,
manual_cmd_log
=
None
):
"""
Creates jobspec for cloud-to-cloud interop test
"""
"""
Creates jobspec for cloud-to-cloud interop test
"""
interop_only_options
=
[
interop_only_options
=
[
'
--server_host_override=foo.test.google.fr
'
,
'
--server_host_override=foo.test.google.fr
'
,
...
@@ -628,7 +654,9 @@ def cloud_to_cloud_jobspec(language, test_case, server_name, server_host,
...
@@ -628,7 +654,9 @@ def cloud_to_cloud_jobspec(language, test_case, server_name, server_host,
environ
=
environ
,
environ
=
environ
,
cwd
=
cwd
,
cwd
=
cwd
,
docker_args
=
[
'
--net=host
'
,
docker_args
=
[
'
--net=host
'
,
'
--name
'
,
container_name
])
'
--name=%s
'
%
container_name
])
if
manual_cmd_log
is
not
None
:
manual_cmd_log
.
append
(
manual_cmdline
(
cmdline
))
cwd
=
None
cwd
=
None
test_job
=
jobset
.
JobSpec
(
test_job
=
jobset
.
JobSpec
(
...
@@ -646,7 +674,7 @@ def cloud_to_cloud_jobspec(language, test_case, server_name, server_host,
...
@@ -646,7 +674,7 @@ def cloud_to_cloud_jobspec(language, test_case, server_name, server_host,
return
test_job
return
test_job
def
server_jobspec
(
language
,
docker_image
,
insecure
=
False
):
def
server_jobspec
(
language
,
docker_image
,
insecure
=
False
,
manual_cmd_log
=
None
):
"""
Create jobspec for running a server
"""
"""
Create jobspec for running a server
"""
container_name
=
dockerjob
.
random_name
(
'
interop_server_%s
'
%
language
.
safename
)
container_name
=
dockerjob
.
random_name
(
'
interop_server_%s
'
%
language
.
safename
)
cmdline
=
bash_cmdline
(
cmdline
=
bash_cmdline
(
...
@@ -676,7 +704,9 @@ def server_jobspec(language, docker_image, insecure=False):
...
@@ -676,7 +704,9 @@ def server_jobspec(language, docker_image, insecure=False):
cwd
=
language
.
server_cwd
,
cwd
=
language
.
server_cwd
,
environ
=
environ
,
environ
=
environ
,
docker_args
=
port_args
+
docker_args
=
port_args
+
[
'
--name
'
,
container_name
])
[
'
--name=%s
'
%
container_name
])
if
manual_cmd_log
is
not
None
:
manual_cmd_log
.
append
(
manual_cmdline
(
docker_cmdline
))
server_job
=
jobset
.
JobSpec
(
server_job
=
jobset
.
JobSpec
(
cmdline
=
docker_cmdline
,
cmdline
=
docker_cmdline
,
environ
=
environ
,
environ
=
environ
,
...
@@ -806,6 +836,14 @@ argp.add_argument('--allow_flakes',
...
@@ -806,6 +836,14 @@ argp.add_argument('--allow_flakes',
action
=
'
store_const
'
,
action
=
'
store_const
'
,
const
=
True
,
const
=
True
,
help
=
'
Allow flaky tests to show as passing (re-runs failed tests up to five times)
'
)
help
=
'
Allow flaky tests to show as passing (re-runs failed tests up to five times)
'
)
argp
.
add_argument
(
'
--manual_run
'
,
default
=
False
,
action
=
'
store_const
'
,
const
=
True
,
help
=
'
Prepare things for running interop tests manually.
'
+
'
Preserve docker images after building them and skip
'
'
actually running the tests. Only print commands to run by
'
+
'
hand.
'
)
argp
.
add_argument
(
'
--http2_interop
'
,
argp
.
add_argument
(
'
--http2_interop
'
,
default
=
False
,
default
=
False
,
action
=
'
store_const
'
,
action
=
'
store_const
'
,
...
@@ -837,6 +875,10 @@ if args.use_docker:
...
@@ -837,6 +875,10 @@ if args.use_docker:
print
(
'
copied to the docker environment.
'
)
print
(
'
copied to the docker environment.
'
)
time
.
sleep
(
5
)
time
.
sleep
(
5
)
if
args
.
manual_run
and
not
args
.
use_docker
:
print
(
'
--manual_run is only supported with --use_docker option enabled.
'
)
sys
.
exit
(
1
)
if
not
args
.
use_docker
and
servers
:
if
not
args
.
use_docker
and
servers
:
print
(
'
Running interop servers is only supported with --use_docker option enabled.
'
)
print
(
'
Running interop servers is only supported with --use_docker option enabled.
'
)
sys
.
exit
(
1
)
sys
.
exit
(
1
)
...
@@ -887,24 +929,36 @@ if args.use_docker:
...
@@ -887,24 +929,36 @@ if args.use_docker:
dockerjob
.
remove_image
(
image
,
skip_nonexistent
=
True
)
dockerjob
.
remove_image
(
image
,
skip_nonexistent
=
True
)
sys
.
exit
(
1
)
sys
.
exit
(
1
)
server_manual_cmd_log
=
[]
if
args
.
manual_run
else
None
client_manual_cmd_log
=
[]
if
args
.
manual_run
else
None
# Start interop servers.
# Start interop servers.
server_jobs
=
{}
server_jobs
=
{}
server_addresses
=
{}
server_addresses
=
{}
try
:
try
:
for
s
in
servers
:
for
s
in
servers
:
lang
=
str
(
s
)
lang
=
str
(
s
)
spec
=
server_jobspec
(
_LANGUAGES
[
lang
],
docker_images
.
get
(
lang
),
spec
=
server_jobspec
(
_LANGUAGES
[
lang
],
docker_images
.
get
(
lang
),
args
.
insecure
)
args
.
insecure
,
manual_cmd_log
=
server_manual_cmd_log
)
job
=
dockerjob
.
DockerJob
(
spec
)
if
not
args
.
manual_run
:
server_jobs
[
lang
]
=
job
job
=
dockerjob
.
DockerJob
(
spec
)
server_addresses
[
lang
]
=
(
'
localhost
'
,
job
.
mapped_port
(
_DEFAULT_SERVER_PORT
))
server_jobs
[
lang
]
=
job
server_addresses
[
lang
]
=
(
'
localhost
'
,
job
.
mapped_port
(
_DEFAULT_SERVER_PORT
))
else
:
# don't run the server, set server port to a placeholder value
server_addresses
[
lang
]
=
(
'
localhost
'
,
'
${SERVER_PORT}
'
)
if
args
.
http2_badserver_interop
:
if
args
.
http2_badserver_interop
:
# launch a HTTP2 server emulator that creates edge cases
# launch a HTTP2 server emulator that creates edge cases
lang
=
str
(
http2InteropServer
)
lang
=
str
(
http2InteropServer
)
spec
=
server_jobspec
(
http2InteropServer
,
docker_images
.
get
(
lang
))
spec
=
server_jobspec
(
http2InteropServer
,
docker_images
.
get
(
lang
),
job
=
dockerjob
.
DockerJob
(
spec
)
manual_cmd_log
=
server_manual_cmd_log
)
server_jobs
[
lang
]
=
job
if
not
args
.
manual_run
:
job
=
dockerjob
.
DockerJob
(
spec
)
server_jobs
[
lang
]
=
job
else
:
# don't run the server, set server port to a placeholder value
server_addresses
[
lang
]
=
(
'
localhost
'
,
'
${SERVER_PORT}
'
)
jobs
=
[]
jobs
=
[]
if
args
.
cloud_to_prod
:
if
args
.
cloud_to_prod
:
...
@@ -918,7 +972,8 @@ try:
...
@@ -918,7 +972,8 @@ try:
test_job
=
cloud_to_prod_jobspec
(
test_job
=
cloud_to_prod_jobspec
(
language
,
test_case
,
server_host_name
,
language
,
test_case
,
server_host_name
,
prod_servers
[
server_host_name
],
prod_servers
[
server_host_name
],
docker_image
=
docker_images
.
get
(
str
(
language
)))
docker_image
=
docker_images
.
get
(
str
(
language
)),
manual_cmd_log
=
client_manual_cmd_log
)
jobs
.
append
(
test_job
)
jobs
.
append
(
test_job
)
if
args
.
http2_interop
:
if
args
.
http2_interop
:
...
@@ -926,7 +981,8 @@ try:
...
@@ -926,7 +981,8 @@ try:
test_job
=
cloud_to_prod_jobspec
(
test_job
=
cloud_to_prod_jobspec
(
http2Interop
,
test_case
,
server_host_name
,
http2Interop
,
test_case
,
server_host_name
,
prod_servers
[
server_host_name
],
prod_servers
[
server_host_name
],
docker_image
=
docker_images
.
get
(
str
(
http2Interop
)))
docker_image
=
docker_images
.
get
(
str
(
http2Interop
)),
manual_cmd_log
=
client_manual_cmd_log
)
jobs
.
append
(
test_job
)
jobs
.
append
(
test_job
)
if
args
.
cloud_to_prod_auth
:
if
args
.
cloud_to_prod_auth
:
...
@@ -939,7 +995,8 @@ try:
...
@@ -939,7 +995,8 @@ try:
test_job
=
cloud_to_prod_jobspec
(
test_job
=
cloud_to_prod_jobspec
(
language
,
test_case
,
server_host_name
,
language
,
test_case
,
server_host_name
,
prod_servers
[
server_host_name
],
prod_servers
[
server_host_name
],
docker_image
=
docker_images
.
get
(
str
(
language
)),
auth
=
True
)
docker_image
=
docker_images
.
get
(
str
(
language
)),
auth
=
True
,
manual_cmd_log
=
client_manual_cmd_log
)
jobs
.
append
(
test_job
)
jobs
.
append
(
test_job
)
for
server
in
args
.
override_server
:
for
server
in
args
.
override_server
:
...
@@ -963,7 +1020,8 @@ try:
...
@@ -963,7 +1020,8 @@ try:
server_host
,
server_host
,
server_port
,
server_port
,
docker_image
=
docker_images
.
get
(
str
(
language
)),
docker_image
=
docker_images
.
get
(
str
(
language
)),
insecure
=
args
.
insecure
)
insecure
=
args
.
insecure
,
manual_cmd_log
=
client_manual_cmd_log
)
jobs
.
append
(
test_job
)
jobs
.
append
(
test_job
)
if
args
.
http2_interop
:
if
args
.
http2_interop
:
...
@@ -977,7 +1035,8 @@ try:
...
@@ -977,7 +1035,8 @@ try:
server_host
,
server_host
,
server_port
,
server_port
,
docker_image
=
docker_images
.
get
(
str
(
http2Interop
)),
docker_image
=
docker_images
.
get
(
str
(
http2Interop
)),
insecure
=
args
.
insecure
)
insecure
=
args
.
insecure
,
manual_cmd_log
=
client_manual_cmd_log
)
jobs
.
append
(
test_job
)
jobs
.
append
(
test_job
)
if
args
.
http2_badserver_interop
:
if
args
.
http2_badserver_interop
:
...
@@ -988,7 +1047,8 @@ try:
...
@@ -988,7 +1047,8 @@ try:
str
(
http2InteropServer
),
str
(
http2InteropServer
),
'
localhost
'
,
'
localhost
'
,
_DEFAULT_SERVER_PORT
,
_DEFAULT_SERVER_PORT
,
docker_image
=
docker_images
.
get
(
str
(
language
)))
docker_image
=
docker_images
.
get
(
str
(
language
)),
manual_cmd_log
=
client_manual_cmd_log
)
jobs
.
append
(
test_job
)
jobs
.
append
(
test_job
)
if
not
jobs
:
if
not
jobs
:
...
@@ -997,13 +1057,20 @@ try:
...
@@ -997,13 +1057,20 @@ try:
dockerjob
.
remove_image
(
image
,
skip_nonexistent
=
True
)
dockerjob
.
remove_image
(
image
,
skip_nonexistent
=
True
)
sys
.
exit
(
1
)
sys
.
exit
(
1
)
if
args
.
manual_run
:
print
(
'
All tests will skipped --manual_run option is active.
'
)
num_failures
,
resultset
=
jobset
.
run
(
jobs
,
newline_on_success
=
True
,
num_failures
,
resultset
=
jobset
.
run
(
jobs
,
newline_on_success
=
True
,
maxjobs
=
args
.
jobs
)
maxjobs
=
args
.
jobs
,
skip_jobs
=
args
.
manual_run
)
if
num_failures
:
if
num_failures
:
jobset
.
message
(
'
FAILED
'
,
'
Some tests failed
'
,
do_newline
=
True
)
jobset
.
message
(
'
FAILED
'
,
'
Some tests failed
'
,
do_newline
=
True
)
else
:
else
:
jobset
.
message
(
'
SUCCESS
'
,
'
All tests passed
'
,
do_newline
=
True
)
jobset
.
message
(
'
SUCCESS
'
,
'
All tests passed
'
,
do_newline
=
True
)
write_cmdlog_maybe
(
server_manual_cmd_log
,
'
interop_server_cmds.sh
'
)
write_cmdlog_maybe
(
client_manual_cmd_log
,
'
interop_client_cmds.sh
'
)
report_utils
.
render_junit_xml_report
(
resultset
,
'
report.xml
'
)
report_utils
.
render_junit_xml_report
(
resultset
,
'
report.xml
'
)
for
name
,
job
in
resultset
.
items
():
for
name
,
job
in
resultset
.
items
():
...
@@ -1029,5 +1096,8 @@ finally:
...
@@ -1029,5 +1096,8 @@ finally:
dockerjob
.
finish_jobs
([
j
for
j
in
server_jobs
.
itervalues
()])
dockerjob
.
finish_jobs
([
j
for
j
in
server_jobs
.
itervalues
()])
for
image
in
docker_images
.
itervalues
():
for
image
in
docker_images
.
itervalues
():
print
(
'
Removing docker image %s
'
%
image
)
if
not
args
.
manual_run
:
dockerjob
.
remove_image
(
image
)
print
(
'
Removing docker image %s
'
%
image
)
dockerjob
.
remove_image
(
image
)
else
:
print
(
'
Preserving docker image: %s
'
%
image
)
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment