mirror of
https://github.com/Radarr/Radarr.git
synced 2024-11-04 10:02:40 +01:00
Run integration tests in parallel
This commit is contained in:
parent
05e8de2b0a
commit
3c5e56919f
@ -1,24 +1,33 @@
|
|||||||
|
using System.Threading;
|
||||||
using NLog;
|
using NLog;
|
||||||
|
using NUnit.Framework;
|
||||||
using NzbDrone.Core.Indexers.Newznab;
|
using NzbDrone.Core.Indexers.Newznab;
|
||||||
using NzbDrone.Test.Common;
|
using NzbDrone.Test.Common;
|
||||||
using Radarr.Http.ClientSchema;
|
using Radarr.Http.ClientSchema;
|
||||||
|
|
||||||
namespace NzbDrone.Integration.Test
|
namespace NzbDrone.Integration.Test
|
||||||
{
|
{
|
||||||
|
[Parallelizable(ParallelScope.Fixtures)]
|
||||||
public abstract class IntegrationTest : IntegrationTestBase
|
public abstract class IntegrationTest : IntegrationTestBase
|
||||||
{
|
{
|
||||||
|
protected static int StaticPort = 7878;
|
||||||
|
|
||||||
protected NzbDroneRunner _runner;
|
protected NzbDroneRunner _runner;
|
||||||
|
|
||||||
public override string MovieRootFolder => GetTempDirectory("MovieRootFolder");
|
public override string MovieRootFolder => GetTempDirectory("MovieRootFolder");
|
||||||
|
|
||||||
protected override string RootUrl => "http://localhost:7878/";
|
protected int Port { get; private set; }
|
||||||
|
|
||||||
|
protected override string RootUrl => $"http://localhost:{Port}/";
|
||||||
|
|
||||||
protected override string ApiKey => _runner.ApiKey;
|
protected override string ApiKey => _runner.ApiKey;
|
||||||
|
|
||||||
protected override void StartTestTarget()
|
protected override void StartTestTarget()
|
||||||
{
|
{
|
||||||
_runner = new NzbDroneRunner(LogManager.GetCurrentClassLogger());
|
Port = Interlocked.Increment(ref StaticPort);
|
||||||
_runner.KillAll();
|
|
||||||
|
_runner = new NzbDroneRunner(LogManager.GetCurrentClassLogger(), Port);
|
||||||
|
_runner.Kill();
|
||||||
|
|
||||||
_runner.Start();
|
_runner.Start();
|
||||||
}
|
}
|
||||||
@ -45,7 +54,7 @@ protected override void InitializeTestTarget()
|
|||||||
|
|
||||||
protected override void StopTestTarget()
|
protected override void StopTestTarget()
|
||||||
{
|
{
|
||||||
_runner.KillAll();
|
_runner.Kill();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -20,11 +20,14 @@ public class NzbDroneRunner
|
|||||||
|
|
||||||
public string AppData { get; private set; }
|
public string AppData { get; private set; }
|
||||||
public string ApiKey { get; private set; }
|
public string ApiKey { get; private set; }
|
||||||
|
public int Port { get; private set; }
|
||||||
|
|
||||||
public NzbDroneRunner(Logger logger, int port = 7878)
|
public NzbDroneRunner(Logger logger, int port = 7878)
|
||||||
{
|
{
|
||||||
_processProvider = new ProcessProvider(logger);
|
_processProvider = new ProcessProvider(logger);
|
||||||
_restClient = new RestClient("http://localhost:7878/api/v3");
|
_restClient = new RestClient($"http://localhost:{port}/api/v3");
|
||||||
|
|
||||||
|
Port = port;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Start()
|
public void Start()
|
||||||
@ -75,7 +78,7 @@ public void Start()
|
|||||||
|
|
||||||
if (statusCall.ResponseStatus == ResponseStatus.Completed)
|
if (statusCall.ResponseStatus == ResponseStatus.Completed)
|
||||||
{
|
{
|
||||||
TestContext.Progress.WriteLine("Radarr is started. Running Tests");
|
TestContext.Progress.WriteLine($"Radarr {Port} is started. Running Tests");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -85,6 +88,23 @@ public void Start()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void Kill()
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if (_nzbDroneProcess != null)
|
||||||
|
{
|
||||||
|
_processProvider.Kill(_nzbDroneProcess.Id);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (InvalidOperationException)
|
||||||
|
{
|
||||||
|
// May happen if the process closes while being closed
|
||||||
|
}
|
||||||
|
|
||||||
|
TestBase.DeleteTempFolder(AppData);
|
||||||
|
}
|
||||||
|
|
||||||
public void KillAll()
|
public void KillAll()
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
@ -107,13 +127,14 @@ public void KillAll()
|
|||||||
|
|
||||||
private void Start(string outputRadarrConsoleExe)
|
private void Start(string outputRadarrConsoleExe)
|
||||||
{
|
{
|
||||||
|
TestContext.Progress.WriteLine("Starting instance from {0} on port {1}", outputRadarrConsoleExe, Port);
|
||||||
var args = "-nobrowser -data=\"" + AppData + "\"";
|
var args = "-nobrowser -data=\"" + AppData + "\"";
|
||||||
_nzbDroneProcess = _processProvider.Start(outputRadarrConsoleExe, args, null, OnOutputDataReceived, OnOutputDataReceived);
|
_nzbDroneProcess = _processProvider.Start(outputRadarrConsoleExe, args, null, OnOutputDataReceived, OnOutputDataReceived);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OnOutputDataReceived(string data)
|
private void OnOutputDataReceived(string data)
|
||||||
{
|
{
|
||||||
TestContext.Progress.WriteLine(data);
|
TestContext.Progress.WriteLine($" [{Port}] > " + data);
|
||||||
|
|
||||||
if (data.Contains("Press enter to exit"))
|
if (data.Contains("Press enter to exit"))
|
||||||
{
|
{
|
||||||
@ -132,7 +153,8 @@ private void GenerateConfigFile()
|
|||||||
new XDeclaration("1.0", "utf-8", "yes"),
|
new XDeclaration("1.0", "utf-8", "yes"),
|
||||||
new XElement(ConfigFileProvider.CONFIG_ELEMENT_NAME,
|
new XElement(ConfigFileProvider.CONFIG_ELEMENT_NAME,
|
||||||
new XElement(nameof(ConfigFileProvider.ApiKey), apiKey),
|
new XElement(nameof(ConfigFileProvider.ApiKey), apiKey),
|
||||||
new XElement(nameof(ConfigFileProvider.AnalyticsEnabled), false)));
|
new XElement(nameof(ConfigFileProvider.AnalyticsEnabled), false),
|
||||||
|
new XElement(nameof(ConfigFileProvider.Port), Port)));
|
||||||
|
|
||||||
var data = xDoc.ToString();
|
var data = xDoc.ToString();
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user