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); }
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")); }
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); }
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)); }
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)); }