# Release History

## 1.12.1-beta.1 (Unreleased)

### Features Added

* Extended the `perf` framework with new command-line options aligned with the .NET `Azure.Test.Perf` runner:
  * `--iterations`/`-i` to repeat the measurement phase multiple times.
  * `--rate`/`-r` to cap aggregate throughput in operations per second.
  * `--status-interval` to control the cadence of live status output.
  * `--results-file` to emit per-operation results as JSON when `--latency` is enabled.
  * `--output-file-prefix` to write run-summary artifacts as `.json`, `.csv`, `.txt`, and `.md`.
  * `--resource-telemetry` to print a `runtime.MemStats` and goroutine-count delta at the end of a run.
  * `--config` and `--workload` to load and select named workloads from a JSON workload-config file.
  * `--job-statistics` to emit the `#StartJobStatistics` / `#EndJobStatistics` block consumed by perf-automation.
  * `--maxprocs` to override `GOMAXPROCS` for the run.
  * `--no-cleanup` to skip `Cleanup` / `GlobalCleanup` at end of run.
  * `--debug` for additional diagnostic output.
  * `--sync`, `--insecure`, `--max-io-completion-threads`, `--max-worker-threads`, `--min-io-completion-threads`, and `--min-worker-threads` are accepted for CLI parity with the .NET runner.
* The `perf` runner now samples process CPU and memory usage in the background, displaying them in the live status line and including `averageCpuPercent` / `averageMemoryBytes` in run-summary artifacts.

### Breaking Changes

### Bugs Fixed

### Other Changes

## 1.12.0 (2026-04-01)

### Features Added

* Added `IgnoredQueryParameters` field to `SetDefaultMatcherOptions` for specifying query parameters to ignore during playback matching

## 1.11.2 (2025-07-30)

### Other Changes

* `errorinfo.NonRetriable()` doesn't wrap errors which are already `NonRetriable`

## 1.11.1 (2025-04-07)

### Other Changes

The recording framework now always starts a requested test-proxy instance when in CI even if PROXY_MANUAL_START is set to `true`.

## 1.11.0 (2025-04-01)

### Features Added
* `temporal.NewResourceWithOptions` enables overriding default `temporal.Resource` refresh behavior

### Other Changes
* Zero `RecordingOptions.ProxyPort` is interpreted as indicating the default port used
  by `StartTestProxy`
* Improved presentation of test proxy recording mismatch errors

## 1.10.0 (2024-07-16)

### Features Added
* `test/credential.New` supports federated authentication in Azure Pipelines

## 1.9.1 (2024-07-02)

### Bugs Fixed
* Fixed a data race in `mock/Server.Do`.

### Other Changes
* Upgraded dependencies

## 1.9.0 (2024-06-06)

### Features Added
* Added `test/credential` package containing a credential factory for live and recorded tests
  and a fake credential for offline tests.

## 1.8.0 (2024-05-09)

### Breaking Changes

* Unexported `Module` and `Version` constants

### Other Changes

* Removed default sanitizers added in v1.6.0 (the test proxy itself now includes these)

## 1.7.0 (2024-05-01)

### Features Added
* Support for local repo override (via presence of eng/target_proxy_version.txt) of invoked test-proxy version.

* `RemoveRegisteredSanitizers` selectively disables sanitizers the test proxy enables by
  default since version 1.0.0-dev.20240422.1

### Breaking Changes

* Deprecated the `go-vcr` based test recording API. Its methods now return errors or panic.
* Changed value of `recording.SanitizedValue` from "sanitized" to "Sanitized" to match the
  test proxy

## 1.6.0 (2024-04-16)

### Features Added

* Options types for `SetBodilessMatcher` and `SetDefaultMatcher` now embed `RecordingOptions`
* Added a collection of default sanitizers for test recordings

## 1.5.2 (2024-02-06)

### Bugs Fixed

* Prevent `exported.Payload` from panicking in the rare event `*http.Response.Body` is `nil`.

### Other Changes

* Update dependencies.

## 1.5.1 (2023-12-06)

### Bugs Fixed

* Recording will restore the original scheme/host after making a successful HTTP(s) call.

## 1.5.0 (2023-11-02)

### Features Added

* Added a new `NonRetriableError` func to the `errorinfo` package. New func serves as an error wrapper for non-retriable errors in the `azure-sdk-for-go/sdk` folder.

## 1.4.0 (2023-10-17)

### Features Added

* Add support for auto-installing the test proxy standalone tooling in the test recording package

### Other Changes

* Updated dependencies.

## 1.3.0 (2023-04-04)

### Features Added
* Added package `poller` which exports various LRO helpers to aid in the creation of custom `PollerHandler[T]`.
* Added package `exported` which contains payload helpers needed by the `poller` package and exported in `azcore`.

## 1.2.0 (2023-03-02)

### Features Added

* Add random alphanumeric string generation support for test-proxy recording framework.

### Bugs Fixed

* Store RNG seed in recordings.

## 1.1.2 (2022-12-12)

### Features Added

- Export user agent formatting code that used to be in azcore's policy_telemetry.go so it can be shared with non-HTTP clients (ie: azservicebus/azeventhubs). ([#19681](https://github.com/Azure/azure-sdk-for-go/pull/19681))

### Other Changes
* Prevented data races in `recording` ([#18763](https://github.com/Azure/azure-sdk-for-go/issues/18763))

## 1.1.1 (2022-11-09)

### Bugs Fixed
* Fixed a race condition in `temporal.Resource[TResource, TState].Get`.

## 1.1.0 (2022-10-20)

### Features Added

* Support test recording assets external to repository

## 1.0.1 (2022-08-22)

### Bugs Fixed
* Don't modify the original *http.Request during recording/perf as it causes failures during retries.

## 1.0.0 (2022-05-12)

### Features Added
* Added `temporal` package for handling of temporal resources.

### Breaking Changes
* Removed logging constants from the `log` package.
* Removed `atomic` package as it wasn't being used.

### Other Changes
* Updated build constraints and Go version to 1.18.

## 0.9.2 (2022-04-04)

### Features Added
* Set sanitizers at the test level by specifying `RecordingOptions.TestInstance`
* Added the `perf` library for performance testing client SDKs

## 0.9.1 (2022-02-01)

### Features Added
* Adds a `CustomDefaultMatcher` that adds headers `:path`, `:authority`, `:method`, and `:scheme` to the default matcher.

## 0.9.0 (2022-01-24)

### Breaking Changes
* The `x-recording-file` is now encoded in the body of a `Start` request, previously was included in a header [#16876](https://github.com/Azure/azure-sdk-for-go/pull/16876).

## 0.8.3 (2021-12-07)

### Features Added
* If `AZURE_RECORD_MODE` is not set, default to `playback`
* If `PROXY_CERT` is not set, try to find it based on the `GOPATH` environment variable and the path to `eng/common/testproxy/dotnet-devcert.crt`
* Adds `NewRecordingHTTPClient()` method which returns an `azcore.Transporter` interface that routes requests to the test proxy [#16221](https://github.com/Azure/azure-sdk-for-go/pull/16221).
* Adds the `SetBodilessMatcher` method [#16256](https://github.com/Azure/azure-sdk-for-go/pull/16256)
* Added variables storage to the `Stop` function. Pass in a `map[string]interface{}` to the `Stop` method options and the values can be retrieved with the `GetVariables(t *testing.T)` function [#16375](https://github.com/Azure/azure-sdk-for-go/pull/16375).

### Breaking Changes
* Renames `ResetSanitizers` to `ResetProxy` [#16256](https://github.com/Azure/azure-sdk-for-go/pull/16256)

## 0.8.2 (2021-11-11)

### Features Added
* Adding `RecordingOptions.RouteURL` to handle routing requests to the test proxy

### Bugs Fixed
* Adding recording sanitizers has no effect when running in `LiveMode`

## 0.8.1 (2021-10-21)

### Features Added
* Exports `RecordMode`, `PlaybackMode`, and `LiveMode` for determining test mode
* When running in `LiveMode` no traffic will be routed to the proxy and the `StartRecording`/`StopRecording` methods are no-ops.
* Adds the following sanitizers: `BodyKeySanitizer`, `BodyRegexSanitizer`, `ContinuationSanitizer`, `GeneralRegexSanitizer`, `HeaderRegexSanitizer`, `OAuthResponseSanitizer`, `RemoveHeaderSanitizer`, `URISanitizer`, `URISubscriptionIDSanitizer`
* Adds `ResetSanitizer` for removing all sanitizers in an active session.
* Add `GroupForReplace` to the `recording.RecordingOptions` option for use in sanitizers.

### Breaking Changes
* Removes `testing.T` parameter from `GetEnvVariable`
* Renames `IdHeader` to `IDHeader` and `UpstreamUriHeader` to `UpstreamURIHeader`
* Renames `StartRecording` to `Start` and `StopRecording` to `Stop`

## 0.8.0 (2021-10-20)
* Renamed log constant type and values to conform to guidelines.
* Added support for running tests in parallel
* Tests marked as LiveOnly will bypass the proxy

## 0.7.1 (2021-09-28)
* add `mock.NewTrackedCloser` to help test when `Close` is called
