protected void TestDeploymentManifestAndJson3()
        {
            var fixture       = new Fixture();
            var customization = new SupportMutableValueTypesCustomization();

            customization.Customize(fixture);
            var modules = fixture.CreateMany <EdgeDeploymentModuleModel>(30).ToList();
            var routes  = fixture.CreateMany <EdgeDeploymentRouteModel>(10).ToList();

            for (var i = 0; i < routes.Count; i++)
            {
                routes[i].To   = modules[i].Name;
                routes[i].From = modules[i + 10].Name;
            }
            var deployment1 = new EdgeDeploymentBase(Log.Logger);

            deployment1.WithManifest(new EdgeDeploymentManifestModel {
                Modules = modules,
                Routes  = routes
            });
            var json1       = deployment1.ToString();
            var deployment2 = new EdgeDeploymentBase(
                JsonConvertEx.DeserializeObject <ConfigurationContentModel>(json1), Log.Logger);
            var config1 = JsonConvertEx.DeserializeObject <ConfigurationContentModel>(
                json1);
            var config2 = JsonConvertEx.DeserializeObject <ConfigurationContentModel>(
                deployment2.ToString());

            Assert.True(JToken.DeepEquals(JToken.FromObject(config1), JToken.FromObject(config2)));
        }
        protected void TestDeploymentManifestAndJson2()
        {
            var deployment1 = new EdgeDeploymentBase(Log.Logger)
                              .WithModule("test1", "microsoft/test2:latest", new CreateContainerParameters {
                Env = new List <string> {
                    "FOOBAR1=zzzzzzz",
                    "FOOBAR2=zzzzzzz",
                    "FOOBAR3=zzzzzzz",
                    "FOOBAR4=zzzzzzz",
                },
                NetworkingConfig = new NetworkingConfig {
                    EndpointsConfig = new Dictionary <string, EndpointSettings> {
                        ["test1"] = new EndpointSettings {
                            IPAddress = "1.2.1.3",
                            NetworkID = "ddid"
                        },
                        ["test2"] = new EndpointSettings {
                            IPAddress = "1.2.1.3",
                            NetworkID = "ddid"
                        }
                    }
                },
            })
                              .WithModule("test2", "microsoft/test1:latest", new Dictionary <string, dynamic> {
                ["On"] = new {
                    Test = "test",
                    Swa  = "swa",
                    b    = new {
                        x = 1,
                        z = 1.0
                    }
                }
            })
                              .WithRoute("test12", "test1", "test2");

            var deployment2 = new EdgeDeploymentBase(
                JsonConvertEx.DeserializeObject <ConfigurationContentModel>(
                    deployment1.ToString()), Log.Logger);

            var config1 = JsonConvertEx.DeserializeObject <ConfigurationContentModel>(
                deployment1.ToString());
            var config2 = JsonConvertEx.DeserializeObject <ConfigurationContentModel>(
                deployment2.ToString());

            Assert.True(JToken.DeepEquals(JToken.FromObject(config1), JToken.FromObject(config2)));
        }
        protected void TestDeploymentManifestAndJson1()
        {
            var deployment1 = new EdgeDeploymentBase(Log.Logger)
                              .WithModule("test1", "microsoft/test2:latest")
                              .WithModule("test2", "microsoft/test1:latest")
                              .WithRoute("test12", "test1", "test2");

            var deployment2 = new EdgeDeploymentBase(
                JsonConvertEx.DeserializeObject <ConfigurationContentModel>(
                    deployment1.ToString()), Log.Logger);

            var config1 = JsonConvertEx.DeserializeObject <ConfigurationContentModel>(
                deployment1.ToString());
            var config2 = JsonConvertEx.DeserializeObject <ConfigurationContentModel>(
                deployment2.ToString());

            Assert.True(JToken.DeepEquals(JToken.FromObject(config1), JToken.FromObject(config2)));
        }
        protected void TestDeploymentManifestAndJsonTwin()
        {
            var deployment1 = new EdgeDeploymentBase(Log.Logger)
                              .WithModule("twin", "marcschier/azure-iiot-opc-twin-module", new CreateContainerParameters {
                HostConfig = new HostConfig {
                    Privileged = true
                }
            });

            var json1       = deployment1.ToString();
            var deployment2 = new EdgeDeploymentBase(
                JsonConvertEx.DeserializeObject <ConfigurationContentModel>(json1), Log.Logger);
            var config1 = JsonConvertEx.DeserializeObject <ConfigurationContentModel>(
                json1);
            var config2 = JsonConvertEx.DeserializeObject <ConfigurationContentModel>(
                deployment2.ToString());

            Assert.True(JToken.DeepEquals(JToken.FromObject(config1), JToken.FromObject(config2)));
        }