You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@usergrid.apache.org by to...@apache.org on 2015/08/03 22:30:55 UTC
[11/21] incubator-usergrid git commit: USERGRID-871: add update test
and some general cleanup
USERGRID-871: add update test and some general cleanup
Project: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/commit/5d202d90
Tree: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/tree/5d202d90
Diff: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/diff/5d202d90
Branch: refs/heads/two-dot-o-dev
Commit: 5d202d90c6ace67f7e0644d6fe5623f11fafb716
Parents: 195449f
Author: Mike Dunker <md...@apigee.com>
Authored: Thu Jul 23 08:07:12 2015 -0700
Committer: Mike Dunker <md...@apigee.com>
Committed: Thu Jul 23 08:07:12 2015 -0700
----------------------------------------------------------------------
stack/loadtests/runLoadEntities.sh | 4 +-
stack/loadtests/runUpdateEntities.sh | 99 ++++++++++++++++++++
.../datagenerators/EntityDataGenerator.scala | 12 +--
.../datagenerators/FeederGenerator.scala | 48 ++++++----
.../org/apache/usergrid/enums/AuthType.scala | 6 ++
.../usergrid/enums/ConfigProperties.scala | 9 +-
.../usergrid/enums/EndConditionType.scala | 9 +-
.../org/apache/usergrid/enums/EntityType.scala | 9 +-
.../apache/usergrid/enums/ScenarioType.scala | 10 +-
.../org/apache/usergrid/enums/TokenType.scala | 9 +-
.../apache/usergrid/helpers/Extractors.scala | 27 ------
.../org/apache/usergrid/helpers/Setup.scala | 12 +--
.../org/apache/usergrid/helpers/Utils.scala | 2 +-
.../scenarios/ApplicationScenarios.scala | 2 +-
.../scenarios/ConnectionScenarios.scala | 8 +-
.../scenarios/EntityCollectionScenarios.scala | 60 +++++++-----
.../usergrid/scenarios/EntityScenarios.scala | 1 -
.../scenarios/NotificationScenarios.scala | 9 +-
.../usergrid/scenarios/NotifierScenarios.scala | 5 +-
.../scenarios/OrganizationScenarios.scala | 7 +-
.../usergrid/scenarios/TokenScenarios.scala | 11 +--
.../org/apache/usergrid/settings/Headers.scala | 1 -
.../org/apache/usergrid/settings/Settings.scala | 10 +-
.../simulations/ConfigurableSimulation.scala | 47 +++-------
.../simulations/deprecated/AppSimulation.scala | 3 -
.../deprecated/ConnectionsSimulation.scala | 3 -
.../deprecated/SetupSimulation.scala | 3 -
27 files changed, 250 insertions(+), 176 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/5d202d90/stack/loadtests/runLoadEntities.sh
----------------------------------------------------------------------
diff --git a/stack/loadtests/runLoadEntities.sh b/stack/loadtests/runLoadEntities.sh
index bee8d1a..d213fd4 100755
--- a/stack/loadtests/runLoadEntities.sh
+++ b/stack/loadtests/runLoadEntities.sh
@@ -37,9 +37,9 @@ mvn compile
#APP=$(date +%s)
ADMIN_USER=superuser
ADMIN_PASSWORD=test
-CREATE_ORG=false
+CREATE_ORG=true
ORG=gatling
-CREATE_APP=false
+CREATE_APP=true
APP=millionentities
COLLECTION_TYPE=trivialentities
SCENARIO_TYPE=loadEntities
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/5d202d90/stack/loadtests/runUpdateEntities.sh
----------------------------------------------------------------------
diff --git a/stack/loadtests/runUpdateEntities.sh b/stack/loadtests/runUpdateEntities.sh
new file mode 100755
index 0000000..0963a2d
--- /dev/null
+++ b/stack/loadtests/runUpdateEntities.sh
@@ -0,0 +1,99 @@
+#!/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.
+#
+
+die() { echo "$@" 1>&2 ; exit 1; }
+
+####
+#This is a script to simplify running gatling tests. It will default several parameters, invoke the maven plugins
+#Then aggregate the results
+####
+[ "$#" -ge 6 ] || die "At least 6 arguments required, $# provided. Example is $0 URL RAMP_USERS RAMP_TIME(seconds) CONSTANT_USERS_PER_SEC, CONSTANT_USERS_DURATION(seconds) NUM_ENTITIES"
+
+URL="$1"
+RAMP_USERS="$2"
+RAMP_TIME="$3"
+CONSTANT_USERS_PER_SEC="$4"
+CONSTANT_USERS_DURATION="$5"
+NUM_ENTITIES="$6"
+
+shift 6
+
+#Compile everything
+mvn compile
+
+#Set the app id to be a date epoch for uniqueness
+#APP=$(date +%s)
+ADMIN_USER=superuser
+ADMIN_PASSWORD=test
+CREATE_ORG=false
+ORG=gatling
+CREATE_APP=false
+APP=millionentities
+COLLECTION_TYPE=trivialentities
+SCENARIO_TYPE=updateEntities
+# don't load entities as part of setup
+LOAD_ENTITIES=false
+
+SKIP_SETUP=TRUE
+#SEARCH_QUERY=order%20by%20specials%20desc
+#SEARCH_LIMIT=1000
+ENTITY_TYPE=trivial
+ENTITY_PREFIX=trivial
+ENTITY_SEED=1
+AUTH_TYPE=token
+TOKEN_TYPE=management
+END_CONDITION_TYPE=minutesElapsed
+#END_CONDITION_TYPE=requestCount
+END_MINUTES=2
+END_REQUEST_COUNT=100
+
+#Execute the test
+mvn gatling:execute \
+-DskipSetup=${SKIP_SETUP} \
+-DcreateOrg=${CREATE_ORG} \
+-Dorg=${ORG} \
+-DcreateApp=${CREATE_APP} \
+-Dapp=${APP} \
+-Dbaseurl=${URL} \
+-DadminUser=${ADMIN_USER} \
+-DadminPassword=${ADMIN_PASSWORD} \
+-DloadEntities=${LOAD_ENTITIES} \
+-DnumEntities=${NUM_ENTITIES} \
+-DentityType=${ENTITY_TYPE} \
+-DentityPrefix=${ENTITY_PREFIX} \
+-DentitySeed=${ENTITY_SEED} \
+-DrampUsers=${RAMP_USERS} \
+-DrampTime=${RAMP_TIME} \
+-DconstantUsersPerSec=${CONSTANT_USERS_PER_SEC} \
+-DconstantUsersDuration=${CONSTANT_USERS_DURATION} \
+-DcollectionType=${COLLECTION_TYPE} \
+-DscenarioType=${SCENARIO_TYPE} \
+-DauthType=${AUTH_TYPE} \
+-DtokenType=${TOKEN_TYPE} \
+-DendConditionType=${END_CONDITION_TYPE} \
+-DendMinutes=${END_MINUTES} \
+-DendRequestCount=${END_REQUEST_COUNT} \
+-Dgatling.simulationClass=org.apache.usergrid.simulations.ConfigurableSimulation
+
+
+
+#Now move all the reports
+#AGGREGATE_DIR="target/aggregate-$(date +%s)"
+
+#mkdir -p ${AGGREGATE_DIR}
+
+#copy to the format of target/aggregate(date)/(simnulationame)-simulation.log
+#find target -name "simulation.log" -exec cp {} ${AGGREGATE_DIR}/$(basename $(dirname {} ))-simulation.log \;
+
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/5d202d90/stack/loadtests/src/main/scala/org/apache/usergrid/datagenerators/EntityDataGenerator.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/datagenerators/EntityDataGenerator.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/datagenerators/EntityDataGenerator.scala
index 88b81c8..f9fa4fc 100755
--- a/stack/loadtests/src/main/scala/org/apache/usergrid/datagenerators/EntityDataGenerator.scala
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/datagenerators/EntityDataGenerator.scala
@@ -14,15 +14,15 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
- package org.apache.usergrid.datagenerators
+package org.apache.usergrid.datagenerators
- import org.apache.usergrid.enums.EntityType
- import org.apache.usergrid.helpers.Utils
+import org.apache.usergrid.enums.EntityType
+import org.apache.usergrid.helpers.Utils
- import scala.collection.mutable.ArrayBuffer
- import scala.util.parsing.json.JSONObject
+import scala.collection.mutable.ArrayBuffer
+import scala.util.parsing.json.JSONObject
- object EntityDataGenerator {
+object EntityDataGenerator {
def generateBlockUserLists(numUsers: Int): Map[String, String] = {
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/5d202d90/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 92444b2..1c80822 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
@@ -14,18 +14,16 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
- package org.apache.usergrid.datagenerators
+package org.apache.usergrid.datagenerators
- import java.util
- import java.util.UUID
- import java.util.concurrent.atomic.{AtomicInteger, AtomicLong}
- import io.gatling.core.Predef._
- import org.apache.usergrid.helpers.Utils
- import org.apache.usergrid.settings.Settings
- import scala.collection.mutable.ArrayBuffer
- import scala.util.Random
+import java.util.UUID
+import java.util.concurrent.atomic.AtomicInteger
+import io.gatling.core.Predef._
+import org.apache.usergrid.helpers.Utils
+import org.apache.usergrid.settings.Settings
+import scala.collection.mutable.ArrayBuffer
- object FeederGenerator {
+object FeederGenerator {
def generateUserWithGeolocationFeeder(numUsers: Int, radius: Double, centerLatitude: Double, centerLongitude: Double): Array[Map[String, String]] = {
var userArray: ArrayBuffer[Map[String, String]] = new ArrayBuffer[Map[String, String]]
@@ -206,20 +204,32 @@
entityArray.toArray
}
- def generateCustomEntityFeeder(numEntities: Int, entityType: String, prefix: String, seed: Int = 1): Array[Map[String, Any]] = {
- var entityMapArray: ArrayBuffer[Map[String, Any]] = new ArrayBuffer[Map[String, Any]]
+ /*
+ * Gatling doesn't handle feeders running out of data well -- ending test with failure and not building a report.
+ * This feeder will serve data forever, but validEntity will be set to "no" when data has run out. Each user can
+ * then exit in a controlled fashion.
+ */
+ def generateCustomEntityFeeder(numEntities: Int, entityType: String, prefix: String, seed: Int = 1): Feeder[String] =
+ new Feeder[String] {
+ var counter = new AtomicInteger(0)
- for (i <- seed to numEntities+seed-1) {
- val entityName = prefix.concat(i.toString)
+ // runs forever -- users detect when data is done using validEntity field
+ override def hasNext: Boolean = true
+
+ override def next(): Map[String, String] = {
+ val i = counter.getAndIncrement()
+ val seededVal = i + seed
+ val entityName = prefix.concat(seededVal.toString)
val entity = EntityDataGenerator.generateEntity(entityType, entityName)
val entityUrl = Settings.baseCollectionUrl + "/" + entityName
- entityMapArray += Map("entityName" -> entityName, "entity" -> entity, "entityUrl" -> entityUrl)
- }
+ val validEntity = if (i >= numEntities) "no" else "yes"
- entityMapArray.toArray
+ Map("entityName" -> entityName, "entity" -> entity, "entityUrl" -> entityUrl, "validEntity" -> validEntity, "entityNum" -> (i+1).toString)
+ }
}
- def generateCustomEntityFeeder2 (numEntities: Int, entityType: String, prefix: String, seed: Int = 1): Feeder[String] =
+ /*
+ def generateCustomEntityFeeder(numEntities: Int, entityType: String, prefix: String, seed: Int = 1): Feeder[String] =
new Feeder[String] {
var counter = new AtomicInteger(seed)
@@ -237,6 +247,8 @@
}
}
+ */
+
def generateCustomEntityInfiniteFeeder(seed: Int = Settings.entitySeed, entityType: String = Settings.entityType, prefix: String = Settings.entityPrefix): Iterator[String] = {
Iterator.from(seed).map(i=>EntityDataGenerator.generateEntity(entityType, prefix.concat(i.toString)))
}
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/5d202d90/stack/loadtests/src/main/scala/org/apache/usergrid/enums/AuthType.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/enums/AuthType.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/enums/AuthType.scala
index 2823d95..6086fdd 100644
--- a/stack/loadtests/src/main/scala/org/apache/usergrid/enums/AuthType.scala
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/enums/AuthType.scala
@@ -7,4 +7,10 @@ object AuthType {
val Anonymous = "anonymous"
val Token = "token"
val Basic = "basic"
+
+ val Values = Seq(Anonymous,Token,Basic)
+
+ def isValid(str: String): Boolean = {
+ Values.contains(str)
+ }
}
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/5d202d90/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 56350ee..2f13a12 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
@@ -44,9 +44,16 @@ object ConfigProperties {
val OrgCreationName = "orgCreationName"
val OrgCreationEmail = "orgCreationEmail"
val OrgCreationPassword = "orgCreationPassword"
+ val UpdateProperty = "updateProperty"
+ val UpdateValue = "updateValue"
+
val Values = Seq(Org,App,AdminUser,AdminPassword,BaseUrl,AuthType,TokenType,SkipSetup,CreateOrg,CreateApp,LoadEntities,
ScenarioType,RampUsers,ConstantUsersPerSec,ConstantUsersDuration,UserSeed,AppUser,AppUserPassword,NumEntities,
NumDevices,CollectionType,RampTime,Throttle,RpsTarget,RpsRampTime,HoldDuration,PushNotifier,EntityPrefix,EntityType,
EntitySeed,SearchLimit,SearchQuery,EndConditionType,EndMinutes,EndRequestCount,OrgCreationUsername,OrgCreationName,
- OrgCreationEmail,OrgCreationPassword)
+ OrgCreationEmail,OrgCreationPassword,UpdateProperty,UpdateValue)
+
+ def isValid(str: String): Boolean = {
+ Values.contains(str)
+ }
}
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/5d202d90/stack/loadtests/src/main/scala/org/apache/usergrid/enums/EndConditionType.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/enums/EndConditionType.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/enums/EndConditionType.scala
index 4bbb9cc..2d4bf63 100644
--- a/stack/loadtests/src/main/scala/org/apache/usergrid/enums/EndConditionType.scala
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/enums/EndConditionType.scala
@@ -1,9 +1,12 @@
package org.apache.usergrid.enums
-/**
- * Created by mdunker on 7/21/15.
- */
object EndConditionType {
val MinutesElapsed = "minutesElapsed"
val RequestCount = "requestCount"
+
+ val Values = Seq(MinutesElapsed,RequestCount)
+
+ def isValid(str: String): Boolean = {
+ Values.contains(str)
+ }
}
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/5d202d90/stack/loadtests/src/main/scala/org/apache/usergrid/enums/EntityType.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/enums/EntityType.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/enums/EntityType.scala
index d17d280..dfb378c 100644
--- a/stack/loadtests/src/main/scala/org/apache/usergrid/enums/EntityType.scala
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/enums/EntityType.scala
@@ -1,9 +1,12 @@
package org.apache.usergrid.enums
-/**
- * Created by mdunker on 7/20/15.
- */
object EntityType {
val Trivial = "trivial"
val Basic = "basic"
+
+ val Values = Seq(Trivial,Basic)
+
+ def isValid(str: String): Boolean = {
+ Values.contains(str)
+ }
}
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/5d202d90/stack/loadtests/src/main/scala/org/apache/usergrid/enums/ScenarioType.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/enums/ScenarioType.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/enums/ScenarioType.scala
index e21a1ee..7dca619 100644
--- a/stack/loadtests/src/main/scala/org/apache/usergrid/enums/ScenarioType.scala
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/enums/ScenarioType.scala
@@ -1,11 +1,15 @@
package org.apache.usergrid.enums
-/**
- * Created by mdunker on 7/20/15.
- */
object ScenarioType {
val GetAllByCursor = "getAllByCursor"
val NameRandomInfinite = "nameRandomInfinite"
val LoadEntities = "loadEntities"
val DeleteEntities = "deleteEntities"
+ val UpdateEntities = "updateEntities"
+
+ val Values = Seq(GetAllByCursor,NameRandomInfinite,LoadEntities,DeleteEntities,UpdateEntities)
+
+ def isValid(str: String): Boolean = {
+ Values.contains(str)
+ }
}
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/5d202d90/stack/loadtests/src/main/scala/org/apache/usergrid/enums/TokenType.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/enums/TokenType.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/enums/TokenType.scala
index 4d371e1..456a9cb 100644
--- a/stack/loadtests/src/main/scala/org/apache/usergrid/enums/TokenType.scala
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/enums/TokenType.scala
@@ -1,10 +1,13 @@
package org.apache.usergrid.enums
-/**
- * Created by mdunker on 7/20/15.
- */
object TokenType {
val None = "none"
val User = "user"
val Management = "management"
+
+ val Values = Seq(None, User, Management)
+
+ def isValid(str: String): Boolean = {
+ Values.contains(str)
+ }
}
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/5d202d90/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 8de995e..35f75a7 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
@@ -103,31 +103,4 @@ object Extractors {
session => session.set("authType", Settings.authType)
}
- /*
- def injectTokenToSession(authType: String, tokenType: String): Expression[Session] = {
- session => {
- if (authType == AuthType.Token && tokenType == TokenType.User) {
- session.set("authToken", Setup.getUserToken)
- } else if (authType == AuthType.Token && tokenType == TokenType.Management) {
- session.set("authToken", Setup.getManagementToken())
- } else {
- session.set("authToken", "")
- }
- }
- }
-
- def injectAuth(authType: String, tokenType: String): Expression[Session] = {
- session => {
- if (authType == AuthType.Token && tokenType == TokenType.User) {
- session.set("authToken", Setup.getUserToken)
- } else if (authType == AuthType.Token && tokenType == TokenType.Management) {
- session.set("authToken", Setup.getManagementToken())
- } else {
- session.set("authToken", "")
- }
- session.set("authType", authType)
- }
- }
- */
-
}
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/5d202d90/stack/loadtests/src/main/scala/org/apache/usergrid/helpers/Setup.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/helpers/Setup.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/helpers/Setup.scala
index af3aabb..d90353a 100644
--- a/stack/loadtests/src/main/scala/org/apache/usergrid/helpers/Setup.scala
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/helpers/Setup.scala
@@ -20,24 +20,14 @@
package org.apache.usergrid.helpers
-import java.util
-
import com.fasterxml.jackson.databind.ObjectMapper
import com.ning.http.client.{ListenableFuture, AsyncHttpClient,Response}
-import io.gatling.core.Predef._
-import io.gatling.http.Predef._
-import io.gatling.http.request.StringBody
-import io.gatling.jsonpath.JsonPath
import org.apache.usergrid.datagenerators.FeederGenerator
import org.apache.usergrid.enums.TokenType
-import org.apache.usergrid.settings.{Settings, Headers}
+import org.apache.usergrid.settings.Settings
import scala.collection.mutable.ArrayBuffer
-import scala.util.parsing.json.JSONObject
-/**
- * Classy class class.
- */
object Setup {
var managementToken:String = null
val client = new AsyncHttpClient()
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/5d202d90/stack/loadtests/src/main/scala/org/apache/usergrid/helpers/Utils.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/helpers/Utils.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/helpers/Utils.scala
index 82061d6..16ade96 100755
--- a/stack/loadtests/src/main/scala/org/apache/usergrid/helpers/Utils.scala
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/helpers/Utils.scala
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
- package org.apache.usergrid.helpers
+package org.apache.usergrid.helpers
import scala.util.Random
import scala.util.parsing.json.JSONObject
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/5d202d90/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/ApplicationScenarios.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/ApplicationScenarios.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/ApplicationScenarios.scala
index 4150513..44fe118 100755
--- a/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/ApplicationScenarios.scala
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/ApplicationScenarios.scala
@@ -18,7 +18,7 @@
import io.gatling.core.Predef._
import io.gatling.http.Predef._
- import org.apache.usergrid.settings.{Settings, Headers}
+import org.apache.usergrid.settings.{Settings, Headers}
/**
* Performs organization registration
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/5d202d90/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/ConnectionScenarios.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/ConnectionScenarios.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/ConnectionScenarios.scala
index b2827bb..0ff20a0 100755
--- a/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/ConnectionScenarios.scala
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/ConnectionScenarios.scala
@@ -14,14 +14,14 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
- package org.apache.usergrid.scenarios
+package org.apache.usergrid.scenarios
import io.gatling.core.Predef._
import io.gatling.http.Predef._
- import org.apache.usergrid.datagenerators.FeederGenerator
- import org.apache.usergrid.settings.{Settings, Headers}
+import org.apache.usergrid.datagenerators.FeederGenerator
+import org.apache.usergrid.settings.{Settings, Headers}
- object ConnectionScenarios {
+object ConnectionScenarios {
val postUserConnection = exec(
http("POST connection")
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/5d202d90/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 592a507..1dd534c 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
@@ -147,56 +147,64 @@ object EntityCollectionScenarios {
.exec(injectTokenIntoSession())
.exec(injectAuthType())
.asLongAs(session => session("validEntity").asOption[String].map(validEntity => validEntity != "no").getOrElse[Boolean](true)) {
- feed(FeederGenerator.generateCustomEntityFeeder2(Settings.numEntities, Settings.entityType, Settings.entityPrefix, Settings.entitySeed))
+ feed(FeederGenerator.generateCustomEntityFeeder(Settings.numEntities, Settings.entityType, Settings.entityPrefix, Settings.entitySeed))
+ .exec{
+ session => if (session("validEntity").as[String] == "yes") { println("Loading entity #" + session("entityNum").as[String]) }
+ session
+ }
.doIf(session => session("validEntity").as[String] == "yes") {
exec(loadEntity)
}
}
- //.rendezVous(Settings.totalUsers)
/*
- val loadEntity = exec(
- http("POST load entity")
- .post(Settings.baseCollectionUrl)
+ * Delete entities
+ */
+ val deleteEntity = exec(
+ http("DELETE entity")
+ .delete("""${entityUrl}""")
.headers(Headers.authToken)
- .body(StringBody("""${entity}"""))
- .check(status.in(Seq(200,400)))
+ // 200 for success, 404 if doesn't exist
+ .check(status.in(Seq(200)))
)
- val loadEntities = scenario("Load entities")
+ val deleteEntities = scenario("Delete entities")
.exec(injectTokenIntoSession())
.exec(injectAuthType())
- .forever(
- feed(FeederGenerator.generateCustomEntityFeeder(Settings.numEntities, Settings.entityType, Settings.entityPrefix, Settings.entitySeed))
- .exec(loadEntity)
- )
- */
-
+ .asLongAs(session => session("validEntity").asOption[String].map(validEntity => validEntity != "no").getOrElse[Boolean](true)) {
+ feed(FeederGenerator.generateCustomEntityFeeder(Settings.numEntities, Settings.entityType, Settings.entityPrefix, Settings.entitySeed))
+ .exec {
+ session => if (session("validEntity").as[String] == "yes") { println("Deleting entity #" + session("entityNum").as[String]) }
+ session
+ }
+ .doIf(session => session("validEntity").as[String] == "yes") {
+ exec(deleteEntity)
+ }
+ }
/*
* Delete entities
*/
- val deleteEntity = exec(
- http("DELETE entity")
- .delete("""${entityUrl}""")
+ val updateEntity = exec(
+ http("UPDATE entity")
+ .put("""${entityUrl}""")
.headers(Headers.authToken)
+ .body(StringBody(Settings.updateBody))
// 200 for success, 404 if doesn't exist
.check(status.in(Seq(200)))
)
- val deleteEntities = scenario("Delete entities")
+ val updateEntities = scenario("Update entities")
.exec(injectTokenIntoSession())
.exec(injectAuthType())
.asLongAs(session => session("validEntity").asOption[String].map(validEntity => validEntity != "no").getOrElse[Boolean](true)) {
- feed(FeederGenerator.generateCustomEntityFeeder2(Settings.numEntities, Settings.entityType, Settings.entityPrefix, Settings.entitySeed))
+ feed(FeederGenerator.generateCustomEntityFeeder(Settings.numEntities, Settings.entityType, Settings.entityPrefix, Settings.entitySeed))
+ .exec {
+ session => if (session("validEntity").as[String] == "yes") { println("Updating entity #" + session("entityNum").as[String]) }
+ session
+ }
.doIf(session => session("validEntity").as[String] == "yes") {
- exec(deleteEntity)
+ exec(updateEntity)
}
}
- /*
- val createEntityBatchScenario = scenario("Create custom entities")
- .exec(injectStaticTokenToSession())
- .feed(FeederGenerator.generateCustomEntityCreateFeeder(Settings.entityPrefix, Settings.numEntities))
- .exec(EntityScenarios.postEntity)
- */
}
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/5d202d90/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/EntityScenarios.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/EntityScenarios.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/EntityScenarios.scala
index dd21e3c..83a648e 100644
--- a/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/EntityScenarios.scala
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/EntityScenarios.scala
@@ -22,7 +22,6 @@ import org.apache.usergrid.datagenerators.{EntityDataGenerator, FeederGenerator}
import org.apache.usergrid.helpers.{Extractors,Utils}
import org.apache.usergrid.settings.{Headers, Settings}
-import scala.util.parsing.json.JSONObject
/**
* Provides CRUD methods for custom entities
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/5d202d90/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/NotificationScenarios.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/NotificationScenarios.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/NotificationScenarios.scala
index 92998d0..5471426 100755
--- a/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/NotificationScenarios.scala
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/NotificationScenarios.scala
@@ -14,17 +14,10 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
- package org.apache.usergrid.scenarios
-
-import java.io.File
-import java.nio.file.{Paths, Files}
+package org.apache.usergrid.scenarios
import io.gatling.core.Predef._
import io.gatling.http.Predef._
- import org.apache.usergrid.datagenerators.FeederGenerator
- import scala.concurrent.duration._
-
-import scala.io.Source
import org.apache.usergrid.settings.{Headers, Settings}
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/5d202d90/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/NotifierScenarios.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/NotifierScenarios.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/NotifierScenarios.scala
index b2e32e5..9718ad3 100755
--- a/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/NotifierScenarios.scala
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/NotifierScenarios.scala
@@ -14,12 +14,11 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
- package org.apache.usergrid.scenarios
+package org.apache.usergrid.scenarios
import io.gatling.core.Predef._
import io.gatling.http.Predef._
- import org.apache.usergrid.settings.{Headers, Settings}
- import scala.concurrent.duration._
+import org.apache.usergrid.settings.{Headers, Settings}
/**
*
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/5d202d90/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/OrganizationScenarios.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/OrganizationScenarios.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/OrganizationScenarios.scala
index 1cdc25c..0c1beef 100755
--- a/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/OrganizationScenarios.scala
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/OrganizationScenarios.scala
@@ -14,13 +14,12 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
- package org.apache.usergrid.scenarios
+package org.apache.usergrid.scenarios
import io.gatling.core.Predef._
import io.gatling.http.Predef._
- import org.apache.usergrid.datagenerators.FeederGenerator
- import org.apache.usergrid.settings.{Settings, Headers}
- import scala.concurrent.duration._
+import org.apache.usergrid.datagenerators.FeederGenerator
+import org.apache.usergrid.settings.{Settings, Headers}
/**
* Performs organization registration
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/5d202d90/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/TokenScenarios.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/TokenScenarios.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/TokenScenarios.scala
index 4385797..d0eca02 100755
--- a/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/TokenScenarios.scala
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/TokenScenarios.scala
@@ -14,15 +14,14 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
- package org.apache.usergrid.scenarios
+package org.apache.usergrid.scenarios
import io.gatling.core.Predef._
- import io.gatling.http.Predef._
- import io.gatling.http.request.StringBody
- import org.apache.usergrid.settings.Headers
- import org.apache.usergrid.settings.Settings
+import io.gatling.http.Predef._
+import io.gatling.http.request.StringBody
+import org.apache.usergrid.settings.Headers
+import org.apache.usergrid.settings.Settings
- import scala.concurrent.duration._
/**
* Class that will get the token and insert it into the test session.
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/5d202d90/stack/loadtests/src/main/scala/org/apache/usergrid/settings/Headers.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/settings/Headers.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/settings/Headers.scala
index db6062f..04c4d3b 100755
--- a/stack/loadtests/src/main/scala/org/apache/usergrid/settings/Headers.scala
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/settings/Headers.scala
@@ -17,7 +17,6 @@
package org.apache.usergrid.settings
import org.apache.usergrid.enums.AuthType
- import org.apache.usergrid.helpers.Setup
/**
*
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/5d202d90/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 3992c68..a7669a1 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
@@ -17,14 +17,13 @@
package org.apache.usergrid.settings
import java.nio.charset.StandardCharsets
-import java.util.Base64
+import java.util.{Date, Base64}
-import io.gatling.core.Predef._
import io.gatling.http.Predef._
import org.apache.usergrid.datagenerators.FeederGenerator
import org.apache.usergrid.enums._
-import scala.concurrent.duration._
+import org.apache.usergrid.helpers.Utils
object Settings {
@@ -92,6 +91,11 @@ object Settings {
val orgCreationName = System.getProperty(ConfigProperties.OrgCreationName, orgCreationUsername)
val orgCreationPassword = System.getProperty(ConfigProperties.OrgCreationPassword, "test")
+ // Entity update
+ val updateProperty = System.getProperty(ConfigProperties.UpdateProperty, "updateProp")
+ val updateValue = System.getProperty(ConfigProperties.UpdateValue, new Date().toString)
+ val updateBody = Utils.toJSONStr(Map(updateProperty -> updateValue))
+
def getUserFeeder():Array[Map[String, String]]= {
FeederGenerator.generateUserWithGeolocationFeeder(totalUsers, userLocationRadius, centerLatitude, centerLongitude)
}
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/5d202d90/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/ConfigurableSimulation.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/ConfigurableSimulation.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/ConfigurableSimulation.scala
index 4b0f96a..2e13a6c 100755
--- a/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/ConfigurableSimulation.scala
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/ConfigurableSimulation.scala
@@ -17,6 +17,7 @@
package org.apache.usergrid.simulations
import io.gatling.core.Predef._
+import io.gatling.core.structure.ScenarioBuilder
import org.apache.usergrid.enums.ScenarioType
import org.apache.usergrid.helpers.Setup
import org.apache.usergrid.scenarios.EntityCollectionScenarios
@@ -33,6 +34,17 @@ import org.apache.usergrid.settings.Settings
* getAllByCursor scenario: searchQuery, searchLimit
*/
class ConfigurableSimulation extends Simulation {
+
+ def getScenario(scenarioType: String): ScenarioBuilder = {
+ scenarioType match {
+ case ScenarioType.LoadEntities => EntityCollectionScenarios.loadEntities
+ case ScenarioType.DeleteEntities => EntityCollectionScenarios.deleteEntities
+ case ScenarioType.UpdateEntities => EntityCollectionScenarios.updateEntities
+ case ScenarioType.GetAllByCursor => EntityCollectionScenarios.getEntityPagesToEnd
+ case ScenarioType.NameRandomInfinite => EntityCollectionScenarios.getRandomEntitiesByName
+ }
+ }
+
before(
if (!Settings.skipSetup) {
println("Begin setup")
@@ -44,43 +56,14 @@ class ConfigurableSimulation extends Simulation {
}
)
-
-
Settings.setTestStartTime()
- if (Settings.scenarioType == ScenarioType.LoadEntities) {
- setUp(
- EntityCollectionScenarios.loadEntities
- .inject(
- rampUsers(Settings.rampUsers) over Settings.rampTime,
- constantUsersPerSec(Settings.constantUsersPerSec) during Settings.constantUsersDuration
-
- ).protocols(Settings.httpConf.acceptHeader("application/json"))
- )
- } else if (Settings.scenarioType == ScenarioType.DeleteEntities) {
- setUp(
- EntityCollectionScenarios.deleteEntities
- .inject(
- rampUsers(Settings.rampUsers) over Settings.rampTime,
- constantUsersPerSec(Settings.constantUsersPerSec) during Settings.constantUsersDuration
-
- ).protocols(Settings.httpConf.acceptHeader("application/json"))
- )
- } else if (Settings.scenarioType == ScenarioType.GetAllByCursor) {
- setUp(
- EntityCollectionScenarios.getEntityPagesToEnd
- .inject(
- rampUsers(Settings.rampUsers) over Settings.rampTime,
- constantUsersPerSec(Settings.constantUsersPerSec) during Settings.constantUsersDuration
-
- ).protocols(Settings.httpConf.acceptHeader("application/json"))
- )
- } else if (Settings.scenarioType == ScenarioType.NameRandomInfinite) {
+ if (ScenarioType.isValid(Settings.scenarioType)) {
+ val scenario: ScenarioBuilder = getScenario(Settings.scenarioType)
setUp(
- EntityCollectionScenarios.getRandomEntitiesByName
+ scenario
.inject(
rampUsers(Settings.rampUsers) over Settings.rampTime,
constantUsersPerSec(Settings.constantUsersPerSec) during Settings.constantUsersDuration
-
).protocols(Settings.httpConf.acceptHeader("application/json"))
)
} else {
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/5d202d90/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/deprecated/AppSimulation.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/deprecated/AppSimulation.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/deprecated/AppSimulation.scala
index 7f1af08..a66f6b7 100644
--- a/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/deprecated/AppSimulation.scala
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/deprecated/AppSimulation.scala
@@ -28,9 +28,6 @@ import org.apache.usergrid.settings.Settings
import scala.concurrent.duration._
-/**
- * Classy class class.
- */
class AppSimulation extends Simulation {
println("Begin setup")
Setup.setupNotifier()
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/5d202d90/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/deprecated/ConnectionsSimulation.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/deprecated/ConnectionsSimulation.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/deprecated/ConnectionsSimulation.scala
index 8e3cd57..69ff0b1 100644
--- a/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/deprecated/ConnectionsSimulation.scala
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/deprecated/ConnectionsSimulation.scala
@@ -28,9 +28,6 @@ import org.apache.usergrid.settings.Settings
import scala.concurrent.duration._
-/**
- * Classy class class.
- */
class ConnectionsSimulation extends Simulation{
if(!Settings.skipSetup) {
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/5d202d90/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/deprecated/SetupSimulation.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/deprecated/SetupSimulation.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/deprecated/SetupSimulation.scala
index 484fb32..8032228 100644
--- a/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/deprecated/SetupSimulation.scala
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/deprecated/SetupSimulation.scala
@@ -27,9 +27,6 @@ import org.apache.usergrid.settings.Settings
import scala.concurrent.duration._
-/**
- * Classy class class.
- */
class SetupSimulation extends Simulation{
println("Begin setup")