public void MakesKubernetesAwareAuthConfig() { // Arrange var runtimeInfo = new Mock <IRuntimeInfo <DockerRuntimeConfig> >(); runtimeInfo.SetupGet(ri => ri.Config).Returns(new DockerRuntimeConfig("1.24", string.Empty)); var module = new Mock <IModule <DockerConfig> >(); module.SetupGet(m => m.Config).Returns(new DockerConfig("docker.io/nginx:latest", (string)null, Option.None <NotaryContentTrust>())); module.SetupGet(m => m.Name).Returns("mod1"); var authConfig = new AuthConfig { Username = "******", Password = "******", ServerAddress = "docker.io" }; CombinedKubernetesConfigProvider provider = new CombinedKubernetesConfigProvider(new[] { authConfig }, new Uri("unix:///var/run/iotedgedworkload.sock"), new Uri("unix:///var/run/iotedgedmgmt.sock"), false); // Act CombinedKubernetesConfig config = provider.GetCombinedConfig(module.Object, runtimeInfo.Object); // Assert Assert.True(config.ImagePullSecret.HasValue); config.ImagePullSecret.ForEach(secret => Assert.Equal("user-docker.io", secret.Name)); }
public void ParsesKubernetesCreateOptionsWhenExperimentalEnabled() { // Arrange var runtimeInfo = new Mock <IRuntimeInfo <DockerRuntimeConfig> >(); runtimeInfo.SetupGet(ri => ri.Config).Returns(new DockerRuntimeConfig("1.24", string.Empty)); var module = new Mock <IModule <DockerConfig> >(); module.SetupGet(m => m.Config).Returns(new DockerConfig("nginx:latest", ExperimentalCreateOptions, Option.None <NotaryContentTrust>())); module.SetupGet(m => m.Name).Returns("mod1"); CombinedKubernetesConfigProvider provider = new CombinedKubernetesConfigProvider(new[] { new AuthConfig() }, new Uri("unix:///var/run/iotedgedworkload.sock"), new Uri("unix:///var/run/iotedgedmgmt.sock"), true); // Act CombinedKubernetesConfig config = provider.GetCombinedConfig(module.Object, runtimeInfo.Object); // Assert Assert.True(config.CreateOptions.Volumes.HasValue); config.CreateOptions.Volumes.ForEach(volumes => Assert.Equal(1, volumes.Count)); config.CreateOptions.Volumes.ForEach(volumes => Assert.NotNull(volumes.First())); Assert.True(config.CreateOptions.NodeSelector.HasValue); config.CreateOptions.NodeSelector.ForEach(selector => Assert.Equal(2, selector.Count)); Assert.True(config.CreateOptions.Resources.HasValue); config.CreateOptions.Resources.ForEach(resources => Assert.Equal(3, resources.Limits.Count)); config.CreateOptions.Resources.ForEach(resources => Assert.Equal(3, resources.Requests.Count)); }
public void WorkingDirOptionsWillExist() { var runtimeInfo = new Mock <IRuntimeInfo <DockerRuntimeConfig> >(); runtimeInfo.SetupGet(ri => ri.Config).Returns(new DockerRuntimeConfig("1.24", string.Empty)); var module = new Mock <IModule <DockerConfig> >(); module.SetupGet(m => m.Config).Returns(new DockerConfig("nginx:latest", WorkingDirCreateOptions, Option.None <NotaryContentTrust>())); module.SetupGet(m => m.Name).Returns("mod1"); CombinedKubernetesConfigProvider provider = new CombinedKubernetesConfigProvider(new[] { new AuthConfig() }, new Uri("unix:///var/run/iotedgedworkload.sock"), new Uri("unix:///var/run/iotedgedmgmt.sock"), true); // Act CombinedKubernetesConfig config = provider.GetCombinedConfig(module.Object, runtimeInfo.Object); // Assert Assert.True(config.CreateOptions.WorkingDir.HasValue); config.CreateOptions.WorkingDir.ForEach(wd => Assert.Equal("a-directory", wd)); }
public void EntrypointOptionsWillExist() { var runtimeInfo = new Mock <IRuntimeInfo <DockerRuntimeConfig> >(); runtimeInfo.SetupGet(ri => ri.Config).Returns(new DockerRuntimeConfig("1.24", string.Empty)); var module = new Mock <IModule <DockerConfig> >(); module.SetupGet(m => m.Config).Returns(new DockerConfig("nginx:latest", EntryPointCreateOptions, Option.None <string>())); module.SetupGet(m => m.Name).Returns("mod1"); CombinedKubernetesConfigProvider provider = new CombinedKubernetesConfigProvider(new[] { new AuthConfig() }, new Uri("unix:///var/run/iotedgedworkload.sock"), new Uri("unix:///var/run/iotedgedmgmt.sock"), true); // Act CombinedKubernetesConfig config = provider.GetCombinedConfig(module.Object, runtimeInfo.Object); // Assert Assert.True(config.CreateOptions.Entrypoint.HasValue); config.CreateOptions.Entrypoint.ForEach(ep => Assert.Equal("a-command", ep[0])); }
public void TestNoVolMountForNonUds() { // Arrange var runtimeInfo = new Mock <IRuntimeInfo <DockerRuntimeConfig> >(); runtimeInfo.SetupGet(ri => ri.Config).Returns(new DockerRuntimeConfig("1.24", string.Empty)); var module = new Mock <IModule <DockerConfig> >(); module.SetupGet(m => m.Config).Returns(new DockerConfig("nginx:latest")); module.SetupGet(m => m.Name).Returns(CoreConstants.EdgeAgentModuleName); CombinedKubernetesConfigProvider provider = new CombinedKubernetesConfigProvider(new[] { new AuthConfig() }, new Uri("http://localhost:2375/"), new Uri("http://localhost:2376/"), false); // Act CombinedKubernetesConfig config = provider.GetCombinedConfig(module.Object, runtimeInfo.Object); // Assert Assert.NotNull(config.CreateOptions); Assert.False(config.CreateOptions.HostConfig.HasValue); }
public void NoExecArgumentMeansNoExecArguments() { var runtimeInfo = new Mock <IRuntimeInfo <DockerRuntimeConfig> >(); runtimeInfo.SetupGet(ri => ri.Config).Returns(new DockerRuntimeConfig("1.24", string.Empty)); var module = new Mock <IModule <DockerConfig> >(); module.SetupGet(m => m.Config).Returns(new DockerConfig("nginx:latest", string.Empty, Option.None <NotaryContentTrust>())); module.SetupGet(m => m.Name).Returns("mod1"); CombinedKubernetesConfigProvider provider = new CombinedKubernetesConfigProvider(new[] { new AuthConfig() }, new Uri("unix:///var/run/iotedgedworkload.sock"), new Uri("unix:///var/run/iotedgedmgmt.sock"), true); // Act CombinedKubernetesConfig config = provider.GetCombinedConfig(module.Object, runtimeInfo.Object); // Assert Assert.False(config.CreateOptions.Cmd.HasValue); Assert.False(config.CreateOptions.Entrypoint.HasValue); Assert.False(config.CreateOptions.WorkingDir.HasValue); }
public void IgnoresKubernetesCreateOptionsWhenExperimentalDisabled() { // Arrange var runtimeInfo = new Mock <IRuntimeInfo <DockerRuntimeConfig> >(); runtimeInfo.SetupGet(ri => ri.Config).Returns(new DockerRuntimeConfig("1.24", string.Empty)); var module = new Mock <IModule <DockerConfig> >(); string createOptions = "{ \"k8s-experimental\": { nodeSelector: { disktype: \"ssd\" } } }"; module.SetupGet(m => m.Config).Returns(new DockerConfig("nginx:latest", createOptions)); module.SetupGet(m => m.Name).Returns("mod1"); CombinedKubernetesConfigProvider provider = new CombinedKubernetesConfigProvider(new[] { new AuthConfig() }, new Uri("unix:///var/run/iotedgedworkload.sock"), new Uri("unix:///var/run/iotedgedmgmt.sock"), false); // Act CombinedKubernetesConfig config = provider.GetCombinedConfig(module.Object, runtimeInfo.Object); // Assert Assert.False(config.CreateOptions.NodeSelector.HasValue); }
public void IgnoresKubernetesCreateOptionsWhenExperimentalDisabled() { // Arrange var runtimeInfo = new Mock <IRuntimeInfo <DockerRuntimeConfig> >(); runtimeInfo.SetupGet(ri => ri.Config).Returns(new DockerRuntimeConfig("1.24", string.Empty)); var module = new Mock <IModule <DockerConfig> >(); module.SetupGet(m => m.Config).Returns(new DockerConfig("nginx:latest", ExperimentalCreateOptions, Option.None <NotaryContentTrust>())); module.SetupGet(m => m.Name).Returns("mod1"); CombinedKubernetesConfigProvider provider = new CombinedKubernetesConfigProvider(new[] { new AuthConfig() }, new Uri("unix:///var/run/iotedgedworkload.sock"), new Uri("unix:///var/run/iotedgedmgmt.sock"), false); // Act CombinedKubernetesConfig config = provider.GetCombinedConfig(module.Object, runtimeInfo.Object); // Assert Assert.False(config.CreateOptions.Volumes.HasValue); Assert.False(config.CreateOptions.NodeSelector.HasValue); Assert.False(config.CreateOptions.Resources.HasValue); }
public void TestVolMount() { // Arrange var runtimeInfo = new Mock <IRuntimeInfo <DockerRuntimeConfig> >(); runtimeInfo.SetupGet(ri => ri.Config).Returns(new DockerRuntimeConfig("1.24", string.Empty)); var module = new Mock <IModule <DockerConfig> >(); module.SetupGet(m => m.Config).Returns(new DockerConfig("nginx:latest")); module.SetupGet(m => m.Name).Returns(CoreConstants.EdgeAgentModuleName); (Uri workloadUri, Uri managementUri) = RuntimeInformation.IsOSPlatform(OSPlatform.Windows) ? (new Uri("unix:///C:/path/to/workload/sock"), new Uri("unix:///C:/path/to/mgmt/sock")) : (new Uri("unix:///path/to/workload.sock"), new Uri("unix:///path/to/mgmt.sock")); CombinedKubernetesConfigProvider provider = new CombinedKubernetesConfigProvider(new[] { new AuthConfig() }, workloadUri, managementUri, false); // Act CombinedKubernetesConfig config = provider.GetCombinedConfig(module.Object, runtimeInfo.Object); // Assert Assert.NotNull(config.CreateOptions); Assert.True(config.CreateOptions.HostConfig.HasValue); config.CreateOptions.HostConfig.ForEach(hostConfig => Assert.NotNull(hostConfig.Binds)); config.CreateOptions.HostConfig.ForEach(hostConfig => Assert.Equal(2, hostConfig.Binds.Count)); if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) { config.CreateOptions.HostConfig.ForEach(hostConfig => Assert.Equal(@"C:\path\to\workload:C:\path\to\workload", hostConfig.Binds[0])); config.CreateOptions.HostConfig.ForEach(hostConfig => Assert.Equal(@"C:\path\to\mgmt:C:\path\to\mgmt", hostConfig.Binds[1])); } else { config.CreateOptions.HostConfig.ForEach(hostConfig => Assert.Equal("/path/to/workload.sock:/path/to/workload.sock", hostConfig.Binds[0])); config.CreateOptions.HostConfig.ForEach(hostConfig => Assert.Equal("/path/to/mgmt.sock:/path/to/mgmt.sock", hostConfig.Binds[1])); } }
public void CmdEntryOptionsWillExist() { var runtimeInfo = new Mock <IRuntimeInfo <DockerRuntimeConfig> >(); runtimeInfo.SetupGet(ri => ri.Config).Returns(new DockerRuntimeConfig("1.24", string.Empty)); var module = new Mock <IModule <DockerConfig> >(); module.SetupGet(m => m.Config).Returns(new DockerConfig("nginx:latest", CmdCreateOptions)); module.SetupGet(m => m.Name).Returns("mod1"); CombinedKubernetesConfigProvider provider = new CombinedKubernetesConfigProvider(new[] { new AuthConfig() }, new Uri("unix:///var/run/iotedgedworkload.sock"), new Uri("unix:///var/run/iotedgedmgmt.sock"), true); // Act CombinedKubernetesConfig config = provider.GetCombinedConfig(module.Object, runtimeInfo.Object); // Assert Assert.True(config.CreateOptions.Cmd.HasValue); config.CreateOptions.Cmd.ForEach(cmd => { Assert.Equal("argument1", cmd[0]); Assert.Equal("argument2", cmd[1]); }); }