Skip to content

Commit 23fdc2d

Browse files
committed
Fixes marketplace release test
1 parent fee42c7 commit 23fdc2d

File tree

2 files changed

+31
-12
lines changed

2 files changed

+31
-12
lines changed

ProjectPlugins/CodexPlugin/StoragePurchaseContract.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ public interface IStoragePurchaseContract
1212
string PurchaseId { get; }
1313
StoragePurchaseRequest Purchase { get; }
1414
ContentId ContentId { get; }
15+
StoragePurchase GetStatus();
1516
void WaitForStorageContractSubmitted();
1617
void WaitForStorageContractStarted();
1718
void WaitForStorageContractFinished(ICodexContracts contracts);
@@ -47,6 +48,11 @@ public StoragePurchaseContract(ILog log, CodexAccess codexAccess, string purchas
4748
public TimeSpan? SubmittedToStarted => contractStartedUtc - contractSubmittedUtc;
4849
public TimeSpan? SubmittedToFinished => contractFinishedUtc - contractSubmittedUtc;
4950

51+
public StoragePurchase GetStatus()
52+
{
53+
return codexAccess.GetPurchaseStatus(PurchaseId);
54+
}
55+
5056
public void WaitForStorageContractSubmitted()
5157
{
5258
WaitForStorageContractState(gracePeriod, "submitted", sleep: 200);

Tests/CodexReleaseTests/MarketTests/MarketplaceAutoBootstrapDistTest.cs

Lines changed: 25 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -138,32 +138,43 @@ public SlotFill[] GetOnChainSlotFills(ICodexNodeGroup possibleHosts)
138138
}).ToArray();
139139
}
140140

141-
protected void AssertClientHasPaidForContract(TestToken pricePerSlotPerSecond, ICodexNode client, IStoragePurchaseContract contract, ICodexNodeGroup hosts)
141+
protected void AssertClientHasPaidForContract(TestToken pricePerBytePerSecond, ICodexNode client, IStoragePurchaseContract contract, ICodexNodeGroup hosts)
142142
{
143143
var balance = GetTstBalance(client);
144-
var expectedBalance = StartingBalanceTST.Tst() - GetContractFinalCost(pricePerSlotPerSecond, contract, hosts);
144+
var expectedBalance = StartingBalanceTST.Tst() - GetContractFinalCost(pricePerBytePerSecond, contract, hosts);
145145

146146
Assert.That(balance, Is.EqualTo(expectedBalance), "Client balance incorrect.");
147147
}
148148

149-
protected void AssertHostsWerePaidForContract(TestToken pricePerSlotPerSecond, IStoragePurchaseContract contract, ICodexNodeGroup hosts)
149+
protected void AssertHostsWerePaidForContract(TestToken pricePerBytePerSecond, IStoragePurchaseContract contract, ICodexNodeGroup hosts)
150150
{
151151
var fills = GetOnChainSlotFills(hosts);
152152
var submitUtc = GetContractOnChainSubmittedUtc(contract);
153153
var finishUtc = submitUtc + contract.Purchase.Duration;
154+
var slotSize = Convert.ToInt64(contract.GetStatus().Request.Ask.SlotSize).Bytes();
154155
var expectedBalances = new Dictionary<EthAddress, TestToken>();
156+
155157
foreach (var host in hosts) expectedBalances.Add(host.EthAddress, StartingBalanceTST.Tst());
156158
foreach (var fill in fills)
157159
{
158160
var slotDuration = finishUtc - fill.SlotFilledEvent.Block.Utc;
159-
expectedBalances[fill.Host.EthAddress] += GetContractCostPerSlot(pricePerSlotPerSecond, slotDuration);
161+
expectedBalances[fill.Host.EthAddress] += GetContractCostPerSlot(pricePerBytePerSecond, slotSize, slotDuration);
160162
}
161163

162-
foreach (var pair in expectedBalances)
164+
var retry = new Retry(nameof(AssertHostsWerePaidForContract),
165+
maxTimeout: TimeSpan.FromMinutes(30),
166+
sleepAfterFail: TimeSpan.FromSeconds(10),
167+
onFail: f => { }
168+
);
169+
170+
retry.Run(() =>
163171
{
164-
var balance = GetTstBalance(pair.Key);
165-
Assert.That(balance, Is.EqualTo(pair.Value), "Host was not paid for storage.");
166-
}
172+
foreach (var pair in expectedBalances)
173+
{
174+
var balance = GetTstBalance(pair.Key);
175+
Assert.That(balance, Is.EqualTo(pair.Value), "Host was not paid for storage.");
176+
}
177+
});
167178
}
168179

169180
protected void AssertHostsCollateralsAreUnchanged(ICodexNodeGroup hosts)
@@ -176,17 +187,18 @@ protected void AssertHostsCollateralsAreUnchanged(ICodexNodeGroup hosts)
176187
}
177188
}
178189

179-
private TestToken GetContractFinalCost(TestToken pricePerSlotPerSecond, IStoragePurchaseContract contract, ICodexNodeGroup hosts)
190+
private TestToken GetContractFinalCost(TestToken pricePerBytePerSecond, IStoragePurchaseContract contract, ICodexNodeGroup hosts)
180191
{
181192
var fills = GetOnChainSlotFills(hosts);
182193
var result = 0.Tst();
183194
var submitUtc = GetContractOnChainSubmittedUtc(contract);
184195
var finishUtc = submitUtc + contract.Purchase.Duration;
196+
var slotSize = Convert.ToInt64(contract.GetStatus().Request.Ask.SlotSize).Bytes();
185197

186198
foreach (var fill in fills)
187199
{
188200
var slotDuration = finishUtc - fill.SlotFilledEvent.Block.Utc;
189-
result += GetContractCostPerSlot(pricePerSlotPerSecond, slotDuration);
201+
result += GetContractCostPerSlot(pricePerBytePerSecond, slotSize, slotDuration);
190202
}
191203

192204
return result;
@@ -207,9 +219,10 @@ private DateTime GetContractOnChainSubmittedUtc(IStoragePurchaseContract contrac
207219
}, nameof(GetContractOnChainSubmittedUtc));
208220
}
209221

210-
private TestToken GetContractCostPerSlot(TestToken pricePerSlotPerSecond, TimeSpan slotDuration)
222+
private TestToken GetContractCostPerSlot(TestToken pricePerBytePerSecond, ByteSize slotSize, TimeSpan slotDuration)
211223
{
212-
return pricePerSlotPerSecond * (int)slotDuration.TotalSeconds;
224+
var cost = pricePerBytePerSecond.TstWei * slotSize.SizeInBytes * (int)slotDuration.TotalSeconds;
225+
return cost.TstWei();
213226
}
214227

215228
protected void AssertContractSlotsAreFilledByHosts(IStoragePurchaseContract contract, ICodexNodeGroup hosts)

0 commit comments

Comments
 (0)