Commit Graph

138 Commits

Author SHA1 Message Date
Honza Dvorsky 4c83e1cdf4
Remove warnings against explicit dependency injection of the metrics factory (#174)
### Motivation:

In the previous PR, we noticed that these warnings seem to discourage
explicit dependency injection, but it's not clear why we should be
discouraging it.

### Modifications:

Removed the warning.

### Result:

N/A
2025-04-29 15:27:10 +02:00
Honza Dvorsky 98d36172c1
Allow providing a custom MetricsFactory to Counter and friends (#172)
### Motivation:

To allow for things like parallel testing, it'd be useful if we can
explicitly provide a MetricsFactory to the existing Counter/... types.

### Modifications:

Added a `factory: MetricsFactory` parameter to all the initializers of
Counter/... types, and kept the existing methods that continue to
default to `MetricsSystem.factory`.

### Result:

Adopters can use a custom MetricsFactory explicitly passed in at metric
creation time. Existing adopters are not affected, unless you opt in,
you continue to use the global factory.
2025-04-29 15:07:30 +02:00
Rick Newton-Rogers 27ecca7ac1
Enable Swift 6.1 jobs in CI (#171)
Motivation:

Swift 6.1 has been released, we should add it to our CI coverage.

Modifications:

Add additional Swift 6.1 jobs where appropriate in main.yml,
pull_request.yml

Result:

Improved test coverage.
2025-04-14 12:15:45 +02:00
Rick Newton-Rogers 071d1cac3c
Enable macOS CI on pull requests (#170)
Motivation:

* Improve test coverage

Modifications:

Enable macOS CI to be run on pull request commits and make the use of
the nightly runner pool for main.yml jobs explicit.

Result:

Improved test coverage.
2025-04-01 12:20:11 +02:00
Rick Newton-Rogers 0556b16079
Enable macOS CI on merge to main and daily timer (#169)
Motivation:

* Improve test coverage
* Check test pass/fail status
* Monitor CI throughput

Modifications:

Enable macOS CI to be run on all merges to main and on a daily timer.

Result:

Improved test coverage run out-of-band at the moment so we can get a
feeling for if any changes need to be made in the repo or in the CI
pipelines to ensure timely and stable checks.
2025-03-31 13:29:44 +01:00
Franz Busch 44491db7cc
Fix 5.10 compile on Ubuntu 24.04 (#168)
Specifically Swift 5.10 on Intel on Ubuntu Noble (24.04) has a crazy bug
which leads to compilation failures in a #if compiler(>=6.0) block:
swiftlang/swift#79285 .

This workaround fixes the compilation by changing the whitespace.

Fixes https://github.com/apple/swift-metrics/issues/166
2025-03-18 16:21:52 +01:00
Franz Busch 3c0f419970
Add `Timer.measure` methods (#140)
# Motivation

This PR supersedes https://github.com/apple/swift-metrics/pull/135. The
goal is to make it easier to measure asynchronous code when using
`Metrics`.

# Modification

This PR does:
- Deprecate the current static method for measuring synchronous code
- Add a new instance method to measure synchronous code
- Add a new instance method to measure asynchronous code
2025-03-10 10:46:27 +01:00
Rick Newton-Rogers cbd39ceaca
Only apply standard swift settings on valid targets (#163)
Only apply standard swift settings on valid targets. The current check
ignores plugins but that is not comprehensive enough.
2025-03-07 19:34:49 +01:00
Rick Newton-Rogers 029e902273
Rename nightly_6_1 params to nightly_next (#162)
Rename nightly_6_1 params to nightly_next; see
https://github.com/apple/swift-nio/pull/3122
2025-03-03 14:46:47 +00:00
Cory Benfield 58f390a873
Tell the truth about the supported metric types (#161)
Our README claims we support 4 metric types, and then lists five. But it
fails to list FloatingPointCounter, which we also support, so the real
number is six.

While I was here I also fixed the DocC topic, which omitted
FloatingPointCounter from the list of metrics but _also_ omitted Gauge
for some weird reason.
2025-01-31 14:31:14 +00:00
Rick Newton-Rogers 53de3bfa9a
CI use 6.1 nightlies (#160)
CI use 6.1 nightlies now that Swift development is happening in the 6.1
branch
2025-01-30 09:59:23 +01:00
Marc Prud'hommeaux 5e63558d12
Android support (#159)
This PR makes the single `import Android` addition that is needed to get
this package building for Android. `skip android test` passes against
the emulator after I made this one change.
2025-01-09 22:49:28 +01:00
Franz Busch 726392cf4e
Update release.yml (#157)
Update the release.yml file with the latest label changes
2024-12-18 14:19:24 +01:00
Rick Newton-Rogers 4a491b5ad5
Enable MemberImportVisibility check on all targets (#156)
Enable MemberImportVisibility check on all targets. Use a standard
string header and footer to bracket the new block for ease of updating
in the future with scripts.
2024-12-16 10:59:35 +00:00
Honza Dvorsky 58e2968a7f
Enable strict concurrency (#155) 2024-11-29 23:28:08 +01:00
Franz Busch 4ec5a219dc
Aligning semantic version label check name (#154) 2024-11-28 12:01:57 +00:00
George Barnett c1976209b5
remove contributors script (#152)
remove contributors script
2024-11-15 09:51:00 +00:00
Rick Newton-Rogers cffefdc627 remove contributors script 2024-11-14 14:11:23 +00:00
Rick Newton-Rogers d720898dbf
Migrate to GitHub Actions (#151) 2024-11-06 22:32:20 +09:00
LamTrinh.Dev 569db3a632
Correct the link of sswg-security at SECURITY.md (#150) 2024-09-17 21:43:37 +09:00
Gustavo Cairo e0165b53d4
Fix Sendability warnings (#137)
* Fix Sendability warnings

* Apply suggestions from code review

* Fix another warning and @unknown default issue

---------

Co-authored-by: Konrad `ktoso` Malawski <konrad.malawski@project13.pl>
2024-06-21 17:18:13 +01:00
Franz Busch d067b0e0f7
Add missing `Sendable` annotations (#148)
# Motivation
We were missing a few `Sendable` annotations on our public types.

# Modification
This PR adds `Sendable` to the missing types.
2024-06-21 05:40:32 +09:00
Peter Adams 79e5fb4fe4
Raise minimum swift version to 5.8 (#147)
Motivation:

It's consistant with support policy (see https://github.com/apple/swift-metrics/pull/141).
It matches what's being tested.
It will make future changes adopting new features easier.

Modifications:

Bump swift tools version to 5.8
Remove linux tests and test discovery flag which are not required.

Result:

Will not longer build using swift before 5.8 - older compilers will find older
versions of this library when resolving versions.
2024-06-12 10:53:26 +01:00
Konrad `ktoso` Malawski ce594e71e9
fix availability of record(:Duration) API (#146) 2024-05-15 18:08:10 +09:00
hamzahrmalik 0124d9ad5c
Change Timer.record(duration: Duration) signature to avoid source breakage (#144) 2024-05-15 14:36:25 +09:00
Si Beaumont eb18581491
Support compiling against Musl (#142)
Co-authored-by: Konrad `ktoso` Malawski <konrad.malawski@project13.pl>
2024-05-14 13:16:51 +09:00
Si Beaumont 33d3f71e00
Update API breakage CI script (#143)
* Update API breakage CI script

* restate sendable conformance to avoid warning/as-error

---------

Co-authored-by: Konrad `ktoso` Malawski <konrad_malawski@apple.com>
2024-05-14 13:09:54 +09:00
Franz Busch 7e53749103
Align supported Swift versions with rest of the ecosystem (#141)
# Motivation

Most of the server ecosystem follows the supported Swift versions from `swift-nio`. This means supporting the latest 3 Swift releases.

# Modification

This PR drops support for all Swift versions before 5.8.

# Result

This makes maintaining this repository easier and allows us to clean up some no longer needed stuff.
2024-05-09 11:19:06 +09:00
Yim Lee 9c0646af4d
Add CI for Swift 5.10 (#138) 2024-01-23 08:24:32 -08:00
Natik Gadzhi 13ea1fe7fc
Introducing Timer.record(_ duration:), closes #114 (#133)
Motivation:

`Duration` is available starting Swift 5.7, and we
should probably support it in our convinience API.

Modifications:
- Timer.record(_ duration: Duration) implementation
- A unit test case
- Generated Linux tests
2023-06-28 14:56:55 -07:00
tomer doron 971ba26378
add increment and decrement public API to Meter (#132)
motivation: expose increment and decrement public APIs

changes:
* add increment and decrement public API to Meter
* improve the implementation of AccumulatingMeter and TestMeter
* add tests for new APIs
* refactor/modernize other tests
2023-06-21 14:15:23 -07:00
tomer doron bf7ea93e17
update code of conduct (#131)
motivation: align CoC across the swift project

changes: change CoC to link to the swift.org version
2023-06-06 10:00:48 -07:00
hamzahrmalik 3402510406
Make 'values' on TestCounter, TestRecorder and TestMeter public (#129)
Co-authored-by: Hamzah Malik <hamzah_malik@apple.com>
2023-05-26 14:49:59 +02:00
hamzahrmalik 8bcdb6e82b
MetricsTestKit: expose all metrics publicly. This allows users to run checks on counters when they might not know the exact label (#127)
Co-authored-by: Hamzah Malik <hamzah_malik@apple.com>
2023-05-26 14:02:46 +02:00
hamzahrmalik 9d5ff3d48f
Use the MetricsTestKit in the MetricsTests rather than using a copy of the TestMetrics utilities (#128)
Co-authored-by: Hamzah Malik <hamzah_malik@apple.com>
2023-05-26 13:25:08 +02:00
tomer doron 32eef8ae84
add "meter" - a new type of metric and metric handler (#123)
motivation: seperate gauge from recorder in a backwards compatible way

changes:
* add new meter and meter handler pair
* add increment and decrement to meter handler
* add default implementation based on recorder for backwards compatibility
* add and adjust tests
2023-05-24 13:55:56 -07:00
Fabian Fett 862b99bc11
Add Package.resolved to .gitignore (#125)
Co-authored-by: Konrad `ktoso` Malawski <konrad.malawski@project13.pl>
2023-05-05 11:19:02 +09:00
Fabian Fett 78b6238009
Use UUID instead of NSUUID in MetricsTests (#126) 2023-05-05 11:01:45 +09:00
Yim Lee a79936ffc1
Update CI (#124)
- Swift 5.8 docker images are available
- Add docker-compose file for Swift 5.9
2023-04-04 20:30:21 -07:00
Gustavo Cairo e8bced74bc
Propagate displayUnit when using MultiplexMetricsHandler (#122) 2023-02-01 11:42:39 -08:00
Yim Lee cbfde655cf
Add CI for Swift 5.8 and update nightly to Ubuntu 22.04 (#121) 2023-01-24 13:34:45 -08:00
Yim Lee 9b39d811a8
Add .spi.yml for Swift Package Index DocC support (#119) 2022-12-02 12:29:28 -08:00
Konrad `ktoso` Malawski bcea8c19fe
+docc prepare for docc publishing (#118)
* +docc prepare for docc publishing

* fix test discovery on 5.5 and 5.6

* Delete Package@swift-5.6.swift

* Update Package.swift

* Apply suggestions from code review

Co-authored-by: Yim Lee <yim_lee@apple.com>

Co-authored-by: Yim Lee <yim_lee@apple.com>
2022-08-24 11:20:06 +09:00
Fabian Fett bd1b935c8e
Make `MetricsFactory` Sendable (#116) 2022-07-21 10:53:47 +09:00
Fabian Fett 53be78637e
Remove testable import from TestMetrics. (#113) 2022-07-20 17:25:45 +09:00
tomer doron d885a4f5e9
adopt sendable (#109)
motivation: adjust to swift 5.6

changes:
* define sendable shims for protocols and structs that may be used in async context
* refactor Gauge to include rather than inherit Recorder
* adjust tests
* add a test to make sure no warning are emitted
2022-07-01 16:38:50 -07:00
tomer doron fd0ee6956b
better abstration for MetricsSystem state (#112)
motivation: prepare for sendable checks (they dont work well with static state)

changes:
* abstract the MetricsSystem state into a "boxed" class that handles the locking
* adjust call sites
2022-06-29 11:08:12 -07:00
Fabian Fett 1c1408bf8f
Expose `MetricsTestKit` as a product (#111) 2022-05-25 07:15:41 +09:00
Konrad `ktoso` Malawski eadb828f87
Import TestMetrics from swift-metrics-extras (#106)
* Import TestMetrics from swift-metrics-extras

* support the year 2021

* rename module
2022-03-18 12:02:04 +09:00
tomer doron e00284be24
ci update (#108)
motivation: 5.6 is out

changes:
* use release version of 5.6
* add docker setup for 5.7 (using nightly for now)
2022-03-16 21:04:42 -07:00