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 2014/11/11 00:21:28 UTC
[03/42] incubator-usergrid git commit: new setup methodology
new setup methodology
Project: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/commit/cb43d817
Tree: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/tree/cb43d817
Diff: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/diff/cb43d817
Branch: refs/heads/es-type-updates
Commit: cb43d8173fcbf36b436c6f2c0c0570f0835188ac
Parents: 1c0f931
Author: Shawn Feldman <sf...@apache.org>
Authored: Wed Nov 5 17:21:06 2014 -0700
Committer: Shawn Feldman <sf...@apache.org>
Committed: Wed Nov 5 17:21:06 2014 -0700
----------------------------------------------------------------------
.../org/apache/usergrid/helpers/Setup.scala | 96 +++++++++++++-------
.../scenarios/NotificationScenarios.scala | 5 +-
.../usergrid/scenarios/UserScenarios.scala | 3 -
.../org/apache/usergrid/settings/Settings.scala | 3 +
.../PushNotificationTargetUserSimulation.scala | 2 +-
5 files changed, 68 insertions(+), 41 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/cb43d817/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 8072be8..bb1ae51 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,8 +20,10 @@
package org.apache.usergrid.helpers
+import java.util
+
import com.fasterxml.jackson.databind.ObjectMapper
-import com.ning.http.client.AsyncHttpClient
+import com.ning.http.client.{ListenableFuture, AsyncHttpClient,Response}
import io.gatling.core.Predef._
import io.gatling.http.Predef._
import io.gatling.http.request.StringBody
@@ -29,26 +31,28 @@ import io.gatling.jsonpath.JsonPath
import org.apache.usergrid.datagenerators.FeederGenerator
import org.apache.usergrid.settings.{Settings, Headers}
+import scala.collection.mutable.ArrayBuffer
+
/**
* Classy class class.
*/
object Setup {
var token:String = null
+ val client = new AsyncHttpClient()
+
def setupOrg(): Integer = {
- val client = new AsyncHttpClient()
val createOrgPost = client
.preparePost(Settings.baseUrl + "/management/organizations")
- .setBody("{\"organization\":\"" + Settings.org + "\",\"username\":\"" + Settings.admin + "\",\"name\":\"" + Settings.admin + "\",\"email\":\"" + Settings.admin + "@apigee.com\",\"password\":\"" + Settings.password + "\"}")
- .setHeader("Cache-Control", "no-cache")
+ .setHeader("Cache-Control", "no-cache")
.setHeader("Content-Type", "application/json; charset=UTF-8")
-
- val orgResponse = createOrgPost.execute().get();
-
+ .setBody("{\"organization\":\"" + Settings.org + "\",\"username\":\"" + Settings.admin + "\",\"name\":\"" + Settings.admin + "\",\"email\":\"" + Settings.admin + "@apigee.com\",\"password\":\"" + Settings.password + "\"}")
+ .build()
+ val orgResponse = client.executeRequest(createOrgPost).get()
+ printResponse("POST ORG",orgResponse.getStatusCode,orgResponse.getResponseBody())
return orgResponse.getStatusCode
}
def setupApplication():Integer = {
- val client = new AsyncHttpClient()
val authToken = getManagementToken()
val createAppPost = client
@@ -57,16 +61,15 @@ object Setup {
.setHeader("Cache-Control", "no-cache")
.setHeader("Content-Type", "application/json; charset=UTF-8")
.setHeader("Authorization","Bearer "+authToken)
+ .build()
-
- val appResponse = createAppPost.execute().get();
-
+ val appResponse = client.executeRequest(createAppPost).get();
+ printResponse("POST Application",appResponse.getStatusCode, appResponse.getResponseBody())
return appResponse.getStatusCode
}
def setupNotifier():Integer = {
- val client = new AsyncHttpClient()
val authToken = getManagementToken()
val createNotifier = client
@@ -75,57 +78,82 @@ object Setup {
.setHeader("Cache-Control", "no-cache")
.setHeader("Content-Type", "application/json; charset=UTF-8")
.setHeader("Authorization","Bearer "+authToken)
+ .build()
- val notifierResponse = createNotifier.execute().get();
+ val notifierResponse = client.executeRequest(createNotifier).get();
+ printResponse("POST Notifier", notifierResponse.getStatusCode ,notifierResponse.getResponseBody())
return notifierResponse.getStatusCode
}
def getManagementToken():String = {
-// if(token==null) {
-
- val client = new AsyncHttpClient()
+ if(token == null) {
val getToken = client
.preparePost(Settings.baseUrl + "/management/token")
.setBody("{\"username\":\"" + Settings.admin + "\",\"password\":\"" + Settings.password + "\",\"grant_type\":\"password\"}")
.setHeader("Cache-Control", "no-cache")
.setHeader("Content-Type", "application/json; charset=UTF-8")
- val body = getToken.execute().get().getResponseBody()
+ .build()
+ val response = client.executeRequest(getToken).get()
val omapper = new ObjectMapper();
- val tree = omapper.readTree(body)
+ val tree = omapper.readTree(response.getResponseBody())
val node = tree.get("access_token");
- token = node.toString
-// }
+ token = node.asText()
+ println("Token is "+token)
+ }
return token
}
def setupUsers() = {
- val userFeeder = FeederGenerator.generateUserWithGeolocationFeeder(Settings.numUsers * Settings.duration, Settings.userLocationRadius, Settings.centerLatitude, Settings.centerLongitude)
+ val userFeeder = FeederGenerator.generateUserWithGeolocationFeeder(Settings.numUsers * Settings.duration, Settings.userLocationRadius, Settings.centerLatitude, Settings.centerLongitude)
+ val list:ArrayBuffer[ListenableFuture[Response]] = new ArrayBuffer[ListenableFuture[Response]]
userFeeder.foreach(user => {
- setupUser(user);
+ list += setupUser(user);
});
+ list.foreach(f => {
+ val response = f.get()
+ printResponse("Post user",response.getStatusCode,response.getResponseBody())
+ })
}
- def setupUser(user:Map[String,String]):Integer = {
-
- val client = new AsyncHttpClient()
+ def setupUser(user:Map[String,String]):ListenableFuture[Response] = {
+
+ val latitude = user.get("latitude").get
+ val longitude = user.get("longitude").get
+ val username = user.get("username").get
+ val displayName = user.get("displayName").get
+ val age = user.get("age").get
+ val seen = user.get("seen").get
+ val weight = user.get("weight").get
+ val height = user.get("height").get
+ val aboutMe = user.get("aboutMe").get
+ val profileId = user.get("profileId").get
+ val headline = user.get("headline").get
+ val showAge = user.get("showAge").get
+ val relationshipStatus = user.get("relationshipStatus").get
+ val ethnicity = user.get("ethnicity").get
+ val password= user.get("password").get
+ val body = s"""{"location":{"latitude":"$latitude","longitude":"$longitude"},"username":"$username",
+ "displayName":"$displayName","age":"$age","seen":"$seen","weight":"$weight",
+ "height":"$height","aboutMe":"$aboutMe","profileId":"$profileId","headline":"$headline",
+ "showAge":"$showAge","relationshipStatus":"$relationshipStatus","ethnicity":"$ethnicity","password":"$password"}"""
val authToken = getManagementToken()
val createUser = client
.preparePost(Settings.baseAppUrl + "/users")
- .setBody("{\"location\":{\"latitude\":\"" + user.get("latitude") + "\",\"longitude\":\"" + user.get("longitude") + "\"},\"username\":\"" + user.get("username") + "\"," +
- "\"displayName\":\""+user.get("displayName")+"\",\"age\":\""+user.get("age")+"\",\"seen\":\""+user.get("seen")+"\",\"weight\":\""+user.get("weight")+"\"," +
- "\"height\":\""+user.get("height")+"\",\"aboutMe\":\""+user.get("aboutMe")+"\",\"profileId\":\""+user.get("profileId")+"\",\"headline\":\""+user.get("headline")+"\"," +
- "\"showAge\":\""+user.get("showAge")+"\",\"relationshipStatus\":\""+user.get("relationshipStatus")+"\",\"ethnicity\":\""+user.get("ethnicity")+"\",\"password\":\""+user.get("password")+"\"}"
- )
- .setHeader("Cache-Control", "no-cache")
- .setHeader("Content-Type", "application/json; charset=UTF-8")
+ .setBody(body)
+ .setBodyEncoding("UTF-8")
.setHeader("Authorization","Bearer "+authToken)
+ .build()
+
+ return client.executeRequest(createUser)
- val createUserResponse = createUser.execute().get();
- return createUserResponse.getStatusCode
+ }
+
+ def printResponse(caller:String, status:Int, body:String) = {
+ println(caller + ": status: "+status.toString+" body:"+body)
}
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/cb43d817/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 40f5085..b248260 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
@@ -68,13 +68,12 @@ object NotificationScenarios {
)
val numEntities:Int = Settings.numUsers * 3 * Settings.duration
-
- val userFeeder = FeederGenerator.generateUserWithGeolocationFeeder(Settings.numUsers * Settings.duration, Settings.userLocationRadius, Settings.centerLatitude, Settings.centerLongitude)
+ val userFeeder = FeederGenerator.generateUserWithGeolocationFeeder(Settings.numUsers, Settings.userLocationRadius, Settings.centerLatitude, Settings.centerLongitude)
val createScenario = scenario("Create Push Notification")
.feed(userFeeder)
- .exec( UserScenarios.getUserByUsername)
.exec(TokenScenarios.getUserToken)
+ .exec( UserScenarios.getUserByUsername)
.repeat(2){
feed(FeederGenerator.generateEntityNameFeeder("device", numEntities))
.exec( DeviceScenarios.postDeviceWithNotifier)
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/cb43d817/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/UserScenarios.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/UserScenarios.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/UserScenarios.scala
index 7a557e5..86d1f78 100755
--- a/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/UserScenarios.scala
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/UserScenarios.scala
@@ -62,8 +62,5 @@ import io.gatling.core.Predef._
.doIf("${userStatus}", "400") {
exec(getUserByUsername)
}
- val numEntities:Int = Settings.numEntities
-
- val userFeeder = FeederGenerator.generateUserWithGeolocationFeeder(Settings.numUsers * Settings.duration, Settings.userLocationRadius, Settings.centerLatitude, Settings.centerLongitude)
}
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/cb43d817/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 5c7852b..90dd41d 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
@@ -18,6 +18,7 @@ package org.apache.usergrid.settings
import io.gatling.core.Predef._
import io.gatling.http.Predef._
+import org.apache.usergrid.datagenerators.FeederGenerator
import scala.concurrent.duration._
object Settings {
@@ -50,4 +51,6 @@ object Settings {
val pushNotifier = System.getProperty("pushNotifier")
val pushProvider = System.getProperty("pushProvider")
+ val constantUsers:Int = Settings.numUsers/Settings.duration
+
}
http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/cb43d817/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/PushNotificationTargetUserSimulation.scala
----------------------------------------------------------------------
diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/PushNotificationTargetUserSimulation.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/PushNotificationTargetUserSimulation.scala
index 4c1de29..510cee1 100644
--- a/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/PushNotificationTargetUserSimulation.scala
+++ b/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/PushNotificationTargetUserSimulation.scala
@@ -35,7 +35,7 @@ class PushNotificationTargetUserSimulation extends Simulation {
}
setUp(
NotificationScenarios.createScenario
- .inject(constantUsersPerSec(Settings.numUsers) during (Settings.duration)) // wait for 15 seconds so create org can finish, need to figure out coordination
+ .inject(constantUsersPerSec(Settings.constantUsers) during (Settings.duration)) // wait for 15 seconds so create org can finish, need to figure out coordination
.throttle(reachRps(Settings.throttle) in ( Settings.rampTime.seconds))
.protocols( Settings.httpConf.acceptHeader("application/json"))
)