You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@usergrid.apache.org by gr...@apache.org on 2015/08/12 23:35:41 UTC
[4/6] incubator-usergrid git commit: USERGRID-871: new custom
injection test plus loading no-name entities
USERGRID-871: new custom injection test plus loading no-name entities
Project: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/commit/d3174e6d
Tree: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/tree/d3174e6d
Diff: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/diff/d3174e6d
Branch: refs/heads/two-dot-o-dev
Commit: d3174e6d7474e6d257cbe66ef996bf76b3ea86af
Parents: 211fe1a
Author: Mike Dunker <mi...@calbears.net>
Authored: Tue Aug 11 17:03:24 2015 -0700
Committer: Mike Dunker <mi...@calbears.net>
Committed: Tue Aug 11 17:03:24 2015 -0700
----------------------------------------------------------------------
.../runCustomInjectRandomEntityByUuidTest.sh | 107 +++++++++++++++++++
stack/loadtests/runLoadNoNameEntities.sh | 97 +++++++++++++++++
.../datagenerators/FeederGenerator.scala | 9 +-
.../usergrid/enums/ConfigProperties.scala | 4 +-
.../usergrid/enums/EndConditionType.scala | 3 +-
.../usergrid/scenarios/AuditScenarios.scala | 6 +-
.../org/apache/usergrid/settings/Settings.scala | 2 +-
.../simulations/ConfigurableSimulation.scala | 6 ++
.../simulations/CustomInjectionSimulation.scala | 107 +++++++++++++++++++
stack/loadtests/testConfig.sh | 6 +-
10 files changed, 335 insertions(+), 12 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/d3174e6d/stack/loadtests/runCustomInjectRandomEntityByUuidTest.sh
----------------------------------------------------------------------
diff --git a/stack/loadtests/runCustomInjectRandomEntityByUuidTest.sh b/stack/loadtests/runCustomInjectRandomEntityByUuidTest.sh
new file mode 100755
index 0000000..3164a9d
--- /dev/null
+++ b/stack/loadtests/runCustomInjectRandomEntityByUuidTest.sh
@@ -0,0 +1,107 @@
+#!/bin/bash
+#
+# 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.
+#
+
+#
+# Injection list:
+# type(arg1,arg2,...);type(arg1,...)
+#
+# types:
+# rampUsers(int numUsers, int overSeconds)
+# constantUsersPerSec(double numUsersPerSec, int duringSeconds)
+# constantUsersPerSecRandomized(double numUsersPerSec, int duringSeconds)
+# atOnceUsers(int numUsers)
+# rampUsersPerSec(double numUsersPerSec, int totalUsers, int duringSeconds)
+# rampUsersPerSecRandomized(double numUsersPerSec, int totalUsers, int duringSeconds)
+# heavisideUsers(int numUsers, int overSeconds)
+# nothingFor(int seconds)
+#
+# Example: rampUsers(30,120);nothingFor(120);atOnceUsers(20)
+
+DIR="${BASH_SOURCE%/*}"
+if [[ ! -d "$DIR" ]]; then DIR="$PWD"; fi
+. "$DIR/testConfig.sh"
+
+# from testConfig.sh
+#URL=
+#ADMIN_USER=
+#ADMIN_PASSWORD=
+#ORG=
+#APP=
+#AUTH_TYPE=
+#TOKEN_TYPE=
+#CREATE_ORG=
+#CREATE_APP=
+#LOAD_ENTITIES=
+#SANDBOX_COLLECTION=
+#NUM_ENTITIES=
+#SKIP_SETUP=
+#COLLECTION=
+#RETRY_COUNT=
+#END_CONDITION_TYPE=
+#END_MINUTES=
+#END_REQUEST_COUNT=
+#INJECTION_LIST=
+
+helpMsg() {
+ echo "At least 2 arguments required, $# provided. Example is $0 INJECTION_LIST UUID_FILENAME" 1>&2
+ echo "Injection types:" 1>&2
+ echo " rampUsers(int numUsers, int overSeconds)" 1>&2
+ echo " constantUsersPerSec(double numUsersPerSec, int duringSeconds)" 1>&2
+ echo " constantUsersPerSecRandomized(double numUsersPerSec, int duringSeconds)" 1>&2
+ echo " atOnceUsers(int numUsers)" 1>&2
+ echo " rampUsersPerSec(double numUsersPerSec, int totalUsers, int duringSeconds)" 1>&2
+ echo " rampUsersPerSecRandomized(double numUsersPerSec, int totalUsers, int duringSeconds)" 1>&2
+ echo " heavisideUsers(int numUsers, int overSeconds)" 1>&2
+ echo " nothingFor(int seconds)" 1>&2
+ exit 1
+}
+
+[ "$#" -ge 2 ] || helpMsg
+
+INJECTION_LIST="$1"
+UUID_FILENAME="$2"
+
+shift 2
+
+SCENARIO_TYPE=uuidRandomInfinite
+
+#Compile everything
+mvn compile
+
+#Execute the test
+mvn gatling:execute \
+-DbaseUrl=${URL} \
+-DadminUser=${ADMIN_USER} \
+-DadminPassword=${ADMIN_PASSWORD} \
+-Dorg=${ORG} \
+-Dapp=${APP} \
+-DauthType=${AUTH_TYPE} \
+-DtokenType=${TOKEN_TYPE} \
+-DcreateOrg=${CREATE_ORG} \
+-DcreateApp=${CREATE_APP} \
+-DloadEntities=${LOAD_ENTITIES} \
+-DsandboxCollection=${SANDBOX_COLLECTION} \
+-DnumEntities=${NUM_ENTITIES} \
+-DskipSetup=${SKIP_SETUP} \
+-Dcollection=${COLLECTION} \
+-DretryCount=${RETRY_COUNT} \
+-DendConditionType=${END_CONDITION_TYPE} \
+-DendMinutes=${END_MINUTES} \
+-DendRequestCount=${END_REQUEST_COUNT} \
+-DscenarioType=${SCENARIO_TYPE} \
+-DuuidFilename=${UUID_FILENAME} \
+-DinjectionList=${INJECTION_LIST} \
+-Dgatling.simulationClass=org.apache.usergrid.simulations.CustomInjectionSimulation
+
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/d3174e6d/stack/loadtests/runLoadNoNameEntities.sh
----------------------------------------------------------------------
diff --git a/stack/loadtests/runLoadNoNameEntities.sh b/stack/loadtests/runLoadNoNameEntities.sh
new file mode 100755
index 0000000..4acf1cc
--- /dev/null
+++ b/stack/loadtests/runLoadNoNameEntities.sh
@@ -0,0 +1,97 @@
+#!/bin/bash
+#
+# 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.
+
+
+DIR="${BASH_SOURCE%/*}"
+if [[ ! -d "$DIR" ]]; then DIR="$PWD"; fi
+. "$DIR/testConfig.sh"
+
+# from testConfig.sh
+#URL=
+#ADMIN_USER=
+#ADMIN_PASSWORD=
+#ENTITY_WORKER_NUM= #may be overridden on command line
+#ENTITY_WORKER_COUNT= #may be overridden on command line
+#ORG=
+#APP=
+#AUTH_TYPE=
+#TOKEN_TYPE=
+#CREATE_ORG=
+#CREATE_APP=
+#SANDBOX_COLLECTION=
+#NUM_ENTITIES= #may be overridden on command line
+#SKIP_SETUP=
+#ENTITY_SEED= #may be overridden on command line
+#RETRY_COUNT=
+#ENTITY_PROGRESS_COUNT=
+#CONSTANT_USERS_PER_SEC=
+#CONSTANT_USERS_DURATION=
+
+
+die() { echo "$@" 1>&2 ; exit 1; }
+
+[ "$#" -ge 2 ] || die "At least 2 arguments required, $# provided. Example is $0 RAMP_USERS RAMP_TIME(seconds) [UUID_FILENAME [NUM_ENTITIES [ENTITY_SEED [ENTITY_WORKER_NUM [ENTITY_WORKER_COUNT]]]]]"
+
+RAMP_USERS="$1"
+RAMP_TIME="$2"
+[ "$#" -ge 3 ] && UUID_FILENAME="$3"
+[ "$#" -ge 4 ] && NUM_ENTITIES="$4"
+[ "$#" -ge 5 ] && ENTITY_SEED="$5"
+[ "$#" -ge 6 ] && ENTITY_WORKER_NUM="$6"
+[ "$#" -ge 7 ] && ENTITY_WORKER_COUNT="$7"
+
+shift $#
+
+SCENARIO_TYPE=loadEntities
+ENTITY_TYPE=trivialSortable
+ENTITY_PREFIX=""
+COLLECTION=nonames
+
+# don't load entities as part of setup (loading entities is the point of the test)
+LOAD_ENTITIES=false
+
+#Compile everything
+mvn compile
+
+#Execute the test
+mvn gatling:execute \
+-DbaseUrl=${URL} \
+-DadminUser=${ADMIN_USER} \
+-DadminPassword=${ADMIN_PASSWORD} \
+-DentityWorkerNum=${ENTITY_WORKER_NUM} \
+-DentityWorkerCount=${ENTITY_WORKER_COUNT} \
+-Dorg=${ORG} \
+-Dapp=${APP} \
+-DauthType=${AUTH_TYPE} \
+-DtokenType=${TOKEN_TYPE} \
+-DcreateOrg=${CREATE_ORG} \
+-DcreateApp=${CREATE_APP} \
+-DsandboxCollection=${SANDBOX_COLLECTION} \
+-DnumEntities=${NUM_ENTITIES} \
+-DskipSetup=${SKIP_SETUP} \
+-Dcollection=${COLLECTION} \
+-DentitySeed=${ENTITY_SEED} \
+-DretryCount=${RETRY_COUNT} \
+-DentityProgressCount=${ENTITY_PROGRESS_COUNT} \
+-DconstantUsersPerSec=${CONSTANT_USERS_PER_SEC} \
+-DconstantUsersDuration=${CONSTANT_USERS_DURATION} \
+-DscenarioType=${SCENARIO_TYPE} \
+-DentityType=${ENTITY_TYPE} \
+-DentityPrefix=${ENTITY_PREFIX} \
+-DloadEntities=${LOAD_ENTITIES} \
+-DrampUsers=${RAMP_USERS} \
+-DrampTime=${RAMP_TIME} \
+-DuuidFilename=${UUID_FILENAME} \
+-Dgatling.simulationClass=org.apache.usergrid.simulations.ConfigurableSimulation
+
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/d3174e6d/stack/loadtests/src/main/scala/org/apache/usergrid/datagenerators/FeederGenerator.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/datagenerators/FeederGenerator.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/datagenerators/FeederGenerator.scala
index 55c0bfe..9546e2d 100755
--- a/stack/loadtests/src/main/scala/org/apache/usergrid/datagenerators/FeederGenerator.scala
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/datagenerators/FeederGenerator.scala
@@ -211,7 +211,7 @@ object FeederGenerator {
* This feeder will serve data forever, but validEntity will be set to "no" when data has run out. Each user can
* then exit in a controlled fashion.
*/
- def generateCustomEntityFeeder(numEntities: Int, entityType: String, prefix: String, seed: Int = 1): Feeder[String] =
+ def generateCustomEntityFeeder(numEntities: Int, entityType: String, prefix: String = "", seed: Int = 1): Feeder[String] =
new Feeder[String] {
var counter = new AtomicInteger(0)
@@ -221,8 +221,9 @@ object FeederGenerator {
override def next(): Map[String, String] = {
val i = counter.getAndIncrement()
val seededVal = i + seed
- val entityName = prefix.concat(seededVal.toString)
- val entity = EntityDataGenerator.generateEntity(entityType, entityName)
+ val noPrefix = prefix == null || prefix == ""
+ val entityName = if (noPrefix) seededVal.toString else prefix.concat(seededVal.toString)
+ val entity = EntityDataGenerator.generateEntity(entityType, if (noPrefix) null else entityName)
val entityUrl = Settings.baseCollectionUrl + "/" + entityName
val validEntity = if (i >= numEntities) "no" else "yes"
@@ -282,7 +283,7 @@ object FeederGenerator {
}
def generateCustomEntityInfiniteFeeder(seed: Int = Settings.entitySeed, entityType: String = Settings.entityType, prefix: String = Settings.entityPrefix): Iterator[String] = {
- Iterator.from(seed).map(i=>EntityDataGenerator.generateEntity(entityType, prefix.concat(i.toString)))
+ Iterator.from(seed).map(i=>EntityDataGenerator.generateEntity(entityType, if (prefix == null || prefix == "") null else prefix.concat(i.toString)))
}
}
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/d3174e6d/stack/loadtests/src/main/scala/org/apache/usergrid/enums/ConfigProperties.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/enums/ConfigProperties.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/enums/ConfigProperties.scala
index 03581ba..230f58b 100644
--- a/stack/loadtests/src/main/scala/org/apache/usergrid/enums/ConfigProperties.scala
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/enums/ConfigProperties.scala
@@ -74,6 +74,7 @@ object ConfigProperties {
val RetryCount = "retryCount"
val LaterThanTimestamp = "laterThanTimestamp"
val EntityProgressCount = "entityProgressCount"
+ val InjectionList = "injectionList"
val Values = Seq(Org,App,AdminUser,AdminPassword,BaseUrl,AuthType,TokenType,SkipSetup,CreateOrg,CreateApp,LoadEntities,
ScenarioType,RampUsers,ConstantUsersPerSec,ConstantUsersDuration,UserSeed,AppUser,AppUserPassword,NumEntities,
@@ -81,7 +82,7 @@ object ConfigProperties {
EntityType,EntitySeed,SearchLimit,SearchQuery,EndConditionType,EndMinutes,EndRequestCount,OrgCreationUsername,
OrgCreationName,OrgCreationEmail,OrgCreationPassword,UpdateProperty,UpdateValue,EntityWorkerCount,EntityWorkerNum,
UuidFilename,AuditUuidFilename,FailedUuidFilename,SandboxCollection,PurgeUsers,RetryCount,LaterThanTimestamp,
- EntityProgressCount)
+ EntityProgressCount,InjectionList)
def isValid(str: String): Boolean = {
Values.contains(str)
@@ -143,6 +144,7 @@ object ConfigProperties {
case RetryCount => 5
case LaterThanTimestamp => 0L
case EntityProgressCount => 10000L
+ case InjectionList => "rampUsers(10,60)"
}
} else {
null
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/d3174e6d/stack/loadtests/src/main/scala/org/apache/usergrid/enums/EndConditionType.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/enums/EndConditionType.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/enums/EndConditionType.scala
index 6d77dd1..5dd78ad 100644
--- a/stack/loadtests/src/main/scala/org/apache/usergrid/enums/EndConditionType.scala
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/enums/EndConditionType.scala
@@ -19,8 +19,9 @@ package org.apache.usergrid.enums
object EndConditionType {
val MinutesElapsed = "minutesElapsed"
val RequestCount = "requestCount"
+ val Unlimited = "unlimited"
- val Values = Seq(MinutesElapsed,RequestCount)
+ val Values = Seq(MinutesElapsed,RequestCount,Unlimited)
def isValid(str: String): Boolean = {
Values.contains(str)
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/d3174e6d/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/AuditScenarios.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/AuditScenarios.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/AuditScenarios.scala
index cdaa89b..b3d19b4 100644
--- a/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/AuditScenarios.scala
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/AuditScenarios.scala
@@ -121,13 +121,13 @@ object AuditScenarios {
if (count < 1) {
Settings.addAuditUuid(uuid, collectionName, entityName, modified)
Settings.incAuditNotFound()
- println(s"NOT FOUND: $collectionName.$entityName $uuid")
+ println(s"NOT FOUND: $collectionName.$entityName ($uuid)")
} else if (count > 1) {
Settings.addAuditUuid(uuid, collectionName, entityName, modified)
Settings.incAuditBadResponse()
- println(s"INVALID RESPONSE (count=$count): $collectionName.$entityName $uuid")
+ println(s"INVALID RESPONSE (count=$count): $collectionName.$entityName ($uuid)")
} else {
- // println(s"FOUND: $collectionName.$entityName $uuid")
+ // println(s"FOUND: $collectionName.$entityName ($uuid)")
Settings.incAuditSuccess()
}
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/d3174e6d/stack/loadtests/src/main/scala/org/apache/usergrid/settings/Settings.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/settings/Settings.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/settings/Settings.scala
index 08e1ae2..6c226d5 100755
--- a/stack/loadtests/src/main/scala/org/apache/usergrid/settings/Settings.scala
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/settings/Settings.scala
@@ -128,7 +128,6 @@ object Settings {
val overallEntitySeed = initIntSetting(ConfigProperties.EntitySeed)
val searchLimit:Int = initIntSetting(ConfigProperties.SearchLimit)
val searchQuery = initStrSetting(ConfigProperties.SearchQuery)
- println(s"searchQuery=${searchQuery}")
val endConditionType = initStrSetting(ConfigProperties.EndConditionType)
val endMinutes:Int = initIntSetting(ConfigProperties.EndMinutes)
val endRequestCount:Int = initIntSetting(ConfigProperties.EndRequestCount)
@@ -146,6 +145,7 @@ object Settings {
val laterThanTimestamp:Long = initLongSetting(ConfigProperties.LaterThanTimestamp)
val entityProgressCount:Long = initLongSetting(ConfigProperties.EntityProgressCount)
private val logEntityProgress: Boolean = entityProgressCount > 0L
+ val injectionList = initStrSetting(ConfigProperties.InjectionList)
// Entity update
val updateProperty = initStrSetting(ConfigProperties.UpdateProperty)
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/d3174e6d/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/ConfigurableSimulation.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/ConfigurableSimulation.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/ConfigurableSimulation.scala
index ac4cfd4..66aaac0 100755
--- a/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/ConfigurableSimulation.scala
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/ConfigurableSimulation.scala
@@ -89,10 +89,16 @@ class ConfigurableSimulation extends Simulation {
}
after {
+ endHandler
+ }
+
+ def endHandler: Unit = {
Settings.setTestEndTime()
if (Settings.captureUuids) Settings.writeUuidsToFile()
Settings.printSettingsSummary(true)
}
+ sys addShutdownHook(endHandler)
+
}
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/d3174e6d/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/CustomInjectionSimulation.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/CustomInjectionSimulation.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/CustomInjectionSimulation.scala
new file mode 100755
index 0000000..9d27173
--- /dev/null
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/CustomInjectionSimulation.scala
@@ -0,0 +1,107 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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 org.apache.usergrid.simulations
+
+import io.gatling.core.Predef._
+import io.gatling.core.controller.inject.InjectionStep
+import io.gatling.core.structure.ScenarioBuilder
+import org.apache.usergrid.enums.ScenarioType
+import org.apache.usergrid.helpers.Setup
+import org.apache.usergrid.scenarios.EntityCollectionScenarios
+import org.apache.usergrid.settings.Settings
+
+import scala.collection.mutable
+
+/**
+ * Simulations with custom injection.
+ */
+class CustomInjectionSimulation extends Simulation {
+
+ def getScenario(scenarioType: String): ScenarioBuilder = {
+ scenarioType match {
+ case ScenarioType.LoadEntities => EntityCollectionScenarios.loadEntities
+ case ScenarioType.DeleteEntities => EntityCollectionScenarios.deleteEntities
+ case ScenarioType.UpdateEntities => EntityCollectionScenarios.updateEntities
+ case ScenarioType.GetAllByCursor => EntityCollectionScenarios.getEntityPagesToEnd
+ case ScenarioType.NameRandomInfinite => EntityCollectionScenarios.getRandomEntitiesByName
+ case ScenarioType.UuidRandomInfinite => EntityCollectionScenarios.getRandomEntitiesByUuid
+ case ScenarioType.GetByNameSequential => EntityCollectionScenarios.getEntitiesByNameSequential
+ case _ => null
+ }
+ }
+
+ before{
+ if (!Settings.skipSetup) {
+ println("Begin setup")
+ if (Settings.createOrg) Setup.setupOrg()
+ if (Settings.createApp) Setup.setupApplication()
+ if (Settings.loadEntities) Setup.setupEntitiesCollection(Settings.numEntities, Settings.entityType, Settings.entityPrefix, Settings.entitySeed)
+ } else {
+ println("Skipping setup")
+ }
+ if (Settings.sandboxCollection) Setup.sandboxCollection()
+ Settings.setTestStartTime()
+ }
+
+ if (ScenarioType.isValid(Settings.scenarioType)) {
+ val scenario: ScenarioBuilder = getScenario(Settings.scenarioType)
+
+ val injectionList:String = Settings.injectionList
+ val injectStepsArray:Array[String] = injectionList.split("\\s*;\\s*")
+ val injectStepList:mutable.ArraySeq[InjectionStep] = new mutable.ArraySeq[InjectionStep](injectStepsArray.length)
+ for (i <- injectStepsArray.indices) {
+ val injectionStep = injectStepsArray(i).trim
+ println(injectionStep)
+ val stepRegex = """(.+)\((.*)\)""".r
+ val stepRegex(stepType,stepArgsStr) = injectionStep
+ println(s"stepType:$stepType stepArgs:$stepArgsStr")
+ val stepArgs = stepArgsStr.split("\\s*,\\s*")
+ injectStepList(i) = stepType match {
+ case "rampUsers" => rampUsers(stepArgs(0).toInt) over stepArgs(1).toInt
+ case "constantUsersPerSec" => constantUsersPerSec(stepArgs(0).toDouble) during stepArgs(1).toInt
+ case "constantUsersPerSecRandomized" => constantUsersPerSec(stepArgs(0).toDouble) during stepArgs(1).toInt randomized
+ case "atOnceUsers" => atOnceUsers(stepArgs(0).toInt)
+ case "rampUsersPerSec" => rampUsersPerSec(stepArgs(0).toDouble) to stepArgs(1).toInt during stepArgs(2).toInt
+ case "rampUsersPerSecRandomized" => rampUsersPerSec(stepArgs(0).toDouble) to stepArgs(1).toInt during stepArgs(2).toInt randomized
+ case "heavisideUsers" => heavisideUsers(stepArgs(0).toInt) over stepArgs(1).toInt
+ case "nothingFor" => nothingFor(stepArgs(0).toInt)
+ }
+ }
+
+ setUp(
+ scenario
+ .inject(injectStepList)
+ .protocols(Settings.httpConf.acceptHeader("application/json"))
+ )
+ } else {
+ println(s"scenarioType ${Settings.scenarioType} not found.")
+ }
+
+ after {
+ endHandler
+ }
+
+ def endHandler: Unit = {
+ Settings.setTestEndTime()
+ if (Settings.captureUuids) Settings.writeUuidsToFile()
+ Settings.printSettingsSummary(true)
+ }
+
+ sys addShutdownHook(endHandler)
+
+}
+
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/d3174e6d/stack/loadtests/testConfig.sh
----------------------------------------------------------------------
diff --git a/stack/loadtests/testConfig.sh b/stack/loadtests/testConfig.sh
index 1e20637..0901e99 100755
--- a/stack/loadtests/testConfig.sh
+++ b/stack/loadtests/testConfig.sh
@@ -37,7 +37,7 @@ SANDBOX_COLLECTION=true
NUM_ENTITIES=10000
SKIP_SETUP=false
-COLLECTION=thousand
+COLLECTION=thousands
ENTITY_TYPE=trivialSortable
ENTITY_PREFIX=sortable
ENTITY_SEED=1
@@ -50,8 +50,10 @@ ENTITY_PROGRESS_COUNT=1000
END_CONDITION_TYPE=minutesElapsed
#END_CONDITION_TYPE=requestCount
-END_MINUTES=2
+END_MINUTES=5
END_REQUEST_COUNT=100
CONSTANT_USERS_PER_SEC=0
CONSTANT_USERS_DURATION=10
+
+INJECTION_LIST="rampUsers(100,300);nothingFor(300)"