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)