Generate and run performance tests for your RIO Server using k6 or JMeter
TLOGic's Load Test tab allows you to generate complete test packages for industry-standard load testing tools. Use your actual TLOG transactions to simulate realistic store traffic against your RIO Server, measuring performance, throughput, and identifying bottlenecks.
TLOGic provides everything you need - just install the testing tool and run! Each exported package includes:
script.js - Complete test script, ready to executeconfig.json - All configuration settingsdata/transactions.json - Your TLOG transaction dataREADME.md - Detailed usage instructionsrun.sh / run.bat - One-click run scriptsrio-load-test.jmx - Complete test plan, ready to openconfig.properties - All configuration settingstransactions.csv - Your TLOG transaction dataREADME.md - Detailed usage instructionsNo scripting required! Simply install k6 or JMeter, extract the ZIP, update the server URL in the config file, and run.
The Load Test feature generates complete, self-contained test packages that you can run immediately on your own infrastructure. TLOGic does all the heavy lifting - generating scripts, encoding transaction data, and configuring test parameters. You just need to install the testing tool and run. TLOGic supports two popular load testing frameworks:
A modern, developer-friendly load testing tool written in Go. Uses JavaScript for test scripts with powerful CLI options.
The industry-standard Java-based load testing tool with a graphical interface and extensive plugin ecosystem.
| Criteria | k6 | JMeter |
|---|---|---|
| Best For | Developers, CI/CD automation, modern workflows | QA teams, complex test scenarios, GUI-based testing |
| Learning Curve | Easy if you know JavaScript | Moderate - GUI helps but can be complex |
| Resource Usage | Very low (Go-based) | Higher (Java-based) |
| Scripting | JavaScript (ES6) | XML + optional Groovy/BeanShell |
| Distributed Testing | Via k6 Cloud or custom setup | Built-in master/slave architecture |
Click the Config button in the Load Test tab to customize these settings:
| Setting | Default | Description |
|---|---|---|
| Service URL | (required) | Your RIO Server endpoint URL (e.g., https://rio.example.com/api/tlog) |
| Start Store | 1001 | First store number in the simulation range |
| End Store | 3200 | Last store number in the simulation range |
| Max Concurrent | 2200 | Maximum number of concurrent virtual users (stores) |
| Ramp Up (seconds) | 30 | Time to gradually increase to max concurrent users |
| Duration (minutes) | 5 | How long to sustain peak load |
| Ramp Down (seconds) | 30 | Time to gradually decrease users after test |
| Delay Min/Max (ms) | 100-500 | Random delay between requests per store (simulates real behavior) |
| Basic Auth User/Pass | (optional) | Credentials for HTTP Basic Authentication |
| Format | BBBY | RioRequest format identifier |
| Division | 05 | Division code for RioRequest |
| UTC Offset | -05:00 | Timezone offset for transaction timestamps |
k6 run script.jsInstall k6 on your testing machine. This only needs to be done once:
After exporting and extracting the k6 package, edit config.json:
maxConcurrent values (e.g., 100) for initial testing, then gradually increase to find your server's limits.
k6 displays a summary in the console after each run:
Key metrics to monitor:
java -version)After exporting and extracting the JMeter package:
rio-load-test.jmxThe test plan includes:
Edit the User Defined Variables in the test plan:
| SERVICE_URL | Your RIO Server endpoint |
| AUTH_TOKEN | Base64-encoded credentials (leave empty if not needed) |
| THREADS | Number of concurrent threads (stores) |
| RAMP_UP | Ramp-up period in seconds |
| DURATION | Test duration in seconds |
Click the green play button in the JMeter toolbar.
Parameters:
-n: Non-GUI mode-t: Test plan file-l: Log file for results-e: Generate HTML report-o: Output folder for HTML reportJMeter provides several ways to analyze results:
-e -o flags)Key metrics in JMeter reports:
| Average | Mean response time in milliseconds |
| 90% Line | 90th percentile response time |
| Error % | Percentage of failed requests |
| Throughput | Requests per second |
| KB/sec | Data transfer rate |
TLOGic supports load testing with RIO Transmit Queue (TQ) files! The Non-TLOG Load Test tab allows you to load RIONTQ.DAT files and generate k6/JMeter packages just like the standard TLOG Load Test, but with support for multiple record types including Non-TLOG, EPSLOG, TAX, and TLOG records.
This is particularly useful for testing RIO Server performance with diverse message types that may be queued for transmission in production environments.
RIO Transmit Queue (TQ) files, typically named RIONTQ.DAT, are binary files that store queued messages waiting to be transmitted to the RIO Server. Each record in a TQ file has a 24-byte header followed by variable-length data:
| Field | Size | Description |
|---|---|---|
| VLI | 2 bytes (LE) | Variable Length Indicator - length of payload data |
| MsgType | 2 bytes (LE) | Message type: 999 (TLOG), 996 (Non-TLOG), 995 (EPSLOG), 994 (TAX) |
| DtCollected | 12 bytes | Date/time collected (YYMMDDhhmmss ASCII) |
| Flags | 1 byte | Record flags (CRC present, SubHeader present, partial record flags) |
| CRC | 4 bytes (LE) | CRC32 checksum (if flag 0x08 set) |
| Filler | 3 bytes | Reserved (ignored) |
| Payload | VLI bytes | Variable-length message data |
Standard IBM POS transaction logs. These contain the same TLOG data as the files loaded in the main TLOG Load Test feature.
Use Case: Testing mixed transaction processing from queued files
Generic non-transactional data messages. These are comma-separated value records for various non-POS data.
Use Case: Testing non-transactional data processing
Electronic Payment System logs. These contain payment processing data with structured FID (Field ID) format.
Use Case: Testing payment system integration and EPS data flow
Tax configuration data records. These contain alternating key/value pairs for tax rate definitions.
Use Case: Testing tax configuration updates and processing
RIONTQ.DAT file or click the file input button. TLOGic will parse all records and display statistics showing the breakdown by MsgType.
| Feature | Standard TLOG Load Test | Non-TLOG Load Test |
|---|---|---|
| Input File Format | IBM TLOG files (pure transaction data) | RIO TQ files (RIONTQ.DAT with 24-byte headers) |
| Record Types Supported | TLOG records only (999) | TLOG (999), Non-TLOG (996), EPSLOG (995), TAX (994) |
| Record Viewing | Transaction list in main UI | TQ Tool tab for detailed record inspection |
| RioRequest Format | Standard TLOG RioRequest | Generic RioRequest with format from SubHeader or 'GENERIC' fallback |
| Use Case | Testing POS transaction processing | Testing queued message processing with mixed message types |
| Generated Packages | k6 and JMeter packages | k6 and JMeter packages (same format) |
When generating load test packages from TQ files, TLOGic constructs RioRequest XML messages with the following characteristics:
VU * 1000000 + iteration)ftype property if present, otherwise uses 'GENERIC'fname property if present, otherwise uses the TQ filenametlogic-non-tlog-load-test to identify test origin<PosFileData>serviceUrl is correct and accessiblecurl -v https://your-rio-server/api/tlogbase64(username:password)maxConcurrent or thread count