public async Task TestExplorer() { const string manifest = @"{ ""infrastructure_dependencies"": [ ], ""service_dependencies"": [ { ""name"":""DummyConsoleKestrel"", ""min_version"": ""1.0.0"", ""max_version"": ""2.0.0"", ""connection_string"": ""http://dummy-console-kestrel:40500"" } ] }"; var memoryStream = new MemoryStream(); using (var streamWriter = new StreamWriter(memoryStream)) { await streamWriter.WriteAsync(manifest).ConfigureAwait(false); await streamWriter.FlushAsync().ConfigureAwait(false); memoryStream.Seek(0, SeekOrigin.Begin); ParsedDependencies parsedDependencies = DependenciesReader.ReadDependencies(memoryStream, new DummyFilePathMapper(), new Core.NAMESettings(), new Core.NAMEContext()); Assert.True(1 == parsedDependencies.ServiceDependencies.Count(), "The number of service dependencies did not match."); Assert.Empty(parsedDependencies.InfrastructureDependencies); var serviceDependency = parsedDependencies.ServiceDependencies.First(); DependencyCheckStatus status = await serviceDependency.GetStatus().ConfigureAwait(false); // we still need to test for backwards compatibility #pragma warning disable CS0618 // Type or member is obsolete Assert.True(status.CheckPassed); #pragma warning restore CS0618 // Type or member is obsolete Assert.Equal(NAMEStatusLevel.Ok, status.CheckStatus); Assert.NotNull(status.Version.ManifestNode); Assert.Equal("1.0.0", status.Version.ToString()); Assert.Equal("NAME.DummyService", status.Version.ManifestNode["name"]); Assert.Empty(status.Version.ManifestNode["infrastructure_dependencies"].Children); Assert.Empty(status.Version.ManifestNode["service_dependencies"].Children); } }
public async Task TestExplorer() { const string manifest = @"{ ""infrastructure_dependencies"": [ ], ""service_dependencies"": [ { ""name"":""DummyService2"", ""min_version"": ""1.0.0"", ""max_version"": ""2.0.0"", ""connection_string"": ""http://dummy-service:5000"" } ] }"; var memoryStream = new MemoryStream(); using (var streamWriter = new StreamWriter(memoryStream)) { await streamWriter.WriteAsync(manifest).ConfigureAwait(false); await streamWriter.FlushAsync().ConfigureAwait(false); memoryStream.Seek(0, SeekOrigin.Begin); ParsedDependencies parsedDependencies = DependenciesReader.ReadDependencies(memoryStream, new DummyFilePathMapper(), new Core.NAMESettings(), new Core.NAMEContext()); Assert.True(parsedDependencies.ServiceDependencies.Any()); Assert.False(parsedDependencies.InfrastructureDependencies.Any()); foreach (Dependency dependency in parsedDependencies.ServiceDependencies) { DependencyCheckStatus status = await dependency.GetStatus().ConfigureAwait(false); Assert.True(status.CheckPassed); Assert.NotNull(status.Version.ManifestNode); Assert.Equal("NAME.DummyService", status.Version.ManifestNode["name"]); ////Assert.NotEmpty(status.Version.ManifestNode["infrastructure_dependencies"].Children); Assert.NotEmpty(status.Version.ManifestNode["service_dependencies"].Children); } } }
internal override async Task <JsonNode> ToJson() { JsonClass jsonDependency = new JsonClass { { "name", this.ToString() } }; DependencyCheckStatus status = await this.GetStatus().ConfigureAwait(false); if (status.Version != null) { jsonDependency.Add("version", status.Version.ToString()); } if (status.CheckStatus != NAMEStatusLevel.Ok) { jsonDependency.Add("error", status.Message ?? "Unhandled error"); } jsonDependency.Add("status", status.CheckStatus.ToString()); jsonDependency.Add("min_version", this.MinimumVersion.ToString()); jsonDependency.Add("max_version", this.MaximumVersion?.ToString() ?? "*"); if (status.Version?.ManifestNode != null) { JsonNode infrastructureDependencies = status.Version.ManifestNode["infrastructure_dependencies"]; JsonNode serviceDependencies = status.Version.ManifestNode["service_dependencies"]; if (infrastructureDependencies != null) { jsonDependency.Add("infrastructure_dependencies", infrastructureDependencies); } if (serviceDependencies != null) { jsonDependency.Add("service_dependencies", serviceDependencies); } } return(jsonDependency); }
private static async Task<IEnumerable<DependencyCheckStatus>> GetDependenciesStatutes(IEnumerable<Dependency> dependencies) { List<DependencyCheckStatus> dependenciesStatuses = new List<DependencyCheckStatus>(); foreach (var dependency in dependencies) { DependencyCheckStatus checkStatus; try { checkStatus = await dependency.GetStatus().ConfigureAwait(false); } catch (NAMEException ex) { checkStatus = new DependencyCheckStatus(false, message: ex.Message, innerException: ex); } catch (Exception ex) { checkStatus = new DependencyCheckStatus(false, message: $"An unexpected exception happened checking the state of the dependency.", innerException: ex); } dependenciesStatuses.Add(checkStatus); } return dependenciesStatuses; }