"-d", config.AppsDomain, "-c", "./app"), CF_PUSH_TIMEOUT).Should(Exit(0)) }) AfterEach(func() { app_helpers.AppReport(appName, DEFAULT_TIMEOUT) Eventually(cf.Cf("delete", appName, "-f"), DEFAULT_TIMEOUT).Should(Exit(0)) }) Describe("An app staged on Diego", func() { BeforeEach(func() { app_helpers.EnableDiego(appName) Eventually(cf.Cf("start", appName), CF_PUSH_TIMEOUT).Should(Exit(0)) Eventually(helpers.CurlingAppRoot(appName), DEFAULT_TIMEOUT).Should(ContainSubstring(binaryHi)) }) It("runs on the DEAs", func() { app_helpers.DisableDiego(appName) Eventually(cf.Cf("restart", appName), CF_PUSH_TIMEOUT).Should(Exit(0)) Eventually(helpers.CurlingAppRoot(appName), DEFAULT_TIMEOUT).Should(ContainSubstring(binaryHi)) }) }) Describe("An app staged on the DEA", func() { BeforeEach(func() { app_helpers.DisableDiego(appName) Eventually(cf.Cf("start", appName), CF_PUSH_TIMEOUT).Should(Exit(0)) Eventually(helpers.CurlingAppRoot(appName), DEFAULT_TIMEOUT).Should(ContainSubstring(binaryHi)) })
return helpers.CurlAppRoot(Config, appName) }, Config.DefaultTimeoutDuration()).Should(ContainSubstring("Hi, I'm Dora!")) }) AfterEach(func() { app_helpers.AppReport(appName, Config.DefaultTimeoutDuration()) Expect(cf.Cf("delete", appName, "-f", "-r").Wait(Config.DefaultTimeoutDuration())).To(Exit(0)) }) Describe("Removing the route", func() { It("Should be able to remove and delete the route", func() { secondHost := random_name.CATSRandomName("ROUTE") By("adding a route") Eventually(cf.Cf("map-route", appName, Config.GetAppsDomain(), "-n", secondHost), Config.DefaultTimeoutDuration()).Should(Exit(0)) Eventually(helpers.CurlingAppRoot(Config, appName), Config.DefaultTimeoutDuration()).Should(ContainSubstring("Hi, I'm Dora!")) Eventually(helpers.CurlingAppRoot(Config, secondHost), Config.DefaultTimeoutDuration()).Should(ContainSubstring("Hi, I'm Dora!")) By("removing a route") Eventually(cf.Cf("unmap-route", appName, Config.GetAppsDomain(), "-n", secondHost), Config.DefaultTimeoutDuration()).Should(Exit(0)) Eventually(helpers.CurlingAppRoot(Config, secondHost), Config.DefaultTimeoutDuration()).Should(ContainSubstring("404")) Eventually(helpers.CurlingAppRoot(Config, appName), Config.DefaultTimeoutDuration()).Should(ContainSubstring("Hi, I'm Dora!")) By("deleting the original route") Expect(cf.Cf("delete-route", Config.GetAppsDomain(), "-n", appName, "-f").Wait(Config.DefaultTimeoutDuration())).To(Exit(0)) Eventually(helpers.CurlingAppRoot(Config, appName), Config.DefaultTimeoutDuration()).Should(ContainSubstring("404")) }) }) })
appName = random_name.CATSRandomName("APP") Eventually(cf.Cf( "push", appName, "--no-start", // app is defined by cloudfoundry-incubator/diego-dockerfiles "-o", "cloudfoundry/diego-docker-app-custom:latest", "-m", DEFAULT_MEMORY_LIMIT, "-d", Config.GetAppsDomain(), "-i", "1", "-c", fmt.Sprintf("/myapp/dockerapp -name=%s", appName)), Config.DefaultTimeoutDuration(), ).Should(Exit(0)) }) It("retains its start command through starts and stops", func() { Eventually(helpers.CurlingAppRoot(Config, appName), Config.DefaultTimeoutDuration()).Should(Equal("0")) Eventually(helpers.CurlApp(Config, appName, "/name"), Config.DefaultTimeoutDuration()).Should(Equal(appName)) By("making the app unreachable when it's stopped") Eventually(cf.Cf("stop", appName), Config.DefaultTimeoutDuration()).Should(Exit(0)) Eventually(helpers.CurlingAppRoot(Config, appName), Config.DefaultTimeoutDuration()).Should(ContainSubstring("404")) Eventually(cf.Cf("start", appName), Config.CfPushTimeoutDuration()).Should(Exit(0)) Eventually(helpers.CurlingAppRoot(Config, appName), Config.DefaultTimeoutDuration()).Should(Equal("0")) Eventually(helpers.CurlApp(Config, appName, "/name"), Config.DefaultTimeoutDuration()).Should(Equal(appName)) }) }) Describe("running a docker app without a start command", func() { BeforeEach(func() { appName = random_name.CATSRandomName("APP")
package wats import ( "github.com/cloudfoundry-incubator/cf-test-helpers/helpers" . "github.com/onsi/ginkgo" . "github.com/onsi/gomega" ) var _ = Describe("ASP classic applications", func() { It("exercises the app through its lifecycle", func() { By("pushing it") Eventually(pushApp(appName, "../assets/asp-classic", 1, "256m")).Should(Succeed()) By("staging and running it on Diego") enableDiego(appName) Eventually(runCf("start", appName), CF_PUSH_TIMEOUT).Should(Succeed()) By("verifying it's up") Eventually(helpers.CurlingAppRoot(appName)).Should(ContainSubstring("Hello World!")) }) })
}) Describe("when the healthcheck is set to none", func() { It("starts up successfully", func() { By("pushing it") Eventually(cf.Cf("push", appName, "-p", assets.NewAssets().Dora, "--no-start", "-b", "ruby_buildpack"), CF_PUSH_TIMEOUT).Should(Exit(0)) By("staging and running it on Diego") enableDiego(appName) By("setting the healthcheck to none") setHealthCheck(appName, "none") Eventually(cf.Cf("start", appName), CF_PUSH_TIMEOUT).Should(Exit(0)) By("verifying it's up") Eventually(helpers.CurlingAppRoot(appName)).Should(ContainSubstring("Hi, I'm Dora!")) }) }) Describe("when the healthcheck is set to port", func() { It("starts up successfully", func() { By("pushing it") Eventually(cf.Cf("push", appName, "-p", assets.NewAssets().Dora, "--no-start", "-b", "ruby_buildpack"), CF_PUSH_TIMEOUT).Should(Exit(0)) By("staging and running it on Diego") enableDiego(appName) By("setting the healthcheck to port") setHealthCheck(appName, "port") Eventually(cf.Cf("start", appName), CF_PUSH_TIMEOUT).Should(Exit(0))
"-d", Config.GetAppsDomain(), "-c", "./app"), Config.CfPushTimeoutDuration()).Should(Exit(0)) }) AfterEach(func() { app_helpers.AppReport(appName, Config.DefaultTimeoutDuration()) Eventually(cf.Cf("delete", appName, "-f"), Config.DefaultTimeoutDuration()).Should(Exit(0)) }) Describe("An app staged on Diego", func() { BeforeEach(func() { app_helpers.EnableDiego(appName) Eventually(cf.Cf("start", appName), Config.CfPushTimeoutDuration()).Should(Exit(0)) Eventually(helpers.CurlingAppRoot(Config, appName), Config.DefaultTimeoutDuration()).Should(ContainSubstring(binaryHi)) }) It("runs on the DEAs", func() { app_helpers.DisableDiego(appName) Eventually(cf.Cf("restart", appName), Config.CfPushTimeoutDuration()).Should(Exit(0)) Eventually(helpers.CurlingAppRoot(Config, appName), Config.DefaultTimeoutDuration()).Should(ContainSubstring(binaryHi)) }) }) Describe("An app staged on the DEA", func() { BeforeEach(func() { app_helpers.DisableDiego(appName) Eventually(cf.Cf("start", appName), Config.CfPushTimeoutDuration()).Should(Exit(0)) Eventually(helpers.CurlingAppRoot(Config, appName), Config.DefaultTimeoutDuration()).Should(ContainSubstring(binaryHi)) })
"space_guid": "%s", "docker_image": "cloudfoundry/diego-docker-app-custom:latest", "command": "/myapp/dockerapp", "diego": true }` }) JustBeforeEach(func() { spaceGuid := guidForSpaceName(context.RegularUserContext().Space) payload := fmt.Sprintf(createDockerAppPayload, appName, spaceGuid) Eventually(cf.Cf("curl", "/v2/apps", "-X", "POST", "-d", payload)).Should(Exit(0)) Eventually(cf.Cf("create-route", context.RegularUserContext().Space, domain, "-n", appName)).Should(Exit(0)) Eventually(cf.Cf("map-route", appName, domain, "-n", appName)).Should(Exit(0)) Eventually(cf.Cf("start", appName), DOCKER_IMAGE_DOWNLOAD_DEFAULT_TIMEOUT).Should(Exit(0)) Eventually(helpers.CurlingAppRoot(appName)).Should(Equal("0")) }) AfterEach(func() { Eventually(cf.Cf("logs", appName, "--recent")).Should(Exit()) Eventually(cf.Cf("delete", appName, "-f")).Should(Exit(0)) }) Describe("running the app", func() { It("merges the garden and docker environment variables", func() { env_json := helpers.CurlApp(appName, "/env") var env_vars map[string]string json.Unmarshal([]byte(env_json), &env_vars) // garden set values should win Expect(env_vars).To(HaveKey("HOME"))
"github.com/cloudfoundry-incubator/cf-test-helpers/cf" "github.com/cloudfoundry-incubator/cf-test-helpers/helpers" ) var _ = Describe("A standalone webapp", func() { AfterEach(func() { Eventually(cf.Cf("logs", appName, "--recent")).Should(Exit()) Eventually(cf.Cf("delete", appName, "-f")).Should(Exit(0)) }) Describe("staged on Diego and running on Diego", func() { It("exercises the app through its lifecycle", func() { By("pushing it", func() { Eventually(cf.Cf("push", appName, "-p", "../assets/webapp", "--no-start", "-b", "https://github.com/ryandotsmith/null-buildpack.git", "-s", "windows2012R2"), CF_PUSH_TIMEOUT).Should(Exit(0)) }) By("staging and running it on Diego", func() { enableDiego(appName) session := cf.Cf("start", appName) Eventually(session, CF_PUSH_TIMEOUT).Should(Exit(0)) }) By("verifying it's up", func() { Eventually(helpers.CurlingAppRoot(appName)).Should(ContainSubstring("hi i am a standalone webapp")) }) }) }) })
return helpers.CurlAppRoot(appName) }, DEFAULT_TIMEOUT).Should(ContainSubstring("Hi, I'm Dora!")) }) AfterEach(func() { app_helpers.AppReport(appName, DEFAULT_TIMEOUT) Expect(cf.Cf("delete", appName, "-f", "-r").Wait(DEFAULT_TIMEOUT)).To(Exit(0)) }) Describe("Removing the route", func() { It("Should be able to remove and delete the route", func() { secondHost := generator.RandomName() By("adding a route") Eventually(cf.Cf("map-route", appName, helpers.LoadConfig().AppsDomain, "-n", secondHost), DEFAULT_TIMEOUT).Should(Exit(0)) Eventually(helpers.CurlingAppRoot(appName), DEFAULT_TIMEOUT).Should(ContainSubstring("Hi, I'm Dora!")) Eventually(helpers.CurlingAppRoot(secondHost), DEFAULT_TIMEOUT).Should(ContainSubstring("Hi, I'm Dora!")) By("removing a route") Eventually(cf.Cf("unmap-route", appName, helpers.LoadConfig().AppsDomain, "-n", secondHost), DEFAULT_TIMEOUT).Should(Exit(0)) Eventually(helpers.CurlingAppRoot(secondHost), DEFAULT_TIMEOUT).Should(ContainSubstring("404")) Eventually(helpers.CurlingAppRoot(appName), DEFAULT_TIMEOUT).Should(ContainSubstring("Hi, I'm Dora!")) By("deleting the original route") Expect(cf.Cf("delete-route", helpers.LoadConfig().AppsDomain, "-n", appName, "-f").Wait(DEFAULT_TIMEOUT)).To(Exit(0)) Eventually(helpers.CurlingAppRoot(appName), DEFAULT_TIMEOUT).Should(ContainSubstring("404")) }) }) })
Describe("An app staged on Diego and running on Diego", func() { It("attempts to forkbomb the environment", func() { numWinCells, err := strconv.Atoi(os.Getenv("NUM_WIN_CELLS")) Expect(err).NotTo(HaveOccurred(), "Please provide NUM_WIN_CELLS (The number of windows cells in tested deployment)") By("pushing it", func() { Eventually(pushNoraWithOptions(appName, numWinCells*2, "2G"), CF_PUSH_TIMEOUT).Should(Succeed()) }) By("staging and running it on Diego", func() { enableDiego(appName) Eventually(runCf("start", appName), CF_PUSH_TIMEOUT).Should(Succeed()) }) By("verifying it's up", func() { Eventually(helpers.CurlingAppRoot(appName)).Should(ContainSubstring("hello i am nora")) }) By("storing the current computer names") computerNames := reportedComputerNames(numWinCells) Expect(len(computerNames)).To(Equal(numWinCells)) By("Running fork bomb", func() { helpers.CurlApp(appName, "/breakoutbomb") }) time.Sleep(3 * time.Second) By("Making sure the bomb did not take down the machine", func() { newComputerNames := reportedComputerNames(numWinCells) Expect(newComputerNames).To(Equal(computerNames))
"github.com/cloudfoundry-incubator/cf-test-helpers/cf" "github.com/cloudfoundry-incubator/cf-test-helpers/generator" "github.com/cloudfoundry-incubator/cf-test-helpers/helpers" "github.com/cloudfoundry-incubator/diego-acceptance-tests/helpers/assets" ) var _ = Describe("Adding and removing routes", func() { var appName string BeforeEach(func() { appName = generator.RandomName() Eventually(cf.Cf("push", appName, "-p", assets.NewAssets().Standalone, "--no-start", "-b", BINARY_BUILDPACK, "-c", "./bin/start"), CF_PUSH_TIMEOUT).Should(Exit(0)) enableDiego(appName) Eventually(cf.Cf("start", appName), CF_PUSH_TIMEOUT).Should(Exit(0)) Eventually(helpers.CurlingAppRoot(appName)).Should(ContainSubstring("Hi, I'm Bash!")) }) AfterEach(func() { Eventually(cf.Cf("logs", appName, "--recent")).Should(Exit()) Eventually(cf.Cf("delete", appName, "-f")).Should(Exit(0)) }) It("should be able to add and remove routes", func() { secondHost := generator.RandomName() By("changing the environment") Eventually(cf.Cf("set-env", appName, "WHY", "force-app-update")).Should(Exit(0)) By("adding a route") Eventually(cf.Cf("map-route", appName, helpers.LoadConfig().AppsDomain, "-n", secondHost)).Should(Exit(0))