You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@usergrid.apache.org by mr...@apache.org on 2015/10/20 21:17:53 UTC
[01/10] usergrid git commit: USERGRID-1044: support for multi-worker
tests without end that can be audited
Repository: usergrid
Updated Branches:
refs/heads/master 59edea1c2 -> 1393c2f76
USERGRID-1044: support for multi-worker tests without end
that can be audited
Project: http://git-wip-us.apache.org/repos/asf/usergrid/repo
Commit: http://git-wip-us.apache.org/repos/asf/usergrid/commit/a9927a3b
Tree: http://git-wip-us.apache.org/repos/asf/usergrid/tree/a9927a3b
Diff: http://git-wip-us.apache.org/repos/asf/usergrid/diff/a9927a3b
Branch: refs/heads/master
Commit: a9927a3baa23bcd30dcacb4255af649c38ed3d90
Parents: 91fa489
Author: Mike Dunker <md...@apigee.com>
Authored: Tue Oct 6 14:24:40 2015 -0700
Committer: Mike Dunker <md...@apigee.com>
Committed: Tue Oct 6 14:24:40 2015 -0700
----------------------------------------------------------------------
stack/loadtests/runDeleteEntities.sh | 13 ++-
stack/loadtests/runLoadEntitiesUnlimited.sh | 101 +++++++++++++++++++
.../datagenerators/FeederGenerator.scala | 9 +-
.../usergrid/enums/ConfigProperties.scala | 11 +-
.../apache/usergrid/helpers/Extractors.scala | 10 ++
.../scenarios/EntityCollectionScenarios.scala | 27 +++--
.../org/apache/usergrid/settings/Settings.scala | 94 ++++++++++++-----
stack/loadtests/testConfig.sh | 2 +
8 files changed, 227 insertions(+), 40 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/usergrid/blob/a9927a3b/stack/loadtests/runDeleteEntities.sh
----------------------------------------------------------------------
diff --git a/stack/loadtests/runDeleteEntities.sh b/stack/loadtests/runDeleteEntities.sh
index 2013e89..d0da19b 100755
--- a/stack/loadtests/runDeleteEntities.sh
+++ b/stack/loadtests/runDeleteEntities.sh
@@ -42,24 +42,27 @@ if [[ ! -d "$DIR" ]]; then DIR="$PWD"; fi
die() { echo "$@" 1>&2 ; exit 1; }
-[ "$#" -ge 2 ] || die "At least 2 arguments required, $# provided. Example is $0 RAMP_USERS RAMP_TIME(seconds) [NUM_ENTITIES [ENTITY_SEED [ENTITY_WORKER_NUM [ENTITY_WORKER_COUNT]]]]"
+[ "$#" -ge 3 ] || die "At least 3 arguments required, $# provided. Example is $0 RAMP_USERS RAMP_TIME(seconds) ENTITY_PREFIX [NUM_ENTITIES [ENTITY_SEED [ENTITY_WORKER_NUM [ENTITY_WORKER_COUNT]]]]"
RAMP_USERS="$1"
RAMP_TIME="$2"
-[ "$#" -ge 3 ] && NUM_ENTITIES="$3"
-[ "$#" -ge 4 ] && ENTITY_SEED="$4"
-[ "$#" -ge 5 ] && ENTITY_WORKER_NUM="$5"
-[ "$#" -ge 6 ] && ENTITY_WORKER_COUNT="$6"
+ENTITY_PREFIX="$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=deleteEntities
+INTERLEAVED_WORKER_FEED=true
#Compile everything
mvn compile
#Execute the test
mvn gatling:execute \
+-DinterleavedWorkerFeed=${INTERLEAVED_WORKER_FEED} \
-DbaseUrl=${URL} \
-DadminUser=${ADMIN_USER} \
-DadminPassword=${ADMIN_PASSWORD} \
http://git-wip-us.apache.org/repos/asf/usergrid/blob/a9927a3b/stack/loadtests/runLoadEntitiesUnlimited.sh
----------------------------------------------------------------------
diff --git a/stack/loadtests/runLoadEntitiesUnlimited.sh b/stack/loadtests/runLoadEntitiesUnlimited.sh
new file mode 100755
index 0000000..9222a57
--- /dev/null
+++ b/stack/loadtests/runLoadEntitiesUnlimited.sh
@@ -0,0 +1,101 @@
+#!/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= #ignored
+#SKIP_SETUP=
+#COLLECTION=
+#ENTITY_TYPE=
+#ENTITY_PREFIX=
+#ENTITY_SEED= #may be overridden on command line
+#RETRY_COUNT=
+#ENTITY_PROGRESS_COUNT=
+#CONSTANT_USERS_PER_SEC=
+#CONSTANT_USERS_DURATION=
+#FLUSH_CSV
+
+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 [ENTITY_SEED [ENTITY_WORKER_NUM [ENTITY_WORKER_COUNT]]]]"
+
+RAMP_USERS="$1"
+RAMP_TIME="$2"
+[ "$#" -ge 3 ] && UUID_FILENAME="$3"
+[ "$#" -ge 4 ] && ENTITY_SEED="$4"
+[ "$#" -ge 5 ] && ENTITY_WORKER_NUM="$5"
+[ "$#" -ge 6 ] && ENTITY_WORKER_COUNT="$6"
+
+shift $#
+
+SCENARIO_TYPE=loadEntities
+NEW_CSV_ON_FLUSH=true
+FLUSH_CSV=10000
+
+# 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 \
+-DflushCsv=${FLUSH_CSV} \
+-DunlimitedFeed=true \
+-DnewCsvOnFlush=${NEW_CSV_ON_FLUSH} \
+-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} \
+-DskipSetup=${SKIP_SETUP} \
+-Dcollection=${COLLECTION} \
+-DentityType=${ENTITY_TYPE} \
+-DentityPrefix=${ENTITY_PREFIX} \
+-DentitySeed=${ENTITY_SEED} \
+-DretryCount=${RETRY_COUNT} \
+-DentityProgressCount=${ENTITY_PROGRESS_COUNT} \
+-DconstantUsersPerSec=${CONSTANT_USERS_PER_SEC} \
+-DconstantUsersDuration=${CONSTANT_USERS_DURATION} \
+-DscenarioType=${SCENARIO_TYPE} \
+-DloadEntities=${LOAD_ENTITIES} \
+-DrampUsers=${RAMP_USERS} \
+-DrampTime=${RAMP_TIME} \
+-DuuidFilename=${UUID_FILENAME} \
+-DprintFailedRequests=${PRINT_FAILED_REQUESTS} \
+-Dgatling.simulationClass=org.apache.usergrid.simulations.ConfigurableSimulation
+
http://git-wip-us.apache.org/repos/asf/usergrid/blob/a9927a3b/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 ca93fdc..e08f8e8 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
@@ -220,16 +220,19 @@ object FeederGenerator {
override def next(): Map[String, String] = {
val i = counter.getAndIncrement()
- val seededVal = i + seed
+ val seededVal = if (Settings.interleavedWorkerFeed) seed + (i * Settings.entityWorkerCount) + (Settings.entityWorkerNum - 1) else i + seed
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, seededVal)
+ //println(entity)
val entityUrl = Settings.baseCollectionUrl + "/" + entityName
- val validEntity = if (i >= numEntities) "no" else "yes"
+ val validEntity = if (!Settings.unlimitedFeed && i >= numEntities) "no" else "yes"
+ val collectionName = Settings.app + "/" + Settings.collection
// println(entityName)
- Map("entityName" -> entityName, "entity" -> entity, "entityUrl" -> entityUrl, "validEntity" -> validEntity, "entityNum" -> (i+1).toString, "seededEntityNum" -> seededVal.toString)
+ Map("entityName" -> entityName, "entity" -> entity, "entityUrl" -> entityUrl, "validEntity" -> validEntity, "entityNum" -> (i+1).toString, "seededEntityNum" -> seededVal.toString,
+ "collectionName" -> collectionName)
}
}
http://git-wip-us.apache.org/repos/asf/usergrid/blob/a9927a3b/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 df0b325..ba09979 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
@@ -81,6 +81,10 @@ object ConfigProperties {
val EntityNumberProperty = "entityNumberProperty"
val QueryParams = "queryParams"
val CsvFeedPattern = "csvFeedPattern"
+ val UnlimitedFeed = "unlimitedFeed"
+ val FlushCsv = "flushCsv"
+ val InterleavedWorkerFeed = "interleavedWorkerFeed"
+ val NewCsvOnFlush = "newCsvOnFlush"
val Values = Seq(Org,App,AdminUser,AdminPassword,BaseUrl,AuthType,TokenType,SkipSetup,CreateOrg,CreateApp,LoadEntities,
ScenarioType,RampUsers,ConstantUsersPerSec,ConstantUsersDuration,UserSeed,AppUser,AppUserPassword,NumEntities,
@@ -89,7 +93,8 @@ object ConfigProperties {
OrgCreationName,OrgCreationEmail,OrgCreationPassword,UpdateProperty,UpdateValue,EntityWorkerCount,EntityWorkerNum,
UuidFilename,AuditUuidFilename,FailedUuidFilename,SandboxCollection,PurgeUsers,RetryCount,LaterThanTimestamp,
EntityProgressCount,InjectionList,PrintFailedRequests,GetViaQuery,MultiPropertyPrefix,MultiPropertyCount,
- MultiPropertySizeInK,EntityNumberProperty,QueryParams,CsvFeedPattern)
+ MultiPropertySizeInK,EntityNumberProperty,QueryParams,CsvFeedPattern,UnlimitedFeed,FlushCsv,InterleavedWorkerFeed,
+ NewCsvOnFlush)
def isValid(str: String): Boolean = {
Values.contains(str)
@@ -158,6 +163,10 @@ object ConfigProperties {
case EntityNumberProperty => ""
case QueryParams => ""
case CsvFeedPattern => org.apache.usergrid.enums.CsvFeedPatternType.Random
+ case UnlimitedFeed => false
+ case FlushCsv => 0L
+ case InterleavedWorkerFeed => false
+ case NewCsvOnFlush => false
}
} else {
null
http://git-wip-us.apache.org/repos/asf/usergrid/blob/a9927a3b/stack/loadtests/src/main/scala/org/apache/usergrid/helpers/Extractors.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/helpers/Extractors.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/helpers/Extractors.scala
index d93c430..8a18053 100644
--- a/stack/loadtests/src/main/scala/org/apache/usergrid/helpers/Extractors.scala
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/helpers/Extractors.scala
@@ -51,6 +51,16 @@ object Extractors {
}
/**
+ * Will extract the modified date from the create response. If the modified field is not present, -1 will be set
+ */
+ def extractCreateModified(saveAsName: String) = {
+ jsonPath("$.entities[0].modified").ofType[Long].transformOption(extract => {
+ //it may or may not be present. If it is, save it, otherwise save it as -1
+ extract.orElse(Some(-1))
+ }).saveAs(saveAsName)
+ }
+
+ /**
* Will extract the audit entities from the get collection response.
*/
def extractAuditEntities(saveAsName: String) = {
http://git-wip-us.apache.org/repos/asf/usergrid/blob/a9927a3b/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/EntityCollectionScenarios.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/EntityCollectionScenarios.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/EntityCollectionScenarios.scala
index 0ab2cd6..1b15103 100644
--- a/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/EntityCollectionScenarios.scala
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/EntityCollectionScenarios.scala
@@ -36,6 +36,7 @@ object EntityCollectionScenarios {
//The value for the cursor
val SessionVarCursor: String = "cursor"
val SessionVarUuid: String = "createUuid"
+ val SessionVarModified: String = "createModified"
def entityGetUrl(useCursor: Boolean): String = {
val url = s"/${Settings.collection}?" +
@@ -208,9 +209,13 @@ object EntityCollectionScenarios {
.headers(Headers.authToken)
.body(StringBody("""${entity}"""))
// 200 for success, 400 if already exists
- .check(status.in(Seq(200)), extractCreateUuid(SessionVarUuid)))
+ .check(status.in(Seq(200)), extractCreateUuid(SessionVarUuid), extractCreateModified(SessionVarModified)))
.exec(session => {
- Settings.addUuid(session("seededEntityNum").as[String].toInt, session(SessionVarUuid).as[String])
+ val uuid = session(SessionVarUuid).as[String]
+ val entityName = session("entityName").as[String]
+ val modified = session(SessionVarModified).as[Long]
+ val collectionName = session("collectionName").as[String]
+ Settings.addUuid(uuid, collectionName, entityName, modified)
session
})
}
@@ -294,9 +299,13 @@ object EntityCollectionScenarios {
.get("/" + Settings.collection + "/${entityName}")
.queryParamMap(Settings.queryParamMap)
.headers(Headers.authAnonymous)
- .check(status.is(200), extractCreateUuid(SessionVarUuid)))
+ .check(status.is(200), extractCreateUuid(SessionVarUuid), extractCreateModified(SessionVarModified)))
.exec(session => {
- Settings.addUuid(session("seededEntityNum").as[String].toInt, session(SessionVarUuid).as[String])
+ val uuid = session(SessionVarUuid).as[String]
+ val entityName = session("entityName").as[String]
+ val modified = session(SessionVarModified).as[Long]
+ val collectionName = session("collectionName").as[String]
+ Settings.addUuid(uuid, collectionName, entityName, modified)
session
})
}
@@ -308,10 +317,14 @@ object EntityCollectionScenarios {
.get("/" + Settings.collection + "/${entityName}")
.queryParamMap(Settings.queryParamMap)
.headers(Headers.authToken)
- .check(status.is(200), extractCreateUuid(SessionVarUuid)))
+ .check(status.is(200), extractCreateUuid(SessionVarUuid), extractCreateModified(SessionVarModified)))
.exec(session => {
- Settings.addUuid(session("seededEntityNum").as[String].toInt, session(SessionVarUuid).as[String])
- session
+ val uuid = session(SessionVarUuid).as[String]
+ val entityName = session("entityName").as[String]
+ val modified = session(SessionVarModified).as[Long]
+ val collectionName = session("collectionName").as[String]
+ Settings.addUuid(uuid, collectionName, entityName, modified)
+ session
})
}
)
http://git-wip-us.apache.org/repos/asf/usergrid/blob/a9927a3b/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 e9dd2f2..27c1d33 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
@@ -181,6 +181,11 @@ object Settings {
private val queryParamConfig = initStrSetting(ConfigProperties.QueryParams)
val queryParamMap: Map[String,String] = mapFromQueryParamConfigString(queryParamConfig)
val csvFeedPattern = initStrSetting(ConfigProperties.CsvFeedPattern)
+ val flushCsv:Long = initLongSetting(ConfigProperties.FlushCsv)
+ val unlimitedFeed:Boolean = initBoolSetting(ConfigProperties.UnlimitedFeed)
+ // unlimited feed forces interleaved worker feed
+ val interleavedWorkerFeed:Boolean = if (unlimitedFeed) true else initBoolSetting(ConfigProperties.InterleavedWorkerFeed)
+ val newCsvOnFlush:Boolean = initBoolSetting(ConfigProperties.NewCsvOnFlush)
val multiPropertyPrefix = initStrSetting(ConfigProperties.MultiPropertyPrefix)
val multiPropertyCount:Int = initIntSetting(ConfigProperties.MultiPropertyCount)
@@ -204,8 +209,9 @@ object Settings {
private val leftOver:Int = totalNumEntities % entityWorkerCount // will be 0 if only one worker
private val extraEntity:Int = if (entityWorkerNum <= leftOver) 1 else 0
private val zeroBasedWorkerNum:Int = entityWorkerNum - 1
- val entitySeed:Int = overallEntitySeed + zeroBasedWorkerNum * entitiesPerWorkerFloor + (if (extraEntity == 1) zeroBasedWorkerNum else leftOver)
- val numEntities:Int = entitiesPerWorkerFloor + extraEntity
+ val entitySeed:Int = if (unlimitedFeed) overallEntitySeed else overallEntitySeed + zeroBasedWorkerNum * entitiesPerWorkerFloor + (if (extraEntity == 1) zeroBasedWorkerNum else leftOver)
+ // numEntities is used for random name generation, must be >= 0 even if not used for entity counting (as in unlimitedFeed=true)
+ val numEntities:Int = if (unlimitedFeed) 1000000000 else entitiesPerWorkerFloor + extraEntity
// UUID log file, have to go through this because creating a csv feeder with an invalid csv file fails at maven compile time
private val dummyTestCsv = ConfigProperties.getDefault(ConfigProperties.UuidFilename).toString
@@ -281,18 +287,53 @@ object Settings {
val purgeUsers:Int = initIntSetting(ConfigProperties.PurgeUsers)
- private var uuidMap: Map[Int, String] = Map()
- private var entityCounter: Long = 0
- private var lastEntityCountPrinted: Long = 0
- def addUuid(num: Int, uuid: String): Unit = {
+ val auditUuidsHeader = "collection,name,uuid,modified"
+ val uuidsHeader = "name,uuid"
+ case class AuditList(var collection: String, var entityName: String, var uuid: String, var modified: Long)
+
+ //private var uuidMap: Map[Int, String] = Map()
+ private var uuidList: mutable.MutableList[AuditList] = mutable.MutableList[AuditList]()
+ private var entityCounter: Long = 0L
+ private var lastEntityCountPrinted: Long = 0L
+ private var flushCounter: Long = 0L
+ private var firstFlush: Boolean = true
+ private var numberFlushes: Long = 0L
+ private var uuidWriter: PrintWriter = null
+ def addUuid(uuid: String, collection: String, entityName: String, modified: Long): Unit = {
if (captureUuids) {
- uuidMap.synchronized {
- uuidMap += (num -> uuid)
- entityCounter += 1
+ uuidList.synchronized {
+ uuidList += AuditList(collection, entityName, uuid, modified)
+ entityCounter += 1L
+ flushCounter += 1L
if (logEntityProgress && (entityCounter >= lastEntityCountPrinted + entityProgressCount)) {
println(s"Entity: $entityCounter")
lastEntityCountPrinted = entityCounter
}
+ if (flushCsv > 0 && flushCounter >= flushCsv) {
+ if (uuidWriter == null) {
+ uuidWriter = {
+ val fileWithSuffix = f"$captureUuidFilename.$numberFlushes%04d"
+ val fos = new FileOutputStream(if (newCsvOnFlush) fileWithSuffix else captureUuidFilename)
+ new PrintWriter(fos, false)
+ }
+ }
+ if (newCsvOnFlush || firstFlush) {
+ uuidWriter.println(auditUuidsHeader)
+ }
+ val sortedUuidList: List[AuditList] = uuidList.toList.sortBy(e => (e.collection, e.entityName, e.modified))
+ sortedUuidList.foreach { e =>
+ uuidWriter.println(s"${e.collection},${e.entityName},${e.uuid},${e.modified}")
+ }
+ uuidWriter.flush()
+ if (newCsvOnFlush) {
+ uuidWriter.close()
+ uuidWriter = null
+ }
+ flushCounter = 0L
+ numberFlushes += 1L
+ uuidList.clear()
+ firstFlush = false
+ }
}
}
// println(s"UUID: ${name},${uuid}")
@@ -300,34 +341,39 @@ object Settings {
def writeUuidsToFile(): Unit = {
if (captureUuids) {
- val writer = {
- val fos = new FileOutputStream(captureUuidFilename)
- new PrintWriter(fos, false)
+ if (uuidWriter == null) {
+ uuidWriter = {
+ val fileWithSuffix = f"$captureUuidFilename.$numberFlushes%04d"
+ val fos = new FileOutputStream(if (newCsvOnFlush) fileWithSuffix else captureUuidFilename)
+ new PrintWriter(fos, false)
+ }
}
- writer.println("name,uuid")
- val uuidList: List[(Int, String)] = uuidMap.toList.sortBy(l => l._1)
- uuidList.foreach { l =>
- writer.println(s"${Settings.entityPrefix}${l._1},${l._2}")
+ if (newCsvOnFlush || firstFlush) {
+ uuidWriter.println(auditUuidsHeader)
}
- writer.flush()
- writer.close()
+ val sortedUuidList: List[AuditList] = uuidList.toList.sortBy(e => (e.collection, e.entityName, e.modified))
+ sortedUuidList.foreach { e =>
+ uuidWriter.println(s"${e.collection},${e.entityName},${e.uuid},${e.modified}")
+ }
+ uuidWriter.flush()
+ uuidWriter.close()
+ numberFlushes += 1L
+ uuidList.clear()
+ firstFlush = false
}
}
- val auditUuidsHeader = "collection,name,uuid,modified"
-
- case class AuditList(var collection: String, var entityName: String, var uuid: String, var modified: Long)
// key: uuid, value: collection
- private var auditEntityCounter: Long = 0
- private var lastAuditEntityCountPrinted: Long = 0
+ private var auditEntityCounter: Long = 0L
+ private var lastAuditEntityCountPrinted: Long = 0L
private var auditUuidList: mutable.MutableList[AuditList] = mutable.MutableList[AuditList]()
def addAuditUuid(uuid: String, collection: String, entityName: String, modified: Long): Unit = {
if (captureAuditUuids) {
auditUuidList.synchronized {
auditUuidList += AuditList(collection, entityName, uuid, modified)
- auditEntityCounter += 1
+ auditEntityCounter += 1L
if (logEntityProgress && (auditEntityCounter >= lastAuditEntityCountPrinted + entityProgressCount)) {
println(s"Entity: $auditEntityCounter")
lastAuditEntityCountPrinted = auditEntityCounter
http://git-wip-us.apache.org/repos/asf/usergrid/blob/a9927a3b/stack/loadtests/testConfig.sh
----------------------------------------------------------------------
diff --git a/stack/loadtests/testConfig.sh b/stack/loadtests/testConfig.sh
index 72b17c3..466d8c9 100755
--- a/stack/loadtests/testConfig.sh
+++ b/stack/loadtests/testConfig.sh
@@ -62,3 +62,5 @@ PRINT_FAILED_REQUESTS=true
GET_VIA_QUERY=false
QUERY_PARAMS=
+
+FLUSH_CSV=10000
[07/10] usergrid git commit: USERGRID-1044: and another typo
Posted by mr...@apache.org.
USERGRID-1044: and another typo
Project: http://git-wip-us.apache.org/repos/asf/usergrid/repo
Commit: http://git-wip-us.apache.org/repos/asf/usergrid/commit/06e3fa49
Tree: http://git-wip-us.apache.org/repos/asf/usergrid/tree/06e3fa49
Diff: http://git-wip-us.apache.org/repos/asf/usergrid/diff/06e3fa49
Branch: refs/heads/master
Commit: 06e3fa49abb2e1e5f4e7ad187741025499ee22c5
Parents: 4fa61a9
Author: Mike Dunker <md...@apigee.com>
Authored: Thu Oct 15 13:33:55 2015 -0700
Committer: Mike Dunker <md...@apigee.com>
Committed: Thu Oct 15 13:33:55 2015 -0700
----------------------------------------------------------------------
.../scala/org/apache/usergrid/scenarios/AuditScenarios.scala | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/usergrid/blob/06e3fa49/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 390029b..bd0d007 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
@@ -166,14 +166,14 @@ object AuditScenarios {
if (entityUuid == null || entityUuid.isEmpty) {
Settings.incAuditPayloadUuidError()
println(s"PAYLOAD UUID MISSING (DIRECT): requestedUuid=$uuid")
- } else if (uuid.equalsIgnoreCase(entityUuid)) {
+ } else if (!uuid.equalsIgnoreCase(entityUuid)) {
Settings.incAuditPayloadUuidError()
println(s"PAYLOAD UUID MISMATCH (DIRECT): requestedUuid=$uuid returnedUuid=$entityUuid")
}
if (entityName == null || entityName.isEmpty) {
Settings.incAuditPayloadNameError()
println(s"PAYLOAD NAME MISSING (DIRECT): requestedName=$reqName")
- } else if (reqName.equalsIgnoreCase(entityName)) {
+ } else if (!reqName.equalsIgnoreCase(entityName)) {
Settings.incAuditPayloadNameError()
println(s"PAYLOAD NAME MISMATCH (DIRECT): requestedName=$reqName returnedName=$entityName")
}
@@ -217,14 +217,14 @@ object AuditScenarios {
if (entityUuid == null || entityUuid.isEmpty) {
Settings.incAuditPayloadUuidError()
println(s"PAYLOAD UUID MISSING (QUERY): requestedUuid=$uuid")
- } else if (uuid.equalsIgnoreCase(entityUuid)) {
+ } else if (!uuid.equalsIgnoreCase(entityUuid)) {
Settings.incAuditPayloadUuidError()
println(s"PAYLOAD UUID MISMATCH (QUERY): requestedUuid=$uuid returnedUuid=$entityUuid")
}
if (entityName == null || entityName.isEmpty) {
Settings.incAuditPayloadNameError()
println(s"PAYLOAD NAME MISSING (QUERY): requestedName=$reqName")
- } else if (reqName.equalsIgnoreCase(entityName)) {
+ } else if (!reqName.equalsIgnoreCase(entityName)) {
Settings.incAuditPayloadNameError()
println(s"PAYLOAD NAME MISMATCH (QUERY): requestedName=$reqName returnedName=$entityName")
}
[05/10] usergrid git commit: USERGRID-1044: fix direct access on
query failure
Posted by mr...@apache.org.
USERGRID-1044: fix direct access on query failure
and log when name/uuid error/mismatch in payload occurs
Project: http://git-wip-us.apache.org/repos/asf/usergrid/repo
Commit: http://git-wip-us.apache.org/repos/asf/usergrid/commit/9e813810
Tree: http://git-wip-us.apache.org/repos/asf/usergrid/tree/9e813810
Diff: http://git-wip-us.apache.org/repos/asf/usergrid/diff/9e813810
Branch: refs/heads/master
Commit: 9e813810756a1b48a23b1bac4d7cec6bc326f186
Parents: 2757e90
Author: Mike Dunker <md...@apigee.com>
Authored: Thu Oct 15 13:16:04 2015 -0700
Committer: Mike Dunker <md...@apigee.com>
Committed: Thu Oct 15 13:16:04 2015 -0700
----------------------------------------------------------------------
.../apache/usergrid/helpers/Extractors.scala | 18 ++++-
.../usergrid/scenarios/AuditScenarios.scala | 84 +++++++++++++++-----
.../scenarios/EntityCollectionScenarios.scala | 6 +-
.../org/apache/usergrid/settings/Settings.scala | 19 +++++
4 files changed, 100 insertions(+), 27 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/usergrid/blob/9e813810/stack/loadtests/src/main/scala/org/apache/usergrid/helpers/Extractors.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/helpers/Extractors.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/helpers/Extractors.scala
index 8a18053..136a561 100644
--- a/stack/loadtests/src/main/scala/org/apache/usergrid/helpers/Extractors.scala
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/helpers/Extractors.scala
@@ -41,9 +41,9 @@ object Extractors {
}
/**
- * Will extract the uuid from the create response. If the uuid is not present, an empty string will be set
+ * Will extract the uuid from the response. If the uuid is not present, an empty string will be set
*/
- def extractCreateUuid(saveAsName: String) = {
+ def extractEntityUuid(saveAsName: String) = {
jsonPath("$.entities[0].uuid").transformOption(extract => {
//it may or may not be present. If it is, save it, otherwise save it as an empty string
extract.orElse(Some(""))
@@ -51,9 +51,19 @@ object Extractors {
}
/**
- * Will extract the modified date from the create response. If the modified field is not present, -1 will be set
+ * Will extract the name from the response. If the name is not present, an empty string will be set
*/
- def extractCreateModified(saveAsName: String) = {
+ def extractEntityName(saveAsName: String) = {
+ jsonPath("$.entities[0].name").transformOption(extract => {
+ //it may or may not be present. If it is, save it, otherwise save it as an empty string
+ extract.orElse(Some(""))
+ }).saveAs(saveAsName)
+ }
+
+ /**
+ * Will extract the modified date from the response. If the modified field is not present, -1 will be set
+ */
+ def extractEntityModified(saveAsName: String) = {
jsonPath("$.entities[0].modified").ofType[Long].transformOption(extract => {
//it may or may not be present. If it is, save it, otherwise save it as -1
extract.orElse(Some(-1))
http://git-wip-us.apache.org/repos/asf/usergrid/blob/9e813810/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 905c652..0b798a8 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
@@ -32,7 +32,8 @@ object AuditScenarios {
//The value for the cursor
val SessionVarCursor: String = "cursor"
- val SessionVarUuid: String = "entityUuid"
+ val SessionVarEntityUuid: String = "entityUuid"
+ val SessionVarEntityName: String = "entityName"
val SessionVarDeletedUuid: String = "deletedUuid"
val SessionVarCollectionName: String = "collectionName"
val SessionVarCollectionEntities: String = "collectionEntities"
@@ -117,7 +118,7 @@ object AuditScenarios {
http("DELETE audited entity")
.delete("/${collectionName}/${uuid}")
.headers(Headers.authToken)
- .check(extractCreateUuid(SessionVarDeletedUuid)))
+ .check(extractEntityUuid(SessionVarDeletedUuid)))
.exec(session => {
val uuid = session(SessionVarDeletedUuid).as[String]
@@ -136,28 +137,50 @@ object AuditScenarios {
.get("/${collectionName}/${uuid}")
.headers(Headers.authToken)
.headers(Headers.auditRegionHeaders)
- .check(status.is(200),jsonPath("$.count").optional.saveAs("count"),extractAuditEntities(SessionVarCollectionEntities)))
+ .check()
+ .check(status.in(Seq(200,404)),extractAuditEntities(SessionVarCollectionEntities),
+ extractEntityUuid(SessionVarEntityUuid),extractEntityName(SessionVarEntityName)))
.exec(session => {
- val count = session("count").as[String].toInt
val uuid = session("uuid").as[String]
- val entityName = session("name").as[String]
+ val reqName = session("name").as[String]
val modified = session("modified").as[String].toLong
val collectionName = session(SessionVarCollectionName).as[String]
+ val collectionEntities = session(SessionVarCollectionEntities).as[Seq[Any])
+ val entityUuid = session(SessionVarEntityUuid).as[String]
+ val entityName = session(SessionVarEntityName).as[String]
+ val count = collectionEntities.length
if (count < 1) {
- Settings.addAuditUuid(uuid, collectionName, entityName, modified)
+ Settings.addAuditUuid(uuid, collectionName, reqName, modified)
Settings.incAuditNotFoundAtAll()
- println(s"NOT FOUND AT ALL: $collectionName.$entityName ($uuid)")
- } else if (count == 1) {
- // found via direct access but not query
- Settings.addAuditUuid(uuid, collectionName, entityName, modified)
- Settings.incAuditNotFoundViaQuery()
- println(s"NOT FOUND VIA QUERY: $collectionName.$entityName ($uuid)")
- } else {
- // count > 1 -> invalid
- Settings.addAuditUuid(uuid, collectionName, entityName, modified)
+ println(s"NOT FOUND AT ALL: $collectionName.$reqName ($uuid)")
+ } else if (count > 1) {
+ // invalid
+ Settings.addAuditUuid(uuid, collectionName, reqName, modified)
Settings.incAuditBadResponse()
- println(s"INVALID RESPONSE (count=$count): $collectionName.$entityName ($uuid)")
+ println(s"INVALID RESPONSE (count=$count): $collectionName.$reqName ($uuid)")
+ } else {
+ // count == 1 -> found via direct access but not query
+
+ // will count as found directly even if there is a uuid or name mismatch
+ if (entityUuid == null || entityUuid.isEmpty) {
+ Settings.incAuditPayloadUuidError()
+ println(s"PAYLOAD UUID MISSING (DIRECT): requestedUuid=$uuid")
+ } else if (uuid.equalsIgnoreCase(entityUuid)) {
+ Settings.incAuditPayloadUuidError()
+ println(s"PAYLOAD UUID MISMATCH (DIRECT): requestedUuid=$uuid returnedUuid=$entityUuid")
+ }
+ if (entityName == null || entityName.isEmpty) {
+ Settings.incAuditPayloadNameError()
+ println(s"PAYLOAD NAME MISSING (DIRECT): requestedName=$reqName")
+ } else if (reqName.equalsIgnoreCase(entityName)) {
+ Settings.incAuditPayloadNameError()
+ println(s"PAYLOAD NAME MISMATCH (DIRECT): requestedName=$reqName returnedName=$entityName")
+ }
+
+ Settings.addAuditUuid(uuid, collectionName, reqName, modified)
+ Settings.incAuditNotFoundViaQuery()
+ println(s"NOT FOUND VIA QUERY: $collectionName.$reqName ($uuid)")
}
session
@@ -168,23 +191,44 @@ object AuditScenarios {
.get("/${collectionName}?ql=uuid=${uuid}")
.headers(Headers.authToken)
.headers(Headers.auditRegionHeaders)
- .check(status.is(200),jsonPath("$.count").optional.saveAs("count"),extractAuditEntities(SessionVarCollectionEntities)))
+ .check(status.is(200),jsonPath("$.count").optional.saveAs("count"),
+ extractAuditEntities(SessionVarCollectionEntities),
+ extractEntityUuid(SessionVarEntityUuid),extractEntityName(SessionVarEntityName)))
.exec(session => {
val count = session("count").as[String].toInt
val uuid = session("uuid").as[String]
- val entityName = session("name").as[String]
+ val reqName = session("name").as[String]
val modified = session("modified").as[String].toLong
val collectionName = session(SessionVarCollectionName).as[String]
+ val entityUuid = session(SessionVarEntityUuid).as[String]
+ val entityName = session(SessionVarEntityName).as[String]
if (count < 1) {
// will check to see whether accessible directly
} else if (count > 1) {
- Settings.addAuditUuid(uuid, collectionName, entityName, modified)
+ Settings.addAuditUuid(uuid, collectionName, reqName, modified)
Settings.incAuditBadResponse()
- println(s"INVALID RESPONSE (count=$count): $collectionName.$entityName ($uuid)")
+ println(s"INVALID RESPONSE (count=$count): $collectionName.$reqName ($uuid)")
} else {
// count == 1 -> success
// println(s"FOUND: $collectionName.$entityName ($uuid)")
+
+ // will count as success even if there is a uuid or name mismatch
+ if (entityUuid == null || entityUuid.isEmpty) {
+ Settings.incAuditPayloadUuidError()
+ println(s"PAYLOAD UUID MISSING (QUERY): requestedUuid=$uuid")
+ } else if (uuid.equalsIgnoreCase(entityUuid)) {
+ Settings.incAuditPayloadUuidError()
+ println(s"PAYLOAD UUID MISMATCH (QUERY): requestedUuid=$uuid returnedUuid=$entityUuid")
+ }
+ if (entityName == null || entityName.isEmpty) {
+ Settings.incAuditPayloadNameError()
+ println(s"PAYLOAD NAME MISSING (QUERY): requestedName=$reqName")
+ } else if (reqName.equalsIgnoreCase(entityName)) {
+ Settings.incAuditPayloadNameError()
+ println(s"PAYLOAD NAME MISMATCH (QUERY): requestedName=$reqName returnedName=$entityName")
+ }
+
Settings.incAuditSuccess()
}
http://git-wip-us.apache.org/repos/asf/usergrid/blob/9e813810/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/EntityCollectionScenarios.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/EntityCollectionScenarios.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/EntityCollectionScenarios.scala
index 1b15103..de95920 100644
--- a/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/EntityCollectionScenarios.scala
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/EntityCollectionScenarios.scala
@@ -209,7 +209,7 @@ object EntityCollectionScenarios {
.headers(Headers.authToken)
.body(StringBody("""${entity}"""))
// 200 for success, 400 if already exists
- .check(status.in(Seq(200)), extractCreateUuid(SessionVarUuid), extractCreateModified(SessionVarModified)))
+ .check(status.in(Seq(200)), extractEntityUuid(SessionVarUuid), extractEntityModified(SessionVarModified)))
.exec(session => {
val uuid = session(SessionVarUuid).as[String]
val entityName = session("entityName").as[String]
@@ -299,7 +299,7 @@ object EntityCollectionScenarios {
.get("/" + Settings.collection + "/${entityName}")
.queryParamMap(Settings.queryParamMap)
.headers(Headers.authAnonymous)
- .check(status.is(200), extractCreateUuid(SessionVarUuid), extractCreateModified(SessionVarModified)))
+ .check(status.is(200), extractEntityUuid(SessionVarUuid), extractEntityModified(SessionVarModified)))
.exec(session => {
val uuid = session(SessionVarUuid).as[String]
val entityName = session("entityName").as[String]
@@ -317,7 +317,7 @@ object EntityCollectionScenarios {
.get("/" + Settings.collection + "/${entityName}")
.queryParamMap(Settings.queryParamMap)
.headers(Headers.authToken)
- .check(status.is(200), extractCreateUuid(SessionVarUuid), extractCreateModified(SessionVarModified)))
+ .check(status.is(200), extractEntityUuid(SessionVarUuid), extractEntityModified(SessionVarModified)))
.exec(session => {
val uuid = session(SessionVarUuid).as[String]
val entityName = session("entityName").as[String]
http://git-wip-us.apache.org/repos/asf/usergrid/blob/9e813810/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 374440d..b9ba86d 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
@@ -432,6 +432,8 @@ object Settings {
private val countAuditNotFoundViaQuery = new AtomicInteger(0)
private val countAuditNotFoundAtAll = new AtomicInteger(0)
private val countAuditBadResponse = new AtomicInteger(0)
+ private val countAuditPayloadUuidError = new AtomicInteger(0)
+ private val countAuditPayloadNameError = new AtomicInteger(0)
private val countAuditEntryDeleteSuccess = new AtomicInteger(0)
private val countAuditEntryDeleteFailure = new AtomicInteger(0)
@@ -451,6 +453,14 @@ object Settings {
countAuditBadResponse.incrementAndGet()
}
+ def incAuditPayloadUuidError(): Unit = {
+ countAuditPayloadUuidError.incrementAndGet()
+ }
+
+ def incAuditPayloadNameError(): Unit = {
+ countAuditPayloadNameError.incrementAndGet()
+ }
+
def incAuditEntryDeleteSuccess(): Unit = {
countAuditEntryDeleteSuccess.incrementAndGet()
}
@@ -465,6 +475,8 @@ object Settings {
val countNotFoundViaQuery = countAuditNotFoundViaQuery.get
val countNotFoundAtAll = countAuditNotFoundAtAll.get
val countBadResponse = countAuditBadResponse.get
+ val countPayloadUuidErrors = countAuditPayloadUuidError.get
+ val countPayloadNameErrors = countAuditPayloadNameError.get
val countDeleteSuccess = countAuditEntryDeleteSuccess.get
val countDeleteFailure = countAuditEntryDeleteFailure.get
val countTotal = countSuccess + countNotFoundViaQuery + countBadResponse
@@ -485,9 +497,16 @@ object Settings {
println(s"Not Found at all: $countNotFoundAtAll")
println(s"Bad Response: $countBadResponse")
if (deleteAfterSuccessfulAudit) {
+ println()
println(s"Delete Successes: $countDeleteSuccess")
println(s"Delete Failures: $countDeleteFailure")
}
+ if (countPayloadUuidErrors > 0 || countPayloadNameErrors > 0) {
+ println()
+ println(s"Payload Mismatches/Errors")
+ println(s" UUID: $countPayloadUuidErrors")
+ println(s" Name: $countPayloadNameErrors")
+ }
println(s"Total: $countTotal")
println()
println(s"Start Timestamp(ms): $testStartTime")
[10/10] usergrid git commit: Merge commit 'refs/pull/403/head' of
github.com:apache/usergrid
Posted by mr...@apache.org.
Merge commit 'refs/pull/403/head' of github.com:apache/usergrid
Project: http://git-wip-us.apache.org/repos/asf/usergrid/repo
Commit: http://git-wip-us.apache.org/repos/asf/usergrid/commit/1393c2f7
Tree: http://git-wip-us.apache.org/repos/asf/usergrid/tree/1393c2f7
Diff: http://git-wip-us.apache.org/repos/asf/usergrid/diff/1393c2f7
Branch: refs/heads/master
Commit: 1393c2f76e44150352497f661907801151807806
Parents: 59edea1 2f307a7
Author: Michael Russo <mi...@gmail.com>
Authored: Tue Oct 20 12:18:48 2015 -0700
Committer: Michael Russo <mi...@gmail.com>
Committed: Tue Oct 20 12:18:48 2015 -0700
----------------------------------------------------------------------
.../runAuditVerifyCollectionEntities.sh | 11 +-
stack/loadtests/runDeleteEntities.sh | 13 +-
stack/loadtests/runLoadEntitiesUnlimited.sh | 103 +++++++++++++
.../datagenerators/FeederGenerator.scala | 9 +-
.../usergrid/enums/ConfigProperties.scala | 15 +-
.../apache/usergrid/helpers/Extractors.scala | 24 ++-
.../org/apache/usergrid/helpers/Headers.scala | 7 +
.../usergrid/scenarios/AuditScenarios.scala | 121 ++++++++++++++-
.../scenarios/EntityCollectionScenarios.scala | 38 ++++-
.../org/apache/usergrid/settings/Settings.scala | 150 +++++++++++++++----
stack/loadtests/testConfig.sh | 3 +
11 files changed, 435 insertions(+), 59 deletions(-)
----------------------------------------------------------------------
[04/10] usergrid git commit: USERGRID-1044: if query audit fails,
try direct access
Posted by mr...@apache.org.
USERGRID-1044: if query audit fails, try direct access
Project: http://git-wip-us.apache.org/repos/asf/usergrid/repo
Commit: http://git-wip-us.apache.org/repos/asf/usergrid/commit/2757e905
Tree: http://git-wip-us.apache.org/repos/asf/usergrid/tree/2757e905
Diff: http://git-wip-us.apache.org/repos/asf/usergrid/diff/2757e905
Branch: refs/heads/master
Commit: 2757e905d9a2cf38adf426df6604dd78e8a512ac
Parents: b62ad30
Author: Mike Dunker <md...@apigee.com>
Authored: Thu Oct 15 09:34:14 2015 -0700
Committer: Mike Dunker <md...@apigee.com>
Committed: Thu Oct 15 09:34:14 2015 -0700
----------------------------------------------------------------------
.../usergrid/scenarios/AuditScenarios.scala | 40 ++++++++++++++++++--
.../org/apache/usergrid/settings/Settings.scala | 19 +++++++---
2 files changed, 50 insertions(+), 9 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/usergrid/blob/2757e905/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 aaabf99..905c652 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
@@ -131,6 +131,38 @@ object AuditScenarios {
session
})
+ val getCollectionEntityDirect = exec(
+ http("GET collection entity direct")
+ .get("/${collectionName}/${uuid}")
+ .headers(Headers.authToken)
+ .headers(Headers.auditRegionHeaders)
+ .check(status.is(200),jsonPath("$.count").optional.saveAs("count"),extractAuditEntities(SessionVarCollectionEntities)))
+ .exec(session => {
+ val count = session("count").as[String].toInt
+ val uuid = session("uuid").as[String]
+ val entityName = session("name").as[String]
+ val modified = session("modified").as[String].toLong
+ val collectionName = session(SessionVarCollectionName).as[String]
+
+ if (count < 1) {
+ Settings.addAuditUuid(uuid, collectionName, entityName, modified)
+ Settings.incAuditNotFoundAtAll()
+ println(s"NOT FOUND AT ALL: $collectionName.$entityName ($uuid)")
+ } else if (count == 1) {
+ // found via direct access but not query
+ Settings.addAuditUuid(uuid, collectionName, entityName, modified)
+ Settings.incAuditNotFoundViaQuery()
+ println(s"NOT FOUND VIA QUERY: $collectionName.$entityName ($uuid)")
+ } else {
+ // count > 1 -> invalid
+ Settings.addAuditUuid(uuid, collectionName, entityName, modified)
+ Settings.incAuditBadResponse()
+ println(s"INVALID RESPONSE (count=$count): $collectionName.$entityName ($uuid)")
+ }
+
+ session
+ })
+
val getCollectionEntity = exec(
http("GET collection entity")
.get("/${collectionName}?ql=uuid=${uuid}")
@@ -145,20 +177,22 @@ object AuditScenarios {
val collectionName = session(SessionVarCollectionName).as[String]
if (count < 1) {
- Settings.addAuditUuid(uuid, collectionName, entityName, modified)
- Settings.incAuditNotFound()
- println(s"NOT FOUND: $collectionName.$entityName ($uuid)")
+ // will check to see whether accessible directly
} else if (count > 1) {
Settings.addAuditUuid(uuid, collectionName, entityName, modified)
Settings.incAuditBadResponse()
println(s"INVALID RESPONSE (count=$count): $collectionName.$entityName ($uuid)")
} else {
+ // count == 1 -> success
// println(s"FOUND: $collectionName.$entityName ($uuid)")
Settings.incAuditSuccess()
}
session
})
+ .doIf(session => session("count").as[String].toInt < 1) {
+ exec(getCollectionEntityDirect)
+ }
.doIf(session => Settings.deleteAfterSuccessfulAudit && session("count").as[String].toInt == 1) {
// tryMax(Settings.retryCount) {
exec(deleteAuditedEntity)
http://git-wip-us.apache.org/repos/asf/usergrid/blob/2757e905/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 979fb3f..374440d 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
@@ -429,7 +429,8 @@ object Settings {
}
private val countAuditSuccess = new AtomicInteger(0)
- private val countAuditNotFound = new AtomicInteger(0)
+ private val countAuditNotFoundViaQuery = new AtomicInteger(0)
+ private val countAuditNotFoundAtAll = new AtomicInteger(0)
private val countAuditBadResponse = new AtomicInteger(0)
private val countAuditEntryDeleteSuccess = new AtomicInteger(0)
private val countAuditEntryDeleteFailure = new AtomicInteger(0)
@@ -438,8 +439,12 @@ object Settings {
countAuditSuccess.incrementAndGet()
}
- def incAuditNotFound(): Unit = {
- countAuditNotFound.incrementAndGet()
+ def incAuditNotFoundViaQuery(): Unit = {
+ countAuditNotFoundViaQuery.incrementAndGet()
+ }
+
+ def incAuditNotFoundAtAll(): Unit = {
+ countAuditNotFoundAtAll.incrementAndGet()
}
def incAuditBadResponse(): Unit = {
@@ -457,11 +462,12 @@ object Settings {
def printAuditResults(): Unit = {
if (scenarioType == ScenarioType.AuditVerifyCollectionEntities) {
val countSuccess = countAuditSuccess.get
- val countNotFound = countAuditNotFound.get
+ val countNotFoundViaQuery = countAuditNotFoundViaQuery.get
+ val countNotFoundAtAll = countAuditNotFoundAtAll.get
val countBadResponse = countAuditBadResponse.get
val countDeleteSuccess = countAuditEntryDeleteSuccess.get
val countDeleteFailure = countAuditEntryDeleteFailure.get
- val countTotal = countSuccess + countNotFound + countBadResponse
+ val countTotal = countSuccess + countNotFoundViaQuery + countBadResponse
val seconds = ((testEndTime - testStartTime) / 1000).toInt
val s:Int = seconds % 60
@@ -475,7 +481,8 @@ object Settings {
println("-----------------------------------------------------------------------------")
println()
println(s"Successful: $countSuccess")
- println(s"Not Found: $countNotFound")
+ println(s"Not Found via query: $countNotFoundViaQuery (found via direct access)")
+ println(s"Not Found at all: $countNotFoundAtAll")
println(s"Bad Response: $countBadResponse")
if (deleteAfterSuccessfulAudit) {
println(s"Delete Successes: $countDeleteSuccess")
[02/10] usergrid git commit: USERGRID-1044: add option to delete
entity after successful audit
Posted by mr...@apache.org.
USERGRID-1044: add option to delete entity after successful audit
Project: http://git-wip-us.apache.org/repos/asf/usergrid/repo
Commit: http://git-wip-us.apache.org/repos/asf/usergrid/commit/9b2508f7
Tree: http://git-wip-us.apache.org/repos/asf/usergrid/tree/9b2508f7
Diff: http://git-wip-us.apache.org/repos/asf/usergrid/diff/9b2508f7
Branch: refs/heads/master
Commit: 9b2508f7d4d47af9bfd28ba6953072e0aa1eff90
Parents: a9927a3b
Author: Mike Dunker <md...@apigee.com>
Authored: Thu Oct 8 13:19:28 2015 -0700
Committer: Mike Dunker <md...@apigee.com>
Committed: Thu Oct 8 13:19:28 2015 -0700
----------------------------------------------------------------------
.../runAuditVerifyCollectionEntities.sh | 9 +++++---
.../usergrid/enums/ConfigProperties.scala | 4 +++-
.../usergrid/scenarios/AuditScenarios.scala | 23 ++++++++++++++++++++
.../org/apache/usergrid/settings/Settings.scala | 17 +++++++++++++++
4 files changed, 49 insertions(+), 4 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/usergrid/blob/9b2508f7/stack/loadtests/runAuditVerifyCollectionEntities.sh
----------------------------------------------------------------------
diff --git a/stack/loadtests/runAuditVerifyCollectionEntities.sh b/stack/loadtests/runAuditVerifyCollectionEntities.sh
index 6d963f3..2e2d76d 100755
--- a/stack/loadtests/runAuditVerifyCollectionEntities.sh
+++ b/stack/loadtests/runAuditVerifyCollectionEntities.sh
@@ -27,17 +27,19 @@ if [[ ! -d "$DIR" ]]; then DIR="$PWD"; fi
#TOKEN_TYPE=
#RETRY_COUNT=
+DELETE_AFTER_SUCCESSFUL_AUDIT=false
+
die() { echo "$@" 1>&2 ; exit 1; }
-[ "$#" -ge 3 ] || die "At least 3 arguments required, $# provided. Example is $0 RAMP_USERS RAMP_TIME(seconds) AUDIT_UUID_FILENAME [FAILED_UUID_FILENAME]"
+[ "$#" -ge 3 ] || die "At least 3 arguments required, $# provided. Example is $0 RAMP_USERS RAMP_TIME(seconds) AUDIT_UUID_FILENAME [FAILED_UUID_FILENAME [DELETE_AFTER_SUCCESSFUL_AUDIT(true/false)]]"
RAMP_USERS="$1"
RAMP_TIME="$2"
AUDIT_UUID_FILENAME="$3"
FAILED_UUID_FILENAME="$4"
-[ "$#" -ge 5 ] && LATER_THAN_TIMESTAMP="$5"
+[ "$#" -ge 5 ] && DELETE_AFTER_SUCCESSFUL_AUDIT="$5"
-shift 4
+shift $#
SCENARIO_TYPE=auditVerifyCollectionEntities
@@ -60,5 +62,6 @@ mvn gatling:execute \
-DauditUuidFilename=${AUDIT_UUID_FILENAME} \
-DfailedUuidFilename=${FAILED_UUID_FILENAME} \
-DprintFailedRequests=${PRINT_FAILED_REQUESTS} \
+-DdeleteAfterSuccessfulAudit=${DELETE_AFTER_SUCCESSFUL_AUDIT} \
-Dgatling.simulationClass=org.apache.usergrid.simulations.AuditSimulation
http://git-wip-us.apache.org/repos/asf/usergrid/blob/9b2508f7/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 ba09979..975944a 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
@@ -85,6 +85,7 @@ object ConfigProperties {
val FlushCsv = "flushCsv"
val InterleavedWorkerFeed = "interleavedWorkerFeed"
val NewCsvOnFlush = "newCsvOnFlush"
+ val DeleteAfterSuccessfulAudit = "deleteAfterSuccessfulAudit"
val Values = Seq(Org,App,AdminUser,AdminPassword,BaseUrl,AuthType,TokenType,SkipSetup,CreateOrg,CreateApp,LoadEntities,
ScenarioType,RampUsers,ConstantUsersPerSec,ConstantUsersDuration,UserSeed,AppUser,AppUserPassword,NumEntities,
@@ -94,7 +95,7 @@ object ConfigProperties {
UuidFilename,AuditUuidFilename,FailedUuidFilename,SandboxCollection,PurgeUsers,RetryCount,LaterThanTimestamp,
EntityProgressCount,InjectionList,PrintFailedRequests,GetViaQuery,MultiPropertyPrefix,MultiPropertyCount,
MultiPropertySizeInK,EntityNumberProperty,QueryParams,CsvFeedPattern,UnlimitedFeed,FlushCsv,InterleavedWorkerFeed,
- NewCsvOnFlush)
+ NewCsvOnFlush,DeleteAfterSuccessfulAudit)
def isValid(str: String): Boolean = {
Values.contains(str)
@@ -167,6 +168,7 @@ object ConfigProperties {
case FlushCsv => 0L
case InterleavedWorkerFeed => false
case NewCsvOnFlush => false
+ case DeleteAfterSuccessfulAudit => false
}
} else {
null
http://git-wip-us.apache.org/repos/asf/usergrid/blob/9b2508f7/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 3a7121b..836a1fb 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
@@ -33,6 +33,7 @@ object AuditScenarios {
//The value for the cursor
val SessionVarCursor: String = "cursor"
val SessionVarUuid: String = "entityUuid"
+ val SessionVarDeletedUuid: String = "deletedUuid"
val SessionVarCollectionName: String = "collectionName"
val SessionVarCollectionEntities: String = "collectionEntities"
@@ -112,6 +113,23 @@ object AuditScenarios {
session
}
+ val deleteAuditedEntity = exec(
+ http("DELETE audited entity")
+ .delete("/${collectionName}/${uuid}")
+ .headers(Headers.authToken)
+ .check(extractCreateUuid(SessionVarDeletedUuid)))
+ .exec(session => {
+ val uuid = session(SessionVarDeletedUuid).as[String]
+
+ if (uuid != null && uuid != "") {
+ // successful
+ Settings.incAuditEntryDeleteSuccess()
+ } else {
+ Settings.incAuditEntryDeleteFailure()
+ }
+
+ session
+ })
val getCollectionEntity = exec(
http("GET collection entity")
@@ -140,6 +158,11 @@ object AuditScenarios {
session
})
+ .doIf(session => Settings.deleteAfterSuccessfulAudit && session("count").as[String].toInt == 1) {
+ // tryMax(Settings.retryCount) {
+ exec(deleteAuditedEntity)
+ // }
+ }
val verifyCollections = scenario("Verify collections")
.exec(injectTokenIntoSession())
http://git-wip-us.apache.org/repos/asf/usergrid/blob/9b2508f7/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 27c1d33..eeeac1f 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
@@ -186,6 +186,7 @@ object Settings {
// unlimited feed forces interleaved worker feed
val interleavedWorkerFeed:Boolean = if (unlimitedFeed) true else initBoolSetting(ConfigProperties.InterleavedWorkerFeed)
val newCsvOnFlush:Boolean = initBoolSetting(ConfigProperties.NewCsvOnFlush)
+ val deleteAfterSuccessfulAudit:Boolean = initBoolSetting(ConfigProperties.DeleteAfterSuccessfulAudit)
val multiPropertyPrefix = initStrSetting(ConfigProperties.MultiPropertyPrefix)
val multiPropertyCount:Int = initIntSetting(ConfigProperties.MultiPropertyCount)
@@ -429,6 +430,8 @@ object Settings {
private val countAuditSuccess = new AtomicInteger(0)
private val countAuditNotFound = new AtomicInteger(0)
private val countAuditBadResponse = new AtomicInteger(0)
+ private val countAuditEntryDeleteSuccess = new AtomicInteger(0)
+ private val countAuditEntryDeleteFailure = new AtomicInteger(0)
def incAuditSuccess(): Unit = {
countAuditSuccess.incrementAndGet()
@@ -442,11 +445,21 @@ object Settings {
countAuditBadResponse.incrementAndGet()
}
+ def incAuditEntryDeleteSuccess(): Unit = {
+ countAuditEntryDeleteSuccess.incrementAndGet()
+ }
+
+ def incAuditEntryDeleteFailure(): Unit = {
+ countAuditEntryDeleteFailure.incrementAndGet()
+ }
+
def printAuditResults(): Unit = {
if (scenarioType == ScenarioType.AuditVerifyCollectionEntities) {
val countSuccess = countAuditSuccess.get
val countNotFound = countAuditNotFound.get
val countBadResponse = countAuditBadResponse.get
+ val countDeleteSuccess = countAuditEntryDeleteSuccess.get
+ val countDeleteFailure = countAuditEntryDeleteFailure.get
val countTotal = countSuccess + countNotFound + countBadResponse
val seconds = ((testEndTime - testStartTime) / 1000).toInt
@@ -463,6 +476,10 @@ object Settings {
println(s"Successful: $countSuccess")
println(s"Not Found: $countNotFound")
println(s"Bad Response: $countBadResponse")
+ if (deleteAfterSuccessfulAudit) {
+ println(s"Delete Successes: $countDeleteSuccess")
+ println(s"Delete Failures: $countDeleteFailure")
+ }
println(s"Total: $countTotal")
println()
println(s"Start Timestamp(ms): $testStartTime")
[06/10] usergrid git commit: USERGRID-1044: fix typo
Posted by mr...@apache.org.
USERGRID-1044: fix typo
Project: http://git-wip-us.apache.org/repos/asf/usergrid/repo
Commit: http://git-wip-us.apache.org/repos/asf/usergrid/commit/4fa61a9e
Tree: http://git-wip-us.apache.org/repos/asf/usergrid/tree/4fa61a9e
Diff: http://git-wip-us.apache.org/repos/asf/usergrid/diff/4fa61a9e
Branch: refs/heads/master
Commit: 4fa61a9ef15339183058517ad37f9a85621c957e
Parents: 9e81381
Author: Mike Dunker <md...@apigee.com>
Authored: Thu Oct 15 13:30:48 2015 -0700
Committer: Mike Dunker <md...@apigee.com>
Committed: Thu Oct 15 13:30:48 2015 -0700
----------------------------------------------------------------------
.../main/scala/org/apache/usergrid/scenarios/AuditScenarios.scala | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/usergrid/blob/4fa61a9e/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 0b798a8..390029b 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
@@ -145,7 +145,7 @@ object AuditScenarios {
val reqName = session("name").as[String]
val modified = session("modified").as[String].toLong
val collectionName = session(SessionVarCollectionName).as[String]
- val collectionEntities = session(SessionVarCollectionEntities).as[Seq[Any])
+ val collectionEntities = session(SessionVarCollectionEntities).as[Seq[Any]]
val entityUuid = session(SessionVarEntityUuid).as[String]
val entityName = session(SessionVarEntityName).as[String]
[08/10] usergrid git commit: USERGRID-1044: add optional region
header functionality to most requests
Posted by mr...@apache.org.
USERGRID-1044: add optional region header functionality to most requests
Project: http://git-wip-us.apache.org/repos/asf/usergrid/repo
Commit: http://git-wip-us.apache.org/repos/asf/usergrid/commit/963a0841
Tree: http://git-wip-us.apache.org/repos/asf/usergrid/tree/963a0841
Diff: http://git-wip-us.apache.org/repos/asf/usergrid/diff/963a0841
Branch: refs/heads/master
Commit: 963a08417aa66eea567301e2592751d051a1a73c
Parents: 06e3fa4
Author: Mike Dunker <md...@apigee.com>
Authored: Mon Oct 19 11:07:41 2015 -0700
Committer: Mike Dunker <md...@apigee.com>
Committed: Mon Oct 19 11:07:41 2015 -0700
----------------------------------------------------------------------
.../org/apache/usergrid/scenarios/AuditScenarios.scala | 3 +++
.../usergrid/scenarios/EntityCollectionScenarios.scala | 11 +++++++++++
2 files changed, 14 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/usergrid/blob/963a0841/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 bd0d007..be754f4 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
@@ -58,6 +58,7 @@ object AuditScenarios {
http("GET collections")
.get(collectionGetUrl(false))
.headers(Headers.authToken)
+ .headers(Headers.auditRegionHeaders)
.check(status.is(200),extractAuditEntities(SessionVarCollectionEntities),maybeExtractCursor(SessionVarCursor)))
.foreach("${" + SessionVarCollectionEntities + "}", "singleResult") {
exec(session => {
@@ -75,6 +76,7 @@ object AuditScenarios {
http("GET collections")
.get(collectionGetUrl(true))
.headers(Headers.authToken)
+ .headers(Headers.auditRegionHeaders)
.check(status.is(200),extractAuditEntities(SessionVarCollectionEntities),maybeExtractCursor(SessionVarCursor)))
.foreach("${" + SessionVarCollectionEntities + "}", "singleResult") {
exec(session => {
@@ -118,6 +120,7 @@ object AuditScenarios {
http("DELETE audited entity")
.delete("/${collectionName}/${uuid}")
.headers(Headers.authToken)
+ .headers(Headers.auditRegionHeaders)
.check(extractEntityUuid(SessionVarDeletedUuid)))
.exec(session => {
val uuid = session(SessionVarDeletedUuid).as[String]
http://git-wip-us.apache.org/repos/asf/usergrid/blob/963a0841/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/EntityCollectionScenarios.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/EntityCollectionScenarios.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/EntityCollectionScenarios.scala
index de95920..bc3cf8c 100644
--- a/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/EntityCollectionScenarios.scala
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/EntityCollectionScenarios.scala
@@ -73,6 +73,7 @@ object EntityCollectionScenarios {
http("GET entities")
.get(entityGetUrl(false))
.headers(Headers.authToken)
+ .headers(Headers.auditRegionHeaders)
.check(status.is(200), maybeExtractCursor(SessionVarCursor))
)
@@ -80,6 +81,7 @@ object EntityCollectionScenarios {
http("GET entities")
.get(entityGetUrl(true))
.headers(Headers.authToken)
+ .headers(Headers.auditRegionHeaders)
.check(status.is(200), maybeExtractCursor(SessionVarCursor))
)
@@ -110,6 +112,7 @@ object EntityCollectionScenarios {
http("GET entity by name (anonymous)")
.get(randomEntityNameUrl())
.headers(Headers.authAnonymous)
+ .headers(Headers.auditRegionHeaders)
.check(status.is(200))
)
@@ -117,6 +120,7 @@ object EntityCollectionScenarios {
http("GET entity by name (token)")
.get(randomEntityNameUrl())
.headers(Headers.authToken)
+ .headers(Headers.auditRegionHeaders)
.check(status.is(200))
)
@@ -153,6 +157,7 @@ object EntityCollectionScenarios {
.get("/" + Settings.collection + "/${uuid}")
.queryParamMap(Settings.queryParamMap)
.headers(Headers.authAnonymous)
+ .headers(Headers.auditRegionHeaders)
.check(status.is(200))
)
@@ -161,6 +166,7 @@ object EntityCollectionScenarios {
.get("/" + Settings.collection + "/${uuid}")
.queryParamMap(Settings.queryParamMap)
.headers(Headers.authToken)
+ .headers(Headers.auditRegionHeaders)
.check(status.is(200))
)
@@ -207,6 +213,7 @@ object EntityCollectionScenarios {
exec(http("POST load entity")
.post(_ => "/" + Settings.collection)
.headers(Headers.authToken)
+ .headers(Headers.auditRegionHeaders)
.body(StringBody("""${entity}"""))
// 200 for success, 400 if already exists
.check(status.in(Seq(200)), extractEntityUuid(SessionVarUuid), extractEntityModified(SessionVarModified)))
@@ -244,6 +251,7 @@ object EntityCollectionScenarios {
http("DELETE entity")
.delete("""${entityUrl}""")
.headers(Headers.authToken)
+ .headers(Headers.auditRegionHeaders)
// 200 for success, 404 if doesn't exist
.check(status.in(Seq(200)))
)
@@ -271,6 +279,7 @@ object EntityCollectionScenarios {
http("UPDATE entity")
.put("""${entityUrl}""")
.headers(Headers.authToken)
+ .headers(Headers.auditRegionHeaders)
.body(StringBody(Settings.updateBody))
// 200 for success, 404 if doesn't exist
.check(status.in(Seq(200)))
@@ -299,6 +308,7 @@ object EntityCollectionScenarios {
.get("/" + Settings.collection + "/${entityName}")
.queryParamMap(Settings.queryParamMap)
.headers(Headers.authAnonymous)
+ .headers(Headers.auditRegionHeaders)
.check(status.is(200), extractEntityUuid(SessionVarUuid), extractEntityModified(SessionVarModified)))
.exec(session => {
val uuid = session(SessionVarUuid).as[String]
@@ -317,6 +327,7 @@ object EntityCollectionScenarios {
.get("/" + Settings.collection + "/${entityName}")
.queryParamMap(Settings.queryParamMap)
.headers(Headers.authToken)
+ .headers(Headers.auditRegionHeaders)
.check(status.is(200), extractEntityUuid(SessionVarUuid), extractEntityModified(SessionVarModified)))
.exec(session => {
val uuid = session(SessionVarUuid).as[String]
[09/10] usergrid git commit: USERGRID-1044: add region to unlimited
load test plus rename "auditRegion" to "usergridRegion" since it can be used
for non-audit purposes
Posted by mr...@apache.org.
USERGRID-1044: add region to unlimited load test
plus rename "auditRegion" to "usergridRegion" since it can be used for
non-audit purposes
Project: http://git-wip-us.apache.org/repos/asf/usergrid/repo
Commit: http://git-wip-us.apache.org/repos/asf/usergrid/commit/2f307a75
Tree: http://git-wip-us.apache.org/repos/asf/usergrid/tree/2f307a75
Diff: http://git-wip-us.apache.org/repos/asf/usergrid/diff/2f307a75
Branch: refs/heads/master
Commit: 2f307a75066204a894bd68115518e29064ae56cc
Parents: 963a084
Author: Mike Dunker <md...@apigee.com>
Authored: Mon Oct 19 12:56:22 2015 -0700
Committer: Mike Dunker <md...@apigee.com>
Committed: Mon Oct 19 12:56:22 2015 -0700
----------------------------------------------------------------------
.../runAuditVerifyCollectionEntities.sh | 7 +++----
stack/loadtests/runLoadEntitiesUnlimited.sh | 4 +++-
.../usergrid/enums/ConfigProperties.scala | 6 +++---
.../org/apache/usergrid/helpers/Headers.scala | 4 ++--
.../usergrid/scenarios/AuditScenarios.scala | 10 ++++-----
.../scenarios/EntityCollectionScenarios.scala | 22 ++++++++++----------
.../org/apache/usergrid/settings/Settings.scala | 2 +-
stack/loadtests/testConfig.sh | 1 +
8 files changed, 29 insertions(+), 27 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/usergrid/blob/2f307a75/stack/loadtests/runAuditVerifyCollectionEntities.sh
----------------------------------------------------------------------
diff --git a/stack/loadtests/runAuditVerifyCollectionEntities.sh b/stack/loadtests/runAuditVerifyCollectionEntities.sh
index fa75505..695c9ee 100755
--- a/stack/loadtests/runAuditVerifyCollectionEntities.sh
+++ b/stack/loadtests/runAuditVerifyCollectionEntities.sh
@@ -28,18 +28,17 @@ if [[ ! -d "$DIR" ]]; then DIR="$PWD"; fi
#RETRY_COUNT=
DELETE_AFTER_SUCCESSFUL_AUDIT=false
-AUDIT_REGION=
die() { echo "$@" 1>&2 ; exit 1; }
-[ "$#" -ge 3 ] || die "At least 3 arguments required, $# provided. Example is $0 RAMP_USERS RAMP_TIME(seconds) AUDIT_UUID_FILENAME [FAILED_UUID_FILENAME [DELETE_AFTER_SUCCESSFUL_AUDIT(true/false)[AUDIT_REGION]]]"
+[ "$#" -ge 3 ] || die "At least 3 arguments required, $# provided. Example is $0 RAMP_USERS RAMP_TIME(seconds) AUDIT_UUID_FILENAME [FAILED_UUID_FILENAME [DELETE_AFTER_SUCCESSFUL_AUDIT(true/false)[USERGRID_REGION]]]"
RAMP_USERS="$1"
RAMP_TIME="$2"
AUDIT_UUID_FILENAME="$3"
FAILED_UUID_FILENAME="$4"
[ "$#" -ge 5 ] && DELETE_AFTER_SUCCESSFUL_AUDIT="$5"
-[ "$#" -ge 6 ] && AUDIT_REGION="$6"
+[ "$#" -ge 6 ] && USERGRID_REGION="$6"
shift $#
@@ -65,6 +64,6 @@ mvn gatling:execute \
-DfailedUuidFilename=${FAILED_UUID_FILENAME} \
-DprintFailedRequests=${PRINT_FAILED_REQUESTS} \
-DdeleteAfterSuccessfulAudit=${DELETE_AFTER_SUCCESSFUL_AUDIT} \
--DauditRegion=${AUDIT_REGION} \
+-DusergridRegion=${USERGRID_REGION} \
-Dgatling.simulationClass=org.apache.usergrid.simulations.AuditSimulation
http://git-wip-us.apache.org/repos/asf/usergrid/blob/2f307a75/stack/loadtests/runLoadEntitiesUnlimited.sh
----------------------------------------------------------------------
diff --git a/stack/loadtests/runLoadEntitiesUnlimited.sh b/stack/loadtests/runLoadEntitiesUnlimited.sh
index 9222a57..11ca0a4 100755
--- a/stack/loadtests/runLoadEntitiesUnlimited.sh
+++ b/stack/loadtests/runLoadEntitiesUnlimited.sh
@@ -44,7 +44,7 @@ if [[ ! -d "$DIR" ]]; then DIR="$PWD"; fi
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 [ENTITY_SEED [ENTITY_WORKER_NUM [ENTITY_WORKER_COUNT]]]]"
+[ "$#" -ge 2 ] || die "At least 2 arguments required, $# provided. Example is $0 RAMP_USERS RAMP_TIME(seconds) [UUID_FILENAME [ENTITY_SEED [ENTITY_WORKER_NUM [ENTITY_WORKER_COUNT [USERGRID_REGION]]]]]"
RAMP_USERS="$1"
RAMP_TIME="$2"
@@ -52,6 +52,7 @@ RAMP_TIME="$2"
[ "$#" -ge 4 ] && ENTITY_SEED="$4"
[ "$#" -ge 5 ] && ENTITY_WORKER_NUM="$5"
[ "$#" -ge 6 ] && ENTITY_WORKER_COUNT="$6"
+[ "$#" -ge 7 ] && USERGRID_REGION="$6"
shift $#
@@ -97,5 +98,6 @@ mvn gatling:execute \
-DrampTime=${RAMP_TIME} \
-DuuidFilename=${UUID_FILENAME} \
-DprintFailedRequests=${PRINT_FAILED_REQUESTS} \
+-DusergridRegion=${USERGRID_REGION} \
-Dgatling.simulationClass=org.apache.usergrid.simulations.ConfigurableSimulation
http://git-wip-us.apache.org/repos/asf/usergrid/blob/2f307a75/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 d825bb6..f74222e 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
@@ -86,7 +86,7 @@ object ConfigProperties {
val InterleavedWorkerFeed = "interleavedWorkerFeed"
val NewCsvOnFlush = "newCsvOnFlush"
val DeleteAfterSuccessfulAudit = "deleteAfterSuccessfulAudit"
- val AuditRegion = "auditRegion";
+ val UsergridRegion = "usergridRegion";
val Values = Seq(Org,App,AdminUser,AdminPassword,BaseUrl,AuthType,TokenType,SkipSetup,CreateOrg,CreateApp,LoadEntities,
ScenarioType,RampUsers,ConstantUsersPerSec,ConstantUsersDuration,UserSeed,AppUser,AppUserPassword,NumEntities,
@@ -96,7 +96,7 @@ object ConfigProperties {
UuidFilename,AuditUuidFilename,FailedUuidFilename,SandboxCollection,PurgeUsers,RetryCount,LaterThanTimestamp,
EntityProgressCount,InjectionList,PrintFailedRequests,GetViaQuery,MultiPropertyPrefix,MultiPropertyCount,
MultiPropertySizeInK,EntityNumberProperty,QueryParams,CsvFeedPattern,UnlimitedFeed,FlushCsv,InterleavedWorkerFeed,
- NewCsvOnFlush,DeleteAfterSuccessfulAudit,AuditRegion)
+ NewCsvOnFlush,DeleteAfterSuccessfulAudit,UsergridRegion)
def isValid(str: String): Boolean = {
Values.contains(str)
@@ -170,7 +170,7 @@ object ConfigProperties {
case InterleavedWorkerFeed => false
case NewCsvOnFlush => false
case DeleteAfterSuccessfulAudit => false
- case AuditRegion => ""
+ case UsergridRegion => ""
}
} else {
null
http://git-wip-us.apache.org/repos/asf/usergrid/blob/2f307a75/stack/loadtests/src/main/scala/org/apache/usergrid/helpers/Headers.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/helpers/Headers.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/helpers/Headers.scala
index ce9a168..863a12b 100755
--- a/stack/loadtests/src/main/scala/org/apache/usergrid/helpers/Headers.scala
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/helpers/Headers.scala
@@ -62,8 +62,8 @@ object Headers {
/**
* Optional region header
*/
- def auditRegionHeaders: Map[String, String] = {
- if (Settings.auditRegion != "") Map( "UsergridRegion" -> Settings.auditRegion )
+ def usergridRegionHeaders: Map[String, String] = {
+ if (Settings.usergridRegion != "") Map( "UsergridRegion" -> Settings.usergridRegion )
else Map()
}
http://git-wip-us.apache.org/repos/asf/usergrid/blob/2f307a75/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 be754f4..4743536 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
@@ -58,7 +58,7 @@ object AuditScenarios {
http("GET collections")
.get(collectionGetUrl(false))
.headers(Headers.authToken)
- .headers(Headers.auditRegionHeaders)
+ .headers(Headers.usergridRegionHeaders)
.check(status.is(200),extractAuditEntities(SessionVarCollectionEntities),maybeExtractCursor(SessionVarCursor)))
.foreach("${" + SessionVarCollectionEntities + "}", "singleResult") {
exec(session => {
@@ -76,7 +76,7 @@ object AuditScenarios {
http("GET collections")
.get(collectionGetUrl(true))
.headers(Headers.authToken)
- .headers(Headers.auditRegionHeaders)
+ .headers(Headers.usergridRegionHeaders)
.check(status.is(200),extractAuditEntities(SessionVarCollectionEntities),maybeExtractCursor(SessionVarCursor)))
.foreach("${" + SessionVarCollectionEntities + "}", "singleResult") {
exec(session => {
@@ -120,7 +120,7 @@ object AuditScenarios {
http("DELETE audited entity")
.delete("/${collectionName}/${uuid}")
.headers(Headers.authToken)
- .headers(Headers.auditRegionHeaders)
+ .headers(Headers.usergridRegionHeaders)
.check(extractEntityUuid(SessionVarDeletedUuid)))
.exec(session => {
val uuid = session(SessionVarDeletedUuid).as[String]
@@ -139,7 +139,7 @@ object AuditScenarios {
http("GET collection entity direct")
.get("/${collectionName}/${uuid}")
.headers(Headers.authToken)
- .headers(Headers.auditRegionHeaders)
+ .headers(Headers.usergridRegionHeaders)
.check()
.check(status.in(Seq(200,404)),extractAuditEntities(SessionVarCollectionEntities),
extractEntityUuid(SessionVarEntityUuid),extractEntityName(SessionVarEntityName)))
@@ -193,7 +193,7 @@ object AuditScenarios {
http("GET collection entity")
.get("/${collectionName}?ql=uuid=${uuid}")
.headers(Headers.authToken)
- .headers(Headers.auditRegionHeaders)
+ .headers(Headers.usergridRegionHeaders)
.check(status.is(200),jsonPath("$.count").optional.saveAs("count"),
extractAuditEntities(SessionVarCollectionEntities),
extractEntityUuid(SessionVarEntityUuid),extractEntityName(SessionVarEntityName)))
http://git-wip-us.apache.org/repos/asf/usergrid/blob/2f307a75/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/EntityCollectionScenarios.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/EntityCollectionScenarios.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/EntityCollectionScenarios.scala
index bc3cf8c..f717f16 100644
--- a/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/EntityCollectionScenarios.scala
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/EntityCollectionScenarios.scala
@@ -73,7 +73,7 @@ object EntityCollectionScenarios {
http("GET entities")
.get(entityGetUrl(false))
.headers(Headers.authToken)
- .headers(Headers.auditRegionHeaders)
+ .headers(Headers.usergridRegionHeaders)
.check(status.is(200), maybeExtractCursor(SessionVarCursor))
)
@@ -81,7 +81,7 @@ object EntityCollectionScenarios {
http("GET entities")
.get(entityGetUrl(true))
.headers(Headers.authToken)
- .headers(Headers.auditRegionHeaders)
+ .headers(Headers.usergridRegionHeaders)
.check(status.is(200), maybeExtractCursor(SessionVarCursor))
)
@@ -112,7 +112,7 @@ object EntityCollectionScenarios {
http("GET entity by name (anonymous)")
.get(randomEntityNameUrl())
.headers(Headers.authAnonymous)
- .headers(Headers.auditRegionHeaders)
+ .headers(Headers.usergridRegionHeaders)
.check(status.is(200))
)
@@ -120,7 +120,7 @@ object EntityCollectionScenarios {
http("GET entity by name (token)")
.get(randomEntityNameUrl())
.headers(Headers.authToken)
- .headers(Headers.auditRegionHeaders)
+ .headers(Headers.usergridRegionHeaders)
.check(status.is(200))
)
@@ -157,7 +157,7 @@ object EntityCollectionScenarios {
.get("/" + Settings.collection + "/${uuid}")
.queryParamMap(Settings.queryParamMap)
.headers(Headers.authAnonymous)
- .headers(Headers.auditRegionHeaders)
+ .headers(Headers.usergridRegionHeaders)
.check(status.is(200))
)
@@ -166,7 +166,7 @@ object EntityCollectionScenarios {
.get("/" + Settings.collection + "/${uuid}")
.queryParamMap(Settings.queryParamMap)
.headers(Headers.authToken)
- .headers(Headers.auditRegionHeaders)
+ .headers(Headers.usergridRegionHeaders)
.check(status.is(200))
)
@@ -213,7 +213,7 @@ object EntityCollectionScenarios {
exec(http("POST load entity")
.post(_ => "/" + Settings.collection)
.headers(Headers.authToken)
- .headers(Headers.auditRegionHeaders)
+ .headers(Headers.usergridRegionHeaders)
.body(StringBody("""${entity}"""))
// 200 for success, 400 if already exists
.check(status.in(Seq(200)), extractEntityUuid(SessionVarUuid), extractEntityModified(SessionVarModified)))
@@ -251,7 +251,7 @@ object EntityCollectionScenarios {
http("DELETE entity")
.delete("""${entityUrl}""")
.headers(Headers.authToken)
- .headers(Headers.auditRegionHeaders)
+ .headers(Headers.usergridRegionHeaders)
// 200 for success, 404 if doesn't exist
.check(status.in(Seq(200)))
)
@@ -279,7 +279,7 @@ object EntityCollectionScenarios {
http("UPDATE entity")
.put("""${entityUrl}""")
.headers(Headers.authToken)
- .headers(Headers.auditRegionHeaders)
+ .headers(Headers.usergridRegionHeaders)
.body(StringBody(Settings.updateBody))
// 200 for success, 404 if doesn't exist
.check(status.in(Seq(200)))
@@ -308,7 +308,7 @@ object EntityCollectionScenarios {
.get("/" + Settings.collection + "/${entityName}")
.queryParamMap(Settings.queryParamMap)
.headers(Headers.authAnonymous)
- .headers(Headers.auditRegionHeaders)
+ .headers(Headers.usergridRegionHeaders)
.check(status.is(200), extractEntityUuid(SessionVarUuid), extractEntityModified(SessionVarModified)))
.exec(session => {
val uuid = session(SessionVarUuid).as[String]
@@ -327,7 +327,7 @@ object EntityCollectionScenarios {
.get("/" + Settings.collection + "/${entityName}")
.queryParamMap(Settings.queryParamMap)
.headers(Headers.authToken)
- .headers(Headers.auditRegionHeaders)
+ .headers(Headers.usergridRegionHeaders)
.check(status.is(200), extractEntityUuid(SessionVarUuid), extractEntityModified(SessionVarModified)))
.exec(session => {
val uuid = session(SessionVarUuid).as[String]
http://git-wip-us.apache.org/repos/asf/usergrid/blob/2f307a75/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 b9ba86d..2ecc3e3 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
@@ -187,7 +187,7 @@ object Settings {
val interleavedWorkerFeed:Boolean = if (unlimitedFeed) true else initBoolSetting(ConfigProperties.InterleavedWorkerFeed)
val newCsvOnFlush:Boolean = initBoolSetting(ConfigProperties.NewCsvOnFlush)
val deleteAfterSuccessfulAudit:Boolean = initBoolSetting(ConfigProperties.DeleteAfterSuccessfulAudit)
- val auditRegion = initStrSetting(ConfigProperties.AuditRegion)
+ val usergridRegion = initStrSetting(ConfigProperties.UsergridRegion)
val multiPropertyPrefix = initStrSetting(ConfigProperties.MultiPropertyPrefix)
val multiPropertyCount:Int = initIntSetting(ConfigProperties.MultiPropertyCount)
http://git-wip-us.apache.org/repos/asf/usergrid/blob/2f307a75/stack/loadtests/testConfig.sh
----------------------------------------------------------------------
diff --git a/stack/loadtests/testConfig.sh b/stack/loadtests/testConfig.sh
index 466d8c9..59f64e1 100755
--- a/stack/loadtests/testConfig.sh
+++ b/stack/loadtests/testConfig.sh
@@ -64,3 +64,4 @@ GET_VIA_QUERY=false
QUERY_PARAMS=
FLUSH_CSV=10000
+USERGRID_REGION=
[03/10] usergrid git commit: USERGRID-1044: add usergrid region for
auditing a specific region
Posted by mr...@apache.org.
USERGRID-1044: add usergrid region for auditing a specific region
Project: http://git-wip-us.apache.org/repos/asf/usergrid/repo
Commit: http://git-wip-us.apache.org/repos/asf/usergrid/commit/b62ad30c
Tree: http://git-wip-us.apache.org/repos/asf/usergrid/tree/b62ad30c
Diff: http://git-wip-us.apache.org/repos/asf/usergrid/diff/b62ad30c
Branch: refs/heads/master
Commit: b62ad30cb9f16de7cb1877877aee6126f541bc72
Parents: 9b2508f
Author: Mike Dunker <md...@apigee.com>
Authored: Fri Oct 9 16:44:19 2015 -0700
Committer: Mike Dunker <md...@apigee.com>
Committed: Fri Oct 9 16:44:19 2015 -0700
----------------------------------------------------------------------
stack/loadtests/runAuditVerifyCollectionEntities.sh | 5 ++++-
.../scala/org/apache/usergrid/enums/ConfigProperties.scala | 4 +++-
.../src/main/scala/org/apache/usergrid/helpers/Headers.scala | 7 +++++++
.../scala/org/apache/usergrid/scenarios/AuditScenarios.scala | 1 +
.../main/scala/org/apache/usergrid/settings/Settings.scala | 1 +
5 files changed, 16 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/usergrid/blob/b62ad30c/stack/loadtests/runAuditVerifyCollectionEntities.sh
----------------------------------------------------------------------
diff --git a/stack/loadtests/runAuditVerifyCollectionEntities.sh b/stack/loadtests/runAuditVerifyCollectionEntities.sh
index 2e2d76d..fa75505 100755
--- a/stack/loadtests/runAuditVerifyCollectionEntities.sh
+++ b/stack/loadtests/runAuditVerifyCollectionEntities.sh
@@ -28,16 +28,18 @@ if [[ ! -d "$DIR" ]]; then DIR="$PWD"; fi
#RETRY_COUNT=
DELETE_AFTER_SUCCESSFUL_AUDIT=false
+AUDIT_REGION=
die() { echo "$@" 1>&2 ; exit 1; }
-[ "$#" -ge 3 ] || die "At least 3 arguments required, $# provided. Example is $0 RAMP_USERS RAMP_TIME(seconds) AUDIT_UUID_FILENAME [FAILED_UUID_FILENAME [DELETE_AFTER_SUCCESSFUL_AUDIT(true/false)]]"
+[ "$#" -ge 3 ] || die "At least 3 arguments required, $# provided. Example is $0 RAMP_USERS RAMP_TIME(seconds) AUDIT_UUID_FILENAME [FAILED_UUID_FILENAME [DELETE_AFTER_SUCCESSFUL_AUDIT(true/false)[AUDIT_REGION]]]"
RAMP_USERS="$1"
RAMP_TIME="$2"
AUDIT_UUID_FILENAME="$3"
FAILED_UUID_FILENAME="$4"
[ "$#" -ge 5 ] && DELETE_AFTER_SUCCESSFUL_AUDIT="$5"
+[ "$#" -ge 6 ] && AUDIT_REGION="$6"
shift $#
@@ -63,5 +65,6 @@ mvn gatling:execute \
-DfailedUuidFilename=${FAILED_UUID_FILENAME} \
-DprintFailedRequests=${PRINT_FAILED_REQUESTS} \
-DdeleteAfterSuccessfulAudit=${DELETE_AFTER_SUCCESSFUL_AUDIT} \
+-DauditRegion=${AUDIT_REGION} \
-Dgatling.simulationClass=org.apache.usergrid.simulations.AuditSimulation
http://git-wip-us.apache.org/repos/asf/usergrid/blob/b62ad30c/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 975944a..d825bb6 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
@@ -86,6 +86,7 @@ object ConfigProperties {
val InterleavedWorkerFeed = "interleavedWorkerFeed"
val NewCsvOnFlush = "newCsvOnFlush"
val DeleteAfterSuccessfulAudit = "deleteAfterSuccessfulAudit"
+ val AuditRegion = "auditRegion";
val Values = Seq(Org,App,AdminUser,AdminPassword,BaseUrl,AuthType,TokenType,SkipSetup,CreateOrg,CreateApp,LoadEntities,
ScenarioType,RampUsers,ConstantUsersPerSec,ConstantUsersDuration,UserSeed,AppUser,AppUserPassword,NumEntities,
@@ -95,7 +96,7 @@ object ConfigProperties {
UuidFilename,AuditUuidFilename,FailedUuidFilename,SandboxCollection,PurgeUsers,RetryCount,LaterThanTimestamp,
EntityProgressCount,InjectionList,PrintFailedRequests,GetViaQuery,MultiPropertyPrefix,MultiPropertyCount,
MultiPropertySizeInK,EntityNumberProperty,QueryParams,CsvFeedPattern,UnlimitedFeed,FlushCsv,InterleavedWorkerFeed,
- NewCsvOnFlush,DeleteAfterSuccessfulAudit)
+ NewCsvOnFlush,DeleteAfterSuccessfulAudit,AuditRegion)
def isValid(str: String): Boolean = {
Values.contains(str)
@@ -169,6 +170,7 @@ object ConfigProperties {
case InterleavedWorkerFeed => false
case NewCsvOnFlush => false
case DeleteAfterSuccessfulAudit => false
+ case AuditRegion => ""
}
} else {
null
http://git-wip-us.apache.org/repos/asf/usergrid/blob/b62ad30c/stack/loadtests/src/main/scala/org/apache/usergrid/helpers/Headers.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/helpers/Headers.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/helpers/Headers.scala
index 9feb197..ce9a168 100755
--- a/stack/loadtests/src/main/scala/org/apache/usergrid/helpers/Headers.scala
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/helpers/Headers.scala
@@ -59,5 +59,12 @@ object Headers {
else authAnonymous
}
+ /**
+ * Optional region header
+ */
+ def auditRegionHeaders: Map[String, String] = {
+ if (Settings.auditRegion != "") Map( "UsergridRegion" -> Settings.auditRegion )
+ else Map()
+ }
}
http://git-wip-us.apache.org/repos/asf/usergrid/blob/b62ad30c/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 836a1fb..aaabf99 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
@@ -135,6 +135,7 @@ object AuditScenarios {
http("GET collection entity")
.get("/${collectionName}?ql=uuid=${uuid}")
.headers(Headers.authToken)
+ .headers(Headers.auditRegionHeaders)
.check(status.is(200),jsonPath("$.count").optional.saveAs("count"),extractAuditEntities(SessionVarCollectionEntities)))
.exec(session => {
val count = session("count").as[String].toInt
http://git-wip-us.apache.org/repos/asf/usergrid/blob/b62ad30c/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 eeeac1f..979fb3f 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
@@ -187,6 +187,7 @@ object Settings {
val interleavedWorkerFeed:Boolean = if (unlimitedFeed) true else initBoolSetting(ConfigProperties.InterleavedWorkerFeed)
val newCsvOnFlush:Boolean = initBoolSetting(ConfigProperties.NewCsvOnFlush)
val deleteAfterSuccessfulAudit:Boolean = initBoolSetting(ConfigProperties.DeleteAfterSuccessfulAudit)
+ val auditRegion = initStrSetting(ConfigProperties.AuditRegion)
val multiPropertyPrefix = initStrSetting(ConfigProperties.MultiPropertyPrefix)
val multiPropertyCount:Int = initIntSetting(ConfigProperties.MultiPropertyCount)