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-03-05 20:08:12 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/fortio (Old) and /work/SRC/openSUSE:Factory/.fortio.new.31432 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "fortio" Sun Mar 5 20:08:12 2023 rev:33 rq:1069462 version:1.53.0 Changes: -------- --- /work/SRC/openSUSE:Factory/fortio/fortio.changes 2023-02-27 12:55:19.819408441 +0100 +++ /work/SRC/openSUSE:Factory/.fortio.new.31432/fortio.changes 2023-03-05 20:08:13.964769580 +0100 @@ -1,0 +2,8 @@ +Sun Mar 05 12:39:48 UTC 2023 - ka...@b1-systems.de + +- Update to version 1.53.0: + * Stream input back in echo h2 + h2c curl streaming payload + + minimal prometheus metrics (number of fd) (#721) + * Bump github/codeql-action from 2.2.4 to 2.2.5 (#722) + +------------------------------------------------------------------- Old: ---- fortio-1.52.0.tar.gz New: ---- fortio-1.53.0.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ fortio.spec ++++++ --- /var/tmp/diff_new_pack.l0zi9H/_old 2023-03-05 20:08:15.172775164 +0100 +++ /var/tmp/diff_new_pack.l0zi9H/_new 2023-03-05 20:08:15.172775164 +0100 @@ -19,7 +19,7 @@ %define __arch_install_post export NO_BRP_STRIP_DEBUG=true Name: fortio -Version: 1.52.0 +Version: 1.53.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.l0zi9H/_old 2023-03-05 20:08:15.216775368 +0100 +++ /var/tmp/diff_new_pack.l0zi9H/_new 2023-03-05 20:08:15.220775386 +0100 @@ -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.52.0</param> + <param name="revision">v1.53.0</param> <param name="versionformat">@PARENT_TAG@</param> <param name="changesgenerate">enable</param> <param name="versionrewrite-pattern">v(.*)</param> @@ -17,7 +17,7 @@ <param name="compression">gz</param> </service> <service name="go_modules" mode="disabled"> - <param name="archive">fortio-1.52.0.tar.gz</param> + <param name="archive">fortio-1.53.0.tar.gz</param> </service> </services> ++++++ _servicedata ++++++ --- /var/tmp/diff_new_pack.l0zi9H/_old 2023-03-05 20:08:15.244775497 +0100 +++ /var/tmp/diff_new_pack.l0zi9H/_new 2023-03-05 20:08:15.248775515 +0100 @@ -1,6 +1,6 @@ <servicedata> <service name="tar_scm"> <param name="url">https://github.com/fortio/fortio</param> - <param name="changesrevision">142cf8c8755d090704007690a4810d9ea7f83d6c</param></service></servicedata> + <param name="changesrevision">49f6e72a72ec061e0041f487d19e929d787c88f7</param></service></servicedata> (No newline at EOF) ++++++ fortio-1.52.0.tar.gz -> fortio-1.53.0.tar.gz ++++++ ++++ 1736 lines of diff (skipped) ++++++ vendor.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vendor/fortio.org/scli/cli.go new/vendor/fortio.org/scli/cli.go --- old/vendor/fortio.org/scli/cli.go 2023-02-26 16:08:57.000000000 +0100 +++ new/vendor/fortio.org/scli/cli.go 1970-01-01 01:00:00.000000000 +0100 @@ -1,88 +0,0 @@ -// Fortio CLI/Main utilities. -// -// (c) 2023 Fortio Authors -// See LICENSE - -// Package scli extends [cli] for server main()s -// [ServerMain] allows the setup of a confimap/directory watch for flags -// and a config endpoint (uses [fortio.org/dflag]). -// Configure using the [cli] package variables (at minimum [MinArgs] unless your -// binary only accepts flags), setup additional [flag] before calling -// [ServerMain]. -package scli // import "fortio.org/scli" - -import ( - "flag" - "net" - "net/http" - "strings" - "time" - - "fortio.org/cli" - "fortio.org/dflag/configmap" - "fortio.org/dflag/dynloglevel" - "fortio.org/dflag/endpoint" - "fortio.org/log" - "fortio.org/version" -) - -// NormalizePort parses port and returns host:port if port is in the form -// of host:port already or :port if port is only a port (doesn't contain :). -// Copied from fortio.org/fnet.NormalizePort to avoid dependency loop. -func NormalizePort(port string) string { - if strings.ContainsAny(port, ":") { - return port - } - return ":" + port -} - -// ServerMain extends [cli.Main] and returns true if a config port server has been started -// caller needs to select {} after their own code is ready. -// [cli.ExitFunction] will have been called (ie program will have exited exited) -// if there are usage errors (wrong number of arguments, bad flags etc...). -// It sets up (optional) config-dir to watch and listen on config-port for dynamic flag -// changes and UI/api. -func ServerMain() bool { - configDir := flag.String("config-dir", "", "Config `directory` to watch for dynamic flag changes") - configPort := flag.String("config-port", "", "Config `port` to open for dynamic flag UI/api") - dynloglevel.LoggerFlagSetup("loglevel") - cli.ServerMode = true - cli.Main() // will call ExitFunction() if there are usage errors - if *configDir != "" { - if _, err := configmap.Setup(flag.CommandLine, *configDir); err != nil { - log.Critf("Unable to watch config/flag changes in %v: %v", *configDir, err) - } - } - shortScliV, _, _ := version.FromBuildInfoPath("fortio.org/scli") - - hasStartedServer := false - if *configPort != "" { - // Sort of inlining fortio.org/fhttp.HTTPServer here to avoid - // a dependency loop. - port := NormalizePort(*configPort) - m := http.NewServeMux() - s := &http.Server{ - Addr: port, - Handler: m, - ReadTimeout: 3 * time.Second, - } - setURL := "/set" - ep := endpoint.NewFlagsEndpoint(flag.CommandLine, setURL) - m.HandleFunc("/", ep.ListFlags) - m.HandleFunc(setURL, ep.SetFlag) - ln, err := net.Listen("tcp", port) - if err != nil { - log.Fatalf("Unable to serve config on %s: %v", s.Addr, err) - } - log.Infof("Fortio scli %v dflag config server listening on %s", shortScliV, ln.Addr()) - go func() { - err := s.Serve(ln) - if err != nil { - log.Fatalf("Unable to serve config on %s: %v", s.Addr, err) - } - }() - hasStartedServer = true - } - log.Infof("Starting %s %s", cli.ProgramName, cli.LongVersion) - return hasStartedServer -} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vendor/fortio.org/scli/num_fd.go new/vendor/fortio.org/scli/num_fd.go --- old/vendor/fortio.org/scli/num_fd.go 1970-01-01 01:00:00.000000000 +0100 +++ new/vendor/fortio.org/scli/num_fd.go 2023-03-05 13:40:00.000000000 +0100 @@ -0,0 +1,59 @@ +// Fortio CLI util: number of open filedescriptor. +// +// (c) 2023 Fortio Authors +// See LICENSE + +//go:build !windows +// +build !windows + +package scli // import "fortio.org/scli" + +import ( + "os" + "runtime" + + "fortio.org/log" +) + +func countDir(dir string) int { + f, err := os.Open(dir) + if err != nil { + log.Errf("Unable to open %s: %v", dir, err) + return -1 + } + /* to run lsof between stage to debug that on macos /dev/fd gets opened twice somehow + if log.LogDebug() { + log.Debugf("Sleeping after open before Readdirnames") + time.Sleep(30 * time.Second) + log.Debugf("Done sleeping, calling Readdirnames") + } + */ + names, err := f.Readdirnames(-1) + if err != nil { + log.Errf("Unable to read %s: %v", dir, err) + f.Close() + return -1 + } + if log.LogDebug() { + log.Debugf("Found %d names in %s: %v", len(names), dir, names) + // time.Sleep(60 * time.Second) + // log.Debugf("Done sleeping, closing dir") + } + f.Close() + return len(names) - 1 // for the dir we just opened +} + +// NumFD returns the number of open file descriptors (or -1 on error). +// On windows it returns the number of handles. +func NumFD() int { + switch runtime.GOOS { + case "windows": + log.Fatalf("Shouldn't be reached (!windows build tag)") + return -1 // not reached (also, not possible) + case "darwin": + return countDir("/dev/fd") - 1 // macos seems to open 2 fds to Readdirnames /dev/fd + default: + // assume everyone else has a /proc/self/fd + return countDir("/proc/self/fd") + } +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vendor/fortio.org/scli/num_fd_windows.go new/vendor/fortio.org/scli/num_fd_windows.go --- old/vendor/fortio.org/scli/num_fd_windows.go 1970-01-01 01:00:00.000000000 +0100 +++ new/vendor/fortio.org/scli/num_fd_windows.go 2023-03-05 13:40:00.000000000 +0100 @@ -0,0 +1,42 @@ +// Fortio CLI util: number of open filedescriptor. +// +// (c) 2023 Fortio Authors +// See LICENSE + +//go:build windows +// +build windows + +package scli // import "fortio.org/scli" + +import ( + "syscall" + "unsafe" + + "fortio.org/log" + "golang.org/x/sys/windows" +) + +var ( + modkernel32 = windows.NewLazySystemDLL("kernel32.dll") + getProcessHandleCount = modkernel32.NewProc("GetProcessHandleCount") +) + +func GetCurrentProcessHandleCount() int { + hdl, err := windows.GetCurrentProcess() + if err != nil { + log.Errf("GetCurrentProcess failed: %v", err) + return -1 + } + count := uint32(0) + ret, _, err := syscall.Syscall(getProcessHandleCount.Addr(), 2, uintptr(hdl), uintptr(unsafe.Pointer(&count)), 0) + log.Debugf("GetProcessHandleCount = %v, %v : %v", ret, err, count) + if ret == 0 { + log.Errf("GetProcessHandleCount failed: %v", err) + return -1 + } + return int(count) +} + +func NumFD() int { + return GetCurrentProcessHandleCount() +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vendor/fortio.org/scli/scli.go new/vendor/fortio.org/scli/scli.go --- old/vendor/fortio.org/scli/scli.go 1970-01-01 01:00:00.000000000 +0100 +++ new/vendor/fortio.org/scli/scli.go 2023-03-05 13:40:00.000000000 +0100 @@ -0,0 +1,90 @@ +// Fortio CLI/Main utilities. +// +// (c) 2023 Fortio Authors +// See LICENSE + +// Package scli extends [cli] for server main()s +// [ServerMain] allows the setup of a confimap/directory watch for flags +// and a config endpoint (uses [fortio.org/dflag]). +// Configure using the [cli] package variables (at minimum [MinArgs] unless your +// binary only accepts flags), setup additional [flag] before calling +// [ServerMain]. +// It also includes [NumFD] utility function to cross platform get the number +// of open file descriptors (handles on windows) held by your go process. +package scli // import "fortio.org/scli" + +import ( + "flag" + "net" + "net/http" + "strings" + "time" + + "fortio.org/cli" + "fortio.org/dflag/configmap" + "fortio.org/dflag/dynloglevel" + "fortio.org/dflag/endpoint" + "fortio.org/log" + "fortio.org/version" +) + +// NormalizePort parses port and returns host:port if port is in the form +// of host:port already or :port if port is only a port (doesn't contain :). +// Copied from fortio.org/fnet.NormalizePort to avoid dependency loop. +func NormalizePort(port string) string { + if strings.ContainsAny(port, ":") { + return port + } + return ":" + port +} + +// ServerMain extends [cli.Main] and returns true if a config port server has been started +// caller needs to select {} after their own code is ready. +// [cli.ExitFunction] will have been called (ie program will have exited exited) +// if there are usage errors (wrong number of arguments, bad flags etc...). +// It sets up (optional) config-dir to watch and listen on config-port for dynamic flag +// changes and UI/api. +func ServerMain() bool { + configDir := flag.String("config-dir", "", "Config `directory` to watch for dynamic flag changes") + configPort := flag.String("config-port", "", "Config `port` to open for dynamic flag UI/api") + dynloglevel.LoggerFlagSetup("loglevel") + cli.ServerMode = true + cli.Main() // will call ExitFunction() if there are usage errors + if *configDir != "" { + if _, err := configmap.Setup(flag.CommandLine, *configDir); err != nil { + log.Critf("Unable to watch config/flag changes in %v: %v", *configDir, err) + } + } + shortScliV, _, _ := version.FromBuildInfoPath("fortio.org/scli") + + hasStartedServer := false + if *configPort != "" { + // Sort of inlining fortio.org/fhttp.HTTPServer here to avoid + // a dependency loop. + port := NormalizePort(*configPort) + m := http.NewServeMux() + s := &http.Server{ + Addr: port, + Handler: m, + ReadTimeout: 3 * time.Second, + } + setURL := "/set" + ep := endpoint.NewFlagsEndpoint(flag.CommandLine, setURL) + m.HandleFunc("/", ep.ListFlags) + m.HandleFunc(setURL, ep.SetFlag) + ln, err := net.Listen("tcp", port) + if err != nil { + log.Fatalf("Unable to serve config on %s: %v", s.Addr, err) + } + log.Infof("Fortio scli %v dflag config server listening on %s", shortScliV, ln.Addr()) + go func() { + err := s.Serve(ln) + if err != nil { + log.Fatalf("Unable to serve config on %s: %v", s.Addr, err) + } + }() + hasStartedServer = true + } + log.Infof("Starting %s %s", cli.ProgramName, cli.LongVersion) + return hasStartedServer +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vendor/modules.txt new/vendor/modules.txt --- old/vendor/modules.txt 2023-02-26 16:08:57.000000000 +0100 +++ new/vendor/modules.txt 2023-03-05 13:40:00.000000000 +0100 @@ -13,7 +13,7 @@ # fortio.org/log v1.3.0 ## explicit; go 1.18 fortio.org/log -# fortio.org/scli v1.2.0 +# fortio.org/scli v1.3.1 ## explicit; go 1.18 fortio.org/scli # fortio.org/sets v1.0.2 @@ -36,7 +36,7 @@ # github.com/google/uuid v1.3.0 ## explicit github.com/google/uuid -# golang.org/x/exp v0.0.0-20230224173230-c95f2b4c22f2 +# golang.org/x/exp v0.0.0-20230303215020-44a13b063f3e ## explicit; go 1.18 golang.org/x/exp/constraints # golang.org/x/net v0.7.0