Example #1
0
        private OpenDotaApi(string apiKey, WebProxy proxy)
        {
            _request = new Request(apiKey, proxy);

            Matches         = new MatchEndpoint(_request);
            Player          = new PlayerEndpoint(_request);
            ProPlayers      = new ProPlayerEndpoint(_request);
            ProMatches      = new ProMatchesEndpoint(_request);
            PublicMatches   = new PublicMatchEndpoint(_request);
            Metadata        = new MetadataEndpoint(_request);
            MmrDistribution = new MmrDistributionEndpoint(_request);
            Search          = new SearchEndpoint(_request);
            Ranking         = new RankingEndpoint(_request);
            Benchmarks      = new BenchmarksEndpoint(_request);
            Status          = new StatusEndpoint(_request);
            Health          = new HealthEndpoint(_request);
            Request         = new RequestEndpoint(_request);
            FindMatch       = new FindMatchEndpoint(_request);
            Hero            = new HeroEndpoint(_request);
            HeroStats       = new HeroStatsEndpoint(_request);
            League          = new LeagueEndpoint(_request);
            Team            = new TeamEndpoint(_request);
            Replay          = new ReplayEndpoint(_request);
            Record          = new RecordEndpoint(_request);
            Live            = new LiveEndpoint(_request);
            Scenarios       = new ScenariosEndpoint(_request);
            Schema          = new SchemaEndpoint(_request);
        }
        public void Invoke_HandlesExceptions_ReturnsExpectedHealth()
        {
            var opts         = new HealthEndpointOptions();
            var contributors = new List <IHealthContributor>()
            {
                new TestContrib("h1"), new TestContrib("h2", true), new TestContrib("h3")
            };
            var ep = new HealthEndpoint(opts, new DefaultHealthAggregator(), contributors);

            var info = ep.Invoke(null);

            foreach (var contrib in contributors)
            {
                TestContrib tc = (TestContrib)contrib;
                if (tc.Throws)
                {
                    Assert.False(tc.Called);
                }
                else
                {
                    Assert.True(tc.Called);
                }
            }

            Assert.Equal(HealthStatus.UP, info.Status);
        }
Example #3
0
        public OpenDota(string apiKey = null, IWebProxy proxy = null)
        {
            _request       = new RequestHandler(apiKey, proxy);
            _jsonFormatter = new JsonFormatter(_request);

            Matches       = new MatchesEndpoint(_jsonFormatter);
            PlayersByRank = new PlayersByRankEndpoint(_jsonFormatter);
            Players       = new PlayersEndpoint(_jsonFormatter, _request);
            ProPlayers    = new ProPlayersEndpoint(_jsonFormatter);
            ProMatches    = new ProMatchesEndpoint(_jsonFormatter);
            PublicMatches = new PublicMatchesEndpoint(_jsonFormatter);
            ParsedMatches = new ParsedMatchesEndpoint(_jsonFormatter);
            Metadata      = new MetadataEndpoint(_jsonFormatter);
            Distributions = new DistributionsEndpoint(_jsonFormatter);
            Search        = new SearchEndpoint(_jsonFormatter);
            Rankings      = new RankingsEndpoint(_jsonFormatter);
            Benchmarks    = new BenchmarksEndpoint(_jsonFormatter);
            Status        = new StatusEndpoint(_jsonFormatter);
            Health        = new HealthEndpoint(_jsonFormatter);
            Request       = new RequestEndpoint(_jsonFormatter, _request);
            FindMatches   = new FindMatchesEndpoint(_jsonFormatter);
            Heroes        = new HeroesEndpoint(_jsonFormatter);
            HeroStats     = new HeroStatsEndpoint(_jsonFormatter);
            Leagues       = new LeaguesEndpoint(_jsonFormatter);
            Teams         = new TeamsEndpoint(_jsonFormatter);
            Replays       = new ReplaysEndpoint(_jsonFormatter);
            Records       = new RecordsEndpoint(_jsonFormatter);
            Live          = new LiveEndpoint(_jsonFormatter);
            Scenarios     = new ScenariosEndpoint(_jsonFormatter);
            Schema        = new SchemaEndpoint(_jsonFormatter);
            Constants     = new ConstantsEndpoint(_request);
        }
        /// <summary>
        /// Add HealthCheck middleware to OWIN Pipeline
        /// </summary>
        /// <param name="builder">OWIN <see cref="IAppBuilder" /></param>
        /// <param name="options"><see cref="IHealthOptions"/> for configuring Health endpoint</param>
        /// <param name="aggregator"><see cref="IHealthAggregator"/> for determining how to report aggregate health of the application</param>
        /// <param name="contributors">A list of <see cref="IHealthContributor"/> to monitor for determining application health</param>
        /// <param name="loggerFactory">For logging within the middleware</param>
        /// <returns>OWIN <see cref="IAppBuilder" /> with Health Endpoint added</returns>
        public static IAppBuilder UseHealthActuator(this IAppBuilder builder, IHealthOptions options, IHealthAggregator aggregator, IEnumerable <IHealthContributor> contributors, ILoggerFactory loggerFactory = null)
        {
            if (builder == null)
            {
                throw new ArgumentNullException(nameof(builder));
            }

            if (options == null)
            {
                throw new ArgumentNullException(nameof(options));
            }

            if (aggregator == null)
            {
                throw new ArgumentNullException(nameof(aggregator));
            }

            if (contributors == null)
            {
                throw new ArgumentNullException(nameof(contributors));
            }

            var endpoint = new HealthEndpoint(options, aggregator, contributors, loggerFactory?.CreateLogger <HealthEndpoint>());
            var logger   = loggerFactory?.CreateLogger <HealthEndpointOwinMiddleware>();

            return(builder.Use <HealthEndpointOwinMiddleware>(endpoint, logger));
        }
        public void Invoke_NoContributors_ReturnsExpectedHealth()
        {
            var opts         = new HealthEndpointOptions();
            var contributors = new List <IHealthContributor>();
            var agg          = new DefaultHealthAggregator();
            var ep           = new HealthEndpoint(opts, agg, contributors, GetLogger <HealthEndpoint>());

            var health = ep.Invoke(null);

            Assert.NotNull(health);
            Assert.Equal(HealthStatus.UNKNOWN, health.Status);
        }
        public void HealthEndpointMiddleware_PathAndVerbMatching_ReturnsExpected()
        {
            var opts = new HealthEndpointOptions();
            var contribs = new List<IHealthContributor>() { new DiskSpaceContributor() };
            var ep = new HealthEndpoint(opts, new DefaultHealthAggregator(), contribs);
            var actMOptions = new ActuatorManagementOptions();
            actMOptions.EndpointOptions.Add(opts);
            var middle = new HealthEndpointMiddleware(null, ep, new List<IManagementOptions> { actMOptions });

            Assert.True(middle.RequestVerbAndPathMatch("GET", "/actuator/health"));
            Assert.False(middle.RequestVerbAndPathMatch("PUT", "/actuator/health"));
            Assert.False(middle.RequestVerbAndPathMatch("GET", "/actuator/badpath"));
        }
Example #7
0
        public static void UseHealthActuator(IConfiguration configuration, IHealthAggregator healthAggregator = null, IEnumerable <IHealthContributor> contributors = null, ILoggerFactory loggerFactory = null)
        {
            var options = new HealthOptions(configuration);

            healthAggregator = healthAggregator ?? new DefaultHealthAggregator();
            contributors     = contributors ?? new List <IHealthContributor>()
            {
                new DiskSpaceContributor(new DiskSpaceContributorOptions(configuration))
            };
            var ep      = new HealthEndpoint(options, healthAggregator, contributors, CreateLogger <HealthEndpoint>(loggerFactory));
            var handler = new HealthHandler(ep, SecurityService, CreateLogger <HealthHandler>(loggerFactory));

            ConfiguredHandlers.Add(handler);
        }
Example #8
0
        public void HealthEndpointMiddleware_PathAndVerbMatching_ReturnsExpected()
        {
            var opts     = new HealthOptions();
            var contribs = new List <IHealthContributor>()
            {
                new DiskSpaceContributor()
            };
            var ep     = new HealthEndpoint(opts, new DefaultHealthAggregator(), contribs);
            var middle = new HealthEndpointOwinMiddleware(null, ep);

            Assert.True(middle.RequestVerbAndPathMatch("GET", "/health"));
            Assert.False(middle.RequestVerbAndPathMatch("PUT", "/health"));
            Assert.False(middle.RequestVerbAndPathMatch("GET", "/badpath"));
        }
        public void Invoke_CallsAllContributors()
        {
            var opts         = new HealthEndpointOptions();
            var contributors = new List <IHealthContributor>()
            {
                new TestContrib("h1"), new TestContrib("h2"), new TestContrib("h3")
            };
            var ep = new HealthEndpoint(opts, new DefaultHealthAggregator(), contributors);

            var info = ep.Invoke(null);

            foreach (var contrib in contributors)
            {
                TestContrib tc = (TestContrib)contrib;
                Assert.True(tc.Called);
            }
        }
        public void InvokeWithInvalidGroupReturnsAllContributors()
        {
            // arrange
            var opts     = new HealthEndpointOptions();
            var contribs = new List <IHealthContributor>()
            {
                new DiskSpaceContributor(), new OutOfSserviceContributor(), new UnknownContributor(), new UpContributor()
            };
            var ep      = new HealthEndpoint(opts, new DefaultHealthAggregator(), contribs);
            var context = Substitute.For <ISecurityContext>();

            context.GetRequestComponents().Returns(new string[] { "health", "iNvAlId" });

            // act
            var result = ep.Invoke(context);

            // assert
            Assert.Equal(HealthStatus.OUT_OF_SERVICE, result.Status);
            Assert.True(result.Details.Keys.Count == 4);
            Assert.True(result.Groups.Count() == 2);
        }
        public void GetStatusCode_ReturnsExpected()
        {
            var opts     = new HealthEndpointOptions();
            var contribs = new List <IHealthContributor>()
            {
                new DiskSpaceContributor()
            };
            var ep = new HealthEndpoint(opts, new DefaultHealthAggregator(), contribs);

            Assert.Equal(503, ep.GetStatusCode(new HealthCheckResult {
                Status = HealthStatus.DOWN
            }));
            Assert.Equal(503, ep.GetStatusCode(new HealthCheckResult {
                Status = HealthStatus.OUT_OF_SERVICE
            }));
            Assert.Equal(200, ep.GetStatusCode(new HealthCheckResult {
                Status = HealthStatus.UP
            }));
            Assert.Equal(200, ep.GetStatusCode(new HealthCheckResult {
                Status = HealthStatus.UNKNOWN
            }));
        }
        public void IsHealthRequest_ReturnsExpected()
        {
            var opts     = new HealthOptions();
            var contribs = new List <IHealthContributor>()
            {
                new DiskSpaceContributor()
            };
            var ep     = new HealthEndpoint(opts, new DefaultHealthAggregator(), contribs);
            var middle = new HealthEndpointMiddleware(null, ep);

            var context = CreateRequest("GET", "/health");

            Assert.True(middle.IsHealthRequest(context));

            var context2 = CreateRequest("PUT", "/health");

            Assert.False(middle.IsHealthRequest(context2));

            var context3 = CreateRequest("GET", "/badpath");

            Assert.False(middle.IsHealthRequest(context3));
        }
        public void InvokeWithReadinessGroupReturnsGroupResults()
        {
            // arrange
            var opts            = new HealthEndpointOptions();
            var appAvailability = new ApplicationAvailability();
            var contribs        = new List <IHealthContributor>()
            {
                new UnknownContributor(), new UpContributor(), new ReadinessHealthContributor(appAvailability)
            };
            var ep      = new HealthEndpoint(opts, new DefaultHealthAggregator(), contribs);
            var context = Substitute.For <ISecurityContext>();

            context.GetRequestComponents().Returns(new string[] { "actuator", "health", "readiness" });
            appAvailability.SetAvailabilityState(appAvailability.ReadinessKey, ReadinessState.AcceptingTraffic, null);

            // act
            var result = ep.Invoke(context);

            // assert
            Assert.Equal(HealthStatus.UP, result.Status);
            Assert.True(result.Details.Keys.Count == 1);
            Assert.True(result.Groups.Count() == 2);
        }
        public void InvokeWithLivenessGroupReturnsGroupResults()
        {
            // arrange
            var opts            = new HealthEndpointOptions();
            var appAvailability = new ApplicationAvailability();
            var contribs        = new List <IHealthContributor>()
            {
                new DiskSpaceContributor(), new LivenessHealthContributor(appAvailability)
            };
            var ep      = new HealthEndpoint(opts, new DefaultHealthAggregator(), contribs);
            var context = Substitute.For <ISecurityContext>();

            context.GetRequestComponents().Returns(new string[] { "cloudfoundryapplication", "health", "liVeness" });
            appAvailability.SetAvailabilityState(appAvailability.LivenessKey, LivenessState.Correct, null);

            // act
            var result = ep.Invoke(context);

            // assert
            Assert.Equal(HealthStatus.UP, result.Status);
            Assert.True(result.Details.Keys.Count == 1);
            Assert.True(result.Groups.Count() == 2);
        }
 public HealthEndpointOwinMiddleware(OwinMiddleware next, HealthEndpoint endpoint, ILogger <HealthEndpointOwinMiddleware> logger = null)
     : base(next, endpoint, logger: logger)
 {
     _endpoint = endpoint ?? throw new ArgumentNullException(nameof(endpoint));
 }
Example #16
0
 public HealthEndpointOwinMiddleware(OwinMiddleware next, HealthEndpoint endpoint, IEnumerable <IManagementOptions> mgmtOptions, ILogger <HealthEndpointOwinMiddleware> logger = null)
     : base(next, endpoint, mgmtOptions, logger: logger)
 {
     _endpoint = endpoint ?? throw new ArgumentNullException(nameof(endpoint));
 }