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);
        }
Exemplo n.º 3
0
        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));
        }