Merge "e2e-tests: Add CheckMasterBranchReplica1 scenarios" into stable-3.0
diff --git a/e2e-tests/src/test/resources/data/com/google/gerrit/scenarios/CheckMasterBranchReplica1.json b/e2e-tests/src/test/resources/data/com/google/gerrit/scenarios/CheckMasterBranchReplica1.json
new file mode 100644
index 0000000..54c54f8
--- /dev/null
+++ b/e2e-tests/src/test/resources/data/com/google/gerrit/scenarios/CheckMasterBranchReplica1.json
@@ -0,0 +1,5 @@
+[
+ {
+ "url": "http://HOSTNAME:HTTP_PORT1/a/projects/PROJECT/branches/master"
+ }
+]
diff --git a/e2e-tests/src/test/resources/data/com/google/gerrit/scenarios/GetMasterBranchRevision.json b/e2e-tests/src/test/resources/data/com/google/gerrit/scenarios/GetMasterBranchRevision.json
new file mode 100644
index 0000000..2b8809a
--- /dev/null
+++ b/e2e-tests/src/test/resources/data/com/google/gerrit/scenarios/GetMasterBranchRevision.json
@@ -0,0 +1,5 @@
+[
+ {
+ "url": "http://HOSTNAME:HTTP_PORT/a/projects/PROJECT/branches/master"
+ }
+]
diff --git a/e2e-tests/src/test/scala/com/google/gerrit/scenarios/CheckMasterBranchReplica1.scala b/e2e-tests/src/test/scala/com/google/gerrit/scenarios/CheckMasterBranchReplica1.scala
new file mode 100644
index 0000000..0ed22c7
--- /dev/null
+++ b/e2e-tests/src/test/scala/com/google/gerrit/scenarios/CheckMasterBranchReplica1.scala
@@ -0,0 +1,73 @@
+// Copyright (C) 2020 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 com.typesafe.config.ConfigFactory
+import io.gatling.core.Predef._
+import io.gatling.core.feeder.FeederBuilder
+import io.gatling.core.structure.ScenarioBuilder
+import io.gatling.http.Predef._
+
+import scala.concurrent.duration._
+
+class CheckMasterBranchReplica1 extends ProjectSimulation {
+ private val data: FeederBuilder = jsonFile(resource).convert(keys).queue
+
+ override def replaceOverride(in: String): String = {
+ val next = replaceProperty("http_port1", 8081, in)
+ super.replaceOverride(next)
+ }
+
+ private val httpForReplica = http.basicAuth(
+ conf.httpConfiguration.userName,
+ ConfigFactory.load().getString("http.password_replica"))
+
+ private val createChange = new CreateChange
+ private val approveChange = new ApproveChange(createChange)
+ private val submitChange = new SubmitChange(createChange)
+ private val getBranch = new GetMasterBranchRevision
+
+ private val test: ScenarioBuilder = scenario(unique)
+ .feed(data)
+ .exec(session => {
+ session.set(getBranch.revisionKey, getBranch.revision.get)
+ })
+ .exec(http(unique).get("${url}")
+ .check(regex(getBranch.revisionPattern)
+ .is(session => session(getBranch.revisionKey).as[String])))
+
+ setUp(
+ createChange.test.inject(
+ nothingFor(stepWaitTime(createChange) seconds),
+ atOnceUsers(1)
+ ),
+ approveChange.test.inject(
+ nothingFor(stepWaitTime(approveChange) seconds),
+ atOnceUsers(1)
+ ),
+ submitChange.test.inject(
+ nothingFor(stepWaitTime(submitChange) seconds),
+ atOnceUsers(1)
+ ),
+ getBranch.test.inject(
+ nothingFor(stepWaitTime(getBranch) seconds),
+ atOnceUsers(1)
+ ),
+ test.inject(
+ nothingFor(stepWaitTime(this) seconds),
+ atOnceUsers(1)
+ ).protocols(httpForReplica),
+ ).protocols(httpProtocol)
+}
diff --git a/e2e-tests/src/test/scala/com/google/gerrit/scenarios/GetMasterBranchRevision.scala b/e2e-tests/src/test/scala/com/google/gerrit/scenarios/GetMasterBranchRevision.scala
new file mode 100644
index 0000000..0060d1c
--- /dev/null
+++ b/e2e-tests/src/test/scala/com/google/gerrit/scenarios/GetMasterBranchRevision.scala
@@ -0,0 +1,41 @@
+// Copyright (C) 2020 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._
+import io.gatling.core.feeder.FeederBuilder
+import io.gatling.core.structure.ScenarioBuilder
+import io.gatling.http.Predef._
+
+class GetMasterBranchRevision extends ProjectSimulation {
+ private val data: FeederBuilder = jsonFile(resource).convert(keys).queue
+ var revision: Option[String] = None
+ val revisionKey = "revision"
+ val revisionPattern: String = "\"" + revisionKey + "\": \"(.+)\""
+
+ val test: ScenarioBuilder = scenario(unique)
+ .feed(data)
+ .exec(http(unique).get("${url}")
+ .check(regex(revisionPattern).saveAs(revisionKey)))
+ .exec(session => {
+ revision = Some(session(revisionKey).as[String])
+ session
+ })
+
+ setUp(
+ test.inject(
+ atOnceUsers(1)
+ )).protocols(httpProtocol)
+}
diff --git a/e2e-tests/src/test/scala/com/google/gerrit/scenarios/SubmitChange.scala b/e2e-tests/src/test/scala/com/google/gerrit/scenarios/SubmitChange.scala
index 2f67274..bfcb7c9f 100644
--- a/e2e-tests/src/test/scala/com/google/gerrit/scenarios/SubmitChange.scala
+++ b/e2e-tests/src/test/scala/com/google/gerrit/scenarios/SubmitChange.scala
@@ -24,8 +24,16 @@
class SubmitChange extends GerritSimulation {
private val data: FeederBuilder = jsonFile(resource).convert(keys).queue
private val default: String = name
+ private var createChange = new CreateChange(default)
- private val test: ScenarioBuilder = scenario(unique)
+ override def relativeRuntimeWeight = 10
+
+ def this(createChange: CreateChange) {
+ this()
+ this.createChange = createChange
+ }
+
+ val test: ScenarioBuilder = scenario(unique)
.feed(data)
.exec(session => {
session.set("number", createChange.number)
@@ -33,7 +41,6 @@
.exec(http(unique).post("${url}${number}/submit"))
private val createProject = new CreateProject(default)
- private val createChange = new CreateChange(default)
private val approveChange = new ApproveChange(createChange)
private val deleteProject = new DeleteProject(default)