Merge branch 'stable-3.1' into stable-3.2
* stable-3.1: Bazel: Consume bazel-toolchains release from bazel mirror Align the recommended buildifier version with CI's crafting-changes: Add some info on Optional/Nullable Bump bazel-toolchains to 5.0.0 Set version to 2.16.28-SNAPSHOT Set version to 2.16.27 ForRef#check should permit internal users to read all refs Update git submodules Update highlightjs to 10.6.0 Use NoteDb sequence seed for groups sequence initialization GroupsOnInit: Remove unused dependency on ReviewDb Use NoteDb sequence seed for accounts sequence initialization Do not use ReviewDb anymore when is disabled Elasticsearch: Discontinue EOL versions 7.2 and 7.3 support e2e-tests: Add SubmitChangeInBranch scenario Update developers based on gerritcodereview's list ForRef#check should permit internal users to read all refs Change-Id: I72f7184e0de6ed8225c135ec21c8a83c9d211009
This commit is contained in:
commit
66aa889797
|
@ -147,7 +147,7 @@ To format Java source code, Gerrit uses the
|
|||
link:https://github.com/google/google-java-format[`google-java-format`,role=external,window=_blank]
|
||||
tool (version 1.7), and to format Bazel BUILD, WORKSPACE and .bzl files the
|
||||
link:https://github.com/bazelbuild/buildtools/tree/master/buildifier[`buildifier`,role=external,window=_blank]
|
||||
tool (version 3.5.0). Unused dependencies are found and removed using the
|
||||
tool (version 4.0.0). Unused dependencies are found and removed using the
|
||||
link:https://github.com/bazelbuild/buildtools/tree/master/unused_deps[`unused_deps`,role=external,window=_blank]
|
||||
build tool, a sibling of `buildifier`.
|
||||
|
||||
|
@ -160,6 +160,9 @@ run `./tools/setup_gjf.sh` to download a local copy and set up a
|
|||
wrapper script. If you run your own copy, please use the same version,
|
||||
as there may be slight differences between versions.
|
||||
|
||||
[[code-rules]]
|
||||
== Code Rules
|
||||
=== Final
|
||||
When to use `final` modifier and when not (in new code):
|
||||
|
||||
Always:
|
||||
|
@ -181,6 +184,12 @@ Never:
|
|||
be removed
|
||||
* method parameters: similar to local variables
|
||||
|
||||
=== Optional / Nullable
|
||||
Recommended:
|
||||
|
||||
* Optionals in arguments are discouraged (use @Nullable instead)
|
||||
* Return types should be objects or Optionals of objects, but not null/nullable
|
||||
|
||||
[[code-organization]]
|
||||
== Code Organization
|
||||
|
||||
|
|
|
@ -31,11 +31,11 @@ load("//tools:nongoogle.bzl", "declare_nongoogle_deps")
|
|||
|
||||
http_archive(
|
||||
name = "bazel_toolchains",
|
||||
sha256 = "726b5423e1c7a3866a3a6d68e7123b4a955e9fcbe912a51e0f737e6dab1d0af2",
|
||||
strip_prefix = "bazel-toolchains-3.1.0",
|
||||
sha256 = "1adf7a8e9901287c644dcf9ca08dd8d67a69df94bedbd57a841490a84dc1e9ed",
|
||||
strip_prefix = "bazel-toolchains-5.0.0",
|
||||
urls = [
|
||||
"https://mirror.bazel.build/github.com/bazelbuild/bazel-toolchains/releases/download/3.1.0/bazel-toolchains-3.1.0.tar.gz",
|
||||
"https://github.com/bazelbuild/bazel-toolchains/releases/download/3.1.0/bazel-toolchains-3.1.0.tar.gz",
|
||||
"https://mirror.bazel.build/github.com/bazelbuild/bazel-toolchains/archive/v5.0.0.tar.gz",
|
||||
"https://github.com/bazelbuild/bazel-toolchains/archive/v5.0.0.tar.gz",
|
||||
],
|
||||
)
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"project": "${project}",
|
||||
"branch": "master",
|
||||
"branch": "${branch}",
|
||||
"subject": "Change"
|
||||
}
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
[
|
||||
{
|
||||
"url": "HTTP_SCHEME://HOSTNAME:HTTP_PORT/a/changes/"
|
||||
}
|
||||
]
|
|
@ -19,10 +19,15 @@ import io.gatling.core.feeder.FeederBuilder
|
|||
import io.gatling.core.structure.ScenarioBuilder
|
||||
import io.gatling.http.Predef.http
|
||||
|
||||
import scala.collection.mutable
|
||||
|
||||
class ApproveChange extends GerritSimulation {
|
||||
private val data: FeederBuilder = jsonFile(resource).convert(keys).queue
|
||||
private val data: FeederBuilder = jsonFile(resource).convert(keys).circular
|
||||
private var numbersCopy: mutable.Queue[Int] = mutable.Queue[Int]()
|
||||
private var createChange: Option[CreateChange] = None
|
||||
|
||||
override def relativeRuntimeWeight = 10
|
||||
|
||||
def this(createChange: CreateChange) {
|
||||
this()
|
||||
this.createChange = Some(createChange)
|
||||
|
@ -32,7 +37,10 @@ class ApproveChange extends GerritSimulation {
|
|||
.feed(data)
|
||||
.exec(session => {
|
||||
if (createChange.nonEmpty) {
|
||||
session.set("number", createChange.get.number)
|
||||
if (numbersCopy.isEmpty) {
|
||||
numbersCopy = createChange.get.numbers.clone()
|
||||
}
|
||||
session.set("number", numbersCopy.dequeue())
|
||||
} else {
|
||||
session
|
||||
}
|
||||
|
|
|
@ -19,18 +19,27 @@ import io.gatling.core.feeder.FeederBuilder
|
|||
import io.gatling.core.structure.ScenarioBuilder
|
||||
import io.gatling.http.Predef._
|
||||
|
||||
import scala.collection.mutable
|
||||
import scala.concurrent.duration._
|
||||
|
||||
class CreateBranch extends ProjectSimulation {
|
||||
private val data: FeederBuilder = jsonFile(resource).convert(keys).circular
|
||||
private val branchIdKey = "branchId"
|
||||
private var counter = 0
|
||||
var branches: mutable.Queue[String] = mutable.Queue[String]()
|
||||
|
||||
private val test: ScenarioBuilder = scenario(uniqueName)
|
||||
def this(projectName: String) {
|
||||
this()
|
||||
this.projectName = projectName
|
||||
}
|
||||
|
||||
val test: ScenarioBuilder = scenario(uniqueName)
|
||||
.feed(data)
|
||||
.exec(session => {
|
||||
counter += 1
|
||||
session.set(branchIdKey, "branch-" + counter)
|
||||
val branchId = "branch-" + counter
|
||||
branches += branchId
|
||||
session.set(branchIdKey, branchId)
|
||||
})
|
||||
.exec(http(uniqueName)
|
||||
.post("${url}${" + branchIdKey + "}")
|
||||
|
|
|
@ -25,18 +25,37 @@ import scala.concurrent.duration._
|
|||
class CreateChange extends ProjectSimulation {
|
||||
private val data: FeederBuilder = jsonFile(resource).convert(keys).circular
|
||||
private val numberKey = "_number"
|
||||
private val weightPerUser = 0.1
|
||||
private var createBranch: Option[CreateBranch] = None
|
||||
private var branchesCopy: mutable.Queue[String] = mutable.Queue[String]()
|
||||
var number = 0
|
||||
var numbers: mutable.Queue[Int] = mutable.Queue[Int]()
|
||||
|
||||
override def relativeRuntimeWeight = 2
|
||||
override def relativeRuntimeWeight: Int = 2 + (numberOfUsers * weightPerUser).toInt
|
||||
|
||||
def this(projectName: String) {
|
||||
this()
|
||||
this.projectName = projectName
|
||||
}
|
||||
|
||||
def this(projectName: String, createBranch: CreateBranch) {
|
||||
this()
|
||||
this.projectName = projectName
|
||||
this.createBranch = Some(createBranch)
|
||||
}
|
||||
|
||||
val test: ScenarioBuilder = scenario(uniqueName)
|
||||
.feed(data)
|
||||
.exec(session => {
|
||||
var branchId = "master"
|
||||
if (createBranch.nonEmpty) {
|
||||
if (branchesCopy.isEmpty) {
|
||||
branchesCopy = createBranch.get.branches.clone()
|
||||
}
|
||||
branchId = branchesCopy.dequeue()
|
||||
}
|
||||
session.set("branch", branchId)
|
||||
})
|
||||
.exec(httpRequest
|
||||
.body(ElFileBody(body)).asJson
|
||||
.check(regex("\"" + numberKey + "\":(\\d+),").saveAs(numberKey)))
|
||||
|
|
|
@ -0,0 +1,74 @@
|
|||
// Copyright (C) 2021 The Android Open Source Project
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
package com.google.gerrit.scenarios
|
||||
|
||||
import io.gatling.core.Predef.{atOnceUsers, _}
|
||||
import io.gatling.core.feeder.FeederBuilder
|
||||
import io.gatling.core.structure.ScenarioBuilder
|
||||
import io.gatling.http.Predef.http
|
||||
|
||||
import scala.collection.mutable
|
||||
import scala.concurrent.duration._
|
||||
|
||||
class SubmitChangeInBranch extends GerritSimulation {
|
||||
private val data: FeederBuilder = jsonFile(resource).convert(keys).circular
|
||||
private var changesCopy: mutable.Queue[Int] = mutable.Queue[Int]()
|
||||
private val projectName = className
|
||||
|
||||
override def relativeRuntimeWeight = 10
|
||||
|
||||
private val test: ScenarioBuilder = scenario(uniqueName)
|
||||
.feed(data)
|
||||
.exec(session => {
|
||||
if (changesCopy.isEmpty) {
|
||||
changesCopy = createChange.numbers.clone()
|
||||
}
|
||||
session.set("number", changesCopy.dequeue())
|
||||
})
|
||||
.exec(http(uniqueName).post("${url}${number}/submit"))
|
||||
|
||||
private val createProject = new CreateProject(projectName)
|
||||
private val createBranch = new CreateBranch(projectName)
|
||||
private val createChange = new CreateChange(projectName, createBranch)
|
||||
private val approveChange = new ApproveChange(createChange)
|
||||
private val deleteProject = new DeleteProject(projectName)
|
||||
|
||||
setUp(
|
||||
createProject.test.inject(
|
||||
nothingFor(stepWaitTime(createProject) seconds),
|
||||
atOnceUsers(single)
|
||||
),
|
||||
createBranch.test.inject(
|
||||
nothingFor(stepWaitTime(createBranch) seconds),
|
||||
atOnceUsers(numberOfUsers)
|
||||
),
|
||||
createChange.test.inject(
|
||||
nothingFor(stepWaitTime(createChange) seconds),
|
||||
atOnceUsers(numberOfUsers)
|
||||
),
|
||||
approveChange.test.inject(
|
||||
nothingFor(stepWaitTime(approveChange) seconds),
|
||||
atOnceUsers(numberOfUsers)
|
||||
),
|
||||
test.inject(
|
||||
nothingFor(stepWaitTime(this) seconds),
|
||||
atOnceUsers(numberOfUsers)
|
||||
),
|
||||
deleteProject.test.inject(
|
||||
nothingFor(stepWaitTime(deleteProject) seconds),
|
||||
atOnceUsers(single)
|
||||
),
|
||||
).protocols(httpProtocol)
|
||||
}
|
|
@ -18,8 +18,6 @@ import com.google.common.base.Joiner;
|
|||
import java.util.regex.Pattern;
|
||||
|
||||
public enum ElasticVersion {
|
||||
V7_2("7.2.*"),
|
||||
V7_3("7.3.*"),
|
||||
V7_4("7.4.*"),
|
||||
V7_5("7.5.*"),
|
||||
V7_6("7.6.*"),
|
||||
|
|
|
@ -39,10 +39,6 @@ public class ElasticContainer extends ElasticsearchContainer {
|
|||
|
||||
private static String getImageName(ElasticVersion version) {
|
||||
switch (version) {
|
||||
case V7_2:
|
||||
return "blacktop/elasticsearch:7.2.1";
|
||||
case V7_3:
|
||||
return "blacktop/elasticsearch:7.3.2";
|
||||
case V7_4:
|
||||
return "blacktop/elasticsearch:7.4.2";
|
||||
case V7_5:
|
||||
|
|
|
@ -22,12 +22,6 @@ import org.junit.Test;
|
|||
public class ElasticVersionTest {
|
||||
@Test
|
||||
public void supportedVersion() throws Exception {
|
||||
assertThat(ElasticVersion.forVersion("7.2.0")).isEqualTo(ElasticVersion.V7_2);
|
||||
assertThat(ElasticVersion.forVersion("7.2.1")).isEqualTo(ElasticVersion.V7_2);
|
||||
|
||||
assertThat(ElasticVersion.forVersion("7.3.0")).isEqualTo(ElasticVersion.V7_3);
|
||||
assertThat(ElasticVersion.forVersion("7.3.1")).isEqualTo(ElasticVersion.V7_3);
|
||||
|
||||
assertThat(ElasticVersion.forVersion("7.4.0")).isEqualTo(ElasticVersion.V7_4);
|
||||
assertThat(ElasticVersion.forVersion("7.4.1")).isEqualTo(ElasticVersion.V7_4);
|
||||
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -1 +1 @@
|
|||
Subproject commit d04c4c33ad36e2e11ccc8b798357dd1e4e979a1a
|
||||
Subproject commit b594c7f7d6ed77317fa7602dc5d6ff354899bb78
|
|
@ -34,15 +34,24 @@
|
|||
<developer>
|
||||
<name>David Pursehouse</name>
|
||||
</developer>
|
||||
<developer>
|
||||
<name>Dmitrii Filippov</name>
|
||||
</developer>
|
||||
<developer>
|
||||
<name>Edwin Kempin</name>
|
||||
</developer>
|
||||
<developer>
|
||||
<name>Gal Paikin</name>
|
||||
</developer>
|
||||
<developer>
|
||||
<name>Han-Wen Nienhuys</name>
|
||||
</developer>
|
||||
<developer>
|
||||
<name>Jacek Centkowski</name>
|
||||
</developer>
|
||||
<developer>
|
||||
<name>Joerg Zieren</name>
|
||||
</developer>
|
||||
<developer>
|
||||
<name>Luca Milanesio</name>
|
||||
</developer>
|
||||
|
@ -56,7 +65,10 @@
|
|||
<name>Matthias Sohn</name>
|
||||
</developer>
|
||||
<developer>
|
||||
<name>Ole Rehmsen</name>
|
||||
<name>Milutin Kristofic</name>
|
||||
</developer>
|
||||
<developer>
|
||||
<name>Nasser Grainawi</name>
|
||||
</developer>
|
||||
<developer>
|
||||
<name>Patrick Hiesel</name>
|
||||
|
|
|
@ -34,15 +34,24 @@
|
|||
<developer>
|
||||
<name>David Pursehouse</name>
|
||||
</developer>
|
||||
<developer>
|
||||
<name>Dmitrii Filippov</name>
|
||||
</developer>
|
||||
<developer>
|
||||
<name>Edwin Kempin</name>
|
||||
</developer>
|
||||
<developer>
|
||||
<name>Gal Paikin</name>
|
||||
</developer>
|
||||
<developer>
|
||||
<name>Han-Wen Nienhuys</name>
|
||||
</developer>
|
||||
<developer>
|
||||
<name>Jacek Centkowski</name>
|
||||
</developer>
|
||||
<developer>
|
||||
<name>Joerg Zieren</name>
|
||||
</developer>
|
||||
<developer>
|
||||
<name>Luca Milanesio</name>
|
||||
</developer>
|
||||
|
@ -56,7 +65,10 @@
|
|||
<name>Matthias Sohn</name>
|
||||
</developer>
|
||||
<developer>
|
||||
<name>Ole Rehmsen</name>
|
||||
<name>Milutin Kristofic</name>
|
||||
</developer>
|
||||
<developer>
|
||||
<name>Nasser Grainawi</name>
|
||||
</developer>
|
||||
<developer>
|
||||
<name>Patrick Hiesel</name>
|
||||
|
|
|
@ -34,15 +34,24 @@
|
|||
<developer>
|
||||
<name>David Pursehouse</name>
|
||||
</developer>
|
||||
<developer>
|
||||
<name>Dmitrii Filippov</name>
|
||||
</developer>
|
||||
<developer>
|
||||
<name>Edwin Kempin</name>
|
||||
</developer>
|
||||
<developer>
|
||||
<name>Gal Paikin</name>
|
||||
</developer>
|
||||
<developer>
|
||||
<name>Han-Wen Nienhuys</name>
|
||||
</developer>
|
||||
<developer>
|
||||
<name>Jacek Centkowski</name>
|
||||
</developer>
|
||||
<developer>
|
||||
<name>Joerg Zieren</name>
|
||||
</developer>
|
||||
<developer>
|
||||
<name>Luca Milanesio</name>
|
||||
</developer>
|
||||
|
@ -56,7 +65,10 @@
|
|||
<name>Matthias Sohn</name>
|
||||
</developer>
|
||||
<developer>
|
||||
<name>Ole Rehmsen</name>
|
||||
<name>Milutin Kristofic</name>
|
||||
</developer>
|
||||
<developer>
|
||||
<name>Nasser Grainawi</name>
|
||||
</developer>
|
||||
<developer>
|
||||
<name>Patrick Hiesel</name>
|
||||
|
|
|
@ -34,15 +34,24 @@
|
|||
<developer>
|
||||
<name>David Pursehouse</name>
|
||||
</developer>
|
||||
<developer>
|
||||
<name>Dmitrii Filippov</name>
|
||||
</developer>
|
||||
<developer>
|
||||
<name>Edwin Kempin</name>
|
||||
</developer>
|
||||
<developer>
|
||||
<name>Gal Paikin</name>
|
||||
</developer>
|
||||
<developer>
|
||||
<name>Han-Wen Nienhuys</name>
|
||||
</developer>
|
||||
<developer>
|
||||
<name>Jacek Centkowski</name>
|
||||
</developer>
|
||||
<developer>
|
||||
<name>Joerg Zieren</name>
|
||||
</developer>
|
||||
<developer>
|
||||
<name>Luca Milanesio</name>
|
||||
</developer>
|
||||
|
@ -56,7 +65,10 @@
|
|||
<name>Matthias Sohn</name>
|
||||
</developer>
|
||||
<developer>
|
||||
<name>Ole Rehmsen</name>
|
||||
<name>Milutin Kristofic</name>
|
||||
</developer>
|
||||
<developer>
|
||||
<name>Nasser Grainawi</name>
|
||||
</developer>
|
||||
<developer>
|
||||
<name>Patrick Hiesel</name>
|
||||
|
|
Loading…
Reference in New Issue