From 51d37b5ddaff6d270d852e9a5943c23a2b06b525 Mon Sep 17 00:00:00 2001 From: Tao Zhou Date: Tue, 4 Feb 2020 12:48:21 +0100 Subject: [PATCH 1/2] Expand special search pattern on change id to 7-40 As gerrit uses 7 as sha length for most cases, expanding this pattern to 7 to allow auto-redirect to change detail page when only one match returned for that search query Bug: Issue 12184 Change-Id: I307620f262af15082acf8642d9d67538c7f01d87 (cherry picked from commit ab655592d9dc08f7628a2f742503d67bb6b7a22a) --- .../change-list/gr-change-list-view/gr-change-list-view.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/polygerrit-ui/app/elements/change-list/gr-change-list-view/gr-change-list-view.js b/polygerrit-ui/app/elements/change-list/gr-change-list-view/gr-change-list-view.js index be4c4972ec..2ac5ee8767 100644 --- a/polygerrit-ui/app/elements/change-list/gr-change-list-view/gr-change-list-view.js +++ b/polygerrit-ui/app/elements/change-list/gr-change-list-view/gr-change-list-view.js @@ -18,7 +18,7 @@ 'use strict'; const LookupQueryPatterns = { - CHANGE_ID: /^\s*i?[0-9a-f]{8,40}\s*$/i, + CHANGE_ID: /^\s*i?[0-9a-f]{7,40}\s*$/i, CHANGE_NUM: /^\s*[1-9][0-9]*\s*$/g, }; From 51b9b7da6e087fc63b6843301b5ccf7522384cd6 Mon Sep 17 00:00:00 2001 From: Marco Miller Date: Wed, 5 Feb 2020 14:55:47 -0500 Subject: [PATCH 2/2] e2e-tests: Make scenarios extend new GitSimulation Remove code duplication between the two scenario classes that way. Foster future framework reusability through such initial reuse. Bug: Issue 12281 Change-Id: I1e474901b2acc12554c0bb202456183a7a7a5e7e --- .../scenarios/CloneUsingBothProtocols.scala | 31 +----------- .../gerrit/scenarios/GitSimulation.scala | 48 +++++++++++++++++++ .../scenarios/ReplayRecordsFromFeeder.scala | 31 +----------- 3 files changed, 50 insertions(+), 60 deletions(-) create mode 100644 e2e-tests/load-tests/src/test/scala/com/google/gerrit/scenarios/GitSimulation.scala diff --git a/e2e-tests/load-tests/src/test/scala/com/google/gerrit/scenarios/CloneUsingBothProtocols.scala b/e2e-tests/load-tests/src/test/scala/com/google/gerrit/scenarios/CloneUsingBothProtocols.scala index 9e2aca0d67..c5a7cba5bf 100644 --- a/e2e-tests/load-tests/src/test/scala/com/google/gerrit/scenarios/CloneUsingBothProtocols.scala +++ b/e2e-tests/load-tests/src/test/scala/com/google/gerrit/scenarios/CloneUsingBothProtocols.scala @@ -14,29 +14,12 @@ package com.google.gerrit.scenarios -import java.io._ - -import com.github.barbasa.gatling.git.protocol.GitProtocol -import com.github.barbasa.gatling.git.request.builder.GitRequestBuilder -import com.github.barbasa.gatling.git.{GatlingGitConfiguration, GitRequestSession} import io.gatling.core.Predef._ -import io.gatling.core.feeder.FileBasedFeederBuilder import io.gatling.core.structure.ScenarioBuilder -import org.apache.commons.io.FileUtils -import org.eclipse.jgit.hooks._ import scala.concurrent.duration._ -class CloneUsingBothProtocols extends Simulation { - - implicit val conf: GatlingGitConfiguration = GatlingGitConfiguration() - implicit val postMessageHook: Option[String] = Some(s"hooks/${CommitMsgHook.NAME}") - - private val name: String = this.getClass.getSimpleName - private val file = s"data/$name.json" - private val data: FileBasedFeederBuilder[Any]#F = jsonFile(file).circular - private val request = new GitRequestBuilder(GitRequestSession("${cmd}", "${url}")) - private val protocol: GitProtocol = GitProtocol() +class CloneUsingBothProtocols extends GitSimulation { private val test: ScenarioBuilder = scenario(name) .feed(data) @@ -46,16 +29,4 @@ class CloneUsingBothProtocols extends Simulation { test.inject( constantUsersPerSec(1) during (2 seconds) )).protocols(protocol) - - after { - Thread.sleep(5000) - val path = conf.tmpBasePath - try { - FileUtils.deleteDirectory(new File(path)) - } catch { - case e: IOException => - System.err.println("Unable to delete temporary directory " + path) - e.printStackTrace() - } - } } diff --git a/e2e-tests/load-tests/src/test/scala/com/google/gerrit/scenarios/GitSimulation.scala b/e2e-tests/load-tests/src/test/scala/com/google/gerrit/scenarios/GitSimulation.scala new file mode 100644 index 0000000000..4d5130f98e --- /dev/null +++ b/e2e-tests/load-tests/src/test/scala/com/google/gerrit/scenarios/GitSimulation.scala @@ -0,0 +1,48 @@ +// 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 java.io.{File, IOException} + +import com.github.barbasa.gatling.git.protocol.GitProtocol +import com.github.barbasa.gatling.git.request.builder.GitRequestBuilder +import com.github.barbasa.gatling.git.{GatlingGitConfiguration, GitRequestSession} +import io.gatling.core.Predef._ +import io.gatling.core.feeder.FileBasedFeederBuilder +import org.apache.commons.io.FileUtils +import org.eclipse.jgit.hooks.CommitMsgHook + +class GitSimulation extends Simulation { + + implicit val conf: GatlingGitConfiguration = GatlingGitConfiguration() + implicit val postMessageHook: Option[String] = Some(s"hooks/${CommitMsgHook.NAME}") + + protected val name: String = this.getClass.getSimpleName + protected val data: FileBasedFeederBuilder[Any]#F = jsonFile(s"data/$name.json").circular + protected val request = new GitRequestBuilder(GitRequestSession("${cmd}", "${url}")) + protected val protocol: GitProtocol = GitProtocol() + + after { + Thread.sleep(5000) + val path = conf.tmpBasePath + try { + FileUtils.deleteDirectory(new File(path)) + } catch { + case e: IOException => + System.err.println("Unable to delete temporary directory " + path) + e.printStackTrace() + } + } +} diff --git a/e2e-tests/load-tests/src/test/scala/com/google/gerrit/scenarios/ReplayRecordsFromFeeder.scala b/e2e-tests/load-tests/src/test/scala/com/google/gerrit/scenarios/ReplayRecordsFromFeeder.scala index 5a3bb9961d..82342be494 100644 --- a/e2e-tests/load-tests/src/test/scala/com/google/gerrit/scenarios/ReplayRecordsFromFeeder.scala +++ b/e2e-tests/load-tests/src/test/scala/com/google/gerrit/scenarios/ReplayRecordsFromFeeder.scala @@ -14,29 +14,12 @@ package com.google.gerrit.scenarios -import java.io._ - -import com.github.barbasa.gatling.git.protocol.GitProtocol -import com.github.barbasa.gatling.git.request.builder.GitRequestBuilder -import com.github.barbasa.gatling.git.{GatlingGitConfiguration, GitRequestSession} import io.gatling.core.Predef._ -import io.gatling.core.feeder.FileBasedFeederBuilder import io.gatling.core.structure.ScenarioBuilder -import org.apache.commons.io.FileUtils -import org.eclipse.jgit.hooks._ import scala.concurrent.duration._ -class ReplayRecordsFromFeeder extends Simulation { - - implicit val conf: GatlingGitConfiguration = GatlingGitConfiguration() - implicit val postMessageHook: Option[String] = Some(s"hooks/${CommitMsgHook.NAME}") - - private val name: String = this.getClass.getSimpleName - private val file = s"data/$name.json" - private val data: FileBasedFeederBuilder[Any]#F = jsonFile(file).circular - private val request = new GitRequestBuilder(GitRequestSession("${cmd}", "${url}")) - private val protocol: GitProtocol = GitProtocol() +class ReplayRecordsFromFeeder extends GitSimulation { private val test: ScenarioBuilder = scenario(name) .repeat(10000) { @@ -53,16 +36,4 @@ class ReplayRecordsFromFeeder extends Simulation { constantUsersPerSec(20) during (15 seconds) randomized )).protocols(protocol) .maxDuration(60 seconds) - - after { - Thread.sleep(5000) - val path = conf.tmpBasePath - try { - FileUtils.deleteDirectory(new File(path)) - } catch { - case e: IOException => - System.err.println("Unable to delete temporary directory " + path) - e.printStackTrace() - } - } }