Conformance test suite for OpenShift
This repo was previously the core Kubernetes tracking repo for OKD, and where OpenShift's
openshift-testbinaries were maintained. As of July 2020, the purpose and maintenance strategy of the repo varies by branch.
release-x.xbranches for 4.6 and above
These branches no longer include the code required to produce
hyperkubebinaries, and are limited to maintaining the
openshift-testsbinary. Responsibility for maintaining hyperkube has transitioned to the openshift/kubernetes repo.
Backports and carries against upstream should be proposed to
openshift/kubernetes. If changes merged to
openshift/kubernetesneed to land in
origin, it will be necessary to follow up with a PR to
originthat bumps the vendoring.
Branch names are correlated across the 2 repositories such that changes merged to a given branch in
openshift/kubernetesshould be vendored into the same branch in
openshift/kubernetesis vendored into
NOTE: Vendoring of the
openshift/kubernetesinto the equivalent branches in
originis intended to be temporary. At some point in the near future,
originwill switch to vendoring origin-specific branches (e.g
origin-4.6-kubernetes-1.19.2) to minimize the scope of backports and carries that need to be considered in the context of
Test annotation rules are used to label e2e tests so that they can be filtered or skipped. For example, rules can be defined that match kube e2e tests that are known to be incompatible with openshift and label those tests to be skipped.
Maintenance of test annotation rules is split between the
originrepos to ensure that PRs proposed to
openshift/kubernetescan be validated against the set of kube e2e tests known to be compatible with openshift.
Test annotation rules for kubernetes e2e tests are maintained in:
Test annotation rules for openshift e2e tests are maintained in:
Origin vendors the kube rules and applies both the kube and openshift rules to the set of tests included in the
In order to update test annotation rules for kube e2e tests, it will be necessary to:
openshift/kubernetesvendored in origin
These origin branches vendor
k8s.io/kubernetesand some of its staging repos (e.g.
k8s.io/api) from our openshift/kubernetes fork. Upstream staging repos are used where possible, but some tests depends on functionality that is only present in the fork.
When a change has merged to an
openshift/kubernetesbranch that needs to be vendored into the same branch in
hack/update-kube-vendor.shhelper script simplifies updating the go module configuration for all dependencies sourced from
openshift/kubernetesfor that branch. The script requires either the name of a branch or a SHA from
The script also supports performing a fake bump to validate an as-yet unmerged change to
openshift/kubernetes. This can be accomplished by supplying the name of a fork repo as the second argument to the script:
$ hack/update-kube-vendor.sh github.com/myname/kubernetes
Once the script has executed, the vendoring changes will need to be committed and proposed to the repo.
If the script returns '410 Gone' as per the error that follows, it may be that the golang checksum server does not yet know about the target SHA.
go: k8s.io/[email protected] (replaced by github.com/openshift/[email protected]): verifying go.mod: g ithub.com/openshift/[email protected]/go.mod: reading https://sum.golang.org/lookup/github.com/openshif t/[email protected]: 410 Gone server response: not found:
The workaround is to set
GOSUMDB=offto disable the checksum database for the vendoring update:
$ GOSUMDB=off hack/update-kube-vendor.sh
Releases prior to 4.6 continue to maintain hyperkube in the
originrepo in the
release-4.xbranches. Persistent carries and backports for those branches should continue to be submitted directly to origin.
openshift/kubernetesis not involved except for rebases.
End to end tests (e2e) should verify a long set of flows in the product as a user would see them. Two e2e tests should not overlap more than 10% of function and are not intended to test error conditions in detail. The project examples should be driven by e2e tests. e2e tests can also test external components working together.
All e2e tests are compiled into the
openshift-testsbinary. To build the test binary, run
To run a specific test, or an entire suite of tests, read test/extended/README for more information.
hack/update-external-example.shwill pull down example files from external repositories and deposit them under the
examplesdirectory. Run this script if you need to refresh an example file, or add a new one. See the script and
examples/quickstarts/README.mdfor more details.