diff --git a/.circleci/config.yml b/.circleci/config.yml index bd7ff0fa3..14bb2ea73 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -74,6 +74,9 @@ workflows: matrix: parameters: go-version: + - "1.13" + - "1.14" + - "1.15" - "1.16" - "1.17" - "1.18" diff --git a/.github/workflows/datadog-go.yaml b/.github/workflows/datadog-go.yaml index ea65d0d14..bf4df89b0 100644 --- a/.github/workflows/datadog-go.yaml +++ b/.github/workflows/datadog-go.yaml @@ -12,6 +12,9 @@ jobs: strategy: matrix: go-version: + - 1.13 + - 1.14 + - 1.15 - 1.16 - 1.17 - 1.18 diff --git a/.github/workflows/generate.yaml b/.github/workflows/generate.yaml index a5977228e..53926d3c8 100644 --- a/.github/workflows/generate.yaml +++ b/.github/workflows/generate.yaml @@ -1,3 +1,4 @@ +--- name: generate-mock on: pull_request: @@ -6,16 +7,18 @@ jobs: native: strategy: matrix: - runs-on: [ ubuntu-latest, windows-latest] + runs-on: + - ubuntu-latest + - windows-latest fail-fast: false runs-on: ${{ matrix.runs-on }} steps: - name: Setup go uses: actions/setup-go@v2 with: - go-version: 1.16 + go-version: 1.18 - name: Checkout code uses: actions/checkout@v2 - - run: go install github.com/golang/mock/mockgen + - run: go install github.com/golang/mock/mockgen@v1.6.0 - run: go generate statsd/statsd.go - run: git diff --exit-code HEAD diff --git a/README.md b/README.md index 1bc0133fa..b33e429ca 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ `datadog-go` is a library that provides a [DogStatsD](https://docs.datadoghq.com/developers/dogstatsd/?code-lang=go) client in Golang. -Go 1.12+ is officially supported. Older versions might work but are not tested. +Go 1.16+ is officially supported. Older versions might work but are not tested. The following documentation is available: @@ -33,6 +33,9 @@ The following documentation is available: - [Tweaking kernel options](#tweaking-kernel-options) + [Unix Domain Sockets](#unix-domain-sockets) - [Maximum packets size in high-throughput scenarios](#maximum-packets-size-in-high-throughput-scenarios) +* [Support Policy](#support-policy) +* [Supported Versions](#supported-versions) + - [Package Versioning](#package-versioning) * [Development](#development) * [License](#license) * [Credits](#credits) @@ -227,6 +230,48 @@ func main() { } ``` +### Support Policy + +`datadog-go` is built upon dependencies defined in specific versions of the host operating system, Go releases, and the Datadog Agent/API. For Go the two latest releases are [GA](#support-ga) supported and the version before that is in [Maintenance](#support-maintenance). We do make efforts to support older releases, but generally these releases are considered [Legacy](#support-legacy). This library only officially supports [first class ports](https://github.com/golang/go/wiki/PortingPolicy#first-class-ports) of Go. + +| **Level** | **Support provided** | +|--------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| General Availability (GA) | Full implementation of all features. Full support for new features, bug & security fixes. | +| Maintenance | Full implementation of existing features. May receive new features. Support for bug & security fixes only. | +| Legacy | Legacy implementation. May have limited function, but no maintenance provided. [Contact our customer support team for special requests.](https://www.datadoghq.com/support/) | + +### Supported Versions + +| **Go Version** | **Support level** | +|----------------|-------------------------------------| +| 1.18 | [GA](#support-ga) | +| 1.17 | [GA](#support-ga) | +| 1.16 | [Maintenance](#support-maintenance) | + +* Datadog's Agent v6+ + + +#### Package Versioning + +A **Minor** version change will be released whenever a new version of Go is released. At that time the newest version of Go is added to [GA](#support-ga), the second oldest supported version moved to [Maintenance](#support-maintenance) and the oldest previously supported version dropped to [Legacy](#support-legacy). +**For example**: +For a * `datadog-go` version v5.2.* + +| Go Version | Support | +|------------|-------------------------------------| +| 1.18 | [GA](#support-ga) | +| 1.17 | [GA](#support-ga) | +| 1.16 | [Maintenance](#support-maintenance) | + +Then after Go 1.19 is released there will be a new dd-trace-go version v5.3.0 with support: + +| Go Version | Support | +|------------|-------------------------------------| +| 1.19 | [GA](#support-ga) | +| 1.18 | [GA](#support-ga) | +| 1.17 | [Maintenance](#support-maintenance) | +| 1.16 | [Legacy](#support-legacy) | + ## Development Run the tests with: diff --git a/go.sum b/go.sum index a9d41d18b..6a844d057 100644 --- a/go.sum +++ b/go.sum @@ -17,7 +17,6 @@ github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/ github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/mod v0.4.2 h1:Gz96sIWK3OalVv/I/qNygP42zyoKp3xptRVCWRFEBvo= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= @@ -37,11 +36,9 @@ golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.1.1 h1:wGiQel/hW0NnEkJUk8lbzkX2gFJU6PFxf1v5OlCfuOs= golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/statsd/benchmark_report_metric_noop_test.go b/statsd/benchmark_report_metric_noop_test.go deleted file mode 100644 index 8e1cabd87..000000000 --- a/statsd/benchmark_report_metric_noop_test.go +++ /dev/null @@ -1,7 +0,0 @@ -// +build !go1.13 - -package statsd_test - -import "testing" - -func reportMetric(*testing.B, float64, string) {} diff --git a/statsd/benchmark_report_metric_test.go b/statsd/benchmark_report_metric_test.go deleted file mode 100644 index dcf0f522a..000000000 --- a/statsd/benchmark_report_metric_test.go +++ /dev/null @@ -1,9 +0,0 @@ -// +build go1.13 - -package statsd_test - -import "testing" - -func reportMetric(b *testing.B, value float64, unit string) { - b.ReportMetric(value, unit) -} diff --git a/statsd/end_to_end_uds_test.go b/statsd/end_to_end_uds_test.go index be4f4b9a3..7f15f1a37 100644 --- a/statsd/end_to_end_uds_test.go +++ b/statsd/end_to_end_uds_test.go @@ -1,3 +1,4 @@ +//go:build !windows // +build !windows package statsd diff --git a/statsd/pipe.go b/statsd/pipe.go index 84c38e966..426359c5f 100644 --- a/statsd/pipe.go +++ b/statsd/pipe.go @@ -1,3 +1,4 @@ +//go:build !windows // +build !windows package statsd diff --git a/statsd/pipe_windows.go b/statsd/pipe_windows.go index 5ab60f00c..2ca85f70f 100644 --- a/statsd/pipe_windows.go +++ b/statsd/pipe_windows.go @@ -1,3 +1,4 @@ +//go:build windows // +build windows package statsd diff --git a/statsd/pipe_windows_test.go b/statsd/pipe_windows_test.go index 1efbf2b8d..0a3279e70 100644 --- a/statsd/pipe_windows_test.go +++ b/statsd/pipe_windows_test.go @@ -1,3 +1,4 @@ +//go:build windows // +build windows package statsd diff --git a/statsd/statsd_benchmark_test.go b/statsd/statsd_benchmark_test.go index b3143bac7..b4cd45321 100644 --- a/statsd/statsd_benchmark_test.go +++ b/statsd/statsd_benchmark_test.go @@ -82,7 +82,7 @@ func benchmarkStatsdDifferentMetrics(b *testing.B, transport string, extraOption }) client.Flush() t := client.GetTelemetry() - reportMetric(b, float64(t.TotalDroppedOnReceive)/float64(t.TotalMetrics)*100, "%_dropRate") + b.ReportMetric(float64(t.TotalDroppedOnReceive)/float64(t.TotalMetrics)*100, "%_dropRate") b.StopTimer() client.Close() @@ -101,7 +101,7 @@ func benchmarkStatsdSameMetrics(b *testing.B, transport string, extraOptions ... }) client.Flush() t := client.GetTelemetry() - reportMetric(b, float64(t.TotalDroppedOnReceive)/float64(t.TotalMetrics)*100, "%_dropRate") + b.ReportMetric(float64(t.TotalDroppedOnReceive)/float64(t.TotalMetrics)*100, "%_dropRate") b.StopTimer() client.Close() diff --git a/statsd/uds.go b/statsd/uds.go index fa5f5917f..510a7603b 100644 --- a/statsd/uds.go +++ b/statsd/uds.go @@ -1,3 +1,4 @@ +//go:build !windows // +build !windows package statsd diff --git a/statsd/uds_test.go b/statsd/uds_test.go index fb1c0c829..939b3e2c1 100644 --- a/statsd/uds_test.go +++ b/statsd/uds_test.go @@ -1,3 +1,4 @@ +//go:build !windows // +build !windows package statsd diff --git a/statsd/uds_windows.go b/statsd/uds_windows.go index 077894a33..bd358aefc 100644 --- a/statsd/uds_windows.go +++ b/statsd/uds_windows.go @@ -1,3 +1,4 @@ +//go:build windows // +build windows package statsd