Releases: form3tech-oss/f1
v2.2.1
Metrics Labels injection
What's Changed
- fix(metrics): fix race condition in metrics.Init() by @nvloff-f3 in #285
- Injection of static label/values to the F1 metrics by @mlornac in #290
New Contributors
Full Changelog: v2.1.2...v2.2.0
v2.1.2
What's Changed
- chore(deps): bump github.com/prometheus/common from 0.55.0 to 0.57.0 by @dependabot in #277
- chore(deps): bump github.com/prometheus/client_golang from 1.20.2 to 1.20.3 by @dependabot in #283
- chore(deps): bump github.com/prometheus/common from 0.57.0 to 0.59.1 by @dependabot in #282
- chore(ci): allow tests to run on Pull Requests by @nvloff-f3 in #281
- fix: Add F1_ prefix to over-scoped LOG_LEVEL, LOG_FORMAT environment variables by @dmitryabramov-f3 in #284
New Contributors
- @dmitryabramov-f3 made their first contribution in #284
Full Changelog: v2.1.1...v2.1.2
v2.1.1
What's Changed
- chore(deps): bump github.com/guptarohit/asciigraph from 0.7.1 to 0.7.2 by @dependabot in #269
- bump golangci-lint to 1.60.1 by @nvloff-f3 in #270
- chore(deps): bump github.com/prometheus/client_golang from 1.19.1 to 1.20.1 by @dependabot in #273
- bump linter to 1.60.2 & fix integer overflow conversion by @nvloff-f3 in #272
- chore(deps): bump github.com/prometheus/client_golang from 1.20.1 to 1.20.2 by @dependabot in #275
- chore(deps): bump github.com/wcharczuk/go-chart/v2 from 2.1.1 to 2.1.2 by @dependabot in #274
- fix: users in a staged run would exit immediately without max iterations by @nvloff-f3 in #276
Full Changelog: v2.1.0...v2.1.1
v2.1.0
Summary
The v2.1.0 release of f1 is closer to a complete rewrite, than a feature release. Includes massive
performance, security, usability and maintainability improvements.
Transforming f1 into a modern, high-quality and efficient package.
Highlights
- Massive performance improvements, by redesigning the work scheduling and removing per-iteration
memory allocations.- Performance no longer degrades with time.
- Significantly more iterations per second, with significantly less resources used:
- users low(2) concurrency: Up to 33 times more iterations per second (390k -> 12.8 mil) with 1.5x less user cpu time
and 23x less system CPU time. - users high(100) concurrency: Up to 28 times more iterations per second (173k -> 5mil) with 34x
less system CPU time and better CPU utilisation. - constant high(1000) concurrency: can sustain 10,000 IPS with 1000 workers, without dropped
iterations(previously 20% dropped) while using 300x less CPU time.
- users low(2) concurrency: Up to 33 times more iterations per second (390k -> 12.8 mil) with 1.5x less user cpu time
- Rework output formatting and support structured logging, including JSON logs with
LOG_FORMAT=json
,
log level support withLOG_LEVEL
, and providing custom loggers to f1. Migrate logger to
log/slog
withlogrus
compatibility layer. - Remove archived, abandoned, single-use and unnecessary dependencies to reduce the package footprint
and mitigate supply chain attacks. - Secure the CI pipeline with strict permissions, SHA version locking and CodeQL.
- Test suite now takes seconds(11s) instead of minutes(1m 5s) with better coverage.
- Features:
- Fixes:
Detailed
Breaking
Deprecations
Performance
- allocations: change testing.T iteration value
- allocations: remove per iteration allocations
- allocations/cpu: remove performance impact of progress reporting
- allocations/cpu: don't start a goroutine for each iteration
- cpu: rewrite iteration management to improve throughput
- cpu: rewrite work scheduling to improve performance
Features
- Require go 1.22
- Support Bash v2 completions
- Support CPU & Memory profiling with filename completion
- Support custom start-time for staged tests
Fixes
- exit after a timeout on stuck iterations
- don't panic on unknown scenario name
- change t.Log level to Info from Error
- Fix rounding on iteration-distribution calculations
Usability
Testing
- rewrite prometheus test code to allow parallel tests
- allow running tests in parallel
- fix randomly failing TestRandomDistribution test
- run tests in parallel
- add example cmd to be used for benchmarking
- more readable run_test failures
CI
- Update GH actions
- Use
gorelease
to check for breaking API changes - Enable CodeQL
- Ignore cache when running tests
Dependencies
-
Remove archived https://github.com/giantswarm/retry-go test dependency:
-
Remove github.com/asaskevich/govalidator dependency
-
Remove
go-gaussian
and replace with custom and faster implementation -
Update dependencies to latest versions:
- update dependencies & remove vendor folder
- bump dependencies
- bump github.com/prometheus/common from 0.54.0 to 0.55.0
- bump github.com/spf13/cobra from 1.8.0 to 1.8.1
- bump github.com/prometheus/common from 0.53.0 to 0.54.0
- bump github.com/prometheus/client_golang from 1.19.0 to 1.19.1
- bump github.com/prometheus/common from 0.52.3 to 0.53.0
- bump github.com/prometheus/common from 0.52.2 to 0.52.3
- bump github.com/prometheus/common from 0.51.1 to 0.52.2
- bump github.com/prometheus/client_model from 0.6.0 to 0.6.1
- bump github.com/guptarohit/asciigraph from 0.6.0 to 0.7.1
- bump github.com/prometheus/common from 0.50.0 to 0.51.1
- bump github.com/guptarohit/asciigraph from 0.5.6 to 0.6.0
Linting
Run golangci-lint as part of CI and enable most linters:
- use golangci-lint & fix formatting
- enable more linters
- enable gochecknoglobals linter
- enable more linters
- bump golangci-lint to 1.57.1
- update golangci-lint to 1.57.2
- bump golangci-lint to 1.58.0
- security: check golangci-lint signatures on installing
- bump golangci-lint to 1.58.2
- enable copyloopvar linter
- bump golangci-lint to 1.59.0
- bump golangci-lint to 1.59.1
- enable testpackage linter
Documentation:
Cleanup
v2.0.22
What's Changed
- test: fix grouped labels in the fake prometheus by @damiankaminski-form3 in #146
- feat: optional id label for all metrics by @damiankaminski-form3 in #154
Full Changelog: v2.0.21...v2.0.22
v2.0.21
What's Changed
- feat: add configurable namespace label to prometheus metrics by @damiankaminski-form3 in #145
New Contributors
- @damiankaminski-form3 made their first contribution in #145
Full Changelog: v2.0.20...v2.0.21
v2.0.20
What's Changed
- chore: update all deps to latest by @gkoutsoumpakis-form3 in #144
New Contributors
- @gkoutsoumpakis-form3 made their first contribution in #144
Full Changelog: v2.0.19...v2.0.20
v2.0.19
What's Changed
- Fix gaussian test to properly test and graph non default repeat by @carl-stlaurent-form3 in #137
- Add max failures option (#107) by @ken-che-form3 in #139
New Contributors
- @carl-stlaurent-form3 made their first contribution in #137
- @ken-che-form3 made their first contribution in #139
Full Changelog: v2.0.18...v2.0.19
v2.0.18
What's Changed
- Remove default case to reduce cpu consumption by @andykuszyk-form3 in #132
- feat: gaussian test peak-rate parameter by @blaze-form3 in #134
- fix: bug that made some calculations wrong by @blaze-form3 in #135
New Contributors
- @blaze-form3 made their first contribution in #134
Full Changelog: v2.0.17...v2.0.18