Skip to content

Commit d5f87c5

Browse files
committed
add single validator test
1 parent f43b764 commit d5f87c5

File tree

3 files changed

+68
-26
lines changed

3 files changed

+68
-26
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -218,7 +218,7 @@ forge coverage --no-match-coverage "(test|mock|script)"
218218
You can examine the gas usage metrics using the command:
219219

220220
```sh
221-
forge snapshot --snap ./test/.gas-snapshot
221+
FOUNDRY_PROFILE=test forge snapshot --snap ./test/.gas-snapshot
222222
```
223223

224224
You can see the snapshot `.gas-snapshot` file in the current directory.

test/.gas-snapshot

Lines changed: 21 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,21 @@
1-
DeployTest:test_Deploy() (gas: 18809)
2-
LLMOracleCoordinatorTest:test_RegisterOracles() (gas: 85623541)
3-
LLMOracleCoordinatorTest:test_RevertWhen_ValidateWithoutWhitelist() (gas: 86163696)
4-
LLMOracleCoordinatorTest:test_ValidatorIsGenerator() (gas: 86303124)
5-
LLMOracleCoordinatorTest:test_WitValidation_NotEveryGeneratorGetFee() (gas: 86888424)
6-
LLMOracleCoordinatorTest:test_WithValidation() (gas: 86721686)
7-
LLMOracleCoordinatorTest:test_WithoutValidation() (gas: 86292219)
8-
LLMOracleRegistryTest:test_RegisterGeneratorOracle() (gas: 19076281)
9-
LLMOracleRegistryTest:test_RegisterValidatorOracle() (gas: 19181964)
10-
LLMOracleRegistryTest:test_RemoveFromWhitelist() (gas: 19192586)
11-
LLMOracleRegistryTest:test_RevertWhen_RegisterSameGeneratorTwice() (gas: 19079820)
12-
LLMOracleRegistryTest:test_RevertWhen_RegistryHasNotApprovedByOracle() (gas: 18855997)
13-
LLMOracleRegistryTest:test_RevertWhen_UnregisterBeforeEnoughTimeHasPassed() (gas: 19085782)
14-
LLMOracleRegistryTest:test_RevertWhen_UnregisterSameGeneratorTwice() (gas: 19077356)
15-
LLMOracleRegistryTest:test_UnregisterOracle() (gas: 19074421)
16-
LLMOracleRegistryTest:test_WithdrawStakesAfterUnregistering() (gas: 19279660)
17-
StatisticsTest:testFuzz_Average(uint8,uint8,uint8,uint8) (runs: 256, μ: 9748, ~: 9748)
18-
StatisticsTest:testFuzz_StandardDeviation(uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8) (runs: 256, μ: 21895, ~: 21888)
19-
StatisticsTest:testFuzz_Variance(uint8,uint8,uint8,uint8,uint8) (runs: 256, μ: 13902, ~: 13902)
20-
StatisticsTest:test_Average() (gas: 135735)
21-
StatisticsTest:test_StandardDeviation() (gas: 167111)
22-
StatisticsTest:test_Variance() (gas: 163789)
1+
LLMOracleCoordinatorTest:test_RegisterOracles() (gas: 11094589)
2+
LLMOracleCoordinatorTest:test_RevertWhen_ValidateWithoutWhitelist() (gas: 11679788)
3+
LLMOracleCoordinatorTest:test_ValidatorIsGenerator() (gas: 11829787)
4+
LLMOracleCoordinatorTest:test_WitValidation_NotEveryGeneratorGetFee() (gas: 12479326)
5+
LLMOracleCoordinatorTest:test_WithValidation() (gas: 12318783)
6+
LLMOracleCoordinatorTest:test_WithoutValidation() (gas: 11849053)
7+
LLMOracleRegistryTest:test_RegisterGeneratorOracle() (gas: 3726081)
8+
LLMOracleRegistryTest:test_RegisterValidatorOracle() (gas: 3834643)
9+
LLMOracleRegistryTest:test_RemoveFromWhitelist() (gas: 3846836)
10+
LLMOracleRegistryTest:test_RevertWhen_RegisterSameGeneratorTwice() (gas: 3730771)
11+
LLMOracleRegistryTest:test_RevertWhen_RegistryHasNotApprovedByOracle() (gas: 3452408)
12+
LLMOracleRegistryTest:test_RevertWhen_UnregisterBeforeEnoughTimeHasPassed() (gas: 3739358)
13+
LLMOracleRegistryTest:test_RevertWhen_UnregisterSameGeneratorTwice() (gas: 3733641)
14+
LLMOracleRegistryTest:test_UnregisterOracle() (gas: 3729484)
15+
LLMOracleRegistryTest:test_WithdrawStakesAfterUnregistering() (gas: 3955881)
16+
StatisticsTest:testFuzz_Average(uint8,uint8,uint8,uint8) (runs: 256, μ: 7552, ~: 7552)
17+
StatisticsTest:testFuzz_StandardDeviation(uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8,uint8) (runs: 256, μ: 26926, ~: 26920)
18+
StatisticsTest:testFuzz_Variance(uint8,uint8,uint8,uint8,uint8) (runs: 256, μ: 14850, ~: 14850)
19+
StatisticsTest:test_Average() (gas: 139247)
20+
StatisticsTest:test_StandardDeviation() (gas: 198260)
21+
StatisticsTest:test_Variance() (gas: 193562)

test/LLMOracleCoordinator.t.sol

Lines changed: 46 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
pragma solidity ^0.8.20;
33

44
import {UnsafeUpgrades} from "@openzeppelin/foundry-upgrades/Upgrades.sol";
5+
import {console} from "forge-std/console.sol";
56

67
import {LLMOracleTask, LLMOracleTaskParameters} from "../src/LLMOracleTask.sol";
78
import {LLMOracleRegistry, LLMOracleKind} from "../src/LLMOracleRegistry.sol";
@@ -259,7 +260,7 @@ contract LLMOracleCoordinatorTest is Helper {
259260
assertEq(balanceAfter - balanceBefore, fees.platform);
260261
}
261262

262-
/// @dev Oracle cannot validate if already participated as generator
263+
/// @notice Oracle cannot validate if already participated as generator
263264
/// @dev 1 generation + 1 validation
264265
function test_ValidatorIsGenerator()
265266
external
@@ -291,8 +292,8 @@ contract LLMOracleCoordinatorTest is Helper {
291292
oracleCoordinator.validate(1, nonce, scores, metadata);
292293
}
293294

294-
// @notice Request with 4 generation + 1 validation
295-
// @dev Not every generator gets fee
295+
/// @notice Request with 4 generation + 1 validation
296+
/// @dev Not every generator gets fee
296297
function test_WitValidation_NotEveryGeneratorGetFee()
297298
external
298299
fund
@@ -348,4 +349,46 @@ contract LLMOracleCoordinatorTest is Helper {
348349
// only 1 generator doesn't get fee
349350
assertEq(balanceAfter - balanceBefore, fees.platform + genFee);
350351
}
352+
353+
/// @notice Request with 4 generation + 1 validation
354+
/// @dev Not every generator gets fee
355+
function test_WithSingleValidationAndGeneration()
356+
external
357+
fund
358+
setOracleParameters(2, 1, 1)
359+
deployment
360+
registerOracles
361+
safeRequest(requester, 1)
362+
addValidatorsToWhitelist
363+
{
364+
uint256 balanceBefore = token.balanceOf(dria);
365+
366+
// get generator allowances before function execution & respond
367+
uint256 generatorAllowancesBefore = token.allowance(address(oracleCoordinator), generators[0]);
368+
console.log("BEFORE:", generatorAllowancesBefore);
369+
safeRespond(generators[0], output, 1);
370+
371+
// validator validate with just one score
372+
scores = [200];
373+
safeValidate(validators[0], 1);
374+
375+
// check the task's status is Completed
376+
(,,, LLMOracleTask.TaskStatus status, uint256 generatorFee,,,,) = oracleCoordinator.requests(1);
377+
assertEq(uint8(status), uint8(LLMOracleTask.TaskStatus.Completed));
378+
379+
// check that fee is given
380+
uint256 generatorAllowanceAfter = token.allowance(address(oracleCoordinator), generators[0]);
381+
console.log("AFTER:", generatorAllowanceAfter);
382+
assertEq(generatorAllowanceAfter - generatorAllowancesBefore, generatorFee);
383+
384+
// withdraw platform fees
385+
vm.prank(dria);
386+
oracleCoordinator.withdrawPlatformFees();
387+
388+
// get balance of dria after withdraw
389+
uint256 balanceAfter = token.balanceOf(dria);
390+
391+
// should only have platform fee after withdrawing
392+
assertEq(balanceAfter - balanceBefore, fees.platform);
393+
}
351394
}

0 commit comments

Comments
 (0)