Updated runtime store tests and friends

This commit is contained in:
Kiran Challa 2017-06-29 10:13:27 -07:00
Родитель fc56105d83
Коммит f8ccf05715
6 изменённых файлов: 67 добавлений и 160 удалений

Просмотреть файл

@ -1,22 +0,0 @@
namespace E2ETests
{
public class DefaultLocationSetupFixture : BaseStoreSetupFixture
{
public DefaultLocationSetupFixture() :
base(
createInDefaultLocation: true,
loggerName: nameof(DefaultLocationSetupFixture))
{
}
}
public class CustomLocationSetupFixture : BaseStoreSetupFixture
{
public CustomLocationSetupFixture() :
base(
createInDefaultLocation: false,
loggerName: nameof(CustomLocationSetupFixture))
{
}
}
}

Просмотреть файл

@ -1,92 +0,0 @@
using System.Threading.Tasks;
using Microsoft.AspNetCore.Server.IntegrationTesting;
using Microsoft.AspNetCore.Testing.xunit;
using Xunit;
using Xunit.Abstractions;
namespace E2ETests
{
public class SmokeTestsUsingDefaultLocation : IClassFixture<DefaultLocationSetupFixture>
{
private readonly DefaultLocationSetupFixture _testFixture;
private readonly ITestOutputHelper _output;
public SmokeTestsUsingDefaultLocation(
DefaultLocationSetupFixture testFixure,
ITestOutputHelper output)
{
_testFixture = testFixure;
_output = output;
}
[EnvironmentVariableSkipCondition(Store.MusicStoreAspNetCoreStoreFeed, null, SkipOnMatch = false)]
[ConditionalFact]
[Trait("smoketests", "usestore")]
[Trait("smoketests", "usestore-defaultlocation")]
public async Task DefaultLocation_Kestrel()
{
var tests = new SmokeTestsUsingStoreHelper(_output);
await tests.SmokeTestSuite(
ServerType.Kestrel,
_testFixture.CreateStoreInDefaultLocation,
_testFixture.StoreDirectory);
}
[OSSkipCondition(OperatingSystems.Linux)]
[OSSkipCondition(OperatingSystems.MacOSX)]
[EnvironmentVariableSkipCondition(Store.MusicStoreAspNetCoreStoreFeed, null, SkipOnMatch = false)]
[ConditionalFact]
[Trait("smoketests", "usestore")]
[Trait("smoketests", "usestore-defaultlocation")]
public async Task DefaultLocation_WebListener()
{
var tests = new SmokeTestsUsingStoreHelper(_output);
await tests.SmokeTestSuite(
ServerType.WebListener,
_testFixture.CreateStoreInDefaultLocation,
_testFixture.StoreDirectory);
}
}
public class SmokeTestsUsingInCustomLocation : IClassFixture<CustomLocationSetupFixture>
{
private readonly CustomLocationSetupFixture _testFixture;
private readonly ITestOutputHelper _output;
public SmokeTestsUsingInCustomLocation(
CustomLocationSetupFixture testFixure,
ITestOutputHelper output)
{
_testFixture = testFixure;
_output = output;
}
[EnvironmentVariableSkipCondition(Store.MusicStoreAspNetCoreStoreFeed, null, SkipOnMatch = false)]
[ConditionalFact]
[Trait("smoketests", "usestore")]
[Trait("smoketests", "usestore-customlocation")]
public async Task CustomLocation_Kestrel()
{
var tests = new SmokeTestsUsingStoreHelper(_output);
await tests.SmokeTestSuite(
ServerType.Kestrel,
_testFixture.CreateStoreInDefaultLocation,
_testFixture.StoreDirectory);
}
[OSSkipCondition(OperatingSystems.Linux)]
[OSSkipCondition(OperatingSystems.MacOSX)]
[EnvironmentVariableSkipCondition(Store.MusicStoreAspNetCoreStoreFeed, null, SkipOnMatch = false)]
[ConditionalFact]
[Trait("smoketests", "usestore")]
[Trait("smoketests", "usestore-customlocation")]
public async Task CustomLocation_WebListener()
{
var tests = new SmokeTestsUsingStoreHelper(_output);
await tests.SmokeTestSuite(
ServerType.WebListener,
_testFixture.CreateStoreInDefaultLocation,
_testFixture.StoreDirectory);
}
}
}

Просмотреть файл

@ -7,7 +7,6 @@ using System.Reflection;
using System.Runtime.InteropServices;
using System.Threading;
using Microsoft.AspNetCore.Server.IntegrationTesting;
using Microsoft.Extensions.CommandLineUtils;
using Microsoft.Extensions.Logging;
using NuGet.Configuration;
using NuGet.Packaging.Core;
@ -29,9 +28,9 @@ namespace E2ETests
_logger = loggerFactory.CreateLogger<Store>();
}
public string CreateStore(bool createInDefaultLocation)
public string CreateStore()
{
var storeParentDir = GetStoreParentDirectory(createInDefaultLocation);
var storeParentDir = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString());
InstallStore(storeParentDir);
@ -226,22 +225,5 @@ namespace E2ETests
}
}
}
private string GetStoreParentDirectory(bool createInDefaultLocation)
{
string storeParentDir;
if (createInDefaultLocation)
{
// On Windows: ..\.dotnet\x64\dotnet.exe
// On Linux : ../.dotnet/dotnet
var dotnetDir = new FileInfo(DotNetMuxer.MuxerPath).Directory.FullName;
storeParentDir = dotnetDir;
}
else
{
storeParentDir = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString());
}
return storeParentDir;
}
}
}

Просмотреть файл

@ -4,36 +4,31 @@ using Microsoft.Extensions.Logging.Testing;
namespace E2ETests
{
public class BaseStoreSetupFixture : IDisposable
public class StoreSetupFixture : IDisposable
{
private readonly IDisposable _logToken;
private readonly ILogger<BaseStoreSetupFixture> _logger;
private readonly ILogger<StoreSetupFixture> _logger;
private readonly Store _store;
public BaseStoreSetupFixture(bool createInDefaultLocation, string loggerName)
public StoreSetupFixture()
{
if (!Store.IsEnabled())
{
return;
}
var testLog = AssemblyTestLog.ForAssembly(typeof(BaseStoreSetupFixture).Assembly);
var loggerName = nameof(StoreSetupFixture);
var testLog = AssemblyTestLog.ForAssembly(typeof(StoreSetupFixture).Assembly);
ILoggerFactory loggerFactory;
_logToken = testLog.StartTestLog(null, loggerName, out loggerFactory, testName: loggerName);
_logger = loggerFactory.CreateLogger<BaseStoreSetupFixture>();
CreateStoreInDefaultLocation = createInDefaultLocation;
_logger.LogInformation(
"Setting up store in the location: {location}",
createInDefaultLocation ? "default" : "custom");
_logger = loggerFactory.CreateLogger<StoreSetupFixture>();
_store = new Store(loggerFactory);
StoreDirectory = _store.CreateStore(createInDefaultLocation);
}
StoreDirectory = _store.CreateStore();
public bool CreateStoreInDefaultLocation { get; }
_logger.LogInformation($"Store was setup at {StoreDirectory}");
}
public string StoreDirectory { get; }

Просмотреть файл

@ -1,4 +1,5 @@
using System.Collections.Generic;
using System;
using System.Collections.Generic;
using System.IO;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Server.IntegrationTesting;
@ -6,21 +7,21 @@ using Microsoft.Extensions.Logging.Testing;
using Xunit;
using Xunit.Abstractions;
namespace E2ETests
namespace E2ETests.SmokeTestsUsingStore
{
public class SmokeTestsUsingStoreHelper : LoggedTest
public class TestHelper : LoggedTest
{
public SmokeTestsUsingStoreHelper(ITestOutputHelper output) : base(output)
public TestHelper(ITestOutputHelper output) : base(output)
{
}
public async Task SmokeTestSuite(ServerType serverType, bool isStoreInDefaultLocation, string storeDirectory)
public async Task SmokeTestSuite(ServerType serverType, string storeDirectory)
{
var targetFramework = "netcoreapp2.0";
var testName = $"SmokeTestsUsingStore_{serverType}";
using (StartLog(out var loggerFactory, testName))
{
var logger = loggerFactory.CreateLogger(nameof(SmokeTestsUsingStoreHelper));
var logger = loggerFactory.CreateLogger(nameof(TestHelper));
var musicStoreDbName = DbUtils.GetUniqueName();
var deploymentParameters = new DeploymentParameters(
@ -45,11 +46,8 @@ namespace E2ETests
MusicStoreConfig.ConnectionStringKey,
DbUtils.CreateConnectionString(musicStoreDbName)));
if (!isStoreInDefaultLocation)
{
deploymentParameters.EnvironmentVariables.Add(
new KeyValuePair<string, string>("DOTNET_SHARED_STORE", storeDirectory));
}
deploymentParameters.EnvironmentVariables.Add(
new KeyValuePair<string, string>("DOTNET_SHARED_STORE", storeDirectory));
using (var deployer = ApplicationDeployerFactory.Create(deploymentParameters, loggerFactory))
{

Просмотреть файл

@ -0,0 +1,46 @@
using System.Threading.Tasks;
using Microsoft.AspNetCore.Server.IntegrationTesting;
using Microsoft.AspNetCore.Testing.xunit;
using Xunit;
using Xunit.Abstractions;
namespace E2ETests.SmokeTestsUsingStore
{
public class SmokeTests : IClassFixture<StoreSetupFixture>
{
private readonly StoreSetupFixture _testFixture;
private readonly ITestOutputHelper _output;
public SmokeTests(
StoreSetupFixture testFixure,
ITestOutputHelper output)
{
_testFixture = testFixure;
_output = output;
}
[EnvironmentVariableSkipCondition(Store.MusicStoreAspNetCoreStoreFeed, null, SkipOnMatch = false)]
[ConditionalFact]
[Trait("smoketests", "usestore1")]
public async Task DefaultLocation_Kestrel()
{
var tests = new TestHelper(_output);
await tests.SmokeTestSuite(
ServerType.Kestrel,
_testFixture.StoreDirectory);
}
[OSSkipCondition(OperatingSystems.Linux)]
[OSSkipCondition(OperatingSystems.MacOSX)]
[EnvironmentVariableSkipCondition(Store.MusicStoreAspNetCoreStoreFeed, null, SkipOnMatch = false)]
[ConditionalFact]
[Trait("smoketests", "usestore")]
public async Task DefaultLocation_WebListener()
{
var tests = new TestHelper(_output);
await tests.SmokeTestSuite(
ServerType.WebListener,
_testFixture.StoreDirectory);
}
}
}