Skip to content

Commit 2f5b605

Browse files
alecgardpavel-raykov
authored andcommitted
Add unit test for DF Cache being able to have multiple Workflows write to a Data ID (#16982)
1 parent 60edca9 commit 2f5b605

File tree

2 files changed

+54
-33
lines changed

2 files changed

+54
-33
lines changed

contracts/gas-snapshots/data-feeds.gas-snapshot

Lines changed: 34 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -38,59 +38,60 @@ DataFeedsCacheGasTest:test_write_setDecimalFeedConfigs_with_delete_5_gas() (gas:
3838
DataFeedsCacheTest:testFuzzy_getDataType(bytes16,uint256) (runs: 256, μ: 9492, ~: 9492)
3939
DataFeedsCacheTest:testFuzzy_getDataTypeRevertOutOfBound(bytes16,uint256) (runs: 256, μ: 9275, ~: 9275)
4040
DataFeedsCacheTest:testFuzzy_recoverTokensERC20Success(uint256) (runs: 256, μ: 77137, ~: 77137)
41-
DataFeedsCacheTest:testFuzzy_recoverTokensNativeSuccess(uint256) (runs: 256, μ: 49076, ~: 49076)
42-
DataFeedsCacheTest:test_bundleDecimals() (gas: 282615)
43-
DataFeedsCacheTest:test_decimals() (gas: 221728)
44-
DataFeedsCacheTest:test_description() (gas: 224377)
41+
DataFeedsCacheTest:testFuzzy_recoverTokensNativeSuccess(uint256) (runs: 256, μ: 49098, ~: 49098)
42+
DataFeedsCacheTest:test_bundleDecimals() (gas: 282593)
43+
DataFeedsCacheTest:test_decimals() (gas: 221706)
44+
DataFeedsCacheTest:test_description() (gas: 224355)
45+
DataFeedsCacheTest:test_feedCanBeWrittenToByMultipleWorkflows() (gas: 219534)
4546
DataFeedsCacheTest:test_getDataIdForProxy() (gas: 15208)
4647
DataFeedsCacheTest:test_getDataType() (gas: 8885)
47-
DataFeedsCacheTest:test_getFeedMetadata() (gas: 268430)
48-
DataFeedsCacheTest:test_getFeedMetadataRevertFeedNotConfigured() (gas: 13396)
49-
DataFeedsCacheTest:test_getLatestAnswer1() (gas: 307921)
50-
DataFeedsCacheTest:test_getLatestAnswer2() (gas: 578544)
48+
DataFeedsCacheTest:test_getFeedMetadata() (gas: 268408)
49+
DataFeedsCacheTest:test_getFeedMetadataRevertFeedNotConfigured() (gas: 13418)
50+
DataFeedsCacheTest:test_getLatestAnswer1() (gas: 307899)
51+
DataFeedsCacheTest:test_getLatestAnswer2() (gas: 578522)
5152
DataFeedsCacheTest:test_getLatestBundle1() (gas: 410719)
52-
DataFeedsCacheTest:test_getLatestBundle2() (gas: 781477)
53-
DataFeedsCacheTest:test_getLatestByFeedId() (gas: 318015)
54-
DataFeedsCacheTest:test_getWorkflowMetaData() (gas: 10161)
53+
DataFeedsCacheTest:test_getLatestBundle2() (gas: 781455)
54+
DataFeedsCacheTest:test_getLatestByFeedId() (gas: 317993)
55+
DataFeedsCacheTest:test_getWorkflowMetaData() (gas: 10183)
5556
DataFeedsCacheTest:test_isFeedAdmin() (gas: 14294)
56-
DataFeedsCacheTest:test_latestAnswer1() (gas: 314086)
57-
DataFeedsCacheTest:test_latestAnswer2() (gas: 589248)
57+
DataFeedsCacheTest:test_latestAnswer1() (gas: 314064)
58+
DataFeedsCacheTest:test_latestAnswer2() (gas: 589203)
5859
DataFeedsCacheTest:test_latestBundle1() (gas: 420293)
59-
DataFeedsCacheTest:test_latestBundle2() (gas: 798323)
60+
DataFeedsCacheTest:test_latestBundle2() (gas: 798301)
6061
DataFeedsCacheTest:test_onReportInvalidPermission() (gas: 675297)
6162
DataFeedsCacheTest:test_onReportRevertInvalidWorkflowName() (gas: 252356)
62-
DataFeedsCacheTest:test_onReportRevertInvalidWorkflowOwner() (gas: 252408)
63-
DataFeedsCacheTest:test_onReportStaleBundleReport() (gas: 815355)
64-
DataFeedsCacheTest:test_onReportStaleDecimalReport() (gas: 635704)
63+
DataFeedsCacheTest:test_onReportRevertInvalidWorkflowOwner() (gas: 252386)
64+
DataFeedsCacheTest:test_onReportStaleBundleReport() (gas: 815333)
65+
DataFeedsCacheTest:test_onReportStaleDecimalReport() (gas: 635682)
6566
DataFeedsCacheTest:test_onReportSuccess_BundleReportLength1() (gas: 402715)
66-
DataFeedsCacheTest:test_onReportSuccess_BundleReportLength2() (gas: 765928)
67-
DataFeedsCacheTest:test_onReportSuccess_DecimalReportLength1() (gas: 310107)
68-
DataFeedsCacheTest:test_onReportSuccess_DecimalReportLength2() (gas: 579872)
69-
DataFeedsCacheTest:test_onReportSuccess_EmptyBundleReport() (gas: 251217)
67+
DataFeedsCacheTest:test_onReportSuccess_BundleReportLength2() (gas: 765906)
68+
DataFeedsCacheTest:test_onReportSuccess_DecimalReportLength1() (gas: 310085)
69+
DataFeedsCacheTest:test_onReportSuccess_DecimalReportLength2() (gas: 579850)
70+
DataFeedsCacheTest:test_onReportSuccess_EmptyBundleReport() (gas: 251195)
7071
DataFeedsCacheTest:test_onReportSuccess_EmptyDecimalReport() (gas: 241310)
71-
DataFeedsCacheTest:test_onReportSuccess_EmptyReport() (gas: 221809)
72+
DataFeedsCacheTest:test_onReportSuccess_EmptyReport() (gas: 221787)
7273
DataFeedsCacheTest:test_recoverTokensERC20RevertNoBalance() (gas: 19972)
7374
DataFeedsCacheTest:test_recoverTokensNativeRevertNoBalance() (gas: 11489)
7475
DataFeedsCacheTest:test_recoverTokensRevertUnauthorized() (gas: 13353)
7576
DataFeedsCacheTest:test_removeDataIdMappingsForProxiesSuccess() (gas: 22198)
7677
DataFeedsCacheTest:test_removeDataIdMappingsForProxiesSuccess_and_call_decimals() (gas: 24859)
77-
DataFeedsCacheTest:test_removeFeedAdminSuccess() (gas: 26969)
78+
DataFeedsCacheTest:test_removeFeedAdminSuccess() (gas: 27005)
7879
DataFeedsCacheTest:test_removeFeedsRevertInvalidSender() (gas: 12166)
7980
DataFeedsCacheTest:test_removeFeedsRevertNotConfiguredFeed() (gas: 20111)
80-
DataFeedsCacheTest:test_removeFeedsSuccess() (gas: 193878)
81-
DataFeedsCacheTest:test_setBundleFeedConfigsRevertInvalidConfigsLengthDecimals() (gas: 32424)
82-
DataFeedsCacheTest:test_setBundleFeedConfigs_setAgainWithClear() (gas: 961706)
83-
DataFeedsCacheTest:test_setDecimalFeedConfigs_setAgainWithClear() (gas: 744404)
81+
DataFeedsCacheTest:test_removeFeedsSuccess() (gas: 193842)
82+
DataFeedsCacheTest:test_setBundleFeedConfigsRevertInvalidConfigsLengthDecimals() (gas: 32379)
83+
DataFeedsCacheTest:test_setBundleFeedConfigs_setAgainWithClear() (gas: 961653)
84+
DataFeedsCacheTest:test_setDecimalFeedConfigs_setAgainWithClear() (gas: 744352)
8485
DataFeedsCacheTest:test_setFeedAdminRevertZeroAddress() (gas: 11343)
85-
DataFeedsCacheTest:test_setFeedConfigsRevertEmptyConfig() (gas: 55665)
86-
DataFeedsCacheTest:test_setFeedConfigsRevertInvalidConfigsLengthDescriptions() (gas: 48308)
86+
DataFeedsCacheTest:test_setFeedConfigsRevertEmptyConfig() (gas: 55621)
87+
DataFeedsCacheTest:test_setFeedConfigsRevertInvalidConfigsLengthDescriptions() (gas: 48286)
8788
DataFeedsCacheTest:test_setFeedConfigsRevertInvalidWorkflowMetadata() (gas: 94046)
88-
DataFeedsCacheTest:test_setFeedConfigsRevertUnauthorizedFeedAdmin() (gas: 43091)
89-
DataFeedsCacheTest:test_setFeedConfigsRevertZeroDataId() (gas: 43243)
90-
DataFeedsCacheTest:test_setFeedConfigsSuccess() (gas: 220732)
89+
DataFeedsCacheTest:test_setFeedConfigsRevertUnauthorizedFeedAdmin() (gas: 43047)
90+
DataFeedsCacheTest:test_setFeedConfigsRevertZeroDataId() (gas: 43199)
91+
DataFeedsCacheTest:test_setFeedConfigsSuccess() (gas: 220710)
9192
DataFeedsCacheTest:test_supportsInterface() (gas: 8637)
9293
DataFeedsCacheTest:test_updateDataIdMappingsForProxiesRevertInvalidLengths() (gas: 12232)
93-
DataFeedsCacheTest:test_updateDataIdMappingsForProxiesRevertUnauthorizedOwner() (gas: 13207)
94+
DataFeedsCacheTest:test_updateDataIdMappingsForProxiesRevertUnauthorizedOwner() (gas: 13164)
9495
DataFeedsCacheTest:test_updateDataIdMappingsForProxiesSuccess() (gas: 21337)
9596
DataFeedsCacheTest:test_updateDataIdMappingsForProxies_and_RevertOnWrongCaller() (gas: 25810)
9697
DataFeedsCacheTest:test_updateDataIdMappingsForProxies_and_call_decimals() (gas: 55054)

contracts/src/v0.8/data-feeds/test/DataFeedsCache.t.sol

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1659,6 +1659,26 @@ contract DataFeedsCacheTest is BaseTest {
16591659
string memory description = s_dataFeedsCache.getDescription(dataIds[0]);
16601660
assertEq(description, s_descriptions[0]);
16611661
}
1662+
1663+
function test_feedCanBeWrittenToByMultipleWorkflows() public {
1664+
bytes16[] memory dataIds = new bytes16[](1);
1665+
dataIds[0] = bytes16(DATAID1);
1666+
string[] memory _descriptions = new string[](1);
1667+
_descriptions[0] = s_descriptions[0];
1668+
1669+
DataFeedsCache.WorkflowMetadata[] memory workflowMetadata = new DataFeedsCache.WorkflowMetadata[](2);
1670+
workflowMetadata[0] = s_workflowMetadata1;
1671+
workflowMetadata[1] = s_workflowMetadata2;
1672+
1673+
// Check that multiple Workflows can be permitted to write to a Data ID.
1674+
s_dataFeedsCache.setDecimalFeedConfigs(dataIds, _descriptions, workflowMetadata);
1675+
1676+
bool permitted1 = s_dataFeedsCache.checkFeedPermission(dataIds[0], s_workflowMetadata1);
1677+
assertEq(permitted1, true);
1678+
1679+
bool permitted2 = s_dataFeedsCache.checkFeedPermission(dataIds[0], s_workflowMetadata2);
1680+
assertEq(permitted2, true);
1681+
}
16621682
}
16631683

16641684
contract DataFeedsCacheHarness is DataFeedsCache {

0 commit comments

Comments
 (0)