Compare commits

...

1 Commits

Author SHA1 Message Date
JoannaaKL
9cf42ea25a Do not fail service containers without the healthcheck 2022-10-05 09:33:21 +00:00
2 changed files with 25 additions and 7 deletions

View File

@@ -110,7 +110,7 @@ namespace GitHub.Runner.Worker
{ {
var healthcheck = await ContainerHealthcheck(executionContext, container); var healthcheck = await ContainerHealthcheck(executionContext, container);
if (!string.Equals(healthcheck, "healthy", StringComparison.OrdinalIgnoreCase)) if (!(string.Equals(healthcheck, "healthy", StringComparison.OrdinalIgnoreCase) || string.IsNullOrEmpty(healthcheck)))
{ {
unhealthyContainers.Add(container); unhealthyContainers.Add(container);
} }
@@ -330,13 +330,13 @@ namespace GitHub.Runner.Worker
{ {
if (!container.IsJobContainer && !container.FailedInitialization) if (!container.IsJobContainer && !container.FailedInitialization)
{ {
executionContext.Output($"Print service container logs: {container.ContainerDisplayName}"); executionContext.Output($"Print service container logs: {container.ContainerDisplayName}");
int logsExitCode = await _dockerManager.DockerLogs(executionContext, container.ContainerId); int logsExitCode = await _dockerManager.DockerLogs(executionContext, container.ContainerId);
if (logsExitCode != 0) if (logsExitCode != 0)
{ {
executionContext.Warning($"Docker logs fail with exit code {logsExitCode}"); executionContext.Warning($"Docker logs fail with exit code {logsExitCode}");
} }
} }
executionContext.Output($"Stop and remove container: {container.ContainerDisplayName}"); executionContext.Output($"Stop and remove container: {container.ContainerDisplayName}");

View File

@@ -23,6 +23,7 @@ namespace GitHub.Runner.Common.Tests.Worker
private Mock<IJobServerQueue> serverQueue; private Mock<IJobServerQueue> serverQueue;
private Mock<IPagingLogger> pagingLogger; private Mock<IPagingLogger> pagingLogger;
private List<string> healthyDockerStatus = new List<string> { "healthy" }; private List<string> healthyDockerStatus = new List<string> { "healthy" };
private List<string> emptyDockerStatus = new List<string> { string.Empty };
private List<string> unhealthyDockerStatus = new List<string> { "unhealthy" }; private List<string> unhealthyDockerStatus = new List<string> { "unhealthy" };
private List<string> dockerLogs = new List<string> { "log1", "log2", "log3" }; private List<string> dockerLogs = new List<string> { "log1", "log2", "log3" };
@@ -81,6 +82,23 @@ namespace GitHub.Runner.Common.Tests.Worker
} }
[Fact]
[Trait("Level", "L0")]
[Trait("Category", "Worker")]
public async void RunServiceContainersHealthcheck_healthyServiceContainerWithoutHealthcheck_AssertSucceededTask()
{
//Arrange
Setup();
_dockerManager.Setup(x => x.DockerInspect(_ec.Object, It.IsAny<string>(), It.IsAny<string>())).Returns(Task.FromResult(emptyDockerStatus));
//Act
await containerOperationProvider.RunContainersHealthcheck(_ec.Object, containers);
//Assert
Assert.Equal(TaskResult.Succeeded, _ec.Object.Result ?? TaskResult.Succeeded);
}
private void Setup([CallerMemberName] string testName = "") private void Setup([CallerMemberName] string testName = "")
{ {
containers.Add(new ContainerInfo() { ContainerImage = "ubuntu:16.04" }); containers.Add(new ContainerInfo() { ContainerImage = "ubuntu:16.04" });