All ISAC plugins summary


Plugin name Class Description
Chrono org.ow2.isac.plugin.chrono.SessionObject This plug-in makes it possible to measure the duration of a behavior segment and get a pseudo-sample event with this duration value. Once the chronograph is started by the appropriate control, the current duration value can be recorded by the split sample, and can be used as variable ${my_chrono:}.
CommandLineInjector org.ow2.isac.plugin.commandline.SessionObject This plug-in supports execution of command lines, specific to your Operating System (e.g. cmd.exe for Windows, /bin/sh for Unix-like systems). Once a command has been executed, 3 variables are available to get its results: * stdout contains the command printed output * stderr contains the comman error output * retcode contains the integer return code of the command
Common org.ow2.isac.plugin.common.SessionObject Provides constants TRUE and FALSE to be used as conditions, as well as miscellaneous features: printing, alarm, logging and Java system property setting. Also provides a "date_ms" variable that gives the current date as the number of milliseconds elapsed since 1st January 1970 GMT (syntax: ${common_plugin_id:date_ms}). A custom-formatted date can be obtained with variable "date!myDateFormat", where myDateFormat follows the Java java.text.SimpleDateFormat specification.
ConstantTimer org.ow2.isac.plugin.constanttimer.SessionObject Provides a fixed duration timer, either to get a constant think time (see sleep timer), or to get a fixed (minimum) time for a behavior sub-section (see period_begin/period_end timers). Also supports a basic timeout feature through conditions to check if some execution time has elapsed for a delimited behavior sub-section. All durations are in milliseconds.
Context org.ow2.isac.plugin.context.SessionObject Defines arbitrary variables with initial values. These variables may be loaded from a Java-style property file or set on plug-in import. Empty value is not supported: setting an empty value to a variable turns to clear the variable itself (it is no longer considered as defined). Similarly, getting a value from an undefined variable returns an empty string value. Any of these variables may be used in any plug-in parameter by referencing the variable through the following expression: ${this context plug-in identifier:variable's name}. Example: ${fooplugin:barvar}
Counter org.ow2.isac.plugin.counter.SessionObject Provides an integer counter, with associated primitives for changing and testing its value. Each virtual user may manage its own counter instance, or share a single counter, which can be useful to handle unique identifiers, for example. Since the counter value is held by a multi-precision integer, it has no limit value. When setting, retrieving or comparing the counter value, the value is formatted accordingly to the radix set on import. The counter value can be obtained through the variable expression ${counter_id:}, or with a format specification ${counter_id:n} where n is the size of the resulting string (white spaces are added at the head of the string to reach the specified number of characters). Examples: ${counter_id:8} will be substituted by the string " 1234567" if the counter value is 1234567, or "123456789" if the value is 123456789 (no truncation). It is also possible to perform atomic "get-and-set" operations, through variable expressions ${counter_id:++} and ${counter_id:--}. These variables are replaced by the current counter value, and the counter value is incremented (respectively decremented) in an atomic manner (i.e. when the counter is shared, no other virtual user can concurrently get or change the counter value). This is just a convenience for an unshared counter, while it is a necessary construct for managing unique identifiers through all vUsers sharing a counter. A Counter default value is 0 (zero), unless another default value is specified on import.
CsvProvider org.ow2.isac.plugin.csvprovider.SessionObject Provides a data set whose data are read from a CSV (comma-separated values) file. Call the "next" control to get the next line from the file. It must be called at least once prior to getting any data. Control "skip" gets the nth next line. The "reset" control goes back to the first line. For each line, fields/values are available through variables: - either with array-like notation [0], [1] etc. (e.g. ${plugin_id:[0]}) - or with chosen names when defined in plug-in import parameters (e.g. {plugin_id:phone_field}) The number of lines is available through a variable named # (e.g. ${pluginId:#}), unless the "load at runtime" option is enabled, in which case this variable is not available. Parameters are: - filename (required): the full path to the CSV file. - separator (optional): the separator character. The default separator is the comma (','). - fields (optional): names for the variables, separated by the defined separator. - macintosh_line_separator: use CR instead of LF as line separator. - shared: when set, progression in the lines is shared by all session objects. In other words, each session object will get a different line instead of all getting the same sequence of lines. - loop: if set, the line sequence wraps up to the first line when the end of file is reached. Otherwise, an alarm is thrown when trying to get a field value while the end of file has been reached, and the empty string is used as value. - load at runtime: when enabled, lines are read from the file one-by-one, when the "next" or "skip" control is called. Otherwise, all lines are read at once at deployment time. This option is recommended for very big files, in order to save deployment time and memory space. But then, it is recommended to enable the "shared" mode in order to avoid a proliferation of file descriptors, especially when you run a great number of virtual users.
DnsInjector org.ow2.isac.plugin.dnsinjector.SessionObject This plugin sends DNS queries to the specified server,
DnsProvider org.ow2.isac.plugin.dnsprovider.SessionObject The Domain Name target is built as follows: label<.zone> Index is incremented and possibly limited to a maximum value. The zone information is retrieved from a file. Each zone item is weighted. The different Query types are retrieved from a file. Each type item is weighted. The different IP source addresses are retrieved from a file. Each IP address item is weighted. A IPv6 in nibble reverse dotted format is generated and incremented to test reverse DNS in IPv6. A IPv4 in reverse dotted format is generated and incremented to test reverse DNS in IPv4. Retrieve data by entrering values: ${DnsProvider_0:domain} for getting domain name ${DnsProvider_0:query} for getting query type ${DnsProvider_0:ip} for getting source IP ${DnsProvider_0:dnssec} for getting DNSSEC ${DnsProvider_0:rd} for getting RD flag (0/1) ${DnsProvider_0:udp} for getting UDP protocol (vs. TCP) (0/1) ${DnsProvider_0:ip6rev} : to get the IPv6 @ in nibble reverse dotted format. ${DnsProvider_0:ip6for} : to get the IPv6 @ in nibble forward format. ${DnsProvider_0:ip4rev} : to get the IPv4 @ in reverse dotted format.
FileHandler org.ow2.isac.plugin.filehandler.SessionObject Provides conditions and controls for handling files and directories. Some file attibutes are available through variable expressions ${pluginId:/some/path;attribute}, where attribute is one of the following: - size (file size in number of bytes) - ctime (file creation time in ms) - mtime (file last modification time in ms) Example: ${myFileHandler:/some/path;size}
FileReader org.ow2.isac.plugin.filereader.SessionObject Reads the full content of a file. Then, this content can be accessed through a variable expression ${myFileReaderId:}.
FileWriter org.ow2.isac.plugin.filewriter.SessionObject This plug-in supports writing data to a local file, either in overwriting or appending mode. This plug-in provides four variables: pathname (the full path to the file, including the file name), dirname (the path to the directory holding this file), basename (just the name of the file without its directory's path) and length (the file size in bytes).
FtpInjector org.ow2.isac.plugin.ftpinjector.SessionObject Load injector for FTP servers. Use connect first before performing any other command. Provided variables: ${plugin-id:reply code} gives the reply code of the last command, ${plugin-id:replay string} gives the full reply message.
GitInjector org.ow2.isac.plugin.gitinjector.SessionObject Give object help.
HttpInjector org.ow2.isac.plugin.httpinjector.SessionObject Support for HTTP protocol: get, post, multipart post, head, options, put, delete. By default, each of these methods just gets the given URL without analyzing its content. Optionally, the content may be analyzed to transparently include referenced external resources, such as frames, images, style sheets and scripts Provides conditions on response status code and headers. Provides a number of variables: user-defined variables to get response bodies, variables to get headers values ${HttpInj:#header_name}, and a variable to get the response status code ${HttpInj:!}.
ImapInjector org.objectweb.isac.plugin.imapinjector.SessionObject This plugin is used for testing an IMAP mail server. It provides methods to connect, login, select mailboxes(folders), search messages, retrieve messages, copy messages from one mailbox(folder) to another, and logout.
IpProvider org.ow2.isac.plugin.ipprovider.SessionObject Provides locally available IP addresses, either in a round-robin or in a random way, accordlingly to the chosen policy. Delivered addresses may or may not be unique among virtual users, accordingly to the "unique" switch. IP addresses may be restricted to one or several subnetworks through the optional setting of filters. The obtained IP address is available through an empty variable notation ${ipprovider-id:}.
JdbcInjector org.ow2.isac.plugin.jdbcinjector.SessionObject Provides a JDBC interface to query a RDBMS. Caution: unlike common ISAC plug-ins, all response times are measured as MICROSECONDS!
JmsInjector org.ow2.isac.plugin.jmsinjector.SessionObject This plugin allows to inject charge in Joram cluster queues. It provides some methods which allow to start consumer and producer clients
JsonHandler org.ow2.isac.plugin.jsonhandler.SessionObject This plug-in supports easy data extraction from a JSON structure, using the JsonPath syntax. Refer to http://goessner.net/articles/JsonPath/ for JsonPath description.
LdapInjector org.ow2.isac.plugin.ldapinjector.SessionObject This plugin allows to test an LDAP V3 directory. It provides primitives to connect (with or without SSL), search, add or delete entries, and add or delete attributes.
MqttInjector org.ow2.isac.plugin.mqttinjector.SessionObject This ISAC plug-in supports connection and interaction with an MQTT server, as of version 3.1.1 of the MQTT specification. Once connected, the virtual user may publish messages on topics and subscribe to topics. The payload of messages received from a topic subscription may be retrieved and made available as plug-in variables (see sample getMessage, conditions isDefined/isNotDefined and control clear to manage these variables).
Random org.ow2.isac.plugin.random.SessionObject Provides random timers, data and dummy samples whose duration follows a given probability distribution. Five distribution laws are available: - Dirac distribution (not actually random: constant value), - uniform distribution, - Poisson distribution, - gaussian distribution, - negative exponential distribution. Use control primitives to set the distribution law and parameters to be used. Then, random sleeps (think times) and dummy actions with random response time can be invoked. Moreover, random integer values are available by getting the 'int' variable (through expression ${...:int}), and random strings of random size (according to the distribution law settings) are available through the 'string' variable (through expression ${...:string}). Finally, you can also retrieve a random v4 UUID String through the 'uuid' variable (this UUID is independent from the distribution law).
RtpInjector org.ow2.isac.plugin.rtpinjector.SessionObject RtpInjector is a plug-in for CLIF. It allows you to send and receive RTP and RTCP packets to test an equipment or a software. This plug-in doesn't control yours parameters, so it is important to know how RTP works before using it. To add multiples vUsers, you have to use Counter plug-in or CsvProvider plug-in because it can have only one user per port. Fields with (*) are mandatory. Fields with (-) are automatically generated if they are empty, because they are mandatory. In this version, it permits to send request based on RFC 3550 and RFC 4733. Version: 1.0
SipInjector org.ow2.isac.plugin.sipinjector.SessionObject SipInjector is a plug-in for CLIF. It allows you to send and receive SIP packets to test an equipment or a software. This plug-in doesn't control yours parameters, so it is important to know how SIP works before using it. To add multiples vUsers, you have to use Counter plug-in or CsvProvider plug-in because there can have only one user per port. Fields with (*) are mandatory. Fields with (-) are automatically generated if they are empty, because they are mandatory. Here are the variables you can use in the others injector : - sip_body : returns the body without change, - sip_header=header_name : returns the value of the header_name (ex: sip_header=Subject returns the value of the header Subject if it exists), - sip_message : returns the message (request or response), - sip_first_line : returns the first line of the message (request line or status line), - sdp=type_attribute : returns the value of the type_attribute (ex: sdp=session_name returns the value of the name of the session if it exists). SDP is split in 3 type (media, session and time). For each type there is attributes. Actually SipInjector only handles following attributes : - session_name, - session_origin, - session_version, - session_information, - session_email_numberoftheemail (numberoftheemail is the value of the email you want to return, ex: session_email_0 return the first email of the list), - session_uri, - session_phone_numberofthephone (see session_email_numberoftheemail), - session_key, - session_connection, - time_start, - time_stop, - media_port, - media_protocol, - media_type, - media_format_numberoftheformat (see session_email_numberoftheemail). In this version, it permits to send basic request based on RFC 3261, 3265, 3428 and 4566. Version: 1.0
SmppInjector org.ow2.isac.plugin.smppinjector.SessionObject Handles a client (ESME) SMPP connection with an SMSC and supports sending short messages.
SocketInjector org.ow2.isac.plugin.socketinjector.SessionObject Manages a socket connection, for both reading and writing. Data read from the socket may be retrieved through variables whose names are chosen for each issued read.
StringHandler org.ow2.isac.plugin.stringhandler.SessionObject Provides a collection of primitives for generating, modifying and extracting Strings. This plug-in provides the following data: - ${handler_id:} gives the current string's value - ${handler_id:#} gives the current string's length and, after a call to control "slice": - ${handler_id:slice#N} gives the Nth string slice - ${handler_id:slice++} gives the next string slice - ${handler_id:slice#} gives the number of string slices - ${handler_id:slice} gives the current string slice after a call to "nextSlice"
SvnInjector org.ow2.isac.plugin.svninjector.SessionObject This injector enables submitting check-out and commit requests to an SVN server. Important notice: this plug-in supports only a single virtual user at a given point in time; multiple virtual users can't use this plug-in simultaneously.
Synchro org.ow2.isac.plugin.synchro.SessionObject Synchronization plug-in, for all virtual users of all behaviors of all deployed scenarios, either locally in current scenario, or, optionally, among several scenarios possibly distributed among several CLIF servers. The latter mode is enabled by selecting the "distributed option" on plug-in import and giving an arbitrary domain name. To support this distributed synchronization domain, the test plan must include a pseudo injector of class Synchro, with the chosen domain name as argument. You may deploy this Synchro pseudo-injector on any CLIF server in your test plan. Synchronization principles: named locks with wait/notify primitives. The status of a lock may also be tested. Synchronization can also take into account the number of notify calls on one lock. Rendez-vous provide an alternative usage, where the number of notify calls necessary to release the lock is predefined: either with the set-rendez-vous control primitive of this plug-in, or by adding lock_name=count arguments to the Synchro pseudo-injector argument line in the test plan. Some variables are provided: ${synchroId:} gives the list of released locks, ${synchroId:lock_name} gives the number of notifications for the specified lock. CAUTION: each virtual user blocked on a wait, waitN or rendez-vous call, keeps its own execution thread. As a consequence, the pool of ISAC execution threads must be sized in a relevant manner, with at least one execution thread per synchronizing virtual user. An alternative to avoid this constraint on threads is to make an active wait loop with a small sleep period, using wasNotified or wasNotifiedN condition.
TcpInjector org.ow2.isac.plugin.tcpinjector.SessionObject Give object help.
UdpInjector org.ow2.isac.plugin.udpinjector.SessionObject Traffic injector for UDP protocol. Consider increasing the maximum number of UDP sockets in all Java runtimes involved in your test plans, by setting property sun.net.maxDatagramSockets, since the default is quite low in most Java runtimes.