mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-08-01 15:58:37 +00:00
Merge pull request #6655 from yujuhong/parallel_tests
Limit the number of concurrent tests in integration.go
This commit is contained in:
commit
0f4f6cce1a
@ -24,7 +24,7 @@ install:
|
|||||||
script:
|
script:
|
||||||
- KUBE_RACE="-race" KUBE_COVER="y" KUBE_GOVERALLS_BIN="$HOME/gopath/bin/goveralls" KUBE_TIMEOUT='-timeout 300s' KUBE_COVERPROCS=8 KUBE_TEST_API_VERSIONS=$KUBE_TEST_API_VERSIONS ./hack/test-go.sh -- -p=2
|
- KUBE_RACE="-race" KUBE_COVER="y" KUBE_GOVERALLS_BIN="$HOME/gopath/bin/goveralls" KUBE_TIMEOUT='-timeout 300s' KUBE_COVERPROCS=8 KUBE_TEST_API_VERSIONS=$KUBE_TEST_API_VERSIONS ./hack/test-go.sh -- -p=2
|
||||||
- PATH=$HOME/gopath/bin:./third_party/etcd:$PATH ./hack/test-cmd.sh
|
- PATH=$HOME/gopath/bin:./third_party/etcd:$PATH ./hack/test-cmd.sh
|
||||||
- PATH=$HOME/gopath/bin:./third_party/etcd:$PATH KUBE_TEST_API_VERSIONS=$KUBE_TEST_API_VERSIONS ./hack/test-integration.sh
|
- PATH=$HOME/gopath/bin:./third_party/etcd:$PATH KUBE_TEST_API_VERSIONS=$KUBE_TEST_API_VERSIONS KUBE_INTEGRATION_TEST_MAX_CONCURRENCY=4 ./hack/test-integration.sh
|
||||||
|
|
||||||
notifications:
|
notifications:
|
||||||
irc: "chat.freenode.net#google-containers"
|
irc: "chat.freenode.net#google-containers"
|
||||||
|
@ -67,6 +67,8 @@ var (
|
|||||||
fakeDocker1, fakeDocker2 dockertools.FakeDockerClient
|
fakeDocker1, fakeDocker2 dockertools.FakeDockerClient
|
||||||
// API version that should be used by the client to talk to the server.
|
// API version that should be used by the client to talk to the server.
|
||||||
apiVersion string
|
apiVersion string
|
||||||
|
// Limit the number of concurrent tests.
|
||||||
|
maxConcurrency int
|
||||||
)
|
)
|
||||||
|
|
||||||
type fakeKubeletClient struct{}
|
type fakeKubeletClient struct{}
|
||||||
@ -947,6 +949,8 @@ type testFunc func(*client.Client)
|
|||||||
|
|
||||||
func addFlags(fs *pflag.FlagSet) {
|
func addFlags(fs *pflag.FlagSet) {
|
||||||
fs.StringVar(&apiVersion, "apiVersion", latest.Version, "API version that should be used by the client for communicating with the server")
|
fs.StringVar(&apiVersion, "apiVersion", latest.Version, "API version that should be used by the client for communicating with the server")
|
||||||
|
fs.IntVar(
|
||||||
|
&maxConcurrency, "maxConcurrency", -1, "Maximum number of tests to be run simultaneously. Unlimited if set to negative.")
|
||||||
}
|
}
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
@ -994,16 +998,26 @@ func main() {
|
|||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
var wg sync.WaitGroup
|
// Only run at most maxConcurrency tests in parallel.
|
||||||
wg.Add(len(testFuncs))
|
numFinishedTests := 0
|
||||||
for i := range testFuncs {
|
for numFinishedTests < len(testFuncs) {
|
||||||
f := testFuncs[i]
|
numTestsToRun := len(testFuncs) - numFinishedTests
|
||||||
go func() {
|
if maxConcurrency > 0 && numTestsToRun > maxConcurrency {
|
||||||
f(kubeClient)
|
numTestsToRun = maxConcurrency
|
||||||
wg.Done()
|
}
|
||||||
}()
|
glog.Infof("Running %d tests in parallel.", numTestsToRun)
|
||||||
|
var wg sync.WaitGroup
|
||||||
|
wg.Add(numTestsToRun)
|
||||||
|
for i := 0; i < numTestsToRun; i++ {
|
||||||
|
f := testFuncs[i+numFinishedTests]
|
||||||
|
go func() {
|
||||||
|
f(kubeClient)
|
||||||
|
wg.Done()
|
||||||
|
}()
|
||||||
|
}
|
||||||
|
wg.Wait()
|
||||||
|
numFinishedTests += numTestsToRun
|
||||||
}
|
}
|
||||||
wg.Wait()
|
|
||||||
|
|
||||||
// Check that kubelet tried to make the containers.
|
// Check that kubelet tried to make the containers.
|
||||||
// Using a set to list unique creation attempts. Our fake is
|
// Using a set to list unique creation attempts. Our fake is
|
||||||
|
@ -26,7 +26,7 @@ KUBE_ROOT=$(dirname "${BASH_SOURCE}")/..
|
|||||||
source "${KUBE_ROOT}/hack/lib/init.sh"
|
source "${KUBE_ROOT}/hack/lib/init.sh"
|
||||||
# Comma separated list of API Versions that should be tested.
|
# Comma separated list of API Versions that should be tested.
|
||||||
KUBE_TEST_API_VERSIONS=${KUBE_TEST_API_VERSIONS:-"v1beta1,v1beta3"}
|
KUBE_TEST_API_VERSIONS=${KUBE_TEST_API_VERSIONS:-"v1beta1,v1beta3"}
|
||||||
|
KUBE_INTEGRATION_TEST_MAX_CONCURRENCY=${KUBE_INTEGRATION_TEST_MAX_CONCURRENCY:-"-1"}
|
||||||
|
|
||||||
cleanup() {
|
cleanup() {
|
||||||
kube::etcd::cleanup
|
kube::etcd::cleanup
|
||||||
@ -44,7 +44,8 @@ runTests() {
|
|||||||
|
|
||||||
kube::log::status "Running integration test scenario"
|
kube::log::status "Running integration test scenario"
|
||||||
|
|
||||||
"${KUBE_OUTPUT_HOSTBIN}/integration" --v=2 --apiVersion="$1"
|
"${KUBE_OUTPUT_HOSTBIN}/integration" --v=2 --apiVersion="$1" \
|
||||||
|
--maxConcurrency="${KUBE_INTEGRATION_TEST_MAX_CONCURRENCY}"
|
||||||
|
|
||||||
cleanup
|
cleanup
|
||||||
}
|
}
|
||||||
|
@ -33,7 +33,7 @@ install:
|
|||||||
script:
|
script:
|
||||||
- KUBE_RACE="-race" KUBE_COVER="y" KUBE_GOVERALLS_BIN="$HOME/gopath/bin/goveralls" KUBE_TIMEOUT='-timeout 300s' KUBE_COVERPROCS=8 KUBE_TEST_API_VERSIONS=$KUBE_TEST_API_VERSIONS ./hack/test-go.sh -- -p=2
|
- KUBE_RACE="-race" KUBE_COVER="y" KUBE_GOVERALLS_BIN="$HOME/gopath/bin/goveralls" KUBE_TIMEOUT='-timeout 300s' KUBE_COVERPROCS=8 KUBE_TEST_API_VERSIONS=$KUBE_TEST_API_VERSIONS ./hack/test-go.sh -- -p=2
|
||||||
- PATH=$HOME/gopath/bin:./third_party/etcd:$PATH ./hack/test-cmd.sh
|
- PATH=$HOME/gopath/bin:./third_party/etcd:$PATH ./hack/test-cmd.sh
|
||||||
- PATH=$HOME/gopath/bin:./third_party/etcd:$PATH KUBE_TEST_API_VERSIONS=$KUBE_TEST_API_VERSIONS ./hack/test-integration.sh
|
- PATH=$HOME/gopath/bin:./third_party/etcd:$PATH KUBE_TEST_API_VERSIONS=$KUBE_TEST_API_VERSIONS KUBE_INTEGRATION_TEST_MAX_CONCURRENCY=4 ./hack/test-integration.sh
|
||||||
|
|
||||||
notifications:
|
notifications:
|
||||||
irc: "chat.freenode.net#google-containers"
|
irc: "chat.freenode.net#google-containers"
|
||||||
|
Loading…
Reference in New Issue
Block a user