tracing_perfetto_sdk_schema::trace_config

Struct AndroidReportConfig

Source
pub struct AndroidReportConfig {
    pub reporter_service_package: Option<String>,
    pub reporter_service_class: Option<String>,
    pub skip_report: Option<bool>,
    pub use_pipe_in_framework_for_testing: Option<bool>,
}
Expand description

Android-only. Not for general use. If set, reports the trace to the Android framework. This field is read by perfetto_cmd, rather than the tracing service. This field must be set when passing the –upload flag to perfetto_cmd.

In this message, either:

  • |reporter_service_package| and |reporter_service_class| must be set.
  • |skip_reporting| must be explicitly set to true.

Fields§

§reporter_service_package: Option<String>§reporter_service_class: Option<String>§skip_report: Option<bool>

If true, then skips reporting the trace to Android framework.

This flag is useful in testing (e.g. Perfetto-statsd integration tests) or when we explicitly don’t want to report traces to the framework even when they usually would (e.g. configs deployed using statsd but only used for inclusion in bugreports using |bugreport_score|).

The motivation for having this flag, instead of just not setting |framework_report_config|, is prevent accidents where |framework_report_config| is omitted by mistake.

§use_pipe_in_framework_for_testing: Option<bool>

If true, will direct the Android framework to read the data in trace file and pass it to the reporter class over a pipe instead of passing the file descriptor directly.

This flag is needed because the Android test framework does not currently support priv-app helper apps (in terms of SELinux) and we really don’t want to add an allow rule for untrusted_app to receive trace fds.

Because of this, we instead will direct the framework to create a new pipe and pass this to the reporter process instead. As the pipe is created by the framework, we won’t have any problems with SELinux (system_server is already allowed to pass pipe fds, even to untrusted apps).

As the name suggests this option MUST only be used for testing. Note that the framework will reject (and drop) files which are too large both for simplicity and to be minimize the amount of data we pass to a non-priv app (note that the framework will still check manifest permissions even though SELinux permissions are worked around).

Implementations§

Source§

impl AndroidReportConfig

Source

pub fn reporter_service_package(&self) -> &str

Returns the value of reporter_service_package, or the default value if reporter_service_package is unset.

Source

pub fn reporter_service_class(&self) -> &str

Returns the value of reporter_service_class, or the default value if reporter_service_class is unset.

Source

pub fn skip_report(&self) -> bool

Returns the value of skip_report, or the default value if skip_report is unset.

Source

pub fn use_pipe_in_framework_for_testing(&self) -> bool

Returns the value of use_pipe_in_framework_for_testing, or the default value if use_pipe_in_framework_for_testing is unset.

Trait Implementations§

Source§

impl Clone for AndroidReportConfig

Source§

fn clone(&self) -> AndroidReportConfig

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for AndroidReportConfig

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for AndroidReportConfig

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl Message for AndroidReportConfig

Source§

fn encoded_len(&self) -> usize

Returns the encoded length of the message without a length delimiter.
Source§

fn clear(&mut self)

Clears the message, resetting all fields to their default.
Source§

fn encode<B>(&self, buf: &mut B) -> Result<(), EncodeError>
where B: BufMut, Self: Sized,

Encodes the message to a buffer. Read more
Source§

fn encode_to_vec(&self) -> Vec<u8>
where Self: Sized,

Encodes the message to a newly allocated buffer.
Source§

fn encode_length_delimited<B>(&self, buf: &mut B) -> Result<(), EncodeError>
where B: BufMut, Self: Sized,

Encodes the message with a length-delimiter to a buffer. Read more
Source§

fn encode_length_delimited_to_vec(&self) -> Vec<u8>
where Self: Sized,

Encodes the message with a length-delimiter to a newly allocated buffer.
Source§

fn decode<B>(buf: B) -> Result<Self, DecodeError>
where B: Buf, Self: Default,

Decodes an instance of the message from a buffer. Read more
Source§

fn decode_length_delimited<B>(buf: B) -> Result<Self, DecodeError>
where B: Buf, Self: Default,

Decodes a length-delimited instance of the message from the buffer.
Source§

fn merge<B>(&mut self, buf: B) -> Result<(), DecodeError>
where B: Buf, Self: Sized,

Decodes an instance of the message from a buffer, and merges it into self. Read more
Source§

fn merge_length_delimited<B>(&mut self, buf: B) -> Result<(), DecodeError>
where B: Buf, Self: Sized,

Decodes a length-delimited instance of the message from buffer, and merges it into self.
Source§

impl PartialEq for AndroidReportConfig

Source§

fn eq(&self, other: &AndroidReportConfig) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl StructuralPartialEq for AndroidReportConfig

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.