|
| 1 | +v0.21.0 is here! :tada: |
| 2 | + |
| 3 | +We're happy to see continued contributions from members of the community in this release, from 4 people outside of Load Impact this time around. A big thanks to the following people for contributing to this release: @antekresic, @cyberw, @danron and @jmccann. Also, thanks to everyone that contributed in other ways on Github, in Slack and for spreading the word about k6! |
| 4 | + |
| 5 | +To see the current plan for the next release, check out [this milestone](https://github.com/loadimpact/k6/milestone/4), which we aim to make the v1.0 release! |
| 6 | + |
| 7 | +Have a look at [our roadmap](https://github.com/loadimpact/k6/wiki/Roadmap) for what's up ahead, beyond the v1.0 release. |
| 8 | + |
| 9 | +## New Features! |
| 10 | + |
| 11 | +### CLI/Options: Add `--tag` flag and `tags` option to set test-wide tags (#553) |
| 12 | + |
| 13 | +You can now specify any number of tags on the command line using the `--tag NAME=VALUE` flag. You can also use the `tags` option to the set tags in the code. |
| 14 | + |
| 15 | +The specified tags will be applied across all metrics. However if you have set a tag with the same name on a request, check or custom metric in the code that tag value will have precedence. |
| 16 | + |
| 17 | +Thanks to @antekresic for their work on this! |
| 18 | + |
| 19 | +**Docs**: [Test wide tags](https://docs.k6.io/v1.0/docs/tags-and-groups#section-test-wide-tags) and [Options](https://docs.k6.io/v1.0/docs/options#section-available-options) |
| 20 | + |
| 21 | +### CLI/Options: Add `--summary-time-unit` flag (#638) |
| 22 | + |
| 23 | +You can now specify the time unit used to show the summary trend stats. It can be: 's' for seconds, 'ms' for milliseconds or 'us' microseconds. |
| 24 | + |
| 25 | +```bash |
| 26 | +$ k6 run --summary-time-unit ms ~/script.js |
| 27 | +``` |
| 28 | + |
| 29 | +**Docs**: [Options](https://docs.k6.io/v1.0/docs/options#section-available-options) |
| 30 | + |
| 31 | +### k6/http: Support for HTTP NTLM Authentication (#556) |
| 32 | + |
| 33 | +```js |
| 34 | +import http from "k6/http"; |
| 35 | +import { check } from "k6"; |
| 36 | + |
| 37 | +export default function() { |
| 38 | + // Passing username and password as part of URL plus the auth option will authenticate using HTTP Digest authentication |
| 39 | + let res = http. get( "http://user:[email protected]/path", {auth : "ntlm"}); |
| 40 | + |
| 41 | + // Verify response |
| 42 | + check(res, { |
| 43 | + "status is 200": (r) => r.status === 200 |
| 44 | + }); |
| 45 | +} |
| 46 | +``` |
| 47 | + |
| 48 | +**Docs**: [HTTP Params](http://k6.readme.io/docs/params-k6http) |
| 49 | + |
| 50 | +### HAR converter: Add support for correlating JSON values (#516) |
| 51 | + |
| 52 | +There is now support for correlating JSON values in recordings, replacing recorded request values with references to the previous response. |
| 53 | + |
| 54 | +Thanks to @cyberw for their work on this! |
| 55 | + |
| 56 | +### InfluxDB output: Add support for sending certain sample tags as fields (#585) |
| 57 | + |
| 58 | +Since InfluxDB indexes tags, highly variable information like `vu`, `iter` or even `url` may lead to high memory usage. The InfluxDB documentation [recommends](https://docs.influxdata.com/influxdb/v1.5/concepts/schema_and_data_layout/#encouraged-schema-design) to use fields in that case, which is what k6 does now. There is a new `INFLUXDB_TAGS_AS_FIELDS` option (`collectors.influxdb.tagsAsFields` in the global k6 JSON config) that specifies which of the tags k6 emits will be sent as fields to InfluxDB. By default that's only `url` (but not `name`), `vu` and `iter` (if enabled). |
| 59 | + |
| 60 | +Thanks to @danron for their work on this! |
| 61 | + |
| 62 | +### Configurable setup and teardown timeouts (#602) |
| 63 | + |
| 64 | +Previously the `setup()` and `teardown()` functions timed out after 10 seconds. Now that period is configurable via the `setupTimeout` and `teardownTimeout` script options or the `K6_SETUP_TIMEOUT` and `K6_TEARDOWN_TIMEOUT` environment variables. The default timeouts are still 10 seconds and at this time there are no CLI options for changing them to avoid clutter. |
| 65 | + |
| 66 | +### In-client aggregation for metrics streamed to the cloud (#600) |
| 67 | + |
| 68 | +Metrics streamed to the Load Impact cloud can be partially aggregated to reduce bandwidth usage and processing times. Outlier metrics are automatically detected and excluded from that aggregation. |
| 69 | + |
| 70 | +**Docs**: [Load Impact Insights Aggregation](https://docs.k6.io/docs/load-impact-insights#section-aggregation) |
| 71 | + |
| 72 | +### HAR converter: Set more realistic sleep time (#608) |
| 73 | + |
| 74 | +The default sleep time added at the end of the generated test has been changed from 2-4s to 20-40s to be more realistic (although still probably on the low end for some types of sites [1][2]). |
| 75 | + |
| 76 | +[1] - https://moz.com/blog/ecommerce-benchmark-kpi-study-2017 |
| 77 | +[2] - https://www.brafton.com/blog/strategy/brafton-2017-content-marketing-benchmark-report/ |
| 78 | + |
| 79 | +### Remote IP address as an optional system metric tag (#616) |
| 80 | + |
| 81 | +It's now possible to add the remote server's IP address to the tags for HTTP and WebSocket metrics. The `ip` [system tag](https://docs.k6.io/docs/tags-and-groups#section-system-tags) is not included by default, but it could easily be enabled by modifying the `systemTags` [option](https://docs.k6.io/docs/options). |
| 82 | + |
| 83 | +### Raw log format (#634) |
| 84 | +There is a new log format called `raw`. When used, it will print only the log message without adding any debug information like, date or the log level. It should be useful for debuging scripts when printing a HTML response for example. |
| 85 | + |
| 86 | +``` |
| 87 | +$ k6 run --log-format raw ~/script.js |
| 88 | +``` |
| 89 | + |
| 90 | +### Option to output metrics to Apache Kafka (#617) |
| 91 | + |
| 92 | +There is now support for outputing metrics to Apache Kafka! You can configure a Kafka broker (or multiple ones), topic and message format directly from the command line like this: |
| 93 | + |
| 94 | +`k6 --out kafka=brokers={broker1,broker2},topic=k6,format=json` |
| 95 | + |
| 96 | +The default `format` is `json`, but you can also use the [InfluxDB line protocol](https://docs.influxdata.com/influxdb/v1.5/write_protocols/line_protocol_tutorial/) for direct ingestion by InfluxDB: |
| 97 | + |
| 98 | +`k6 --out kafka=brokers=my_broker_host,topic=k6metrics,format=influxdb` |
| 99 | + |
| 100 | +You can even specify format options such as the [`tagsAsFields` option](#influxdb-output-add-support-for-sending-certain-sample-tags-as-fields-585) for InfluxDB: |
| 101 | + |
| 102 | +`k6 --out kafka=brokers=someBroker,topic=someTopic,format=influxdb,influxdb.tagsAsFields={url,name,myCustomTag}` |
| 103 | + |
| 104 | +**Docs**: [Apache Kafka output](https://docs.k6.io/docs/results-output#section-apache-kafka-output) |
| 105 | + |
| 106 | +Thanks to @jmccann for their work on this! |
| 107 | + |
| 108 | + |
| 109 | +### Multiple outputs (#624) |
| 110 | + |
| 111 | +It's now possible to simultaneously send the emitted metrics to several outputs by using the CLI `--out` flag multiple times, for example: |
| 112 | +`k6 run --out json=test.json --out influxdb=http://localhost:8086/k6` |
| 113 | + |
| 114 | +Thanks to @jmccann for their work on this! |
| 115 | + |
| 116 | +## UX |
| 117 | + |
| 118 | +* Clearer error message when using `open` function outside init context (#563) |
| 119 | +* Better error message when a script or module can't be found (#565). Thanks to @antekresic for their work on this! |
| 120 | + |
| 121 | +## Internals |
| 122 | + |
| 123 | +* Removed all httpbin.org usage in tests, now a local transient HTTP server is used instead (#555). Thanks to @mccutchen for the great [go-httpbin](https://github.com/mccutchen/go-httpbin) library! |
| 124 | +* Fixed various data races and enabled automated testing with `-race` (#564) |
| 125 | + |
| 126 | +## Bugs |
| 127 | +* Archive: archives generated on Windows can now run on *nix and vice versa. (#566) |
| 128 | +* Submetrics are being tagged properly now. (#609) |
| 129 | +* HTML: fixed the `Selection.each(fn)` function, which was returning only the first element. (#610) |
| 130 | +* Invalid Stages option won't keep k6 running indefinitely. (#615) |
| 131 | +* the `--no-color` option is now being repected for the logs. (#634) |
| 132 | + |
| 133 | +## Breaking changes |
| 134 | +* The Load Impact cloud configuration options `no_compress` and `project_id` and the `payload_size` InfluxDB option have been renamed to `noCompress`, `projectID` and `payloadSize` respectively, to match the other JS option names. |
0 commit comments