Skip to content

Commit

Permalink
Additional footprint tests
Browse files Browse the repository at this point in the history
  • Loading branch information
sisuresh committed Jul 28, 2023
1 parent 3900289 commit db589fb
Show file tree
Hide file tree
Showing 2 changed files with 135 additions and 16 deletions.
56 changes: 40 additions & 16 deletions src/transactions/test/InvokeHostFunctionTests.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -908,22 +908,6 @@ TEST_CASE("contract storage", "[tx][soroban]")
put("key1", 0, ContractDataDurability::PERSISTENT);
put("key2", 21, ContractDataDurability::PERSISTENT);

// Failure: contract data isn't in footprint
putWithFootprint("key1", 88, contractKeys, {}, 1000, false,
ContractDataDurability::PERSISTENT);
delWithFootprint("key1", contractKeys, {}, false,
ContractDataDurability::PERSISTENT);

// Failure: contract data is read only
auto readOnlyFootprint = contractKeys;
readOnlyFootprint.push_back(
contractDataKey(contractID, makeSymbolSCVal("key2"),
ContractDataDurability::PERSISTENT, DATA_ENTRY));
putWithFootprint("key2", 888888, readOnlyFootprint, {}, 1000, false,
ContractDataDurability::PERSISTENT);
delWithFootprint("key2", readOnlyFootprint, {}, false,
ContractDataDurability::PERSISTENT);

// Failure: insufficient write bytes
putWithFootprint(
"key2", 88888, contractKeys,
Expand Down Expand Up @@ -1199,6 +1183,46 @@ TEST_CASE("contract storage", "[tx][soroban]")
ContractDataDurability::PERSISTENT) ==
maxExpiration);
}
SECTION("footprint tests")
{
put("key1", 0, ContractDataDurability::PERSISTENT);
put("key2", 21, ContractDataDurability::PERSISTENT);
SECTION("unused readWrite key")
{
auto acc = root.create(
"acc", app->getLedgerManager().getLastMinBalance(1));

REQUIRE(doesAccountExist(*app, acc));

putWithFootprint(
"key1", 0, contractKeys,
{contractDataKey(contractID, makeSymbolSCVal("key1"),
ContractDataDurability::PERSISTENT,
DATA_ENTRY),
accountKey(acc)},
1000, true, ContractDataDurability::PERSISTENT);
// make sure account still exists and hasn't change
REQUIRE(doesAccountExist(*app, acc));
}
SECTION("incorrect footprint")
{
// Failure: contract data isn't in footprint
putWithFootprint("key1", 88, contractKeys, {}, 1000, false,
ContractDataDurability::PERSISTENT);
delWithFootprint("key1", contractKeys, {}, false,
ContractDataDurability::PERSISTENT);

// Failure: contract data is read only
auto readOnlyFootprint = contractKeys;
readOnlyFootprint.push_back(contractDataKey(
contractID, makeSymbolSCVal("key2"),
ContractDataDurability::PERSISTENT, DATA_ENTRY));
putWithFootprint("key2", 888888, readOnlyFootprint, {}, 1000, false,
ContractDataDurability::PERSISTENT);
delWithFootprint("key2", readOnlyFootprint, {}, false,
ContractDataDurability::PERSISTENT);
}
}
}

TEST_CASE("failed invocation with diagnostics", "[tx][soroban]")
Expand Down
95 changes: 95 additions & 0 deletions test-tx-meta-baseline-next/InvokeHostFunctionTests.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,95 @@

{
"!cfg protocol version" : 20,
"!rng seed" : 12345,
"!test all versions" : true,
"!versions to test" :
[
0,
1,
2,
3,
4,
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
16,
17,
18,
19,
20
],
"basic contract invocation|invalid footprint keys|readOnly" :
[
"3l7t9opHMbU=",
"3l7t9opHMbU=",
"3l7t9opHMbU=",
"3l7t9opHMbU=",
"3l7t9opHMbU=",
"3l7t9opHMbU=",
"3l7t9opHMbU=",
"3l7t9opHMbU=",
"3l7t9opHMbU=",
"3l7t9opHMbU=",
"3l7t9opHMbU=",
"3l7t9opHMbU=",
"3l7t9opHMbU=",
"3l7t9opHMbU=",
"3l7t9opHMbU=",
"3l7t9opHMbU=",
"3l7t9opHMbU=",
"3l7t9opHMbU=",
"3l7t9opHMbU=",
"3l7t9opHMbU=",
"3l7t9opHMbU=",
"3l7t9opHMbU=",
"3l7t9opHMbU=",
"3l7t9opHMbU=",
"3l7t9opHMbU=",
"3l7t9opHMbU=",
"3l7t9opHMbU=",
"3l7t9opHMbU=",
"3l7t9opHMbU="
],
"basic contract invocation|invalid footprint keys|readWrite" :
[
"3l7t9opHMbU=",
"3l7t9opHMbU=",
"3l7t9opHMbU=",
"3l7t9opHMbU=",
"3l7t9opHMbU=",
"3l7t9opHMbU=",
"3l7t9opHMbU=",
"3l7t9opHMbU=",
"3l7t9opHMbU=",
"3l7t9opHMbU=",
"3l7t9opHMbU=",
"3l7t9opHMbU=",
"3l7t9opHMbU=",
"3l7t9opHMbU=",
"3l7t9opHMbU=",
"3l7t9opHMbU=",
"3l7t9opHMbU=",
"3l7t9opHMbU=",
"3l7t9opHMbU=",
"3l7t9opHMbU=",
"3l7t9opHMbU=",
"3l7t9opHMbU=",
"3l7t9opHMbU=",
"3l7t9opHMbU=",
"3l7t9opHMbU=",
"3l7t9opHMbU=",
"3l7t9opHMbU=",
"3l7t9opHMbU=",
"3l7t9opHMbU="
],
"contract storage|footprint tests|unused readWrite key" : [ "PJ5bN6hAeFA=" ]
}

0 comments on commit db589fb

Please sign in to comment.