consulManifest, _, err = helpers.DeployConsulWithTurbulence("recursor-timeout", 1, boshClient, config)
			Expect(err).NotTo(HaveOccurred())

			Eventually(func() ([]bosh.VM, error) {
				return helpers.DeploymentVMs(boshClient, consulManifest.Name)
			}, "1m", "10s").Should(ConsistOf(helpers.GetVMsFromManifest(consulManifest)))

			tcClient = testconsumerclient.New(fmt.Sprintf("http://%s:6769", consulManifest.InstanceGroups[1].Networks[0].StaticIPs[0]))
		})
	})

	AfterEach(func() {
		By("deleting consul deployment", func() {
			if !CurrentGinkgoTestDescription().Failed {
				Eventually(func() string {
					incidentResp, err := turbulenceClient.Incident(delayIncidentID)
					Expect(err).NotTo(HaveOccurred())

					return incidentResp.ExecutionCompletedAt
				}, TIMEOUT.String(), "10s").ShouldNot(BeEmpty())

				// Turbulence API might say that the incident is finished, but it might not be - sanity check
				Eventually(func() (int64, error) {
					var err error
					dnsStartTime := time.Now()
					_, err = tcClient.DNS("my-fake-server.fake.local")
					if err != nil {
						return 0, err
					}
					dnsElapsedTime := time.Since(dnsStartTime)
					return dnsElapsedTime.Nanoseconds(), nil