Search code examples
postgresqlspring-bootjmeterdropwizardhttp-delete

How to perform multiple HTTP DELETE operation on same Resource with different IDs in JMeter?



I have a question regarding **writing test for HTTP DELETE method in JMeter using Concurrency Thread Group**. I want to measure **how many DELETEs** can it perform in certain amount of time for certain amount of Users (i.e. Threads) who are sending Concurrent HTTP (DELETE) Requests.

Concurrency Thread Group parameters are:
Target Concurrency: 50 (Threads)
RampUp Time: 10 secs
RampUp Steps Count: 5 secs
Hold Target Rate Time (sec): 5 secs
Threads Iterations Limit: infinite

The thing is that HTTP DELETE is idempotent operation i.e. if inovked on same resource (i.e. Record in database) it kind of doesn't make much sense. How can I achieve deletion of multiple EXISTING records in database by passing Entity's ID in URL? E.g.:

http://localhost:8080/api/authors/{id}

...where ID is being incremented for each User (i.e. Thread)? My question is how can I automate deletion of multiple EXISTING rows in database (Postgres 11.8)...should I write some sort of script or is there other easier way to achieve that? But again I guess it will probably perform multiple times same thing on same resources ID (e.g. HTTP DELETE will be invoked more than once on http://localhost:8080/api/authors/5).
Any help/advice is greatly appreciated.

P.S. I'm doing this to performance test my SpringBoot, Vert.X and Dropwizard RESTful Web service apps.

UPDATE1:
Sorry, I've didn't fully specify reason for writing these Test Use Case for my Web Service apps which communicate with Postgres DB. MAIN reason why I'm actually doing this testing is to test PERFORMANCES of blocking and NON-blocking WEB Server implementations for mentioned frameworks (SpringBoot, Dropwizard and Vert.X). Web servers are:

  1. Blocking impelementations:
    1.1. Apache Tomcat (SpringBoot)
    1.2. Jetty (Dropwizard)
  2. Non-blocking: Vert.X (uses own implementation based on Netty)

If I am using JMeter's JDBC Request in my Test Plan won't that actually slow down Test execution?


Solution

  • The easiest way is using either Counter config element or __counter() function in order to generate an incrementing number on each API hit:

    enter image description here

    More information: How to Use a Counter in a JMeter Test

    Also the list of IDs can be obtained from the Postgres database via JDBC Request sampler and iterated using ForEach Controller