Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package fortio for openSUSE:Factory checked 
in at 2023-06-16 16:53:59
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/fortio (Old)
 and      /work/SRC/openSUSE:Factory/.fortio.new.15902 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "fortio"

Fri Jun 16 16:53:59 2023 rev:39 rq:1093214 version:1.55.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/fortio/fortio.changes    2023-05-03 
12:57:30.391913315 +0200
+++ /work/SRC/openSUSE:Factory/.fortio.new.15902/fortio.changes 2023-06-16 
16:54:49.737701033 +0200
@@ -1,0 +2,18 @@
+Thu Jun 15 06:23:21 UTC 2023 - [email protected]
+
+- Update to version 1.55.0:
+  * using json structured logging, add `log-errors` option setting
+    to rapi and UI (#768)
+  * Bump golang.org/x/net from 0.10.0 to 0.11.0 (#769)
+  * Bump docker/build-push-action from 4.0.0 to 4.1.0 (#764)
+  * Bump docker/setup-buildx-action from 2.5.0 to 2.6.0 (#765)
+  * Bump docker/setup-qemu-action from 2.1.0 to 2.2.0 (#767)
+  * Bump actions/checkout from 3.5.2 to 3.5.3 (#766)
+  * Bump github/codeql-action from 2.3.6 to 2.13.4 (#763)
+  * go1.20.5 build image (#762)
+  * Bump github/codeql-action from 2.3.3 to 2.3.6 (#761)
+  * Bump golang.org/x/net from 0.9.0 to 0.10.0 (#759)
+  * Bump github/codeql-action from 2.3.2 to 2.3.3 (#757)
+  * Bump google.golang.org/grpc from 1.54.0 to 1.55.0 (#756)
+
+-------------------------------------------------------------------

Old:
----
  fortio-1.54.3.obscpio

New:
----
  fortio-1.55.0.obscpio

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ fortio.spec ++++++
--- /var/tmp/diff_new_pack.neRDMn/_old  2023-06-16 16:54:51.009708598 +0200
+++ /var/tmp/diff_new_pack.neRDMn/_new  2023-06-16 16:54:51.013708622 +0200
@@ -19,7 +19,7 @@
 %define __arch_install_post export NO_BRP_STRIP_DEBUG=true
 
 Name:           fortio
-Version:        1.54.3
+Version:        1.55.0
 Release:        0
 Summary:        Load testing library, command line tool, advanced echo server 
and web UI
 License:        Apache-2.0

++++++ _service ++++++
--- /var/tmp/diff_new_pack.neRDMn/_old  2023-06-16 16:54:51.045708812 +0200
+++ /var/tmp/diff_new_pack.neRDMn/_new  2023-06-16 16:54:51.045708812 +0200
@@ -3,7 +3,7 @@
     <param name="url">https://github.com/fortio/fortio</param>
     <param name="scm">git</param>
     <param name="exclude">.git</param>
-    <param name="revision">v1.54.3</param>
+    <param name="revision">v1.55.0</param>
     <param name="versionformat">@PARENT_TAG@</param>
     <param name="changesgenerate">enable</param>
     <param name="versionrewrite-pattern">v(.*)</param>

++++++ _servicedata ++++++
--- /var/tmp/diff_new_pack.neRDMn/_old  2023-06-16 16:54:51.065708931 +0200
+++ /var/tmp/diff_new_pack.neRDMn/_new  2023-06-16 16:54:51.069708955 +0200
@@ -1,6 +1,6 @@
 <servicedata>
 <service name="tar_scm">
                 <param name="url">https://github.com/fortio/fortio</param>
-              <param 
name="changesrevision">c6665d10f24572d219ed90c65e011a4f8ffdc8d3</param></service></servicedata>
+              <param 
name="changesrevision">7d76c8ef1ea2b66f736b3d54d093ed0d2ce2a768</param></service></servicedata>
 (No newline at EOF)
 

++++++ fortio-1.54.3.obscpio -> fortio-1.55.0.obscpio ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fortio-1.54.3/.circleci/config.yml 
new/fortio-1.55.0/.circleci/config.yml
--- old/fortio-1.54.3/.circleci/config.yml      2023-05-03 03:33:32.000000000 
+0200
+++ new/fortio-1.55.0/.circleci/config.yml      2023-06-15 01:22:53.000000000 
+0200
@@ -8,7 +8,7 @@
   &defaultEnv
   docker:
     # specify the version
-    - image: 
docker.io/fortio/fortio.build:v58@sha256:84ab73744546c1b27e2f08143e2c080114c4f1864f760b9fca3908683259d3c4
+    - image: 
docker.io/fortio/fortio.build:v59@sha256:735db577fe940063725cdac8dd2723875f147434f266cbdf0e6970b4fd9b1a07
   working_directory: /build/fortio
 
 jobs:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fortio-1.54.3/.github/workflows/codeql-analysis.yml 
new/fortio-1.55.0/.github/workflows/codeql-analysis.yml
--- old/fortio-1.54.3/.github/workflows/codeql-analysis.yml     2023-05-03 
03:33:32.000000000 +0200
+++ new/fortio-1.55.0/.github/workflows/codeql-analysis.yml     2023-06-15 
01:22:53.000000000 +0200
@@ -40,11 +40,11 @@
 
     steps:
       - name: Checkout repository
-        uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # 
pin@v3
+        uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # 
pin@v3
 
       # Initializes the CodeQL tools for scanning.
       - name: Initialize CodeQL
-        uses: 
github/codeql-action/init@f3feb00acb00f31a6f60280e6ace9ca31d91c76a # pin@v2
+        uses: 
github/codeql-action/init@cdcdbb579706841c47f7063dda365e292e5cad7a # pin@v2
         with:
           languages: ${{ matrix.language }}
           # If you wish to specify custom queries, you can do so here or in a 
config file.
@@ -55,7 +55,7 @@
           # Autobuild attempts to build any compiled languages  (C/C++, C#, or 
Java).
           # If this step fails, then you should remove it and run the build 
manually (see below)
       - name: Autobuild
-        uses: 
github/codeql-action/autobuild@f3feb00acb00f31a6f60280e6ace9ca31d91c76a # pin@v2
+        uses: 
github/codeql-action/autobuild@cdcdbb579706841c47f7063dda365e292e5cad7a # pin@v2
 
       # ℹ️ Command-line programs to run using the OS shell.
       # 📚 https://git.io/JvXDl
@@ -66,4 +66,4 @@
       #   make bootstrap
       #   make release
       - name: Perform CodeQL Analysis
-        uses: 
github/codeql-action/analyze@f3feb00acb00f31a6f60280e6ace9ca31d91c76a # pin@v2
+        uses: 
github/codeql-action/analyze@cdcdbb579706841c47f7063dda365e292e5cad7a # pin@v2
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fortio-1.54.3/.github/workflows/main.yml 
new/fortio-1.55.0/.github/workflows/main.yml
--- old/fortio-1.54.3/.github/workflows/main.yml        2023-05-03 
03:33:32.000000000 +0200
+++ new/fortio-1.55.0/.github/workflows/main.yml        2023-06-15 
01:22:53.000000000 +0200
@@ -22,14 +22,14 @@
     # Steps represent a sequence of tasks that will be executed as part of the 
job
     steps:
       # Checks-out your repository under $GITHUB_WORKSPACE, so your job can 
access it
-      - uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # 
pin@v3
+      - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # 
pin@v3
 
       - name: Set up QEMU
-        uses: 
docker/setup-qemu-action@e81a89b1732b9c48d79cd809d8d81d79c4647a18 # pin@v2
+        uses: 
docker/setup-qemu-action@2b82ce82d56a2a04d2637cd93a637ae1b359c0a7 # pin@v2
 
       - name: Set up Docker Buildx
         id: buildx
-        uses: 
docker/setup-buildx-action@4b4e9c3e2d4531116a6f8ba8e71fc6e2cb6e6c8c # pin@v2
+        uses: 
docker/setup-buildx-action@6a58db7e0d21ca03e6c44877909e80e45217eed2 # pin@v2
 
       - name: Available platforms
         run: echo ${{ steps.buildx.outputs.platforms }}
@@ -51,7 +51,7 @@
           echo "Version $VERSION, Package version $PACKAGE_VERSION"
 
       - name: Build and push Docker image
-        uses: 
docker/build-push-action@3b5e8027fcad23fda98b2e3ac259d8d67585f671 # pin@v3
+        uses: 
docker/build-push-action@44ea916f6c540f9302d50c2b1e5a8dc071f15cdf # pin@v3
         with:
           context: .
           platforms: linux/amd64,linux/arm64,linux/ppc64le,linux/s390x
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fortio-1.54.3/.github/workflows/manual-build.yml 
new/fortio-1.55.0/.github/workflows/manual-build.yml
--- old/fortio-1.54.3/.github/workflows/manual-build.yml        2023-05-03 
03:33:32.000000000 +0200
+++ new/fortio-1.55.0/.github/workflows/manual-build.yml        2023-06-15 
01:22:53.000000000 +0200
@@ -21,16 +21,16 @@
         run: |
           echo "tag is ${{ github.event.inputs.tag }}"
 
-      - uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # 
pin@v3
+      - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # 
pin@v3
         with:
           ref: ${{ github.event.inputs.tag }}
 
       - name: Set up QEMU
-        uses: 
docker/setup-qemu-action@e81a89b1732b9c48d79cd809d8d81d79c4647a18 # pin@v2
+        uses: 
docker/setup-qemu-action@2b82ce82d56a2a04d2637cd93a637ae1b359c0a7 # pin@v2
 
       - name: Set up Docker Buildx
         id: buildx
-        uses: 
docker/setup-buildx-action@4b4e9c3e2d4531116a6f8ba8e71fc6e2cb6e6c8c # pin@v2
+        uses: 
docker/setup-buildx-action@6a58db7e0d21ca03e6c44877909e80e45217eed2 # pin@v2
 
       - name: Build
         id: build
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fortio-1.54.3/.golangci.yml 
new/fortio-1.55.0/.golangci.yml
--- old/fortio-1.54.3/.golangci.yml     2023-05-03 03:33:32.000000000 +0200
+++ new/fortio-1.55.0/.golangci.yml     2023-06-15 01:22:53.000000000 +0200
@@ -1,4 +1,4 @@
-# Config for golanglint-ci
+# Config for golangci-lint
 
 # output configuration options
 
@@ -45,14 +45,6 @@
           - (github.com/golangci/golangci-lint/pkg/logutils.Log).FErrf
     enable-all: true
     disable-all: false
-  depguard:
-    list-type: blacklist
-    include-go-root: false
-    packages:
-      - github.com/sirupsen/logrus
-    packages-with-error-message:
-      # specify an error message to output when a blacklisted package is used
-      - github.com/sirupsen/logrus: "logging is allowed only by fortio.log"
   lll:
     # max line length, lines longer will be reported. Default is 120.
     # '\t' is counted as 1 character by default, and can be changed with the 
tab-width option
@@ -115,6 +107,7 @@
     - cyclop
     - forcetypeassert
     - ireturn
+    - depguard
   enable-all: true
   disable-all: false
   # Must not use fast: true in newer golangci-lint or it'll just skip a bunch 
of linter instead of doing caching like before (!)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fortio-1.54.3/Dockerfile new/fortio-1.55.0/Dockerfile
--- old/fortio-1.54.3/Dockerfile        2023-05-03 03:33:32.000000000 +0200
+++ new/fortio-1.55.0/Dockerfile        2023-06-15 01:22:53.000000000 +0200
@@ -1,5 +1,5 @@
 # Build the binaries in larger image
-FROM 
docker.io/fortio/fortio.build:v58@sha256:84ab73744546c1b27e2f08143e2c080114c4f1864f760b9fca3908683259d3c4
 as build
+FROM 
docker.io/fortio/fortio.build:v59@sha256:735db577fe940063725cdac8dd2723875f147434f266cbdf0e6970b4fd9b1a07
 as build
 WORKDIR /build
 COPY --chown=build:build . fortio
 ARG MODE=install
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fortio-1.54.3/Dockerfile.build 
new/fortio-1.55.0/Dockerfile.build
--- old/fortio-1.54.3/Dockerfile.build  2023-05-03 03:33:32.000000000 +0200
+++ new/fortio-1.55.0/Dockerfile.build  2023-06-15 01:22:53.000000000 +0200
@@ -1,5 +1,5 @@
 # Dependencies and linters for build:
-FROM 
golang:1.20.4@sha256:6dd5c5f8936d7d4487802fb10a77f31b1776740be0fc17ada1acb74ac958f7be
+FROM 
golang:1.20.5@sha256:4b1fc02d16fca272e5e6e6adc98396219b43ef663a377eef4a97e881d364393f
 # Need gcc for -race test (and some linters though those work with 
CGO_ENABLED=0)
 RUN apt-get -y update && \
   apt-get --no-install-recommends -y upgrade && \
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fortio-1.54.3/Dockerfile.echosrv 
new/fortio-1.55.0/Dockerfile.echosrv
--- old/fortio-1.54.3/Dockerfile.echosrv        2023-05-03 03:33:32.000000000 
+0200
+++ new/fortio-1.55.0/Dockerfile.echosrv        2023-06-15 01:22:53.000000000 
+0200
@@ -1,5 +1,5 @@
 # Build the binaries in larger image
-FROM 
docker.io/fortio/fortio.build:v58@sha256:84ab73744546c1b27e2f08143e2c080114c4f1864f760b9fca3908683259d3c4
 as build
+FROM 
docker.io/fortio/fortio.build:v59@sha256:735db577fe940063725cdac8dd2723875f147434f266cbdf0e6970b4fd9b1a07
 as build
 WORKDIR /build
 COPY . fortio
 RUN make -C fortio official-build-version BUILD_DIR=/build 
OFFICIAL_TARGET=fortio.org/fortio/echosrv
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fortio-1.54.3/Dockerfile.fcurl 
new/fortio-1.55.0/Dockerfile.fcurl
--- old/fortio-1.54.3/Dockerfile.fcurl  2023-05-03 03:33:32.000000000 +0200
+++ new/fortio-1.55.0/Dockerfile.fcurl  2023-06-15 01:22:53.000000000 +0200
@@ -1,5 +1,5 @@
 # Build the binaries in larger image
-FROM 
docker.io/fortio/fortio.build:v58@sha256:84ab73744546c1b27e2f08143e2c080114c4f1864f760b9fca3908683259d3c4
 as build
+FROM 
docker.io/fortio/fortio.build:v59@sha256:735db577fe940063725cdac8dd2723875f147434f266cbdf0e6970b4fd9b1a07
 as build
 WORKDIR /build
 COPY . fortio
 RUN make -C fortio official-build-version BUILD_DIR=/build 
OFFICIAL_TARGET=fortio.org/fortio/fcurl
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fortio-1.54.3/Makefile new/fortio-1.55.0/Makefile
--- old/fortio-1.54.3/Makefile  2023-05-03 03:33:32.000000000 +0200
+++ new/fortio-1.55.0/Makefile  2023-06-15 01:22:53.000000000 +0200
@@ -7,7 +7,7 @@
 IMAGES=echosrv fcurl # plus the combo image / Dockerfile without ext.
 
 DOCKER_PREFIX := docker.io/fortio/fortio
-BUILD_IMAGE_TAG := 
v58@sha256:84ab73744546c1b27e2f08143e2c080114c4f1864f760b9fca3908683259d3c4
+BUILD_IMAGE_TAG := 
v59@sha256:735db577fe940063725cdac8dd2723875f147434f266cbdf0e6970b4fd9b1a07
 BUILDX_PLATFORMS := linux/amd64,linux/arm64,linux/ppc64le,linux/s390x
 BUILDX_POSTFIX :=
 ifeq '$(shell echo $(BUILDX_PLATFORMS) | awk -F "," "{print NF-1}")' '0'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fortio-1.54.3/README.md new/fortio-1.55.0/README.md
--- old/fortio-1.54.3/README.md 2023-05-03 03:33:32.000000000 +0200
+++ new/fortio-1.55.0/README.md 2023-06-15 01:22:53.000000000 +0200
@@ -1,4 +1,4 @@
-<!-- 1.54.3 -->
+<!-- 1.55.0 -->
 # Fortio
 
 [![Awesome 
Go](https://fortio.org/mentioned-badge.svg)](https://github.com/avelino/awesome-go#networking)
@@ -33,7 +33,7 @@
 
 We also have moved some of the library to their own toplevel package, like:
 - Dynamic flags: 
[fortio.org/dflag](https://github.com/fortio/dflag#fortio-dynamic-flags)
-- Logger: [fortio.org/log](https://github.com/fortio/log#log)
+- Logger: [fortio.org/log](https://github.com/fortio/log#log) - now using 
structured JSON logs for servers (vs text for CLIs) since fortio 1.55 / log 1.4.
 - Version helper: 
[fortio.org/version](https://github.com/fortio/version#version)
 - CLI helpers integrating the above to reduce toil making new tools 
[fortio.org/cli](https://github.com/fortio/cli#cli) and servers 
[fortio.org/scli](https://github.com/fortio/scli#scli) for arguments, flags, 
usage, dynamic config, etc...
 
@@ -60,13 +60,13 @@
 The [releases](https://github.com/fortio/fortio/releases) page has binaries 
for many OS/architecture combinations (see assets):
 
 ```shell
-curl -L 
https://github.com/fortio/fortio/releases/download/v1.54.3/fortio-linux_amd64-1.54.3.tgz
 \
+curl -L 
https://github.com/fortio/fortio/releases/download/v1.55.0/fortio-linux_amd64-1.55.0.tgz
 \
  | sudo tar -C / -xvzpf -
 # or the debian package
-wget 
https://github.com/fortio/fortio/releases/download/v1.54.3/fortio_1.54.3_amd64.deb
-dpkg -i fortio_1.54.3_amd64.deb
+wget 
https://github.com/fortio/fortio/releases/download/v1.55.0/fortio_1.55.0_amd64.deb
+dpkg -i fortio_1.55.0_amd64.deb
 # or the rpm
-rpm -i 
https://github.com/fortio/fortio/releases/download/v1.54.3/fortio-1.54.3-1.x86_64.rpm
+rpm -i 
https://github.com/fortio/fortio/releases/download/v1.55.0/fortio-1.55.0-1.x86_64.rpm
 # and more, see assets in release page
 ```
 
@@ -76,7 +76,7 @@
 brew install fortio
 ```
 
-On Windows, download 
https://github.com/fortio/fortio/releases/download/v1.54.3/fortio_win_1.54.3.zip
 and extract `fortio.exe` to any location, then using the Windows Command 
Prompt:
+On Windows, download 
https://github.com/fortio/fortio/releases/download/v1.55.0/fortio_win_1.55.0.zip
 and extract `fortio.exe` to any location, then using the Windows Command 
Prompt:
 ```
 fortio.exe server
 ```
@@ -127,7 +127,7 @@
 <!-- use release/updateFlags.sh to update this section -->
 <pre>
 <!-- USAGE_START -->
-Φορτίο 1.54.3 usage:
+Φορτίο 1.55.0 usage:
         fortio command [flags] target
 where command is one of: load (load testing), server (starts ui, rest api,
  http-echo, redirect, proxies, tcp-echo, udp-echo and grpc ping servers),
@@ -238,6 +238,8 @@
   -json path
         Json output to provided file path or '-' for stdout (empty = no json 
output,
 unless -a is used)
+  -json-log
+        Log in JSON format, use -json-log=false to disable (default true)
   -k    Do not verify certs in https/tls/grpc connections
   -keepalive
         Keep connection alive (only for fast http 1.1) (default true)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fortio-1.54.3/Webtest.sh new/fortio-1.55.0/Webtest.sh
--- old/fortio-1.54.3/Webtest.sh        2023-05-03 03:33:32.000000000 +0200
+++ new/fortio-1.55.0/Webtest.sh        2023-06-15 01:22:53.000000000 +0200
@@ -140,7 +140,7 @@
 PPROF_URL="$BASE_URL/debug/pprof/heap?debug=1"
 $CURL "$PPROF_URL" | grep -i TotalAlloc # should find this in memory profile
 # creating dummy container to hold a volume for test certs due to remote 
docker bind mount limitation.
-DOCKERCURLID=$(docker run -d -v $TEST_CERT_VOL --net host --name 
$DOCKERSECVOLNAME 
docker.io/fortio/fortio.build:v58@sha256:84ab73744546c1b27e2f08143e2c080114c4f1864f760b9fca3908683259d3c4
 sleep 120)
+DOCKERCURLID=$(docker run -d -v $TEST_CERT_VOL --net host --name 
$DOCKERSECVOLNAME 
docker.io/fortio/fortio.build:v59@sha256:735db577fe940063725cdac8dd2723875f147434f266cbdf0e6970b4fd9b1a07
 sleep 120)
 # while we have something with actual curl binary do
 # Test for h2c upgrade (#562)
 docker exec $DOCKERSECVOLNAME /usr/bin/curl -v --http2 -m 10 -d foo42 
http://localhost:8080/debug | tee >(cat 1>&2) | grep foo42
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fortio-1.54.3/fhttp/http_client.go 
new/fortio-1.55.0/fhttp/http_client.go
--- old/fortio-1.54.3/fhttp/http_client.go      2023-05-03 03:33:32.000000000 
+0200
+++ new/fortio-1.55.0/fhttp/http_client.go      2023-06-15 01:22:53.000000000 
+0200
@@ -203,6 +203,7 @@
        Payload          []byte        // body for http request, implies POST 
if not empty.
        LogErrors        bool          // whether to log non 2xx code as they 
occur or not
        ID               int           `json:"-"` // thread/connect id to use 
for logging (thread id when used as a runner)
+       UniqueID         int64         `json:"-"` // Run identifier when used 
through a runner, copied from RunnerOptions.RunID
        SequentialWarmup bool          // whether to do http(s) runs warmup 
sequentially or in parallel (new default is //)
        ConnReuseRange   [2]int        // range of max number of connection to 
reuse for each thread.
        // When false, re-resolve the DNS name when the connection breaks.
@@ -409,6 +410,7 @@
        bodyContainsUUID     bool // if body contains the "{uuid}" pattern 
(lowercase)
        logErrors            bool
        id                   int
+       runID                int64
        ipAddrUsage          *stats.Occurrence
        connectStats         *stats.Histogram
        clientTrace          CreateClientTrace
@@ -521,7 +523,7 @@
        code := resp.StatusCode
        log.Debugf("[%d] Got %d : %s for %s %s - response is %d bytes", c.id, 
code, resp.Status, req.Method, c.url, len(data))
        if c.logErrors && !codeIsOK(code) {
-               log.Warnf("[%d] Non ok http code %d", c.id, code)
+               log.S(log.Warning, "Non ok http code", log.Attr("code", code), 
log.Attr("thread", c.id), log.Attr("run", c.runID))
        }
        return code, n, 0
 }
@@ -573,6 +575,7 @@
                connectStats: stats.NewHistogram(o.Offset.Seconds(), 
o.Resolution),
                clientTrace:  o.ClientTrace,
                dataWriter:   o.DataWriter,
+               runID:        o.UniqueID,
        }
        dialCtx := func(ctx context.Context, network, addr string) (net.Conn, 
error) {
                // redirect all connections to resolved ip, and use cn as sni 
host
@@ -702,6 +705,7 @@
        uuidMarkers  [][]byte
        logErrors    bool
        id           int
+       runID        int64
        https        bool
        tlsConfig    *tls.Config
        // Resolve the DNS name for each connection
@@ -784,7 +788,7 @@
        // note: Host includes the port
        bc := FastClient{
                url: o.URL, host: url.Host, hostname: url.Hostname(), port: 
url.Port(),
-               http10: o.HTTP10, halfClose: o.AllowHalfClose, logErrors: 
o.LogErrors, id: o.ID,
+               http10: o.HTTP10, halfClose: o.AllowHalfClose, logErrors: 
o.LogErrors, id: o.ID, runID: o.UniqueID,
                https: o.https, connReuseRange: o.ConnReuseRange, connReuse: 
connReuse,
                resolve: o.Resolve, noResolveEachConn: o.NoResolveEachConn, 
ipAddrUsage: stats.NewOccurrence(),
                // Keep track of timing for connection (re)establishment.
@@ -1055,7 +1059,8 @@
                        // TODO handle 100 Continue, make the "ok" codes 
configurable
                        if !codeIsOK(c.code) {
                                if c.logErrors {
-                                       log.Warnf("[%d] Non ok http code %d 
(%v)", c.id, c.code, string(c.buffer[:retcodeOffset+3]))
+                                       log.S(log.Warning, "Non ok http code", 
log.Attr("code", c.code), log.Str("status", string(c.buffer[:retcodeOffset+3])),
+                                               log.Attr("thread", c.id), 
log.Attr("run", c.runID))
                                }
                                break
                        }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fortio-1.54.3/fhttp/httprunner.go 
new/fortio-1.55.0/fhttp/httprunner.go
--- old/fortio-1.54.3/fhttp/httprunner.go       2023-05-03 03:33:32.000000000 
+0200
+++ new/fortio-1.55.0/fhttp/httprunner.go       2023-06-15 01:22:53.000000000 
+0200
@@ -94,10 +94,11 @@
 
        connReuseMsg := ""
        if o.ConnReuseRange != [2]int{0, 0} {
-               connReuseMsg = fmt.Sprintf(", with connection reuse [%d, %d]", 
o.ConnReuseRange[0], o.ConnReuseRange[1])
+               connReuseMsg = fmt.Sprintf("[%d, %d]", o.ConnReuseRange[0], 
o.ConnReuseRange[1])
        }
-       log.Infof("Starting http test for %s with %d threads at %.1f qps and %s 
warmup%s",
-               o.URL, o.NumThreads, o.QPS, warmupMode, connReuseMsg)
+       log.S(log.Info, "Starting http test", log.Attr("run", o.RunID), 
log.Str("url", o.URL),
+               log.Attr("threads", o.NumThreads), log.Str("qps", 
fmt.Sprintf("%.1f", o.QPS)), log.Str("warmup", warmupMode),
+               log.Str("conn-reuse", connReuseMsg))
        r := periodic.NewPeriodicRunner(&o.RunnerOptions)
        if o.HTTPOptions.Resolution <= 0 {
                // Set both connect histogram params when Resolution isn't set 
explicitly on the HTTP options
@@ -107,6 +108,7 @@
        }
        defer r.Options().Abort()
        numThreads := r.Options().NumThreads // can change during run for c > 2 
n
+       o.HTTPOptions.UniqueID = o.RunnerOptions.RunID
        o.HTTPOptions.Init(o.URL)
        out := r.Options().Out // Important as the default value is set from 
nil to stdout inside NewPeriodicRunner
        total := HTTPRunnerResults{
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fortio-1.54.3/fhttp/httprunner_test.go 
new/fortio-1.55.0/fhttp/httprunner_test.go
--- old/fortio-1.54.3/fhttp/httprunner_test.go  2023-05-03 03:33:32.000000000 
+0200
+++ new/fortio-1.55.0/fhttp/httprunner_test.go  2023-06-15 01:22:53.000000000 
+0200
@@ -283,6 +283,7 @@
        traceFactory := func(ctx context.Context) *httptrace.ClientTrace { 
return trace }
        opts.DisableFastClient = true
        opts.ClientTrace = traceFactory
+       opts.LogErrors = true
        for _, format := range []string{"json", "influx"} {
                dir := t.TempDir()
                fname := path.Join(dir, "access.log")
@@ -657,6 +658,7 @@
        log.SetLogLevel(log.Verbose)
        opts.AllowInitialErrors = true
        opts.NumThreads = 1
+       opts.LogErrors = true
        _, err = RunHTTPTest(&opts)
        if err != nil {
                t.Errorf("Expecting no error because of allowing initial 
errors, got: %v", err)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fortio-1.54.3/go.mod new/fortio-1.55.0/go.mod
--- old/fortio-1.54.3/go.mod    2023-05-03 03:33:32.000000000 +0200
+++ new/fortio-1.55.0/go.mod    2023-06-15 01:22:53.000000000 +0200
@@ -6,13 +6,13 @@
        fortio.org/assert v1.2.0
        fortio.org/cli v1.1.0
        fortio.org/dflag v1.5.2
-       fortio.org/log v1.3.0
-       fortio.org/scli v1.4.0
+       fortio.org/log v1.4.0
+       fortio.org/scli v1.5.0
        fortio.org/version v1.0.2
        github.com/golang/protobuf v1.5.3
        github.com/google/uuid v1.3.0
-       golang.org/x/net v0.9.0
-       google.golang.org/grpc v1.54.0
+       golang.org/x/net v0.11.0
+       google.golang.org/grpc v1.55.0
 )
 
 // Local dev of dependencies changes
@@ -29,8 +29,8 @@
        fortio.org/sets v1.0.3 // indirect
        github.com/fsnotify/fsnotify v1.6.0 // indirect
        golang.org/x/exp v0.0.0-20230425010034-47ecfdc1ba53 // indirect
-       golang.org/x/sys v0.7.0 // indirect
-       golang.org/x/text v0.9.0 // indirect
+       golang.org/x/sys v0.9.0 // indirect
+       golang.org/x/text v0.10.0 // indirect
        google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1 // 
indirect
        google.golang.org/protobuf v1.30.0 // indirect
 )
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fortio-1.54.3/go.sum new/fortio-1.55.0/go.sum
--- old/fortio-1.54.3/go.sum    2023-05-03 03:33:32.000000000 +0200
+++ new/fortio-1.55.0/go.sum    2023-06-15 01:22:53.000000000 +0200
@@ -4,10 +4,10 @@
 fortio.org/cli v1.1.0/go.mod h1:O3nVImKwJSvHKbMYWkqMbEagAXCS1xvSv1YbHwkKJjY=
 fortio.org/dflag v1.5.2 h1:F9XVRj4Qr2IbJP7BMj7XZc9wB0Q/RZ61Ool+4YPVad8=
 fortio.org/dflag v1.5.2/go.mod h1:ppb/A8u+KKg+qUUYZNYuvRnXuVb8IsdHb/XGzsmjkN8=
-fortio.org/log v1.3.0 h1:bESPvuQGKejw7rrx41Sg3GoF+tsrB7oC08PxBs5/AM0=
-fortio.org/log v1.3.0/go.mod h1:u/8/2lyczXq52aT5Nw6reD+3cR6m/EbS2jBiIYhgiTU=
-fortio.org/scli v1.4.0 h1:hWULZt2eCuN9NMGX9pFMubMY/lNAxFWnNfwxPn2pztE=
-fortio.org/scli v1.4.0/go.mod h1:wj7RDObUezKJkPCLHuNb6ktrnRhUYOLCkMhnFhhsfxA=
+fortio.org/log v1.4.0 h1:xTCWj0nCj1QFw+QoBmOmxLsXXb7nqtwyoNGYcLFWEA4=
+fortio.org/log v1.4.0/go.mod h1:u/8/2lyczXq52aT5Nw6reD+3cR6m/EbS2jBiIYhgiTU=
+fortio.org/scli v1.5.0 h1:FG7thN0PM9KQInU+LFZ+mjUvShA02hdJNTRVp0r+QUQ=
+fortio.org/scli v1.5.0/go.mod h1:42O1YYpSz+C9wKyfMkhtugtkldWX3zVGsrmCICRhkwg=
 fortio.org/sets v1.0.3 h1:HzewdGjH69YmyW06yzplL35lGr+X4OcqQt0qS6jbaO4=
 fortio.org/sets v1.0.3/go.mod h1:QZVj0r6KP/ZD9ebySW9SgxVNy/NjghUfyHW9NN+WU+4=
 fortio.org/version v1.0.2 h1:8NwxdX58aoeKx7T5xAPO0xlUu1Hpk42nRz5s6e6eKZ0=
@@ -23,18 +23,18 @@
 github.com/google/uuid v1.3.0/go.mod 
h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
 golang.org/x/exp v0.0.0-20230425010034-47ecfdc1ba53 
h1:5llv2sWeaMSnA3w2kS57ouQQ4pudlXrR0dCgw51QK9o=
 golang.org/x/exp v0.0.0-20230425010034-47ecfdc1ba53/go.mod 
h1:V1LtkGg67GoY2N1AnLN78QLrzxkLyJw7RJb1gzOOz9w=
-golang.org/x/net v0.9.0 h1:aWJ/m6xSmxWBx+V0XRHTlrYrPG56jKsLdTFmsSsCzOM=
-golang.org/x/net v0.9.0/go.mod h1:d48xBJpPfHeWQsugry2m+kC02ZBRGRgulfHnEXEuWns=
+golang.org/x/net v0.11.0 h1:Gi2tvZIJyBtO9SDr1q9h5hEQCp/4L2RQ+ar0qjx2oNU=
+golang.org/x/net v0.11.0/go.mod h1:2L/ixqYpgIVXmeoSA/4Lu7BzTG4KIyPIryS4IsOd1oQ=
 golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod 
h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.7.0 h1:3jlCCIQZPdOYu1h8BkNvLz8Kgwtae2cagcG/VamtZRU=
-golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/text v0.9.0 h1:2sjJmO8cDvYveuX97RDLsxlyUxLl+GHoLxBiRdHllBE=
-golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
+golang.org/x/sys v0.9.0 h1:KS/R3tvhPqvJvwcKfnBHJwwthS11LRhmM5D59eEXa0s=
+golang.org/x/sys v0.9.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/text v0.10.0 h1:UpjohKhiEgNc0CSauXmwYftY1+LlaC75SJwh0SgCX58=
+golang.org/x/text v0.10.0/go.mod 
h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
 golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod 
h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
 google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1 
h1:KpwkzHKEF7B9Zxg18WzOa7djJ+Ha5DzthMyZYQfEn2A=
 google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1/go.mod 
h1:nKE/iIaLqn2bQwXBg8f1g2Ylh6r5MN5CmZvuzZCgsCU=
-google.golang.org/grpc v1.54.0 h1:EhTqbhiYeixwWQtAEZAxmV9MGqcjEU2mFx52xCzNyag=
-google.golang.org/grpc v1.54.0/go.mod 
h1:PUSEXI6iWghWaB6lXM4knEgpJNu2qUcKfDtNci3EC2g=
+google.golang.org/grpc v1.55.0 h1:3Oj82/tFSCeUrRTg/5E/7d/W5A1tj6Ky1ABAuZuv5ag=
+google.golang.org/grpc v1.55.0/go.mod 
h1:iYEXKGkEBhg1PjZQvoYEVPTDkHo1/bjTnfwTeGONTY8=
 google.golang.org/protobuf v1.26.0-rc.1/go.mod 
h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
 google.golang.org/protobuf v1.26.0/go.mod 
h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
 google.golang.org/protobuf v1.30.0 
h1:kPPoIgf3TsEvrm0PFe15JQ+570QVxYzEvvHqChK+cng=
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fortio-1.54.3/periodic/periodic.go 
new/fortio-1.55.0/periodic/periodic.go
--- old/fortio-1.54.3/periodic/periodic.go      2023-05-03 03:33:32.000000000 
+0200
+++ new/fortio-1.55.0/periodic/periodic.go      2023-06-15 01:22:53.000000000 
+0200
@@ -404,7 +404,7 @@
                // Always print that as we need ^C to interrupt, in that case 
the user need to notice
                _, _ = fmt.Fprintf(r.Out, "Starting at %g qps with %d thread(s) 
[gomax %d] until interrupted%s\n",
                        r.QPS, r.NumThreads, runtime.GOMAXPROCS(0), extra)
-               return
+               return //nolint:nakedret // it's fine/cleaner to not repeat all 
the parameters we just set/we return.
        }
        // else:
        requestedDuration = fmt.Sprint(r.Duration)
@@ -561,6 +561,8 @@
        actualQPS := float64(functionDuration.Count) / elapsed.Seconds()
        if log.Log(log.Warning) {
                _, _ = fmt.Fprintf(r.Out, "Ended after %v : %d calls. 
qps=%.5g\n", elapsed, functionDuration.Count, actualQPS)
+               log.S(log.Info, "Run ended", log.Attr("run", r.RunID), 
log.Attr("elapsed", elapsed),
+                       log.Attr("calls", functionDuration.Count), 
log.Attr("qps", actualQPS))
        }
        if useQPS { //nolint:nestif
                percentNegative := 100. * float64(sleepTime.Hdata[0]) / 
float64(sleepTime.Count)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fortio-1.54.3/rapi/data.go 
new/fortio-1.55.0/rapi/data.go
--- old/fortio-1.54.3/rapi/data.go      2023-05-03 03:33:32.000000000 +0200
+++ new/fortio-1.55.0/rapi/data.go      2023-06-15 01:22:53.000000000 +0200
@@ -80,7 +80,7 @@
        useCache := (info.ModTime() == gTSVCache.cachedDirTime) && 
(len(gTSVCache.cachedResult) > 0)
        if !useCache {
                var b bytes.Buffer
-               b.Write([]byte("TsvHttpData-1.0\n"))
+               b.WriteString("TsvHttpData-1.0\n")
                for _, e := range DataList() {
                        fname := e + ".json"
                        f, err := os.Open(path.Join(dataDir, fname))
@@ -96,13 +96,13 @@
                                log.Errf("Copy/read error for %s: %v", fname, 
err)
                                continue
                        }
-                       b.Write([]byte(urlPrefix))
-                       b.Write([]byte(fname))
-                       b.Write([]byte("\t"))
-                       b.Write([]byte(strconv.FormatInt(sz, 10)))
-                       b.Write([]byte("\t"))
-                       
b.Write([]byte(base64.StdEncoding.EncodeToString(h.Sum(nil))))
-                       b.Write([]byte("\n"))
+                       b.WriteString(urlPrefix)
+                       b.WriteString(fname)
+                       b.WriteString("\t")
+                       b.WriteString(strconv.FormatInt(sz, 10))
+                       b.WriteString("\t")
+                       
b.WriteString(base64.StdEncoding.EncodeToString(h.Sum(nil)))
+                       b.WriteString("\n")
                }
                gTSVCache.cachedDirTime = info.ModTime()
                gTSVCache.cachedResult = b.Bytes()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fortio-1.54.3/rapi/restHandler.go 
new/fortio-1.55.0/rapi/restHandler.go
--- old/fortio-1.54.3/rapi/restHandler.go       2023-05-03 03:33:32.000000000 
+0200
+++ new/fortio-1.55.0/rapi/restHandler.go       2023-06-15 01:22:53.000000000 
+0200
@@ -231,6 +231,7 @@
        durStr := FormValue(r, jd, "t")
        jitter := (FormValue(r, jd, "jitter") == "on")
        uniform := (FormValue(r, jd, "uniform") == "on")
+       logErrors := (FormValue(r, jd, "log-errors") == "on")
        nocatchup := (FormValue(r, jd, "nocatchup") == "on")
        stdClient := (FormValue(r, jd, "stdclient") == "on")
        h2 := (FormValue(r, jd, "h2") == "on")
@@ -285,6 +286,7 @@
        httpopts.Insecure = httpsInsecure
        httpopts.Resolve = resolve
        httpopts.H2 = h2
+       httpopts.LogErrors = logErrors
        // Set the connection reuse range.
        err = bincommon.ConnectionReuseRange.
                
WithValidator(bincommon.ConnectionReuseRangeValidator(httpopts)).
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fortio-1.54.3/release/Dockerfile.in 
new/fortio-1.55.0/release/Dockerfile.in
--- old/fortio-1.54.3/release/Dockerfile.in     2023-05-03 03:33:32.000000000 
+0200
+++ new/fortio-1.55.0/release/Dockerfile.in     2023-06-15 01:22:53.000000000 
+0200
@@ -1,5 +1,5 @@
 # Concatenated after ../Dockerfile to create the tgz
-FROM 
docker.io/fortio/fortio.build:v58@sha256:84ab73744546c1b27e2f08143e2c080114c4f1864f760b9fca3908683259d3c4
 as stage
+FROM 
docker.io/fortio/fortio.build:v59@sha256:735db577fe940063725cdac8dd2723875f147434f266cbdf0e6970b4fd9b1a07
 as stage
 ARG archs="amd64 arm64 ppc64le s390x"
 ENV archs=${archs}
 # Build image defaults to build user, switch back to root for
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fortio-1.54.3/stats/stats_test.go 
new/fortio-1.55.0/stats/stats_test.go
--- old/fortio-1.54.3/stats/stats_test.go       2023-05-03 03:33:32.000000000 
+0200
+++ new/fortio-1.55.0/stats/stats_test.go       2023-06-15 01:22:53.000000000 
+0200
@@ -43,6 +43,7 @@
        c.Print(w, "test1h", []float64{50.0})
        expected += "test1h : no data\n"
        log.Config.LogFileAndLine = false
+       log.Config.JSON = false
        log.SetFlags(0)
        log.SetOutput(w)
        c.Export().CalcPercentile(50)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fortio-1.54.3/ui/templates/main.html 
new/fortio-1.55.0/ui/templates/main.html
--- old/fortio-1.54.3/ui/templates/main.html    2023-05-03 03:33:32.000000000 
+0200
+++ new/fortio-1.55.0/ui/templates/main.html    2023-06-15 01:22:53.000000000 
+0200
@@ -45,7 +45,8 @@
     Duration: <input id="duration" type="text" name="t" size="6" value="3s" />
     or run until interrupted:<input type="checkbox" name="t" 
onchange="toggleDuration(this)" />
     or run for exactly <input type="text" name="n" size="6" value="" /> calls. 
<br />
-    Threads/Simultaneous connections: <input type="text" name="c" size="6" 
value="10" /> <br />
+    Threads/Simultaneous connections: <input type="text" name="c" size="6" 
value="10" /> &nbsp;&nbsp;
+    Log errors <input type="checkbox" name="log-errors" checked> <br />
     Connection reuse range: Min <input type="text" 
name="connection-reuse-range-min" size="6" value="" />
     Max <input type="text" name="connection-reuse-range-max" size="6" value="" 
/>
     or Single value: <input type="text" name="connection-reuse-range-value" 
size="6" value="" /> <br />
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fortio-1.54.3/ui/uihandler.go 
new/fortio-1.55.0/ui/uihandler.go
--- old/fortio-1.54.3/ui/uihandler.go   2023-05-03 03:33:32.000000000 +0200
+++ new/fortio-1.55.0/ui/uihandler.go   2023-06-15 01:22:53.000000000 +0200
@@ -135,6 +135,7 @@
        uniform := (r.FormValue("uniform") == "on")
        nocatchup := (r.FormValue("nocatchup") == "on")
        stdClient := (r.FormValue("stdclient") == "on")
+       logErrors := (r.FormValue("log-errors") == "on")
        h2 := (r.FormValue("h2") == "on")
        sequentialWarmup := (r.FormValue("sequential-warmup") == "on")
        httpsInsecure := (r.FormValue("https-insecure") == "on")
@@ -195,6 +196,7 @@
        httpopts.Insecure = httpsInsecure
        httpopts.Resolve = resolve
        httpopts.H2 = h2
+       httpopts.LogErrors = logErrors
        // Set the connection reuse range.
        err := bincommon.ConnectionReuseRange.
                
WithValidator(bincommon.ConnectionReuseRangeValidator(httpopts)).

++++++ fortio.obsinfo ++++++
--- /var/tmp/diff_new_pack.neRDMn/_old  2023-06-16 16:54:51.225709883 +0200
+++ /var/tmp/diff_new_pack.neRDMn/_new  2023-06-16 16:54:51.229709906 +0200
@@ -1,5 +1,5 @@
 name: fortio
-version: 1.54.3
-mtime: 1683077612
-commit: c6665d10f24572d219ed90c65e011a4f8ffdc8d3
+version: 1.55.0
+mtime: 1686784973
+commit: 7d76c8ef1ea2b66f736b3d54d093ed0d2ce2a768
 

++++++ vendor.tar.gz ++++++
++++ 2909 lines of diff (skipped)

Reply via email to