Skip to content

Commit

Permalink
feat(starknet_integration_tests): init the class manage storage with …
Browse files Browse the repository at this point in the history
…classes
  • Loading branch information
yair-starkware committed Feb 9, 2025
1 parent 888316e commit 1b7904a
Show file tree
Hide file tree
Showing 3 changed files with 44 additions and 7 deletions.
4 changes: 2 additions & 2 deletions crates/starknet_integration_tests/src/flow_test_setup.rs
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ use tempfile::TempDir;
use tracing::{debug, instrument};

use crate::integration_test_setup::NodeExecutionId;
use crate::state_reader::{StorageTestSetup, TempDirHandlePair};
use crate::state_reader::StorageTestSetup;
use crate::utils::{
create_chain_info,
create_consensus_manager_configs_from_network_configs,
Expand Down Expand Up @@ -124,7 +124,7 @@ pub struct FlowSequencerSetup {
// Handlers for the storage files, maintained so the files are not deleted.
pub batcher_storage_file_handle: Option<TempDir>,
pub state_sync_storage_file_handle: Option<TempDir>,
pub class_manager_storage_file_handles: TempDirHandlePair,
pub class_manager_storage_file_handles: Option<starknet_class_manager::test_utils::FileHandles>,

// Node configuration.
pub node_config: SequencerNodeConfig,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ use tempfile::{tempdir, TempDir};
use tracing::instrument;

use crate::config_utils::dump_config_file_changes;
use crate::state_reader::{StorageTestSetup, TempDirHandlePair};
use crate::state_reader::StorageTestSetup;
use crate::utils::{create_node_config, spawn_local_success_recorder};

#[derive(Debug, Copy, Clone)]
Expand Down Expand Up @@ -81,7 +81,7 @@ pub struct ExecutableSetup {
#[allow(dead_code)]
state_sync_storage_handle: Option<TempDir>,
#[allow(dead_code)]
class_manager_storage_handles: TempDirHandlePair,
class_manager_storage_handles: Option<starknet_class_manager::test_utils::FileHandles>,
}

// TODO(Tsabary/ Nadin): reduce number of args.
Expand Down
43 changes: 40 additions & 3 deletions crates/starknet_integration_tests/src/state_reader.rs
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ use blockifier::test_utils::contracts::FeatureContract;
use blockifier::test_utils::{CairoVersion, RunnableCairo1, BALANCE};
use cairo_lang_starknet_classes::casm_contract_class::CasmContractClass;
use indexmap::IndexMap;
use itertools::Itertools;
use itertools::{zip_eq, Itertools};
use mempool_test_utils::starknet_api_test_utils::{AccountTransactionGenerator, Contract};
use papyrus_storage::body::BodyStorageWriter;
use papyrus_storage::class::ClassStorageWriter;
Expand All @@ -28,6 +28,7 @@ use starknet_api::block::{
FeeType,
GasPricePerToken,
};
use starknet_api::contract_class::{ContractClass, SierraVersion};
use starknet_api::core::{ClassHash, ContractAddress, Nonce, SequencerContractAddress};
use starknet_api::deprecated_contract_class::ContractClass as DeprecatedContractClass;
use starknet_api::state::{SierraContractClass, StorageKey, ThinStateDiff};
Expand All @@ -39,6 +40,7 @@ use starknet_api::test_utils::{
};
use starknet_api::transaction::fields::Fee;
use starknet_api::{contract_address, felt};
use starknet_class_manager::class_storage::{ClassStorage, FsClassStorage};
use starknet_class_manager::config::FsClassStorageConfig;
use starknet_class_manager::test_utils::FsClassStorageBuilderForTesting;
use starknet_types_core::felt::Felt;
Expand Down Expand Up @@ -108,8 +110,13 @@ impl StorageTestSetup {
fs_class_storage_builder = fs_class_storage_builder
.with_existing_paths(class_hash_storage_path_prefix, persistent_root);
}
let (_class_manager_storage, class_manager_storage_config, class_manager_storage_handles) =
fs_class_storage_builder.build();
let (
mut class_manager_storage,
class_manager_storage_config,
class_manager_storage_handles,
) = fs_class_storage_builder.build();

initialize_class_manager_test_state(&mut class_manager_storage, classes);

Self {
batcher_storage_config,
Expand Down Expand Up @@ -170,6 +177,7 @@ impl PresetTestContracts {

struct TestClasses {
pub cairo0_contract_classes: Vec<(ClassHash, DeprecatedContractClass)>,
// TODO(yair): Merge the two vectors into a single one.
pub sierra_vec: Vec<(ClassHash, SierraContractClass)>,
pub cairo1_contract_classes: Vec<(ClassHash, CasmContractClass)>,
}
Expand All @@ -193,6 +201,35 @@ impl TestClasses {
}
}

fn initialize_class_manager_test_state(
class_manager_storage: &mut FsClassStorage,
classes: TestClasses,
) {
let TestClasses { cairo0_contract_classes, sierra_vec, cairo1_contract_classes } = classes;

for (class_hash, cairo_0_class) in cairo0_contract_classes {
class_manager_storage
.set_deprecated_class(class_hash, cairo_0_class.try_into().unwrap())
.unwrap();
}
for ((sierra_class_hash, sierra), (casm_class_hash, casm)) in
zip_eq(sierra_vec, cairo1_contract_classes)
{
assert_eq!(sierra_class_hash, casm_class_hash, "Class hashes must match");
let sierra_version = SierraVersion::extract_from_program(&sierra.sierra_program).unwrap();
let class = ContractClass::V1((casm, sierra_version));
let compiled_class_hash = class.compiled_class_hash();
class_manager_storage
.set_class(
sierra_class_hash,
sierra.try_into().unwrap(),
compiled_class_hash,
class.try_into().unwrap(),
)
.unwrap();
}
}

fn initialize_papyrus_test_state(
storage_writer: &mut StorageWriter,
chain_info: &ChainInfo,
Expand Down

0 comments on commit 1b7904a

Please sign in to comment.