private static void UnmarshallResult(XmlUnmarshallerContext context, GetHealthCheckStatusResponse response) { int originalDepth = context.CurrentDepth; int targetDepth = originalDepth + 1; if (context.IsStartOfDocument) { targetDepth += 1; } while (context.Read()) { if (context.IsStartElement || context.IsAttribute) { if (context.TestExpression("HealthCheckObservations/HealthCheckObservation", targetDepth)) { var unmarshaller = HealthCheckObservationUnmarshaller.Instance; response.HealthCheckObservations.Add(unmarshaller.Unmarshall(context)); continue; } } else if (context.IsEndElement && context.CurrentDepth < originalDepth) { return; } } return; }
/// <summary> /// Unmarshaller the response from the service to the response class. /// </summary> /// <param name="context"></param> /// <returns></returns> public override AmazonWebServiceResponse Unmarshall(XmlUnmarshallerContext context) { GetHealthCheckStatusResponse response = new GetHealthCheckStatusResponse(); UnmarshallResult(context, response); return(response); }
public void HealthCheckTests() { var createRequest = new CreateHealthCheckRequest() { CallerReference = Guid.NewGuid().ToString(), HealthCheckConfig = new HealthCheckConfig() { Type = "TCP", Port = 22, IPAddress = "12.12.12.12", RequestInterval = 10, FailureThreshold = 5 } }; var createResponse = Client.CreateHealthCheck(createRequest); Assert.IsNotNull(createResponse.HealthCheck.Id); Assert.AreEqual(10, createResponse.HealthCheck.HealthCheckConfig.RequestInterval); Assert.AreEqual(5, createResponse.HealthCheck.HealthCheckConfig.FailureThreshold); string healthCheckId = createResponse.HealthCheck.Id; var listResponse = Client.ListHealthChecks(); Assert.IsNotNull(listResponse.HealthChecks.FirstOrDefault(x => x.Id == healthCheckId)); GetHealthCheckStatusResponse status = null; var stopTime = DateTime.Now + maxWaitTime; while (DateTime.Now < stopTime) { try { status = Client.GetHealthCheckStatus(new GetHealthCheckStatusRequest { HealthCheckId = healthCheckId }); break; } catch (NoSuchHealthCheckException) { Thread.Sleep(TimeSpan.FromSeconds(10)); } } Assert.IsNotNull(status); Assert.IsNotNull(status.HealthCheckObservations); var healthCheck = Client.GetHealthCheck(new GetHealthCheckRequest { HealthCheckId = healthCheckId }).HealthCheck; Assert.IsNotNull(healthCheck); Assert.IsNotNull(healthCheck.Id); Assert.IsNotNull(healthCheck.HealthCheckConfig); var tagSet = Client.ListTagsForResource(new ListTagsForResourceRequest { ResourceType = TagResourceType.Healthcheck, ResourceId = healthCheckId }).ResourceTagSet; Assert.IsNotNull(tagSet); Assert.IsNotNull(tagSet.ResourceId); Assert.IsNotNull(tagSet.ResourceType); Assert.IsNotNull(tagSet.Tags); Assert.AreEqual(0, tagSet.Tags.Count); Client.ChangeTagsForResource(new ChangeTagsForResourceRequest { ResourceType = TagResourceType.Healthcheck, ResourceId = healthCheckId, AddTags = new List <Tag> { new Tag { Key = "Test", Value = "true" } } }); tagSet = Client.ListTagsForResource(new ListTagsForResourceRequest { ResourceType = TagResourceType.Healthcheck, ResourceId = healthCheckId }).ResourceTagSet; Assert.IsNotNull(tagSet); Assert.IsNotNull(tagSet.ResourceId); Assert.IsNotNull(tagSet.ResourceType); Assert.IsNotNull(tagSet.Tags); Assert.AreEqual(1, tagSet.Tags.Count); Assert.AreEqual("Test", tagSet.Tags[0].Key); Assert.AreEqual("true", tagSet.Tags[0].Value); Client.DeleteHealthCheck(new DeleteHealthCheckRequest() { HealthCheckId = healthCheckId }); listResponse = Client.ListHealthChecks(); Assert.IsNull(listResponse.HealthChecks.FirstOrDefault(x => x.Id == healthCheckId)); }