Пример #1
0
        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);
            }
        }
Пример #2
0
        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);
                }
            }
        }
Пример #3
0
        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);
        }
Пример #4
0
        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;
        }