Genesis block is now a json file
This commit is contained in:
@@ -10,7 +10,6 @@ use solana::entry::{reconstruct_entries_from_blobs, Entry};
|
||||
use solana::fullnode::{Fullnode, FullnodeReturnType};
|
||||
use solana::gossip_service::GossipService;
|
||||
use solana::leader_scheduler::{make_active_set_entries, LeaderScheduler, LeaderSchedulerConfig};
|
||||
use solana::mint::Mint;
|
||||
use solana::packet::SharedBlob;
|
||||
use solana::poh_service::NUM_TICKS_PER_SECOND;
|
||||
use solana::result;
|
||||
@@ -135,7 +134,7 @@ fn test_multi_node_ledger_window() -> result::Result<()> {
|
||||
let bob_pubkey = Keypair::new().pubkey();
|
||||
let mut ledger_paths = Vec::new();
|
||||
|
||||
let (alice, leader_ledger_path) =
|
||||
let (genesis_block, alice, leader_ledger_path) =
|
||||
create_tmp_genesis("multi_node_ledger_window", 10_000, leader_data.id, 500);
|
||||
ledger_paths.push(leader_ledger_path.clone());
|
||||
|
||||
@@ -146,14 +145,10 @@ fn test_multi_node_ledger_window() -> result::Result<()> {
|
||||
// write a bunch more ledger into leader's ledger, this should populate the leader's window
|
||||
// and force it to respond to repair from the ledger window
|
||||
{
|
||||
let entries = make_tiny_test_entries(alice.last_id(), 100);
|
||||
let entries = make_tiny_test_entries(genesis_block.last_id(), 100);
|
||||
let db_ledger = DbLedger::open(&leader_ledger_path).unwrap();
|
||||
db_ledger
|
||||
.write_entries(
|
||||
DEFAULT_SLOT_HEIGHT,
|
||||
solana::mint::NUM_GENESIS_ENTRIES as u64,
|
||||
&entries,
|
||||
)
|
||||
.write_entries(DEFAULT_SLOT_HEIGHT, 0, &entries)
|
||||
.unwrap();
|
||||
}
|
||||
|
||||
@@ -238,7 +233,7 @@ fn test_multi_node_validator_catchup_from_zero() -> result::Result<()> {
|
||||
let bob_pubkey = Keypair::new().pubkey();
|
||||
let mut ledger_paths = Vec::new();
|
||||
|
||||
let (alice, genesis_ledger_path) = create_tmp_genesis(
|
||||
let (_genesis_block, alice, genesis_ledger_path) = create_tmp_genesis(
|
||||
"multi_node_validator_catchup_from_zero",
|
||||
10_000,
|
||||
leader_data.id,
|
||||
@@ -431,7 +426,7 @@ fn test_multi_node_basic() {
|
||||
let bob_pubkey = Keypair::new().pubkey();
|
||||
let mut ledger_paths = Vec::new();
|
||||
|
||||
let (alice, genesis_ledger_path) =
|
||||
let (_genesis_block, alice, genesis_ledger_path) =
|
||||
create_tmp_genesis("multi_node_basic", 10_000, leader_data.id, 500);
|
||||
ledger_paths.push(genesis_ledger_path.clone());
|
||||
|
||||
@@ -536,7 +531,7 @@ fn test_boot_validator_from_file() -> result::Result<()> {
|
||||
let bob_pubkey = Keypair::new().pubkey();
|
||||
let mut ledger_paths = Vec::new();
|
||||
|
||||
let (alice, genesis_ledger_path) =
|
||||
let (_genesis_block, alice, genesis_ledger_path) =
|
||||
create_tmp_genesis("boot_validator_from_file", 100_000, leader_pubkey, 1000);
|
||||
ledger_paths.push(genesis_ledger_path.clone());
|
||||
|
||||
@@ -621,7 +616,7 @@ fn test_leader_restart_validator_start_from_old_ledger() -> result::Result<()> {
|
||||
|
||||
let leader_keypair = Arc::new(Keypair::new());
|
||||
let initial_leader_balance = 500;
|
||||
let (alice, ledger_path) = create_tmp_genesis(
|
||||
let (_genesis_block, alice, ledger_path) = create_tmp_genesis(
|
||||
"leader_restart_validator_start_from_old_ledger",
|
||||
100_000 + 500 * solana::window_service::MAX_REPAIR_BACKOFF as u64,
|
||||
leader_keypair.pubkey(),
|
||||
@@ -732,7 +727,7 @@ fn test_multi_node_dynamic_network() {
|
||||
let leader_pubkey = leader_keypair.pubkey().clone();
|
||||
let leader = Node::new_localhost_with_pubkey(leader_keypair.pubkey());
|
||||
let bob_pubkey = Keypair::new().pubkey();
|
||||
let (alice, genesis_ledger_path) =
|
||||
let (_genesis_block, alice, genesis_ledger_path) =
|
||||
create_tmp_genesis("multi_node_dynamic_network", 10_000_000, leader_pubkey, 500);
|
||||
|
||||
let mut ledger_paths = Vec::new();
|
||||
@@ -857,12 +852,7 @@ fn test_multi_node_dynamic_network() {
|
||||
debug!("last_id: {}", last_id);
|
||||
trace!("Executing leader transfer of 100");
|
||||
let sig = client
|
||||
.transfer(
|
||||
100,
|
||||
&alice_arc.read().unwrap().keypair(),
|
||||
bob_pubkey,
|
||||
&last_id,
|
||||
)
|
||||
.transfer(100, &alice_arc.read().unwrap(), bob_pubkey, &last_id)
|
||||
.unwrap();
|
||||
|
||||
expected_balance += 100;
|
||||
@@ -962,13 +952,14 @@ fn test_leader_to_validator_transition() {
|
||||
// Initialize the leader ledger. Make a mint and a genesis entry
|
||||
// in the leader ledger
|
||||
let num_ending_ticks = 1;
|
||||
let (mint, leader_ledger_path, genesis_entries) = create_tmp_sample_ledger(
|
||||
"test_leader_to_validator_transition",
|
||||
10_000,
|
||||
num_ending_ticks,
|
||||
leader_info.id,
|
||||
500,
|
||||
);
|
||||
let (_genesis_block, mint_keypair, leader_ledger_path, genesis_entries) =
|
||||
create_tmp_sample_ledger(
|
||||
"test_leader_to_validator_transition",
|
||||
10_000,
|
||||
num_ending_ticks,
|
||||
leader_info.id,
|
||||
500,
|
||||
);
|
||||
|
||||
let last_id = genesis_entries
|
||||
.last()
|
||||
@@ -978,7 +969,7 @@ fn test_leader_to_validator_transition() {
|
||||
// Write the bootstrap entries to the ledger that will cause leader rotation
|
||||
// after the bootstrap height
|
||||
let (bootstrap_entries, _) =
|
||||
make_active_set_entries(&validator_keypair, &mint.keypair(), &last_id, &last_id, 0);
|
||||
make_active_set_entries(&validator_keypair, &mint_keypair, &last_id, &last_id, 0);
|
||||
{
|
||||
let db_ledger = DbLedger::open(&leader_ledger_path).unwrap();
|
||||
db_ledger
|
||||
@@ -1040,8 +1031,13 @@ fn test_leader_to_validator_transition() {
|
||||
// Poll to see that the bank state is updated after every transaction
|
||||
// to ensure that each transaction is packaged as a single entry,
|
||||
// so that we can be sure leader rotation is triggered
|
||||
let result =
|
||||
send_tx_and_retry_get_balance(&leader_info, &mint, &bob_pubkey, 1, Some(i as u64));
|
||||
let result = send_tx_and_retry_get_balance(
|
||||
&leader_info,
|
||||
&mint_keypair,
|
||||
&bob_pubkey,
|
||||
1,
|
||||
Some(i as u64),
|
||||
);
|
||||
|
||||
// If the transaction wasn't reflected in the node, then we assume
|
||||
// the node has transitioned already
|
||||
@@ -1102,13 +1098,14 @@ fn test_leader_validator_basic() {
|
||||
|
||||
// Make a common mint and a genesis entry for both leader + validator ledgers
|
||||
let num_ending_ticks = 1;
|
||||
let (mint, leader_ledger_path, genesis_entries) = create_tmp_sample_ledger(
|
||||
"test_leader_validator_basic",
|
||||
10_000,
|
||||
num_ending_ticks,
|
||||
leader_info.id,
|
||||
500,
|
||||
);
|
||||
let (_genesis_block, mint_keypair, leader_ledger_path, genesis_entries) =
|
||||
create_tmp_sample_ledger(
|
||||
"test_leader_validator_basic",
|
||||
10_000,
|
||||
num_ending_ticks,
|
||||
leader_info.id,
|
||||
500,
|
||||
);
|
||||
|
||||
let validator_ledger_path = tmp_copy_ledger(&leader_ledger_path, "test_leader_validator_basic");
|
||||
|
||||
@@ -1125,7 +1122,7 @@ fn test_leader_validator_basic() {
|
||||
// Write the bootstrap entries to the ledger that will cause leader rotation
|
||||
// after the bootstrap height
|
||||
let (active_set_entries, _vote_account_keypair) =
|
||||
make_active_set_entries(&validator_keypair, &mint.keypair(), &last_id, &last_id, 0);
|
||||
make_active_set_entries(&validator_keypair, &mint_keypair, &last_id, &last_id, 0);
|
||||
{
|
||||
let db_ledger = DbLedger::open(&leader_ledger_path).unwrap();
|
||||
db_ledger
|
||||
@@ -1184,7 +1181,8 @@ fn test_leader_validator_basic() {
|
||||
// Poll to see that the bank state is updated after every transaction
|
||||
// to ensure that each transaction is packaged as a single entry,
|
||||
// so that we can be sure leader rotation is triggered
|
||||
let result = send_tx_and_retry_get_balance(&leader_info, &mint, &bob_pubkey, 1, None);
|
||||
let result =
|
||||
send_tx_and_retry_get_balance(&leader_info, &mint_keypair, &bob_pubkey, 1, None);
|
||||
|
||||
// If the transaction wasn't reflected in the node, then we assume
|
||||
// the node has transitioned already
|
||||
@@ -1284,13 +1282,14 @@ fn test_dropped_handoff_recovery() {
|
||||
|
||||
// Make a common mint and a genesis entry for both leader + validator's ledgers
|
||||
let num_ending_ticks = 1;
|
||||
let (mint, genesis_ledger_path, genesis_entries) = create_tmp_sample_ledger(
|
||||
"test_dropped_handoff_recovery",
|
||||
10_000,
|
||||
num_ending_ticks,
|
||||
bootstrap_leader_info.id,
|
||||
500,
|
||||
);
|
||||
let (_genesis_block, mint_keypair, genesis_ledger_path, genesis_entries) =
|
||||
create_tmp_sample_ledger(
|
||||
"test_dropped_handoff_recovery",
|
||||
10_000,
|
||||
num_ending_ticks,
|
||||
bootstrap_leader_info.id,
|
||||
500,
|
||||
);
|
||||
|
||||
let last_id = genesis_entries
|
||||
.last()
|
||||
@@ -1309,7 +1308,7 @@ fn test_dropped_handoff_recovery() {
|
||||
// Make the entries to give the next_leader validator some stake so that they will be in
|
||||
// leader election active set
|
||||
let (active_set_entries, _vote_account_keypair) =
|
||||
make_active_set_entries(&next_leader_keypair, &mint.keypair(), &last_id, &last_id, 0);
|
||||
make_active_set_entries(&next_leader_keypair, &mint_keypair, &last_id, &last_id, 0);
|
||||
|
||||
// Write the entries
|
||||
{
|
||||
@@ -1458,13 +1457,14 @@ fn test_full_leader_validator_network() {
|
||||
|
||||
// Make a common mint and a genesis entry for both leader + validator's ledgers
|
||||
let num_ending_ticks = 1;
|
||||
let (mint, bootstrap_leader_ledger_path, genesis_entries) = create_tmp_sample_ledger(
|
||||
"test_full_leader_validator_network",
|
||||
10_000,
|
||||
num_ending_ticks,
|
||||
bootstrap_leader_info.id,
|
||||
500,
|
||||
);
|
||||
let (_genesis_block, mint_keypair, bootstrap_leader_ledger_path, genesis_entries) =
|
||||
create_tmp_sample_ledger(
|
||||
"test_full_leader_validator_network",
|
||||
10_000,
|
||||
num_ending_ticks,
|
||||
bootstrap_leader_info.id,
|
||||
500,
|
||||
);
|
||||
|
||||
let last_tick_id = genesis_entries
|
||||
.last()
|
||||
@@ -1491,7 +1491,7 @@ fn test_full_leader_validator_network() {
|
||||
// leader election active set
|
||||
let (bootstrap_entries, vote_account_keypair) = make_active_set_entries(
|
||||
node_keypair,
|
||||
&mint.keypair(),
|
||||
&mint_keypair,
|
||||
&last_entry_id,
|
||||
&last_tick_id,
|
||||
0,
|
||||
@@ -1711,20 +1711,22 @@ fn test_broadcast_last_tick() {
|
||||
let bootstrap_leader_info = bootstrap_leader_node.info.clone();
|
||||
|
||||
// Create leader ledger
|
||||
let (_, bootstrap_leader_ledger_path, genesis_entries) = create_tmp_sample_ledger(
|
||||
"test_broadcast_last_tick",
|
||||
10_000,
|
||||
0,
|
||||
bootstrap_leader_info.id,
|
||||
500,
|
||||
);
|
||||
let (_genesis_block, _mint_keypair, bootstrap_leader_ledger_path, genesis_entries) =
|
||||
create_tmp_sample_ledger(
|
||||
"test_broadcast_last_tick",
|
||||
10_000,
|
||||
1,
|
||||
bootstrap_leader_info.id,
|
||||
500,
|
||||
);
|
||||
|
||||
let num_ending_ticks = genesis_entries
|
||||
.iter()
|
||||
.skip(2)
|
||||
.fold(0, |tick_count, entry| tick_count + entry.is_tick() as u64);
|
||||
|
||||
let genesis_ledger_len = genesis_entries.len() as u64 - num_ending_ticks;
|
||||
debug!("num_ending_ticks: {}", num_ending_ticks);
|
||||
debug!("genesis_ledger_len: {}", genesis_ledger_len);
|
||||
let blob_receiver_exit = Arc::new(AtomicBool::new(false));
|
||||
|
||||
// Create the listeners
|
||||
@@ -1786,21 +1788,25 @@ fn test_broadcast_last_tick() {
|
||||
let last_tick_entry_height = genesis_ledger_len as u64 + bootstrap_height;
|
||||
let entries = read_ledger(&bootstrap_leader_ledger_path);
|
||||
assert!(entries.len() >= last_tick_entry_height as usize);
|
||||
let expected_last_tick = &entries[last_tick_entry_height as usize - 1];
|
||||
let expected_last_tick = &entries[last_tick_entry_height as usize - 2];
|
||||
debug!("last_tick_entry_height: {:?}", last_tick_entry_height);
|
||||
debug!("expected_last_tick: {:?}", expected_last_tick);
|
||||
|
||||
info!("Check that the nodes got the last broadcasted blob");
|
||||
for (_, receiver) in blob_fetch_stages.iter() {
|
||||
info!("Checking a node...");
|
||||
let mut last_tick_blob: SharedBlob = SharedBlob::default();
|
||||
while let Ok(new_blobs) = receiver.try_recv() {
|
||||
let last_blob = new_blobs.into_iter().find(|b| {
|
||||
b.read().unwrap().index().expect("Expected index in blob")
|
||||
== last_tick_entry_height - 1
|
||||
== last_tick_entry_height - 2
|
||||
});
|
||||
if let Some(last_blob) = last_blob {
|
||||
last_tick_blob = last_blob;
|
||||
break;
|
||||
}
|
||||
}
|
||||
debug!("last_tick_blob: {:?}", last_tick_blob);
|
||||
let actual_last_tick =
|
||||
&reconstruct_entries_from_blobs(vec![&*last_tick_blob.read().unwrap()])
|
||||
.expect("Expected to be able to reconstruct entries from blob")
|
||||
@@ -1831,7 +1837,7 @@ fn mk_client(leader: &NodeInfo) -> ThinClient {
|
||||
|
||||
fn send_tx_and_retry_get_balance(
|
||||
leader: &NodeInfo,
|
||||
alice: &Mint,
|
||||
alice: &Keypair,
|
||||
bob_pubkey: &Pubkey,
|
||||
transfer_amount: u64,
|
||||
expected: Option<u64>,
|
||||
@@ -1839,20 +1845,20 @@ fn send_tx_and_retry_get_balance(
|
||||
let mut client = mk_client(leader);
|
||||
trace!("getting leader last_id");
|
||||
let last_id = client.get_last_id();
|
||||
let mut tx = Transaction::system_new(&alice.keypair(), *bob_pubkey, transfer_amount, last_id);
|
||||
let mut tx = Transaction::system_new(&alice, *bob_pubkey, transfer_amount, last_id);
|
||||
info!(
|
||||
"executing transfer of {} from {} to {}",
|
||||
transfer_amount,
|
||||
alice.keypair().pubkey(),
|
||||
alice.pubkey(),
|
||||
*bob_pubkey
|
||||
);
|
||||
let _res = client.retry_transfer(&alice.keypair(), &mut tx, 30);
|
||||
let _res = client.retry_transfer(&alice, &mut tx, 30);
|
||||
retry_get_balance(&mut client, bob_pubkey, expected)
|
||||
}
|
||||
|
||||
fn retry_send_tx_and_retry_get_balance(
|
||||
leader: &NodeInfo,
|
||||
alice: &Mint,
|
||||
alice: &Keypair,
|
||||
bob_pubkey: &Pubkey,
|
||||
expected: Option<u64>,
|
||||
) -> Option<u64> {
|
||||
@@ -1862,9 +1868,7 @@ fn retry_send_tx_and_retry_get_balance(
|
||||
info!("executing leader transfer");
|
||||
const LAST: usize = 30;
|
||||
for run in 0..(LAST + 1) {
|
||||
let _sig = client
|
||||
.transfer(500, &alice.keypair(), *bob_pubkey, &last_id)
|
||||
.unwrap();
|
||||
let _sig = client.transfer(500, &alice, *bob_pubkey, &last_id).unwrap();
|
||||
let out = client.poll_get_balance(bob_pubkey);
|
||||
if expected.is_none() || run == LAST {
|
||||
return out.ok().clone();
|
||||
|
@@ -2,7 +2,7 @@ use solana;
|
||||
use solana_native_loader;
|
||||
|
||||
use solana::bank::Bank;
|
||||
use solana::mint::Mint;
|
||||
use solana::genesis_block::GenesisBlock;
|
||||
use solana::status_deque::Status;
|
||||
#[cfg(feature = "bpf_c")]
|
||||
use solana_sdk::bpf_loader;
|
||||
@@ -46,23 +46,24 @@ fn check_tx_results(bank: &Bank, tx: &Transaction, result: Vec<solana::bank::Res
|
||||
}
|
||||
|
||||
struct Loader {
|
||||
mint: Mint,
|
||||
genesis_block: GenesisBlock,
|
||||
mint_keypair: Keypair,
|
||||
bank: Bank,
|
||||
loader: Pubkey,
|
||||
}
|
||||
|
||||
impl Loader {
|
||||
pub fn new_dynamic(loader_name: &str) -> Self {
|
||||
let mint = Mint::new(50);
|
||||
let bank = Bank::new(&mint);
|
||||
let (genesis_block, mint_keypair) = GenesisBlock::new(50);
|
||||
let bank = Bank::new(&genesis_block);
|
||||
let loader = Keypair::new();
|
||||
|
||||
// allocate, populate, finalize, and spawn loader
|
||||
|
||||
let tx = Transaction::system_create(
|
||||
&mint.keypair(),
|
||||
&mint_keypair,
|
||||
loader.pubkey(),
|
||||
mint.last_id(),
|
||||
genesis_block.last_id(),
|
||||
1,
|
||||
56, // TODO
|
||||
solana_native_loader::id(),
|
||||
@@ -76,40 +77,55 @@ impl Loader {
|
||||
solana_native_loader::id(),
|
||||
0,
|
||||
name.as_bytes().to_vec(),
|
||||
mint.last_id(),
|
||||
genesis_block.last_id(),
|
||||
0,
|
||||
);
|
||||
check_tx_results(&bank, &tx, bank.process_transactions(&vec![tx.clone()]));
|
||||
|
||||
let tx =
|
||||
Transaction::loader_finalize(&loader, solana_native_loader::id(), mint.last_id(), 0);
|
||||
let tx = Transaction::loader_finalize(
|
||||
&loader,
|
||||
solana_native_loader::id(),
|
||||
genesis_block.last_id(),
|
||||
0,
|
||||
);
|
||||
check_tx_results(&bank, &tx, bank.process_transactions(&vec![tx.clone()]));
|
||||
|
||||
let tx = Transaction::system_spawn(&loader, mint.last_id(), 0);
|
||||
let tx = Transaction::system_spawn(&loader, genesis_block.last_id(), 0);
|
||||
check_tx_results(&bank, &tx, bank.process_transactions(&vec![tx.clone()]));
|
||||
|
||||
Loader {
|
||||
mint,
|
||||
genesis_block,
|
||||
mint_keypair,
|
||||
bank,
|
||||
loader: loader.pubkey(),
|
||||
}
|
||||
}
|
||||
|
||||
pub fn new_native() -> Self {
|
||||
let mint = Mint::new(50);
|
||||
let bank = Bank::new(&mint);
|
||||
let (genesis_block, mint_keypair) = GenesisBlock::new(50);
|
||||
let bank = Bank::new(&genesis_block);
|
||||
let loader = solana_native_loader::id();
|
||||
|
||||
Loader { mint, bank, loader }
|
||||
Loader {
|
||||
genesis_block,
|
||||
mint_keypair,
|
||||
bank,
|
||||
loader,
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(feature = "bpf_c")]
|
||||
pub fn new_bpf() -> Self {
|
||||
let mint = Mint::new(50);
|
||||
let bank = Bank::new(&mint);
|
||||
let (genesis_block, mint_keypair) = GenesisBlock::new(50);
|
||||
let bank = Bank::new(&genesis_block);
|
||||
let loader = bpf_loader::id();
|
||||
|
||||
Loader { mint, bank, loader }
|
||||
Loader {
|
||||
genesis_block,
|
||||
mint_keypair,
|
||||
bank,
|
||||
loader,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -124,9 +140,9 @@ impl Program {
|
||||
// allocate, populate, finalize and spawn program
|
||||
|
||||
let tx = Transaction::system_create(
|
||||
&loader.mint.keypair(),
|
||||
&loader.mint_keypair,
|
||||
program.pubkey(),
|
||||
loader.mint.last_id(),
|
||||
loader.genesis_block.last_id(),
|
||||
1,
|
||||
userdata.len() as u64,
|
||||
loader.loader,
|
||||
@@ -146,7 +162,7 @@ impl Program {
|
||||
loader.loader,
|
||||
offset,
|
||||
chunk.to_vec(),
|
||||
loader.mint.last_id(),
|
||||
loader.genesis_block.last_id(),
|
||||
0,
|
||||
);
|
||||
check_tx_results(
|
||||
@@ -157,14 +173,19 @@ impl Program {
|
||||
offset += chunk_size as u32;
|
||||
}
|
||||
|
||||
let tx = Transaction::loader_finalize(&program, loader.loader, loader.mint.last_id(), 0);
|
||||
let tx = Transaction::loader_finalize(
|
||||
&program,
|
||||
loader.loader,
|
||||
loader.genesis_block.last_id(),
|
||||
0,
|
||||
);
|
||||
check_tx_results(
|
||||
&loader.bank,
|
||||
&tx,
|
||||
loader.bank.process_transactions(&vec![tx.clone()]),
|
||||
);
|
||||
|
||||
let tx = Transaction::system_spawn(&program, loader.mint.last_id(), 0);
|
||||
let tx = Transaction::system_spawn(&program, loader.genesis_block.last_id(), 0);
|
||||
check_tx_results(
|
||||
&loader.bank,
|
||||
&tx,
|
||||
@@ -186,11 +207,11 @@ fn test_program_native_noop() {
|
||||
|
||||
// Call user program
|
||||
let tx = Transaction::new(
|
||||
&loader.mint.keypair(),
|
||||
&loader.mint_keypair,
|
||||
&[],
|
||||
program.program.pubkey(),
|
||||
&1u8,
|
||||
loader.mint.last_id(),
|
||||
loader.genesis_block.last_id(),
|
||||
0,
|
||||
);
|
||||
check_tx_results(
|
||||
@@ -220,9 +241,9 @@ fn test_program_lua_move_funds() {
|
||||
// Call user program with two accounts
|
||||
|
||||
let tx = Transaction::system_create(
|
||||
&loader.mint.keypair(),
|
||||
&loader.mint_keypair,
|
||||
from.pubkey(),
|
||||
loader.mint.last_id(),
|
||||
loader.genesis_block.last_id(),
|
||||
10,
|
||||
0,
|
||||
program.program.pubkey(),
|
||||
@@ -235,9 +256,9 @@ fn test_program_lua_move_funds() {
|
||||
);
|
||||
|
||||
let tx = Transaction::system_create(
|
||||
&loader.mint.keypair(),
|
||||
&loader.mint_keypair,
|
||||
to,
|
||||
loader.mint.last_id(),
|
||||
loader.genesis_block.last_id(),
|
||||
1,
|
||||
0,
|
||||
program.program.pubkey(),
|
||||
@@ -254,7 +275,7 @@ fn test_program_lua_move_funds() {
|
||||
&[to],
|
||||
program.program.pubkey(),
|
||||
&10,
|
||||
loader.mint.last_id(),
|
||||
loader.genesis_block.last_id(),
|
||||
0,
|
||||
);
|
||||
check_tx_results(
|
||||
@@ -280,11 +301,11 @@ fn test_program_builtin_bpf_noop() {
|
||||
|
||||
// Call user program
|
||||
let tx = Transaction::new(
|
||||
&loader.mint.keypair(),
|
||||
&loader.mint_keypair,
|
||||
&[],
|
||||
program.program.pubkey(),
|
||||
&vec![1u8],
|
||||
loader.mint.last_id(),
|
||||
loader.genesis_block.last_id(),
|
||||
0,
|
||||
);
|
||||
check_tx_results(
|
||||
@@ -319,11 +340,11 @@ fn test_program_bpf_c() {
|
||||
|
||||
// Call user program
|
||||
let tx = Transaction::new(
|
||||
&loader.mint.keypair(),
|
||||
&loader.mint_keypair,
|
||||
&[],
|
||||
program.program.pubkey(),
|
||||
&vec![1u8],
|
||||
loader.mint.last_id(),
|
||||
loader.genesis_block.last_id(),
|
||||
0,
|
||||
);
|
||||
check_tx_results(
|
||||
@@ -355,11 +376,11 @@ fn test_program_bpf_rust() {
|
||||
|
||||
// Call user program
|
||||
let tx = Transaction::new(
|
||||
&loader.mint.keypair(),
|
||||
&loader.mint_keypair,
|
||||
&[],
|
||||
program.program.pubkey(),
|
||||
&vec![1u8],
|
||||
loader.mint.last_id(),
|
||||
loader.genesis_block.last_id(),
|
||||
0,
|
||||
);
|
||||
check_tx_results(
|
||||
|
@@ -41,7 +41,7 @@ fn test_replicator_startup() {
|
||||
let leader_info = leader_node.info.clone();
|
||||
|
||||
let leader_ledger_path = "replicator_test_leader_ledger";
|
||||
let (mint, leader_ledger_path) =
|
||||
let (_genesis_block, mint_keypair, leader_ledger_path) =
|
||||
create_tmp_genesis(leader_ledger_path, 1_000_000_000, leader_info.id, 1);
|
||||
|
||||
let validator_ledger_path =
|
||||
@@ -73,7 +73,7 @@ fn test_replicator_startup() {
|
||||
let mut leader_client = mk_client(&leader_info);
|
||||
|
||||
leader_client
|
||||
.transfer(10, &mint.keypair(), validator_keypair.pubkey(), &last_id)
|
||||
.transfer(10, &mint_keypair, validator_keypair.pubkey(), &last_id)
|
||||
.unwrap();
|
||||
|
||||
let validator_node = Node::new_localhost_with_pubkey(validator_keypair.pubkey());
|
||||
@@ -99,7 +99,7 @@ fn test_replicator_startup() {
|
||||
for _ in 0..64 {
|
||||
let last_id = leader_client.get_last_id();
|
||||
leader_client
|
||||
.transfer(1, &mint.keypair(), bob.pubkey(), &last_id)
|
||||
.transfer(1, &mint_keypair, bob.pubkey(), &last_id)
|
||||
.unwrap();
|
||||
sleep(Duration::from_millis(200));
|
||||
}
|
||||
@@ -111,14 +111,10 @@ fn test_replicator_startup() {
|
||||
let last_id = leader_client.get_last_id();
|
||||
// Give the replicator some tokens
|
||||
let amount = 1;
|
||||
let mut tx = Transaction::system_new(
|
||||
&mint.keypair(),
|
||||
replicator_keypair.pubkey(),
|
||||
amount,
|
||||
last_id,
|
||||
);
|
||||
let mut tx =
|
||||
Transaction::system_new(&mint_keypair, replicator_keypair.pubkey(), amount, last_id);
|
||||
leader_client
|
||||
.retry_transfer(&mint.keypair(), &mut tx, 5)
|
||||
.retry_transfer(&mint_keypair, &mut tx, 5)
|
||||
.unwrap();
|
||||
|
||||
info!("starting replicator node");
|
||||
@@ -270,7 +266,8 @@ fn test_replicator_startup_ledger_hang() {
|
||||
let leader_info = leader_node.info.clone();
|
||||
|
||||
let leader_ledger_path = "replicator_test_leader_ledger";
|
||||
let (_, leader_ledger_path) = create_tmp_genesis(leader_ledger_path, 100, leader_info.id, 1);
|
||||
let (_genesis_block, _mint_keypair, leader_ledger_path) =
|
||||
create_tmp_genesis(leader_ledger_path, 100, leader_info.id, 1);
|
||||
|
||||
let validator_ledger_path =
|
||||
tmp_copy_ledger(&leader_ledger_path, "replicator_test_validator_ledger");
|
||||
|
17
tests/rpc.rs
17
tests/rpc.rs
@@ -4,10 +4,10 @@ use reqwest::header::CONTENT_TYPE;
|
||||
use serde_json::{json, Value};
|
||||
use solana::bank::Bank;
|
||||
use solana::cluster_info::Node;
|
||||
use solana::db_ledger::create_tmp_ledger_with_mint;
|
||||
use solana::db_ledger::create_tmp_ledger;
|
||||
use solana::fullnode::Fullnode;
|
||||
use solana::genesis_block::GenesisBlock;
|
||||
use solana::leader_scheduler::LeaderScheduler;
|
||||
use solana::mint::Mint;
|
||||
use solana::rpc_request::get_rpc_request_str;
|
||||
use solana::storage_stage::STORAGE_ROTATE_TEST_COUNT;
|
||||
use solana::vote_signer_proxy::VoteSignerProxy;
|
||||
@@ -26,14 +26,14 @@ fn test_rpc_send_tx() {
|
||||
let leader_keypair = Arc::new(Keypair::new());
|
||||
let leader = Node::new_localhost_with_pubkey(leader_keypair.pubkey());
|
||||
|
||||
let alice = Mint::new(10_000_000);
|
||||
let mut bank = Bank::new(&alice);
|
||||
let (genesis_block, alice) = GenesisBlock::new(10_000_000);
|
||||
let mut bank = Bank::new(&genesis_block);
|
||||
let bob_pubkey = Keypair::new().pubkey();
|
||||
let leader_data = leader.info.clone();
|
||||
let ledger_path = create_tmp_ledger_with_mint("rpc_send_tx", &alice);
|
||||
let ledger_path = create_tmp_ledger("rpc_send_tx", &genesis_block);
|
||||
|
||||
let last_id = bank.last_id();
|
||||
let tx = Transaction::system_move(&alice.keypair(), bob_pubkey, 20, last_id, 0);
|
||||
let tx = Transaction::system_move(&alice, bob_pubkey, 20, last_id, 0);
|
||||
let serial_tx = serialize(&tx).unwrap();
|
||||
|
||||
let leader_scheduler = Arc::new(RwLock::new(LeaderScheduler::from_bootstrap_leader(
|
||||
@@ -44,17 +44,16 @@ fn test_rpc_send_tx() {
|
||||
let vote_account_keypair = Arc::new(Keypair::new());
|
||||
let vote_signer =
|
||||
VoteSignerProxy::new(&vote_account_keypair, Box::new(LocalVoteSigner::default()));
|
||||
let entry_height = alice.create_entries().len() as u64;
|
||||
let entry_height = 0;
|
||||
let server = Fullnode::new_with_bank(
|
||||
leader_keypair,
|
||||
Some(Arc::new(vote_signer)),
|
||||
bank,
|
||||
None,
|
||||
&ledger_path,
|
||||
entry_height,
|
||||
&last_id,
|
||||
leader,
|
||||
None,
|
||||
&ledger_path,
|
||||
false,
|
||||
None,
|
||||
STORAGE_ROTATE_TEST_COUNT,
|
||||
|
Reference in New Issue
Block a user