{"@attributes":{"version":"2.0"},"channel":{"title":"Hyperfoil","link":"https:\/\/hyperfoil.io\/","description":"Recent content on Hyperfoil","generator":"Hugo -- gohugo.io","language":"en","item":[{"title":"Agents","link":"https:\/\/hyperfoil.io\/docs\/user-guide\/benchmark\/agents\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/hyperfoil.io\/docs\/user-guide\/benchmark\/agents\/","description":"This section can be omitted in standalone mode.\nAgents section forms either a list or map with arbitrary agent names and either an inline or properties-style definition:\nagents: someAgent: &#34;inline definition&#34; otherAgent: foo: bar The definition is passed to an instance of i.h.api.deployment.Deployer which will interpret the definition. Deployer implementation is registred using the java.util.ServiceLoader and selected through the io.hyperfoil.deployer system property. The default implementation is ssh.\nCommon properties Property Default Description threads from benchmark Number of threads used by the agent (overrides threads in benchmark root)."},{"title":"First benchmark","link":"https:\/\/hyperfoil.io\/docs\/getting-started\/quickstart1\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/hyperfoil.io\/docs\/getting-started\/quickstart1\/","description":"1. Download latest release and unpack it wget https:\/\/github.com\/Hyperfoil\/Hyperfoil\/releases\/download\/hyperfoil-all-0.29.3\/hyperfoil-0.29.3.zip \\ &amp;&amp; unzip hyperfoil-0.29.3.zip \\ &amp;&amp; cd &lt;extracted dir&gt; 2. Start Hyperfoil in interactive mode (CLI) bin\/cli.sh For our first benchmark we&rsquo;ll start an embedded server (controller) within the CLI:\n[hyperfoil]$ start-local Starting controller in default directory (\/tmp\/hyperfoil) Controller started, listening on 127.0.0.1:41621 Connecting to the controller... Connected! 3. Upload the minimalistic benchmark and run it As you can see below, the benchmark is really minimalistic as it is doing only single request to http:\/\/hyperfoil."},{"title":"JSON schema support","link":"https:\/\/hyperfoil.io\/docs\/howtos\/editor\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/hyperfoil.io\/docs\/howtos\/editor\/","description":"For your convenience we recommend using editor with YAML validation against JSON schema; you can point your editor to schema.json. We can recommend Visual Studio Code with redhat.vscode-yaml plugin.\nYou need to edit settings file to map benchmark configuration files (with .hf.yaml extension) to the schema, adding:\n&#34;yaml.schemas&#34; : { &#34;file:\/\/\/path\/to\/hyperfoil-distribution\/docs\/schema.json&#34; : &#34;\/*.hf.yaml&#34; }, Note that you can also directly point to the hosted JSON schema definition:\n&#34;yaml.schemas&#34; : { &#34;https:\/\/hyperfoil."},{"title":"Manual startup","link":"https:\/\/hyperfoil.io\/docs\/user-guide\/installation\/start_manual\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/hyperfoil.io\/docs\/user-guide\/installation\/start_manual\/","description":"Hyperfoil controller is started with\nbin\/controller.sh Any arguments passed to the scripts will be passed as-is to the java process.\nBy default io.hyperfoil.deployer is set to ssh which means that the controller will deploy agents over SSH, based on the agents configurion. This requires that the user account running the controller must have public-key SSH authorization set up using key $HOME\/.ssh\/id_rsa. The user also has to be able to copy files to the directory set in agent definition (by default \/tmp\/hyperfoil) using SCP - Hyperfoil automatically synchronizes library files in this folder with the currently running instance and then executes the agent."},{"title":"Migrating from wrk\/wrk2","link":"https:\/\/hyperfoil.io\/docs\/migration\/wrk\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/hyperfoil.io\/docs\/migration\/wrk\/","description":"Both Will Glozer&rsquo;s wrk and Gil Tene&rsquo;s wrk2 are great tools but maybe you&rsquo;ve realized that you need more functionalities, need to hit more endpoints in parallel or simply have to scale horizontally to more nodes. Hyperfoil offers an adapter that tries to mimic the behaviour of these load drivers. This guide will show how to use these and translate the test into a full-fledged Hyperfoil benchmark.\nWarning Please make sure that you are using Hyperfoil version &gt;= 0."},{"title":"Release Notes","link":"https:\/\/hyperfoil.io\/blog\/releases\/release_notes\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/hyperfoil.io\/blog\/releases\/release_notes\/","description":"0.29.3 (2026-06-24) Prevent CpuWatchdog crash on non-contiguous CPU IDs 0.29.2 (2026-05-18) Fix wrk\/wrk2 calibration SLA failure cancelling test phase 0.29.1 (2026-04-16) Preserve dependency POM for clustering shade plugin 0.29.0 (2026-04-16) Nanosecond granularity for load generators, enabling sub-millisecond rate generation Fix internal coordinated omission for open model phases Fix open model catch-up sessions clustering on a single event loop (issue #627) CLI and run commands packaged as standalone jar files via Maven Shade Plugin Added warmupDuration option for wrk\/wrk2 phases Added version information to Agent and Controller Print total stats summary after run completes in LoadAndRun Refactored phase lifecycle and statistics collection for improved reliability Ensured all statistics are properly collected and sent before phase completion Resolved CpuWatchdog false positives due to tick rate assumptions Disabled Netty leak detection by default Updated the Hyperfoil report template Added JDK 25 to the build matrix Dependency upgrades, including HdrHistogram 2."},{"title":"Concepts","link":"https:\/\/hyperfoil.io\/docs\/overview\/concepts\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/hyperfoil.io\/docs\/overview\/concepts\/","description":"This document explains some core terms used throughout the documentation.\nController and agents While it is possible to run benchmarks directly from CLI, in its nature Hyperfoil is a distributed tool with leader-follower architecture. Controller has the leader role; this is a Vert.x-based server with REST API. When a benchmark is started controller deploys agents (according to the benchmark definition), pushes the benchmark definition to these agents and orchestrates benchmark phases."},{"title":"HTTP","link":"https:\/\/hyperfoil.io\/docs\/user-guide\/benchmark\/http\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/hyperfoil.io\/docs\/user-guide\/benchmark\/http\/","description":"All servers that Hyperfoil should contact must be declared in this section. Before the benchmark starts Hyperfoil agents will open connections to the target servers; if this connection fails the benchmark is terminated immediatelly.\nYou can either declare single target server (the default one) within this section or more of them:\nhttp: host: http:\/\/example.com ... http: - host: http:\/\/example.com sharedConnections: 100 - host: http:\/\/example.com:8080 sharedConnections: 50 HTTP configuration has these properties:"},{"title":"K8s\/Openshift deployment","link":"https:\/\/hyperfoil.io\/docs\/user-guide\/installation\/k8s\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/hyperfoil.io\/docs\/user-guide\/installation\/k8s\/","description":"A convenient alternative to running Hyperfoil on hosts with SSH access is deploying it in Kubernetes or Openshift environment. The recommended way to install it using an operator in your Openshift console - just go to Operators - OperatorHub and search for &lsquo;hyperfoil&rsquo;, and follow the installation wizard. Alternatively you can deploy the controller manually.\nIn order to start a Hyperfoil Controller instance in your cluster, create a new namespace hyperfoil: Go to Operators - Installed Operators and open Hyperfoil."},{"title":"Steps and statistics","link":"https:\/\/hyperfoil.io\/docs\/getting-started\/quickstart2\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/hyperfoil.io\/docs\/getting-started\/quickstart2\/","description":"In previous quickstart you created a benchmark that fires only one HTTP request. Our next example is going to hit random URLs at this server with 10 requests per second. We&rsquo;ll see how to generate random data and collect statistics for different URLs.\nLet&rsquo;s start a container that will serve the requests:\npodman run --rm -p 8080:8083 quay.io\/hyperfoil\/hyperfoil-examples If you prefer running this in Docker just replace podman with docker. You can explore the handling of requests from this example on GitHub."},{"title":"Swagger UI","link":"https:\/\/hyperfoil.io\/docs\/restapi\/openapi\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/hyperfoil.io\/docs\/restapi\/openapi\/","description":{}},{"title":"Using credentials","link":"https:\/\/hyperfoil.io\/docs\/howtos\/credentials\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/hyperfoil.io\/docs\/howtos\/credentials\/","description":"Hyperfoil benchmarks can refer to external files. When you use the upload command in CLI the files are automatically attached the the benchmark YAML (relative paths are resolved relative to this file). Later on when editing the file you can choose to re-upload some of these. Once the benchmark is built the files are loaded to the in-memory representation - Hyperfoil won&rsquo;t access these files during runtime. With clustered benchmarks these files don&rsquo;t need to be on the agents either - the controller sends serialized in-memory representation to the agents and that contains everything needed for the actual execution."},{"title":"Complex workflow","link":"https:\/\/hyperfoil.io\/docs\/getting-started\/quickstart3\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/hyperfoil.io\/docs\/getting-started\/quickstart3\/","description":"The previous example was the first &lsquo;real&rsquo; benchmark, but it didn&rsquo;t do anything different from what you could run through wrk, ab, siege or similar tools.\nOf course, the results were not suffering from the coordinated omission problem, but Hyperfoil can do more. Let&rsquo;s try a more complex scenario:\nname: choose-movie http: host: http:\/\/localhost:8080 # Use 80 concurrent HTTP connections to the server. Default is 1, # therefore we couldn&#39;t issue two concurrent requests (as HTTP pipelining # is disabled by default and we use HTTP 1."},{"title":"FAQ","link":"https:\/\/hyperfoil.io\/docs\/overview\/faq\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/hyperfoil.io\/docs\/overview\/faq\/","description":"Why is Hyperfoil written in Java? People are often concerned about JVM performance or predictability. While nowadays JVM is very good in the sense of throughput, dealing with jitter can be challenging. We are Java engineers, though, and we believe that these issues can be mitigated with a right design. That&rsquo;s why we try to be very careful on the execution hot-path.\nWe could achieve even better properties with C\/C++, but the development effectivity would suffer."},{"title":"Hyperfoil run script","link":"https:\/\/hyperfoil.io\/docs\/howtos\/run_scripts\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/hyperfoil.io\/docs\/howtos\/run_scripts\/","description":"Starting from release 0.27, Hyperfoil includes an easy-to-use script that simplifies running benchmarks, allowing users to try tests faster when in-vm controller server is acceptable.\nThis script is particularly beneficial when you need to quickly test, validate or refine your benchmark definitions, ensuring they run as expected without needing to manually orchestrate the controller and agent processes. It also enables seamless integration into automation scripts or CI\/CD pipelines, where you can configure benchmarks to run as part of routine testing, with results saved for further analysis."},{"title":"Manual k8s\/Openshift deployment","link":"https:\/\/hyperfoil.io\/docs\/user-guide\/installation\/k8s_manual\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/hyperfoil.io\/docs\/user-guide\/installation\/k8s_manual\/","description":"If you cannot use the operator or if you&rsquo;re running vanilla Kubernetes you can define all the resource manually. You deploy only the controller; each agent is then started, when the run starts, as a pod in the same namespace and stopped when the run completes.\nFollowing steps install Hyperfoil controller in Openshift, assuming that you have all the required priviledges. With vanilla Kubernetes you might have to replace the route with an appropriate ingress."},{"title":"Phases","link":"https:\/\/hyperfoil.io\/docs\/user-guide\/benchmark\/phases\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/hyperfoil.io\/docs\/user-guide\/benchmark\/phases\/","description":"You might want to simulate several types of workloads at once: e.g. in an eshop users would come browsing or buying products, and operators would restock the virtual warehouse. Also, driving constant load may not be the best way to run the benchmark: often you want to slowly ramp the load up to let the system adjust (scale up, perform JIT, fill pools) and push the full load only after that."},{"title":"Ansible startup","link":"https:\/\/hyperfoil.io\/docs\/user-guide\/installation\/ansible\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/hyperfoil.io\/docs\/user-guide\/installation\/ansible\/","description":"You can fetch release, distribute and start the cluster using Ansible Galaxy scripts; setup, test, shutdown\nFirst, get the scripts:\nansible-galaxy install hyperfoil.hyperfoil_setup,{{ site.last_release.galaxy_version }} ansible-galaxy install hyperfoil.hyperfoil_shutdown,{{ site.last_release.galaxy_version }} ansible-galaxy install hyperfoil.hyperfoil_test,{{ site.last_release.galaxy_version }} Now, edit your hosts file, it could look like this:\n[hyperfoil-controller] controller ansible_host=localhost [hyperfoil-agent] agent-1 ansible_host=localhost Note You can add more agents by duplicating the last line with agent-2 etc. Prepare your playbook; here is a short example that starts the controller, uploads and starts simple benchmark (the templating engine replaces the agents in benchmark script based on Ansible hosts) and waits for its completion."},{"title":"Examples","link":"https:\/\/hyperfoil.io\/docs\/user-guide\/examples\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/hyperfoil.io\/docs\/user-guide\/examples\/","description":"If you haven&rsquo;t checked the Getting started guide we strongly recommend going there first.\nBelow you&rsquo;ll see commented examples of configuration; contrary to the Getting started guide these don&rsquo;t present scenarios but rather list the various configuration options by example.\nhttpRequest You will most likely use step httpRequest in each of your scenarios, and there&rsquo;s many ways to send a request.\n# This example should demonstrate various ways to configure one of the most important # steps - the httpRequest."},{"title":"Phases - basics","link":"https:\/\/hyperfoil.io\/docs\/getting-started\/quickstart4\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/hyperfoil.io\/docs\/getting-started\/quickstart4\/","description":"So far the benchmark contained only one type of load; certain number of users hitting the system, doing always the same (though data could be randomized). In practice you might want to simulate several types of workloads at once: in an eshop users would come browsing or buying products, and operators would restock the virtual warehouse.\nAlso, driving constant load may not be the best way to run the benchmark: often you want to slowly ramp the load up to let the system adjust (scale up, perform JIT, fill pools) and push the full load only after that."},{"title":"Scenario","link":"https:\/\/hyperfoil.io\/docs\/user-guide\/benchmark\/scenario\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/hyperfoil.io\/docs\/user-guide\/benchmark\/scenario\/","description":"Scenario Scenario is a set of sequences. The sequence is a block of sequentially executed steps. Contrary to steps in a sequence the sequences within a scenario do not need to be executed sequentially.\nThe scenario defines one or more initialSequences that are enabled from the beginning and other sequences that must be enabled by any of the previously executed sequences. To be more precise it is not the sequence that is enabled but a sequence instance as we can run a sequence multiple times in parallel (on different data)."},{"title":"Phases - advanced","link":"https:\/\/hyperfoil.io\/docs\/getting-started\/quickstart5\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/hyperfoil.io\/docs\/getting-started\/quickstart5\/","description":"Previous quickstart presented a benchmark with three phases that all started at the same moment (when the benchmark was started) and had the same duration - different phases represented different workflows (types of user). In this example we will adjust the benchmark to scale the load gradually up.\nAt this point it would be useful to mention the lifecycle of phases; phase is in one of these states:\nnot started: As the name clearly says, the phase is not yet started."},{"title":"Troubleshooting","link":"https:\/\/hyperfoil.io\/docs\/user-guide\/troubleshooting\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/hyperfoil.io\/docs\/user-guide\/troubleshooting\/","description":"It doesn&rsquo;t work. Can you help me? The first step to identifying any issue is getting a verbose log - setting logging level to TRACE. How exactly you do that depends on the way you deploy Hyperfoil:\nIf you use CLI and the start-local command, just run it as start-local -l TRACE which sets the default logging level. You&rsquo;ll find the log in \/tmp\/hyperfoil\/hyperfoil.local.log by default.\nIf you run Hyperfoil manually in standalone mode (non-clustered) the agent will run in the same JVM as the controller."},{"title":"Variables","link":"https:\/\/hyperfoil.io\/docs\/user-guide\/benchmark\/variables\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/hyperfoil.io\/docs\/user-guide\/benchmark\/variables\/","description":"All but the simplest scenarios will use session variables. Hyperfoil sports steps that generate values into these variables (randomInt, randomItem, &hellip;), processors that write data from other sources to variables (store, array) and many places that read variables and use the values to perform some operations (httpRequest.path ) or alter control flow.\nHyperfoil uses different types of variables (slots in the session) for integer variables and generic objects (commonly strings). When a numeric value is received as a string (e."},{"title":"Running the server","link":"https:\/\/hyperfoil.io\/docs\/getting-started\/quickstart6\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/hyperfoil.io\/docs\/getting-started\/quickstart6\/","description":"Until now we have always started our benchmarks using an embedded controller in the CLI, using the start-local command. This spawns a server in the CLI JVM. CLI communicates with it using standard REST API, though the server port is randomized and listens on localhost only. All the benchmarks and run results are also stored in \/tmp\/hyperfoil\/ - you can change the directory as an argument to the start-local command. While the embedded controller might be convenient for a quick test or when developing the scenario it&rsquo;s not something that you&rsquo;d use for a full-fledged benchmark."},{"title":"Templates","link":"https:\/\/hyperfoil.io\/docs\/user-guide\/benchmark\/templates\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/hyperfoil.io\/docs\/user-guide\/benchmark\/templates\/","description":"It is often useful to keep a single benchmark in version control but change parts of it depending on the infrastructure where it is executed or intended load. Since version 0.18 Hyperfoil supports parametrization of the benchmark through templates.\nInspired by other (more complex) YAML templating systems we decided to use YAML tags to pre-process the YAML. Templating happens even before applying the YAML nodes onto BenchmarkBuilder, therefore it is not possible to do that programmatically or with the serialized form."},{"title":"Clustered mode","link":"https:\/\/hyperfoil.io\/docs\/getting-started\/quickstart7\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/hyperfoil.io\/docs\/getting-started\/quickstart7\/","description":"Previously we&rsquo;ve learned to start Hyperfoil in standalone server mode, and to do some runs through CLI. In this quickstart we&rsquo;ll see how to run your benchmark distributed to several agent nodes.\nHyperfoil operates as a cluster of Vert.x. When the benchmark is started, it deploys agents on other nodes according to the benchmark configuration - these are Vert.x nodes, too. Together controller and agents form a cluster and communicate over the event bus."},{"title":"Extensions","link":"https:\/\/hyperfoil.io\/docs\/extensions\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/hyperfoil.io\/docs\/extensions\/","description":"You have probably already read the Custom steps and handlers quickstart which shows how to create a simple component. It can get more tricky when the component embeds other components, though.\nThe build of scenario happens in two phases. In first phase the sequences, steps and components call method prepareBuild(). Most often that method uses the default (empty) implementation, but if your component (e.g. custom step) embeds another one (e.g. instance of a Processor) it should call its prepareBuild() method, too."},{"title":"Hooks","link":"https:\/\/hyperfoil.io\/docs\/user-guide\/benchmark\/hooks\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/hyperfoil.io\/docs\/user-guide\/benchmark\/hooks\/","description":"It might be useful to run certain scripts before and after the run, e.g. starting some infrastructure, preloading database, gathering CPU stats during the test and so on. That&rsquo;s why Hyperfoil introduces pre- and post-hooks to the run.\nSome scripts are not specific to the test being run - these should be deployed on controller as files in *root*\/hooks\/pre\/ and *root*\/hooks\/post directories where root is controller&rsquo;s root directory, \/tmp\/hyperfoil\/ by default."},{"title":"Custom components","link":"https:\/\/hyperfoil.io\/docs\/getting-started\/quickstart8\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/hyperfoil.io\/docs\/getting-started\/quickstart8\/","description":"Hyperfoil offers some basic steps to do HTTP requests, generate data, alter control flow in the scenario etc., but your needs may surpass the features implemented so far. Also, it might be just easier to express your logic in Java code than combining steps in the YAML. The downside is reduced ability to reuse and more tight dependency on Hyperfoil APIs.\nThis quickstart will show you how to extend Hyperfoil with custom steps and handlers."},{"title":"Ergonomics","link":"https:\/\/hyperfoil.io\/docs\/user-guide\/benchmark\/ergonomics\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/hyperfoil.io\/docs\/user-guide\/benchmark\/ergonomics\/","description":"Ergonomics properties control automatic behaviors applied to HTTP requests:\nProperty Default Description repeatCookies true Automatically parse cookies from HTTP responses, store them in session and resend them with subsequent requests. userAgentFromSession true Add user-agent header to each request, holding the agent name and session id. autoRangeCheck true Mark 4xx and 5xx responses as invalid. You can also turn this off in each step. stopOnInvalid true When the session receives an invalid response it does not execute any further steps, cancelling all requests and stopping immediately."},{"title":"Architecture","link":"https:\/\/hyperfoil.io\/docs\/architecture\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/hyperfoil.io\/docs\/architecture\/","description":"While we have already explained basic concepts in the benchmark and last quickstart shows how to create a custom steps or handlers here we will show how Hyperfoil internally works and give you better idea how to create non-trivial extensions.\nBuilding the scenario The road from a YAML file to executing the benchmark starts with creating the builder tree. Either the CLI or controller presents this file to the parser (mostly classes from the io."},{"title":"Beginner's Guide to Hyperfoil: part 3","link":"https:\/\/hyperfoil.io\/blog\/news\/2021-02-16-hf-beginner-guide-3\/","pubDate":"Tue, 16 Feb 2021 00:00:00 +0000","guid":"https:\/\/hyperfoil.io\/blog\/news\/2021-02-16-hf-beginner-guide-3\/","description":"In this article we&rsquo;ll show how to run Hyperfoil inside an Openshift cluster, benchmarking workload within the same cluster. This assumes that you have sufficient privileges to install operators and create new namespaces (projects).\nDemo workload We will install Vehicle Market, our demo application we&rsquo;ve used in the first article using console and Openshift Template.\nLogin into your cluster and run this:\n# Fetch the default domain your cluster uses export DOMAIN=$(oc get ingresscontrollers."},{"title":"Beginner's Guide to Hyperfoil: part 2","link":"https:\/\/hyperfoil.io\/blog\/news\/2021-02-09-hf-beginner-guide-2\/","pubDate":"Tue, 09 Feb 2021 00:00:00 +0000","guid":"https:\/\/hyperfoil.io\/blog\/news\/2021-02-09-hf-beginner-guide-2\/","description":"This article is intended to be published on other sites, too - therefore it contains introduction to concepts this blog\u2019s readers are probably familiar with.\nIn the previous part we&rsquo;ve deployed our demo application (Vehicle Market) and exercised some basic requests against that. In this post we will focus on processing responses and user workflow through the site.\nProcessing responses We will start with a benchmark that fetches single random page with an offering, without the HTML resources part for brevity:"},{"title":"Beginner's Guide to Hyperfoil: part 1","link":"https:\/\/hyperfoil.io\/blog\/news\/2021-01-25-hf-beginner-guide-1\/","pubDate":"Mon, 25 Jan 2021 00:00:00 +0000","guid":"https:\/\/hyperfoil.io\/blog\/news\/2021-01-25-hf-beginner-guide-1\/","description":"TLDR You&rsquo;ll learn how to write a simple Hyperfoil benchmark and run it straight from the CLI.\nThis article is intended to be published on other sites, too - therefore it contains introduction to concepts this blog&rsquo;s readers are probably familiar with.\nIntroduction Meet Hyperfoil, a swiss-army knife of web benchmark driver. This is an opensource (ASL2.0) tool that sports a set of properties that we could not find in any of the existing load drivers:"},{"title":"Compensation for coordinated omission","link":"https:\/\/hyperfoil.io\/blog\/news\/2020-12-9-compensation\/","pubDate":"Wed, 09 Dec 2020 00:00:00 +0000","guid":"https:\/\/hyperfoil.io\/blog\/news\/2020-12-9-compensation\/","description":"Results for closed-model tests show maximum throughput your SUT can achieve; the response times are skewed though due to the coordinated omission. There are still cases where you&rsquo;d like to run in this mode and check the size of the error you&rsquo;re accumulating.\nMany benchmarks use closed-model with fixed concurrency and cycle-time, expecting the request to be fired every X milliseconds. When the requests fall behind in schedule due to some requests taking more than this period (cycle-time) the subsequent requests are fired as quickly as possible to catch up."},{"title":"Fetch embedded resources","link":"https:\/\/hyperfoil.io\/blog\/news\/2020-11-16-fetch-embedded\/","pubDate":"Mon, 16 Nov 2020 00:00:00 +0000","guid":"https:\/\/hyperfoil.io\/blog\/news\/2020-11-16-fetch-embedded\/","description":"When browsing a website it&rsquo;s not only the main page the webserver needs to serve - usually there are static resources such as images, stylesheets, scripts and more. Hyperfoil can automatically download these.\nHyperfoil implements a non-allocating HTML parser, with a pre-baked onEmbeddedResource handler: This selects HTML tags with appropriate attributes that represent an URL:\nImages: &lt;img src=&quot;...&quot;&gt; Stylesheets: &lt;link href=&quot;...&quot;&gt; Scripts: &lt;script src=&quot;...&quot;&gt; Embedded media: &lt;embed src=&quot;...&quot;&gt;, &lt;object data=&quot;...&quot;&gt; Frames: &lt;frame src=&quot;."},{"title":"Automatic follow of redirects","link":"https:\/\/hyperfoil.io\/blog\/news\/2020-11-16-follow-redirect\/","pubDate":"Mon, 16 Nov 2020 00:00:00 +0000","guid":"https:\/\/hyperfoil.io\/blog\/news\/2020-11-16-follow-redirect\/","description":"Hyperfoil is trying to imitate how users will hit your site with requests as realistically as possible. Therefore it supports one of the browser features: redirections.\nThere are two ways how webservers tell browsers where to fetch another page: HTTP-level redirects where the server returns status 3xx and the new URL in the Location header, and HTML with &lt;meta http-equiv=&quot;refresh&quot; content=&quot;5; url=http:\/\/example.com&quot; \/&gt;. The webpage can also use Javascript to switch to another page but Hyperfoil is not interpretting any Javascript."},{"title":"addItem","link":"https:\/\/hyperfoil.io\/docs\/reference\/actions\/action_additem\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/hyperfoil.io\/docs\/reference\/actions\/action_additem\/","description":"Appends value to an array stored in another variable.\nProperty Type Description fromVar String Fetch value from session variable. toVar String Destination variable with the array. value String Verbatim value."},{"title":"addItem","link":"https:\/\/hyperfoil.io\/docs\/reference\/processors\/processor_additem\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/hyperfoil.io\/docs\/reference\/processors\/processor_additem\/","description":"Appends value to an array stored in another variable.\nProperty Type Description fromVar String Fetch value from session variable. toVar String Destination variable with the array. value String Verbatim value."},{"title":"addItem","link":"https:\/\/hyperfoil.io\/docs\/reference\/steps\/step_additem\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/hyperfoil.io\/docs\/reference\/steps\/step_additem\/","description":"Appends value to an array stored in another variable.\nProperty Type Description fromVar String Fetch value from session variable. toVar String Destination variable with the array. value String Verbatim value."},{"title":"addToInt","link":"https:\/\/hyperfoil.io\/docs\/reference\/actions\/action_addtoint\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/hyperfoil.io\/docs\/reference\/actions\/action_addtoint\/","description":"Add value to integer variable in the session.\nInline definition Accepting one of: var++, var&ndash;, var += value, var -= value. Property Type Description orElseSetTo int If the variable is currently not set, set it to this value instead of addition. value int Value added (can be negative). var String Variable name."},{"title":"addToInt","link":"https:\/\/hyperfoil.io\/docs\/reference\/processors\/processor_addtoint\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/hyperfoil.io\/docs\/reference\/processors\/processor_addtoint\/","description":"Add value to integer variable in the session.\nInline definition Accepting one of: var++, var&ndash;, var += value, var -= value. Property Type Description orElseSetTo int If the variable is currently not set, set it to this value instead of addition. value int Value added (can be negative). var String Variable name."},{"title":"addToInt","link":"https:\/\/hyperfoil.io\/docs\/reference\/steps\/step_addtoint\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/hyperfoil.io\/docs\/reference\/steps\/step_addtoint\/","description":"Add value to integer variable in the session.\nInline definition Accepting one of: var++, var&ndash;, var += value, var -= value. Property Type Description orElseSetTo int If the variable is currently not set, set it to this value instead of addition. value int Value added (can be negative). var String Variable name."},{"title":"addToSharedCounter","link":"https:\/\/hyperfoil.io\/docs\/reference\/actions\/action_addtosharedcounter\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/hyperfoil.io\/docs\/reference\/actions\/action_addtosharedcounter\/","description":"Adds value to a counter shared by all sessions in the same executor.\nInline definition Use on of: counter++, counter&ndash;, counter += &lt;value&gt;, counter -= &lt;value&gt; Property Type Description fromVar String Input variable name. key String Identifier for the counter. operator enum Operation to perform on the counter. Default is ADD.\nOptions:ADDSUBTRACT value int Value (integer)."},{"title":"addToSharedCounter","link":"https:\/\/hyperfoil.io\/docs\/reference\/processors\/processor_addtosharedcounter\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/hyperfoil.io\/docs\/reference\/processors\/processor_addtosharedcounter\/","description":"Adds value to a counter shared by all sessions in the same executor.\nInline definition Use on of: counter++, counter&ndash;, counter += &lt;value&gt;, counter -= &lt;value&gt; Property Type Description fromVar String Input variable name. key String Identifier for the counter. operator enum Operation to perform on the counter. Default is ADD.\nOptions:ADDSUBTRACT value int Value (integer)."},{"title":"addToSharedCounter","link":"https:\/\/hyperfoil.io\/docs\/reference\/steps\/step_addtosharedcounter\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/hyperfoil.io\/docs\/reference\/steps\/step_addtosharedcounter\/","description":"Adds value to a counter shared by all sessions in the same executor.\nInline definition Use on of: counter++, counter&ndash;, counter += &lt;value&gt;, counter -= &lt;value&gt; Property Type Description fromVar String Input variable name. key String Identifier for the counter. operator enum Operation to perform on the counter. Default is ADD.\nOptions:ADDSUBTRACT value int Value (integer)."},{"title":"array","link":"https:\/\/hyperfoil.io\/docs\/reference\/processors\/processor_array\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/hyperfoil.io\/docs\/reference\/processors\/processor_array\/","description":"Stores data in an array stored as session variable.\nInline definition Use format toVar[maxSize]. Property Type Description format enum Format into which should this processor convert the buffers before storing. Default is STRING.\nOptions:BYTEBUFStore the buffer directly. Beware that this may cause memory leaks!BYTESStore data as byte array.STRINGInterprets the bytes as UTF-8 string. maxSize int Maximum size of the array. silent boolean Do not log warnings when the maximum size is exceeded."},{"title":"awaitAllResponses","link":"https:\/\/hyperfoil.io\/docs\/reference\/steps\/step_awaitallresponses\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/hyperfoil.io\/docs\/reference\/steps\/step_awaitallresponses\/","description":"Block current sequence until all requests receive the response."},{"title":"awaitDelay","link":"https:\/\/hyperfoil.io\/docs\/reference\/steps\/step_awaitdelay\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/hyperfoil.io\/docs\/reference\/steps\/step_awaitdelay\/","description":"Block this sequence until referenced delay point.\nInline definition Delay point created in scheduleDelay.key. Property Type Description key String Delay point created in scheduleDelay.key."},{"title":"awaitInt","link":"https:\/\/hyperfoil.io\/docs\/reference\/steps\/step_awaitint\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/hyperfoil.io\/docs\/reference\/steps\/step_awaitint\/","description":"Block current sequence until condition becomes true.\nProperty Type Description equalTo Builder Compared variable must be equal to this value. greaterOrEqualTo Builder Compared variable must be greater or equal to this value. greaterThan Builder Compared variable must be greater than this value. lessOrEqualTo Builder Compared variable must be lower or equal to this value. lessThan Builder Compared variable must be lower than this value. notEqualTo Builder Compared variable must not be equal to this value."},{"title":"awaitVar","link":"https:\/\/hyperfoil.io\/docs\/reference\/steps\/step_awaitvar\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/hyperfoil.io\/docs\/reference\/steps\/step_awaitvar\/","description":"Block current sequence until this variable gets set\/unset.\nInline definition Variable name or !variable if we are waiting for it to be unset. Property Type Description var String Variable name or !variable if we are waiting for it to be unset."},{"title":"breakIfFinished","link":"https:\/\/hyperfoil.io\/docs\/reference\/steps\/step_breakiffinished\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/hyperfoil.io\/docs\/reference\/steps\/step_breakiffinished\/","description":"Stop execution of current sequence if the phase is in finished state.\nThis is useful for a long-running (looping) sequence that should not extend the duration of its phase."},{"title":"breakSequence","link":"https:\/\/hyperfoil.io\/docs\/reference\/steps\/step_breaksequence\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/hyperfoil.io\/docs\/reference\/steps\/step_breaksequence\/","description":"Prematurely stops execution of this sequence if the condition is satisfied.\nProperty Type Description allConditions Builder Condition combining multiple other conditions with &lsquo;AND&rsquo; logic. boolCondition Builder Condition comparing boolean variables. dependency String This step is blocked if this variable does not have set value (none by default). intCondition Builder Condition comparing integer variables. onBreak Action.Builder Action performed when the condition is true and the sequence is to be ended. stringCondition Builder Condition comparing string variables."},{"title":"clearHttpCache","link":"https:\/\/hyperfoil.io\/docs\/reference\/actions\/action_clearhttpcache\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/hyperfoil.io\/docs\/reference\/actions\/action_clearhttpcache\/","description":"Drops all entries from HTTP cache in the session."},{"title":"clearHttpCache","link":"https:\/\/hyperfoil.io\/docs\/reference\/processors\/processor_clearhttpcache\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/hyperfoil.io\/docs\/reference\/processors\/processor_clearhttpcache\/","description":"Drops all entries from HTTP cache in the session."},{"title":"clearHttpCache","link":"https:\/\/hyperfoil.io\/docs\/reference\/steps\/step_clearhttpcache\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/hyperfoil.io\/docs\/reference\/steps\/step_clearhttpcache\/","description":"Drops all entries from HTTP cache in the session."},{"title":"closeConnection","link":"https:\/\/hyperfoil.io\/docs\/reference\/processors\/processor_closeconnection\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/hyperfoil.io\/docs\/reference\/processors\/processor_closeconnection\/","description":"Prevents reuse connection after the response has been handled."},{"title":"collection","link":"https:\/\/hyperfoil.io\/docs\/reference\/processors\/processor_collection\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/hyperfoil.io\/docs\/reference\/processors\/processor_collection\/","description":"Collects results of processor invocation into a unbounded list. WARNING: This processor should be used rarely as it allocates memory during the benchmark.\nInline definition Variable name to store the list. Property Type Description format enum Format into which should this processor convert the buffers before storing. Default is STRING.\nOptions:BYTEBUFStore the buffer directly. Beware that this may cause memory leaks!BYTESStore data as byte array.STRINGInterprets the bytes as UTF-8 string. toVar String Variable name."},{"title":"conditional","link":"https:\/\/hyperfoil.io\/docs\/reference\/actions\/action_conditional\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/hyperfoil.io\/docs\/reference\/actions\/action_conditional\/","description":"Perform an action or sequence of actions conditionally.\nProperty Type Description actions Action.Builder Actions that should be executed should the condition hold. allConditions Builder Condition combining multiple other conditions with &lsquo;AND&rsquo; logic. boolCondition Builder Condition comparing boolean variables. intCondition Builder Condition comparing integer variables. stringCondition Builder Condition comparing string variables. allConditions Test more conditions and combine the results using AND logic.\nProperty Type Description &lt;list of mappings&gt; &lt;list of builders&gt; List of conditions."},{"title":"conditional","link":"https:\/\/hyperfoil.io\/docs\/reference\/processors\/processor_conditional\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/hyperfoil.io\/docs\/reference\/processors\/processor_conditional\/","description":"Passes the data to nested processor if the condition holds. Note that the condition may be evaluated multiple times and therefore any nested processors should not change the results of the condition.\nProperty Type Description allConditions Builder Condition combining multiple other conditions with &lsquo;AND&rsquo; logic. boolCondition Builder Condition comparing boolean variables. intCondition Builder Condition comparing integer variables. processor Processor.Builder One or more processors that should be invoked if the condition holds."},{"title":"conditional","link":"https:\/\/hyperfoil.io\/docs\/reference\/steps\/step_conditional\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/hyperfoil.io\/docs\/reference\/steps\/step_conditional\/","description":"Perform an action or sequence of actions conditionally.\nProperty Type Description actions Action.Builder Actions that should be executed should the condition hold. allConditions Builder Condition combining multiple other conditions with &lsquo;AND&rsquo; logic. boolCondition Builder Condition comparing boolean variables. intCondition Builder Condition comparing integer variables. stringCondition Builder Condition comparing string variables. allConditions Test more conditions and combine the results using AND logic.\nProperty Type Description &lt;list of mappings&gt; &lt;list of builders&gt; List of conditions."},{"title":"count","link":"https:\/\/hyperfoil.io\/docs\/reference\/processors\/processor_count\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/hyperfoil.io\/docs\/reference\/processors\/processor_count\/","description":"Records number of parts this processor is invoked on.\nInline definition Name of variable for the number of occurrences. Property Type Description toVar String Variable where to store number of occurrences."},{"title":"fail","link":"https:\/\/hyperfoil.io\/docs\/reference\/actions\/action_fail\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/hyperfoil.io\/docs\/reference\/actions\/action_fail\/","description":"Fail the phase with given message. Used mostly for testing\/debugging.\nInline definition Message to fail with (unconditionally). Property Type Description allConditions Builder Condition combining multiple other conditions with &lsquo;AND&rsquo; logic. boolCondition Builder Condition comparing boolean variables. intCondition Builder Condition comparing integer variables. message String Message attached to the failure exception. stringCondition Builder Condition comparing string variables. allConditions Test more conditions and combine the results using AND logic.\nProperty Type Description &lt;list of mappings&gt; &lt;list of builders&gt; List of conditions."},{"title":"fail","link":"https:\/\/hyperfoil.io\/docs\/reference\/processors\/processor_fail\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/hyperfoil.io\/docs\/reference\/processors\/processor_fail\/","description":"Fail the phase with given message. Used mostly for testing\/debugging.\nInline definition Message to fail with (unconditionally). Property Type Description allConditions Builder Condition combining multiple other conditions with &lsquo;AND&rsquo; logic. boolCondition Builder Condition comparing boolean variables. intCondition Builder Condition comparing integer variables. message String Message attached to the failure exception. stringCondition Builder Condition comparing string variables. allConditions Test more conditions and combine the results using AND logic.\nProperty Type Description &lt;list of mappings&gt; &lt;list of builders&gt; List of conditions."},{"title":"fail","link":"https:\/\/hyperfoil.io\/docs\/reference\/steps\/step_fail\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/hyperfoil.io\/docs\/reference\/steps\/step_fail\/","description":"Fail the phase with given message. Used mostly for testing\/debugging.\nInline definition Message to fail with (unconditionally). Property Type Description allConditions Builder Condition combining multiple other conditions with &lsquo;AND&rsquo; logic. boolCondition Builder Condition comparing boolean variables. intCondition Builder Condition comparing integer variables. message String Message attached to the failure exception. stringCondition Builder Condition comparing string variables. allConditions Test more conditions and combine the results using AND logic.\nProperty Type Description &lt;list of mappings&gt; &lt;list of builders&gt; List of conditions."},{"title":"foreach","link":"https:\/\/hyperfoil.io\/docs\/reference\/steps\/step_foreach\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/hyperfoil.io\/docs\/reference\/steps\/step_foreach\/","description":"Instantiate new sequences based on array variable content.\nProperty Type Description counterVar String Variable to be set to the number of created sequences (optional). dependency String This step is blocked if this variable does not have set value (none by default). fromVar String Variable holding the array. sequence String Name of the instantiated sequence."},{"title":"getIndex","link":"https:\/\/hyperfoil.io\/docs\/reference\/actions\/action_getindex\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/hyperfoil.io\/docs\/reference\/actions\/action_getindex\/","description":"Lookup index of an item in an array\/collection.\nProperty Type Description collection String Variable to fetch the collection from. item Builder Item that should be looked up (using equality). toVar String Integer variable to store the index, or -1 if the item is not found. item Inline definition Verbatim value. Property Type Description fromVar String Fetch value from session variable. value String Verbatim value."},{"title":"getIndex","link":"https:\/\/hyperfoil.io\/docs\/reference\/processors\/processor_getindex\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/hyperfoil.io\/docs\/reference\/processors\/processor_getindex\/","description":"Lookup index of an item in an array\/collection.\nProperty Type Description collection String Variable to fetch the collection from. item Builder Item that should be looked up (using equality). toVar String Integer variable to store the index, or -1 if the item is not found. item Inline definition Verbatim value. Property Type Description fromVar String Fetch value from session variable. value String Verbatim value."},{"title":"getIndex","link":"https:\/\/hyperfoil.io\/docs\/reference\/steps\/step_getindex\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/hyperfoil.io\/docs\/reference\/steps\/step_getindex\/","description":"Lookup index of an item in an array\/collection.\nProperty Type Description collection String Variable to fetch the collection from. item Builder Item that should be looked up (using equality). toVar String Integer variable to store the index, or -1 if the item is not found. item Inline definition Verbatim value. Property Type Description fromVar String Fetch value from session variable. value String Verbatim value."},{"title":"getItem","link":"https:\/\/hyperfoil.io\/docs\/reference\/actions\/action_getitem\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/hyperfoil.io\/docs\/reference\/actions\/action_getitem\/","description":"Retrieves n-th item from an array or collection.\nProperty Type Description fromVar String Source variable with an array or list. index Builder Source for index into the array\/list. toVar String Destination variable for the n-th element. index Inline definition Uses the argument as a constant value. Property Type Description fromVar String Input variable name. value int Value (integer)."},{"title":"getItem","link":"https:\/\/hyperfoil.io\/docs\/reference\/processors\/processor_getitem\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/hyperfoil.io\/docs\/reference\/processors\/processor_getitem\/","description":"Retrieves n-th item from an array or collection.\nProperty Type Description fromVar String Source variable with an array or list. index Builder Source for index into the array\/list. toVar String Destination variable for the n-th element. index Inline definition Uses the argument as a constant value. Property Type Description fromVar String Input variable name. value int Value (integer)."},{"title":"getItem","link":"https:\/\/hyperfoil.io\/docs\/reference\/steps\/step_getitem\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/hyperfoil.io\/docs\/reference\/steps\/step_getitem\/","description":"Retrieves n-th item from an array or collection.\nProperty Type Description fromVar String Source variable with an array or list. index Builder Source for index into the array\/list. toVar String Destination variable for the n-th element. index Inline definition Uses the argument as a constant value. Property Type Description fromVar String Input variable name. value int Value (integer)."},{"title":"getSharedCounter","link":"https:\/\/hyperfoil.io\/docs\/reference\/actions\/action_getsharedcounter\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/hyperfoil.io\/docs\/reference\/actions\/action_getsharedcounter\/","description":"Retrieves value from a counter shared by all sessions in the same executor and stores that in a session variable. If the value exceeds allowed integer range (-2^31 .. 2^31 - 1) it is capped.\nInline definition Both the key and variable name. Property Type Description key String Identifier for the counter. toVar String Session variable for storing the value."},{"title":"getSharedCounter","link":"https:\/\/hyperfoil.io\/docs\/reference\/processors\/processor_getsharedcounter\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/hyperfoil.io\/docs\/reference\/processors\/processor_getsharedcounter\/","description":"Retrieves value from a counter shared by all sessions in the same executor and stores that in a session variable. If the value exceeds allowed integer range (-2^31 .. 2^31 - 1) it is capped.\nInline definition Both the key and variable name. Property Type Description key String Identifier for the counter. toVar String Session variable for storing the value."},{"title":"getSharedCounter","link":"https:\/\/hyperfoil.io\/docs\/reference\/steps\/step_getsharedcounter\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/hyperfoil.io\/docs\/reference\/steps\/step_getsharedcounter\/","description":"Retrieves value from a counter shared by all sessions in the same executor and stores that in a session variable. If the value exceeds allowed integer range (-2^31 .. 2^31 - 1) it is capped.\nInline definition Both the key and variable name. Property Type Description key String Identifier for the counter. toVar String Session variable for storing the value."},{"title":"getSize","link":"https:\/\/hyperfoil.io\/docs\/reference\/actions\/action_getsize\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/hyperfoil.io\/docs\/reference\/actions\/action_getsize\/","description":"Calculates size of an array\/collection held in variable into another variable\nProperty Type Description boolFilter Builder Count only items matching the condition. fromVar String Variable holding the collection. intFilter Builder Count only items matching the condition. stringFilter Builder Count only items matching the condition. toVar String Variable storing the size. undefinedValue int Value to use when fromVar is unset or it does not contain any array\/collection. boolFilter Property Type Description value boolean Expected value."},{"title":"getSize","link":"https:\/\/hyperfoil.io\/docs\/reference\/processors\/processor_getsize\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/hyperfoil.io\/docs\/reference\/processors\/processor_getsize\/","description":"Calculates size of an array\/collection held in variable into another variable\nProperty Type Description boolFilter Builder Count only items matching the condition. fromVar String Variable holding the collection. intFilter Builder Count only items matching the condition. stringFilter Builder Count only items matching the condition. toVar String Variable storing the size. undefinedValue int Value to use when fromVar is unset or it does not contain any array\/collection. boolFilter Property Type Description value boolean Expected value."},{"title":"getSize","link":"https:\/\/hyperfoil.io\/docs\/reference\/steps\/step_getsize\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/hyperfoil.io\/docs\/reference\/steps\/step_getsize\/","description":"Calculates size of an array\/collection held in variable into another variable\nProperty Type Description boolFilter Builder Count only items matching the condition. fromVar String Variable holding the collection. intFilter Builder Count only items matching the condition. stringFilter Builder Count only items matching the condition. toVar String Variable storing the size. undefinedValue int Value to use when fromVar is unset or it does not contain any array\/collection. boolFilter Property Type Description value boolean Expected value."},{"title":"gzipInflator","link":"https:\/\/hyperfoil.io\/docs\/reference\/processors\/processor_gzipinflator\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/hyperfoil.io\/docs\/reference\/processors\/processor_gzipinflator\/","description":"Decompresses a GZIP data and pipes the output to delegated processors. If the data contains multiple concatenated GZIP streams it will pipe multiple decompressed objects with isLastPart set to true at the end of each stream.\nProperty Type Description encodingVar Object Variable used to pass header value from header handlers. processor Processor.Builder Add one or more processors."},{"title":"hotrodRequest","link":"https:\/\/hyperfoil.io\/docs\/reference\/steps\/step_hotrodrequest\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/hyperfoil.io\/docs\/reference\/steps\/step_hotrodrequest\/","description":"Issues a HotRod request and registers handlers for the response.\nProperty Type Description cacheName String Name of the cache used for the operation. This can be a pattern. cacheName (alternative) Builder &lt;no description&gt; get String Get specified entry in the remote cache. key String Key used for the operation. This can be a pattern. key (alternative) Builder &lt;no description&gt; metric String Requests statistics will use this metric name. metric (alternative) &lt;list of strings&gt; Allows categorizing request statistics into metrics based on the request path."},{"title":"httpRequest","link":"https:\/\/hyperfoil.io\/docs\/reference\/steps\/step_httprequest\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/hyperfoil.io\/docs\/reference\/steps\/step_httprequest\/","description":"Issues a HTTP request and registers handlers for the response.\nProperty Type Description authority String HTTP authority (host:port) this request should target. Must match one of the entries in http section. The string can use string interpolation. authority (alternative) Builder HTTP authority (host:port) this request should target. Must match one of the entries in http section. body Builder HTTP request body. body (alternative) String HTTP request body (possibly a pattern). compensation Builder Configures additional metric compensated for coordinated omission."},{"title":"json","link":"https:\/\/hyperfoil.io\/docs\/reference\/processors\/processor_json\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/hyperfoil.io\/docs\/reference\/processors\/processor_json\/","description":"Parses JSON responses using simple queries.\nProperty Type Description delete boolean If this is set to true, the selected key will be deleted from the JSON and the modified JSON will be passed to the processor. format enum Conversion to apply on the matching parts with &rsquo;toVar&rsquo; or &rsquo;toArray&rsquo; shortcuts.\nOptions:BYTEBUFStore the buffer directly. Beware that this may cause memory leaks!BYTESStore data as byte array.STRINGInterprets the bytes as UTF-8 string. processor Processor."},{"title":"json","link":"https:\/\/hyperfoil.io\/docs\/reference\/steps\/step_json\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/hyperfoil.io\/docs\/reference\/steps\/step_json\/","description":"Parse JSON in variable into another variable.\nProperty Type Description delete boolean If this is set to true, the selected key will be deleted from the JSON and the modified JSON will be passed to the processor. format enum Conversion to apply on the matching parts with &rsquo;toVar&rsquo; or &rsquo;toArray&rsquo; shortcuts.\nOptions:BYTEBUFStore the buffer directly. Beware that this may cause memory leaks!BYTESStore data as byte array.STRINGInterprets the bytes as UTF-8 string."},{"title":"log","link":"https:\/\/hyperfoil.io\/docs\/reference\/actions\/action_log\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/hyperfoil.io\/docs\/reference\/actions\/action_log\/","description":"Log a message and variable values.\nInline definition A pattern for string interpolation. Property Type Description message String Message format pattern. Use string interpolation for variables."},{"title":"log","link":"https:\/\/hyperfoil.io\/docs\/reference\/processors\/processor_log\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/hyperfoil.io\/docs\/reference\/processors\/processor_log\/","description":"Log a message and variable values.\nInline definition A pattern for string interpolation. Property Type Description message String Message format pattern. Use string interpolation for variables."},{"title":"log","link":"https:\/\/hyperfoil.io\/docs\/reference\/steps\/step_log\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/hyperfoil.io\/docs\/reference\/steps\/step_log\/","description":"Log a message and variable values.\nInline definition A pattern for string interpolation. Property Type Description message String Message format pattern. Use string interpolation for variables."},{"title":"logInvalid","link":"https:\/\/hyperfoil.io\/docs\/reference\/processors\/processor_loginvalid\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/hyperfoil.io\/docs\/reference\/processors\/processor_loginvalid\/","description":"Logs body chunks from requests marked as invalid."},{"title":"loop","link":"https:\/\/hyperfoil.io\/docs\/reference\/steps\/step_loop\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/hyperfoil.io\/docs\/reference\/steps\/step_loop\/","description":"Repeats a set of steps fixed number of times.\nThis step is supposed to be inserted as the first step of a sequence and the counterVar should not be set during the first invocation.\nBefore the loop the counterVar is initialized to zero, and in each after the last step in the steps sequence the counter is incremented. If the result is lesser than repeats this sequence is restarted from the beginning (this is also why the step must be the first step in the sequence)."},{"title":"markRequestInvalid","link":"https:\/\/hyperfoil.io\/docs\/reference\/actions\/action_markrequestinvalid\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/hyperfoil.io\/docs\/reference\/actions\/action_markrequestinvalid\/","description":"Unconditionally mark currently processed request as invalid."},{"title":"markRequestInvalid","link":"https:\/\/hyperfoil.io\/docs\/reference\/processors\/processor_markrequestinvalid\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/hyperfoil.io\/docs\/reference\/processors\/processor_markrequestinvalid\/","description":"Unconditionally mark currently processed request as invalid."},{"title":"markRequestInvalid","link":"https:\/\/hyperfoil.io\/docs\/reference\/steps\/step_markrequestinvalid\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/hyperfoil.io\/docs\/reference\/steps\/step_markrequestinvalid\/","description":"Unconditionally mark currently processed request as invalid."},{"title":"newSequence","link":"https:\/\/hyperfoil.io\/docs\/reference\/actions\/action_newsequence\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/hyperfoil.io\/docs\/reference\/actions\/action_newsequence\/","description":"Instantiates a sequence for each invocation.\nInline definition Sequence name. Property Type Description concurrencyPolicy enum Options:FAILWARN forceSameIndex boolean Forces that the sequence will have the same index as the currently executing sequence. This can be useful if the sequence is passing some data to the new sequence using sequence-scoped variables. Note that the new sequence must have same concurrency factor as the currently executing sequence. sequence String Name of the instantiated sequence."},{"title":"newSequence","link":"https:\/\/hyperfoil.io\/docs\/reference\/processors\/processor_newsequence\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/hyperfoil.io\/docs\/reference\/processors\/processor_newsequence\/","description":"Instantiates a sequence for each invocation.\nInline definition Sequence name. Property Type Description concurrencyPolicy enum Options:FAILWARN forceSameIndex boolean Forces that the sequence will have the same index as the currently executing sequence. This can be useful if the sequence is passing some data to the new sequence using sequence-scoped variables. Note that the new sequence must have same concurrency factor as the currently executing sequence. sequence String Name of the instantiated sequence."},{"title":"newSequence","link":"https:\/\/hyperfoil.io\/docs\/reference\/steps\/step_newsequence\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/hyperfoil.io\/docs\/reference\/steps\/step_newsequence\/","description":"Instantiates a sequence for each invocation.\nInline definition Sequence name. Property Type Description concurrencyPolicy enum Options:FAILWARN forceSameIndex boolean Forces that the sequence will have the same index as the currently executing sequence. This can be useful if the sequence is passing some data to the new sequence using sequence-scoped variables. Note that the new sequence must have same concurrency factor as the currently executing sequence. sequence String Name of the instantiated sequence."},{"title":"noop","link":"https:\/\/hyperfoil.io\/docs\/reference\/steps\/step_noop\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/hyperfoil.io\/docs\/reference\/steps\/step_noop\/","description":"Does nothing. Only for demonstration purposes."},{"title":"parseHtml","link":"https:\/\/hyperfoil.io\/docs\/reference\/processors\/processor_parsehtml\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/hyperfoil.io\/docs\/reference\/processors\/processor_parsehtml\/","description":"Parses HTML tags and invokes handlers based on criteria.\nProperty Type Description onEmbeddedResource Builder Handler firing upon reference to other resource, e.g. image, stylesheet&hellip; onTagAttribute Builder &lt;no description&gt; onEmbeddedResource Handles &lt;img src=&quot;&hellip;&quot;&gt;, &lt;link href=&quot;&hellip;&quot;&gt;, &lt;embed src=&quot;&hellip;&quot;&gt;, &lt;frame src=&quot;&hellip;&quot;&gt;, &lt;iframe src=&quot;&hellip;&quot;&gt;, &lt;object data=&quot;&hellip;&quot;&gt; and &lt;script src=&quot;&hellip;&quot;&gt;.\nDoes not handle &lt;source src=&quot;&hellip;&quot;&gt; or &lt;track src=&quot;&hellip;&quot;&gt; because browser would choose only one of the options.\nProperty Type Description fetchResource Builder Automatically download referenced resource."},{"title":"publishAgentData","link":"https:\/\/hyperfoil.io\/docs\/reference\/actions\/action_publishagentdata\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/hyperfoil.io\/docs\/reference\/actions\/action_publishagentdata\/","description":"Makes the data available to all sessions in the same agent, including those using different executors.\nInline definition Both name of source variable and the key used to read the data. Property Type Description fromVar String Source session variable name. name String Arbitrary unique identifier for the data."},{"title":"publishAgentData","link":"https:\/\/hyperfoil.io\/docs\/reference\/processors\/processor_publishagentdata\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/hyperfoil.io\/docs\/reference\/processors\/processor_publishagentdata\/","description":"Makes the data available to all sessions in the same agent, including those using different executors.\nInline definition Both name of source variable and the key used to read the data. Property Type Description fromVar String Source session variable name. name String Arbitrary unique identifier for the data."},{"title":"publishAgentData","link":"https:\/\/hyperfoil.io\/docs\/reference\/steps\/step_publishagentdata\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/hyperfoil.io\/docs\/reference\/steps\/step_publishagentdata\/","description":"Makes the data available to all sessions in the same agent, including those using different executors.\nInline definition Both name of source variable and the key used to read the data. Property Type Description fromVar String Source session variable name. name String Arbitrary unique identifier for the data."},{"title":"publishGlobalCounters","link":"https:\/\/hyperfoil.io\/docs\/reference\/actions\/action_publishglobalcounters\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/hyperfoil.io\/docs\/reference\/actions\/action_publishglobalcounters\/","description":"Gathers values from session variables and publishes them globally (to all agents). You can name the counters individually (example 1) or use the variable names (example 2): &lt;code&gt; # Example 1: - publishGlobalCounters: key: myKey vars: [ foo, bar ] # Example 2: - publishGlobalCounters: key: someOtherKey vars: - foo: myFoo - bar: bbb &lt;\/code&gt; Property Type Description key String Identifier of the global record. vars Builder List of names and session variables."},{"title":"publishGlobalCounters","link":"https:\/\/hyperfoil.io\/docs\/reference\/processors\/processor_publishglobalcounters\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/hyperfoil.io\/docs\/reference\/processors\/processor_publishglobalcounters\/","description":"Gathers values from session variables and publishes them globally (to all agents). You can name the counters individually (example 1) or use the variable names (example 2): &lt;code&gt; # Example 1: - publishGlobalCounters: key: myKey vars: [ foo, bar ] # Example 2: - publishGlobalCounters: key: someOtherKey vars: - foo: myFoo - bar: bbb &lt;\/code&gt; Property Type Description key String Identifier of the global record. vars Builder List of names and session variables."},{"title":"publishGlobalCounters","link":"https:\/\/hyperfoil.io\/docs\/reference\/steps\/step_publishglobalcounters\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/hyperfoil.io\/docs\/reference\/steps\/step_publishglobalcounters\/","description":"Gathers values from session variables and publishes them globally (to all agents). You can name the counters individually (example 1) or use the variable names (example 2): &lt;code&gt; # Example 1: - publishGlobalCounters: key: myKey vars: [ foo, bar ] # Example 2: - publishGlobalCounters: key: someOtherKey vars: - foo: myFoo - bar: bbb &lt;\/code&gt; Property Type Description key String Identifier of the global record. vars Builder List of names and session variables."},{"title":"pullSharedMap","link":"https:\/\/hyperfoil.io\/docs\/reference\/steps\/step_pullsharedmap\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/hyperfoil.io\/docs\/reference\/steps\/step_pullsharedmap\/","description":"Move values from a map shared across all sessions using the same executor into session variables.\nThe executor can host multiple shared maps, each holding an entry with several variables. This step moves variables from either a random entry (if no match is set) or with an entry that has the same value for given variable as the current session. When data is moved to the current session the entry is dropped from the shared map."},{"title":"pushSharedMap","link":"https:\/\/hyperfoil.io\/docs\/reference\/steps\/step_pushsharedmap\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/hyperfoil.io\/docs\/reference\/steps\/step_pushsharedmap\/","description":"Store values from session variables into a map shared across all sessions using the same executor into session variables.\nThe executor can host multiple shared maps, each holding an entry with several variables. This step creates one entry in the map, copying values from session variables into the entry.\nProperty Type Description key String Key identifying the shared map. vars &lt;list of strings&gt; List of variable names that should be stored in the entry."},{"title":"queue","link":"https:\/\/hyperfoil.io\/docs\/reference\/processors\/processor_queue\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/hyperfoil.io\/docs\/reference\/processors\/processor_queue\/","description":"Stores defragmented data in a queue. For each item in the queue a new sequence instance will be started (subject the concurrency constraints) with sequence index that allows it to read an object from an array using sequence-scoped access.\nProperty Type Description concurrency int Maximum number of started sequences that can be running at one moment. format enum Conversion format from byte buffers. Default format is STRING.\nOptions:BYTEBUFStore the buffer directly."},{"title":"randomCsvRow","link":"https:\/\/hyperfoil.io\/docs\/reference\/steps\/step_randomcsvrow\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/hyperfoil.io\/docs\/reference\/steps\/step_randomcsvrow\/","description":"Stores random row from a CSV-formatted file to variables.\nProperty Type Description columns Builder Defines mapping from columns to session variables. file String Path to the CSV file that should be loaded. separator char Set character used for column separation. By default it is comma (,). skipComments boolean Skip lines starting with character &lsquo;#&rsquo;. By default set to false. columns Property Type Description &lt;any&gt; String Use 0-based column as the key and variable name as the value."},{"title":"randomFile","link":"https:\/\/hyperfoil.io\/docs\/reference\/steps\/step_randomfile\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/hyperfoil.io\/docs\/reference\/steps\/step_randomfile\/","description":"Reads bytes from a randomly chosen file into a variable. Two formats are supported: Example 1 - without weights: toVar: myVar files: - \/path\/to\/file1.txt - file2_relative_to_benchmark.txt Example 2 - with weights (the second file will be returned twice as often): toVar: myVar files: \/path\/to\/file1.txt: 1 file2_relative_to_benchmark.txt: 2 Property Type Description filenameVar String Optional variable to store the filename of the random file. files Builder Potentially weighted list of files to choose from."},{"title":"randomInt","link":"https:\/\/hyperfoil.io\/docs\/reference\/steps\/step_randomint\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/hyperfoil.io\/docs\/reference\/steps\/step_randomint\/","description":"Stores random (linearly distributed) integer into session variable.\nProperty Type Description max Builder Highest possible value (inclusive). Default is Integer.MAX_VALUE. min Builder Lowest possible value (inclusive). Default is 0. toVar String Variable name to store the result. max Inline definition Constant value. Property Type Description fromVar String Initialize with a value from session variable. value int Initialize with a constant value. min Inline definition Constant value. Property Type Description fromVar String Initialize with a value from session variable."},{"title":"randomItem","link":"https:\/\/hyperfoil.io\/docs\/reference\/steps\/step_randomitem\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/hyperfoil.io\/docs\/reference\/steps\/step_randomitem\/","description":"Stores random item from a list or array into session variable.\nProperty Type Description file String This file will be loaded into memory and the step will choose on line as the item. fromVar String Variable containing an array or list. list Builder Potentially weighted list of items to choose from. toVar String Variable where the chosen item should be stored. list Property Type Description &lt;any&gt; &lt;list of strings&gt; Item as the key and weight (arbitrary floating-point number, defaults to 1."},{"title":"randomUUID","link":"https:\/\/hyperfoil.io\/docs\/reference\/steps\/step_randomuuid\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/hyperfoil.io\/docs\/reference\/steps\/step_randomuuid\/","description":"Stores random string into session variable based on the UUID generator.\nProperty Type Description toVar String Variable name to store the result."},{"title":"readAgentData","link":"https:\/\/hyperfoil.io\/docs\/reference\/actions\/action_readagentdata\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/hyperfoil.io\/docs\/reference\/actions\/action_readagentdata\/","description":"Reads data from agent-wide scope into session variable.\nThe data must be published in a phase that has terminated before this phase starts: usually this is achieved using the startAfterStrict property on the phase.\nInline definition Both the identifier and destination session variable. Property Type Description name String Unique identifier for the data. toVar String Destination session variable name."},{"title":"readAgentData","link":"https:\/\/hyperfoil.io\/docs\/reference\/processors\/processor_readagentdata\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/hyperfoil.io\/docs\/reference\/processors\/processor_readagentdata\/","description":"Reads data from agent-wide scope into session variable.\nThe data must be published in a phase that has terminated before this phase starts: usually this is achieved using the startAfterStrict property on the phase.\nInline definition Both the identifier and destination session variable. Property Type Description name String Unique identifier for the data. toVar String Destination session variable name."},{"title":"readAgentData","link":"https:\/\/hyperfoil.io\/docs\/reference\/steps\/step_readagentdata\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/hyperfoil.io\/docs\/reference\/steps\/step_readagentdata\/","description":"Reads data from agent-wide scope into session variable.\nThe data must be published in a phase that has terminated before this phase starts: usually this is achieved using the startAfterStrict property on the phase.\nInline definition Both the identifier and destination session variable. Property Type Description name String Unique identifier for the data. toVar String Destination session variable name."},{"title":"removeItem","link":"https:\/\/hyperfoil.io\/docs\/reference\/actions\/action_removeitem\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/hyperfoil.io\/docs\/reference\/actions\/action_removeitem\/","description":"Removes element from an array of variables.\nProperty Type Description fromVar String Variable containing an existing array of object variables. index Builder Set index at which the item should be removed. Elements to the right of this are moved to the left. index Inline definition Uses the argument as a constant value. Property Type Description fromVar String Input variable name. value int Value (integer)."},{"title":"removeItem","link":"https:\/\/hyperfoil.io\/docs\/reference\/processors\/processor_removeitem\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/hyperfoil.io\/docs\/reference\/processors\/processor_removeitem\/","description":"Removes element from an array of variables.\nProperty Type Description fromVar String Variable containing an existing array of object variables. index Builder Set index at which the item should be removed. Elements to the right of this are moved to the left. index Inline definition Uses the argument as a constant value. Property Type Description fromVar String Input variable name. value int Value (integer)."},{"title":"removeItem","link":"https:\/\/hyperfoil.io\/docs\/reference\/steps\/step_removeitem\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/hyperfoil.io\/docs\/reference\/steps\/step_removeitem\/","description":"Removes element from an array of variables.\nProperty Type Description fromVar String Variable containing an existing array of object variables. index Builder Set index at which the item should be removed. Elements to the right of this are moved to the left. index Inline definition Uses the argument as a constant value. Property Type Description fromVar String Input variable name. value int Value (integer)."},{"title":"restartSequence","link":"https:\/\/hyperfoil.io\/docs\/reference\/actions\/action_restartsequence\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/hyperfoil.io\/docs\/reference\/actions\/action_restartsequence\/","description":"Schedules a restart of this sequence."},{"title":"restartSequence","link":"https:\/\/hyperfoil.io\/docs\/reference\/processors\/processor_restartsequence\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/hyperfoil.io\/docs\/reference\/processors\/processor_restartsequence\/","description":"Schedules a restart of this sequence."},{"title":"restartSequence","link":"https:\/\/hyperfoil.io\/docs\/reference\/steps\/step_restartsequence\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/hyperfoil.io\/docs\/reference\/steps\/step_restartsequence\/","description":"Restarts current sequence from beginning."},{"title":"scheduleDelay","link":"https:\/\/hyperfoil.io\/docs\/reference\/steps\/step_scheduledelay\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/hyperfoil.io\/docs\/reference\/steps\/step_scheduledelay\/","description":"Define a point in future until which we should wait. Does not cause waiting.\nProperty Type Description duration String Duration of the delay with appropriate suffix (e.g. ms or s). fromLast &lt;none&gt; Set previous delay point reference as the reference for next delay point; it will be computed as (previous delay point or now) + duration.\nNote: property does not have any value fromNow &lt;none&gt; Set this step invocation as the delay point reference; it will be computed as now + duration."},{"title":"Search Results","link":"https:\/\/hyperfoil.io\/search\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/hyperfoil.io\/search\/","description":{}},{"title":"set","link":"https:\/\/hyperfoil.io\/docs\/reference\/actions\/action_set\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/hyperfoil.io\/docs\/reference\/actions\/action_set\/","description":"Set variable in session to certain value.\nInline definition Use var &lt;- value. Property Type Description intArray Builder Set variable to an (unset) integer array. objectArray Builder Set variable to an (unset) object array. value String String value. var String Variable name. intArray Creates integer arrays to be stored in the session.\nProperty Type Description fromVar String Contents of the new array. If the variable contains an array or a list, items will be copied to the elements with the same index up to the size of this array."},{"title":"set","link":"https:\/\/hyperfoil.io\/docs\/reference\/processors\/processor_set\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/hyperfoil.io\/docs\/reference\/processors\/processor_set\/","description":"Set variable in session to certain value.\nInline definition Use var &lt;- value. Property Type Description intArray Builder Set variable to an (unset) integer array. objectArray Builder Set variable to an (unset) object array. value String String value. var String Variable name. intArray Creates integer arrays to be stored in the session.\nProperty Type Description fromVar String Contents of the new array. If the variable contains an array or a list, items will be copied to the elements with the same index up to the size of this array."},{"title":"set","link":"https:\/\/hyperfoil.io\/docs\/reference\/steps\/step_set\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/hyperfoil.io\/docs\/reference\/steps\/step_set\/","description":"Set variable in session to certain value.\nInline definition Use var &lt;- value. Property Type Description intArray Builder Set variable to an (unset) integer array. objectArray Builder Set variable to an (unset) object array. value String String value. var String Variable name. intArray Creates integer arrays to be stored in the session.\nProperty Type Description fromVar String Contents of the new array. If the variable contains an array or a list, items will be copied to the elements with the same index up to the size of this array."},{"title":"setInt","link":"https:\/\/hyperfoil.io\/docs\/reference\/actions\/action_setint\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/hyperfoil.io\/docs\/reference\/actions\/action_setint\/","description":"Set session variable to an integral value.\nInline definition Use var &lt;- value. Property Type Description fromVar String Input variable name. intCondition Builder Set variable only if the current value satisfies certain condition. max Builder Set to value that is the maximum of this list of values. min Builder Set to value that is the minimum of this list of values. onlyIfNotSet boolean Set variable to the value only if it is not already set."},{"title":"setInt","link":"https:\/\/hyperfoil.io\/docs\/reference\/processors\/processor_setint\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/hyperfoil.io\/docs\/reference\/processors\/processor_setint\/","description":"Set session variable to an integral value.\nInline definition Use var &lt;- value. Property Type Description fromVar String Input variable name. intCondition Builder Set variable only if the current value satisfies certain condition. max Builder Set to value that is the maximum of this list of values. min Builder Set to value that is the minimum of this list of values. onlyIfNotSet boolean Set variable to the value only if it is not already set."},{"title":"setInt","link":"https:\/\/hyperfoil.io\/docs\/reference\/steps\/step_setint\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/hyperfoil.io\/docs\/reference\/steps\/step_setint\/","description":"Set session variable to an integral value.\nInline definition Use var &lt;- value. Property Type Description fromVar String Input variable name. intCondition Builder Set variable only if the current value satisfies certain condition. max Builder Set to value that is the maximum of this list of values. min Builder Set to value that is the minimum of this list of values. onlyIfNotSet boolean Set variable to the value only if it is not already set."},{"title":"setItem","link":"https:\/\/hyperfoil.io\/docs\/reference\/actions\/action_setitem\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/hyperfoil.io\/docs\/reference\/actions\/action_setitem\/","description":"Set element in a collection on given position.\nProperty Type Description fromVar String Fetch value from session variable. index Builder Integer session variable with an index into the collection. toVar String Session variable with the collection. value String Verbatim value. index Inline definition Uses the argument as a constant value. Property Type Description fromVar String Input variable name. value int Value (integer)."},{"title":"setItem","link":"https:\/\/hyperfoil.io\/docs\/reference\/processors\/processor_setitem\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/hyperfoil.io\/docs\/reference\/processors\/processor_setitem\/","description":"Set element in a collection on given position.\nProperty Type Description fromVar String Fetch value from session variable. index Builder Integer session variable with an index into the collection. toVar String Session variable with the collection. value String Verbatim value. index Inline definition Uses the argument as a constant value. Property Type Description fromVar String Input variable name. value int Value (integer)."},{"title":"setItem","link":"https:\/\/hyperfoil.io\/docs\/reference\/steps\/step_setitem\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/hyperfoil.io\/docs\/reference\/steps\/step_setitem\/","description":"Set element in a collection on given position.\nProperty Type Description fromVar String Fetch value from session variable. index Builder Integer session variable with an index into the collection. toVar String Session variable with the collection. value String Verbatim value. index Inline definition Uses the argument as a constant value. Property Type Description fromVar String Input variable name. value int Value (integer)."},{"title":"setSharedCounter","link":"https:\/\/hyperfoil.io\/docs\/reference\/actions\/action_setsharedcounter\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/hyperfoil.io\/docs\/reference\/actions\/action_setsharedcounter\/","description":"Sets value in a counter shared by all sessions in the same executor.\nInline definition Both the name of the counter and variable name. Property Type Description fromVar String Input variable name. key String Identifier for the counter. value int Value (integer)."},{"title":"setSharedCounter","link":"https:\/\/hyperfoil.io\/docs\/reference\/processors\/processor_setsharedcounter\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/hyperfoil.io\/docs\/reference\/processors\/processor_setsharedcounter\/","description":"Sets value in a counter shared by all sessions in the same executor.\nInline definition Both the name of the counter and variable name. Property Type Description fromVar String Input variable name. key String Identifier for the counter. value int Value (integer)."},{"title":"setSharedCounter","link":"https:\/\/hyperfoil.io\/docs\/reference\/steps\/step_setsharedcounter\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/hyperfoil.io\/docs\/reference\/steps\/step_setsharedcounter\/","description":"Sets value in a counter shared by all sessions in the same executor.\nInline definition Both the name of the counter and variable name. Property Type Description fromVar String Input variable name. key String Identifier for the counter. value int Value (integer)."},{"title":"stop","link":"https:\/\/hyperfoil.io\/docs\/reference\/steps\/step_stop\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/hyperfoil.io\/docs\/reference\/steps\/step_stop\/","description":"Immediately stop the user session (break all running sequences)."},{"title":"stopwatch","link":"https:\/\/hyperfoil.io\/docs\/reference\/steps\/step_stopwatch\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/hyperfoil.io\/docs\/reference\/steps\/step_stopwatch\/","description":"Run nested sequence of steps, recording execution time."},{"title":"store","link":"https:\/\/hyperfoil.io\/docs\/reference\/processors\/processor_store\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/hyperfoil.io\/docs\/reference\/processors\/processor_store\/","description":"Stores data in a session variable (overwriting on multiple occurences).\nInline definition Variable name. Property Type Description format enum Format into which should this processor convert the buffers before storing. Default is STRING.\nOptions:BYTEBUFStore the buffer directly. Beware that this may cause memory leaks!BYTESStore data as byte array.STRINGInterprets the bytes as UTF-8 string. toVar Object Variable name."},{"title":"storeInt","link":"https:\/\/hyperfoil.io\/docs\/reference\/processors\/processor_storeint\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/hyperfoil.io\/docs\/reference\/processors\/processor_storeint\/","description":"Converts buffers into integral value and stores it in a variable.\nInline definition Name of integer variable where to store the value. Property Type Description override boolean Allow the value to be set multiple times (last write wins). Defaults to false. toVar String Name of variable where to store the integral value."},{"title":"stringToInt","link":"https:\/\/hyperfoil.io\/docs\/reference\/actions\/action_stringtoint\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/hyperfoil.io\/docs\/reference\/actions\/action_stringtoint\/","description":"Parse string into integer and store it in a variable.\nIf the parsing fails the target variable is not modified.\nInline definition Use fromVar -&amp;gt; toVar Property Type Description fromVar String Source variable name. toVar String Target variable name."},{"title":"stringToInt","link":"https:\/\/hyperfoil.io\/docs\/reference\/processors\/processor_stringtoint\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/hyperfoil.io\/docs\/reference\/processors\/processor_stringtoint\/","description":"Parse string into integer and store it in a variable.\nIf the parsing fails the target variable is not modified.\nInline definition Use fromVar -&amp;gt; toVar Property Type Description fromVar String Source variable name. toVar String Target variable name."},{"title":"stringToInt","link":"https:\/\/hyperfoil.io\/docs\/reference\/steps\/step_stringtoint\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/hyperfoil.io\/docs\/reference\/steps\/step_stringtoint\/","description":"Parse string into integer and store it in a variable.\nIf the parsing fails the target variable is not modified.\nInline definition Use fromVar -&amp;gt; toVar Property Type Description fromVar String Source variable name. toVar String Target variable name."},{"title":"template","link":"https:\/\/hyperfoil.io\/docs\/reference\/steps\/step_template\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/hyperfoil.io\/docs\/reference\/steps\/step_template\/","description":"Format pattern into session variable.\nProperty Type Description pattern String Pattern to be encoded, e.g. foo${variable}bar${another-variable} toVar String Variable name to store the result."},{"title":"thinkTime","link":"https:\/\/hyperfoil.io\/docs\/reference\/steps\/step_thinktime\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/hyperfoil.io\/docs\/reference\/steps\/step_thinktime\/","description":"Block current sequence for specified duration.\nInline definition Duration of the delay with appropriate suffix (e.g. ms or s). Property Type Description duration String Duration of the delay with appropriate suffix (e.g. ms or s). fromLast &lt;none&gt; Set previous delay point reference as the reference for next delay point; it will be computed as (previous delay point or now) + duration.\nNote: property does not have any value fromNow &lt;none&gt; Set this step invocation as the delay point reference; it will be computed as now + duration."},{"title":"timestamp","link":"https:\/\/hyperfoil.io\/docs\/reference\/steps\/step_timestamp\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/hyperfoil.io\/docs\/reference\/steps\/step_timestamp\/","description":"Stores the current time in milliseconds as string to a session variable.\nInline definition Variable name. Property Type Description localeCountry String 2-letter ISO country code used in the formatter locale. Defaults to &lsquo;US&rsquo;. pattern String Format the timestamp using SimpleDateFormat pattern. toVar String Target variable name."},{"title":"unset","link":"https:\/\/hyperfoil.io\/docs\/reference\/actions\/action_unset\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/hyperfoil.io\/docs\/reference\/actions\/action_unset\/","description":"Undefine variable name.\nInline definition Variable name. Property Type Description var Object Variable name."},{"title":"unset","link":"https:\/\/hyperfoil.io\/docs\/reference\/processors\/processor_unset\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/hyperfoil.io\/docs\/reference\/processors\/processor_unset\/","description":"Undefine variable name.\nInline definition Variable name. Property Type Description var Object Variable name."},{"title":"unset","link":"https:\/\/hyperfoil.io\/docs\/reference\/steps\/step_unset\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/hyperfoil.io\/docs\/reference\/steps\/step_unset\/","description":"Undefine variable name.\nInline definition Variable name. Property Type Description var Object Variable name."}]}}