{"id":52669,"date":"2025-09-11T13:00:55","date_gmt":"2025-09-11T13:00:55","guid":{"rendered":"https:\/\/www.devopsschool.com\/blog\/?p=52669"},"modified":"2025-09-11T13:01:50","modified_gmt":"2025-09-11T13:01:50","slug":"appdynamics-lab-create-a-sample-load-for-apm-in-petclinic-app","status":"publish","type":"post","link":"https:\/\/www.devopsschool.com\/blog\/appdynamics-lab-create-a-sample-load-for-apm-in-petclinic-app\/","title":{"rendered":"Appdynamics: Lab &#8211; Create a Sample Load for APM in petclinic App using Jmeter"},"content":{"rendered":"\n<p>Here\u2019s the <strong>exact JMeter setup<\/strong> to create Owners at<br><code>http:\/\/43.204.220.89:8080\/petclinic\/owners\/new<\/code>.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">Thread Group (your load)<\/h1>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Users: as needed (e.g., 50\/200\/1000)<\/li>\n\n\n\n<li>Ramp-up: e.g., 60s<\/li>\n\n\n\n<li>Loop: as needed<\/li>\n<\/ul>\n\n\n\n<h1 class=\"wp-block-heading\">Config Elements<\/h1>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>HTTP Request Defaults<\/strong><\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Server Name: <code>43.204.220.89<\/code><\/li>\n\n\n\n<li>Port: <code>8080<\/code><\/li>\n\n\n\n<li>Protocol: <code>http<\/code><\/li>\n<\/ul>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li><strong>HTTP Cookie Manager<\/strong> (enable cookies for session)<\/li>\n\n\n\n<li><strong>HTTP Header Manager<\/strong><\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>Content-Type: application\/x-www-form-urlencoded<\/code><\/li>\n<\/ul>\n\n\n\n<ol start=\"4\" class=\"wp-block-list\">\n<li><strong>CSV Data Set Config<\/strong> (to feed random data at scale)<\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Filename: <code>owners.csv<\/code><\/li>\n\n\n\n<li>Variable Names: <code>first,last,address,city,phone<\/code><\/li>\n\n\n\n<li>Recycle on EOF: <code>True<\/code><\/li>\n\n\n\n<li>Stop thread on EOF: <code>False<\/code><\/li>\n\n\n\n<li>Example <code>owners.csv<\/code> line:<br><code>John,Doe,12 Baker Street,London,0700012345<\/code><\/li>\n<\/ul>\n\n\n\n<h1 class=\"wp-block-heading\">Samplers &amp; Post-Processors<\/h1>\n\n\n\n<h2 class=\"wp-block-heading\">1) GET form page (fetch cookies and optional CSRF)<\/h2>\n\n\n\n<p><strong>Sampler:<\/strong> HTTP Request<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Method: <code>GET<\/code><\/li>\n\n\n\n<li>Path: <code>\/petclinic\/owners\/new<\/code><\/li>\n<\/ul>\n\n\n\n<p><strong>Post-Processor (optional, if CSRF is enabled):<\/strong> <em>CSS Selector Extractor<\/em><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Name of created variable: <code>csrf<\/code><\/li>\n\n\n\n<li>CSS Selector: <code>input[name=_csrf]<\/code><\/li>\n\n\n\n<li>Attribute: <code>value<\/code><br><em>(If you don\u2019t see a hidden <code>_csrf<\/code> field in the HTML, skip this extractor and the <code>_csrf<\/code> param below.)<\/em><\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">2) POST create owner<\/h2>\n\n\n\n<p><strong>Sampler:<\/strong> HTTP Request<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Method: <code>POST<\/code><\/li>\n\n\n\n<li>Path: <code>\/petclinic\/owners\/new<\/code><\/li>\n\n\n\n<li>Parameters (add as form params):\n<ul class=\"wp-block-list\">\n<li><code>firstName<\/code> = <code>${first}<\/code><\/li>\n\n\n\n<li><code>lastName<\/code> = <code>${last}<\/code><\/li>\n\n\n\n<li><code>address<\/code> = <code>${address}<\/code><\/li>\n\n\n\n<li><code>city<\/code> = <code>${city}<\/code><\/li>\n\n\n\n<li><code>telephone<\/code> = <code>${phone}<\/code><\/li>\n\n\n\n<li><code>_csrf<\/code> = <code>${csrf}<\/code> <em>(only if extractor above succeeded)<\/em><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<p><strong>(Alternative body if you prefer raw):<\/strong><br><code>firstName=${first}&amp;lastName=${last}&amp;address=${address}&amp;city=${city}&amp;telephone=${phone}&amp;_csrf=${csrf}<\/code><\/p>\n\n\n\n<p><strong>Assertion (to confirm success):<\/strong> <em>Response Assertion<\/em><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Contains: <code>Owner Information<\/code><br><em>(Petclinic typically redirects to <code>\/petclinic\/owners\/{id}<\/code> showing that text on success.)<\/em><\/li>\n<\/ul>\n\n\n\n<h1 class=\"wp-block-heading\">Tips for mass traffic<\/h1>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Add a <strong>Uniform Random Timer<\/strong> (e.g., 300\u20131200 ms) to better mimic users.<\/li>\n\n\n\n<li>Scale <code>Thread Group<\/code> users + loop to hit your target RPS.<\/li>\n\n\n\n<li>If you see 302 redirects, enable \u201cFollow Redirects\u201d on the POST sampler.<\/li>\n<\/ul>\n\n\n\n<p>That\u2019s it\u2014this pair of samplers (GET\u2192POST) with CSV data will flood the endpoint with realistic owner-creation requests.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Sample JMeter File and Sample Data<\/h2>\n\n\n\n<script src=\"https:\/\/gist.github.com\/devops-school\/eb7269e3ad70ba2d42252d09ab8fd8e4.js\"><\/script>\n","protected":false},"excerpt":{"rendered":"<p>Here\u2019s the exact JMeter setup to create Owners athttp:\/\/43.204.220.89:8080\/petclinic\/owners\/new. Thread Group (your load) Config Elements Samplers &amp; Post-Processors 1) GET form page (fetch cookies and optional CSRF) Sampler: HTTP Request&#8230; <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"_joinchat":[],"footnotes":""},"categories":[2],"tags":[],"class_list":["post-52669","post","type-post","status-publish","format-standard","hentry","category-uncategorised"],"_links":{"self":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/52669","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/comments?post=52669"}],"version-history":[{"count":2,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/52669\/revisions"}],"predecessor-version":[{"id":52671,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/52669\/revisions\/52671"}],"wp:attachment":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/media?parent=52669"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/categories?post=52669"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/tags?post=52669"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}