-
Notifications
You must be signed in to change notification settings - Fork 94
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
test(solana): migrate to local/offline containerized node #2187
Conversation
Add Dockerfile to run local solana validator for tests
unignore test test_solana_and_spl_balance_enable_spl_v2
Signed-off-by: Mariusz Jasuwienas <[email protected]>
…cal node Signed-off-by: Mariusz Jasuwienas <[email protected]>
This reverts commit 4277284
…cal node. Non-dockerised tests (out of solana - scope) excluded. Signed-off-by: Mariusz Jasuwienas <[email protected]>
fn find_container_id_by_port(port: u16) -> Option<String> { | ||
let output = Command::new("docker") | ||
.args(["ps", "--filter", &format!("publish={}", port), "--format", "{{.ID}}"]) | ||
.output() | ||
.expect("failed to execute docker ps"); | ||
|
||
let container_id = str::from_utf8(&output.stdout).ok()?.trim().to_string(); | ||
if container_id.is_empty() { | ||
None | ||
} else { | ||
Some(container_id) | ||
} | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Could you clarify why is this needed? Once the container is started we have DockerNode
type that contains the container informations.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It technically is not. We could pass the DockerNode variable here.
#[test] | ||
#[cfg(not(target_arch = "wasm32"))] | ||
fn solana_keypair_from_secp_dockerized() { solana_keypair_from_secp(); } | ||
|
||
#[test] | ||
#[cfg(not(target_arch = "wasm32"))] | ||
fn solana_transaction_simulations_dockerized() { solana_transaction_simulations(); } | ||
|
||
#[test] | ||
#[cfg(not(target_arch = "wasm32"))] | ||
fn solana_transaction_zero_balance_dockerized() { solana_transaction_zero_balance(); } | ||
|
||
#[test] | ||
#[cfg(not(target_arch = "wasm32"))] | ||
fn solana_transaction_simulations_not_enough_for_fees_dockerized() { | ||
solana_transaction_simulations_not_enough_for_fees(); | ||
} | ||
|
||
#[test] | ||
#[cfg(not(target_arch = "wasm32"))] | ||
fn solana_transaction_simulations_max_dockerized() { solana_transaction_simulations_not_enough_for_fees(); } | ||
|
||
#[test] | ||
#[cfg(not(target_arch = "wasm32"))] | ||
fn solana_test_transactions_dockerized() { solana_test_transactions(); } | ||
|
||
// This test is just a unit test for brainstorming around tx_history for base_coin. | ||
#[test] | ||
#[ignore] | ||
#[cfg(not(target_arch = "wasm32"))] | ||
fn solana_test_tx_history_dockerized() { solana_test_transactions(); } | ||
|
||
#[test] | ||
fn solana_coin_send_and_refund_maker_payment_dockerized() { solana_coin_send_and_refund_maker_payment(); } | ||
|
||
#[test] | ||
fn solana_coin_send_and_spend_maker_payment_dockerized() { solana_coin_send_and_spend_maker_payment(); } |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is it possible to move those tests here instead of wrapping them with this functions?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hello, @onur-ozkan I've moved the tests here, as you asked.
@@ -113,7 +115,7 @@ pub const GETH_DOCKER_IMAGE_WITH_TAG: &str = "docker.io/ethereum/client-go:stabl | |||
pub const NUCLEUS_IMAGE: &str = "docker.io/komodoofficial/nucleusd"; | |||
pub const ATOM_IMAGE: &str = "docker.io/komodoofficial/gaiad"; | |||
pub const IBC_RELAYER_IMAGE: &str = "docker.io/komodoofficial/ibc-relayer"; | |||
|
|||
pub const SOLANA_CLUSTER_DOCKER_IMAGE: &str = "docker.io/0xbdj/solana-node-test"; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We probably need to push this image under https://hub.docker.com/u/komodoofficial org.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes, that is a good idea. However, I'll complete this PR first to ensure that the expected final version is pushed there.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thank you for your work!
I have one comment for now
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
may be move solana_tests and solana_common_tests files to /mm2_main/tests/mm2_tests
?
It looks like there is too much test code in mm2src space
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It's similar to this comment #2187 (comment)
They should be moved to mm2_main/tests/docker_tests/solana_tests.rs
, spl_tests
should also be moved to a new spl_tests.rs
file in docker tests.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ok, can you check it now, please @shamardy ?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for the PR, we are moving in the right direction! Only one note from me for now as @onur-ozkan and @laruh covered my other note about moving tests.
.docker/solana-accounts/mint.sh
Outdated
spl-token mint "$USDC_TOKEN" 100000 | ||
spl-token mint "$ADEX_TOKEN" 100000 | ||
# Iterate over each account file in the directory | ||
for ACCOUNT_FILE in "$ACCOUNTS_DIR"/*.json; do |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I am fine with having multiple accounts for users created and funded while starting the docker node, but this will cause problems for you in the future while implementing HD wallet since there are multiple addresses/accounts per HD wallet and you will need to update the docker image for those tests. A better pattern is to have one distributor account and this sends coins/tokens to addresses at the start of each test similar to how it's done for ethereum and other coins that use dockerized nodes
pub fn fill_eth(to_addr: Address, amount: U256) { |
fn fill_erc20(to_addr: Address, amount: U256) { |
It's up to you if you want to handle this now or later, but handling it here is the right choice so we don't change the docker image again ref. #2187 (comment)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@shamardy, all the tests are now working correctly with SPL tokens minted to a single account (I've updated the mint.sh file as you suggested). I believe we can introduce the "filling" methods later, as they are primarily needed to cover the currently implemented test case scenarios.
…lated namespace Signed-off-by: Mariusz Jasuwienas <[email protected]>
…lated namespace Signed-off-by: Mariusz Jasuwienas <[email protected]>
Signed-off-by: Mariusz Jasuwienas <[email protected]>
Signed-off-by: Mariusz Jasuwienas <[email protected]>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thank you for the fixes, next iteration
let invalid_tx_details = block_on( | ||
sol_coin | ||
.withdraw(WithdrawRequest::new( | ||
"SOL".to_string(), |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It worth creating const SOL: &str = "SOL";
if there are string repetitions
#[test] | ||
#[cfg(not(target_arch = "wasm32"))] | ||
fn solana_transaction_simulations_not_enough_for_fees_dockerized() { | ||
let passphrase = "non existent passphrase".to_string(); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
same for "fake passphrase" / "non existent passphrase" strings, you can create one const
and reuse it
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@laruh I've refactored the code to move all the repeated strings into constants. However, I'm concerned that this might have gone a bit too far (especially in test case scenarios). I feel it may have impacted readability in some areas. Let me know if you think we should adjust this or leave it as it is right now.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm concerned that this might have gone a bit too far
Yeah, some consts are used just once
It was basically enough to add consts for strings mentioned in review comments
In spl_tests.rs you leave one const USDC: &str = "USDC";
In solana_common_tests consts are fine, just it would be better to rename PASSPHRASE
to SOL_PASSPHRASE
to note that its for solana, same for ADDITIONAL_PASSPHRASE
-> SOL_ADDITIONAL_PASSPHRASE
komodo-defi-framework/mm2src/mm2_main/tests/docker_tests/solana_common_tests.rs
Lines 19 to 20 in 00ecbb6
pub const PASSPHRASE: &str = "federal stay trigger hour exist success game vapor become comfort action phone bright ill target wild nasty crumble dune close rare fabric hen iron"; | |
pub const ADDITIONAL_PASSPHRASE: &str = |
@mj-blockydevs please when you answer in the review that something was fixed, provide commit link/links to this fix.
Like in this example #2169 (comment) and below.
This way makes review process a lot easier for all sides, especially when we have notes from different reviewers and various fix commits.
#[test] | ||
#[cfg(not(target_arch = "wasm32"))] | ||
fn solana_test_transactions_dockerized() { | ||
let passphrase = "federal stay trigger hour exist success game vapor become comfort action phone bright ill target wild nasty crumble dune close rare fabric hen iron".to_string(); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
please also provide it as const
fn solana_coin_send_and_refund_maker_payment_dockerized() { | ||
let passphrase = "federal stay trigger hour exist success game vapor become comfort action phone bright ill target wild nasty crumble dune close rare fabric hen iron".to_string(); | ||
let (_, coin) = solana_coin_for_test(passphrase, SolanaNet::Local); | ||
let solana_program_id = "GCJUXKH4VeKzEtr9YgwaNWC3dJonFgsM3yMiBa64CZ8m"; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
"GCJUXKH4VeKzEtr9YgwaNWC3dJonFgsM3yMiBa64CZ8m" also can be used as const
mm2src/coins/solana.rs
Outdated
pub struct SolanaCoinImpl { | ||
ticker: String, | ||
key_pair: SolKeypair, | ||
pub key_pair: SolKeypair, | ||
client: RpcClient, | ||
decimals: u8, | ||
my_address: String, | ||
pub my_address: String, | ||
spl_tokens_infos: Arc<Mutex<HashMap<String, SplTokenInfo>>>, | ||
/// This spawner is used to spawn coin's related futures that should be aborted on coin deactivation | ||
/// and on [`MmArc::stop`]. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@laruh, yes, I was able to access the data using the existing methods, so there's no need to make them public.
pub use solana_client; | ||
pub use solana_sdk; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@laruh, I tried to access them from the Docker-related test crate, so I needed to expose them.
By the way, what kind of Clippy response is that? I can't seem to reproduce it. Could you provide some guidance on how to achieve that?
/komodo-defi-framework/: cargo clippy --all-targets --all-features -- -D warnings
warning: /komodo-defi-framework/mm2src/mm2_bin_lib/Cargo.toml: file `/komodo-defi-framework/mm2src/mm2_bin_lib/src/mm2_bin.rs` found to be present in multiple build targets:
* `bin` target `mm2`
* `bin` target `kdf`
Compiling common v0.1.0 (/komodo-defi-framework/mm2src/common)
Compiling ser_error v0.1.0 (/komodo-defi-framework/mm2src/derives/ser_error)
Checking shared_ref_counter v0.1.0 (/komodo-defi-framework/mm2src/common/shared_ref_counter)
Checking primitives v0.1.0 (/komodo-defi-framework/mm2src/mm2_bitcoin/primitives)
Checking test_helpers v0.1.0 (/komodo-defi-framework/mm2src/mm2_bitcoin/test_helpers)
Compiling serialization_derive v0.1.0 (/komodo-defi-framework/mm2src/mm2_bitcoin/serialization_derive)
Compiling trezor v0.1.1 (/komodo-defi-framework/mm2src/trezor)
Compiling enum_derives v0.1.0 (/komodo-defi-framework/mm2src/derives/enum_derives)
Checking mm2_number v0.1.0 (/komodo-defi-framework/mm2src/mm2_number)
Checking serialization v0.1.0 (/komodo-defi-framework/mm2src/mm2_bitcoin/serialization)
Compiling ser_error_derive v0.1.0 (/komodo-defi-framework/mm2src/derives/ser_error_derive)
Compiling coins v0.1.0 (/komodo-defi-framework/mm2src/coins)
Checking bitcrypto v0.1.0 (/komodo-defi-framework/mm2src/mm2_bitcoin/crypto)
Checking mm2_state_machine v0.1.0 (/komodo-defi-framework/mm2src/mm2_state_machine)
Checking keys v0.1.0 (/komodo-defi-framework/mm2src/mm2_bitcoin/keys)
Compiling mm2_main v0.1.0 (/komodo-defi-framework/mm2src/mm2_main)
Compiling mm2_bin_lib v2.1.0-beta (/komodo-defi-framework/mm2src/mm2_bin_lib)
Checking chain v0.1.0 (/komodo-defi-framework/mm2src/mm2_bitcoin/chain)
Checking script v0.1.0 (/komodo-defi-framework/mm2src/mm2_bitcoin/script)
Checking spv_validation v0.1.0 (/komodo-defi-framework/mm2src/mm2_bitcoin/spv_validation)
Checking rpc v0.1.0 (/komodo-defi-framework/mm2src/mm2_bitcoin/rpc)
Checking mm2_metamask v0.1.0 (/komodo-defi-framework/mm2src/mm2_metamask)
Checking mm2_db v0.1.0 (/komodo-defi-framework/mm2src/mm2_db)
Checking mm2_err_handle v0.1.0 (/komodo-defi-framework/mm2src/mm2_err_handle)
Checking mm2_event_stream v0.1.0 (/komodo-defi-framework/mm2src/mm2_event_stream)
Checking db_common v0.1.0 (/komodo-defi-framework/mm2src/db_common)
Checking mm2_p2p v0.1.0 (/komodo-defi-framework/mm2src/mm2_p2p)
Checking mm2_metrics v0.1.0 (/komodo-defi-framework/mm2src/mm2_metrics)
Checking hw_common v0.1.0 (/komodo-defi-framework/mm2src/hw_common)
Checking rpc_task v0.1.0 (/komodo-defi-framework/mm2src/rpc_task)
Checking mm2_io v0.1.0 (/komodo-defi-framework/mm2src/mm2_io)
Checking mm2_rpc v0.1.0 (/komodo-defi-framework/mm2src/mm2_rpc)
Checking mm2_eth v0.1.0 (/komodo-defi-framework/mm2src/mm2_eth)
Checking mm2_core v0.1.0 (/komodo-defi-framework/mm2src/mm2_core)
Checking mm2_gui_storage v0.1.0 (/komodo-defi-framework/mm2src/mm2_gui_storage)
Checking crypto v1.0.0 (/komodo-defi-framework/mm2src/crypto)
Checking utxo_signer v0.1.0 (/komodo-defi-framework/mm2src/coins/utxo_signer)
Checking mm2_net v0.1.0 (/komodo-defi-framework/mm2src/mm2_net)
Checking mm2_git v0.1.0 (/komodo-defi-framework/mm2src/mm2_git)
Checking mm2_test_helpers v0.1.0 (/komodo-defi-framework/mm2src/mm2_test_helpers)
Checking coins_activation v0.1.0 (/komodo-defi-framework/mm2src/coins_activation)
Finished dev [unoptimized + debuginfo] target(s) in 1m 01s
warning: the following packages contain code that will be rejected by a future version of Rust: fs_extra v1.2.0, nom v6.1.2
note: to see what the problems were, use the option `--future-incompat-report`, or run `cargo report future-incompatibilities --id 3`
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
By the way, what kind of Clippy response is that? I can't seem to reproduce it. Could you provide some guidance on how to achieve that?
@mj-blockydevs I was using cargo clippy --all-features -- -D warnings
command.
It's not the first time that cargo clippy --all-features -- -D warnings
shows a warning that wasn't caught by cargo clippy --all-targets --all-features -- -D warnings
.
hmm, clippy also doesn't detect unused function for me now.
~/RustroverProjects/komodo-defi-framework git:[solana-docker-tests-improvements-local-review]
cargo clippy --all-features -- -D warnings
warning: /Users/sharon/RustroverProjects/komodo-defi-framework/mm2src/mm2_bin_lib/Cargo.toml: file `/Users/sharon/RustroverProjects/komodo-defi-framework/mm2src/mm2_bin_lib/src/mm2_bin.rs` found to be present in multiple build targets:
* `bin` target `mm2`
* `bin` target `kdf`
Compiling mm2_bin_lib v2.1.0-beta (/Users/sharon/RustroverProjects/komodo-defi-framework/mm2src/mm2_bin_lib)
Finished dev [unoptimized + debuginfo] target(s) in 2.03s
warning: the following packages contain code that will be rejected by a future version of Rust: fs_extra v1.2.0, nom v6.1.2
note: to see what the problems were, use the option `--future-incompat-report`, or run `cargo report future-incompatibilities --id 622`
Well, you can search the project to see that it's not used
Sometimes it happens with clippy so I re check usage manually by searching in project files and checking usage in ide
I recommend to add dead code annotation
Signed-off-by: Mariusz Jasuwienas <[email protected]>
Signed-off-by: Mariusz Jasuwienas <[email protected]>
Signed-off-by: Mariusz Jasuwienas <[email protected]>
Signed-off-by: Mariusz Jasuwienas <[email protected]>
Signed-off-by: Mariusz Jasuwienas <[email protected]>
* install libudev-dev build dep for docker-tests
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Next review iteration! I stopped review midway as some tests are removed and some are not copied right, will continue once this is done in a right way!
.docker/solana-accounts/user1.json
Outdated
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I guess this user is not needed anymore
.docker/solana-accounts/user2.json
Outdated
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Same for this user
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
And this file also
@@ -75,18 +78,20 @@ pub fn docker_tests_runner(tests: &[&TestDescAndFn]) { | |||
let qtum_node = qtum_docker_node(&docker, 9000); | |||
let for_slp_node = utxo_asset_docker_node(&docker, "FORSLP", 10000); | |||
let geth_node = geth_docker_node(&docker, "ETH", 8545); | |||
let sol_node = sol_asset_docker_node(&docker, "SOLCLUSTER"); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This should be the ticker SOL
not SOLCLUSTER
pub fn _solana_supplied_node() -> MarketMakerIt { | ||
let adex_token_address = env::var("ADEX_TOKEN_ADDRESS").expect("ADEX_TOKEN_ADDRESS not set"); | ||
println!("adex_token_address: {}", &adex_token_address); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We don't use println!
, we use log!
match error.into_inner() { | ||
WithdrawError::NotSufficientBalance { | ||
coin: _, | ||
available, | ||
required, | ||
} => { | ||
assert_eq!(available, 0.into()); | ||
assert_eq!(required, sol_required); | ||
}, | ||
e => panic!("Unexpected err {:?}", e), | ||
}; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
why change this
let balance = block_on(sol_coin.my_balance().compat()).unwrap().spendable;
let (_, fees) = block_on(sol_coin.estimate_withdraw_fees()).unwrap();
let sol_required = lamports_to_sol(fees);
assert_eq!(valid_tx_details.my_balance_change, sol_required.clone().neg());
assert_eq!(valid_tx_details.total_amount, balance);
assert_eq!(valid_tx_details.spent_by_me, balance);
assert_eq!(valid_tx_details.received_by_me, &balance - &sol_required);
log!("{:?}", valid_tx_details);
From the original test? you just copied and pasted the previous test solana_transaction_simulations_not_enough_for_fees
let (_, sol_coin) = solana_coin_for_test(PASSPHRASE.to_owned(), SolanaNet::Local); | ||
let valid_tx_details = block_on( | ||
sol_coin | ||
.withdraw(WithdrawRequest::new( | ||
SOL.to_string(), | ||
None, | ||
sol_coin.my_address().unwrap(), | ||
BigDecimal::try_from(0.0001).unwrap(), | ||
false, | ||
None, | ||
None, | ||
)) | ||
.compat(), | ||
) | ||
.unwrap(); | ||
log!("{:?}", valid_tx_details); | ||
|
||
let tx_str = hex::encode(&*valid_tx_details.tx.tx_hex().unwrap().0); | ||
let res = block_on(sol_coin.send_raw_tx(&tx_str).compat()).unwrap(); | ||
|
||
let res2 = block_on( | ||
sol_coin | ||
.send_raw_tx_bytes(&valid_tx_details.tx.tx_hex().unwrap().0) | ||
.compat(), | ||
) | ||
.unwrap(); | ||
assert_eq!(res, res2); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Same for this
let res = sol_coin
.client
.get_signatures_for_address(&sol_coin.key_pair.pubkey())
.unwrap();
let mut history = Vec::new();
for cur in res.iter() {
let signature = Signature::from_str(cur.signature.clone().as_str()).unwrap();
let res = sol_coin
.client
.get_transaction(&signature, UiTransactionEncoding::JsonParsed)
.unwrap();
log!("{}", serde_json::to_string(&res).unwrap());
let parsed = serde_json::to_value(&res).unwrap();
let tx_infos: SolanaConfirmedTransaction = serde_json::from_value(parsed).unwrap();
let mut txs = tx_infos.extract_solana_transactions(&sol_coin).unwrap();
history.append(&mut txs);
}
log!("{}", serde_json::to_string(&history).unwrap());
You just copied solana_test_transactions
test.
#[test] | ||
#[cfg(not(target_arch = "wasm32"))] | ||
fn solana_my_balance() { | ||
let passphrase = "federal stay trigger hour exist success game vapor become comfort action phone bright ill target wild nasty crumble dune close rare fabric hen iron".to_string(); | ||
let (_, sol_coin) = solana_coin_for_test(passphrase, SolanaNet::Testnet); | ||
let res = block_on(sol_coin.my_balance().compat()).unwrap(); | ||
assert_ne!(res.spendable, BigDecimal::from(0)); | ||
} | ||
|
||
#[test] | ||
#[cfg(not(target_arch = "wasm32"))] | ||
fn solana_block_height() { | ||
let passphrase = "federal stay trigger hour exist success game vapor become comfort action phone bright ill target wild nasty crumble dune close rare fabric hen iron".to_string(); | ||
let (_, sol_coin) = solana_coin_for_test(passphrase, SolanaNet::Testnet); | ||
let res = block_on(sol_coin.current_block().compat()).unwrap(); | ||
log!("block is : {}", res); | ||
assert!(res > 0); | ||
} | ||
|
||
#[test] | ||
#[cfg(not(target_arch = "wasm32"))] | ||
fn solana_validate_address() { | ||
let passphrase = "federal stay trigger hour exist success game vapor become comfort action phone bright ill target wild nasty crumble dune close rare fabric hen iron".to_string(); | ||
let (_, sol_coin) = solana_coin_for_test(passphrase, SolanaNet::Testnet); | ||
|
||
// invalid len | ||
let res = sol_coin.validate_address("invalidaddressobviously"); | ||
assert!(!res.is_valid); | ||
let res = sol_coin.validate_address("GMtMFbuVgjDnzsBd3LLBfM4X8RyYcDGCM92tPq2PG6B2"); | ||
assert!(res.is_valid); | ||
|
||
// Typo | ||
let res = sol_coin.validate_address("Fr8fraJXAe1cFU81mF7NhHTrUzXjZAJkQE1gUQ11riH"); | ||
assert!(!res.is_valid); | ||
|
||
// invalid len | ||
let res = sol_coin.validate_address("r8fraJXAe1cFU81mF7NhHTrUzXjZAJkQE1gUQ11riHn"); | ||
assert!(!res.is_valid); | ||
} | ||
|
||
#[test] | ||
#[cfg(not(target_arch = "wasm32"))] | ||
fn test_sign_message() { | ||
let passphrase = "spice describe gravity federal blast come thank unfair canal monkey style afraid".to_string(); | ||
let (_, sol_coin) = solana_coin_for_test(passphrase, SolanaNet::Testnet); | ||
let signature = sol_coin.sign_message("test").unwrap(); | ||
assert_eq!( | ||
signature, | ||
"4dzKwEteN8nch76zPMEjPX19RsaQwGTxsbtfg2bwGTkGenLfrdm31zvn9GH5rvaJBwivp6ESXx1KYR672ngs3UfF" | ||
); | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
These tests are just removed and not moved to new files.
Signed-off-by: Mariusz Jasuwienas <[email protected]>
ref. #1085 (comment) , the solana reference implementation has this latest changes here https://github.com/KomodoPlatform/komodo-defi-framework/commits/solana-ref-impl/ |
No description provided.