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