mirror of
https://github.com/Devolutions/IronRDP.git
synced 2025-07-14 13:05:01 +00:00

Put all integration tests in a single crate, and organized in modules. This is similar to what was done in `cargo` repository: https://github.com/rust-lang/cargo/pull/5022#issuecomment-364691154 ``` $ rustup show stable-x86_64-unknown-linux-gnu (default) rustc 1.69.0 (84c898d65 2023-04-16) ``` Run on a recent high-end laptop: 12th Gen Intel(R) Core(TM) i9-12900HK Original (multiple integration binaries): - `cargo clean && cargo test --no-run`: 62.893s - `cargo clean && cargo build --lib`: 54.959s - `cargo clean && cargo build --bins`: 55.933s - `cargo test --no-run` (after `cargo build`): 14.472s - `cargo test` (after `cargo test --no-run`): 1.786s - `du -hs target/`: 4.2G After (ironrdp-testsuite): - `cargo clean && cargo test --no-run`: 41.157s (crates with no tests are ignored) - `cargo clean && cargo build --lib`: 53.983s - `cargo clean && cargo build --bins`: 54.482s - `cargo test --no-run` (after `cargo build`): 12.915s - `cargo test` (after `cargo test --no-run`): 0.240s - `du -hs target/`: 3.4G Absolute diff: - `cargo clean && cargo test --no-run`: -21.736s - `cargo clean && cargo build --lib`: -0.976s - `cargo clean && cargo build --bins`: -1.451s - `cargo test --no-run` (after `cargo build`): -1.557s - `cargo test` (after `cargo test --no-run`): -1.546s - `du -hs target/`: -0.8G Relative diff (%): - `cargo clean && cargo test --no-run`: -34.5% - `cargo clean && cargo build --lib`: -1.77% - `cargo clean && cargo build --bins`: -2.59% - `cargo test --no-run` (after `cargo build`): -10.7% - `cargo test` (after `cargo test --no-run`): -86.5% - `du -hs target/`: -19.0%
153 lines
5.6 KiB
Rust
153 lines
5.6 KiB
Rust
use std::borrow::Cow;
|
|
|
|
use ironrdp_pdu::mcs::*;
|
|
|
|
use crate::conference_create::{
|
|
CONFERENCE_CREATE_REQUEST, CONFERENCE_CREATE_REQUEST_BUFFER, CONFERENCE_CREATE_RESPONSE,
|
|
CONFERENCE_CREATE_RESPONSE_BUFFER,
|
|
};
|
|
use crate::rdp::{CLIENT_INFO_PDU_BUFFER, SERVER_LICENSE_BUFFER};
|
|
|
|
pub const ERECT_DOMAIN_PDU_BUFFER: [u8; 5] = [0x04, 0x01, 0x00, 0x01, 0x00];
|
|
|
|
pub const ERECT_DOMAIN_PDU: ErectDomainPdu = ErectDomainPdu {
|
|
sub_height: 0,
|
|
sub_interval: 0,
|
|
};
|
|
|
|
pub const ATTACH_USER_REQUEST_PDU_BUFFER: [u8; 1] = [0x28];
|
|
|
|
pub const ATTACH_USER_REQUEST_PDU: AttachUserRequest = AttachUserRequest;
|
|
|
|
pub const ATTACH_USER_CONFIRM_PDU_BUFFER: [u8; 4] = [0x2e, 0x00, 0x00, 0x06];
|
|
|
|
pub const ATTACH_USER_CONFIRM_PDU: AttachUserConfirm = AttachUserConfirm {
|
|
result: 0,
|
|
initiator_id: 1007,
|
|
};
|
|
|
|
pub const CHANNEL_JOIN_REQUEST_PDU_BUFFER: [u8; 5] = [0x38, 0x00, 0x06, 0x03, 0xef];
|
|
|
|
pub const CHANNEL_JOIN_REQUEST_PDU: ChannelJoinRequest = ChannelJoinRequest {
|
|
initiator_id: 1007,
|
|
channel_id: 1007,
|
|
};
|
|
|
|
pub const CHANNEL_JOIN_CONFIRM_PDU_BUFFER: [u8; 8] = [0x3e, 0x00, 0x00, 0x06, 0x03, 0xef, 0x03, 0xef];
|
|
|
|
pub const CHANNEL_JOIN_CONFIRM_PDU: ChannelJoinConfirm = ChannelJoinConfirm {
|
|
result: 0,
|
|
initiator_id: 1007,
|
|
requested_channel_id: 1007,
|
|
channel_id: 1007,
|
|
};
|
|
|
|
pub const DISCONNECT_PROVIDER_ULTIMATUM_PDU_BUFFER: [u8; 2] = [0x21, 0x80];
|
|
|
|
pub const DISCONNECT_PROVIDER_ULTIMATUM_PDU: DisconnectProviderUltimatum = DisconnectProviderUltimatum {
|
|
reason: DisconnectReason::UserRequested,
|
|
};
|
|
|
|
pub const SEND_DATA_REQUEST_PDU_BUFFER_PREFIX: [u8; 8] = [0x64, 0x00, 0x06, 0x03, 0xeb, 0x70, 0x81, 0x92];
|
|
|
|
pub const SEND_DATA_REQUEST_PDU_BUFFER: [u8; concat_arrays_size!(
|
|
SEND_DATA_REQUEST_PDU_BUFFER_PREFIX,
|
|
CLIENT_INFO_PDU_BUFFER
|
|
)] = concat_arrays!(SEND_DATA_REQUEST_PDU_BUFFER_PREFIX, CLIENT_INFO_PDU_BUFFER);
|
|
|
|
pub const SEND_DATA_REQUEST_PDU: OwnedSendDataRequest = SendDataRequest {
|
|
initiator_id: 1007,
|
|
channel_id: 1003,
|
|
user_data: Cow::Borrowed(&CLIENT_INFO_PDU_BUFFER),
|
|
};
|
|
|
|
pub const SEND_DATA_INDICATION_PDU_BUFFER_PREFIX: [u8; 7] = [0x68, 0x00, 0x01, 0x03, 0xeb, 0x70, 0x14];
|
|
|
|
pub const SEND_DATA_INDICATION_PDU_BUFFER: [u8; concat_arrays_size!(
|
|
SEND_DATA_INDICATION_PDU_BUFFER_PREFIX,
|
|
SERVER_LICENSE_BUFFER
|
|
)] = concat_arrays!(SEND_DATA_INDICATION_PDU_BUFFER_PREFIX, SERVER_LICENSE_BUFFER);
|
|
|
|
pub const SEND_DATA_INDICATION_PDU: OwnedSendDataIndication = SendDataIndication {
|
|
initiator_id: 1002,
|
|
channel_id: 1003,
|
|
user_data: Cow::Borrowed(&SERVER_LICENSE_BUFFER),
|
|
};
|
|
|
|
pub const CONNECT_INITIAL_PREFIX_BUFFER: [u8; 107] = [
|
|
0x7f, 0x65, 0x82, 0x01, 0x99, 0x04, 0x01, 0x01, 0x04, 0x01, 0x01, 0x01, 0x01, 0xff, 0x30, 0x1a, 0x02, 0x01, 0x22,
|
|
0x02, 0x01, 0x02, 0x02, 0x01, 0x00, 0x02, 0x01, 0x01, 0x02, 0x01, 0x00, 0x02, 0x01, 0x01, 0x02, 0x03, 0x00, 0xff,
|
|
0xff, 0x02, 0x01, 0x02, 0x30, 0x19, 0x02, 0x01, 0x01, 0x02, 0x01, 0x01, 0x02, 0x01, 0x01, 0x02, 0x01, 0x01, 0x02,
|
|
0x01, 0x00, 0x02, 0x01, 0x01, 0x02, 0x02, 0x04, 0x20, 0x02, 0x01, 0x02, 0x30, 0x20, 0x02, 0x03, 0x00, 0xff, 0xff,
|
|
0x02, 0x03, 0x00, 0xfc, 0x17, 0x02, 0x03, 0x00, 0xff, 0xff, 0x02, 0x01, 0x01, 0x02, 0x01, 0x00, 0x02, 0x01, 0x01,
|
|
0x02, 0x03, 0x00, 0xff, 0xff, 0x02, 0x01, 0x02, 0x04, 0x82, 0x01, 0x33,
|
|
];
|
|
|
|
pub const CONNECT_RESPONSE_PREFIX_BUFFER: [u8; 43] = [
|
|
0x7f, 0x66, 0x82, 0x01, 0x46, 0x0a, 0x01, 0x00, 0x02, 0x01, 0x00, 0x30, 0x1a, 0x02, 0x01, 0x22, 0x02, 0x01, 0x03,
|
|
0x02, 0x01, 0x00, 0x02, 0x01, 0x01, 0x02, 0x01, 0x00, 0x02, 0x01, 0x01, 0x02, 0x03, 0x00, 0xff, 0xf8, 0x02, 0x01,
|
|
0x02, 0x04, 0x82, 0x01, 0x20,
|
|
];
|
|
|
|
pub const CONNECT_INITIAL_BUFFER: [u8; concat_arrays_size!(
|
|
CONNECT_INITIAL_PREFIX_BUFFER,
|
|
CONFERENCE_CREATE_REQUEST_BUFFER
|
|
)] = concat_arrays!(CONNECT_INITIAL_PREFIX_BUFFER, CONFERENCE_CREATE_REQUEST_BUFFER);
|
|
|
|
pub const CONNECT_RESPONSE_BUFFER: [u8; concat_arrays_size!(
|
|
CONNECT_RESPONSE_PREFIX_BUFFER,
|
|
CONFERENCE_CREATE_RESPONSE_BUFFER
|
|
)] = concat_arrays!(CONNECT_RESPONSE_PREFIX_BUFFER, CONFERENCE_CREATE_RESPONSE_BUFFER);
|
|
|
|
lazy_static! {
|
|
pub static ref CONNECT_INITIAL: ConnectInitial = ConnectInitial {
|
|
calling_domain_selector: vec![0x01],
|
|
called_domain_selector: vec![0x01],
|
|
upward_flag: true,
|
|
target_parameters: DomainParameters {
|
|
max_channel_ids: 34,
|
|
max_user_ids: 2,
|
|
max_token_ids: 0,
|
|
num_priorities: 1,
|
|
min_throughput: 0,
|
|
max_height: 1,
|
|
max_mcs_pdu_size: 65535,
|
|
protocol_version: 2,
|
|
},
|
|
min_parameters: DomainParameters {
|
|
max_channel_ids: 1,
|
|
max_user_ids: 1,
|
|
max_token_ids: 1,
|
|
num_priorities: 1,
|
|
min_throughput: 0,
|
|
max_height: 1,
|
|
max_mcs_pdu_size: 1056,
|
|
protocol_version: 2,
|
|
},
|
|
max_parameters: DomainParameters {
|
|
max_channel_ids: 65535,
|
|
max_user_ids: 64535,
|
|
max_token_ids: 65535,
|
|
num_priorities: 1,
|
|
min_throughput: 0,
|
|
max_height: 1,
|
|
max_mcs_pdu_size: 65535,
|
|
protocol_version: 2,
|
|
},
|
|
conference_create_request: CONFERENCE_CREATE_REQUEST.clone(),
|
|
};
|
|
pub static ref CONNECT_RESPONSE: ConnectResponse = ConnectResponse {
|
|
called_connect_id: 0,
|
|
domain_parameters: DomainParameters {
|
|
max_channel_ids: 34,
|
|
max_user_ids: 3,
|
|
max_token_ids: 0,
|
|
num_priorities: 1,
|
|
min_throughput: 0,
|
|
max_height: 1,
|
|
max_mcs_pdu_size: 65528,
|
|
protocol_version: 2,
|
|
},
|
|
conference_create_response: CONFERENCE_CREATE_RESPONSE.clone(),
|
|
};
|
|
}
|