Removes core-interface associate methods.
This commit is contained in:
parent
dd6b99c670
commit
7e7414d491
|
@ -37,22 +37,5 @@ namespace CodexPlugin
|
||||||
{
|
{
|
||||||
return codexStarter.WrapCodexContainers(containers);
|
return codexStarter.WrapCodexContainers(containers);
|
||||||
}
|
}
|
||||||
|
|
||||||
public IOnlineCodexNode SetupCodexNode(Action<ICodexSetup> setup)
|
|
||||||
{
|
|
||||||
return SetupCodexNodes(1, setup)[0];
|
|
||||||
}
|
|
||||||
|
|
||||||
public ICodexNodeGroup SetupCodexNodes(int number, Action<ICodexSetup> setup)
|
|
||||||
{
|
|
||||||
var rc = StartCodexNodes(number, setup);
|
|
||||||
return WrapCodexContainers(rc);
|
|
||||||
}
|
|
||||||
|
|
||||||
public ICodexNodeGroup SetupCodexNodes(int number)
|
|
||||||
{
|
|
||||||
var rc = StartCodexNodes(number, s => { });
|
|
||||||
return WrapCodexContainers(rc);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,22 +17,23 @@ namespace CodexPlugin
|
||||||
|
|
||||||
public static IOnlineCodexNode SetupCodexNode(this CoreInterface ci)
|
public static IOnlineCodexNode SetupCodexNode(this CoreInterface ci)
|
||||||
{
|
{
|
||||||
return Plugin(ci).SetupCodexNode(s => { }); // do more unification here. Keep plugin simpler.
|
return ci.SetupCodexNodes(1)[0];
|
||||||
}
|
}
|
||||||
|
|
||||||
public static IOnlineCodexNode SetupCodexNode(this CoreInterface ci, Action<ICodexSetup> setup)
|
public static IOnlineCodexNode SetupCodexNode(this CoreInterface ci, Action<ICodexSetup> setup)
|
||||||
{
|
{
|
||||||
return Plugin(ci).SetupCodexNode(setup);
|
return ci.SetupCodexNodes(1, setup)[0];
|
||||||
}
|
}
|
||||||
|
|
||||||
public static ICodexNodeGroup SetupCodexNodes(this CoreInterface ci, int number, Action<ICodexSetup> setup)
|
public static ICodexNodeGroup SetupCodexNodes(this CoreInterface ci, int number, Action<ICodexSetup> setup)
|
||||||
{
|
{
|
||||||
return Plugin(ci).SetupCodexNodes(number, setup);
|
var rc = ci.StartCodexNodes(number, setup);
|
||||||
|
return ci.WrapCodexContainers(rc);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static ICodexNodeGroup SetupCodexNodes(this CoreInterface ci, int number)
|
public static ICodexNodeGroup SetupCodexNodes(this CoreInterface ci, int number)
|
||||||
{
|
{
|
||||||
return Plugin(ci).SetupCodexNodes(number);
|
return ci.SetupCodexNodes(number, s => { });
|
||||||
}
|
}
|
||||||
|
|
||||||
private static CodexPlugin Plugin(CoreInterface ci)
|
private static CodexPlugin Plugin(CoreInterface ci)
|
||||||
|
|
|
@ -1,28 +1,17 @@
|
||||||
namespace Core
|
namespace Core
|
||||||
{
|
{
|
||||||
public class CoreInterface
|
public sealed class CoreInterface
|
||||||
{
|
{
|
||||||
private static readonly Dictionary<CoreInterface, EntryPoint> coreAssociations = new Dictionary<CoreInterface, EntryPoint>();
|
private readonly EntryPoint entryPoint;
|
||||||
|
|
||||||
|
internal CoreInterface(EntryPoint entryPoint)
|
||||||
|
{
|
||||||
|
this.entryPoint = entryPoint;
|
||||||
|
}
|
||||||
|
|
||||||
public T GetPlugin<T>() where T : IProjectPlugin
|
public T GetPlugin<T>() where T : IProjectPlugin
|
||||||
{
|
{
|
||||||
return coreAssociations[this].GetPlugin<T>();
|
return entryPoint.GetPlugin<T>();
|
||||||
}
|
|
||||||
|
|
||||||
internal static void Associate(CoreInterface coreInterface, EntryPoint entryPoint)
|
|
||||||
{
|
|
||||||
coreAssociations.Add(coreInterface, entryPoint);
|
|
||||||
}
|
|
||||||
|
|
||||||
internal static void Desociate(EntryPoint entryPoint)
|
|
||||||
{
|
|
||||||
var keys = coreAssociations.Where(p => p.Value == entryPoint).ToArray();
|
|
||||||
if (keys.Length == 0) return;
|
|
||||||
|
|
||||||
foreach (var key in keys)
|
|
||||||
{
|
|
||||||
coreAssociations.Remove(key.Key);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -38,21 +38,13 @@ namespace Core
|
||||||
manager.InitializePlugins(this);
|
manager.InitializePlugins(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void ManuallyAssociateCoreInterface(CoreInterface ci)
|
|
||||||
{
|
|
||||||
CoreInterface.Associate(ci, this);
|
|
||||||
}
|
|
||||||
|
|
||||||
public CoreInterface CreateInterface()
|
public CoreInterface CreateInterface()
|
||||||
{
|
{
|
||||||
var ci = new CoreInterface();
|
return new CoreInterface(this);
|
||||||
CoreInterface.Associate(ci, this);
|
|
||||||
return ci;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Decommission()
|
public void Decommission()
|
||||||
{
|
{
|
||||||
CoreInterface.Desociate(this);
|
|
||||||
manager.FinalizePlugins(log);
|
manager.FinalizePlugins(log);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -8,7 +8,7 @@ using Utils;
|
||||||
namespace DistTestCore
|
namespace DistTestCore
|
||||||
{
|
{
|
||||||
[Parallelizable(ParallelScope.All)]
|
[Parallelizable(ParallelScope.All)]
|
||||||
public abstract class DistTest : CoreInterface
|
public abstract class DistTest
|
||||||
{
|
{
|
||||||
private const string TestsType = "dist-tests";
|
private const string TestsType = "dist-tests";
|
||||||
private const string TestNamespacePrefix = "ct-";
|
private const string TestNamespacePrefix = "ct-";
|
||||||
|
@ -91,6 +91,14 @@ namespace DistTestCore
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public CoreInterface Ci
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return Get().CoreInterface;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public TrackedFile GenerateTestFile(ByteSize size, string label = "")
|
public TrackedFile GenerateTestFile(ByteSize size, string label = "")
|
||||||
{
|
{
|
||||||
return Get().EntryPoint.GetFileManager().GenerateTestFile(size, label);
|
return Get().EntryPoint.GetFileManager().GenerateTestFile(size, label);
|
||||||
|
@ -213,7 +221,6 @@ namespace DistTestCore
|
||||||
{
|
{
|
||||||
var testNamespace = TestNamespacePrefix + Guid.NewGuid().ToString();
|
var testNamespace = TestNamespacePrefix + Guid.NewGuid().ToString();
|
||||||
var lifecycle = new TestLifecycle(fixtureLog.CreateTestLog(), configuration, GetTimeSet(), testNamespace);
|
var lifecycle = new TestLifecycle(fixtureLog.CreateTestLog(), configuration, GetTimeSet(), testNamespace);
|
||||||
lifecycle.EntryPoint.ManuallyAssociateCoreInterface(this);
|
|
||||||
lifecycles.Add(testName, lifecycle);
|
lifecycles.Add(testName, lifecycle);
|
||||||
DefaultContainerRecipe.TestsType = TestsType;
|
DefaultContainerRecipe.TestsType = TestsType;
|
||||||
//DefaultContainerRecipe.ApplicationIds = lifecycle.GetApplicationIds();
|
//DefaultContainerRecipe.ApplicationIds = lifecycle.GetApplicationIds();
|
||||||
|
|
|
@ -17,6 +17,7 @@ namespace DistTestCore
|
||||||
|
|
||||||
EntryPoint = new EntryPoint(log, configuration.GetK8sConfiguration(timeSet, testNamespace), configuration.GetFileManagerFolder(), timeSet);
|
EntryPoint = new EntryPoint(log, configuration.GetK8sConfiguration(timeSet, testNamespace), configuration.GetFileManagerFolder(), timeSet);
|
||||||
EntryPoint.Initialize();
|
EntryPoint.Initialize();
|
||||||
|
CoreInterface = EntryPoint.CreateInterface();
|
||||||
|
|
||||||
log.WriteLogTag();
|
log.WriteLogTag();
|
||||||
}
|
}
|
||||||
|
@ -25,6 +26,7 @@ namespace DistTestCore
|
||||||
public Configuration Configuration { get; }
|
public Configuration Configuration { get; }
|
||||||
public ITimeSet TimeSet { get; }
|
public ITimeSet TimeSet { get; }
|
||||||
public EntryPoint EntryPoint { get; }
|
public EntryPoint EntryPoint { get; }
|
||||||
|
public CoreInterface CoreInterface { get; }
|
||||||
|
|
||||||
public void DeleteAllResources()
|
public void DeleteAllResources()
|
||||||
{
|
{
|
||||||
|
|
|
@ -13,7 +13,7 @@ namespace Tests
|
||||||
|
|
||||||
public IOnlineCodexNode AddCodex(Action<ICodexSetup> setup)
|
public IOnlineCodexNode AddCodex(Action<ICodexSetup> setup)
|
||||||
{
|
{
|
||||||
return this.SetupCodexNode(s =>
|
return Ci.SetupCodexNode(s =>
|
||||||
{
|
{
|
||||||
setup(s);
|
setup(s);
|
||||||
s.WithBootstrapNode(BootstrapNode);
|
s.WithBootstrapNode(BootstrapNode);
|
||||||
|
@ -22,12 +22,12 @@ namespace Tests
|
||||||
|
|
||||||
public ICodexNodeGroup AddCodex(int numberOfNodes)
|
public ICodexNodeGroup AddCodex(int numberOfNodes)
|
||||||
{
|
{
|
||||||
return this.SetupCodexNodes(numberOfNodes, s => s.WithBootstrapNode(BootstrapNode));
|
return Ci.SetupCodexNodes(numberOfNodes, s => s.WithBootstrapNode(BootstrapNode));
|
||||||
}
|
}
|
||||||
|
|
||||||
public ICodexNodeGroup AddCodex(int numberOfNodes, Action<ICodexSetup> setup)
|
public ICodexNodeGroup AddCodex(int numberOfNodes, Action<ICodexSetup> setup)
|
||||||
{
|
{
|
||||||
return this.SetupCodexNodes(numberOfNodes, s =>
|
return Ci.SetupCodexNodes(numberOfNodes, s =>
|
||||||
{
|
{
|
||||||
setup(s);
|
setup(s);
|
||||||
s.WithBootstrapNode(BootstrapNode);
|
s.WithBootstrapNode(BootstrapNode);
|
||||||
|
@ -37,7 +37,7 @@ namespace Tests
|
||||||
[SetUp]
|
[SetUp]
|
||||||
public void SetUpBootstrapNode()
|
public void SetUpBootstrapNode()
|
||||||
{
|
{
|
||||||
BootstrapNode = this.SetupCodexNode(s => s.WithName("BOOTSTRAP"));
|
BootstrapNode = Ci.SetupCodexNode(s => s.WithName("BOOTSTRAP"));
|
||||||
}
|
}
|
||||||
|
|
||||||
protected IOnlineCodexNode BootstrapNode { get; private set; } = null!;
|
protected IOnlineCodexNode BootstrapNode { get; private set; } = null!;
|
||||||
|
|
|
@ -11,7 +11,7 @@ namespace Tests.BasicTests
|
||||||
[Test]
|
[Test]
|
||||||
public void CodexLogExample()
|
public void CodexLogExample()
|
||||||
{
|
{
|
||||||
var primary = this.SetupCodexNode();
|
var primary = Ci.SetupCodexNode();
|
||||||
|
|
||||||
primary.UploadFile(GenerateTestFile(5.MB()));
|
primary.UploadFile(GenerateTestFile(5.MB()));
|
||||||
|
|
||||||
|
@ -23,8 +23,8 @@ namespace Tests.BasicTests
|
||||||
[Test]
|
[Test]
|
||||||
public void TwoMetricsExample()
|
public void TwoMetricsExample()
|
||||||
{
|
{
|
||||||
//var group = this.SetupCodexNodes(2, s => s.EnableMetrics());
|
//var group = Ci.SetupCodexNodes(2, s => s.EnableMetrics());
|
||||||
//var group2 = this.SetupCodexNodes(2, s => s.EnableMetrics());
|
//var group2 = Ci.SetupCodexNodes(2, s => s.EnableMetrics());
|
||||||
|
|
||||||
//var primary = group[0];
|
//var primary = group[0];
|
||||||
//var secondary = group[1];
|
//var secondary = group[1];
|
||||||
|
@ -47,7 +47,7 @@ namespace Tests.BasicTests
|
||||||
//var buyerInitialBalance = 1000.TestTokens();
|
//var buyerInitialBalance = 1000.TestTokens();
|
||||||
//var fileSize = 10.MB();
|
//var fileSize = 10.MB();
|
||||||
|
|
||||||
//var seller = this.SetupCodexNode(s => s
|
//var seller = Ci.SetupCodexNode(s => s
|
||||||
// .WithStorageQuota(11.GB())
|
// .WithStorageQuota(11.GB())
|
||||||
// .EnableMarketplace(sellerInitialBalance));
|
// .EnableMarketplace(sellerInitialBalance));
|
||||||
|
|
||||||
|
@ -60,7 +60,7 @@ namespace Tests.BasicTests
|
||||||
|
|
||||||
//var testFile = GenerateTestFile(fileSize);
|
//var testFile = GenerateTestFile(fileSize);
|
||||||
|
|
||||||
//var buyer = this.SetupCodexNode(s => s
|
//var buyer = Ci.SetupCodexNode(s => s
|
||||||
// .WithBootstrapNode(seller)
|
// .WithBootstrapNode(seller)
|
||||||
// .EnableMarketplace(buyerInitialBalance));
|
// .EnableMarketplace(buyerInitialBalance));
|
||||||
|
|
||||||
|
|
|
@ -17,7 +17,7 @@ namespace Tests.BasicTests
|
||||||
[Test]
|
[Test]
|
||||||
public void SetUpANodeAndWait()
|
public void SetUpANodeAndWait()
|
||||||
{
|
{
|
||||||
node = this.SetupCodexNode();
|
node = Ci.SetupCodexNode();
|
||||||
|
|
||||||
Time.WaitUntil(() => node == null, TimeSpan.FromMinutes(5), TimeSpan.FromSeconds(5));
|
Time.WaitUntil(() => node == null, TimeSpan.FromMinutes(5), TimeSpan.FromSeconds(5));
|
||||||
}
|
}
|
||||||
|
@ -25,7 +25,7 @@ namespace Tests.BasicTests
|
||||||
[Test]
|
[Test]
|
||||||
public void ForeignNodeConnects()
|
public void ForeignNodeConnects()
|
||||||
{
|
{
|
||||||
var myNode = this.SetupCodexNode();
|
var myNode = Ci.SetupCodexNode();
|
||||||
|
|
||||||
Time.WaitUntil(() => node != null, TimeSpan.FromMinutes(1), TimeSpan.FromSeconds(5));
|
Time.WaitUntil(() => node != null, TimeSpan.FromMinutes(1), TimeSpan.FromSeconds(5));
|
||||||
|
|
||||||
|
|
|
@ -11,7 +11,7 @@ namespace Tests.BasicTests
|
||||||
[Test]
|
[Test]
|
||||||
public void OneClientTest()
|
public void OneClientTest()
|
||||||
{
|
{
|
||||||
var primary = this.SetupCodexNode();
|
var primary = Ci.SetupCodexNode();
|
||||||
|
|
||||||
PerformOneClientTest(primary);
|
PerformOneClientTest(primary);
|
||||||
}
|
}
|
||||||
|
@ -19,7 +19,7 @@ namespace Tests.BasicTests
|
||||||
[Test]
|
[Test]
|
||||||
public void RestartTest()
|
public void RestartTest()
|
||||||
{
|
{
|
||||||
var primary = this.SetupCodexNode();
|
var primary = Ci.SetupCodexNode();
|
||||||
|
|
||||||
//var setup = primary.BringOffline();
|
//var setup = primary.BringOffline();
|
||||||
|
|
||||||
|
|
|
@ -12,7 +12,7 @@ namespace Tests.BasicTests
|
||||||
[Test]
|
[Test]
|
||||||
public void TwoClientTest()
|
public void TwoClientTest()
|
||||||
{
|
{
|
||||||
var group = this.SetupCodexNodes(2);
|
var group = Ci.SetupCodexNodes(2);
|
||||||
|
|
||||||
var primary = group[0];
|
var primary = group[0];
|
||||||
var secondary = group[1];
|
var secondary = group[1];
|
||||||
|
@ -23,8 +23,8 @@ namespace Tests.BasicTests
|
||||||
[Test]
|
[Test]
|
||||||
public void TwoClientsTwoLocationsTest()
|
public void TwoClientsTwoLocationsTest()
|
||||||
{
|
{
|
||||||
var primary = this.SetupCodexNode(s => s.At(Location.One));
|
var primary = Ci.SetupCodexNode(s => s.At(Location.One));
|
||||||
var secondary = this.SetupCodexNode(s => s.At(Location.Two));
|
var secondary = Ci.SetupCodexNode(s => s.At(Location.Two));
|
||||||
|
|
||||||
PerformTwoClientTest(primary, secondary);
|
PerformTwoClientTest(primary, secondary);
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,10 +10,10 @@ namespace Tests.PeerDiscoveryTests
|
||||||
[Test]
|
[Test]
|
||||||
public void TwoLayersTest()
|
public void TwoLayersTest()
|
||||||
{
|
{
|
||||||
var root = this.SetupCodexNode();
|
var root = Ci.SetupCodexNode();
|
||||||
var l1Source = this.SetupCodexNode(s => s.WithBootstrapNode(root));
|
var l1Source = Ci.SetupCodexNode(s => s.WithBootstrapNode(root));
|
||||||
var l1Node = this.SetupCodexNode(s => s.WithBootstrapNode(root));
|
var l1Node = Ci.SetupCodexNode(s => s.WithBootstrapNode(root));
|
||||||
var l2Target = this.SetupCodexNode(s => s.WithBootstrapNode(l1Node));
|
var l2Target = Ci.SetupCodexNode(s => s.WithBootstrapNode(l1Node));
|
||||||
|
|
||||||
AssertAllNodesConnected();
|
AssertAllNodesConnected();
|
||||||
}
|
}
|
||||||
|
@ -21,11 +21,11 @@ namespace Tests.PeerDiscoveryTests
|
||||||
[Test]
|
[Test]
|
||||||
public void ThreeLayersTest()
|
public void ThreeLayersTest()
|
||||||
{
|
{
|
||||||
var root = this.SetupCodexNode();
|
var root = Ci.SetupCodexNode();
|
||||||
var l1Source = this.SetupCodexNode(s => s.WithBootstrapNode(root));
|
var l1Source = Ci.SetupCodexNode(s => s.WithBootstrapNode(root));
|
||||||
var l1Node = this.SetupCodexNode(s => s.WithBootstrapNode(root));
|
var l1Node = Ci.SetupCodexNode(s => s.WithBootstrapNode(root));
|
||||||
var l2Node = this.SetupCodexNode(s => s.WithBootstrapNode(l1Node));
|
var l2Node = Ci.SetupCodexNode(s => s.WithBootstrapNode(l1Node));
|
||||||
var l3Target = this.SetupCodexNode(s => s.WithBootstrapNode(l2Node));
|
var l3Target = Ci.SetupCodexNode(s => s.WithBootstrapNode(l2Node));
|
||||||
|
|
||||||
AssertAllNodesConnected();
|
AssertAllNodesConnected();
|
||||||
}
|
}
|
||||||
|
@ -36,10 +36,10 @@ namespace Tests.PeerDiscoveryTests
|
||||||
[TestCase(20)]
|
[TestCase(20)]
|
||||||
public void NodeChainTest(int chainLength)
|
public void NodeChainTest(int chainLength)
|
||||||
{
|
{
|
||||||
var node = this.SetupCodexNode();
|
var node = Ci.SetupCodexNode();
|
||||||
for (var i = 1; i < chainLength; i++)
|
for (var i = 1; i < chainLength; i++)
|
||||||
{
|
{
|
||||||
node = this.SetupCodexNode(s => s.WithBootstrapNode(node));
|
node = Ci.SetupCodexNode(s => s.WithBootstrapNode(node));
|
||||||
}
|
}
|
||||||
|
|
||||||
AssertAllNodesConnected();
|
AssertAllNodesConnected();
|
||||||
|
|
Loading…
Reference in New Issue