blob: 5ed654f56d399b68189356abfc4247393df437fc [file] [log] [blame]
<!DOCTYPE html>
<html lang="en">
<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-112407000-2"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag() {
dataLayer.push(arguments);
}
gtag('js', new Date());
gtag('config', 'UA-112407000-2');
</script>
<!-- Google Tag Manager -->
<script>
(function (w, d, s, l, i) {
w[l] = w[l] || [];
w[l].push({
'gtm.start': new Date().getTime(),
event: 'gtm.js'
});
var f = d.getElementsByTagName(s)[0],
j = d.createElement(s),
dl = l != 'dataLayer' ? '&l=' + l : '';
j.async = true;
j.src =
'https://www.googletagmanager.com/gtm.js?id=' + i + dl;
f.parentNode.insertBefore(j, f);
})(window, document, 'script', 'dataLayer', 'GTM-KS8HHSF');
</script>
<!-- End Google Tag Manager -->
<head>
<base href="/codewind/" />
<title>Performance testing your project | Codewind</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="Performance testing">
<meta name="keywords" content="using, coding, code, edit, log, App monitor, test plan, performance, run load, metrics, load test directory, load tester, payload, endpoint, passing a payloa..."/>
<link rel="icon" type="image/png" sizes="16x16" href="images/favicon-16x16.png">
<link rel="icon" type="image/png" sizes="32x32" href="images/favicon-32x32.png">
<link href="https://fonts.googleapis.com/css?family=IBM+Plex+Sans:300,400,600&display=swap" rel="stylesheet">
<!-- Bootstrap CSS CDN -->
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css"
integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet" />
<link rel="stylesheet" href="css/styles.css">
<link rel="stylesheet" href="css/docs.css">
</head>
<body data-spy="scroll" data-target="#toc">
<!-- Google Tag Manager (noscript) -->
<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-KS8HHSF"
height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
<!-- End Google Tag Manager (noscript) -->
<div class="main">
<!-- Bootstrap NavBar -->
<nav class="navbar navbar-expand-lg navbar-light cw-banner fixed-top">
<button class="navbar-toggler navbar-toggler-right" type="button" data-toggle="collapse"
data-target="#navbarNavDropdown" aria-controls="navbarNavDropdown" aria-expanded="false"
aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<a class="navbar-brand" href="">
<img src="images/header-logo.svg" class="cw-header-logo" alt="">
</a>
<div class="collapse navbar-collapse justify-content-end cw-navbar-padding" id="navbarNavDropdown">
<ul class="navbar-nav cw-navbar-nav">
<li class="nav-item cw-navbar-item cw-header-link">
<a class="nav-link cw-nav-link" href="docindex.html">Docs</a>
</li>
<!-- li class="nav-item cw-navbar-item" id="download-li">
<button onClick="window.location.href='https://microclimate.dev/download/codewind';" type="button" class="btn cw-download-button">Download</button>
<a href="https://microclimate.dev/download/codewind" class="nav-link cw-nav-link cw-download-link" href="#">Download</a>
</li> -->
<li class="nav-item cw-navbar-item" id="github-stars-button">
<!-- Place this tag where you want the button to render. -->
<a class="github-button" href="https://github.com/eclipse/codewind" data-size="large"
data-show-count="true" aria-label="Star eclipse/codewind on GitHub">Star</a>
</li>
<!-- Smaller devices menu END -->
</ul>
</div>
</nav>
<!-- NavBar END -->
<!-- Bootstrap row -->
<div class="row" id="body-row">
<!-- Sidebar -->
<div id="sidebar-container" class="bg-light">
<!-- Bootstrap List Group -->
<ul class="list-group sticky-top bg-light cw-sticky-offset">
<!-- Separator with title -->
<li class="list-group-item cw-sidebar-separator-title cw-text-gray d-flex bg-light align-items-center menu-collapsed">
<small class="badge badge-success cw-margin-auto">DOCUMENTS</small>
</li>
<!-- /END Separator -->
<!-- Hard coded TOC -->
<a href="#install_on_cloud" data-toggle="collapse" aria-expanded="false" class="bg-light list-group-item list-group-item-action flex-column align-items-start collapsed">
<div class="d-flex w-100 justify-content-start align-items-center">
<span class="menu-collapsed">Installing and Using Codewind on Cloud</span>
<span class="submenu-icon ml-auto"></span>
</div>
</a>
<div id="install_on_cloud" class="cw-sidebar-div cw-sidebar-submenu collapse" style="">
<a href="installoncloud.html"
class="bg-light list-group-item list-group-item-action">
<div class="d-flex w-100 justify-content-start align-items-center">
<span class="menu-collapsed">Installing and Using Codewind on Kubernetes</span>
</div>
</a>
<a href="supportingmultipleusers.html"
class="bg-light list-group-item list-group-item-action">
<div class="d-flex w-100 justify-content-start align-items-center">
<span class="menu-collapsed">Support for multiple users</span>
</div>
</a>
<a href="viewkibanalogs.html"
class="bg-light list-group-item list-group-item-action">
<div class="d-flex w-100 justify-content-start align-items-center">
<span class="menu-collapsed">Viewing logs using Kibana in IBM Cloud Private</span>
</div>
</a>
</div>
<a href="installlocally.html"
class="bg-light list-group-item list-group-item-action">
<div class="d-flex w-100 justify-content-start align-items-center">
<span class="menu-collapsed">Installing Codewind locally</span>
</div>
</a>
<a href="#codewind_for_eclipse" data-toggle="collapse" aria-expanded="false" class="bg-light list-group-item list-group-item-action flex-column align-items-start collapsed">
<div class="d-flex w-100 justify-content-start align-items-center">
<span class="menu-collapsed">Codewind for Eclipse</span>
<span class="submenu-icon ml-auto"></span>
</div>
</a>
<div id="codewind_for_eclipse" class="cw-sidebar-div cw-sidebar-submenu collapse" style="">
<a href="mdteclipseoverview.html"
class="bg-light list-group-item list-group-item-action">
<div class="d-flex w-100 justify-content-start align-items-center">
<span class="menu-collapsed">Overview</span>
</div>
</a>
<a href="mdteclipsegettingstarted.html"
class="bg-light list-group-item list-group-item-action">
<div class="d-flex w-100 justify-content-start align-items-center">
<span class="menu-collapsed">Installation and Getting Started</span>
</div>
</a>
<a href="mdteclipsemanagingprojects.html"
class="bg-light list-group-item list-group-item-action">
<div class="d-flex w-100 justify-content-start align-items-center">
<span class="menu-collapsed">Managing Codewind projects</span>
</div>
</a>
<a href="mdteclipsebuildproject.html"
class="bg-light list-group-item list-group-item-action">
<div class="d-flex w-100 justify-content-start align-items-center">
<span class="menu-collapsed">Building Codewind projects</span>
</div>
</a>
<a href="mdteclipsedebugproject.html"
class="bg-light list-group-item list-group-item-action">
<div class="d-flex w-100 justify-content-start align-items-center">
<span class="menu-collapsed">Debugging Codewind projects</span>
</div>
</a>
<a href="mdteclipsetroubleshooting.html"
class="bg-light list-group-item list-group-item-action">
<div class="d-flex w-100 justify-content-start align-items-center">
<span class="menu-collapsed">Troubleshooting</span>
</div>
</a>
<a href="mdteclipseuninstall.html"
class="bg-light list-group-item list-group-item-action">
<div class="d-flex w-100 justify-content-start align-items-center">
<span class="menu-collapsed">Uninstalling</span>
</div>
</a>
</div>
<a href="#codewind_for_vscode" data-toggle="collapse" aria-expanded="false" class="bg-light list-group-item list-group-item-action flex-column align-items-start collapsed">
<div class="d-flex w-100 justify-content-start align-items-center">
<span class="menu-collapsed">Codewind for VS Code</span>
<span class="submenu-icon ml-auto"></span>
</div>
</a>
<div id="codewind_for_vscode" class="cw-sidebar-div cw-sidebar-submenu collapse" style="">
<a href="mdt-vsc-overview.html"
class="bg-light list-group-item list-group-item-action">
<div class="d-flex w-100 justify-content-start align-items-center">
<span class="menu-collapsed">Overview</span>
</div>
</a>
<a href="mdt-vsc-getting-started.html"
class="bg-light list-group-item list-group-item-action">
<div class="d-flex w-100 justify-content-start align-items-center">
<span class="menu-collapsed">Getting started</span>
</div>
</a>
<a href="mdt-vsc-tutorial.html"
class="bg-light list-group-item list-group-item-action">
<div class="d-flex w-100 justify-content-start align-items-center">
<span class="menu-collapsed">Tutorial</span>
</div>
</a>
<a href="mdt-vsc-commands-overview.html"
class="bg-light list-group-item list-group-item-action">
<div class="d-flex w-100 justify-content-start align-items-center">
<span class="menu-collapsed">Commands overview</span>
</div>
</a>
<a href="mdt-vsc-commands-project.html"
class="bg-light list-group-item list-group-item-action">
<div class="d-flex w-100 justify-content-start align-items-center">
<span class="menu-collapsed">Project commands</span>
</div>
</a>
<a href="mdt-vsc-commands-restart-and-debug.html"
class="bg-light list-group-item list-group-item-action">
<div class="d-flex w-100 justify-content-start align-items-center">
<span class="menu-collapsed">Restart and debug commands</span>
</div>
</a>
<a href="mdt-vsc-troubleshooting.html"
class="bg-light list-group-item list-group-item-action">
<div class="d-flex w-100 justify-content-start align-items-center">
<span class="menu-collapsed">Troubleshooting</span>
</div>
</a>
<a href="mdt-vsc-uninstall.html"
class="bg-light list-group-item list-group-item-action">
<div class="d-flex w-100 justify-content-start align-items-center">
<span class="menu-collapsed">Uninstalling</span>
</div>
</a>
</div>
<a href="#configuring_codewind" data-toggle="collapse" aria-expanded="false" class="bg-light list-group-item list-group-item-action flex-column align-items-start collapsed">
<div class="d-flex w-100 justify-content-start align-items-center">
<span class="menu-collapsed">Configuring Codewind</span>
<span class="submenu-icon ml-auto"></span>
</div>
</a>
<div id="configuring_codewind" class="cw-sidebar-div cw-sidebar-submenu collapse" style="">
<a href="usingadifferenttemplate.html"
class="bg-light list-group-item list-group-item-action">
<div class="d-flex w-100 justify-content-start align-items-center">
<span class="menu-collapsed">Using a template repository of your own</span>
</div>
</a>
</div>
<a href="guide_performance.html"
class="bg-light list-group-item list-group-item-action">
<div class="d-flex w-100 justify-content-start align-items-center">
<span class="menu-collapsed">Guide: Monitoring applications with the performance dashboard</span>
</div>
</a>
<a href="uninstall.html"
class="bg-light list-group-item list-group-item-action">
<div class="d-flex w-100 justify-content-start align-items-center">
<span class="menu-collapsed">Uninstalling Codewind</span>
</div>
</a>
<a href="troubleshooting.html"
class="bg-light list-group-item list-group-item-action">
<div class="d-flex w-100 justify-content-start align-items-center">
<span class="menu-collapsed">Troubleshooting</span>
</div>
</a>
<a href="limitations.html"
class="bg-light list-group-item list-group-item-action">
<div class="d-flex w-100 justify-content-start align-items-center">
<span class="menu-collapsed">Limitations</span>
</div>
</a>
<!-- END hard coded TOC -->
<!-- Separator without title -->
<li class="list-group-item cw-sidebar-separator-title bg-light cw-text-gray d-flex align-items-center menu-collapsed">
<small class="badge badge-success cw-margin-auto">HELPFUL
LINKS</small>
</li>
<!-- /END Separator -->
<a href="https://projects.eclipse.org/proposals/eclipse-codewind" class="bg-light list-group-item list-group-item-action">
<div class="d-flex w-100 justify-content-start align-items-center">
<span class="menu-collapsed">Eclipse Codewind project page</span>
</div>
</a>
<a href="https://www.youtube.com/channel/UCnKCVK6RFDyHFqUmXlAhCHQ" class="bg-light list-group-item list-group-item-action">
<div class="d-flex w-100 justify-content-start align-items-center">
<span class="menu-collapsed">Eclipse Codewind YouTube channel</span>
</div>
</a>
<!-- Logo -->
<li class="list-group-item cw-logo-separator bg-light d-flex justify-content-center">
<img src="images/header-logo.svg">
</li>
</ul>
<!-- List Group END-->
</div>
<!-- sidebar-container END -->
<!-- MAIN -->
<div id="content-container" class="py-5 px-5">
<div role="main"><h1 id="performance-testing-your-project">Performance testing your project</h1>
<p>Microclimate has a built in load tester that lets you drive data through your application to test its performance. When you first run the load tester, Microclimate generates a basic configuration for you. You can then customize this configuration for your application.</p>
<p>Follow the steps to edit and test your code:</p>
<ol>
<li>Select a project or generate a new project.</li>
<li>To generate the initial test plan, click the <strong>App monitor</strong> tab, and then click the <strong>Run load</strong> button. You start to see the graphs on the screen indicating that the run load test is running. To cancel the run load test, click <strong>Cancel load</strong>.</li>
<li>
<p>Click the <strong>Edit code</strong> tab and expand your project directory. From the directory, you can access <code class="highlighter-rouge">load-test</code>&gt;<code class="highlighter-rouge">config.json</code> and edit the code in the <code class="highlighter-rouge">config.json</code> file. For example, you can add your own endpoints or change the number of threads that are running. The default <code class="highlighter-rouge">config.json</code> contains the following information:</p>
<div class="language-json highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="p">{</span><span class="w">
</span><span class="s2">"path"</span><span class="p">:</span><span class="s2">"/"</span><span class="p">,</span><span class="w">
</span><span class="s2">"requestsPerSecond"</span><span class="p">:</span><span class="s2">"100"</span><span class="p">,</span><span class="w">
</span><span class="s2">"concurrency"</span><span class="p">:</span><span class="s2">"20"</span><span class="p">,</span><span class="w">
</span><span class="s2">"maxSeconds"</span><span class="p">:</span><span class="s2">"120"</span><span class="w">
</span><span class="p">}</span><span class="w">
</span></code></pre></div> </div>
<p>Where:</p>
<p><code class="highlighter-rouge">path</code> is the endpoint of the application to test.</p>
<p><code class="highlighter-rouge">requestsPerSecond</code> is the number of requests to send to the endpoint every second.</p>
<p><code class="highlighter-rouge">concurrency</code> is the number of multiple users to simulate hitting the endpoint.</p>
<p><code class="highlighter-rouge">maxSeconds</code> is how long to run the test for.</p>
<p>This default configuration performs a <code class="highlighter-rouge">GET</code> request on the <code class="highlighter-rouge">/</code> endpoint, <code class="highlighter-rouge">100</code> times a second, for <code class="highlighter-rouge">20</code> users, for <code class="highlighter-rouge">120</code> seconds.</p>
</li>
</ol>
<h2 id="passing-a-payload-to-an-endpoint">Passing a payload to an endpoint</h2>
<p>To modify the configuration to pass an object to endpoint, include the following additional fields:</p>
<p><code class="highlighter-rouge">method</code> is the method to use: POST, PUT. The default is GET.</p>
<p><code class="highlighter-rouge">contentType</code> is the MIME type to use for the body. The default content type is text/plain.</p>
<p><code class="highlighter-rouge">body</code> is the contents to send in the body of the message for POST or PUT requests; this can be a string or an object which is converted to JSON.</p>
<p>For example, the following <code class="highlighter-rouge">config.json</code> sends the json object to the <code class="highlighter-rouge">/api/v1/hello</code> endpoint for <code class="highlighter-rouge">5</code> seconds.</p>
<div class="language-json highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="p">{</span><span class="w">
</span><span class="s2">"method"</span><span class="p">:</span><span class="s2">"POST"</span><span class="p">,</span><span class="w">
</span><span class="s2">"contentType"</span><span class="p">:</span><span class="s2">"application/JSON"</span><span class="p">,</span><span class="w">
</span><span class="s2">"body"</span><span class="p">:{</span><span class="s2">"message"</span><span class="p">:</span><span class="s2">"microclimate"</span><span class="p">},</span><span class="w">
</span><span class="s2">"path"</span><span class="p">:</span><span class="s2">"/api/v1/hello"</span><span class="p">,</span><span class="w">
</span><span class="s2">"maxSeconds"</span><span class="p">:</span><span class="s2">"5"</span><span class="w">
</span><span class="p">}</span><span class="w">
</span></code></pre></div></div>
<p>Where the json object is defined as:</p>
<div class="language-json highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="p">{</span><span class="w"> </span><span class="s2">"message"</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="s2">"microclimate"</span><span class="p">}</span><span class="w">
</span></code></pre></div></div>
<p>For a full list of options, see the <a href="https://www.npmjs.com/package/loadtest">loadtest module documentation</a>.</p>
<p>To pass a payload to an endpoint:</p>
<ol>
<li>Edit the <code class="highlighter-rouge">config.json</code>, and then save your changes.</li>
<li>Click <strong>App monitor</strong>, and then click the <strong>Run load</strong> button. A text box appears that states <code class="highlighter-rouge">**Run load** The request to start the process has been sent</code>.</li>
<li>Wait for the test to run. You can watch the test metrics while the test is running.</li>
<li>When the test is complete, navigate back to the <strong>Edit code</strong> tab to see the result of the latest run. An entry appears under the <code class="highlighter-rouge">load-test</code> directory with a time stamp containing a summary of the run.</li>
</ol>
</div>
</div>
</div>
<!-- Main Col END -->
<!-- footer row -->
<footer>
<div class="row" id="footer-div">
<div class="col-lg-3 col-md-3 footer-col text-center">
<div>
<div>
<a href="https://twitter.com/EclipseCodewind"><img src="images/twitter-logo.svg" class="cw-logo" /></a>
</div>
<div>@EclipseCodewind</div>
</div>
</div>
<div class="col-lg-3 col-md-3 footer-col text-center">
<div>
<div>
<a href="https://github.com/eclipse/codewind"><img src="images/github-logo.svg"
class="cw-logo" /></a>
</div>
<div>@Codewind</div>
</div>
</div>
<div class="col-lg-3 col-md-3 footer-col text-center">
<div>
<div>
<a href="mailto:codewind-dev@eclipse.org"><img src="images/email-icon.svg" class="cw-logo" /></a>
</div>
<div>@Codewind</div>
</div>
</div>
<div class="col-lg-3 col-md-3 footer-col text-center">
<div class="cw-logo-mm" >
<div class="cw-logo-mm" >
<a href="https://mattermost.eclipse.org/eclipse/channels/eclipse-codewind"><img src="images/mattermost-logo.png" class="cw-logo-mm" /></a>
</div>
</div>
</div>
</div>
</footer>
<!-- footer row END --> <!-- Jquery -->
<script
src="https://code.jquery.com/jquery-3.4.1.min.js"
integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo="
crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js"
integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1" crossorigin="anonymous">
</script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js"
integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous">
</script>
<!-- Font Awesome JS -->
<script defer src="https://use.fontawesome.com/releases/v5.0.13/js/solid.js"
integrity="sha384-tzzSw1/Vo+0N5UhStP3bvwWPq+uvzCMfrN1fEFe+xBmv1C/AtVX5K0uZtmcHitFZ" crossorigin="anonymous">
</script>
<script defer src="https://use.fontawesome.com/releases/v5.0.13/js/fontawesome.js"
integrity="sha384-6OIrr52G08NpOFSZdxxz1xdNSndlD4vdcf/q2myIUVO0VsqaGHJsB0RaBE01VTOY" crossorigin="anonymous">
</script>
<!-- Place this tag in your head or just before your close body tag. -->
<script async defer src="https://buttons.github.io/buttons.js"></script>
<script src="js/jquery.matchHeight-min.js"></script>
<script src="js/index.js"></script>
<script src="js/docs.js"></script>
</div>
</body>
</html>