diff options
author | Nguyen Tuan Khang Phan <nguyen.tuan.khang.phan@ericsson.com> | 2021-02-18 14:38:25 -0500 |
---|---|---|
committer | Nguyen Tuan Khang Phan <phan.khang5@gmail.com> | 2021-03-01 13:46:21 +0000 |
commit | e2ca24a0a4531ebb377e6af41d5178d48eb48d9c (patch) | |
tree | b0d02c27ffa508a9cf9b0bcbb490308ef1d7d3c1 | |
parent | cda42da487dd97c017e30053e9a8b4b4168b90d6 (diff) |
e2e-tests: add AbandonChange scenario
This change adds a new abandon scenario which is more common to see in
daily use compared to a delete change one. Most Gerrit users do not
have permission to delete a change. Moreover, users are more likely to
abandon the change than delete it. The newly added scenario also
supports the 'numberOfUsers' parameter.
Change-Id: I5da8ff06fa16075b21b30c53b014b794acec08f3
-rw-r--r-- | e2e-tests/src/test/resources/data/com/google/gerrit/scenarios/AbandonChange.json | 6 | ||||
-rw-r--r-- | e2e-tests/src/test/scala/com/google/gerrit/scenarios/AbandonChange.scala | 62 |
2 files changed, 68 insertions, 0 deletions
diff --git a/e2e-tests/src/test/resources/data/com/google/gerrit/scenarios/AbandonChange.json b/e2e-tests/src/test/resources/data/com/google/gerrit/scenarios/AbandonChange.json new file mode 100644 index 0000000000..665cc4d0b4 --- /dev/null +++ b/e2e-tests/src/test/resources/data/com/google/gerrit/scenarios/AbandonChange.json @@ -0,0 +1,6 @@ +[ + { + "url": "HTTP_SCHEME://HOSTNAME:HTTP_PORT/a/changes/", + "number": "NUMBER" + } +] diff --git a/e2e-tests/src/test/scala/com/google/gerrit/scenarios/AbandonChange.scala b/e2e-tests/src/test/scala/com/google/gerrit/scenarios/AbandonChange.scala new file mode 100644 index 0000000000..11249e3f15 --- /dev/null +++ b/e2e-tests/src/test/scala/com/google/gerrit/scenarios/AbandonChange.scala @@ -0,0 +1,62 @@ +// 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.DurationInt + +class AbandonChange extends GerritSimulation { + private val data: FeederBuilder = jsonFile(resource).convert(keys).circular + private val projectName = className + private var numbersCopy: mutable.Queue[Int] = mutable.Queue[Int]() + + private val test: ScenarioBuilder = scenario(uniqueName) + .feed(data) + .exec(session => { + if (numbersCopy.isEmpty) { + numbersCopy = createChange.numbers.clone() + } + session.set("number", numbersCopy.dequeue()) + }) + .exec(http(uniqueName).post("${url}${number}/abandon")) + + private val createProject = new CreateProject(projectName) + private val createChange = new CreateChange(projectName) + private val deleteProject = new DeleteProject(projectName) + + setUp( + createProject.test.inject( + nothingFor(stepWaitTime(createProject) seconds), + atOnceUsers(single) + ), + createChange.test.inject( + nothingFor(stepWaitTime(createChange) seconds), + atOnceUsers(numberOfUsers) + ), + test.inject( + nothingFor(stepWaitTime(this) seconds), + atOnceUsers(numberOfUsers) + ), + deleteProject.test.inject( + nothingFor(stepWaitTime(deleteProject) seconds), + atOnceUsers(single) + ), + ).protocols(httpProtocol) +} |