Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
K
k3s
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Jacklull
k3s
Commits
6898a795
Commit
6898a795
authored
Jun 03, 2015
by
Brian Grant
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #9206 from thockin/services-e2e
Make services e2e more debuggable
parents
14f9b778
a2b7117e
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
44 additions
and
40 deletions
+44
-40
services.sh
hack/e2e-suite/services.sh
+44
-40
No files found.
hack/e2e-suite/services.sh
View file @
6898a795
...
@@ -28,6 +28,9 @@ KUBE_ROOT=$(dirname "${BASH_SOURCE}")/../..
...
@@ -28,6 +28,9 @@ KUBE_ROOT=$(dirname "${BASH_SOURCE}")/../..
export
KUBECTL KUBE_CONFIG_FILE
export
KUBECTL KUBE_CONFIG_FILE
TEST_NAMESPACE
=
"services-test-
${
RANDOM
}
"
KUBECTL
=
"
${
KUBECTL
}
--namespace=
${
TEST_NAMESPACE
}
"
source
"
${
KUBE_ROOT
}
/cluster/kube-env.sh"
source
"
${
KUBE_ROOT
}
/cluster/kube-env.sh"
source
"
${
KUBE_VERSION_ROOT
}
/cluster/
${
KUBERNETES_PROVIDER
}
/util.sh"
source
"
${
KUBE_VERSION_ROOT
}
/cluster/
${
KUBERNETES_PROVIDER
}
/util.sh"
...
@@ -39,7 +42,9 @@ function error() {
...
@@ -39,7 +42,9 @@ function error() {
}
}
function
sort_args
()
{
function
sort_args
()
{
printf
"%s
\n
"
"
$@
"
|
sort
-n
|
tr
'\n\r'
' '
|
sed
's/ */ /g'
[
$#
==
0
]
&&
return
a
=(
$(
printf
"%s
\n
"
"
$@
"
|
sort
-n
)
)
echo
"
${
a
[*]
}
"
}
}
# Join args $2... with $1 between them.
# Join args $2... with $1 between them.
...
@@ -58,10 +63,20 @@ function join() {
...
@@ -58,10 +63,20 @@ function join() {
svcs_to_clean
=()
svcs_to_clean
=()
function
do_teardown
()
{
function
do_teardown
()
{
local
svc
${
KUBECTL
}
delete namespace
"
${
TEST_NAMESPACE
}
"
for
svc
in
"
${
svcs_to_clean
[@]
:+
${
svcs_to_clean
[@]
}}
"
;
do
}
stop_service
"
${
svc
}
"
done
function
make_namespace
()
{
echo
"Making namespace '
${
TEST_NAMESPACE
}
'"
${
KUBECTL
}
create
-f
-
<<
__EOF__
{
"kind": "Namespace",
"apiVersion": "v1beta3",
"metadata": {
"name": "
${
TEST_NAMESPACE
}
"
}
}
__EOF__
}
}
# Args:
# Args:
...
@@ -70,7 +85,7 @@ function do_teardown() {
...
@@ -70,7 +85,7 @@ function do_teardown() {
# $3: service replica count
# $3: service replica count
# $4: public IPs (optional, string e.g. "1.2.3.4 5.6.7.8")
# $4: public IPs (optional, string e.g. "1.2.3.4 5.6.7.8")
function
start_service
()
{
function
start_service
()
{
echo
"Starting service '
$1
' on port
$2
with
$3
replicas"
echo
"Starting service '
$
{
TEST_NAMESPACE
}
/
$
1
' on port
$2
with
$3
replicas"
svcs_to_clean+
=(
"
$1
"
)
svcs_to_clean+
=(
"
$1
"
)
${
KUBECTL
}
create
-f
-
<<
__EOF__
${
KUBECTL
}
create
-f
-
<<
__EOF__
{
{
...
@@ -78,7 +93,6 @@ function start_service() {
...
@@ -78,7 +93,6 @@ function start_service() {
"apiVersion": "v1beta3",
"apiVersion": "v1beta3",
"metadata": {
"metadata": {
"name": "
$1
",
"name": "
$1
",
"namespace": "default",
"labels": {
"labels": {
"name": "
$1
"
"name": "
$1
"
}
}
...
@@ -124,7 +138,6 @@ __EOF__
...
@@ -124,7 +138,6 @@ __EOF__
"apiVersion": "v1beta3",
"apiVersion": "v1beta3",
"metadata": {
"metadata": {
"name": "
$1
",
"name": "
$1
",
"namespace": "default",
"labels": {
"labels": {
"name": "
$1
"
"name": "
$1
"
}
}
...
@@ -218,30 +231,28 @@ function wait_for_pods() {
...
@@ -218,30 +231,28 @@ function wait_for_pods() {
# $2: service IP
# $2: service IP
# $3: service port
# $3: service port
# $4: pod count
# $4: pod count
# $5: pod IDs
# $5: pod IDs
(sorted)
function
wait_for_service_up
()
{
function
wait_for_service_up
()
{
local
i
local
i
local
found_pods
local
found_pods
for
i
in
$(
seq
1 20
)
;
do
echo
"waiting for
$1
at
$2
:
$3
"
for
i
in
$(
seq
1 5
)
;
do
results
=(
$(
ssh-to-node
"
${
test_node
}
"
"
results
=(
$(
ssh-to-node
"
${
test_node
}
"
"
set -e;
set -e;
for i in
$(
seq
-s
' '
1
$
4
)
; do
for i in
$(
seq
-s
' '
1
$
((
$4
*
3
))
)
; do
curl -s --connect-timeout 1 http://
$2
:
$3
;
curl -s --connect-timeout 1 http://
$2
:
$3
;
echo;
echo;
done | sort | uniq
done | sort
-n
| uniq
"
)
)
"
)
)
found_pods
=
$(
sort_args
"
${
results
[@]
:+
${
results
[@]
}}
"
)
found_pods
=
$(
sort_args
"
${
results
[@]
:+
${
results
[@]
}}
"
)
echo
"Checking if
${
found_pods
}
==
${
5
}
"
if
[[
"
${
found_pods
}
"
==
"
$5
"
]]
;
then
if
[[
"
${
found_pods
}
"
==
"
$5
"
]]
;
then
break
return
fi
fi
echo
"
Waiting for endpoints to propagate
"
echo
"
expected '
$5
', got '
${
found_pods
}
': will try again
"
sleep
3
sleep
3
# wait for endpoints to propagate
done
done
if
[[
"
${
found_pods
}
"
!=
"
$5
"
]]
;
then
error
"
$1
: failed to verify portal from host"
error
"Endpoints did not propagate in time"
fi
}
}
# Args:
# Args:
...
@@ -264,35 +275,26 @@ function wait_for_service_down() {
...
@@ -264,35 +275,26 @@ function wait_for_service_down() {
# $2: service IP
# $2: service IP
# $3: service port
# $3: service port
# $4: pod count
# $4: pod count
# $5: pod IDs
# $5: pod IDs
(sorted)
function
verify_from_container
()
{
function
verify_from_container
()
{
echo
"waiting for
$1
at
$2
:
$3
"
results
=(
$(
ssh-to-node
"
${
test_node
}
"
"
results
=(
$(
ssh-to-node
"
${
test_node
}
"
"
set -e;
set -e;
sudo docker pull busybox >/dev/null;
sudo docker pull busybox >/dev/null;
sudo docker run busybox sh -c '
sudo docker run busybox sh -c '
for i in
$(
seq
-s
' '
1
$4
)
; do
for i in
$(
seq
-s
' '
1
$((
$4
*
3
)))
; do
ok=false
if wget -q -T 3 -O - http://
$2
:
$3
; then
for j in
$(
seq
-s
' '
1 10
)
; do
echo
if wget -q -T 5 -O - http://
$2
:
$3
; then
else
echo
ok=true
break
fi
sleep 1
done
if [[
\$
{ok} == false ]]; then
exit 1
exit 1
fi
fi
done
done
'"
)
)
\
'"
|
sort
-r
-n
|
uniq
)
)
\
||
error
"testing
$1
VIP from container failed"
||
error
"testing
$1
VIP from container failed"
found_pods
=
$(
sort_args
"
${
results
[@]
}
"
)
found_pods
=
$(
sort_args
"
${
results
[@]
}
"
)
if
[[
"
${
found_pods
}
"
!=
"
$5
"
]]
;
then
if
[[
"
${
found_pods
}
"
!=
"
$5
"
]]
;
then
error
-e
"
$1
VIP failed from container, expected:
\n
echo
"expected '
$5
', got '
${
found_pods
}
'"
$(
printf
'\t%s\n'
$5
)
\n
error
"
$1
: failed to verify VIP from container"
got:
\n
$(
printf
'\t%s\n'
${
found_pods
})
"
fi
fi
}
}
...
@@ -303,14 +305,17 @@ detect-minions
...
@@ -303,14 +305,17 @@ detect-minions
test_node
=
"
${
MINION_NAMES
[0]
}
"
test_node
=
"
${
MINION_NAMES
[0]
}
"
master
=
"
${
MASTER_NAME
}
"
master
=
"
${
MASTER_NAME
}
"
# Make our namespace
make_namespace
# Launch some pods and services.
# Launch some pods and services.
svc1_name
=
"service
-
${
RANDOM
}
"
svc1_name
=
"service
1
"
svc1_port
=
80
svc1_port
=
80
svc1_count
=
3
svc1_count
=
3
svc1_publics
=
"192.168.1.1 192.168.1.2"
svc1_publics
=
"192.168.1.1 192.168.1.2"
start_service
"
${
svc1_name
}
"
"
${
svc1_port
}
"
"
${
svc1_count
}
"
"
${
svc1_publics
}
"
start_service
"
${
svc1_name
}
"
"
${
svc1_port
}
"
"
${
svc1_count
}
"
"
${
svc1_publics
}
"
svc2_name
=
"service
-
${
RANDOM
}
"
svc2_name
=
"service
2
"
svc2_port
=
80
svc2_port
=
80
svc2_count
=
3
svc2_count
=
3
start_service
"
${
svc2_name
}
"
"
${
svc2_port
}
"
"
${
svc2_count
}
"
start_service
"
${
svc2_name
}
"
"
${
svc2_port
}
"
"
${
svc2_count
}
"
...
@@ -414,7 +419,6 @@ echo "Manually removing iptables rules"
...
@@ -414,7 +419,6 @@ echo "Manually removing iptables rules"
# Remove both the new and old style chains, in case we're testing on an old kubelet
# Remove both the new and old style chains, in case we're testing on an old kubelet
ssh-to-node
"
${
test_node
}
"
"sudo iptables -t nat -F KUBE-PORTALS-HOST || true"
ssh-to-node
"
${
test_node
}
"
"sudo iptables -t nat -F KUBE-PORTALS-HOST || true"
ssh-to-node
"
${
test_node
}
"
"sudo iptables -t nat -F KUBE-PORTALS-CONTAINER || true"
ssh-to-node
"
${
test_node
}
"
"sudo iptables -t nat -F KUBE-PORTALS-CONTAINER || true"
ssh-to-node
"
${
test_node
}
"
"sudo iptables -t nat -F KUBE-PROXY || true"
echo
"Verifying the VIPs from the host"
echo
"Verifying the VIPs from the host"
wait_for_service_up
"
${
svc3_name
}
"
"
${
svc3_ip
}
"
"
${
svc3_port
}
"
\
wait_for_service_up
"
${
svc3_name
}
"
"
${
svc3_ip
}
"
"
${
svc3_port
}
"
\
"
${
svc3_count
}
"
"
${
svc3_pods
}
"
"
${
svc3_count
}
"
"
${
svc3_pods
}
"
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment