80 lines
2.6 KiB
C#
80 lines
2.6 KiB
C#
using Logging;
|
|
using NUnit.Framework;
|
|
using NUnit.Framework.Constraints;
|
|
|
|
namespace DistTestCore.Marketplace
|
|
{
|
|
public interface IMarketplaceAccess
|
|
{
|
|
void MakeStorageAvailable(ByteSize size, int minPricePerBytePerSecond, float maxCollateral);
|
|
void RequestStorage(ContentId contentId, int pricePerBytePerSecond, float requiredCollateral, float minRequiredNumberOfNodes);
|
|
void AssertThatBalance(IResolveConstraint constraint, string message = "");
|
|
decimal GetBalance();
|
|
}
|
|
|
|
public class MarketplaceAccess : IMarketplaceAccess
|
|
{
|
|
private readonly TestLog log;
|
|
private readonly GethBootstrapNodeInfo bootstrapNode;
|
|
private readonly GethCompanionNodeInfo companionNode;
|
|
|
|
public MarketplaceAccess(TestLog log, GethBootstrapNodeInfo bootstrapNode, GethCompanionNodeInfo companionNode)
|
|
{
|
|
this.log = log;
|
|
this.bootstrapNode = bootstrapNode;
|
|
this.companionNode = companionNode;
|
|
}
|
|
|
|
public void RequestStorage(ContentId contentId, int pricePerBytePerSecond, float requiredCollateral, float minRequiredNumberOfNodes)
|
|
{
|
|
throw new NotImplementedException();
|
|
}
|
|
|
|
public void MakeStorageAvailable(ByteSize size, int minPricePerBytePerSecond, float maxCollateral)
|
|
{
|
|
throw new NotImplementedException();
|
|
}
|
|
|
|
public void AssertThatBalance(IResolveConstraint constraint, string message = "")
|
|
{
|
|
Assert.That(GetBalance(), constraint, message);
|
|
}
|
|
|
|
public decimal GetBalance()
|
|
{
|
|
var interaction = bootstrapNode.StartInteraction(log);
|
|
return interaction.GetBalance(companionNode.Account);
|
|
}
|
|
}
|
|
|
|
public class MarketplaceUnavailable : IMarketplaceAccess
|
|
{
|
|
public void RequestStorage(ContentId contentId, int pricePerBytePerSecond, float requiredCollateral, float minRequiredNumberOfNodes)
|
|
{
|
|
Unavailable();
|
|
}
|
|
|
|
public void MakeStorageAvailable(ByteSize size, int minPricePerBytePerSecond, float maxCollateral)
|
|
{
|
|
Unavailable();
|
|
}
|
|
|
|
public void AssertThatBalance(IResolveConstraint constraint, string message = "")
|
|
{
|
|
Unavailable();
|
|
}
|
|
|
|
public decimal GetBalance()
|
|
{
|
|
Unavailable();
|
|
return 0;
|
|
}
|
|
|
|
private void Unavailable()
|
|
{
|
|
Assert.Fail("Incorrect test setup: Marketplace was not enabled for this group of Codex nodes. Add 'EnableMarketplace(...)' after 'SetupCodexNodes()' to enable it.");
|
|
throw new InvalidOperationException();
|
|
}
|
|
}
|
|
}
|