loadtests: changing setup model
Project: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/commit/7c14d836 Tree: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/tree/7c14d836 Diff: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/diff/7c14d836 Branch: refs/heads/two-dot-o Commit: 7c14d8368652a546dee178e7a9a8fb73fcb1a3a4 Parents: ce011f1 Author: Shawn Feldman <[email protected]> Authored: Fri Nov 7 15:29:32 2014 -0700 Committer: Shawn Feldman <[email protected]> Committed: Fri Nov 7 15:29:32 2014 -0700 ---------------------------------------------------------------------- .../org/apache/usergrid/helpers/Setup.scala | 27 ++++++++++++-------- .../scenarios/ConnectionScenarios.scala | 2 +- .../scenarios/NotificationScenarios.scala | 4 +-- .../org/apache/usergrid/settings/Settings.scala | 21 ++++++--------- 4 files changed, 28 insertions(+), 26 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/7c14d836/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 0762feb..2dd0ed7 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 @@ -106,23 +106,30 @@ object Setup { def setupUsers() = { if (!Settings.skipSetup) { - val userFeeder = Settings.userFeeder + val userFeeder = Settings.getUserFeeder() val numUsers = userFeeder.length println(s"setupUsers: Sending requests for $numUsers users") val list: ArrayBuffer[ListenableFuture[Response]] = new ArrayBuffer[ListenableFuture[Response]] + var successCount: Int = 0; + def purgeList = { + list.foreach(f => { + val response = f.get() + if (response.getStatusCode != 200) { + printResponse("Post User", response.getStatusCode, response.getResponseBody()) + } else { + successCount += 1 + } + }) + list.clear() + } userFeeder.foreach(user => { list += setupUser(user); - }); - var successCount: Int = 0; - list.foreach(f => { - val response = f.get() - if (response.getStatusCode != 200) { - printResponse("Post User", response.getStatusCode, response.getResponseBody()) - } else { - successCount += 1 + if(list.length == Integer.getInteger("purgeUsers",100)){ + purgeList } - }) + }); + println(s"setupUsers: Received $successCount successful responses out of $numUsers requests.") } else { println("Skipping Adding Users due to skipSetup=true") http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/7c14d836/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 923a9bd..aa724d6 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 @@ -47,7 +47,7 @@ import io.gatling.http.Predef._ val entityNameFeeder = FeederGenerator.generateEntityNameFeeder("device", Settings.numEntities) val createScenario = scenario("Create Connections") - .feed(Settings.userFeeder) + .feed(Settings.getUserFeeder) .exec(TokenScenarios.getUserToken) .exec( UserScenarios.getUserByUsername) .repeat(2){ http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/7c14d836/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 a96cb61..ed1610f 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 @@ -67,10 +67,10 @@ object NotificationScenarios { .check(status.is(200)) ) - val numEntities:Int = Settings.numUsers * 3 * Settings.duration + val numEntities:Int = Settings.numUsers * 2 val createScenario = scenario("Create Push Notification") - .feed(Settings.userFeeder) + .feed(Settings.getUserFeeder) .exec(TokenScenarios.getUserToken) .exec( UserScenarios.getUserByUsername) .repeat(2){ http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/7c14d836/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 b595c9d..aec7cfc 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 @@ -33,26 +33,19 @@ object Settings { val httpConf = http.baseURL(baseAppUrl) val skipSetup:Boolean = System.getProperty("skipSetup") == "true" + val duration:Int = Integer.getInteger("duration", 300).toInt // in seconds // Simulation settings - var numUsers:Int = Integer.getInteger("numUsers", 10).toInt + val constantUsers:Int = Integer.getInteger("rampUsers", 10).toInt + + var numUsers:Int = constantUsers * duration val numEntities:Int = Integer.getInteger("numEntities", 5000).toInt val numDevices:Int = Integer.getInteger("numDevices", 2000).toInt val rampTime:Int = Integer.getInteger("rampTime", 0).toInt // in seconds - val duration:Int = Integer.getInteger("duration", 300).toInt // in seconds val throttle:Int = Integer.getInteger("throttle", 50).toInt // in seconds - if(numUsers<duration){ - println(s"Changing numUsers $numUsers to duration length $duration") - numUsers = duration - } - if(numUsers % duration != 0){ - val message = s"please use numUsers ($numUsers) that is evenly divisible by duration($duration)" - println(message) - throw new Exception(message) - } // Geolocation settings val centerLatitude:Double = 37.442348 // latitude of center point val centerLongitude:Double = -122.138268 // longitude of center point @@ -63,10 +56,12 @@ object Settings { val pushNotifier = if (System.getProperty("pushNotifier") != null) System.getProperty("pushNotifier") else "loadNotifier" val pushProvider = if (System.getProperty("pushProvider") != null) System.getProperty("pushProvider") else "noop" - val constantUsers:Int = Settings.numUsers/Settings.duration println(s"Will inject $constantUsers users per sec") - val userFeeder = FeederGenerator.generateUserWithGeolocationFeeder(numUsers, userLocationRadius, centerLatitude, centerLongitude) + def getUserFeeder():Array[Map[String, String]]= { + val userFeeder = FeederGenerator.generateUserWithGeolocationFeeder(numUsers, userLocationRadius, centerLatitude, centerLongitude) + return userFeeder + } }
