Added Mono version health check
This commit is contained in:
parent
1d4738b18f
commit
01d3decf7e
|
@ -36,7 +36,7 @@ namespace NzbDrone.Common.Test.DiskProviderTests
|
||||||
[Test]
|
[Test]
|
||||||
public void should_be_able_to_check_space_on_ramdrive()
|
public void should_be_able_to_check_space_on_ramdrive()
|
||||||
{
|
{
|
||||||
LinuxOnly();
|
MonoOnly();
|
||||||
Subject.GetAvailableSpace("/run/").Should().NotBe(0);
|
Subject.GetAvailableSpace("/run/").Should().NotBe(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -19,7 +19,7 @@ namespace NzbDrone.Common.Test.EnsureTest
|
||||||
[TestCase(@"/var/user/file with, comma.mkv")]
|
[TestCase(@"/var/user/file with, comma.mkv")]
|
||||||
public void EnsureLinuxPath(string path)
|
public void EnsureLinuxPath(string path)
|
||||||
{
|
{
|
||||||
LinuxOnly();
|
MonoOnly();
|
||||||
Ensure.That(path, () => path).IsValidPath();
|
Ensure.That(path, () => path).IsValidPath();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -50,7 +50,7 @@ namespace NzbDrone.Common.Test
|
||||||
[TestCase(@"//CAPITAL//lower// ", @"/CAPITAL/lower")]
|
[TestCase(@"//CAPITAL//lower// ", @"/CAPITAL/lower")]
|
||||||
public void Clean_Path_Linux(string dirty, string clean)
|
public void Clean_Path_Linux(string dirty, string clean)
|
||||||
{
|
{
|
||||||
LinuxOnly();
|
MonoOnly();
|
||||||
|
|
||||||
var result = dirty.CleanFilePath();
|
var result = dirty.CleanFilePath();
|
||||||
result.Should().Be(clean);
|
result.Should().Be(clean);
|
||||||
|
@ -139,7 +139,7 @@ namespace NzbDrone.Common.Test
|
||||||
[Test]
|
[Test]
|
||||||
public void get_actual_casing_should_return_original_value_in_linux()
|
public void get_actual_casing_should_return_original_value_in_linux()
|
||||||
{
|
{
|
||||||
LinuxOnly();
|
MonoOnly();
|
||||||
var path = Directory.GetCurrentDirectory();
|
var path = Directory.GetCurrentDirectory();
|
||||||
path.GetActualCasing().Should().Be(path);
|
path.GetActualCasing().Should().Be(path);
|
||||||
path.GetActualCasing().Should().Be(path);
|
path.GetActualCasing().Should().Be(path);
|
||||||
|
|
|
@ -0,0 +1,66 @@
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using FluentAssertions;
|
||||||
|
using NUnit.Framework;
|
||||||
|
using NzbDrone.Common.Processes;
|
||||||
|
using NzbDrone.Core.HealthCheck.Checks;
|
||||||
|
using NzbDrone.Core.Test.Framework;
|
||||||
|
|
||||||
|
namespace NzbDrone.Core.Test.HealthCheck.Checks
|
||||||
|
{
|
||||||
|
[TestFixture]
|
||||||
|
public class MonoVersionCheckFixture : CoreTest<DownloadClientCheck>
|
||||||
|
{
|
||||||
|
[SetUp]
|
||||||
|
public void Setup()
|
||||||
|
{
|
||||||
|
MonoOnly();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void GivenOutput(string version)
|
||||||
|
{
|
||||||
|
Mocker.GetMock<IProcessProvider>()
|
||||||
|
.Setup(s => s.StartAndCapture("mono", "--version"))
|
||||||
|
.Returns(new ProcessOutput
|
||||||
|
{
|
||||||
|
Standard = new List<string>
|
||||||
|
{
|
||||||
|
String.Format("Mono JIT compiler version {0} (Debian {0}-8)", version),
|
||||||
|
"Copyright (C) 2002-2011 Novell, Inc, Xamarin, Inc and Contributors. www.mono-project.com"
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void should_return_warning_when_mono_3_0()
|
||||||
|
{
|
||||||
|
GivenOutput("3.0.0.1");
|
||||||
|
|
||||||
|
Subject.Check().ShouldBeWarning();
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void should_return_warning_when_mono_2_10_8()
|
||||||
|
{
|
||||||
|
GivenOutput("2.10.8.1");
|
||||||
|
|
||||||
|
Subject.Check().ShouldBeWarning();
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void should_return_null_when_mono_3_2()
|
||||||
|
{
|
||||||
|
GivenOutput("3.2.0.1");
|
||||||
|
|
||||||
|
Subject.Check().Should().BeNull();
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void should_return_null_when_mono_4_0()
|
||||||
|
{
|
||||||
|
GivenOutput("4.0.0.0");
|
||||||
|
|
||||||
|
Subject.Check().Should().BeNull();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -75,7 +75,7 @@ namespace NzbDrone.Core.Test.MediaFiles.EpisodeImport.Specifications
|
||||||
[Test]
|
[Test]
|
||||||
public void should_return_false_if_unopacking_on_linux()
|
public void should_return_false_if_unopacking_on_linux()
|
||||||
{
|
{
|
||||||
LinuxOnly();
|
MonoOnly();
|
||||||
|
|
||||||
GivenInWorkingFolder();
|
GivenInWorkingFolder();
|
||||||
GivenLastWriteTimeUtc(DateTime.UtcNow.AddDays(-5));
|
GivenLastWriteTimeUtc(DateTime.UtcNow.AddDays(-5));
|
||||||
|
|
|
@ -108,7 +108,7 @@ namespace NzbDrone.Core.Test.MediaFiles
|
||||||
[Test]
|
[Test]
|
||||||
public void filter_should_return_none_existing_files_not_ignoring_case()
|
public void filter_should_return_none_existing_files_not_ignoring_case()
|
||||||
{
|
{
|
||||||
LinuxOnly();
|
MonoOnly();
|
||||||
|
|
||||||
var files = new List<string>()
|
var files = new List<string>()
|
||||||
{
|
{
|
||||||
|
|
|
@ -125,10 +125,11 @@
|
||||||
<Compile Include="Framework\CoreTest.cs" />
|
<Compile Include="Framework\CoreTest.cs" />
|
||||||
<Compile Include="Framework\DbTest.cs" />
|
<Compile Include="Framework\DbTest.cs" />
|
||||||
<Compile Include="Framework\NBuilderExtensions.cs" />
|
<Compile Include="Framework\NBuilderExtensions.cs" />
|
||||||
|
<Compile Include="HealthCheck\Checks\DownloadClientCheckFixture.cs" />
|
||||||
<Compile Include="HealthCheck\Checks\UpdateCheckFixture.cs" />
|
<Compile Include="HealthCheck\Checks\UpdateCheckFixture.cs" />
|
||||||
<Compile Include="HealthCheck\Checks\IndexerCheckFixture.cs" />
|
<Compile Include="HealthCheck\Checks\IndexerCheckFixture.cs" />
|
||||||
<Compile Include="HealthCheck\Checks\DroneFactoryCheckFixture.cs" />
|
<Compile Include="HealthCheck\Checks\DroneFactoryCheckFixture.cs" />
|
||||||
<Compile Include="HealthCheck\Checks\DownloadClientCheckFixture.cs" />
|
<Compile Include="HealthCheck\Checks\MonoVersionCheckFixture.cs" />
|
||||||
<Compile Include="HealthCheck\Checks\HealthCheckFixtureExtentions.cs" />
|
<Compile Include="HealthCheck\Checks\HealthCheckFixtureExtentions.cs" />
|
||||||
<Compile Include="HistoryTests\HistoryServiceFixture.cs" />
|
<Compile Include="HistoryTests\HistoryServiceFixture.cs" />
|
||||||
<Compile Include="Housekeeping\Housekeepers\CleanupOrphanedHistoryItemsFixture.cs" />
|
<Compile Include="Housekeeping\Housekeepers\CleanupOrphanedHistoryItemsFixture.cs" />
|
||||||
|
|
|
@ -0,0 +1,49 @@
|
||||||
|
using System;
|
||||||
|
using System.Text.RegularExpressions;
|
||||||
|
using NLog;
|
||||||
|
using NzbDrone.Common.EnvironmentInfo;
|
||||||
|
using NzbDrone.Common.Processes;
|
||||||
|
|
||||||
|
namespace NzbDrone.Core.HealthCheck.Checks
|
||||||
|
{
|
||||||
|
public class MonoVersionnCheck : IProvideHealthCheck
|
||||||
|
{
|
||||||
|
private readonly IProcessProvider _processProvider;
|
||||||
|
private readonly Logger _logger;
|
||||||
|
private static readonly Regex VersionRegex = new Regex(@"(?<=\W)(?<version>\d+\.\d+\.\d+\.\d+)(?=\W)", RegexOptions.Compiled | RegexOptions.IgnoreCase);
|
||||||
|
|
||||||
|
public MonoVersionnCheck(IProcessProvider processProvider, Logger logger)
|
||||||
|
{
|
||||||
|
_processProvider = processProvider;
|
||||||
|
_logger = logger;
|
||||||
|
}
|
||||||
|
|
||||||
|
public HealthCheck Check()
|
||||||
|
{
|
||||||
|
if (!OsInfo.IsMono)
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
var output = _processProvider.StartAndCapture("mono", "--version");
|
||||||
|
|
||||||
|
foreach (var line in output.Standard)
|
||||||
|
{
|
||||||
|
var versionMatch = VersionRegex.Match(line);
|
||||||
|
|
||||||
|
if (versionMatch.Success)
|
||||||
|
{
|
||||||
|
var version = new Version(versionMatch.Groups["version"].Value);
|
||||||
|
|
||||||
|
if (version >= new Version(3, 2))
|
||||||
|
{
|
||||||
|
_logger.Debug("mono version is 3.2 or better: {0}", version.ToString());
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return new HealthCheck(HealthCheckResultType.Warning, "mono version is less than 3.2, upgrade for improved stability");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -268,6 +268,7 @@
|
||||||
<Compile Include="Exceptions\StatusCodeToExceptions.cs" />
|
<Compile Include="Exceptions\StatusCodeToExceptions.cs" />
|
||||||
<Compile Include="HealthCheck\CheckHealthCommand.cs" />
|
<Compile Include="HealthCheck\CheckHealthCommand.cs" />
|
||||||
<Compile Include="HealthCheck\Checks\DownloadClientCheck.cs" />
|
<Compile Include="HealthCheck\Checks\DownloadClientCheck.cs" />
|
||||||
|
<Compile Include="HealthCheck\Checks\MonoVersionnCheck.cs" />
|
||||||
<Compile Include="HealthCheck\Checks\DroneFactoryCheck.cs" />
|
<Compile Include="HealthCheck\Checks\DroneFactoryCheck.cs" />
|
||||||
<Compile Include="HealthCheck\Checks\IndexerCheck.cs" />
|
<Compile Include="HealthCheck\Checks\IndexerCheck.cs" />
|
||||||
<Compile Include="HealthCheck\Checks\UpdateCheck.cs" />
|
<Compile Include="HealthCheck\Checks\UpdateCheck.cs" />
|
||||||
|
|
|
@ -8,7 +8,7 @@ namespace NzbDrone.Mono.Test.DiskProviderTests
|
||||||
{
|
{
|
||||||
public DiskProviderFixture()
|
public DiskProviderFixture()
|
||||||
{
|
{
|
||||||
LinuxOnly();
|
MonoOnly();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,7 +8,7 @@ namespace NzbDrone.Mono.Test.DiskProviderTests
|
||||||
{
|
{
|
||||||
public FreeSpaceFixture()
|
public FreeSpaceFixture()
|
||||||
{
|
{
|
||||||
LinuxOnly();
|
MonoOnly();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -131,7 +131,7 @@ namespace NzbDrone.Test.Common
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
protected void LinuxOnly()
|
protected void MonoOnly()
|
||||||
{
|
{
|
||||||
if (!OsInfo.IsMono)
|
if (!OsInfo.IsMono)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue