public async Task DrainModeEnabled_RunningHost_StartsNewHost_ReturnsOk() { // Validate the drain state is "Disabled" initially var response = await SamplesTestHelpers.InvokeDrainStatus(this); var responseString = response.Content.ReadAsStringAsync().Result; var drainStatus = JsonConvert.DeserializeObject <DrainModeStatus>(responseString); Assert.Equal(drainStatus.State, DrainModeState.Disabled); // Capture pre-drain instance ID var originalInstanceId = this.HostInstanceId; // Validate ability to call HttpTrigger without issues response = await SamplesTestHelpers.InvokeHttpTrigger(this, "HttpTrigger"); Assert.Equal(HttpStatusCode.OK, response.StatusCode); // Put the host in drain mode response = await SamplesTestHelpers.InvokeDrain(this); // Validate the drain state is changed to "Completed" response = await SamplesTestHelpers.InvokeDrainStatus(this); responseString = response.Content.ReadAsStringAsync().Result; drainStatus = JsonConvert.DeserializeObject <DrainModeStatus>(responseString); Assert.Equal(DrainModeState.Completed, drainStatus.State); // Validate host is "Running" after resume is called response = await SamplesTestHelpers.InvokeResume(this); responseString = response.Content.ReadAsStringAsync().Result; var resumeStatus = JsonConvert.DeserializeObject <ResumeStatus>(responseString); Assert.Equal(ScriptHostState.Running, resumeStatus.State); // Validate the drain state is changed to "Disabled" response = await SamplesTestHelpers.InvokeDrainStatus(this); responseString = response.Content.ReadAsStringAsync().Result; drainStatus = JsonConvert.DeserializeObject <DrainModeStatus>(responseString); Assert.Equal(DrainModeState.Disabled, drainStatus.State); // Validate HttpTrigger function is still working response = await SamplesTestHelpers.InvokeHttpTrigger(this, "HttpTrigger"); Assert.Equal(HttpStatusCode.OK, response.StatusCode); // Validate the instance ID has changed Assert.NotEqual(originalInstanceId, this.HostInstanceId); }
public async Task DrainModeDisabled_RunningHost_ReturnsOk() { // Validate the drain state is "Disabled" initially var response = await SamplesTestHelpers.InvokeDrainStatus(this); var responseString = response.Content.ReadAsStringAsync().Result; var drainStatus = JsonConvert.DeserializeObject <DrainModeStatus>(responseString); Assert.Equal(drainStatus.State, DrainModeState.Disabled); // Validate host is "Running" after resume is called and drain mode is not active response = await SamplesTestHelpers.InvokeResume(this); responseString = response.Content.ReadAsStringAsync().Result; var resumeStatus = JsonConvert.DeserializeObject <ResumeStatus>(responseString); Assert.Equal(ScriptHostState.Running, resumeStatus.State); // Validate HttpTrigger function is still working response = await SamplesTestHelpers.InvokeHttpTrigger(this, "HttpTrigger"); Assert.Equal(HttpStatusCode.OK, response.StatusCode); }