e2e-tests: Unhardcode test scenarios project names

Make the CloneUsingMultiGerrit1 scenario use the automatically generated
project name, which is its own class name. Get its delegate project
scenarios to use that same name consistently. Use an underscore-prefixed
_PROJECT keyword for that purpose, based on the core framework practice.

Have the CreateProjectUsingMultiGerrit and DeleteProjectUsingMultiGerrit
scenarios still support configurable test project names, as independant
scenarios. Reuse core framework's JAVA_OPTS support for that matter, by
means of introducing the PROJECT keyword in scenario json data files.

CloneUsingMultiGerrit1 still enforces its own consistent test project
name, through its aggregating use of CreateProjectUsingMultiGerrit and
DeleteProjectUsingMultiGerrit. The 'project' JAVA_OPTS property
(defining PROJECT) should not be set in that case.

Change-Id: Ib1478381b82cd8cd53cb30522d0f2970edc4bab1
diff --git a/src/test/resources/com/googlesource/gerrit/plugins/multisite/scenarios/CloneUsingMultiGerrit1.json b/src/test/resources/com/googlesource/gerrit/plugins/multisite/scenarios/CloneUsingMultiGerrit1.json
index 26d227c..34d4ca0 100644
--- a/src/test/resources/com/googlesource/gerrit/plugins/multisite/scenarios/CloneUsingMultiGerrit1.json
+++ b/src/test/resources/com/googlesource/gerrit/plugins/multisite/scenarios/CloneUsingMultiGerrit1.json
@@ -1,6 +1,6 @@
 [
   {
-    "url": "http://HOSTNAME:HTTP_PORT1/loadtest-repo",
+    "url": "http://HOSTNAME:HTTP_PORT1/_PROJECT",
     "cmd": "clone"
   }
 ]
diff --git a/src/test/resources/com/googlesource/gerrit/plugins/multisite/scenarios/CreateProjectUsingMultiGerrit.json b/src/test/resources/com/googlesource/gerrit/plugins/multisite/scenarios/CreateProjectUsingMultiGerrit.json
index f1a38ae..40e5a45 100644
--- a/src/test/resources/com/googlesource/gerrit/plugins/multisite/scenarios/CreateProjectUsingMultiGerrit.json
+++ b/src/test/resources/com/googlesource/gerrit/plugins/multisite/scenarios/CreateProjectUsingMultiGerrit.json
@@ -1,5 +1,5 @@
 [
   {
-    "url": "http://HOSTNAME:HTTP_PORT/a/projects/loadtest-repo"
+    "url": "http://HOSTNAME:HTTP_PORT/a/projects/PROJECT"
   }
 ]
diff --git a/src/test/resources/com/googlesource/gerrit/plugins/multisite/scenarios/DeleteProjectUsingMultiGerrit.json b/src/test/resources/com/googlesource/gerrit/plugins/multisite/scenarios/DeleteProjectUsingMultiGerrit.json
index e5167b5..7cc8293 100644
--- a/src/test/resources/com/googlesource/gerrit/plugins/multisite/scenarios/DeleteProjectUsingMultiGerrit.json
+++ b/src/test/resources/com/googlesource/gerrit/plugins/multisite/scenarios/DeleteProjectUsingMultiGerrit.json
@@ -1,5 +1,5 @@
 [
   {
-    "url": "http://HOSTNAME:HTTP_PORT/a/projects/loadtest-repo/delete-project~delete"
+    "url": "http://HOSTNAME:HTTP_PORT/a/projects/PROJECT/delete-project~delete"
   }
 ]
diff --git a/src/test/scala/com/googlesource/gerrit/plugins/multisite/scenarios/CloneUsingMultiGerrit1.scala b/src/test/scala/com/googlesource/gerrit/plugins/multisite/scenarios/CloneUsingMultiGerrit1.scala
index 7adce59..4a7c65d 100644
--- a/src/test/scala/com/googlesource/gerrit/plugins/multisite/scenarios/CloneUsingMultiGerrit1.scala
+++ b/src/test/scala/com/googlesource/gerrit/plugins/multisite/scenarios/CloneUsingMultiGerrit1.scala
@@ -23,17 +23,19 @@
 
 class CloneUsingMultiGerrit1 extends GitSimulation {
   private val data: FileBasedFeederBuilder[Any]#F#F = jsonFile(resource).convert(url).queue
+  private val default: String = name
 
   override def replaceOverride(in: String): String = {
-    replaceProperty("http_port1", 8081, in)
+    val next = replaceProperty("http_port1", 8081, in)
+    replaceKeyWith("_project", default, next)
   }
 
   private val test: ScenarioBuilder = scenario(name)
     .feed(data)
     .exec(gitRequest)
 
-  private val createProject = new CreateProjectUsingMultiGerrit
-  private val deleteProject = new DeleteProjectUsingMultiGerrit
+  private val createProject = new CreateProjectUsingMultiGerrit(default)
+  private val deleteProject = new DeleteProjectUsingMultiGerrit(default)
 
   setUp(
     createProject.test.inject(
diff --git a/src/test/scala/com/googlesource/gerrit/plugins/multisite/scenarios/CreateProjectUsingMultiGerrit.scala b/src/test/scala/com/googlesource/gerrit/plugins/multisite/scenarios/CreateProjectUsingMultiGerrit.scala
index be82658..3ae12b5 100644
--- a/src/test/scala/com/googlesource/gerrit/plugins/multisite/scenarios/CreateProjectUsingMultiGerrit.scala
+++ b/src/test/scala/com/googlesource/gerrit/plugins/multisite/scenarios/CreateProjectUsingMultiGerrit.scala
@@ -14,14 +14,19 @@
 
 package com.googlesource.gerrit.plugins.multisite.scenarios
 
-import com.google.gerrit.scenarios.GerritSimulation
+import com.google.gerrit.scenarios.ProjectSimulation
 import io.gatling.core.Predef._
 import io.gatling.core.feeder.FileBasedFeederBuilder
 import io.gatling.core.structure.ScenarioBuilder
 
-class CreateProjectUsingMultiGerrit extends GerritSimulation {
+class CreateProjectUsingMultiGerrit extends ProjectSimulation {
   private val data: FileBasedFeederBuilder[Any]#F#F = jsonFile(resource).convert(url).queue
 
+  def this(default: String) {
+    this()
+    this.default = default
+  }
+
   val test: ScenarioBuilder = scenario(name)
     .feed(data)
     .exec(httpRequest)
diff --git a/src/test/scala/com/googlesource/gerrit/plugins/multisite/scenarios/DeleteProjectUsingMultiGerrit.scala b/src/test/scala/com/googlesource/gerrit/plugins/multisite/scenarios/DeleteProjectUsingMultiGerrit.scala
index 6e81231..ee645a9 100644
--- a/src/test/scala/com/googlesource/gerrit/plugins/multisite/scenarios/DeleteProjectUsingMultiGerrit.scala
+++ b/src/test/scala/com/googlesource/gerrit/plugins/multisite/scenarios/DeleteProjectUsingMultiGerrit.scala
@@ -14,14 +14,19 @@
 
 package com.googlesource.gerrit.plugins.multisite.scenarios
 
-import com.google.gerrit.scenarios.GerritSimulation
+import com.google.gerrit.scenarios.ProjectSimulation
 import io.gatling.core.Predef._
 import io.gatling.core.feeder.FileBasedFeederBuilder
 import io.gatling.core.structure.ScenarioBuilder
 
-class DeleteProjectUsingMultiGerrit extends GerritSimulation {
+class DeleteProjectUsingMultiGerrit extends ProjectSimulation {
   private val data: FileBasedFeederBuilder[Any]#F#F = jsonFile(resource).convert(url).queue
 
+  def this(default: String) {
+    this()
+    this.default = default
+  }
+
   val test: ScenarioBuilder = scenario(name)
     .feed(data)
     .exec(httpRequest)