From 6eae72907fe68ac9b9fc8fc754d5fc1cbc50f0ab Mon Sep 17 00:00:00 2001 From: jcamiel Date: Wed, 20 Sep 2023 14:10:49 +0200 Subject: [PATCH] Add 4.1.0 post --- sites/build_rss.py | 2 +- .../2023-09-24-announcing-hurl-4.1.0.md | 223 ++++++++++++++++++ sites/hurl.dev/_posts/feed.xml | 169 ++++++++++++- sites/hurl.dev/assets/img/rocket.avif | Bin 0 -> 4357 bytes sites/hurl.dev/assets/img/rocket.png | Bin 0 -> 21064 bytes sites/hurl.dev/assets/img/rocket.webp | Bin 0 -> 5128 bytes 6 files changed, 392 insertions(+), 2 deletions(-) create mode 100644 sites/hurl.dev/_posts/2023-09-24-announcing-hurl-4.1.0.md create mode 100644 sites/hurl.dev/assets/img/rocket.avif create mode 100644 sites/hurl.dev/assets/img/rocket.png create mode 100644 sites/hurl.dev/assets/img/rocket.webp diff --git a/sites/build_rss.py b/sites/build_rss.py index 62b67b4..e21a40d 100755 --- a/sites/build_rss.py +++ b/sites/build_rss.py @@ -65,7 +65,7 @@ def __init__(self, md: Path) -> None: r"\{\{ '(.*?)' \| prepend:site.baseurl }}", r"https://hurl.dev\1", md_txt ) md_txt = re.sub( - r"\{% link _docs/(.*).md %}", r"https://hurl.dev/docs\1.html", md_txt + r"\{% link _docs/(.*?).md %}", r"https://hurl.dev/docs/\1.html", md_txt ) # Construct the HTML content diff --git a/sites/hurl.dev/_posts/2023-09-24-announcing-hurl-4.1.0.md b/sites/hurl.dev/_posts/2023-09-24-announcing-hurl-4.1.0.md new file mode 100644 index 0000000..e4a403e --- /dev/null +++ b/sites/hurl.dev/_posts/2023-09-24-announcing-hurl-4.1.0.md @@ -0,0 +1,223 @@ +--- +title: Announcing Hurl 4.1.0 +layout: blog +section: Blog +permalink: /blog/:year/:month/:day/:title.html +--- + +# {{ page.title }} + +
{{ page.date | date: "%b. %d, %Y" }}
+ +The Hurl team is happy to announce [Hurl 4.1.0] Rocket ! + +[Hurl] is a command line tool powered by [curl], that runs HTTP requests defined +in a simple plain text format: + +```hurl +GET https://example.org/api/tests/4567 + +HTTP 200 +[Asserts] +header "x-foo" contains "bar" +certificate "Expire-Date" daysAfterNow > 15 +jsonpath "$.status" == "RUNNING" # Check the status code +jsonpath "$.tests" count == 25 # Check the number of items +jsonpath "$.id" matches /\d{4}/ # Check the format of the id +``` + +What's new in this release: + +- [TAP Report](#tap-report) +- [Add Delay Between Requests](#add-delay-between-requests) +- [`--connect-to` and `--resolve` per Request Option](#-connect-to-and-resolve-per-request-option) +- [AWS Signature Version 4](#aws-signature-version-4) +- [ARM 64 bits Docker Image](#arm-64-bits-docker-image) + +## TAP Report + +We've added a new test report: TAP, the [Test Anything Protocol]. TAP is a simple text-based +interface between testing modules in a test harness. With [HTML report] and [JUnit report], Hurl supports now +[TAP report]. + +Let's say we run some tests. We can use `--report-tap REPORT-FILE` option to set the report TAP file. If the report file +exists, results will be appended to it. + +```shell +$ hurl --test --report-tap report.txt *.hurl +add-favorite.hurl: Running [1/6] +add-favorite.hurl: Success (7 request(s) in 5516 ms) +basic.hurl: Running [2/6] +basic.hurl: Success (7 request(s) in 1537 ms) +csrf.hurl: Running [3/6] +error: Assert status code + --> csrf.hurl:3:6 + | + 3 | HTTP 301 + | ^^^ actual value is <200> + | + +csrf.hurl: Failure (2 request(s) in 5527 ms) +login.hurl: Running [4/6] +login.hurl: Success (3 request(s) in 3091 ms) +perf.hurl: Running [5/6] +perf.hurl: Success (4 request(s) in 1317 ms) +security.hurl: Running [6/6] +security.hurl: Success (5 request(s) in 2278 ms) +write tap report report.txt +-------------------------------------------------------------------------------- +Executed files: 6 +Succeeded files: 5 (83.3%) +Failed files: 1 (16.7%) +Duration: 19304 ms +``` + +Then, we can see what our TAP report looks like: + +```shell +$ cat report.txt +1..6 +ok 1 - add-favorite.hurl +ok 2 - basic.hurl +not ok 3 - csrf.hurl +ok 4 - login.hurl +ok 5 - perf.hurl +ok 6 - security.hurl +``` + +Simple and neat! TAP has wide support across many language and there are many tools that can convert TAP +to other formats, so it's a nice addition to Hurl! + + +## Add Delay Between Requests + +With the new [`--delay` option]({% link _docs/manual.md %}#delay), you can add a delay between requests: + +```shell +$ hurl --delay 2000 --test *.hurl +``` + +This command add a 2 seconds delay between each request. As with a lot of Hurl command line options, you +can specify a delay for a single request, with an [`[Options]` section]({% link _docs/request.md %}#options), +without impacting other requests: + +```hurl +GET https://foo.com/a +HTTP 200 + +# This next request will be runned 5s after the +# first one +GET https://foo.com/b +[Options] +delay: 5000 +HTTP 200 +``` + +## --connect-to and --resolve per Request Option + +Speaking of [`[Options]` sections]({% link _docs/request.md %}#options), [`--connect-to`]({% link _docs/manual.md %}#connect-to) +and [`--resolve`]({% link _docs/manual.md %}#resolve) can now be specified per request: + +```hurl +GET https://foo.com/a +[Options] +connect-to: foo.com:80:localhost:8000 +HTTP 200 + +# --resolve option allow to us custom address for a specific host and port pair. +GET http://foo.com:8000/resolve +[Options] +resolve: foo.com:8000:127.0.0.1 +HTTP 200 +``` + +As of Hurl 4.1.0, the [`[Options]` section]({% link _docs/request.md %}#options) supports: + +```hurl +GET https://example.org +# An options section, each option is optional and applied only to this request... +[Options] +aws-sigv4: aws:amz:sts # generate AWS SigV4 Authorization header +cacert: /etc/cert.pem # a custom certificate file +compressed: true # request a compressed response +insecure: true # allows insecure SSL connections and transfers +location: true # follow redirection for this request +max-redirs: 10 # maximum number of redirections +path-as-is: true # tell curl to not handle sequences of /../ or /./ in the given URL path +variable: country=Italy # define variable country +variable: planet=Earth # define variable planet +verbose: true # allow verbose output +very-verbose: true # allow more verbose output +``` + +If you need an Hurl command line option (which make sense for a single request) to be on this list, don't +hesitate to [fill an issue]! + +## AWS Signature Version 4 + +Every interaction with Amazon S3 is either authenticated or anonymous. Authenticating to AWS +is done through [AWS Signature Version 4]. With [`--aws-sigv4`]({% link _docs/manual.md %}#aws-sigv4), +you can use AWS Signature Version 4 to authenticate your requests + +```shell +$ hurl --user someAccessKeyId:someSecretKey \ + --aws-sigv4 aws:amz:eu-central-1:foo \ + file.hurl +``` + +And of course, `--aws-sigv4` can be specified for a single request: + +```hurl +GET https://foo.execute-api.us-east-1.amazonas.com/dev/bafe12 +[Options] +aws-sigv4: aws:amz:eu-central-1:foo +HTTP 200 +``` + +## ARM 64 bits Docker Image + +Hurl can be [installed as a native binary] on a large number of platforms. We also provide +a [Docker image]. Since 4.1.0, Hurl Docker's image is a [multi-arch build]: along x86 architectures, +the image supports now ARM 64 bits targets such as Raspberry Pis, AWS A1 instances or even ARM's Apple computers. + +```shell +$ docker run -v /tmp/:/tmp/ ghcr.io/orange-opensource/hurl:4.1.0 --test example.hurl +example.hurl: Running [1/1] +example.hurl: Success (1 request(s) in 190 ms) +-------------------------------------------------------------------------------- +Executed files: 1 +Succeeded files: 1 (100.0%) +Failed files: 0 (0.0%) +Duration: 193 ms +``` + +## Others + +Changes that require a particular attention: + +- we have renamed `--fail-at-end` option to +[[`--continue-on-error`]]({% link _docs/manual.md %}#continue-on-error) as the latter is more +understandable +- we have fixed [[`--path-as-is`]]({% link _docs/manual.md %}#path-as-is) option name (instead of `--path_as_is`) + +There are other improvements and bug fixes, you can check a complete list [in our release note]. +If you like Hurl, don't hesitate to [give us a star on GitHub] or share it on [Twitter / X]! + +We'll be happy to hear from you, either for enhancement requests or for sharing your success story using Hurl! + + +[Hurl]: https://hurl.dev +[curl]: https://curl.se +[Hurl 4.1.0]: https://github.com/Orange-OpenSource/hurl/releases/tag/4.1.0 +[Test Anything Protocol]: https://testanything.org +[HTML report]: {% link _docs/running-tests.md %}#html-report +[JUnit report]: {% link _docs/running-tests.md %}#junit-report +[TAP report]: {% link _docs/running-tests.md %}#tap-report +[fill an issue]: https://github.com/Orange-OpenSource/hurl/issues +[AWS Signature Version 4]: https://docs.aws.amazon.com/AmazonS3/latest/API/sig-v4-authenticating-requests.html +[installed as a native binary]: https://hurl.dev/docs/installation.html +[multi-arch build]: https://www.docker.com/blog/multi-arch-build-and-images-the-simple-way/ +[in our release note]: https://github.com/Orange-OpenSource/hurl/releases/tag/4.1.0 +[give us a star on GitHub]: https://github.com/Orange-OpenSource/hurl/stargazers +[Twitter / X]: https://twitter.com/HurlDev +[Docker Image]: https://github.com/Orange-OpenSource/hurl/pkgs/container/hurl diff --git a/sites/hurl.dev/_posts/feed.xml b/sites/hurl.dev/_posts/feed.xml index 7242786..786ce7e 100644 --- a/sites/hurl.dev/_posts/feed.xml +++ b/sites/hurl.dev/_posts/feed.xml @@ -3,8 +3,175 @@ Hurl Blog - 2023-06-30T18:11:19+02:00 + 2023-09-24T00:00:00+02:00 https://hurl.dev/blog/feed.xml + + Announcing Hurl 4.1.0 + + 2023-09-24T00:00:00+02:00 + 2023-09-24T00:00:00+02:00 + https://hurl.dev/blog/2023/09/24/announcing-hurl-4.1.0.html + Announcing Hurl 4.1.0 + + +

The Hurl team is happy to announce Hurl 4.1.0 Rocket !

+

Hurl is a command line tool powered by curl, that runs HTTP requests defined +in a simple plain text format:

+
GET https://example.org/api/tests/4567
+
+HTTP 200
+[Asserts]
+header "x-foo" contains "bar"
+certificate "Expire-Date" daysAfterNow > 15
+jsonpath "$.status" == "RUNNING"    # Check the status code
+jsonpath "$.tests" count == 25      # Check the number of items
+jsonpath "$.id" matches /\d{4}/     # Check the format of the id
+
+

What’s new in this release:

+ +

TAP Report

+

We’ve added a new test report: TAP, the Test Anything Protocol. TAP is a simple text-based +interface between testing modules in a test harness. With HTML report and JUnit report, Hurl supports now +TAP report.

+

Let’s say we run some tests. We can use --report-tap REPORT-FILE option to set the report TAP file. If the report file +exists, results will be appended to it.

+
$ hurl --test --report-tap report.txt *.hurl
+add-favorite.hurl: Running [1/6]
+add-favorite.hurl: Success (7 request(s) in 5516 ms)
+basic.hurl: Running [2/6]
+basic.hurl: Success (7 request(s) in 1537 ms)
+csrf.hurl: Running [3/6]
+error: Assert status code
+  --> csrf.hurl:3:6
+   |
+ 3 | HTTP 301
+   |      ^^^ actual value is <200>
+   |
+
+csrf.hurl: Failure (2 request(s) in 5527 ms)
+login.hurl: Running [4/6]
+login.hurl: Success (3 request(s) in 3091 ms)
+perf.hurl: Running [5/6]
+perf.hurl: Success (4 request(s) in 1317 ms)
+security.hurl: Running [6/6]
+security.hurl: Success (5 request(s) in 2278 ms)
+write tap report report.txt
+--------------------------------------------------------------------------------
+Executed files:  6
+Succeeded files: 5 (83.3%)
+Failed files:    1 (16.7%)
+Duration:        19304 ms
+
+

Then, we can see what our TAP report looks like:

+
$ cat report.txt
+1..6
+ok 1 - add-favorite.hurl
+ok 2 - basic.hurl
+not ok 3 - csrf.hurl
+ok 4 - login.hurl
+ok 5 - perf.hurl
+ok 6 - security.hurl
+
+

Simple and neat! TAP has wide support across many language and there are many tools that can convert TAP +to other formats, so it’s a nice addition to Hurl!

+

Add Delay Between Requests

+

With the new --delay option, you can add a delay between requests:

+
$ hurl --delay 2000 --test *.hurl
+
+

This command add a 2 seconds delay between each request. As with a lot of Hurl command line options, you +can specify a delay for a single request, with an [Options] section, +without impacting other requests:

+
GET https://foo.com/a
+HTTP 200
+
+# This next request will be runned 5s after the
+# first one
+GET https://foo.com/b
+[Options]
+delay: 5000
+HTTP 200
+
+

–connect-to and –resolve per Request Option

+

Speaking of [Options] sections, --connect-to +and --resolve can now be specified per request:

+
GET https://foo.com/a
+[Options]
+connect-to: foo.com:80:localhost:8000
+HTTP 200
+
+# --resolve option allow to us custom address for a specific host and port pair.
+GET http://foo.com:8000/resolve
+[Options]
+resolve: foo.com:8000:127.0.0.1
+HTTP 200
+
+

As of Hurl 4.1.0, the [Options] section supports:

+
GET https://example.org
+# An options section, each option is optional and applied only to this request...
+[Options]
+aws-sigv4: aws:amz:sts  # generate AWS SigV4 Authorization header
+cacert: /etc/cert.pem   # a custom certificate file
+compressed: true        # request a compressed response
+insecure: true          # allows insecure SSL connections and transfers
+location: true          # follow redirection for this request
+max-redirs: 10          # maximum number of redirections
+path-as-is: true        # tell curl to not handle sequences of /../ or /./ in the given URL path
+variable: country=Italy # define variable country
+variable: planet=Earth  # define variable planet
+verbose: true           # allow verbose output
+very-verbose: true      # allow more verbose output
+
+

If you need an Hurl command line option (which make sense for a single request) to be on this list, don’t +hesitate to fill an issue!

+

AWS Signature Version 4

+

Every interaction with Amazon S3 is either authenticated or anonymous. Authenticating to AWS +is done through AWS Signature Version 4. With --aws-sigv4, +you can use AWS Signature Version 4 to authenticate your requests

+
$ hurl --user someAccessKeyId:someSecretKey \
+ --aws-sigv4 aws:amz:eu-central-1:foo \
+ file.hurl
+
+

And of course, --aws-sigv4 can be specified for a single request:

+
GET https://foo.execute-api.us-east-1.amazonas.com/dev/bafe12
+[Options]
+aws-sigv4: aws:amz:eu-central-1:foo
+HTTP 200
+
+

ARM 64 bits Docker Image

+

Hurl can be installed as a native binary on a large number of platforms. We also provide +a Docker image. Since 4.1.0, Hurl Docker’s image is a multi-arch build: along x86 architectures, +the image supports now ARM 64 bits targets such as Raspberry Pis, AWS A1 instances or even ARM’s Apple computers.

+
$ docker run -v /tmp/:/tmp/ ghcr.io/orange-opensource/hurl:4.1.0 --test example.hurl
+example.hurl: Running [1/1]
+example.hurl: Success (1 request(s) in 190 ms)
+--------------------------------------------------------------------------------
+Executed files:  1
+Succeeded files: 1 (100.0%)
+Failed files:    0 (0.0%)
+Duration:        193 ms
+
+

Others

+

Changes that require a particular attention:

+ +

There are other improvements and bug fixes, you can check a complete list in our release note. +If you like Hurl, don’t hesitate to give us a star on GitHub or share it on Twitter / X!

+

We’ll be happy to hear from you, either for enhancement requests or for sharing your success story using Hurl!

]]>
+ + + + The Hurl team is happy to announce a new version of Hurl, 4.1.0. +
Announcing Hurl 4.0.0 diff --git a/sites/hurl.dev/assets/img/rocket.avif b/sites/hurl.dev/assets/img/rocket.avif new file mode 100644 index 0000000000000000000000000000000000000000..15516493cbaf37418da1c27a20f484e95e8ebcc8 GIT binary patch literal 4357 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 literal 0 HcmV?d00001 diff --git a/sites/hurl.dev/assets/img/rocket.png b/sites/hurl.dev/assets/img/rocket.png new file mode 100644 index 0000000000000000000000000000000000000000..19713212c2e9b19639bc06e968af196bbef037a3 GIT binary patch literal 21064 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 G+5Z9RzzAUg literal 0 HcmV?d00001