diff --git a/CHANGELOG.md b/CHANGELOG.md
index 5f4687ceb2..7e0eed9186 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,4 +1,126 @@
+
+## [styx-1.0.0.beta9](https://github.com/HotelsDotCom/styx/compare/testtag...styx-1.0.0.beta9) (2020-01-30)
+
+### Pull Requests
+
+* Allow configuring the maximum header size of origin responses (issue [#598](https://github.com/HotelsDotCom/styx/issues/598)) ([#599](https://github.com/HotelsDotCom/styx/issues/599))
+* Expose Styx/Netty proxy executor to the plugins. ([#596](https://github.com/HotelsDotCom/styx/issues/596))
+* Add content compression support to StyxServer object ([#595](https://github.com/HotelsDotCom/styx/issues/595))
+* remove rxJava ([#592](https://github.com/HotelsDotCom/styx/issues/592))
+* Sanitize logged headers and cookies from Netty HTTP objects ([#590](https://github.com/HotelsDotCom/styx/issues/590))
+* Add HttpServer object ([#591](https://github.com/HotelsDotCom/styx/issues/591))
+* Styx server object support. ([#589](https://github.com/HotelsDotCom/styx/issues/589))
+* Inject Netty executors into Styx Core. ([#583](https://github.com/HotelsDotCom/styx/issues/583))
+* Update license header ([#587](https://github.com/HotelsDotCom/styx/issues/587))
+* Docker build image: Add git bash completion ([#586](https://github.com/HotelsDotCom/styx/issues/586))
+* Support compiling the project with Java 11. ([#585](https://github.com/HotelsDotCom/styx/issues/585))
+* replaced rxjava with reactor ([#570](https://github.com/HotelsDotCom/styx/issues/570))
+* Remove obsolete animal sniffer maven plugin. ([#584](https://github.com/HotelsDotCom/styx/issues/584))
+* Refactor ProviderObjectRecord ([#582](https://github.com/HotelsDotCom/styx/issues/582))
+* Remove ProxyServerBuilder class. ([#581](https://github.com/HotelsDotCom/styx/issues/581))
+* Remove Guava ServiceManager from NettyServer. ([#580](https://github.com/HotelsDotCom/styx/issues/580))
+* Reinstate time-to-first-byte-ms metric. ([#575](https://github.com/HotelsDotCom/styx/issues/575))
+* Re-register provider endpoints with admin interface after updates ([#572](https://github.com/HotelsDotCom/styx/issues/572))
+* Do not show an empty list of disabled plugins. ([#576](https://github.com/HotelsDotCom/styx/issues/576))
+* speed up kotlin integration tests by reusing the JVM fork. ([#579](https://github.com/HotelsDotCom/styx/issues/579))
+* Remove RxJava - Part 9: ConfigStore ([#571](https://github.com/HotelsDotCom/styx/issues/571))
+* Replace rxjava with reactor: OriginsCommandHandler ([#569](https://github.com/HotelsDotCom/styx/issues/569))
+* Fix case where a Empty set-cookie headers causes NPE ([#574](https://github.com/HotelsDotCom/styx/issues/574))
+* Accept a comma-separated string as a HttpInterceptorPipeline "pipeline" attribute. ([#567](https://github.com/HotelsDotCom/styx/issues/567))
+* Remove RxJava ([#565](https://github.com/HotelsDotCom/styx/issues/565))
+* Remove RxJava ([#564](https://github.com/HotelsDotCom/styx/issues/564))
+* Add an event for headers complete ([#557](https://github.com/HotelsDotCom/styx/issues/557))
+* Refactor http servers ([#554](https://github.com/HotelsDotCom/styx/issues/554))
+* Add support for compression of responses ([#563](https://github.com/HotelsDotCom/styx/issues/563))
+* StaticResponseHandler: Convert a null body to an empty response string. ([#566](https://github.com/HotelsDotCom/styx/issues/566))
+* Improve test logging. ([#562](https://github.com/HotelsDotCom/styx/issues/562))
+* Fix origin reactivation logic for admin interface ([#561](https://github.com/HotelsDotCom/styx/issues/561))
+* Provider endpoint admin page ([#553](https://github.com/HotelsDotCom/styx/issues/553))
+* replace rxjava for response body content ([#552](https://github.com/HotelsDotCom/styx/issues/552))
+* Cut back excessive logging. ([#559](https://github.com/HotelsDotCom/styx/issues/559))
+* Re-enable epoll. ([#556](https://github.com/HotelsDotCom/styx/issues/556))
+* replace rx subscriber with reactor subscriber ([#548](https://github.com/HotelsDotCom/styx/issues/548))
+* Add close() method to connectionPool so connections are closed when origins are reloaded ([#551](https://github.com/HotelsDotCom/styx/issues/551))
+* Common tags ([#549](https://github.com/HotelsDotCom/styx/issues/549))
+* Fixes Issue: [#536](https://github.com/HotelsDotCom/styx/issues/536): Duplicated origin ID in metrics name ([#545](https://github.com/HotelsDotCom/styx/issues/545))
+* Add clue to intermittently failing test assertion. ([#543](https://github.com/HotelsDotCom/styx/issues/543))
+* Administrative state for routing objects ([#523](https://github.com/HotelsDotCom/styx/issues/523))
+* Replace rxjava with reactor ([#541](https://github.com/HotelsDotCom/styx/issues/541))
+* Issue [#535](https://github.com/HotelsDotCom/styx/issues/535): Add admin endpoint for uptime ([#539](https://github.com/HotelsDotCom/styx/issues/539))
+* Build Styx Docker image using fabric8 docker maven plugin ([#542](https://github.com/HotelsDotCom/styx/issues/542))
+* Fix issue: [#525](https://github.com/HotelsDotCom/styx/issues/525): A race condition in styx object store. ([#537](https://github.com/HotelsDotCom/styx/issues/537))
+* fixed to run both java and kotlin tests together ([#540](https://github.com/HotelsDotCom/styx/issues/540))
+
+
+
+## [styx-1.0.0.beta8](https://github.com/HotelsDotCom/styx/compare/styx-1.0.0.beta7...styx-1.0.0.beta8) (2019-11-25)
+
+### Pull Requests
+
+* Reduce exception construction ([#538](https://github.com/HotelsDotCom/styx/issues/538))
+
+
+
+## [styx-1.0.0.beta7](https://github.com/HotelsDotCom/styx/compare/styx-1.0.0.beta6...styx-1.0.0.beta7) (2019-11-22)
+
+### Pull Requests
+
+* Don't deploy styx-api-testsupport jars, nor styx-support pom. ([#534](https://github.com/HotelsDotCom/styx/issues/534))
+* Common test result reporter for Styx Kotlin projects. ([#533](https://github.com/HotelsDotCom/styx/issues/533))
+* Add informational message at the end of health checks. ([#532](https://github.com/HotelsDotCom/styx/issues/532))
+* General tidy up no functional change ([#530](https://github.com/HotelsDotCom/styx/issues/530))
+* YamlConfigurationService: Reject origins file if it introduces name clashes. ([#531](https://github.com/HotelsDotCom/styx/issues/531))
+* Issue 526: Fix intermittently failing Kotlin tests. ([#528](https://github.com/HotelsDotCom/styx/issues/528))
+* Origins dashboard ([#503](https://github.com/HotelsDotCom/styx/issues/503))
+* Dependabot/maven/jackson.version 2.10.1 ([#527](https://github.com/HotelsDotCom/styx/issues/527))
+* Prefix load balancing group tag with "lbGroup=". ([#522](https://github.com/HotelsDotCom/styx/issues/522))
+* Issue 519: Support multiple YamlConfigurationSercvices ([#521](https://github.com/HotelsDotCom/styx/issues/521))
+* Expose origins config file in admin interface ([#520](https://github.com/HotelsDotCom/styx/issues/520))
+* Expose provider admin interface ([#515](https://github.com/HotelsDotCom/styx/issues/515))
+* Remove TestNG and replace with junit 5 ([#514](https://github.com/HotelsDotCom/styx/issues/514))
+* Fix kotlin unit tests ([#513](https://github.com/HotelsDotCom/styx/issues/513))
+* GitHubIssue[#495](https://github.com/HotelsDotCom/styx/issues/495) - Ensure all HostProxy objects are tagged active or inactive ([#510](https://github.com/HotelsDotCom/styx/issues/510))
+
+
+
+## [styx-1.0.0.beta6](https://github.com/HotelsDotCom/styx/compare/styx-1.0.0.beta5...styx-1.0.0.beta6) (2019-11-06)
+
+### Pull Requests
+
+* Provide httpResponse to the whenCompleted event ([#507](https://github.com/HotelsDotCom/styx/issues/507))
+* Use the smaller jar netty to reduce both size and conflicts with other netty projects ([#508](https://github.com/HotelsDotCom/styx/issues/508))
+* Expose styx service providers in admin interface ([#505](https://github.com/HotelsDotCom/styx/issues/505))
+* GitHub[#486](https://github.com/HotelsDotCom/styx/issues/486) - Fix connection pool leaks ([#504](https://github.com/HotelsDotCom/styx/issues/504))
+* Upgrade to Mockito 3 ([#509](https://github.com/HotelsDotCom/styx/issues/509))
+* Docker image to build Styx project ([#500](https://github.com/HotelsDotCom/styx/issues/500))
+* Styx docker environment: add NGINX origins ([#499](https://github.com/HotelsDotCom/styx/issues/499))
+* Disable "TLS Settings modifications" functional test ([#502](https://github.com/HotelsDotCom/styx/issues/502))
+* Fix metrics in new routing model ([#489](https://github.com/HotelsDotCom/styx/issues/489))
+* Improve make docker-image ([#493](https://github.com/HotelsDotCom/styx/issues/493))
+* Expose styx logs in system test env as docker volme ([#491](https://github.com/HotelsDotCom/styx/issues/491))
+* Always enable a check for empty HTTP content. ([#488](https://github.com/HotelsDotCom/styx/issues/488))
+* Update to Netty 4.1.42.Final. ([#484](https://github.com/HotelsDotCom/styx/issues/484))
+* Avoid creating transient objects when origin file is reloaded ([#483](https://github.com/HotelsDotCom/styx/issues/483))
+* Improve test result reporting in Styx functional test suite. ([#485](https://github.com/HotelsDotCom/styx/issues/485))
+* Set the number of threads for the GlobalHttpClient to 2 in HostProxySpec. ([#482](https://github.com/HotelsDotCom/styx/issues/482))
+* Remove use of hamcrest in production (non-test) code. ([#480](https://github.com/HotelsDotCom/styx/issues/480))
+* Update fasterxml to 2.9.10. ([#477](https://github.com/HotelsDotCom/styx/issues/477))
+* Rename test plugins & docker environment ([#476](https://github.com/HotelsDotCom/styx/issues/476))
+* Resolve tech debt in functional tests. ([#473](https://github.com/HotelsDotCom/styx/issues/473))
+* Issue 466: Expose plugins for HttpInterceptorPipeline ([#475](https://github.com/HotelsDotCom/styx/issues/475))
+* Make admin interfaces streamable ([#474](https://github.com/HotelsDotCom/styx/issues/474))
+* Support remote debugging in Styx docker environment. ([#470](https://github.com/HotelsDotCom/styx/issues/470))
+* Fix ineffective HTTP initial line length attribute. ([#472](https://github.com/HotelsDotCom/styx/issues/472))
+* Update metrics documentation. ([#469](https://github.com/HotelsDotCom/styx/issues/469))
+* Updated changelog and fixed toxiproxy docs ([#468](https://github.com/HotelsDotCom/styx/issues/468))
+* Update changelog as per 1.0.0.beta4 release. ([#467](https://github.com/HotelsDotCom/styx/issues/467))
+* Remove test code dependent on the Sun NameService SPI (removed in Java 9) ([#463](https://github.com/HotelsDotCom/styx/issues/463))
+* Plugin developer documentation updated to show how to use `aggregate()` to read the whole body into memory. ([#465](https://github.com/HotelsDotCom/styx/issues/465))
+* Fix issue [#428](https://github.com/HotelsDotCom/styx/issues/428): Removing Unused properties in Server config ([#464](https://github.com/HotelsDotCom/styx/issues/464))
+* Backwards compatibility mode for Styx origins configuration file ([#458](https://github.com/HotelsDotCom/styx/issues/458))
+
+
## [styx-1.0.0.beta5](https://github.com/HotelsDotCom/styx/compare/styx-1.0.0.beta4...styx-1.0.0.beta5) (2019-10-03)
@@ -219,4 +341,3 @@
* Rename message converters between full and streaming variants ([#169](https://github.com/HotelsDotCom/styx/issues/169))
* Add HttpInterceptorContext to styx-test-api. ([#168](https://github.com/HotelsDotCom/styx/issues/168))
* New interceptor and routing API for styx - Initial Commit - ([#166](https://github.com/HotelsDotCom/styx/issues/166))
-
diff --git a/system-tests/ft-suite/src/test/kotlin/com/hotels/styx/admin/OriginsFileCompatibilitySpec.kt b/system-tests/ft-suite/src/test/kotlin/com/hotels/styx/admin/OriginsFileCompatibilitySpec.kt
index 9273977db8..74b31c2985 100644
--- a/system-tests/ft-suite/src/test/kotlin/com/hotels/styx/admin/OriginsFileCompatibilitySpec.kt
+++ b/system-tests/ft-suite/src/test/kotlin/com/hotels/styx/admin/OriginsFileCompatibilitySpec.kt
@@ -749,24 +749,28 @@ class OriginsFileCompatibilitySpec : FunSpec() {
.start()
.stub(WireMock.get(WireMock.urlMatching("/.*")), WireMock.aResponse()
.withStatus(200)
+ .withHeader("X-Origin", "Server-A01-server")
.withBody("appA-01"))
val mockServerA02 = MockOriginServer.create("appA", "appA-02", 0, HttpConnectorConfig(0))
.start()
.stub(WireMock.get(WireMock.urlMatching("/.*")), WireMock.aResponse()
.withStatus(200)
+ .withHeader("X-Origin", "Server-A02-server")
.withBody("appA-02"))
val mockServerB01 = MockOriginServer.create("appB", "appB-01", 0, HttpConnectorConfig(0))
.start()
.stub(WireMock.get(WireMock.urlMatching("/.*")), WireMock.aResponse()
.withStatus(200)
+ .withHeader("X-Origin", "Server-B01-server")
.withBody("appB-01"))
val mockServerC01 = MockOriginServer.create("appC", "appC-01", 0, HttpConnectorConfig(0))
.start()
.stub(WireMock.get(WireMock.urlMatching("/.*")), WireMock.aResponse()
.withStatus(200)
+ .withHeader("X-Origin", "Server-C01-server")
.withBody("appC-01"))
val mockTlsv12Server = MockOriginServer.create("appTls", "appTls-01", 0,
@@ -778,6 +782,7 @@ class OriginsFileCompatibilitySpec : FunSpec() {
.start()
.stub(WireMock.get(WireMock.urlMatching("/.*")), WireMock.aResponse()
.withStatus(200)
+ .withHeader("X-Origin", "TlsV2-server")
.withBody("appTls-01"))
override fun afterSpec(spec: Spec) {
diff --git a/system-tests/ft-suite/src/test/kotlin/com/hotels/styx/routing/HostProxySpec.kt b/system-tests/ft-suite/src/test/kotlin/com/hotels/styx/routing/HostProxySpec.kt
index 296bb150f2..4a551d2558 100644
--- a/system-tests/ft-suite/src/test/kotlin/com/hotels/styx/routing/HostProxySpec.kt
+++ b/system-tests/ft-suite/src/test/kotlin/com/hotels/styx/routing/HostProxySpec.kt
@@ -18,7 +18,9 @@ package com.hotels.styx.routing
import com.github.tomakehurst.wiremock.client.WireMock
import com.github.tomakehurst.wiremock.client.WireMock.aResponse
import com.github.tomakehurst.wiremock.client.WireMock.urlMatching
+import com.hotels.styx.api.HttpHeaderNames.CHUNKED
import com.hotels.styx.api.HttpHeaderNames.HOST
+import com.hotels.styx.api.HttpHeaderNames.TRANSFER_ENCODING
import com.hotels.styx.api.HttpRequest.get
import com.hotels.styx.api.HttpResponseStatus.BAD_GATEWAY
import com.hotels.styx.api.HttpResponseStatus.CREATED
@@ -225,8 +227,16 @@ class HostProxySpec : FeatureSpec() {
connectionExpirationSeconds: $connectinExpiryInSeconds
""".trimIndent()) shouldBe CREATED
+ // NOTE: Connection priming will fail when it encounters "Origin Responded Too Quickly" scenario.
+ // This may happen when the request is sent with empty body and `Content-Length: 0`.
+ // This is okay in production. The pooled connection is closed, instead of
+ // returned back to the pool. But in this test we do need a pooled connection.
+ //
+ // To avoid this scenario, we will set `Transfer-Encoding: Chunked`, enforcing the origin
+ // receiver to wait for an additional TCP segment before responding.
client.send(get("/")
.header(HOST, styxServer().proxyHttpHostHeader())
+ .header(TRANSFER_ENCODING, CHUNKED)
.build())
.wait()!!
.status() shouldBe OK
@@ -391,9 +401,6 @@ class HostProxySpec : FeatureSpec() {
http:
port: 0
- services:
- factories: {}
-
httpPipeline: hostProxy
""".trimIndent())
@@ -410,9 +417,6 @@ class HostProxySpec : FeatureSpec() {
http:
port: 0
- services:
- factories: {}
-
httpPipeline:
type: ConditionRouter
config: