e2e-tests: Add configurable cluster_port property

By default, cluster_port is set to 80 to keep backward compatibility.
This change allows to run GetProjectsCacheEntries and
DeleteProjectUsingHAGerrit scenarios against one of the instances in
the cluster instead of a load balancer port using an environment
property:

-Dcom.ericsson.gerrit.plugins.highavailability.scenarios.cluster_port=8080

This change helps to ease testing in a local setup.

Change-Id: Ib7f3102ceb05aeec96d25b9f3df88a76bc3003fb
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/ClusterDefault.scala b/src/test/scala/com/ericsson/gerrit/plugins/highavailability/scenarios/ClusterDefault.scala
new file mode 100644
index 0000000..dad2b35
--- /dev/null
+++ b/src/test/scala/com/ericsson/gerrit/plugins/highavailability/scenarios/ClusterDefault.scala
@@ -0,0 +1,19 @@
+// 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
+}
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/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}")