Skip to content

Release 23.3 | Spring 2024#2088

Merged
raman-m merged 15 commits intomainfrom
release/23.3
Jun 8, 2024
Merged

Release 23.3 | Spring 2024#2088
raman-m merged 15 commits intomainfrom
release/23.3

Conversation

raman-m and others added 14 commits April 12, 2024 18:30
* Override `DefaultRequestTimeoutSeconds` by new property

* Build using .NET 8 SDK only

* Build all 3 SDKs if target is Release

* Run "dotnet tool restore" to make the "dotnet-cake" command available

* Update GitVersion.Tool package

* GitVersion.Tool 5.12.0

* Newtonsoft.Json

* Review packages

* Prepare folder structure for samples

* samples Administration

* Move Docker files

* samples solution folder

* Move ServiceFabric folders

* Rename ServiceFabric folders

* Re-add OcelotApplication of ServiceFabric sample

* New Samples view in Visual Studio

* Add Ocelot.Samples.sln

* Add Ocelot.Release.sln

* Remove Samples projects from main solution

* log settings of Compile task

* Remove legacy build settings file

* queue/block_workflow

* resource_class

* Update .editorconfig

* CS8936: Feature 'primary constructors' is not available in C# 10, 11.
Feature 'primary constructors' is available in C# 12.0 or greater. But we use `net6.0` and `net7.0`

* CS8936 Feature 'collection expressions' is not available in C# 10, 11.
CS8936: Feature 'primary constructors' is not available in C# 10, 11.

* CS0618: 'member' is obsolete: 'text'.
https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/compiler-messages/cs0618
Switch off the warning CS0618 for testing projects.

* Fix warnings.

xUnit1013 Public method 'GivenThereIsAnIdentityServerOn' on test class 'AuthenticationTests' should be marked as a Theory. Reduce the visibility of the method, or add a Theory attribute to the method.

CS0618 'FileAuthenticationOptions.AuthenticationProviderKey' is obsolete: 'Use the AuthenticationProviderKeys property!'.

* Don't restore and don't build in RunUnitTests target

* --verbosity:detailed

* Disable BDDfy console report

* enable

* Inherit from `UnitTest`
#2048)

* Update configuration.rst

* Static CSS overrides

* Notes are now smaller
…tiplexing (#2050)

* feat: buffer the request body during multiplexing multiple routes

* style: rename clone request body method to be more explicit

* Code review by @raman-m

* feat: refactor clone request method, add acceptance test for form-based requests

* fix: add content-length log, refactor tests from @raman-m commit

* Update requestaggregation.rst

* style: reverse return condition

* Register `Stream` objects for disposing by downstream `HttpResponse`

---------

Co-authored-by: Paul Roy <paul.roy@astriis.com>
Co-authored-by: Raman Maksimchuk <dotnet044@gmail.com>
…vider (#2052)

* Initial refactoring

* Interfaces namespace

* `IKubeServiceBuilder` interface vs `KubeServiceBuilder` class

* `IKubeServiceCreator` interface vs `KubeServiceCreator` class

* Customize K8s services creation

* Add logger

* namespace Ocelot.AcceptanceTests.ServiceDiscovery

* Add `KubernetesServiceDiscoveryTests`

* Unit tests

* AAA pattern

* Acceptance tests

* Update kubernetes.rst

* Check docs
* Use correct interval for request counting

* Minor fixes, return correct counter value when ban period elapsed

* Revert "Use correct interval for request counting"

This reverts commit 7d232c7.

* Revert "Artificial commit, initiate CI"

This reverts commit e723dfa.

* CA1822 Member 'XYZ' does not access instance data and can be marked as static

* Quick code review by @raman-m

* Rate Limiting feature name should match folder name

* namespace `Ocelot.RateLimiting`

* Extract `IRateLimitCore` interface

* Remove useless `ClientRateLimitProcessor` class

* Rename to `IRateLimitStorage` and dev docs

* Wrap services as a feature

* Review `IRateLimitCore` interface and dev docs

* The middleware class prefix should match the feature name

* Add some basic `RateLimitCoreTests`

* Rename to `IRateLimiting`

* Refactor rate limiting core

* Remove redundant `SaveCounter` from the interface

* Thread safe storage operations

* Coalesce in return statement

* Convert to file-scoped namespace

* Use expression body

* Unit tests for #1590 user scenario

* Move test class to separate feature folder

* Inherit from `Steps`

* Refactoring: Follow the DRY principle

* Acceptance test for #1590 user scenario

* Update feature docs

---------

Co-authored-by: raman-m <dotnet044@gmail.com>
…ions` (#2058)

* EnableContentHashing not being considered from appsettings

* Adding CacheOptionsCreator, Injected IRegionCreator as Singleton. Should still add some acceptance tests that are definitely missing!

* Adding caching global configuration since we messed up, ignoring an important breaking change with EnableContentHashing set to false by default

* Adding some further acceptance tests, validating EnableContentHashing, validating global config too.

* removing some debug content

* TtlSeconds must be set

* updating documentation

* Update docs/features/caching.rst

Co-authored-by: Raman Maksimchuk <dotnet044@gmail.com>

* Update docs/features/caching.rst

Co-authored-by: Raman Maksimchuk <dotnet044@gmail.com>

* Removing RegionCreator, moving service collection extension method to dependencyInjection\Features etc.

* adding unit tests for FileCacheOptions

* some more null tests...

* slight refactoring, updating ICacheOptionsCreator signature

* some more design refactoring

* Update src/Ocelot/Configuration/Creator/CacheOptionsCreator.cs

Co-authored-by: Raman Maksimchuk <dotnet044@gmail.com>

* Code review by @raman-m

* Rename `FileCacheOptions` -> `CacheOptions`

* Subtly transition to `CacheOptions`, ensuring compatibility with `FileCacheOptions` to avoid a breaking change

* Not obsolete

---------

Co-authored-by: Guillaume Gnaegi <58469901+ggnaegi@users.noreply.github.com>
Co-authored-by: Raman Maksimchuk <dotnet044@gmail.com>
* routing based on headers (all specified headers must match)

* routing based on headers for aggregated routes

* unit tests and small modifications

* find placeholders in header templates

* match upstream headers to header templates

* find placeholders name and values, fix regex for finding placeholders values

* fix unit tests

* change header placeholder pattern

* unit tests

* unit tests

* unit tests

* unit tests

* extend validation with checking upstreamheadertemplates, acceptance tests for cases from the issue

* update docs and minor changes

* SA1649 File name should match first type name

* Fix compilation errors by code review after resolving conflicts

* Fix warnings

* File-scoped namespaces

* File-scoped namespace

* Target-typed 'new' expressions (C# 9).
https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/proposals/csharp-9.0/target-typed-new

* IDE1006 Naming rule violation: These words must begin with upper case characters: should_*

* Target-typed 'new' expressions (C# 9).
https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/proposals/csharp-9.0/target-typed-new

* Fix build errors

* DownstreamRouteBuilder

* AggregatesCreator

* IUpstreamHeaderTemplatePatternCreator, RoutesCreator

* UpstreamHeaderTemplatePatternCreator

* FileAggregateRoute

* FileAggregateRoute

* FileRoute

* Route, IRoute

* FileConfigurationFluentValidator

* OcelotBuilder

* DownstreamRouteCreator

* DownstreamRouteFinder

* HeaderMatcher

* DownstreamRouteFinderMiddleware

* UpstreamHeaderTemplate

* Routing folder

* RoutingBasedOnHeadersTests

* Refactor acceptance tests

* AAA pattern in unit tests

* CS8936: Feature 'collection expressions' is not available in C# 10.0.
Please use language version 12.0 or greater.

* Code review by @RaynaldM

* Convert facts to one `Theory`

* AAA pattern

* Add traits

* Update routing.rst

Check grammar and style

* Update docs

---------

Co-authored-by: raman-m <dotnet044@gmail.com>
* feature written, tests passed

* actualy passes almost all the test.

* resolve conflict, hopefully.

* please.

* let it cook.

* uses constants instead of string for version policies.

* conflict res

* swapped downstream method and version.

* #1731 Read the Docs configuration file v2 (#1733)

* fixing the documentation, using Release/20.0 as base branch

* using latest conf.py, created with sphinx-quickstart, fixing the warnings during documentation generation

* Update .readthedocs.yaml

* switching to threemammals.org for copyright

* adding requirements file, updating readthedocs.yaml, adding formats pdf / epub and config for requirements file

* fixing code block in websockets.rst

* ok, now it should be fine...

* Update kubernetes.rst: Review and fix markup code

* Update websockets.rst: Review and fix markup

* Update conf.py: Update release, author and copyright

---------

Co-authored-by: Raman Maksimchuk <dotnet044@gmail.com>

* * When using the QoS option "ExceptionsAllowedBeforeBreaking" the circuit breaker never opens the circuit.

* merge issue, PortFinder

* some code improvements, using httpresponsemessage status codes as a base for circuit breaker

* Adding more unit tests, and trying to mitigate the test issues with the method "GivenThereIsAPossiblyBrokenServiceRunningOn"

* fixing some test issues

* setting timeout value to 5000 to avoid side effects

* again timing issues

* timing issues again

* ok, first one ok

* Revert "ok, first one ok"

This reverts commit 2e4a673.

* inline method

* putting back logging for http request exception

* removing logger configuration, back to default

* adding a bit more tests to check the policy wrap

* Removing TimeoutStrategy from parameters, it's set by default to pessimistic, at least one policy will be returned, so using First() in circuit breaker and removing the branch Policy == null from delegating handler.

* Fix StyleCop warnings

* Format parameters

* Sort usings

* since we might have two policies wrapped,  timeout and circuit breaker, we can't use the name CircuitBreaker for polly qos provider, it's not right. Using PollyPolicyWrapper and AsnycPollyPolicy instead.

* modifying circuit breaker delegating handler name, usin Polly policies instead

* renaming CircuitBreakerFactory to PolicyWrapperFactory in tests

* DRY for FileConfiguration, using FileConfigurationFactory

* Add copy constructor

* Refactor setup

* Use expression body for method

* Fix acceptance test

* IDE1006 Naming rule violation: These words must begin with upper case characters

* CA1816 Change ReturnsErrorTests.Dispose() to call GC.SuppressFinalize(object)

* Sort usings

* Use expression body for method

* Return back named arguments

---------

Co-authored-by: raman-m <dotnet044@gmail.com>

* feature written, tests passed

* actualy passes almost all the test.

* resolve conflict, hopefully.

* missed this one.

* please.

* come on...

* let it build.

* let it cook.

* copied from main branch.

* conflict res

* resolving conflicts.

* another attempt.

* lf

* re-incorporate downstream version policy.

* renamed the version policies and added acceptance tests.

* trust the dotnet dev cert.

* accepts cert from dotnet.

* Fix compiling errors

* Refactor tests

* a bit of code cleanup, removing some usings

* a bit more cleanup in fileroute

* try and error with the tests

* "Yahoo!...", said @ibnuda :)

* FileRoute: let it go...
Binary copy! :LoL:

* FileRoute: let it cook...
Re-add sweet props

* `dotnet dev-certs` for the `build` job

* Recover `kubernetes.rst`

* docs/make.bat original version

* OcelotBuilderExtensions

* original src/Ocelot.Provider.Polly/v7/PollyPolicyWrapper.cs

* `IVersionPolicyCreator` XML docs

* Code review by @raman-m (part 1)

* RequestMapper : care about diff

* Code review by @raman-m (part 2)

* Fix Should_return_OK_status_and_multiline_indented_json_response_with_json_options_for_custom_builder

* Update configuration.rst

Add DownstreamVersionPolicy section

* Update docs

* Rename `DownstreamVersionPolicy` to `DownstreamHttpVersionPolicy`

* update docs after prop renaming

* Sort props

---------

Co-authored-by: Guillaume Gnaegi <58469901+ggnaegi@users.noreply.github.com>
Co-authored-by: Raman Maksimchuk <dotnet044@gmail.com>
* feat(configuration): adding route metadata

* feat(configuration): update docs

* feat(configuration): replace Dictionary<> by IDictionary<>, code cleaning

* feat(configuration): replace Dictionary<> by IDictionary<>

* feat(configuration): replace Dictionary<> by IDictionary<>

* feat(configuration): update the data type of FileDynamicRoute Metadata

* formatting

* feat(configuration): fix integration tests

* feat !1843 add extension methods for DownstreamRoute to get metadata

* feat !1843 add extension methods for DownstreamRoute

* feat !1843 update docs

* feat !1843 update docs

* feat !1843 cleanup split string logic

* SA1505: An opening brace should not be followed by a blank line

* IDE1006: Naming rule violation: These words must begin with upper case characters: should_xxx

* Fix compile errors after rebasing

* Fix unit tests + AAA pattern

* First Version, providing a generic extension method GetMetadata<T> with global configuration

* Adding ConvertToNumericType method to be able to use the NumberStyles enum

* adding first acceptance tests

* The tests are now passing again...

* adding latest test cases. That should be enough (includes global configuration changes too)

* Update metadata.rst

* adding the xml docs for IMetadataCreator and MetadataCreator

* renaming MetadataCreator to DefaultMetadataCreator

* number tests for .net 6 too

* Moving Metadata specific downstream route extensions to the Metadata folder

* cleanup

* applying some of the requested changes

* Final code review by @raman-m

* Add traits

* Fix docs build error

---------

Co-authored-by: Raman Maksimchuk <dotnet044@gmail.com>
Co-authored-by: Guillaume Gnaegi <58469901+ggnaegi@users.noreply.github.com>
…e discovery provider (#2067)

* Interfaces folder and namespace

* `IConsulServiceBuilder` interface vs `ConsulServiceBuilder` class

* Inject services into `ConsulServiceBuilder`

* Extend `IConsulServiceBuilder` interface

* Finalize design of the customization.
No JSON options because `ServiceDiscoveryProvider` are generalized for all types of providers

* Remove BDDfy in favor of AAA pattern

* Refactor original unit tests

* Rename to `DefaultConsulServiceBuilder`

* Update src/Ocelot.Provider.Consul/DefaultConsulServiceBuilder.cs

Update `IsValid(ServiceEntry entry)`

Co-authored-by: Raynald Messié <redbird_project@yahoo.fr>

* Code review by @RaynaldM

* Read the node instance from `ServiceEntry`.
If it is null, search for a node in the common collection.

* Refactor `OcelotBuilderExtensionsTests`

* The generic `AddConsul<TServiceBuilder>(IOcelotBuilder)` method

* Rename to `ConsulTests`

* Unit tests: 100% coverage

* Move to `ServiceDiscovery` folder

* DRY: GivenServiceEntry, GivenRoute

* Convert to file-scoped namespace

* Inherit from `Steps`

* Refactor acceptance tests

* Acceptance test for #954 user scenario

* Move "Store Configuration in Consul" to "Service Discovery"

* Feature docs

---------

Co-authored-by: Raynald Messié <redbird_project@yahoo.fr>
* Add Ocelot.csproj README.md link

* Code review

---------

Co-authored-by: Raman Maksimchuk <dotnet044@gmail.com>
* #2078 V7 polly syntax not longer supported

* fix doc

* Update qualityofservice.rst
Consolidate all notes into the Notes section

---------

Co-authored-by: Raman Maksimchuk <dotnet044@gmail.com>
…mUrlCreatorMiddleware` (#2003)

* issues/2002 : Regression at DownstreamUrlCreatorMiddleware

* issues/2002:: add some unit tests and acceptance test

* issues/2002: fix test

* Apply suggestions from code review

Co-authored-by: Raynald Messié <redbird_project@yahoo.fr>

* issues/2002: fix build

* CS8936 Feature 'collection expressions' is not available in C# 10.0.
Please use language version 12.0 or greater.

* Code review by @ggnaegi
#2003 (review)

* Original version from develop

* The fix by @bbenameur with improved version by @ggnaegi

* Don't order parameters, add to the end

* AAA pattern in unit tests

* Double-check tests

* Remove BDDfy

* Inherit from `Steps`

* DRY in acceptance tests

* Tests for #2002 user scenario

* Update docs

---------

Co-authored-by: Raynald Messié <redbird_project@yahoo.fr>
Co-authored-by: Raman Maksimchuk <dotnet044@gmail.com>
* #2085 Circuit Breaker behavior polly v7 vs Polly v8

* Code review by @raman-m

* Refactor the provider

* AAA pattern in unit tests

* Convert to file-scoped namespace

* Refactor acceptance tests

* Code review by @ggnaegi

* Rename protected method to `ConfigureStrategies`

* Refactor shortcut of the feature

* `DurationOfBreak` constraints

* Fitness testing of new changes in the provider

* Update docs

---------

Co-authored-by: Raman Maksimchuk <dotnet044@gmail.com>
@raman-m raman-m self-assigned this Jun 6, 2024
@raman-m raman-m added release Pre/Release (minor, major) Spring'24 Spring 2024 release labels Jun 6, 2024
@raman-m raman-m added this to the Spring'24 milestone Jun 6, 2024
@raman-m
Copy link
Copy Markdown
Member Author

raman-m commented Jun 6, 2024

TODO

@raman-m raman-m changed the title Release 23.3 Release 23.3 | Spring 2024 Jun 6, 2024
RaynaldM
RaynaldM previously approved these changes Jun 7, 2024
ggnaegi
ggnaegi previously approved these changes Jun 7, 2024
@raman-m raman-m dismissed stale reviews from ggnaegi and RaynaldM via bdb7ba4 June 7, 2024 18:59
* Release notes
* Update docs
* Twilight Texas codename
* Ocelot Core team members should not be in Top 3 Chart
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

release Pre/Release (minor, major) Spring'24 Spring 2024 release

Projects

None yet

Development

Successfully merging this pull request may close these issues.