Merge branch 'stable-3.1' into stable-3.2

* stable-3.1:
  e2e-tests: Refactor scenarios to use ClusterDefault
  e2e-tests: Add configurable cluster_port property

Change-Id: I2a03231a3e400d101ee9d1972d3a46953276e322
diff --git a/src/test/docker/README.md b/src/test/docker/README.md
index d97e929..4604423 100644
--- a/src/test/docker/README.md
+++ b/src/test/docker/README.md
@@ -55,7 +55,7 @@
 created on gerrit 1 (port 8081) but from gerrit 2 (on 8082). The
 scenario therefore expects Gerrit HA to have properly synchronized
 the new project from 1 to 2. That project gets deleted after, here
-using HA Gerrit straight (no specific port).
+using HA Gerrit straight (through default http port 80).
 
 Scenario scala source files and their companion json resource ones are
 stored under the usual src/test directories. That structure follows the
diff --git a/src/test/resources/com/ericsson/gerrit/plugins/highavailability/scenarios/DeleteProjectUsingHAGerrit.json b/src/test/resources/com/ericsson/gerrit/plugins/highavailability/scenarios/DeleteProjectUsingHAGerrit.json
index 2405b03..5720f53 100644
--- a/src/test/resources/com/ericsson/gerrit/plugins/highavailability/scenarios/DeleteProjectUsingHAGerrit.json
+++ b/src/test/resources/com/ericsson/gerrit/plugins/highavailability/scenarios/DeleteProjectUsingHAGerrit.json
@@ -1,5 +1,5 @@
 [
   {
-    "url": "HTTP_SCHEME://HOSTNAME/a/projects/PROJECT/delete-project~delete"
+    "url": "HTTP_SCHEME://HOSTNAME:HTTP_PORT/a/projects/PROJECT/delete-project~delete"
   }
 ]
diff --git a/src/test/resources/com/ericsson/gerrit/plugins/highavailability/scenarios/GetProjectsCacheEntries.json b/src/test/resources/com/ericsson/gerrit/plugins/highavailability/scenarios/GetProjectsCacheEntries.json
index 25521c7..e4e2643 100644
--- a/src/test/resources/com/ericsson/gerrit/plugins/highavailability/scenarios/GetProjectsCacheEntries.json
+++ b/src/test/resources/com/ericsson/gerrit/plugins/highavailability/scenarios/GetProjectsCacheEntries.json
@@ -1,5 +1,5 @@
 [
   {
-    "url": "HTTP_SCHEME://HOSTNAME/a/config/server/caches/projects"
+    "url": "HTTP_SCHEME://HOSTNAME:HTTP_PORT/a/config/server/caches/projects"
   }
 ]
diff --git a/src/test/scala/com/ericsson/gerrit/plugins/highavailability/scenarios/CheckProjectsCacheFlushEntriesUsingHAGerrit1.scala b/src/test/scala/com/ericsson/gerrit/plugins/highavailability/scenarios/CheckProjectsCacheFlushEntriesUsingHAGerrit1.scala
index 7e63134..09ba6d4 100644
--- a/src/test/scala/com/ericsson/gerrit/plugins/highavailability/scenarios/CheckProjectsCacheFlushEntriesUsingHAGerrit1.scala
+++ b/src/test/scala/com/ericsson/gerrit/plugins/highavailability/scenarios/CheckProjectsCacheFlushEntriesUsingHAGerrit1.scala
@@ -22,9 +22,10 @@
 
 class CheckProjectsCacheFlushEntriesUsingHAGerrit1 extends CacheFlushSimulation {
   private val data: FeederBuilder = jsonFile(resource).convert(keys).queue
+  private val default: ClusterDefault = new ClusterDefault
 
   override def replaceOverride(in: String): String = {
-    replaceProperty("http_port1", 8081, in)
+    replaceProperty("http_port1", default.httpPort1, in)
   }
 
   def this(producer: CacheFlushSimulation) {
diff --git a/src/test/scala/com/ericsson/gerrit/plugins/highavailability/scenarios/CloneUsingHAGerrit2.scala b/src/test/scala/com/ericsson/gerrit/plugins/highavailability/scenarios/CloneUsingHAGerrit2.scala
index 4fa0ca5..a03a731 100644
--- a/src/test/scala/com/ericsson/gerrit/plugins/highavailability/scenarios/CloneUsingHAGerrit2.scala
+++ b/src/test/scala/com/ericsson/gerrit/plugins/highavailability/scenarios/CloneUsingHAGerrit2.scala
@@ -23,6 +23,7 @@
 
 class CloneUsingHAGerrit2 extends GitSimulation {
   private val data: FeederBuilder = jsonFile(resource).convert(keys).queue
+  private val default: ClusterDefault = new ClusterDefault
   private var projectName = className
 
   def this(projectName: String) {
@@ -31,7 +32,7 @@
   }
 
   override def replaceOverride(in: String): String = {
-    val next = replaceProperty("http_port2", 8082, in)
+    val next = replaceProperty("http_port2", default.httpPort2, in)
     replaceKeyWith("_project", projectName, next)
   }
 
diff --git a/src/test/scala/com/ericsson/gerrit/plugins/highavailability/scenarios/ClusterDefault.scala b/src/test/scala/com/ericsson/gerrit/plugins/highavailability/scenarios/ClusterDefault.scala
new file mode 100644
index 0000000..58bbc7e
--- /dev/null
+++ b/src/test/scala/com/ericsson/gerrit/plugins/highavailability/scenarios/ClusterDefault.scala
@@ -0,0 +1,21 @@
+// 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.ericsson.gerrit.plugins.highavailability.scenarios
+
+class ClusterDefault {
+  val clusterHttpPort: Int = 80
+  val httpPort1: Int = 8081
+  val httpPort2: Int = 8082
+}
diff --git a/src/test/scala/com/ericsson/gerrit/plugins/highavailability/scenarios/CreateChangeUsingHAGerrit1.scala b/src/test/scala/com/ericsson/gerrit/plugins/highavailability/scenarios/CreateChangeUsingHAGerrit1.scala
index bfd520a..7969af0 100644
--- a/src/test/scala/com/ericsson/gerrit/plugins/highavailability/scenarios/CreateChangeUsingHAGerrit1.scala
+++ b/src/test/scala/com/ericsson/gerrit/plugins/highavailability/scenarios/CreateChangeUsingHAGerrit1.scala
@@ -24,12 +24,13 @@
 
 class CreateChangeUsingHAGerrit1 extends GerritSimulation {
   private val data: FeederBuilder = jsonFile(resource).convert(keys).queue
+  private val default: ClusterDefault = new ClusterDefault
   private val projectName = className
 
   override def relativeRuntimeWeight = 10
 
   override def replaceOverride(in: String): String = {
-    replaceProperty("http_port1", 8081, in)
+    replaceProperty("http_port1", default.httpPort1, in)
   }
 
   private val test: ScenarioBuilder = scenario(uniqueName)
diff --git a/src/test/scala/com/ericsson/gerrit/plugins/highavailability/scenarios/CreateProjectUsingHAGerrit1.scala b/src/test/scala/com/ericsson/gerrit/plugins/highavailability/scenarios/CreateProjectUsingHAGerrit1.scala
index 5773bcf..72a1068 100644
--- a/src/test/scala/com/ericsson/gerrit/plugins/highavailability/scenarios/CreateProjectUsingHAGerrit1.scala
+++ b/src/test/scala/com/ericsson/gerrit/plugins/highavailability/scenarios/CreateProjectUsingHAGerrit1.scala
@@ -21,6 +21,7 @@
 
 class CreateProjectUsingHAGerrit1 extends ProjectSimulation {
   private val data: FeederBuilder = jsonFile(resource).convert(keys).queue
+  private val default: ClusterDefault = new ClusterDefault
 
   def this(projectName: String) {
     this()
@@ -28,7 +29,7 @@
   }
 
   override def replaceOverride(in: String): String = {
-    val next = replaceProperty("http_port1", 8081, in)
+    val next = replaceProperty("http_port1", default.httpPort1, in)
     super.replaceOverride(next)
   }
 
diff --git a/src/test/scala/com/ericsson/gerrit/plugins/highavailability/scenarios/DeleteChangeUsingHAGerrit2.scala b/src/test/scala/com/ericsson/gerrit/plugins/highavailability/scenarios/DeleteChangeUsingHAGerrit2.scala
index 335d587..c8e1c50 100644
--- a/src/test/scala/com/ericsson/gerrit/plugins/highavailability/scenarios/DeleteChangeUsingHAGerrit2.scala
+++ b/src/test/scala/com/ericsson/gerrit/plugins/highavailability/scenarios/DeleteChangeUsingHAGerrit2.scala
@@ -22,12 +22,13 @@
 
 class DeleteChangeUsingHAGerrit2 extends GerritSimulation {
   private val data: FeederBuilder = jsonFile(resource).convert(keys).queue
+  private val default: ClusterDefault = new ClusterDefault
   var number: Option[Int] = None
 
   override def relativeRuntimeWeight = 10
 
   override def replaceOverride(in: String): String = {
-    replaceProperty("http_port2", 8082, in)
+    replaceProperty("http_port2", default.httpPort2, in)
   }
 
   val test: ScenarioBuilder = scenario(uniqueName)
diff --git a/src/test/scala/com/ericsson/gerrit/plugins/highavailability/scenarios/DeleteProjectUsingHAGerrit.scala b/src/test/scala/com/ericsson/gerrit/plugins/highavailability/scenarios/DeleteProjectUsingHAGerrit.scala
index cdc6e9e..d9feedb 100644
--- a/src/test/scala/com/ericsson/gerrit/plugins/highavailability/scenarios/DeleteProjectUsingHAGerrit.scala
+++ b/src/test/scala/com/ericsson/gerrit/plugins/highavailability/scenarios/DeleteProjectUsingHAGerrit.scala
@@ -21,12 +21,18 @@
 
 class DeleteProjectUsingHAGerrit extends ProjectSimulation {
   private val data: FeederBuilder = jsonFile(resource).convert(keys).queue
+  private val default: ClusterDefault = new ClusterDefault
 
   def this(projectName: String) {
     this()
     this.projectName = projectName
   }
 
+  override def replaceOverride(in: String): String = {
+    val next = replaceProperty("cluster_port", default.clusterHttpPort, in)
+    super.replaceOverride(next)
+  }
+
   val test: ScenarioBuilder = scenario(uniqueName)
     .feed(data)
     .exec(httpRequest)
diff --git a/src/test/scala/com/ericsson/gerrit/plugins/highavailability/scenarios/FlushProjectsCacheUsingHAGerrit2.scala b/src/test/scala/com/ericsson/gerrit/plugins/highavailability/scenarios/FlushProjectsCacheUsingHAGerrit2.scala
index 4f619b8..d6eff71 100644
--- a/src/test/scala/com/ericsson/gerrit/plugins/highavailability/scenarios/FlushProjectsCacheUsingHAGerrit2.scala
+++ b/src/test/scala/com/ericsson/gerrit/plugins/highavailability/scenarios/FlushProjectsCacheUsingHAGerrit2.scala
@@ -23,12 +23,13 @@
 
 class FlushProjectsCacheUsingHAGerrit2 extends CacheFlushSimulation {
   private val data: FeederBuilder = jsonFile(resource).convert(keys).queue
+  private val default: ClusterDefault = new ClusterDefault
   private val projectName = className
 
   override def relativeRuntimeWeight = 2
 
   override def replaceOverride(in: String): String = {
-    replaceProperty("http_port2", 8082, in)
+    replaceProperty("http_port2", default.httpPort2, in)
   }
 
   private val flushCache: ScenarioBuilder = scenario(uniqueName)
diff --git a/src/test/scala/com/ericsson/gerrit/plugins/highavailability/scenarios/GetProjectsCacheEntries.scala b/src/test/scala/com/ericsson/gerrit/plugins/highavailability/scenarios/GetProjectsCacheEntries.scala
index 8a04245..6938c74 100644
--- a/src/test/scala/com/ericsson/gerrit/plugins/highavailability/scenarios/GetProjectsCacheEntries.scala
+++ b/src/test/scala/com/ericsson/gerrit/plugins/highavailability/scenarios/GetProjectsCacheEntries.scala
@@ -22,12 +22,17 @@
 
 class GetProjectsCacheEntries extends CacheFlushSimulation {
   private val data: FeederBuilder = jsonFile(resource).convert(keys).queue
+  private val default: ClusterDefault = new ClusterDefault
 
   def this(consumer: CacheFlushSimulation) {
     this()
     this.consumer = Some(consumer)
   }
 
+  override def replaceOverride(in: String): String = {
+    replaceProperty("cluster_port", default.clusterHttpPort, in)
+  }
+
   val test: ScenarioBuilder = scenario(uniqueName)
     .feed(data)
     .exec(http(uniqueName).get("${url}")