mirror of
https://github.com/actions/runner.git
synced 2025-12-13 00:36:29 +00:00
Adding another test to ContainerOperationProvider
This commit is contained in:
@@ -23,24 +23,30 @@ namespace GitHub.Runner.Common.Tests.Worker
|
|||||||
private Mock<IExecutionContext> _ec;
|
private Mock<IExecutionContext> _ec;
|
||||||
private Mock<IDockerCommandManager> _dockerManager;
|
private Mock<IDockerCommandManager> _dockerManager;
|
||||||
private Mock<IContainerHookManager> _containerHookManager;
|
private Mock<IContainerHookManager> _containerHookManager;
|
||||||
|
|
||||||
private ContainerOperationProvider containerOperationProvider;
|
private ContainerOperationProvider containerOperationProvider;
|
||||||
|
|
||||||
|
private Mock<IJobServerQueue> serverQueue;
|
||||||
|
|
||||||
|
private Mock<IPagingLogger> pagingLogger;
|
||||||
|
|
||||||
private List<string> healthyDockerStatus = new List<string> { "healthy" };
|
private List<string> healthyDockerStatus = new List<string> { "healthy" };
|
||||||
private List<string> dockerLogs = new List<string> { "log1", "log2", "log3" };
|
private List<string> dockerLogs = new List<string> { "log1", "log2", "log3" };
|
||||||
|
|
||||||
|
private ContainerInfo containerInfo;
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
[Trait("Level", "L0")]
|
[Trait("Level", "L0")]
|
||||||
[Trait("Category", "Worker")]
|
[Trait("Category", "Worker")]
|
||||||
public async void Healthchecktest_healthyDocker()
|
public async void Healthchecktest_healthyDocker()
|
||||||
{
|
{
|
||||||
|
//Arrange
|
||||||
Setup();
|
Setup();
|
||||||
|
|
||||||
var containerInfo = new ContainerInfo() { ContainerImage = "ubuntu:16.04" };
|
|
||||||
|
|
||||||
_dockerManager.Setup(x => x.DockerInspect(_ec.Object, It.IsAny<string>(), It.IsAny<string>())).Returns(Task.FromResult(healthyDockerStatus));
|
_dockerManager.Setup(x => x.DockerInspect(_ec.Object, It.IsAny<string>(), It.IsAny<string>())).Returns(Task.FromResult(healthyDockerStatus));
|
||||||
|
|
||||||
|
//Act
|
||||||
var result = await containerOperationProvider.Healthcheck(_ec.Object, containerInfo);
|
var result = await containerOperationProvider.Healthcheck(_ec.Object, containerInfo);
|
||||||
|
|
||||||
|
//Assert
|
||||||
_dockerManager.Verify(dm => dm.DockerInspectLogs(It.IsAny<IExecutionContext>(), It.IsAny<string>()), Times.Never());
|
_dockerManager.Verify(dm => dm.DockerInspectLogs(It.IsAny<IExecutionContext>(), It.IsAny<string>()), Times.Never());
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -50,12 +56,12 @@ namespace GitHub.Runner.Common.Tests.Worker
|
|||||||
[Trait("Category", "Worker")]
|
[Trait("Category", "Worker")]
|
||||||
public async void Healthchecktest_dockerError()
|
public async void Healthchecktest_dockerError()
|
||||||
{
|
{
|
||||||
|
//Arrange
|
||||||
Setup();
|
Setup();
|
||||||
|
|
||||||
var containerInfo = new ContainerInfo() { ContainerImage = "ubuntu:16.04", ContainerId = "1234" };
|
|
||||||
|
|
||||||
_dockerManager.Setup(x => x.DockerInspectLogs(_ec.Object, containerInfo.ContainerId)).Returns(Task.FromResult(dockerLogs));
|
_dockerManager.Setup(x => x.DockerInspectLogs(_ec.Object, containerInfo.ContainerId)).Returns(Task.FromResult(dockerLogs));
|
||||||
|
|
||||||
|
//Act
|
||||||
|
//Asert
|
||||||
await Assert.ThrowsAsync<InvalidOperationException>(() => containerOperationProvider.ContainerHealthcheckLogs(_ec.Object, containerInfo, "error"));
|
await Assert.ThrowsAsync<InvalidOperationException>(() => containerOperationProvider.ContainerHealthcheckLogs(_ec.Object, containerInfo, "error"));
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -65,33 +71,42 @@ namespace GitHub.Runner.Common.Tests.Worker
|
|||||||
[Trait("Category", "Worker")]
|
[Trait("Category", "Worker")]
|
||||||
public async void Healthchecktest_dockerError_inspectLogs()
|
public async void Healthchecktest_dockerError_inspectLogs()
|
||||||
{
|
{
|
||||||
|
//Arrange
|
||||||
Setup();
|
Setup();
|
||||||
|
|
||||||
var containerInfo = new ContainerInfo() { ContainerImage = "ubuntu:16.04", ContainerId = "1234" };
|
|
||||||
|
|
||||||
_dockerManager.Setup(x => x.DockerInspectLogs(_ec.Object, containerInfo.ContainerId)).Returns(Task.FromResult(dockerLogs));
|
_dockerManager.Setup(x => x.DockerInspectLogs(_ec.Object, containerInfo.ContainerId)).Returns(Task.FromResult(dockerLogs));
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
//Act
|
||||||
await containerOperationProvider.ContainerHealthcheckLogs(_ec.Object, containerInfo, "error");
|
await containerOperationProvider.ContainerHealthcheckLogs(_ec.Object, containerInfo, "error");
|
||||||
|
|
||||||
}
|
}
|
||||||
catch (InvalidOperationException)
|
catch (InvalidOperationException)
|
||||||
{
|
{
|
||||||
//TODO validate the log message written to the _ec
|
|
||||||
|
//Assert
|
||||||
|
_ec.Verify(pL => pL.Write(It.IsAny<string>(), It.IsAny<string>()), Times.Exactly(3));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void Setup([CallerMemberName] string testName = "")
|
private void Setup([CallerMemberName] string testName = "")
|
||||||
{
|
{
|
||||||
|
containerInfo = new ContainerInfo() { ContainerImage = "ubuntu:16.04" };
|
||||||
_hc = new TestHostContext(this, "name");
|
_hc = new TestHostContext(this, "name");
|
||||||
_ec = new Mock<IExecutionContext>();
|
_ec = new Mock<IExecutionContext>();
|
||||||
|
serverQueue = new Mock<IJobServerQueue>();
|
||||||
|
pagingLogger = new Mock<IPagingLogger>();
|
||||||
|
|
||||||
_dockerManager = new Mock<IDockerCommandManager>();
|
_dockerManager = new Mock<IDockerCommandManager>();
|
||||||
_containerHookManager = new Mock<IContainerHookManager>();
|
_containerHookManager = new Mock<IContainerHookManager>();
|
||||||
containerOperationProvider = new ContainerOperationProvider();
|
containerOperationProvider = new ContainerOperationProvider();
|
||||||
|
|
||||||
|
_hc.SetSingleton<IDockerCommandManager>(_dockerManager.Object);
|
||||||
|
_hc.SetSingleton<IJobServerQueue>(serverQueue.Object);
|
||||||
|
_hc.SetSingleton<IPagingLogger>(pagingLogger.Object);
|
||||||
|
|
||||||
_hc.SetSingleton<IDockerCommandManager>(_dockerManager.Object);
|
_hc.SetSingleton<IDockerCommandManager>(_dockerManager.Object);
|
||||||
_hc.SetSingleton<IContainerHookManager>(_containerHookManager.Object);
|
_hc.SetSingleton<IContainerHookManager>(_containerHookManager.Object);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user