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
9d48c763
Commit
9d48c763
authored
Jul 18, 2016
by
Random-Liu
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Make the node e2e test run in parallel.
parent
17e31bac
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
105 additions
and
46 deletions
+105
-46
e2e-node-tests.md
docs/devel/e2e-node-tests.md
+12
-0
test-e2e-node.sh
hack/make-rules/test-e2e-node.sh
+27
-15
e2e_node_suite_test.go
test/e2e_node/e2e_node_suite_test.go
+44
-11
e2e_service.go
test/e2e_node/e2e_service.go
+10
-9
e2e-node-jenkins.sh
test/e2e_node/jenkins/e2e-node-jenkins.sh
+2
-1
mirror_pod_test.go
test/e2e_node/mirror_pod_test.go
+6
-10
util.go
test/e2e_node/util.go
+4
-0
No files found.
docs/devel/e2e-node-tests.md
View file @
9d48c763
...
@@ -205,6 +205,18 @@ less useful for catching flakes related creating the instance from an image.**
...
@@ -205,6 +205,18 @@ less useful for catching flakes related creating the instance from an image.**
make test-e2e-node
REMOTE
=
true
RUN_UNTIL_FAILURE
=
true
make test-e2e-node
REMOTE
=
true
RUN_UNTIL_FAILURE
=
true
```
```
## Run tests in parallel
Running test in parallel can usually shorten the test duration. By default node
e2e test runs with
`--nodes=8`
(see ginkgo flag
[
--nodes
](
https://onsi.github.io/ginkgo/#parallel-specs
)
). You can use the
`PARALLELISM`
option to change the parallelism.
```
sh
make test-e2e-node
PARALLELISM
=
4
# run test with 4 parallel nodes
make test-e2e-node
PARALLELISM
=
1
# run test sequentially
```
## Run tests with kubenet network plugin
## Run tests with kubenet network plugin
[
kubenet
](
http://kubernetes.io/docs/admin/network-plugins/#kubenet
)
is
[
kubenet
](
http://kubernetes.io/docs/admin/network-plugins/#kubenet
)
is
...
...
hack/make-rules/test-e2e-node.sh
View file @
9d48c763
...
@@ -19,6 +19,13 @@ source "${KUBE_ROOT}/hack/lib/init.sh"
...
@@ -19,6 +19,13 @@ source "${KUBE_ROOT}/hack/lib/init.sh"
focus
=
${
FOCUS
:-
""
}
focus
=
${
FOCUS
:-
""
}
skip
=
${
SKIP
:-
""
}
skip
=
${
SKIP
:-
""
}
# The number of tests that can run in parallel depends on what tests
# are running and on the size of the node. Too many, and tests will
# fail due to resource contention. 8 is a reasonable default for a
# n1-standard-1 node.
# Currently, parallelism only affects when REMOTE=true. For local test,
# ginkgo default parallelism (cores - 1) is used.
parallelism
=
${
PARALLELISM
:-
8
}
report
=
${
REPORT
:-
"/tmp/"
}
report
=
${
REPORT
:-
"/tmp/"
}
artifacts
=
${
ARTIFACTS
:-
"/tmp/_artifacts"
}
artifacts
=
${
ARTIFACTS
:-
"/tmp/_artifacts"
}
remote
=
${
REMOTE
:-
"false"
}
remote
=
${
REMOTE
:-
"false"
}
...
@@ -46,6 +53,25 @@ if [[ -z "${ginkgo}" ]]; then
...
@@ -46,6 +53,25 @@ if [[ -z "${ginkgo}" ]]; then
exit
1
exit
1
fi
fi
# Parse the flags to pass to ginkgo
ginkgoflags
=
""
if
[[
$parallelism
>
1
]]
;
then
ginkgoflags
=
"
$ginkgoflags
-nodes=
$parallelism
"
fi
if
[[
$focus
!=
""
]]
;
then
ginkgoflags
=
"
$ginkgoflags
-focus=
$focus
"
fi
if
[[
$skip
!=
""
]]
;
then
ginkgoflags
=
"
$ginkgoflags
-skip=
$skip
"
fi
if
[[
$run_until_failure
!=
""
]]
;
then
ginkgoflags
=
"
$ginkgoflags
-untilItFails=
$run_until_failure
"
fi
if
[
$remote
=
true
]
;
then
if
[
$remote
=
true
]
;
then
# Setup the directory to copy test artifacts (logs, junit.xml, etc) from remote host to local host
# Setup the directory to copy test artifacts (logs, junit.xml, etc) from remote host to local host
if
[
!
-d
"
${
artifacts
}
"
]
;
then
if
[
!
-d
"
${
artifacts
}
"
]
;
then
...
@@ -89,20 +115,6 @@ if [ $remote = true ] ; then
...
@@ -89,20 +115,6 @@ if [ $remote = true ] ; then
done
done
fi
fi
# Parse the flags to pass to ginkgo
ginkgoflags
=
""
if
[[
$focus
!=
""
]]
;
then
ginkgoflags
=
"
$ginkgoflags
-focus=
$focus
"
fi
if
[[
$skip
!=
""
]]
;
then
ginkgoflags
=
"
$ginkgoflags
-skip=
$skip
"
fi
if
[[
$run_until_failure
!=
""
]]
;
then
ginkgoflags
=
"
$ginkgoflags
-untilItFails=
$run_until_failure
"
fi
# Output the configuration we will try to run
# Output the configuration we will try to run
echo
"Running tests remotely using"
echo
"Running tests remotely using"
echo
"Project:
$project
"
echo
"Project:
$project
"
...
@@ -133,7 +145,7 @@ else
...
@@ -133,7 +145,7 @@ else
fi
fi
# Test using the host the script was run on
# Test using the host the script was run on
# Provided for backwards compatibility
# Provided for backwards compatibility
"
${
ginkgo
}
"
--focus
=
$focus
--skip
=
$skip
"
${
KUBE_ROOT
}
/test/e2e_node/"
--report-dir
=
${
report
}
\
"
${
ginkgo
}
"
$ginkgoflags
"
${
KUBE_ROOT
}
/test/e2e_node/"
--report-dir
=
${
report
}
\
--
--alsologtostderr
--v
2
--node-name
$(
hostname
)
--build-services
=
true
\
--
--alsologtostderr
--v
2
--node-name
$(
hostname
)
--build-services
=
true
\
--start-services
=
true
--stop-services
=
true
$test_args
--start-services
=
true
--stop-services
=
true
$test_args
exit
$?
exit
$?
...
...
test/e2e_node/e2e_node_suite_test.go
View file @
9d48c763
...
@@ -20,6 +20,7 @@ package e2e_node
...
@@ -20,6 +20,7 @@ package e2e_node
import
(
import
(
"bytes"
"bytes"
"encoding/json"
"flag"
"flag"
"fmt"
"fmt"
"io/ioutil"
"io/ioutil"
...
@@ -27,7 +28,6 @@ import (
...
@@ -27,7 +28,6 @@ import (
"os"
"os"
"os/exec"
"os/exec"
"path"
"path"
"strings"
"testing"
"testing"
"time"
"time"
...
@@ -48,6 +48,27 @@ import (
...
@@ -48,6 +48,27 @@ import (
var
e2es
*
e2eService
var
e2es
*
e2eService
// context is the test context shared by all parallel nodes.
// Originally we setup the test environment and initialize global variables
// in BeforeSuite, and then used the global variables in the test.
// However, after we make the test parallel, ginkgo will run all tests
// in several parallel test nodes. And for each test node, the BeforeSuite
// and AfterSuite will be run.
// We don't want to start services (kubelet, apiserver and etcd) for all
// parallel nodes, but we do want to set some globally shared variable which
// could be used in test.
// We have to use SynchronizedBeforeSuite to achieve that. The first
// function of SynchronizedBeforeSuite is only called once, and the second
// function is called in each parallel test node. The result returned by
// the first function will be the parameter of the second function.
// So we'll start all services and initialize the shared context in the first
// function, and propagate the context to all parallel test nodes in the
// second function.
// Notice no lock is needed for shared context, because context should only be
// initialized in the first function in SynchronizedBeforeSuite. After that
// it should never be modified.
var
context
SharedContext
var
prePullImages
=
flag
.
Bool
(
"prepull-images"
,
true
,
"If true, prepull images so image pull failures do not cause test failures."
)
var
prePullImages
=
flag
.
Bool
(
"prepull-images"
,
true
,
"If true, prepull images so image pull failures do not cause test failures."
)
var
junitFileNumber
=
flag
.
Int
(
"junit-file-number"
,
1
,
"Used to create junit filename - e.g. junit_01.xml."
)
var
junitFileNumber
=
flag
.
Int
(
"junit-file-number"
,
1
,
"Used to create junit filename - e.g. junit_01.xml."
)
...
@@ -77,17 +98,10 @@ func TestE2eNode(t *testing.T) {
...
@@ -77,17 +98,10 @@ func TestE2eNode(t *testing.T) {
}
}
// Setup the kubelet on the node
// Setup the kubelet on the node
var
_
=
BeforeSuite
(
func
()
{
var
_
=
SynchronizedBeforeSuite
(
func
()
[]
byte
{
if
*
buildServices
{
if
*
buildServices
{
buildGo
()
buildGo
()
}
}
if
framework
.
TestContext
.
NodeName
==
""
{
output
,
err
:=
exec
.
Command
(
"hostname"
)
.
CombinedOutput
()
if
err
!=
nil
{
glog
.
Fatalf
(
"Could not get node name from hostname %v. Output:
\n
%s"
,
err
,
output
)
}
framework
.
TestContext
.
NodeName
=
strings
.
TrimSpace
(
fmt
.
Sprintf
(
"%s"
,
output
))
}
// Pre-pull the images tests depend on so we can fail immediately if there is an image pull issue
// Pre-pull the images tests depend on so we can fail immediately if there is an image pull issue
// This helps with debugging test flakes since it is hard to tell when a test failure is due to image pulling.
// This helps with debugging test flakes since it is hard to tell when a test failure is due to image pulling.
...
@@ -102,8 +116,9 @@ var _ = BeforeSuite(func() {
...
@@ -102,8 +116,9 @@ var _ = BeforeSuite(func() {
// We should mask locksmithd when provisioning the machine.
// We should mask locksmithd when provisioning the machine.
maskLocksmithdOnCoreos
()
maskLocksmithdOnCoreos
()
shared
:=
&
SharedContext
{}
if
*
startServices
{
if
*
startServices
{
e2es
=
newE2eService
(
framework
.
TestContext
.
NodeName
,
framework
.
TestContext
.
CgroupsPerQOS
)
e2es
=
newE2eService
(
framework
.
TestContext
.
NodeName
,
framework
.
TestContext
.
CgroupsPerQOS
,
shared
)
if
err
:=
e2es
.
start
();
err
!=
nil
{
if
err
:=
e2es
.
start
();
err
!=
nil
{
Fail
(
fmt
.
Sprintf
(
"Unable to start node services.
\n
%v"
,
err
))
Fail
(
fmt
.
Sprintf
(
"Unable to start node services.
\n
%v"
,
err
))
}
}
...
@@ -117,10 +132,28 @@ var _ = BeforeSuite(func() {
...
@@ -117,10 +132,28 @@ var _ = BeforeSuite(func() {
// Reference common test to make the import valid.
// Reference common test to make the import valid.
commontest
.
CurrentSuite
=
commontest
.
NodeE2E
commontest
.
CurrentSuite
=
commontest
.
NodeE2E
data
,
err
:=
json
.
Marshal
(
shared
)
Expect
(
err
)
.
NotTo
(
HaveOccurred
())
return
data
},
func
(
data
[]
byte
)
{
// Set the shared context got from the synchronized initialize function
shared
:=
&
SharedContext
{}
Expect
(
json
.
Unmarshal
(
data
,
shared
))
.
To
(
Succeed
())
context
=
*
shared
if
framework
.
TestContext
.
NodeName
==
""
{
hostname
,
err
:=
os
.
Hostname
()
if
err
!=
nil
{
glog
.
Fatalf
(
"Could not get node name: %v"
,
err
)
}
framework
.
TestContext
.
NodeName
=
hostname
}
})
})
// Tear down the kubelet on the node
// Tear down the kubelet on the node
var
_
=
AfterSuite
(
func
()
{
var
_
=
SynchronizedAfterSuite
(
func
()
{},
func
()
{
if
e2es
!=
nil
{
if
e2es
!=
nil
{
e2es
.
getLogFiles
()
e2es
.
getLogFiles
()
if
*
startServices
&&
*
stopServices
{
if
*
startServices
&&
*
stopServices
{
...
...
test/e2e_node/e2e_service.go
View file @
9d48c763
...
@@ -42,11 +42,11 @@ type e2eService struct {
...
@@ -42,11 +42,11 @@ type e2eService struct {
killCmds
[]
*
killCmd
killCmds
[]
*
killCmd
rmDirs
[]
string
rmDirs
[]
string
etcdDataDir
string
context
*
SharedContext
kubeletStaticPodDir
string
etcdDataDir
string
nodeName
string
nodeName
string
logFiles
map
[
string
]
logFileData
logFiles
map
[
string
]
logFileData
cgroupsPerQOS
bool
cgroupsPerQOS
bool
}
}
type
logFileData
struct
{
type
logFileData
struct
{
...
@@ -59,7 +59,7 @@ const (
...
@@ -59,7 +59,7 @@ const (
LOG_VERBOSITY_LEVEL
=
"4"
LOG_VERBOSITY_LEVEL
=
"4"
)
)
func
newE2eService
(
nodeName
string
,
cgroupsPerQOS
bool
)
*
e2eService
{
func
newE2eService
(
nodeName
string
,
cgroupsPerQOS
bool
,
context
*
SharedContext
)
*
e2eService
{
// Special log files that need to be collected for additional debugging.
// Special log files that need to be collected for additional debugging.
var
logFiles
=
map
[
string
]
logFileData
{
var
logFiles
=
map
[
string
]
logFileData
{
"kern.log"
:
{[]
string
{
"/var/log/kern.log"
},
[]
string
{
"-k"
}},
"kern.log"
:
{[]
string
{
"/var/log/kern.log"
},
[]
string
{
"-k"
}},
...
@@ -67,6 +67,7 @@ func newE2eService(nodeName string, cgroupsPerQOS bool) *e2eService {
...
@@ -67,6 +67,7 @@ func newE2eService(nodeName string, cgroupsPerQOS bool) *e2eService {
}
}
return
&
e2eService
{
return
&
e2eService
{
context
:
context
,
nodeName
:
nodeName
,
nodeName
:
nodeName
,
logFiles
:
logFiles
,
logFiles
:
logFiles
,
cgroupsPerQOS
:
cgroupsPerQOS
,
cgroupsPerQOS
:
cgroupsPerQOS
,
...
@@ -99,7 +100,7 @@ func (es *e2eService) start() error {
...
@@ -99,7 +100,7 @@ func (es *e2eService) start() error {
return
err
return
err
}
}
es
.
killCmds
=
append
(
es
.
killCmds
,
cmd
)
es
.
killCmds
=
append
(
es
.
killCmds
,
cmd
)
es
.
rmDirs
=
append
(
es
.
rmDirs
,
es
.
kubeletStaticPodDir
)
es
.
rmDirs
=
append
(
es
.
rmDirs
,
es
.
context
.
PodConfigPath
)
return
nil
return
nil
}
}
...
@@ -211,7 +212,7 @@ func (es *e2eService) startKubeletServer() (*killCmd, error) {
...
@@ -211,7 +212,7 @@ func (es *e2eService) startKubeletServer() (*killCmd, error) {
if
err
!=
nil
{
if
err
!=
nil
{
return
nil
,
err
return
nil
,
err
}
}
es
.
kubeletStaticPodDir
=
dataDir
es
.
context
.
PodConfigPath
=
dataDir
var
killOverride
*
exec
.
Cmd
var
killOverride
*
exec
.
Cmd
cmdArgs
:=
[]
string
{}
cmdArgs
:=
[]
string
{}
if
systemdRun
,
err
:=
exec
.
LookPath
(
"systemd-run"
);
err
==
nil
{
if
systemdRun
,
err
:=
exec
.
LookPath
(
"systemd-run"
);
err
==
nil
{
...
@@ -236,7 +237,7 @@ func (es *e2eService) startKubeletServer() (*killCmd, error) {
...
@@ -236,7 +237,7 @@ func (es *e2eService) startKubeletServer() (*killCmd, error) {
"--volume-stats-agg-period"
,
"10s"
,
// Aggregate volumes frequently so tests don't need to wait as long
"--volume-stats-agg-period"
,
"10s"
,
// Aggregate volumes frequently so tests don't need to wait as long
"--allow-privileged"
,
"true"
,
"--allow-privileged"
,
"true"
,
"--serialize-image-pulls"
,
"false"
,
"--serialize-image-pulls"
,
"false"
,
"--config"
,
es
.
kubeletStaticPodDir
,
"--config"
,
es
.
context
.
PodConfigPath
,
"--file-check-frequency"
,
"10s"
,
// Check file frequently so tests won't wait too long
"--file-check-frequency"
,
"10s"
,
// Check file frequently so tests won't wait too long
"--v"
,
LOG_VERBOSITY_LEVEL
,
"--logtostderr"
,
"--v"
,
LOG_VERBOSITY_LEVEL
,
"--logtostderr"
,
"--pod-cidr=10.180.0.0/24"
,
// Assign a fixed CIDR to the node because there is no node controller.
"--pod-cidr=10.180.0.0/24"
,
// Assign a fixed CIDR to the node because there is no node controller.
...
...
test/e2e_node/jenkins/e2e-node-jenkins.sh
View file @
9d48c763
...
@@ -31,6 +31,7 @@ set -x
...
@@ -31,6 +31,7 @@ set -x
make generated_files
make generated_files
go build
test
/e2e_node/environment/conformance.go
go build
test
/e2e_node/environment/conformance.go
PARALLELISM
=
${
PARALLELISM
:-
8
}
WORKSPACE
=
${
WORKSPACE
:-
"/tmp/"
}
WORKSPACE
=
${
WORKSPACE
:-
"/tmp/"
}
ARTIFACTS
=
${
WORKSPACE
}
/_artifacts
ARTIFACTS
=
${
WORKSPACE
}
/_artifacts
...
@@ -39,5 +40,5 @@ go run test/e2e_node/runner/run_e2e.go --logtostderr --vmodule=*=2 --ssh-env="g
...
@@ -39,5 +40,5 @@ go run test/e2e_node/runner/run_e2e.go --logtostderr --vmodule=*=2 --ssh-env="g
--zone
=
"
$GCE_ZONE
"
--project
=
"
$GCE_PROJECT
"
--hosts
=
"
$GCE_HOSTS
"
\
--zone
=
"
$GCE_ZONE
"
--project
=
"
$GCE_PROJECT
"
--hosts
=
"
$GCE_HOSTS
"
\
--images
=
"
$GCE_IMAGES
"
--image-project
=
"
$GCE_IMAGE_PROJECT
"
\
--images
=
"
$GCE_IMAGES
"
--image-project
=
"
$GCE_IMAGE_PROJECT
"
\
--image-config-file
=
"
$GCE_IMAGE_CONFIG_PATH
"
--cleanup
=
"
$CLEANUP
"
\
--image-config-file
=
"
$GCE_IMAGE_CONFIG_PATH
"
--cleanup
=
"
$CLEANUP
"
\
--results-dir
=
"
$ARTIFACTS
"
--ginkgo-flags
=
"
$GINKGO_FLAGS
"
\
--results-dir
=
"
$ARTIFACTS
"
--ginkgo-flags
=
"
--nodes=
$PARALLELISM
$GINKGO_FLAGS
"
\
--setup-node
=
"
$SETUP_NODE
"
--test_args
=
"
$TEST_ARGS
"
--instance-metadata
=
"
$GCE_INSTANCE_METADATA
"
--setup-node
=
"
$SETUP_NODE
"
--test_args
=
"
$TEST_ARGS
"
--instance-metadata
=
"
$GCE_INSTANCE_METADATA
"
test/e2e_node/mirror_pod_test.go
View file @
9d48c763
...
@@ -37,14 +37,14 @@ import (
...
@@ -37,14 +37,14 @@ import (
var
_
=
framework
.
KubeDescribe
(
"MirrorPod"
,
func
()
{
var
_
=
framework
.
KubeDescribe
(
"MirrorPod"
,
func
()
{
f
:=
framework
.
NewDefaultFramework
(
"mirror-pod"
)
f
:=
framework
.
NewDefaultFramework
(
"mirror-pod"
)
Context
(
"when create a mirror pod "
,
func
()
{
Context
(
"when create a mirror pod "
,
func
()
{
var
staticPodName
,
mirrorPodName
string
var
ns
,
staticPodName
,
mirrorPodName
string
BeforeEach
(
func
()
{
BeforeEach
(
func
()
{
ns
:
=
f
.
Namespace
.
Name
ns
=
f
.
Namespace
.
Name
staticPodName
=
"static-pod-"
+
string
(
util
.
NewUUID
())
staticPodName
=
"static-pod-"
+
string
(
util
.
NewUUID
())
mirrorPodName
=
staticPodName
+
"-"
+
e2es
.
n
odeName
mirrorPodName
=
staticPodName
+
"-"
+
framework
.
TestContext
.
N
odeName
By
(
"create the static pod"
)
By
(
"create the static pod"
)
err
:=
createStaticPod
(
e2es
.
kubeletStaticPodDir
,
staticPodName
,
ns
,
ImageRegistry
[
nginxImage
],
api
.
RestartPolicyAlways
)
err
:=
createStaticPod
(
context
.
PodConfigPath
,
staticPodName
,
ns
,
ImageRegistry
[
nginxImage
],
api
.
RestartPolicyAlways
)
Expect
(
err
)
.
ShouldNot
(
HaveOccurred
())
Expect
(
err
)
.
ShouldNot
(
HaveOccurred
())
By
(
"wait for the mirror pod to be running"
)
By
(
"wait for the mirror pod to be running"
)
...
@@ -53,7 +53,6 @@ var _ = framework.KubeDescribe("MirrorPod", func() {
...
@@ -53,7 +53,6 @@ var _ = framework.KubeDescribe("MirrorPod", func() {
},
2
*
time
.
Minute
,
time
.
Second
*
4
)
.
Should
(
BeNil
())
},
2
*
time
.
Minute
,
time
.
Second
*
4
)
.
Should
(
BeNil
())
})
})
It
(
"should be updated when static pod updated"
,
func
()
{
It
(
"should be updated when static pod updated"
,
func
()
{
ns
:=
f
.
Namespace
.
Name
By
(
"get mirror pod uid"
)
By
(
"get mirror pod uid"
)
pod
,
err
:=
f
.
Client
.
Pods
(
ns
)
.
Get
(
mirrorPodName
)
pod
,
err
:=
f
.
Client
.
Pods
(
ns
)
.
Get
(
mirrorPodName
)
Expect
(
err
)
.
ShouldNot
(
HaveOccurred
())
Expect
(
err
)
.
ShouldNot
(
HaveOccurred
())
...
@@ -61,7 +60,7 @@ var _ = framework.KubeDescribe("MirrorPod", func() {
...
@@ -61,7 +60,7 @@ var _ = framework.KubeDescribe("MirrorPod", func() {
By
(
"update the static pod container image"
)
By
(
"update the static pod container image"
)
image
:=
ImageRegistry
[
pauseImage
]
image
:=
ImageRegistry
[
pauseImage
]
err
=
createStaticPod
(
e2es
.
kubeletStaticPodDir
,
staticPodName
,
ns
,
image
,
api
.
RestartPolicyAlways
)
err
=
createStaticPod
(
context
.
PodConfigPath
,
staticPodName
,
ns
,
image
,
api
.
RestartPolicyAlways
)
Expect
(
err
)
.
ShouldNot
(
HaveOccurred
())
Expect
(
err
)
.
ShouldNot
(
HaveOccurred
())
By
(
"wait for the mirror pod to be updated"
)
By
(
"wait for the mirror pod to be updated"
)
...
@@ -76,7 +75,6 @@ var _ = framework.KubeDescribe("MirrorPod", func() {
...
@@ -76,7 +75,6 @@ var _ = framework.KubeDescribe("MirrorPod", func() {
Expect
(
pod
.
Spec
.
Containers
[
0
]
.
Image
)
.
Should
(
Equal
(
image
))
Expect
(
pod
.
Spec
.
Containers
[
0
]
.
Image
)
.
Should
(
Equal
(
image
))
})
})
It
(
"should be recreated when mirror pod gracefully deleted"
,
func
()
{
It
(
"should be recreated when mirror pod gracefully deleted"
,
func
()
{
ns
:=
f
.
Namespace
.
Name
By
(
"get mirror pod uid"
)
By
(
"get mirror pod uid"
)
pod
,
err
:=
f
.
Client
.
Pods
(
ns
)
.
Get
(
mirrorPodName
)
pod
,
err
:=
f
.
Client
.
Pods
(
ns
)
.
Get
(
mirrorPodName
)
Expect
(
err
)
.
ShouldNot
(
HaveOccurred
())
Expect
(
err
)
.
ShouldNot
(
HaveOccurred
())
...
@@ -92,7 +90,6 @@ var _ = framework.KubeDescribe("MirrorPod", func() {
...
@@ -92,7 +90,6 @@ var _ = framework.KubeDescribe("MirrorPod", func() {
},
2
*
time
.
Minute
,
time
.
Second
*
4
)
.
Should
(
BeNil
())
},
2
*
time
.
Minute
,
time
.
Second
*
4
)
.
Should
(
BeNil
())
})
})
It
(
"should be recreated when mirror pod forcibly deleted"
,
func
()
{
It
(
"should be recreated when mirror pod forcibly deleted"
,
func
()
{
ns
:=
f
.
Namespace
.
Name
By
(
"get mirror pod uid"
)
By
(
"get mirror pod uid"
)
pod
,
err
:=
f
.
Client
.
Pods
(
ns
)
.
Get
(
mirrorPodName
)
pod
,
err
:=
f
.
Client
.
Pods
(
ns
)
.
Get
(
mirrorPodName
)
Expect
(
err
)
.
ShouldNot
(
HaveOccurred
())
Expect
(
err
)
.
ShouldNot
(
HaveOccurred
())
...
@@ -108,9 +105,8 @@ var _ = framework.KubeDescribe("MirrorPod", func() {
...
@@ -108,9 +105,8 @@ var _ = framework.KubeDescribe("MirrorPod", func() {
},
2
*
time
.
Minute
,
time
.
Second
*
4
)
.
Should
(
BeNil
())
},
2
*
time
.
Minute
,
time
.
Second
*
4
)
.
Should
(
BeNil
())
})
})
AfterEach
(
func
()
{
AfterEach
(
func
()
{
ns
:=
f
.
Namespace
.
Name
By
(
"delete the static pod"
)
By
(
"delete the static pod"
)
err
:=
deleteStaticPod
(
e2es
.
kubeletStaticPodDir
,
staticPodName
,
ns
)
err
:=
deleteStaticPod
(
context
.
PodConfigPath
,
staticPodName
,
ns
)
Expect
(
err
)
.
ShouldNot
(
HaveOccurred
())
Expect
(
err
)
.
ShouldNot
(
HaveOccurred
())
By
(
"wait for the mirror pod to disappear"
)
By
(
"wait for the mirror pod to disappear"
)
...
...
test/e2e_node/util.go
View file @
9d48c763
...
@@ -26,3 +26,7 @@ var disableKubenet = flag.Bool("disable-kubenet", false, "If true, start kubelet
...
@@ -26,3 +26,7 @@ var disableKubenet = flag.Bool("disable-kubenet", false, "If true, start kubelet
var
buildServices
=
flag
.
Bool
(
"build-services"
,
true
,
"If true, build local executables"
)
var
buildServices
=
flag
.
Bool
(
"build-services"
,
true
,
"If true, build local executables"
)
var
startServices
=
flag
.
Bool
(
"start-services"
,
true
,
"If true, start local node services"
)
var
startServices
=
flag
.
Bool
(
"start-services"
,
true
,
"If true, start local node services"
)
var
stopServices
=
flag
.
Bool
(
"stop-services"
,
true
,
"If true, stop local node services after running tests"
)
var
stopServices
=
flag
.
Bool
(
"stop-services"
,
true
,
"If true, stop local node services after running tests"
)
type
SharedContext
struct
{
PodConfigPath
string
}
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