Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

chore: share the test util path_in_resources #2052

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions crates/papyrus_load_test/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ rand.workspace = true
reqwest.workspace = true
serde = { workspace = true, features = ["derive"] }
serde_json = { workspace = true, features = ["arbitrary_precision"] }
starknet_api.workspace = true
tokio.workspace = true

[dev-dependencies]
Expand Down
2 changes: 1 addition & 1 deletion crates/papyrus_load_test/src/create_files.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,11 @@ use once_cell::sync::OnceCell;
use rand::Rng;
use reqwest::{Client, Url};
use serde_json::Value as jsonVal;
use starknet_api::test_utils::path_in_resources;

use crate::{
get_last_block_number,
get_random_block_number,
path_in_resources,
GET_BLOCK_TRANSACTION_COUNT_BY_HASH_WEIGHT,
GET_BLOCK_TRANSACTION_COUNT_BY_NUMBER_WEIGHT,
GET_BLOCK_WITH_FULL_TRANSACTIONS_BY_HASH_WEIGHT,
Expand Down
8 changes: 2 additions & 6 deletions crates/papyrus_load_test/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -13,14 +13,15 @@ mod precision_test;
pub mod scenarios;
pub mod transactions;

use std::fs;
use std::sync::LazyLock;
use std::{env, fs};

use goose::goose::{GooseUser, TransactionError};
use once_cell::sync::OnceCell;
use rand::Rng;
use serde::Deserialize;
use serde_json::{json, Value as jsonVal};
use starknet_api::test_utils::path_in_resources;

type PostResult = Result<jsonVal, Box<TransactionError>>;

Expand Down Expand Up @@ -71,11 +72,6 @@ pub fn get_random_block_number() -> u64 {
rng.gen_range(0..=last_block)
}

// Returns the path to the file_name inside the resources folder in payprus_loadtest module.
pub fn path_in_resources(file_name: &str) -> String {
env::var("CARGO_MANIFEST_DIR").unwrap() + "/resources/" + file_name
}

// TODO(dvir): update those number with real statics after the node will be in production.
// Weight for each request to the node.
const BLOCK_HASH_AND_NUMBER_WEIGHT: usize = 10;
Expand Down
3 changes: 2 additions & 1 deletion crates/papyrus_load_test/src/transactions.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,9 @@ use std::sync::Arc;
use goose::goose::{Transaction, TransactionFunction};
use rand::Rng;
use serde_json::{json, Value as jsonVal};
use starknet_api::test_utils::path_in_resources;

use crate::{create_request, jsonrpc_request, path_in_resources, post_jsonrpc_request};
use crate::{create_request, jsonrpc_request, post_jsonrpc_request};

create_get_transaction_function_with_requests_from_file! {
get_block_with_transaction_hashes_by_number, "block_number.txt";
Expand Down
8 changes: 2 additions & 6 deletions crates/papyrus_rpc/src/v0_8/execution_test.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,4 @@
use std::env;
use std::fs::read_to_string;
use std::path::Path;
use std::sync::Arc;

use assert_matches::assert_matches;
Expand Down Expand Up @@ -65,7 +63,7 @@ use starknet_api::data_availability::L1DataAvailabilityMode;
use starknet_api::deprecated_contract_class::ContractClass as SN_API_DeprecatedContractClass;
use starknet_api::hash::StarkHash;
use starknet_api::state::{StorageKey, ThinStateDiff as StarknetApiStateDiff};
use starknet_api::test_utils::read_json_file;
use starknet_api::test_utils::{path_in_resources, read_json_file};
use starknet_api::transaction::fields::{Calldata, Fee};
use starknet_api::transaction::{
L1HandlerTransaction,
Expand Down Expand Up @@ -1344,9 +1342,7 @@ fn get_decompressed_program() {
}

fn get_test_compressed_program() -> String {
let path = Path::new(&env::var("CARGO_MANIFEST_DIR").unwrap())
.join("resources")
.join("base64_compressed_program.txt");
let path = path_in_resources("base64_compressed_program.txt");
read_to_string(path).expect("Couldn't read compressed program")
}

Expand Down
19 changes: 8 additions & 11 deletions crates/papyrus_storage/src/serialization/serializers_test.rs
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ use starknet_api::block::BlockNumber;
use starknet_api::core::ContractAddress;
use starknet_api::hash::StarkHash;
use starknet_api::state::StorageKey;
use starknet_api::test_utils::read_json_file;
use starknet_api::test_utils::{path_in_resources, read_json_file};
use starknet_api::transaction::TransactionOffsetInBlock;

use crate::db::serialization::StorageSerde;
Expand Down Expand Up @@ -162,10 +162,7 @@ fn casm_serialization_regression() {
json_casm
.serialize_into(&mut serialized)
.expect("Failed to serialize casm file: {json_file_name}");
let bin_path = Path::new(&env::var("CARGO_MANIFEST_DIR").unwrap())
.join("resources")
.join("casm")
.join(bin_file_name);
let bin_path = path_in_resources(Path::new("casm").join(bin_file_name));
let mut bin_file = File::open(bin_path)
.expect("Failed to open bin file: {bin_file_name}\n{FIX_SUGGESTION}");
let mut regression_casm_bytes = Vec::new();
Expand All @@ -187,10 +184,10 @@ fn casm_deserialization_regression() {
fix_casm_regression_files()
}

let resources_path = Path::new(&env::var("CARGO_MANIFEST_DIR").unwrap()).join("resources");
for (json_file_name, bin_file_name) in CASM_SERIALIZATION_REGRESSION_FILES {
let mut regression_casm_file = File::open(resources_path.join("casm").join(bin_file_name))
.expect("Failed to open bin file: {bin_file_name}\n{FIX_SUGGESTION}");
let mut regression_casm_file =
File::open(path_in_resources(Path::new("casm").join(bin_file_name)))
.expect("Failed to open bin file: {bin_file_name}\n{FIX_SUGGESTION}");
let mut regression_casm_bytes = Vec::new();
regression_casm_file
.read_to_end(&mut regression_casm_bytes)
Expand All @@ -210,7 +207,6 @@ result.\n{FIX_SUGGESTION}"
}

fn fix_casm_regression_files() {
let resources_path = Path::new(&env::var("CARGO_MANIFEST_DIR").unwrap()).join("resources");
for (json_file_name, bin_file_name) in CASM_SERIALIZATION_REGRESSION_FILES {
let json_path = format!("casm/{}", json_file_name);
let json_casm: CasmContractClass =
Expand All @@ -219,8 +215,9 @@ fn fix_casm_regression_files() {
let mut serialized: Vec<u8> = Vec::new();
json_casm.serialize_into(&mut serialized).unwrap();
let casm_bytes = serialized.into_boxed_slice();
let mut hardcoded_file = File::create(resources_path.join("casm").join(bin_file_name))
.expect("Failed to create bin file {bin_file_name}\n");
let mut hardcoded_file =
File::create(path_in_resources(Path::new("casm").join(bin_file_name)))
.expect("Failed to create bin file {bin_file_name}\n");
hardcoded_file.write_all(&casm_bytes).unwrap();
}
}
17 changes: 13 additions & 4 deletions crates/starknet_api/src/test_utils.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ use std::collections::HashMap;
use std::env;
use std::fs::read_to_string;
use std::path::{Path, PathBuf};
use std::sync::LazyLock;

use starknet_types_core::felt::Felt;

Expand All @@ -12,16 +13,24 @@ pub mod deploy_account;
pub mod invoke;
pub mod l1_handler;

static PATH_TO_CARGO_MANIFEST_DIR: LazyLock<PathBuf> =
LazyLock::new(|| Path::new(&env::var("CARGO_MANIFEST_DIR").unwrap()).into());

/// Returns the absolute path from the project root.
pub fn get_absolute_path<P: AsRef<Path>>(relative_path: P) -> PathBuf {
Path::new(&env::var("CARGO_MANIFEST_DIR").unwrap()).join("../..").join(relative_path)
PATH_TO_CARGO_MANIFEST_DIR.join("../..").join(relative_path)
}

/// Returns the path to a file in the resources directory. This assumes the current working
/// directory has a `resources` folder. The value for file_path should be the path to the required
/// file in the folder "resources".
pub fn path_in_resources<P: AsRef<Path>>(file_path: P) -> PathBuf {
PATH_TO_CARGO_MANIFEST_DIR.join("resources").join(file_path)
}

/// Reads from the directory containing the manifest at run time, same as current working directory.
pub fn read_json_file<P: AsRef<Path>>(path_in_resource_dir: P) -> serde_json::Value {
let path = Path::new(&env::var("CARGO_MANIFEST_DIR").unwrap())
.join("resources")
.join(path_in_resource_dir);
let path = path_in_resources(path_in_resource_dir);
let json_str = read_to_string(path.to_str().unwrap())
.unwrap_or_else(|_| panic!("Failed to read file at path: {}", path.display()));
serde_json::from_str(&json_str).unwrap()
Expand Down
8 changes: 3 additions & 5 deletions crates/starknet_client/src/test_utils/read_resource.rs
Original file line number Diff line number Diff line change
@@ -1,11 +1,9 @@
use std::env;
use std::fs::read_to_string;
use std::path::Path;
use std::string::String;

use starknet_api::test_utils::path_in_resources;

pub fn read_resource_file(path_in_resource_dir: &str) -> String {
let path = Path::new(&env::var("CARGO_MANIFEST_DIR").unwrap())
.join("resources")
.join(path_in_resource_dir);
let path = path_in_resources(path_in_resource_dir);
return read_to_string(path.to_str().unwrap()).unwrap();
}
Loading