Skip to content

Commit

Permalink
Merge #105231
Browse files Browse the repository at this point in the history
105231: testutils: automate maintenance of predecessor release information r=srosenberg a=renatolabs

Up to this point, we have manually maintained a `predecessor_version.json`
file that maps each release series to the latest published
release of the predecessor series. This information is then used
by tests in mixed-version and upgrade contexts.

With the end goal of testing upgrades that do not use the latest
published version, this commit enriches the release information file
to also include which releases have been _withdrawn_. With that
information, the test harness can choose any patch release of the
predecessor release series excluding withdrawn releases, which could
lead to undesired flakes and noise.

In summary, the following changes are made:

* replacement of `predecessor_version.json` file for
`cockroach_releases.yaml`. The new file includes which releases have
been withdrawn.
* automation of the process of keeping `cockroach_releases.yaml`
up to date. The docs team already maintains all this information in a
structured format [1], so we leverage that here.
* Predecessor logic is moved from `pkg/util` to `pkg/testutils`, where
it makes more sense, since that code is only used in tests.
* Introduction of `RandomPredecessor` and `RandomPredecessorHistory`,
which make use of the new data file to pick a random non-withdrawn
predecessor instead of the latest one.

The first commit in this PR introduces these changes, while the second and
third make use of the new functionality in the `tpcc/mixed-headroom` roachtests
and the `mixedversion` framework, respectively.

[1] https://github.com/cockroachdb/docs/blob/main/src/current/_data/releases.yml

Epic: CRDB-19321

Release note: None

Co-authored-by: Renato Costa <[email protected]>
  • Loading branch information
craig[bot] and renatolabs committed Jul 11, 2023
2 parents 27e36a0 + db99677 commit c566d1f
Show file tree
Hide file tree
Showing 45 changed files with 1,093 additions and 323 deletions.
3 changes: 3 additions & 0 deletions pkg/BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -594,6 +594,7 @@ ALL_TESTS = [
"//pkg/testutils/lint/passes/timer:timer_test",
"//pkg/testutils/lint/passes/unconvert:unconvert_test",
"//pkg/testutils/lint:lint_test",
"//pkg/testutils/release:release_test",
"//pkg/testutils/sqlutils:sqlutils_test",
"//pkg/testutils/testcluster:testcluster_test",
"//pkg/testutils/zerofields:zerofields_test",
Expand Down Expand Up @@ -2152,6 +2153,8 @@ GO_TARGETS = [
"//pkg/testutils/metrictestutils:metrictestutils",
"//pkg/testutils/pgtest:pgtest",
"//pkg/testutils/physicalplanutils:physicalplanutils",
"//pkg/testutils/release:release",
"//pkg/testutils/release:release_test",
"//pkg/testutils/serverutils/regionlatency:regionlatency",
"//pkg/testutils/serverutils:serverutils",
"//pkg/testutils/skip:skip",
Expand Down
12 changes: 10 additions & 2 deletions pkg/cmd/release/BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -11,23 +11,28 @@ go_library(
"metadata.go",
"orchestration.go",
"pick_sha.go",
"roachtest_predecessors.go",
"sender.go",
"sentry.go",
"set_cockroach_version.go",
"templates.go",
"update_releases.go",
"update_versions.go",
],
importpath = "github.com/cockroachdb/cockroach/pkg/cmd/release",
visibility = ["//visibility:private"],
deps = [
"//pkg/build",
"//pkg/testutils/release",
"//pkg/util/httputil",
"//pkg/util/timeutil",
"//pkg/util/version",
"@com_github_andygrunwald_go_jira//:go-jira",
"@com_github_google_go_github_v42//github",
"@com_github_jordan_wright_email//:email",
"@com_github_masterminds_semver_v3//:semver",
"@com_github_spf13_cobra//:cobra",
"@com_google_cloud_go_storage//:storage",
"@in_gopkg_yaml_v2//:yaml_v2",
"@org_golang_x_oauth2//:oauth2",
],
)
Expand All @@ -42,8 +47,9 @@ go_test(
name = "release_test",
srcs = [
"blockers_test.go",
"roachtest_predecessors_test.go",
"sender_test.go",
"update_releases_test.go",
"update_versions_test.go",
],
args = ["-test.timeout=295s"],
data = glob([
Expand All @@ -52,7 +58,9 @@ go_test(
]),
embed = [":release_lib"],
deps = [
"//pkg/testutils/release",
"@com_github_masterminds_semver_v3//:semver",
"@com_github_stretchr_testify//require",
"@in_gopkg_yaml_v2//:yaml_v2",
],
)
2 changes: 1 addition & 1 deletion pkg/cmd/release/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ func init() {
rootCmd.AddCommand(postReleaseSeriesBlockersCmd)
rootCmd.AddCommand(cancelReleaseSeriesDateCmd)
rootCmd.AddCommand(setOrchestrationVersionCmd)
rootCmd.AddCommand(roachtestPredecessorsCmd)
rootCmd.AddCommand(updateReleasesTestFileCmd)
rootCmd.AddCommand(setCockroachVersionCmd)
rootCmd.AddCommand(updateVersionsCmd)
}
95 changes: 0 additions & 95 deletions pkg/cmd/release/roachtest_predecessors.go

This file was deleted.

2 changes: 1 addition & 1 deletion pkg/cmd/release/set_cockroach_version.go
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ var setCockroachVersionCmd = &cobra.Command{

func init() {
setCockroachVersionCmd.Flags().StringVar(&setCockroachVersionFlags.versionStr, versionFlag, "", "cockroachdb version")
_ = roachtestPredecessorsCmd.MarkFlagRequired(versionFlag)
_ = setCockroachVersionCmd.MarkFlagRequired(versionFlag)
}

func setCockroachVersion(_ *cobra.Command, _ []string) error {
Expand Down
178 changes: 178 additions & 0 deletions pkg/cmd/release/testdata/release_data.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,178 @@
- release_name: beta-20160829
major_version: v1.0
release_date: '2016-08-29'
release_type: Testing
go_version: go1.8.3
sha: ce2bc501f35e5a0d5707fd11d88ca28224aa34b9
docker:
docker_image: cockroachdb/cockroach-unstable
previous_release: beta-20160728

- release_name: v2.1.0-rc.2
major_version: v2.1
release_date: '2018-10-25'
release_type: Testing
go_version: go1.10.3
sha: f0dd1dc2d2500155c8b36330ae3d6932c13c1027
docker:
docker_image: cockroachdb/cockroach-unstable
source: true
previous_release: v2.1.0-rc.1

- release_name: v2.1.0
major_version: v2.1
release_date: '2018-10-30'
release_type: Production
go_version: go1.10.3
sha: f0dd1dc2d2500155c8b36330ae3d6932c13c1027
docker:
docker_image: cockroachdb/cockroach
source: true
previous_release: v2.1.0-rc.2

- release_name: v21.2.0
major_version: v21.2
release_date: '2021-11-16'
release_type: Production
go_version: go1.16.6
sha: 79e5979416cb426092a83beff0be1c20aebf84c6
has_sha256sum: true
windows: true
docker:
docker_image: cockroachdb/cockroach
source: true
previous_release: v21.2.0-rc.3

- release_name: v21.2.1
major_version: v21.2
release_date: '2021-11-29'
release_type: Production
go_version: go1.16.6
sha: d14d5f5d3a47b97cae149a43c590708008d2b5d3
has_sha256sum: true
windows: true
docker:
docker_image: cockroachdb/cockroach
source: true
previous_release: v21.2.0

- release_name: v22.2.0
major_version: v22.2
release_date: '2022-12-06'
release_type: Production
go_version: go1.18
sha: 77667a1b0101cd323090011f50cf910aaa933654
has_sql_only: true
has_sha256sum: true
mac:
mac_arm: true
windows: true
linux:
linux_arm: true
linux_intel_fips: false
linux_arm_fips: false
docker:
docker_image: cockroachdb/cockroach
docker_arm: true
source: true
previous_release: v22.2.0-rc.3

- release_name: v22.1.12
major_version: v22.1
release_date: '2022-12-12'
release_type: Production
go_version: go1.18
sha: 3b76f78d724dfc1e7bc8d697f5a7de960d8d1e98
withdrawn: true
has_sql_only: true
has_sha256sum: true
windows: true
docker:
docker_image: cockroachdb/cockroach
source: true
previous_release: v22.1.11

- release_name: v23.1.0-alpha.9
major_version: v23.1
release_date: '2023-04-04'
release_type: Testing
go_version: go1.19
sha: 7e72aae900c3ff4b44f1643c2d7ba55fbb2cbe23
has_sql_only: true
has_sha256sum: true
mac:
mac_arm: true
windows: true
linux:
linux_arm: true
linux_intel_fips: false
linux_arm_fips: false
docker:
docker_image: cockroachdb/cockroach-unstable
docker_arm: true
source: true
previous_release: v23.1.0-alpha.8

- release_name: v23.1.0-beta.1
major_version: v23.1
release_date: '2023-04-13'
release_type: Testing
go_version: go1.19
sha: aa1c57b36fab87222c82a4ca027b2275654401af
has_sql_only: true
has_sha256sum: true
mac:
mac_arm: true
windows: true
linux:
linux_arm: true
linux_intel_fips: false
linux_arm_fips: false
docker:
docker_image: cockroachdb/cockroach-unstable
docker_arm: true
source: true
previous_release: v23.1.0-alpha.9

- release_name: v23.1.0
major_version: v23.1
release_date: '2023-05-15'
release_type: Production
go_version: go1.18
sha: 358e0d87912365b8976c55ab9b3292e999cf720d
has_sql_only: true
has_sha256sum: true
mac:
mac_arm: true
windows: true
linux:
linux_arm: true
linux_intel_fips: true
linux_arm_fips: false
docker:
docker_image: cockroachdb/cockroach
docker_arm: true
source: true
previous_release: v23.1.0-rc.2
withdrawn: true

- release_name: v23.1.1
major_version: v23.1
release_date: '2023-05-16'
release_type: Production
go_version: go1.19
sha: 00f65ea04077b4256b4a351fd2703b81c7caed1e
has_sql_only: true
has_sha256sum: true
mac:
mac_arm: true
windows: true
linux:
linux_arm: true
linux_intel_fips: true
linux_arm_fips: false
docker:
docker_image: cockroachdb/cockroach
docker_arm: true
source: true
previous_release: v23.1.0
Loading

0 comments on commit c566d1f

Please sign in to comment.