errorKillingIndices := client.KillIndices("deployment-name", "job-name", []int{0})
			Expect(errorKillingIndices.Error()).To(ContainSubstring("Unable to decode turbulence response."))
		})
	})

	Describe("Delay", func() {
		var fakeServer *fakeTurbulenceServer
		var client turbulence.Client

		BeforeEach(func() {
			fakeServer = NewFakeTurbulenceServer()
			client = turbulence.NewClient(fakeServer.URL, 100*time.Millisecond, 40*time.Millisecond)
		})

		It("makes a POST request to create a control-network delay incident and polls for initial execution", func() {
			resp, err := client.Delay("deployment-name", "job-name", []int{0}, time.Second, 2*time.Second)
			Expect(err).NotTo(HaveOccurred())

			Expect(fakeServer.postIncidentCallCount).To(Equal(1))
			Expect(fakeServer.errorReadingBody).NotTo(HaveOccurred())
			Expect(string(fakeServer.receivedPOSTBody)).To(MatchJSON(expectedDelayPOSTRequest))
			Expect(resp).To(Equal(turbulence.Response{
				ID:                   "someID",
				ExecutionStartedAt:   "0001-01-01T00:00:00Z",
				ExecutionCompletedAt: "",
				Events: []turbulence.ResponseEvent{
					{
						Type:               "ControlNet",
						ExecutionStartedAt: "0001-01-01T00:00:00Z",
					},
				},
	It("resolves long running DNS queries utilizing the consul recursor_timeout property", func() {
		By("making sure my-fake-server resolves", func() {
			addresses, err := tcClient.DNS("my-fake-server.fake.local")
			Expect(err).NotTo(HaveOccurred())

			// miekg/dns implementation responds with A and AAAA records regardless of the type of record requested
			// therefore we're expected 4 IPs here
			if config.WindowsClients {
				Expect(addresses).To(Equal([]string{"10.2.3.4", "10.2.3.4"}))
			} else {
				Expect(addresses).To(Equal([]string{"10.2.3.4", "10.2.3.4", "10.2.3.4", "10.2.3.4"}))
			}
		})

		By("delaying DNS queries with a network delay that is greater than the recursor timeout", func() {
			response, err := turbulenceClient.Delay(consulManifest.Name, "fake-dns-server", []int{0}, DELAY, TIMEOUT)
			Expect(err).NotTo(HaveOccurred())
			delayIncidentID = response.ID
		})

		By("making a DNS query which should timeout", func() {
			Eventually(func() ([]string, error) {
				return tcClient.DNS("my-fake-server.fake.local")
			}, "30s", "100ms").Should(BeEmpty())
		})

		By("waiting for the network delay to end", func() {
			Eventually(func() string {
				incidentResp, err := turbulenceClient.Incident(delayIncidentID)
				Expect(err).NotTo(HaveOccurred())