47 lines
1.5 KiB
Rust
47 lines
1.5 KiB
Rust
use std::str::FromStr;
|
|
|
|
use solana_sdk::address_lookup_table::program::id;
|
|
use solana_sdk::instruction::{AccountMeta, Instruction};
|
|
use solana_sdk::pubkey::Pubkey;
|
|
use solana_sdk::transaction::Transaction;
|
|
|
|
use solana_lite_rpc_quic_forward_proxy::proxy_request_format::TpuForwardingRequest;
|
|
|
|
#[test]
|
|
fn roundtrip() {
|
|
let payer_pubkey = Pubkey::from_str("Bm8rtweCQ19ksNebrLY92H7x4bCaeDJSSmEeWqkdCeop").unwrap();
|
|
|
|
let memo_ix = Instruction {
|
|
program_id: id(),
|
|
accounts: vec![AccountMeta::new_readonly(payer_pubkey, true)],
|
|
data: Vec::new(),
|
|
};
|
|
|
|
let tx = Transaction::new_with_payer(&[memo_ix], Some(&payer_pubkey));
|
|
|
|
let wire_data = TpuForwardingRequest::new(
|
|
vec![(
|
|
"127.0.0.1:5454".parse().unwrap(),
|
|
Pubkey::from_str("Bm8rtweCQ19ksNebrLY92H7x4bCaeDJSSmEeWqkdCeop").unwrap(),
|
|
)],
|
|
vec![tx.into()],
|
|
)
|
|
.try_serialize_wire_format()
|
|
.unwrap();
|
|
|
|
println!("wire_data: {:02X?}", wire_data);
|
|
|
|
let request = TpuForwardingRequest::try_deserialize_from_wire_format(&wire_data).unwrap();
|
|
|
|
assert_eq!(request.get_tpu_nodes().len(), 1);
|
|
assert!(request.get_tpu_nodes()[0].tpu_socket_addr.is_ipv4());
|
|
assert_eq!(request.get_transaction_bytes().len(), 1);
|
|
}
|
|
|
|
#[test]
|
|
fn deserialize_error() {
|
|
let value: &[u8] = &[1, 2, 3, 4];
|
|
let result = TpuForwardingRequest::try_deserialize_from_wire_format(value);
|
|
assert_eq!(result.unwrap_err().to_string(), "deserialize proxy request");
|
|
}
|