From fd3567347b533fd45ebdea773fc3f92743aaf5a4 Mon Sep 17 00:00:00 2001 From: Ben Date: Thu, 21 Nov 2024 15:30:56 +0100 Subject: [PATCH] setting up marketplace tests --- .../MarketTests/ContractSuccessfulTest.cs | 31 ++++++++-- .../MarketplaceAutoBootstrapDistTest.cs | 56 +++++++++++++++++++ 2 files changed, 82 insertions(+), 5 deletions(-) create mode 100644 Tests/CodexReleaseTests/MarketTests/MarketplaceAutoBootstrapDistTest.cs diff --git a/Tests/CodexReleaseTests/MarketTests/ContractSuccessfulTest.cs b/Tests/CodexReleaseTests/MarketTests/ContractSuccessfulTest.cs index 3bcdcc4..3151984 100644 --- a/Tests/CodexReleaseTests/MarketTests/ContractSuccessfulTest.cs +++ b/Tests/CodexReleaseTests/MarketTests/ContractSuccessfulTest.cs @@ -1,24 +1,45 @@ using CodexContractsPlugin; -using CodexTests; -using GethPlugin; +using CodexPlugin; using NUnit.Framework; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; +using Utils; namespace CodexReleaseTests.MarketTests { [TestFixture] - public class ContractSuccessfulTest : AutoBootstrapDistTest + public class ContractSuccessfulTest : MarketplaceAutoBootstrapDistTest { + private const int NumberOfHosts = 4; + private const int FilesizeMb = 10; + [Test] public void ContractSuccessful() { - var geth = Ci.StartGethNode(s => s.IsMiner()); - var contracts = Ci.DeployCodexContracts(geth); + var hosts = StartHosts(); + var client = StartCodex(s => s.WithName("client")); + + } + + private ICodexNodeGroup StartHosts() + { + var hosts = StartCodex(NumberOfHosts, s => s.WithName("host")); + + var config = GetContracts().Deployment.Config; + foreach (var host in hosts) + { + host.Marketplace.MakeStorageAvailable(new CodexPlugin.StorageAvailability( + totalSpace: (5 * FilesizeMb).MB(), + maxDuration: TimeSpan.FromSeconds(((double)config.Proofs.Period) * 5.0), + minPriceForTotalSpace: 1.TstWei(), + maxCollateral: 999999.Tst()) + ); + } + return hosts; } } } diff --git a/Tests/CodexReleaseTests/MarketTests/MarketplaceAutoBootstrapDistTest.cs b/Tests/CodexReleaseTests/MarketTests/MarketplaceAutoBootstrapDistTest.cs new file mode 100644 index 0000000..045be2f --- /dev/null +++ b/Tests/CodexReleaseTests/MarketTests/MarketplaceAutoBootstrapDistTest.cs @@ -0,0 +1,56 @@ +using CodexContractsPlugin; +using CodexPlugin; +using CodexTests; +using DistTestCore; +using GethPlugin; + +namespace CodexReleaseTests.MarketTests +{ + public abstract class MarketplaceAutoBootstrapDistTest : AutoBootstrapDistTest + { + private readonly Dictionary handles = new Dictionary(); + protected const int StartingBalanceTST = 1000; + + protected override void LifecycleStart(TestLifecycle lifecycle) + { + base.LifecycleStart(lifecycle); + var geth = Ci.StartGethNode(s => s.IsMiner()); + var contracts = Ci.StartCodexContracts(geth); + handles.Add(lifecycle, new MarketplaceHandle(geth, contracts)); + } + + protected override void LifecycleStop(TestLifecycle lifecycle, DistTestResult result) + { + base.LifecycleStop(lifecycle, result); + handles.Remove(lifecycle); + } + + protected override void OnCodexSetup(ICodexSetup setup) + { + base.OnCodexSetup(setup); + setup.EnableMarketplace(GetGeth(), GetContracts(), m => m.WithInitial(10.Eth(), StartingBalanceTST.Tst())); + } + + protected IGethNode GetGeth() + { + return handles[Get()].Geth; + } + + protected ICodexContracts GetContracts() + { + return handles[Get()].Contracts; + } + + private class MarketplaceHandle + { + public MarketplaceHandle(IGethNode geth, ICodexContracts contracts) + { + Geth = geth; + Contracts = contracts; + } + + public IGethNode Geth { get; } + public ICodexContracts Contracts { get; } + } + } +}