• Sam Johnson's avatar
    Add special tag to exclude runtime storage items from benchmarking (#12205) · c0e007b5
    Sam Johnson authored
    * initial setup
    
    * add WhitelistedStorageKeys trait
    
    * add (A, B) tuple implementation for whitelisted_storage_keys()
    
    * fix formatting
    
    * implement WhitelistedStorageKeys for all tuple combinations
    
    * impl_for_tuples up to 128 for WhitelistedStorageKeys
    
    * refactor to #[benchmarking(cached)]
    
    * tweak error message and mark BlockNumber as cached
    
    * add benchmarking(cached) to the other default types
    
    * add docs for benchmarking(cached)
    
    * properly parse storage type declaration
    
    * make storage_alias structs public so we can use them in this macro
    
    * use BTreeMap since TrackedStorageKey missing Ord outside of std
    
    * make WhitelistedStorageKeys accessible
    
    * basic detection of benchmarking(cached) 💥
    
    * proper parsing of #[benchmarking(cached)] from pallet parse macro
    
    * store presence of #[benchmarking(cached)] macro on StorageDef
    
    * will be used for later expansion
    
    * compiling blank impl for WhitelistedStorageKeys
    
    * move impl to expand_pallet_struct
    
    * use frame_support::sp_std::vec::Vec properly
    
    * successfully compiling with storage info loaded into a variable 💥
    
    * plausible implementation for whitelisted_storage_keys()
    
    * depends on the assumption that storage_info.encode() can be loaded
      into TrackedStorageKey::new(..)
    
    * use Pallet::whitelisted_storage_keys() instead of hard-coded list
    
    * AllPallets::whitelisted_storage_keys() properly working 💥
    
    * collect storage names
    
    * whitelisted_storage_keys() impl working 💥
    
    
    
    * clean up
    
    * fix compiler error
    
    * just one compiler error
    
    * fix doc compiler error
    
    * use better import path
    
    * fix comment
    
    * whoops
    
    * whoops again
    
    * fix macro import issue
    
    * cargo fmt
    
    * mark example as ignore
    
    * use keyword tokens instead of string parsing
    
    * fix keyword-based parsing of benchmarking(cached)
    
    * preliminary spec for check_whitelist()
    
    * add additional test for benchmarking whitelist
    
    * add TODO note
    
    * remove irrelevant line from example
    
    * use filter_map instead of filter and map
    
    * simplify syntax
    
    Co-authored-by: default avatarKeith Yeung <[email protected]>
    
    * clean up
    
    * fix test
    
    * fix tests
    
    * use keyword parsing instead of string parsing
    
    * use collect() instead of a for loop
    
    Co-authored-by: default avatarKian Paimani <[email protected]>
    
    * fix compiler error
    
    * clean up benchmarking(cached) marking code
    
    * use cloned()
    
    * refactor to not use panic! and remove need for pub types in storage_alias
    
    * remove unneeded use
    
    Co-authored-by: default avatarBastian Köcher <[email protected]>
    
    * remove unneeded visibility changes
    
    * don't manually hard code hash for treasury account as hex
    
    * proper Ord, PartialOrd, and Hash impls for TrackedStorageKey
    
    * now based just on key, and available in no-std
    
    * use BTreeSet instead of BTreeMap
    
    * fix comments
    
    * cargo fmt
    
    * switch to pallet::whitelist and re-do it basti's way :D
    
    * make PartialOrd for TrackedStorageKey consistent with Ord
    
    * more correct implementation of hash-related traits for TrackedStorageKey
    
    * fix integration test
    
    * update TODO
    
    * remove unused keyword
    
    * remove more unused keywords
    
    * use into_iter()
    
    Co-authored-by: default avatarKeith Yeung <[email protected]>
    
    * Update frame/support/procedural/src/pallet/parse/mod.rs
    
    Co-authored-by: default avatarBastian Köcher <[email protected]>
    
    * add docs for whitelisted
    
    * fix comment
    
    Co-authored-by: default avatarKeith Yeung <[email protected]>
    Co-authored-by: default avatarKian Paimani <[email protected]>
    Co-authored-by: default avatarBastian Köcher <[email protected]>
    c0e007b5