You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@usergrid.apache.org by md...@apache.org on 2015/10/08 22:20:00 UTC

usergrid git commit: USERGRID-1044: add option to delete entity after successful audit

Repository: usergrid
Updated Branches:
  refs/heads/USERGRID-1044 a9927a3ba -> 9b2508f7d


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/USERGRID-1044
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")