kubernetes/hack
Kubernetes Submit Queue 68d22a878d
Merge pull request #67971 from Katharine/coverage-instrumentation
Automatic merge from submit-queue. If you want to cherry-pick this change to another branch, please follow the instructions here: https://github.com/kubernetes/community/blob/master/contributors/devel/cherry-picks.md.

Add ability to build with runtime coverage instrumentation

**What this PR does / why we need it**:

This PR adds the ability to instrument a subset of kubernetes binaries to report code coverage information. The specific use-case is to help determine coverage of our end-to-end Conformance tests, as well as provide data that can be used to help determine where to focus. This PR focuses on making it possible to build with instrumentation; collecting and using the generated coverage data will be done in later PRs. For more details as to the intent, see the [design doc](https://docs.google.com/document/d/1FKMBFxz7vtA-6ZgUkA47F8m6yR00fwqLcXMVJqsHt0g/edit?usp=sharing) (google doc; requires kubernetes-dev membership).

Specifically, this PR adds a new `KUBE_BUILD_WITH_COVERAGE` make variable, which when set will cause `kube-apiserver`, `kube-controller-manager`, `kube-scheduler`, `kube-proxy` and `kubelet` to be built with coverage instrumentation. These coverage-instrumented binaries will flush coverage information to disk every five seconds, defaulting to a temporary directory unless the `KUBE_COVERAGE_FILE` environment variable is set at launch, in which case it will write to that file instead.

The mechanism used to achieve coverage instrumentation is to build the targeted binaries as "unit tests" with coverage enabled, and then rigging the unit tests to just execute the binary's usual entry point. This is implemented only for the bash build system.

/sig testing

```release-note
NONE
```
2018-09-01 01:32:52 -07:00
..
boilerplate Pick the first extension matched 2018-06-28 04:50:19 -03:00
e2e-internal Update all script to use /usr/bin/env bash in shebang 2018-04-19 13:20:13 +02:00
gen-swagger-doc Update all script to use /usr/bin/env bash in shebang 2018-04-19 13:20:13 +02:00
jenkins Update all script to use /usr/bin/env bash in shebang 2018-04-19 13:20:13 +02:00
lib Merge pull request #67971 from Katharine/coverage-instrumentation 2018-09-01 01:32:52 -07:00
make-rules Merge pull request #67816 from junxu/make_test_dirname_err 2018-08-26 15:51:14 -07:00
testdata add prototype sorting for table rows 2018-08-30 16:09:05 -04:00
verify-flags Add multi-vc configuration for e2e tests 2018-01-18 15:29:27 -08:00
.golint_failures Merge pull request #67756 from tizhou86/newPR1 2018-08-31 08:58:05 -07:00
.spelling_failures add spelling checking script 2018-02-23 09:33:14 +08:00
autogenerated_placeholder.txt
benchmark-go.sh Update all script to use /usr/bin/env bash in shebang 2018-04-19 13:20:13 +02:00
BUILD Merge pull request #62151 from thockin/build-cleanup-with-go-1-10 2018-04-23 22:45:24 -07:00
build-cross.sh Update all script to use /usr/bin/env bash in shebang 2018-04-19 13:20:13 +02:00
build-go.sh Update all script to use /usr/bin/env bash in shebang 2018-04-19 13:20:13 +02:00
build-ui.sh Update all script to use /usr/bin/env bash in shebang 2018-04-19 13:20:13 +02:00
cherry_pick_pull.sh Update all script to use /usr/bin/env bash in shebang 2018-04-19 13:20:13 +02:00
dev-build-and-push.sh Update all script to use /usr/bin/env bash in shebang 2018-04-19 13:20:13 +02:00
dev-build-and-up.sh Update all script to use /usr/bin/env bash in shebang 2018-04-19 13:20:13 +02:00
dev-push-hyperkube.sh
e2e_test.go translate hack/e2e.go -v to --verbose-commands 2018-03-07 11:27:56 -08:00
e2e-node-test.sh Update all script to use /usr/bin/env bash in shebang 2018-04-19 13:20:13 +02:00
e2e.go translate hack/e2e.go -v to --verbose-commands 2018-03-07 11:27:56 -08:00
generate-bindata.sh Merge pull request #62657 from matthyx/master 2018-05-02 19:44:32 -07:00
generate-docs.sh Update all script to use /usr/bin/env bash in shebang 2018-04-19 13:20:13 +02:00
get-build.sh Update all script to use /usr/bin/env bash in shebang 2018-04-19 13:20:13 +02:00
ginkgo-e2e.sh Merge pull request #62328 from serathius/monitoring-default-none 2018-05-16 07:07:05 -07:00
godep-restore.sh Update all script to use /usr/bin/env bash in shebang 2018-04-19 13:20:13 +02:00
godep-save.sh Require vendoring of cfssl binaries 2018-08-08 20:52:28 -07:00
grab-profiles.sh Update all script to use /usr/bin/env bash in shebang 2018-04-19 13:20:13 +02:00
import-restrictions.yaml Updated staging godeps, import restrictions and missing metadata files 2018-08-28 14:57:35 +02:00
install-etcd.sh Update all script to use /usr/bin/env bash in shebang 2018-04-19 13:20:13 +02:00
list-feature-tests.sh Update all script to use /usr/bin/env bash in shebang 2018-04-19 13:20:13 +02:00
local-up-cluster.sh Remove deprecated legacy audit logging code. 2018-08-23 12:08:54 +02:00
OWNERS Add spiffxp to OWNERS files in bash-heavy dirs 2018-08-31 14:01:16 -07:00
print-workspace-status.sh bazel: support using SOURCE_DATE_EPOCH to override date 2018-02-08 21:12:03 -08:00
run-in-gopath.sh Update all script to use /usr/bin/env bash in shebang 2018-04-19 13:20:13 +02:00
test-go.sh Update all script to use /usr/bin/env bash in shebang 2018-04-19 13:20:13 +02:00
test-integration.sh Update all script to use /usr/bin/env bash in shebang 2018-04-19 13:20:13 +02:00
test-update-storage-objects.sh Merge pull request #62657 from matthyx/master 2018-05-02 19:44:32 -07:00
update_owners.py remove some not used imports from python codes 2018-03-07 17:43:47 +08:00
update-all.sh Update all script to use /usr/bin/env bash in shebang 2018-04-19 13:20:13 +02:00
update-api-reference-docs.sh Update all script to use /usr/bin/env bash in shebang 2018-04-19 13:20:13 +02:00
update-bazel.sh Fix run-in-gopath issue with symlink'd gopath 2018-06-25 14:25:55 -07:00
update-cloudprovider-gce.sh Update all script to use /usr/bin/env bash in shebang 2018-04-19 13:20:13 +02:00
update-codegen.sh Add new csi-api repo to staging 2018-08-31 03:49:50 -07:00
update-generated-device-plugin-dockerized.sh Update all script to use /usr/bin/env bash in shebang 2018-04-19 13:20:13 +02:00
update-generated-device-plugin.sh Update all script to use /usr/bin/env bash in shebang 2018-04-19 13:20:13 +02:00
update-generated-docs.sh Update all script to use /usr/bin/env bash in shebang 2018-04-19 13:20:13 +02:00
update-generated-kms-dockerized.sh Update all script to use /usr/bin/env bash in shebang 2018-04-19 13:20:13 +02:00
update-generated-kms.sh Update all script to use /usr/bin/env bash in shebang 2018-04-19 13:20:13 +02:00
update-generated-kubelet-plugin-registration-dockerized.sh Add probe based mechanism for kubelet plugin discovery 2018-05-29 12:00:37 -04:00
update-generated-kubelet-plugin-registration.sh Add probe based mechanism for kubelet plugin discovery 2018-05-29 12:00:37 -04:00
update-generated-protobuf-dockerized.sh Add autoscaling/v2beta2 and custom_metrics/v1beta2 to necessary files 2018-08-27 11:07:52 -04:00
update-generated-protobuf.sh Update all script to use /usr/bin/env bash in shebang 2018-04-19 13:20:13 +02:00
update-generated-runtime-dockerized.sh Update all script to use /usr/bin/env bash in shebang 2018-04-19 13:20:13 +02:00
update-generated-runtime.sh Update all script to use /usr/bin/env bash in shebang 2018-04-19 13:20:13 +02:00
update-generated-swagger-docs.sh Update all script to use /usr/bin/env bash in shebang 2018-04-19 13:20:13 +02:00
update-godep-licenses.sh fix godep licenses for new root 2018-07-26 11:56:04 -04:00
update-gofmt.sh Update all script to use /usr/bin/env bash in shebang 2018-04-19 13:20:13 +02:00
update-openapi-spec.sh remove unused variable in openapi-spec script 2018-06-29 13:45:17 +08:00
update-staging-godeps-dockerized.sh Update all script to use /usr/bin/env bash in shebang 2018-04-19 13:20:13 +02:00
update-staging-godeps.sh Update all script to use /usr/bin/env bash in shebang 2018-04-19 13:20:13 +02:00
update-swagger-spec.sh Print error when APIServer fails to start 2018-06-27 09:59:41 -07:00
update-translations.sh Update all script to use /usr/bin/env bash in shebang 2018-04-19 13:20:13 +02:00
update-workspace-mirror.sh workspace mirror: add trailing newline to urls list 2018-05-07 16:52:20 -07:00
verify-all.sh Update all script to use /usr/bin/env bash in shebang 2018-04-19 13:20:13 +02:00
verify-api-groups.sh Remove references to 'pkg/apis/componentconfig/install' and fix inconsistencies 2018-08-09 18:45:27 +03:00
verify-api-reference-docs.sh Update all script to use /usr/bin/env bash in shebang 2018-04-19 13:20:13 +02:00
verify-bazel.sh Fully resolve tmpdir in verify scripts, since it might be a symlink on macOS 2018-04-06 16:37:19 -07:00
verify-boilerplate.sh Update all script to use /usr/bin/env bash in shebang 2018-04-19 13:20:13 +02:00
verify-cli-conventions.sh Update all script to use /usr/bin/env bash in shebang 2018-04-19 13:20:13 +02:00
verify-cloudprovider-gce.sh Update all script to use /usr/bin/env bash in shebang 2018-04-19 13:20:13 +02:00
verify-codegen.sh Add new csi-api repo to staging 2018-08-31 03:49:50 -07:00
verify-description.sh Update all script to use /usr/bin/env bash in shebang 2018-04-19 13:20:13 +02:00
verify-flags-underscore.py remove some not used imports from python codes 2018-03-07 17:43:47 +08:00
verify-generated-device-plugin.sh Update all script to use /usr/bin/env bash in shebang 2018-04-19 13:20:13 +02:00
verify-generated-docs.sh verify-generated-docs: Use exit code rather than comparison to empty string 2018-07-11 21:26:40 -07:00
verify-generated-files-remake.sh Use kube-openapi cmd in Make rules 2018-07-10 17:53:24 -07:00
verify-generated-files.sh verify-generated-files: ensure git tree is clean 2018-07-09 13:50:09 -07:00
verify-generated-kms.sh Update all script to use /usr/bin/env bash in shebang 2018-04-19 13:20:13 +02:00
verify-generated-kubelet-plugin-registration.sh Add probe based mechanism for kubelet plugin discovery 2018-05-29 12:00:37 -04:00
verify-generated-protobuf.sh Update all script to use /usr/bin/env bash in shebang 2018-04-19 13:20:13 +02:00
verify-generated-runtime.sh Update all script to use /usr/bin/env bash in shebang 2018-04-19 13:20:13 +02:00
verify-generated-swagger-docs.sh Update all script to use /usr/bin/env bash in shebang 2018-04-19 13:20:13 +02:00
verify-godep-licenses.sh Route verify-godep-licenses output to stderr 2018-02-07 21:45:02 -08:00
verify-godeps.sh Update all script to use /usr/bin/env bash in shebang 2018-04-19 13:20:13 +02:00
verify-gofmt.sh Update all script to use /usr/bin/env bash in shebang 2018-04-19 13:20:13 +02:00
verify-golint.sh Fix golint command to only pass a single *.go file at a time 2018-08-21 21:53:21 -07:00
verify-govet.sh Update all script to use /usr/bin/env bash in shebang 2018-04-19 13:20:13 +02:00
verify-import-boss.sh Update all script to use /usr/bin/env bash in shebang 2018-04-19 13:20:13 +02:00
verify-imports.sh Update all script to use /usr/bin/env bash in shebang 2018-04-19 13:20:13 +02:00
verify-linkcheck.sh Update all script to use /usr/bin/env bash in shebang 2018-04-19 13:20:13 +02:00
verify-no-vendor-cycles.sh Update all script to use /usr/bin/env bash in shebang 2018-04-19 13:20:13 +02:00
verify-openapi-spec.sh remove unused variable in openapi-spec script 2018-06-29 13:45:17 +08:00
verify-pkg-names.sh hack/verify-pkg-names.sh: remove k8s.io/metrics dirs 2018-07-02 10:44:18 +02:00
verify-readonly-packages.sh Update all script to use /usr/bin/env bash in shebang 2018-04-19 13:20:13 +02:00
verify-spelling.sh Update vendored tool go install location to use GOPATH 2018-06-25 15:45:14 -07:00
verify-staging-godeps.sh Update all script to use /usr/bin/env bash in shebang 2018-04-19 13:20:13 +02:00
verify-staging-meta-files.sh Add verify script for staging repo metadata files 2018-08-24 09:14:33 -04:00
verify-swagger-spec.sh Update all script to use /usr/bin/env bash in shebang 2018-04-19 13:20:13 +02:00
verify-symbols.sh Update all script to use /usr/bin/env bash in shebang 2018-04-19 13:20:13 +02:00
verify-test-images.sh Update all script to use /usr/bin/env bash in shebang 2018-04-19 13:20:13 +02:00
verify-test-owners.sh Disable verify-test-owners.sh and make go vet more obvious 2016-12-21 11:44:04 -08:00
verify-typecheck.sh Merge pull request #62657 from matthyx/master 2018-05-02 19:44:32 -07:00