From 8e2bb01e5350e0b4716507f78e9721e45c5462ab Mon Sep 17 00:00:00 2001 From: Colin Saliceti Date: Tue, 25 Apr 2017 14:06:43 +0100 Subject: [PATCH] Acceptance test for large HTTP responses Check that requests don't hang when the HTTP response is large (up to 200kB). This should prevent regressions of the MTU problem described in the preceding commit. --- concourse/pipelines/create-cloudfoundry.yml | 4 ++ concourse/pipelines/failure-testing.yml | 5 +++ .../tasks/custom-acceptance-tests-run.yml | 1 + .../src/acceptance/response_size_test.go | 42 +++++++++++++++++++ 4 files changed, 52 insertions(+) create mode 100644 platform-tests/src/acceptance/response_size_test.go diff --git a/concourse/pipelines/create-cloudfoundry.yml b/concourse/pipelines/create-cloudfoundry.yml index 573050ca27..c2e46780a8 100644 --- a/concourse/pipelines/create-cloudfoundry.yml +++ b/concourse/pipelines/create-cloudfoundry.yml @@ -2049,6 +2049,10 @@ jobs: - get: bosh-CA - get: cf-secrets passed: ['cf-deploy'] + - get: cf-release + params: + submodules: + - src/github.com/cloudfoundry/cf-acceptance-tests - do: - task: create-temp-user diff --git a/concourse/pipelines/failure-testing.yml b/concourse/pipelines/failure-testing.yml index 1632b803da..79a290827e 100644 --- a/concourse/pipelines/failure-testing.yml +++ b/concourse/pipelines/failure-testing.yml @@ -397,6 +397,11 @@ jobs: - get: pipeline-trigger passed: ['init'] trigger: true + - get: cf-release + params: + submodules: + - src/github.com/cloudfoundry/cf-acceptance-tests + - task: get-instance-id file: paas-cf/concourse/tasks/get-instance-id.yml params: diff --git a/concourse/tasks/custom-acceptance-tests-run.yml b/concourse/tasks/custom-acceptance-tests-run.yml index 81a3f7e547..6737eeaf56 100644 --- a/concourse/tasks/custom-acceptance-tests-run.yml +++ b/concourse/tasks/custom-acceptance-tests-run.yml @@ -8,6 +8,7 @@ inputs: - name: paas-cf - name: test-config - name: bosh-CA + - name: cf-release outputs: - name: artifacts run: diff --git a/platform-tests/src/acceptance/response_size_test.go b/platform-tests/src/acceptance/response_size_test.go new file mode 100644 index 0000000000..0eb857f241 --- /dev/null +++ b/platform-tests/src/acceptance/response_size_test.go @@ -0,0 +1,42 @@ +package acceptance_test + +import ( + "fmt" + "time" + + . "github.com/onsi/ginkgo" + . "github.com/onsi/gomega" + . "github.com/onsi/gomega/gexec" + + "github.com/cloudfoundry-incubator/cf-test-helpers/cf" + "github.com/cloudfoundry-incubator/cf-test-helpers/generator" + "github.com/cloudfoundry-incubator/cf-test-helpers/helpers" +) + +var _ = Describe("Apps response size", func() { + var appName string + + BeforeEach(func() { + appName = generator.PrefixedRandomName("CATS-APP-DORA-") + Expect(cf.Cf( + "push", appName, + "-b", config.RubyBuildpackName, + "-p", "../../../../cf-release/src/github.com/cloudfoundry/cf-acceptance-tests/assets/dora", + "-d", config.AppsDomain, + "-i", "1", + "-m", "256M", + ).Wait(CF_PUSH_TIMEOUT)).To(Exit(0)) + }) + + It("should serve request and response bodies of increasing sizes", func() { + for responsekB := 1; responsekB <= 200; responsekB += 10 { + By(fmt.Sprintf("response size of %d kB", responsekB)) + response := helpers.CurlAppWithTimeout( + appName, + fmt.Sprintf("/largetext/%d", responsekB), + 5*time.Second, + ) + Expect(response).To(HaveLen(responsekB * int(KILOBYTE))) + } + }) +})