File: test.rs

package info (click to toggle)
android-platform-tools 34.0.5-12
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 150,900 kB
  • sloc: cpp: 805,786; java: 293,500; ansic: 128,288; xml: 127,491; python: 41,481; sh: 14,245; javascript: 9,665; cs: 3,846; asm: 2,049; makefile: 1,917; yacc: 440; awk: 368; ruby: 183; sql: 140; perl: 88; lex: 67
file content (86 lines) | stat: -rw-r--r-- 2,987 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
use trusty::{TipcChannel, DEFAULT_DEVICE};

const ECHO_NAME: &str = "com.android.ipc-unittest.srv.echo";

#[test]
fn recv_no_alloc() {
    let mut connection = TipcChannel::connect(DEFAULT_DEVICE, ECHO_NAME)
        .expect("Failed to connect to Trusty service");

    // Send a message to the echo TA.
    let send_buf = [7u8; 32];
    connection.send(send_buf.as_slice()).unwrap();

    // Receive the response message from the TA. The response message will be the
    // same as the message we just sent.
    let mut recv_buf = [0u8; 32];
    let read_len = connection.recv_no_alloc(recv_buf.as_mut_slice()).unwrap();

    assert_eq!(
        send_buf.len(),
        read_len,
        "Received data was wrong size (expected {} bytes, received {})",
        send_buf.len(),
        read_len,
    );
    assert_eq!(send_buf, recv_buf, "Received data does not match sent data");
}

#[test]
fn recv_small_buf() {
    let mut connection = TipcChannel::connect(DEFAULT_DEVICE, ECHO_NAME)
        .expect("Failed to connect to Trusty service");

    // Send a long message to the echo service so that we can test receiving a long
    // message.
    let send_buf = [7u8; 2048];
    connection.send(send_buf.as_slice()).unwrap();

    // Attempt to receive the response message with a buffer that is too small to
    // contain the message.
    let mut recv_buf = [0u8; 32];
    let err = connection.recv_no_alloc(recv_buf.as_mut_slice()).unwrap_err();

    assert_eq!(
        Some(libc::EMSGSIZE),
        err.raw_os_error(),
        "Unexpected error err when receiving incoming message: {:?}",
        err,
    );
}

#[test]
fn recv_empty_vec() {
    let mut connection = TipcChannel::connect(DEFAULT_DEVICE, ECHO_NAME)
        .expect("Failed to connect to Trusty service");

    // Send a message to the echo TA.
    let send_buf = [7u8; 2048];
    connection.send(send_buf.as_slice()).unwrap();

    // Receive the response message. `recv_buf` is initially empty, and `recv` is
    // responsible for allocating enough space to hold the message.
    let mut recv_buf = Vec::new();
    connection.recv(&mut recv_buf).unwrap();

    assert_eq!(send_buf.as_slice(), recv_buf, "Received data does not match sent data");
}

#[test]
fn recv_vec_existing_capacity() {
    let mut connection = TipcChannel::connect(DEFAULT_DEVICE, ECHO_NAME)
        .expect("Failed to connect to Trusty service");

    // Send a message to the echo TA.
    let send_buf = [7u8; 2048];
    connection.send(send_buf.as_slice()).unwrap();

    // Receive the response message into a buffer that already has enough capacity
    // to hold the message. No additional capacity should be allocated when
    // receiving the message.
    let mut recv_buf = Vec::with_capacity(2048);
    connection.recv(&mut recv_buf).unwrap();

    assert_eq!(send_buf.as_slice(), recv_buf, "Received data does not match sent data");
    assert_eq!(2048, recv_buf.capacity(), "Additional capacity was allocated when not needed");
}