From 9e4e31149e2db4bc83f3ea01b71e41391821e091 Mon Sep 17 00:00:00 2001 From: Jay Geng Date: Tue, 29 Aug 2023 12:48:55 -0400 Subject: [PATCH] Create and use `TestOverrideSorobanNetworkConfig` --- src/ledger/NetworkConfig.cpp | 55 +++++++++++++++++++++------------- src/ledger/NetworkConfig.h | 57 +++++++++++++++++++++++++++++++++++- 2 files changed, 91 insertions(+), 21 deletions(-) diff --git a/src/ledger/NetworkConfig.cpp b/src/ledger/NetworkConfig.cpp index a27f986ed3..18bb8ebd1b 100644 --- a/src/ledger/NetworkConfig.cpp +++ b/src/ledger/NetworkConfig.cpp @@ -37,10 +37,10 @@ initialMaxContractSizeEntry(Config const& cfg) entry.contractMaxSizeBytes() = InitialSorobanNetworkConfig::MAX_CONTRACT_SIZE; - if (cfg.TESTING_SOROBAN_HIGH_LIMIT_OVERRIDE) { - entry.contractMaxSizeBytes() *= 32; + entry.contractMaxSizeBytes() = + TestOverrideSorobanNetworkConfig::MAX_CONTRACT_SIZE; } return entry; @@ -55,7 +55,8 @@ initialMaxContractDataKeySizeEntry(Config const& cfg) InitialSorobanNetworkConfig::MAX_CONTRACT_DATA_KEY_SIZE_BYTES; if (cfg.TESTING_SOROBAN_HIGH_LIMIT_OVERRIDE) { - entry.contractDataKeySizeBytes() *= 10; + entry.contractDataKeySizeBytes() = + TestOverrideSorobanNetworkConfig::MAX_CONTRACT_DATA_KEY_SIZE_BYTES; } return entry; @@ -70,7 +71,8 @@ initialMaxContractDataEntrySizeEntry(Config const& cfg) InitialSorobanNetworkConfig::MAX_CONTRACT_DATA_ENTRY_SIZE_BYTES; if (cfg.TESTING_SOROBAN_HIGH_LIMIT_OVERRIDE) { - entry.contractDataEntrySizeBytes() *= 10; + entry.contractDataEntrySizeBytes() = TestOverrideSorobanNetworkConfig:: + MAX_CONTRACT_DATA_ENTRY_SIZE_BYTES; } return entry; @@ -92,9 +94,11 @@ initialContractComputeSettingsEntry(Config const& cfg) if (cfg.TESTING_SOROBAN_HIGH_LIMIT_OVERRIDE) { - e.ledgerMaxInstructions *= 50; - e.txMaxInstructions *= 50; - e.txMemoryLimit *= 10; + e.ledgerMaxInstructions = + TestOverrideSorobanNetworkConfig::LEDGER_MAX_INSTRUCTIONS; + e.txMaxInstructions = + TestOverrideSorobanNetworkConfig::TX_MAX_INSTRUCTIONS; + e.txMemoryLimit = TestOverrideSorobanNetworkConfig::MEMORY_LIMIT; } return entry; @@ -136,14 +140,21 @@ initialContractLedgerAccessSettingsEntry(Config const& cfg) if (cfg.TESTING_SOROBAN_HIGH_LIMIT_OVERRIDE) { - e.ledgerMaxReadLedgerEntries *= 10; - e.ledgerMaxReadBytes *= 10; - e.ledgerMaxWriteLedgerEntries *= 10; - e.ledgerMaxWriteBytes *= 10; - e.txMaxReadLedgerEntries *= 10; - e.txMaxReadBytes *= 10; - e.txMaxWriteLedgerEntries *= 10; - e.txMaxWriteBytes *= 10; + e.ledgerMaxReadLedgerEntries = + TestOverrideSorobanNetworkConfig::LEDGER_MAX_READ_LEDGER_ENTRIES; + e.ledgerMaxReadBytes = + TestOverrideSorobanNetworkConfig::LEDGER_MAX_READ_BYTES; + e.ledgerMaxWriteLedgerEntries = + TestOverrideSorobanNetworkConfig::LEDGER_MAX_WRITE_LEDGER_ENTRIES; + e.ledgerMaxWriteBytes = + TestOverrideSorobanNetworkConfig::LEDGER_MAX_WRITE_BYTES; + e.txMaxReadLedgerEntries = + TestOverrideSorobanNetworkConfig::TX_MAX_READ_LEDGER_ENTRIES; + e.txMaxReadBytes = TestOverrideSorobanNetworkConfig::TX_MAX_READ_BYTES; + e.txMaxWriteLedgerEntries = + TestOverrideSorobanNetworkConfig::TX_MAX_WRITE_LEDGER_ENTRIES; + e.txMaxWriteBytes = + TestOverrideSorobanNetworkConfig::TX_MAX_WRITE_BYTES; } return entry; @@ -173,7 +184,8 @@ initialContractEventsSettingsEntry(Config const& cfg) if (cfg.TESTING_SOROBAN_HIGH_LIMIT_OVERRIDE) { - e.txMaxContractEventsSizeBytes *= 20; + e.txMaxContractEventsSizeBytes = + TestOverrideSorobanNetworkConfig::TX_MAX_CONTRACT_EVENTS_SIZE_BYTES; } return entry; } @@ -192,8 +204,9 @@ initialContractBandwidthSettingsEntry(Config const& cfg) if (cfg.TESTING_SOROBAN_HIGH_LIMIT_OVERRIDE) { - e.ledgerMaxTxsSizeBytes *= 5; - e.txMaxSizeBytes *= 5; + e.ledgerMaxTxsSizeBytes = TestOverrideSorobanNetworkConfig:: + LEDGER_MAX_TRANSACTION_SIZES_BYTES; + e.txMaxSizeBytes = TestOverrideSorobanNetworkConfig::TX_MAX_SIZE_BYTES; } return entry; @@ -208,7 +221,8 @@ initialContractExecutionLanesSettingsEntry(Config const& cfg) if (cfg.TESTING_SOROBAN_HIGH_LIMIT_OVERRIDE) { - e.ledgerMaxTxCount *= 5; + e.ledgerMaxTxCount = + TestOverrideSorobanNetworkConfig::LEDGER_MAX_TX_COUNT; } return entry; @@ -360,7 +374,8 @@ initialStateExpirationSettings(Config const& cfg) if (cfg.TESTING_SOROBAN_HIGH_LIMIT_OVERRIDE) { - entry.stateExpirationSettings().maxEntryExpiration = 6307200; // 1 year + entry.stateExpirationSettings().maxEntryExpiration = + TestOverrideSorobanNetworkConfig::MAXIMUM_ENTRY_LIFETIME; } return entry; } diff --git a/src/ledger/NetworkConfig.h b/src/ledger/NetworkConfig.h index 2be0a69609..85bf200dec 100644 --- a/src/ledger/NetworkConfig.h +++ b/src/ledger/NetworkConfig.h @@ -110,7 +110,7 @@ struct InitialSorobanNetworkConfig static constexpr uint32_t TX_MAX_SIZE_BYTES = MinimumSorobanNetworkConfig::TX_MAX_SIZE_BYTES; static constexpr uint32_t LEDGER_MAX_TRANSACTION_SIZES_BYTES = - MinimumSorobanNetworkConfig::TX_MAX_SIZE_BYTES; + TX_MAX_SIZE_BYTES; static constexpr int64_t FEE_TRANSACTION_SIZE_1KB = 2'000; // Contract events settings @@ -143,6 +143,61 @@ struct InitialSorobanNetworkConfig static constexpr uint32_t LEDGER_MAX_TX_COUNT = 1; }; +// Defines the subset of the `InitialSorobanNetworkConfig` to be overridden for +// testing, enabled by `Config::TESTING_SOROBAN_HIGH_LIMIT_OVERRIDE`. +struct TestOverrideSorobanNetworkConfig +{ + // Contract size settings + static constexpr uint32_t MAX_CONTRACT_SIZE = + InitialSorobanNetworkConfig::MAX_CONTRACT_SIZE * 32; + + // Contract data settings + static constexpr uint32_t MAX_CONTRACT_DATA_KEY_SIZE_BYTES = + InitialSorobanNetworkConfig::MAX_CONTRACT_DATA_KEY_SIZE_BYTES * 10; + static constexpr uint32_t MAX_CONTRACT_DATA_ENTRY_SIZE_BYTES = + InitialSorobanNetworkConfig::MAX_CONTRACT_DATA_ENTRY_SIZE_BYTES * 10; + + // Compute settings + static constexpr int64_t TX_MAX_INSTRUCTIONS = + InitialSorobanNetworkConfig::TX_MAX_INSTRUCTIONS * 50; + static constexpr int64_t LEDGER_MAX_INSTRUCTIONS = TX_MAX_INSTRUCTIONS; + static constexpr uint32_t MEMORY_LIMIT = + InitialSorobanNetworkConfig::MEMORY_LIMIT * 10; + + // Ledger access settings + static constexpr uint32_t TX_MAX_READ_LEDGER_ENTRIES = + InitialSorobanNetworkConfig::TX_MAX_READ_LEDGER_ENTRIES * 10; + static constexpr uint32_t TX_MAX_READ_BYTES = + InitialSorobanNetworkConfig::TX_MAX_READ_BYTES * 10; + static constexpr uint32_t TX_MAX_WRITE_LEDGER_ENTRIES = + InitialSorobanNetworkConfig::TX_MAX_WRITE_LEDGER_ENTRIES * 10; + static constexpr uint32_t TX_MAX_WRITE_BYTES = + InitialSorobanNetworkConfig::TX_MAX_WRITE_BYTES * 10; + static constexpr uint32_t LEDGER_MAX_READ_LEDGER_ENTRIES = + TX_MAX_READ_LEDGER_ENTRIES; + static constexpr uint32_t LEDGER_MAX_READ_BYTES = TX_MAX_READ_BYTES; + static constexpr uint32_t LEDGER_MAX_WRITE_LEDGER_ENTRIES = + TX_MAX_WRITE_LEDGER_ENTRIES; + static constexpr uint32_t LEDGER_MAX_WRITE_BYTES = TX_MAX_WRITE_BYTES; + + // Bandwidth settings + static constexpr uint32_t TX_MAX_SIZE_BYTES = + InitialSorobanNetworkConfig::TX_MAX_SIZE_BYTES * 5; + static constexpr uint32_t LEDGER_MAX_TRANSACTION_SIZES_BYTES = + TX_MAX_SIZE_BYTES; + + // Contract events settings + static constexpr uint32_t TX_MAX_CONTRACT_EVENTS_SIZE_BYTES = + InitialSorobanNetworkConfig::TX_MAX_CONTRACT_EVENTS_SIZE_BYTES * 20; + + // State expiration settings + static constexpr uint32_t MAXIMUM_ENTRY_LIFETIME = 6307200; // 1 year + + // General execution settings + static constexpr uint32_t LEDGER_MAX_TX_COUNT = + InitialSorobanNetworkConfig::LEDGER_MAX_TX_COUNT * 5; +}; + // Wrapper for the contract-related network configuration. class SorobanNetworkConfig {