[AAI] Add the aai performance test script files
[aai/test-config.git] / gatling / ONAP single API 2022.scala
diff --git a/gatling/ONAP single API 2022.scala b/gatling/ONAP single API 2022.scala
new file mode 100644 (file)
index 0000000..c0ab5c7
--- /dev/null
@@ -0,0 +1,754 @@
+import io.gatling.core.Predef.{exec, _}
+import io.gatling.http.Predef._
+import _root_.io.gatling.core.scenario.Simulation
+import java.util.UUID
+import scala.concurrent.duration._
+
+import scala.util.Random
+
+class ONAP_2204_SingleAPI extends Simulation {
+
+  val httpHeaders = Map(
+    "Accept" -> """application/json""",
+    "Content-Type"-> """application/json""",
+    "X-FromAppId"-> """ONAP-fromappId""",
+    "X-TransactionId"-> """ONAP-transId""",
+    "Connection"-> """Keep-Alive"""
+  )
+
+  def idGenerator() = "random-" + UUID.randomUUID().toString;
+  val feeder = Iterator.continually(Map("randVal" -> (Random.alphanumeric.take(20).mkString)))
+
+  val tenantFeeder = csv("./src/test/gatling/bodies/onaptenants.csv").random
+  val LogLinkFeeder = csv("./src/test/gatling/bodies/onaploglinks.csv").random
+  val PServerFeeder = csv("./src/test/gatling/bodies/onappservers.csv").random
+  val serviceInstanceFeeder = csv("./src/test/gatling/bodies/onapserviceinstance.csv").random
+  val genericvnfFeeder = csv("./src/test/gatling/bodies/onapvnfs.csv").random
+  val CloudRegionFeeder = csv("./src/test/gatling/bodies/onapcloudregions.csv").random
+  val ComplexFeeder = csv("./src/test/gatling/bodies/onapcomplexes.csv").random
+  val customerFeeder = csv("./src/test/gatling/bodies/onapcustomers.csv").random
+  val vfmoduleFeeder = csv("./src/test/gatling/bodies/onapvf-modules.csv").random
+  val pnfFeeder = csv("./src/test/gatling/bodies/onappnfs.csv").random
+
+
+
+
+
+  val host   = System.getProperty("TARGET_HOST", "Enter Host with Port");
+
+  val httpBuilder = http.baseURL(host);
+
+  def SingleAPITest(env: String) = scenario("Run each API single-user " + env)
+
+  /***
+    *
+    * @param env
+    * @PUT tenant
+    */
+.repeat(3){
+       exec(session => {
+        session.set("stenant", idGenerator())
+      })
+      .exec(
+        http("PutTenant " + env)
+        .put("/aai/v23/cloud-infrastructure/cloud-regions/cloud-region/onap-CROwner4/onap-CRId4/tenants/tenant/${stenant}")
+        .body(ElFileBody("newtenant_valid.json"))
+        .headers(httpHeaders)
+        .check(
+          status.find.in(201)
+        )
+      )
+      .pause(1,1)
+      .exec(
+        http("GetTenant " + env)
+        .get("/aai/v23/cloud-infrastructure/cloud-regions/cloud-region/onap-CROwner4/onap-CRId4/tenants/tenant/${stenant}")
+        .headers(httpHeaders)
+        .check(
+          status.find.in(200)
+        )
+        .check(jsonPath("$.resource-version").saveAs("resourcever"))
+      )
+      .exec(
+        http("DeleteTenant " + env)
+        .delete("/aai/v23/cloud-infrastructure/cloud-regions/cloud-region/onap-CROwner4/onap-CRId4/tenants/tenant/${stenant}?resource-version=${resourcever}")
+        .headers(httpHeaders)
+        .check(status.find.in(204))
+      )
+
+   }
+
+   /***
+    *
+    * @param env
+    * @patch tenant
+    */
+.repeat(3){
+ // Get the resource version before doing the PATCH
+      feed(tenantFeeder)
+      .exec(
+        http("GetTenant " + env)
+        .get("/aai/v23/cloud-infrastructure/cloud-regions/cloud-region/onap-CROwner/onap-CRId/tenants/tenant/onap-tenant-patch")
+        .headers(httpHeaders)
+        .check(
+          status.find.in(200)
+        )
+        .check(
+          jsonPath("$.resource-version").saveAs("rsrcver")
+          )
+      )
+
+      .exec(
+        http("PatchTenant " + env)
+        .patch("/aai/v23/cloud-infrastructure/cloud-regions/cloud-region/onap-CROwner/onap-CRId/tenants/tenant/onap-tenant-patch?resource-version=${rsrcver}")
+        .headers(httpHeaders)
+        .headers(Map(
+          "Content-Type"-> """application/merge-patch+json"""
+        ))
+        .body(ElFileBody("patch-tenant.json"))
+        .check(
+          status.find.in(200)
+        )
+      )
+      .pause(1,1)
+    }
+
+           /***
+    *
+    * @param env
+    * @get tenant depth=0
+    */
+.repeat(3){
+     feed(tenantFeeder)
+      .exec(
+        http("GetTenantdepth0 " + env)
+        .get("/aai/v23/cloud-infrastructure/cloud-regions/cloud-region/onap-CROwner3/onap-CRId3/tenants/tenant/onap-tenantId3?depth=0")
+        .headers(httpHeaders)
+        .check(
+          status.find.in(200)
+        )
+      )
+       .pause(1,1)
+    }
+
+                   /***
+    *
+    * @param env
+    * @get vserver-depth=all
+    */
+   .repeat(3){
+       exec(
+          http("GetVserverdepthall " + env)
+          .get("/aai/v23/cloud-infrastructure/cloud-regions/cloud-region/onap-CROwner2/onap-CRId2/tenants/tenant/onap-tenantId2/vservers/vserver/onap-vserverId2?depth=all")
+          .headers(httpHeaders)
+          .check(
+            status.find.in(200)
+          )
+        )
+       .pause(1,1)
+    }
+
+                           /***
+    *
+    * @param env
+    * @get vserver
+    */
+   .repeat(3){
+         exec(
+          http("GetVserver " + env)
+          .get("/aai/v23/cloud-infrastructure/cloud-regions/cloud-region/onap-CROwner2/onap-CRId2/tenants/tenant/onap-tenantId2/vservers/vserver/onap-vserverId2")
+          .headers(httpHeaders)
+          .check(
+            status.find.in(200)
+          )
+        )
+       .pause(1,1)
+    }
+
+                                   /***
+    *
+    * @param env
+    * @get gen-vnf
+    */
+   .repeat(3){
+        feed(genericvnfFeeder)
+        .exec(
+          http("GetVnf " + env)
+          .get("/aai/v23/network/generic-vnfs/generic-vnf/${vnf-id}")
+          .headers(httpHeaders)
+          .check(
+            status.find.in(200)
+          )
+        )
+       .pause(1,1)
+    }
+
+                                           /***
+    *
+    * @param env
+    * @get gen-vnf depth=1
+    */
+   .repeat(3){
+        feed(genericvnfFeeder)
+        .exec(
+          http("GetVnfdepth1 " + env)
+          .get("/aai/v23/network/generic-vnfs/generic-vnf/${vnf-id}?depth=1")
+          .headers(httpHeaders)
+          .check(
+            status.find.in(200)
+          )
+        )
+       .pause(1,1)
+    }
+
+                                                   /***
+    *
+    * @param env
+    * @get vf-module depth=1
+    */
+   .repeat(3){
+        feed(vfmoduleFeeder)
+        .exec(
+          http("GetVfmoduledepthl " + env)
+          .get("/aai/v23/network/generic-vnfs/generic-vnf/onap-genericvnfId/vf-modules/vf-module/onap-vnfmoduleId?depth=1")
+          .headers(httpHeaders)
+          .check(
+            status.find.in(200)
+          )
+        )
+       .pause(1,1)
+    }
+
+                                                           /***
+    *
+    * @param env
+    * @put vf-module
+    */
+   .repeat(3){
+        feed(genericvnfFeeder)
+      exec(session => {
+        session.set("svfmodule", idGenerator())
+      })
+      .exec(
+        http("PutVfmodule " + env)
+        .put("/aai/v23/network/generic-vnfs/generic-vnf/onap-genericvnfId/vf-modules/vf-module/${svfmodule}")
+        .body(ElFileBody("newvf-module_valid.json"))
+        .headers(httpHeaders)
+        .check(
+          status.find.in(201)
+        )
+      )
+      .pause(1,1)
+      .exec(
+        http("GetVfmodule " + env)
+        .get("/aai/v23/network/generic-vnfs/generic-vnf/onap-genericvnfId/vf-modules/vf-module/${svfmodule}")
+        .headers(httpHeaders)
+        .check(
+          status.find.in(200)
+        )
+        .check(jsonPath("$.resource-version").saveAs("resourcever"))
+      )
+.pause(1,1)
+      .exec(
+        http("DeleteVfmodule " + env)
+        .delete("/aai/v23/network/generic-vnfs/generic-vnf/onap-genericvnfId/vf-modules/vf-module/${svfmodule}?resource-version=${resourcever}")
+        .headers(httpHeaders)
+        .check(status.find.in(204))
+      )
+.pause(1,1)
+
+    }
+
+                                                                   /***
+    *
+    * @param env
+    * @patch/post vf-module
+    */
+   .repeat(3){
+ // Get the resource version before doing the PATCH
+      feed(vfmoduleFeeder)
+      .exec(
+        http("GetVfmodule " + env)
+        .get("/aai/v23/network/generic-vnfs/generic-vnf/onap-genericvnfId/vf-modules/vf-module/onap-vnfmoduleId")
+        .headers(httpHeaders)
+        .check(
+          status.find.in(200)
+        )
+        .check(
+          jsonPath("$.resource-version").saveAs("rsrcver")
+          )
+      )
+
+      .exec(
+        http("PatchVfmodule " + env)
+        .patch("/aai/v23/network/generic-vnfs/generic-vnf/onap-genericvnfId/vf-modules/vf-module/onap-vnfmoduleId?resource-version=${rsrcver}")
+        .headers(httpHeaders)
+        .headers(Map(
+          "Content-Type"-> """application/merge-patch+json"""
+        ))
+        .body(ElFileBody("patch-vf-module.json"))
+        .check(
+          status.find.in(200)
+        )
+      )
+
+    }
+
+   /***
+    *
+    * @param env
+    * @get recents api vlan
+    */
+   .repeat(3){
+          exec(
+          http("GetRecentsAPI Vlan " + env)
+          .get("/aai/recents/v23/vlan?hours=192")
+          .headers(httpHeaders)
+          .check(
+            status.find.in(200)
+          )
+        )
+       .pause(1,1)
+    }
+
+        /***
+    *
+    * @param env
+    * @get recents api l-interface
+    */
+   .repeat(3){
+          exec(
+          http("GetRecentsAPI l-interface " + env)
+          .get("/aai/recents/v23/l-interface?hours=192")
+          .headers(httpHeaders)
+          .check(
+            status.find.in(200)
+          )
+        )
+       .pause(1,1)
+    }
+
+    /***
+    *
+    * @param env
+    * @get recents api vserver
+    */
+   .repeat(3){
+          exec(
+          http("GetRecentsAPI vserver " + env)
+          .get("/aai/recents/v23/vserver?hours=192")
+          .headers(httpHeaders)
+          .check(
+            status.find.in(200)
+          )
+        )
+       .pause(1,1)
+    }
+
+            /***
+    *
+    * @param env
+    * @get all CRs1
+    */
+   .repeat(3){
+          exec(
+          http("GetallCR onap-CRId " + env)
+          .get("/aai/v23/cloud-infrastructure/cloud-regions/?cloud-region-id=onap-CRId")
+          .headers(httpHeaders)
+          .check(
+            status.find.in(200)
+          )
+        )
+       .pause(1,1)
+    }
+
+                    /***
+    *
+    * @param env
+    * @get all CRs2
+    */
+   .repeat(3){
+          exec(
+          http("GetallCR onap-CRId " + env)
+          .get("/aai/v23/cloud-infrastructure/cloud-regions/?cloud-region-id=onap-CRId")
+          .headers(httpHeaders)
+          .check(
+            status.find.in(200)
+          )
+        )
+       .pause(1,1)
+    }
+
+                            /***
+    *
+    * @param env
+    * @get all services
+    */
+   .repeat(3){
+          exec(
+          http("GetallServices " + env)
+          .get("/aai/v23/service-design-and-creation/services")
+          .headers(httpHeaders)
+          .check(
+            status.find.in(200)
+          )
+        )
+       .pause(1,1)
+    }
+
+                                    /***
+    *
+    * @param env
+    * @get all CRs
+    */
+   .repeat(3){
+          exec(
+          http("GetallCRs " + env)
+          .get("/aai/v23/cloud-infrastructure/cloud-regions/?cloud-region-id=onap-CRId")
+          .headers(httpHeaders)
+          .check(
+            status.find.in(200)
+          )
+        )
+       .pause(1,1)
+    }
+
+                                            /***
+    *
+    * @param env
+    * @get nodes-query
+    */
+   .repeat(3){
+          exec(
+          http("Getnodes-query VNF " + env)
+          .get("/aai/v23/search/nodes-query?search-node-type=generic-vnf&filter=vnf-name:EQUALS:onap-genericvnfname")
+          .headers(httpHeaders)
+          .check(
+            status.find.in(200)
+          )
+        )
+       .pause(1,1)
+    }
+
+                                                    /***
+    *
+    * @param env
+    * @PUT singletx1
+    */
+    .feed(tenantFeeder)
+        .repeat(3){
+      exec(session => {
+        session.set("sPServer", idGenerator())
+      })
+      .exec(session => {
+        session.set("sVServer", idGenerator())
+      })
+      .exec(
+        http("BulkSingleTx1 " + env)
+        .post("/aai/v22/bulk/single-transaction")
+        .body(ElFileBody("onapbulk-single-tx_putPServerVServer.json"))
+        .headers(httpHeaders)
+        .check(
+          status.find.in(201)
+        )
+      )
+        .pause(2,33)
+        .exec(
+          http("GetVserver " + env)
+          .get("/aai/v22/cloud-infrastructure/cloud-regions/cloud-region/onap-CROwner/onap-CRId/tenants/tenant/onap-tenantId1/vservers/vserver/${sVServer}?depth=0&nodes-only=true")
+          .headers(httpHeaders)
+          .check(
+            status.find.in(200)
+          )
+          .check(jsonPath("$.resource-version").saveAs("rsrcver"))
+        )
+        .exec(
+         http("DeleteVserver " + env)
+          .delete("/aai/v22/cloud-infrastructure/cloud-regions/cloud-region/onap-CROwner/onap-CRId/tenants/tenant/onap-tenantId1/vservers/vserver/${sVServer}?resource-version=${rsrcver}")
+          .headers(httpHeaders)
+
+          .check(status.find.in(204))
+        )
+        .exec(
+          http("GetPserver " + env)
+          .get("/aai/v22/cloud-infrastructure/pservers/pserver/${sPServer}?depth=0&nodes-only=true")
+          .headers(httpHeaders)
+          .check(
+            status.find.in(200)
+          )
+          .check(jsonPath("$.resource-version").saveAs("rsrcver"))
+        )
+        .exec(
+         http("DeletePserver " + env)
+          .delete("/aai/v22/cloud-infrastructure/pservers/pserver/${sPServer}?resource-version=${rsrcver}")
+          .headers(httpHeaders)
+          .check(status.find.in(204))
+        )
+       .pause(1,1)
+    }
+
+
+                                                            /***
+    *
+    * @param env
+    * @PUT bulksingletx2
+    */
+   .repeat(3){
+     exec(session => {
+        session.set("CR1", idGenerator())
+      })
+      .exec(session => {
+        session.set("AZ1", idGenerator())
+      })
+                .exec(session => {
+        session.set("flavor1", idGenerator())
+      })
+                .exec(session => {
+        session.set("image1", idGenerator())
+      })
+                .exec(session => {
+        session.set("complex1", idGenerator())
+      })
+                .exec(session => {
+        session.set("pserver1", idGenerator())
+      })
+                .exec(session => {
+        session.set("pserver2", idGenerator())
+      })
+                .exec(session => {
+        session.set("pserver3", idGenerator())
+      })
+      .exec(
+        http("BulkSingleTx2 " + env)
+        .post("/aai/v21/bulk/single-transaction")
+        .body(ElFileBody("onap-patch-bulk-single-tx.json"))
+        .headers(httpHeaders)
+        .check(
+          status.find.in(201)
+        )
+      )
+       .pause(1,1)
+    }
+
+                                                                    /***
+    *
+    * @param env
+    * @PUT bulksingletx3
+    */
+    .feed(tenantFeeder)
+        .repeat(3){
+      exec(session => {
+        session.set("sPServer", idGenerator())
+      })
+      .exec(session => {
+        session.set("sVServer", idGenerator())
+      })
+      .exec(
+        http("BulkSingleTx3 " + env)
+        .post("/aai/v22/bulk/single-transaction")
+        .body(ElFileBody("onapbulk-single-tx_putPServerVServer.json"))
+        .headers(httpHeaders)
+        .check(
+          status.find.in(201)
+        )
+      )
+        .pause(2,5)
+        .exec(
+          http("GetVserver " + env)
+          .get("/aai/v22/cloud-infrastructure/cloud-regions/cloud-region/onap-CROwner/onap-CRId/tenants/tenant/onap-tenantId1/vservers/vserver/${sVServer}?depth=0&nodes-only=true")
+          .headers(httpHeaders)
+          .check(
+            status.find.in(200)
+          )
+          .check(jsonPath("$.resource-version").saveAs("rsrcver"))
+        )
+        .exec(
+         http("DeleteVserver " + env)
+          .delete("/aai/v22/cloud-infrastructure/cloud-regions/cloud-region/onap-CROwner/onap-CRId/tenants/tenant/onap-tenantId1/vservers/vserver/${sVServer}?resource-version=${rsrcver}")
+          .headers(httpHeaders)
+
+          .check(status.find.in(204))
+        )
+        .exec(
+          http("GetPserver " + env)
+          .get("/aai/v22/cloud-infrastructure/pservers/pserver/${sPServer}?depth=0&nodes-only=true")
+          .headers(httpHeaders)
+          .check(
+            status.find.in(200)
+          )
+          .check(jsonPath("$.resource-version").saveAs("rsrcver"))
+        )
+        .exec(
+         http("DeletePserver " + env)
+          .delete("/aai/v22/cloud-infrastructure/pservers/pserver/${sPServer}?resource-version=${rsrcver}")
+          .headers(httpHeaders)
+          .check(status.find.in(204))
+        )
+       .pause(1,1)
+    }
+
+        /***
+    *
+    * @param env
+    * @CQ pserverzdeviceresurldepth1
+    */
+   .repeat(3){
+       exec(
+          http("CQ pserverzdeviceresurldepth1 " + env)
+          .put("/aai/v22/query?format=resource_and_url&depth=1")
+          .headers(httpHeaders)
+          .body(ElFileBody("onap-CQ-pserver-zdevice.json"))
+          .check(
+            status.find.in(200)
+          )
+        )
+       .pause(1,1)
+    }
+
+        /***
+    *
+    * @param env
+    * @CQ pserverzdeviceres
+    */
+   .repeat(3){
+        exec(
+          http("CQ pserverzdeviceres " + env)
+          .put("/aai/v22/query?format=resource")
+          .headers(httpHeaders)
+          .body(ElFileBody("onap-CQ-pserver-zdevice.json"))
+          .check(
+            status.find.in(200)
+          )
+        )
+       .pause(1,1)
+    }
+
+                /***
+    *
+    * @param env
+    * @CQ vlanrangefromVlantag
+    */
+   .repeat(3){
+       exec(
+          http("CQ vlanrangefromVlantag " + env)
+          .put("/aai/v22/query?format=resource")
+          .headers(httpHeaders)
+          .body(ElFileBody("onap-CQ-vlanrange-fromVlantag.json"))
+          .check(
+            status.find.in(200)
+          )
+        )
+       .pause(1,1)
+    }
+
+                        /***
+    *
+    * @param env
+    * @CQ pserverzdeviceres
+    */
+   .repeat(3){
+     exec(
+          http("CQ getClfiRoadmTailSummary " + env)
+          .put("/aai/v22/query?format=simple&nodesOnly=true")
+          .headers(httpHeaders)
+          .body(ElFileBody("onap-CQ-getClfiRoadmTailSummary.json"))
+          .check(
+            status.find.in(200)
+          )
+        )
+       .pause(1,1)
+    }
+
+                                /***
+    *
+    * @param env
+    * @DSL Query1
+    */
+   .repeat(3){
+      exec(
+        http("DSL Query1 PUT")
+        .put("/aai/v21/dsl?format=resource")
+        .headers(httpHeaders)
+        .body(ElFileBody("onap-DSL1.json"))
+        .check(
+          status.find.in(200)
+        )
+      )
+       .pause(1,1)
+    }
+
+                                        /***
+    *
+    * @param env
+    * @DSL Query2
+    */
+   .repeat(3){
+        exec(
+        http("DSL Query2 PUT")
+        .put("/aai/v21/dsl?format=resource")
+        .headers(httpHeaders)
+        .body(ElFileBody("onap-DSL2.json"))
+        .check(
+          status.find.in(200)
+        )
+      )
+       .pause(1,1)
+    }
+
+                                                /***
+    *
+    * @param env
+    * @DSL Query3
+    */
+   .repeat(3){
+       exec(
+        http("DSL Query3 PUT")
+        .put("/aai/v21/dsl?format=resource")
+        .headers(httpHeaders)
+        .body(ElFileBody("onap-DSL3.json"))
+        .check(
+          status.find.in(200)
+        )
+      )
+       .pause(1,1)
+    }
+
+                                                /***
+    *
+    * @param env
+    * @DSL Query4
+    */
+   .repeat(3){
+       exec(
+        http("DSL Query4 PUT")
+        .put("/aai/v21/dsl?format=resource")
+        .headers(httpHeaders)
+        .body(ElFileBody("onap-DSL4.json"))
+        .check(
+          status.find.in(200)
+        )
+      )
+       .pause(1,1)
+    }
+
+                                                        /***
+    *
+    * @param env
+    * @2min timeout
+    */
+  .repeat(3){
+          exec(
+          http("GetallCust " + env)
+          .get("/aai/v23/business/customers")
+          .headers(httpHeaders)
+          .check(
+            status.find.in(200)
+          )
+        )
+       .pause(1,1)
+    }
+
+  setUp(
+      SingleAPITest("ePerf02").inject(atOnceUsers(1)).protocols(http.baseURL("Enter Host with Port"))
+  )
+  .maxDuration(10 minutes)
+}
\ No newline at end of file