<html><body>
<style>

body, h1, h2, h3, div, span, p, pre, a {
  margin: 0;
  padding: 0;
  border: 0;
  font-weight: inherit;
  font-style: inherit;
  font-size: 100%;
  font-family: inherit;
  vertical-align: baseline;
}

body {
  font-size: 13px;
  padding: 1em;
}

h1 {
  font-size: 26px;
  margin-bottom: 1em;
}

h2 {
  font-size: 24px;
  margin-bottom: 1em;
}

h3 {
  font-size: 20px;
  margin-bottom: 1em;
  margin-top: 1em;
}

pre, code {
  line-height: 1.5;
  font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace;
}

pre {
  margin-top: 0.5em;
}

h1, h2, h3, p {
  font-family: Arial, sans serif;
}

h1, h2, h3 {
  border-bottom: solid #CCC 1px;
}

.toc_element {
  margin-top: 0.5em;
}

.firstline {
  margin-left: 2 em;
}

.method  {
  margin-top: 1em;
  border: solid 1px #CCC;
  padding: 1em;
  background: #EEE;
}

.details {
  font-weight: bold;
  font-size: 14px;
}

</style>

<h1><a href="toolresults_v1beta3.html">Cloud Tool Results API</a> . <a href="toolresults_v1beta3.perfMetricsSummary.html">perfMetricsSummary</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#create">create(projectId, historyId, executionId, stepId, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Creates a PerfMetricsSummary resource. Returns the existing one if it has</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="create">create(projectId, historyId, executionId, stepId, body=None, x__xgafv=None)</code>
  <pre>Creates a PerfMetricsSummary resource. Returns the existing one if it has
already been created.

May return any of the following error code(s):
- NOT_FOUND - The containing Step does not exist

Args:
  projectId: string, The cloud project (required)
  historyId: string, A tool results history ID. (required)
  executionId: string, A tool results execution ID. (required)
  stepId: string, A tool results step ID. (required)
  body: object, The request body.
    The object takes the form of:

{ # A summary of perf metrics collected and performance environment info
    &quot;stepId&quot;: &quot;A String&quot;, # A tool results step ID.
        # @OutputOnly
    &quot;historyId&quot;: &quot;A String&quot;, # A tool results history ID.
        # @OutputOnly
    &quot;perfEnvironment&quot;: { # Encapsulates performance environment info # Describes the environment in which the performance metrics were collected
      &quot;cpuInfo&quot;: { # CPU related environment info
        &quot;numberOfCores&quot;: 42, # the number of CPU cores
        &quot;cpuProcessor&quot;: &quot;A String&quot;, # description of the device processor ie &#x27;1.8 GHz hexa core 64-bit ARMv8-A&#x27;
        &quot;cpuSpeedInGhz&quot;: 3.14, # the CPU clock speed in GHz
      },
      &quot;memoryInfo&quot;: { # Memory related environment info
        &quot;memoryTotalInKibibyte&quot;: &quot;A String&quot;, # Total memory available on the device in KiB
        &quot;memoryCapInKibibyte&quot;: &quot;A String&quot;, # Maximum memory that can be allocated to the process in KiB
      },
    },
    &quot;graphicsStats&quot;: { # Graphics statistics for the App. # Graphics statistics for the entire run. Statistics are reset at the
        # beginning of the run and collected at the end of the run.
        # The information is collected from &#x27;adb shell dumpsys graphicsstats&#x27;.
        # For more info see:
        # https://developer.android.com/training/testing/performance.html
        # Statistics will only be present for API 23+.
      &quot;slowBitmapUploadCount&quot;: &quot;A String&quot;, # Total &quot;slow bitmap upload&quot; events.
      &quot;buckets&quot;: [ # Histogram of frame render times. There should be 154 buckets ranging from
          # [5ms, 6ms) to [4950ms, infinity)
        {
          &quot;frameCount&quot;: &quot;A String&quot;, # Number of frames in the bucket.
          &quot;renderMillis&quot;: &quot;A String&quot;, # Lower bound of render time in milliseconds.
        },
      ],
      &quot;totalFrames&quot;: &quot;A String&quot;, # Total frames rendered by package.
      &quot;p50Millis&quot;: &quot;A String&quot;, # 50th percentile frame render time in milliseconds.
      &quot;slowUiThreadCount&quot;: &quot;A String&quot;, # Total &quot;slow UI thread&quot; events.
      &quot;p99Millis&quot;: &quot;A String&quot;, # 99th percentile frame render time in milliseconds.
      &quot;slowDrawCount&quot;: &quot;A String&quot;, # Total &quot;slow draw&quot; events.
      &quot;highInputLatencyCount&quot;: &quot;A String&quot;, # Total &quot;high input latency&quot; events.
      &quot;p95Millis&quot;: &quot;A String&quot;, # 95th percentile frame render time in milliseconds.
      &quot;missedVsyncCount&quot;: &quot;A String&quot;, # Total &quot;missed vsync&quot; events.
      &quot;p90Millis&quot;: &quot;A String&quot;, # 90th percentile frame render time in milliseconds.
      &quot;jankyFrames&quot;: &quot;A String&quot;, # Total frames with slow render time. Should be &lt;= total_frames.
    },
    &quot;projectId&quot;: &quot;A String&quot;, # The cloud project
        # @OutputOnly
    &quot;perfMetrics&quot;: [ # Set of resource collected
      &quot;A String&quot;,
    ],
    &quot;appStartTime&quot;: {
      &quot;initialDisplayTime&quot;: { #  # The time from app start to the first displayed activity being drawn,
          # as reported in Logcat. See
          # https://developer.android.com/topic/performance/launch-time.html#time-initial
          # A Duration represents a signed, fixed-length span of time represented
          # as a count of seconds and fractions of seconds at nanosecond
          # resolution. It is independent of any calendar and concepts like &quot;day&quot;
          # or &quot;month&quot;. It is related to Timestamp in that the difference between
          # two Timestamp values is a Duration and it can be added or subtracted
          # from a Timestamp. Range is approximately +-10,000 years.
        &quot;seconds&quot;: &quot;A String&quot;, # Signed seconds of the span of time. Must be from -315,576,000,000
            # to +315,576,000,000 inclusive. Note: these bounds are computed from:
            # 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years
        &quot;nanos&quot;: 42, # Signed fractions of a second at nanosecond resolution of the span
            # of time. Durations less than one second are represented with a 0
            # `seconds` field and a positive or negative `nanos` field. For durations
            # of one second or more, a non-zero value for the `nanos` field must be
            # of the same sign as the `seconds` field. Must be from -999,999,999
            # to +999,999,999 inclusive.
      },
      &quot;fullyDrawnTime&quot;: { #  # Optional. The time from app start to reaching the developer-reported
          # &quot;fully drawn&quot; time. This is only stored if the app includes a call to
          # Activity.reportFullyDrawn(). See
          # https://developer.android.com/topic/performance/launch-time.html#time-full
          # A Duration represents a signed, fixed-length span of time represented
          # as a count of seconds and fractions of seconds at nanosecond
          # resolution. It is independent of any calendar and concepts like &quot;day&quot;
          # or &quot;month&quot;. It is related to Timestamp in that the difference between
          # two Timestamp values is a Duration and it can be added or subtracted
          # from a Timestamp. Range is approximately +-10,000 years.
        &quot;seconds&quot;: &quot;A String&quot;, # Signed seconds of the span of time. Must be from -315,576,000,000
            # to +315,576,000,000 inclusive. Note: these bounds are computed from:
            # 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years
        &quot;nanos&quot;: 42, # Signed fractions of a second at nanosecond resolution of the span
            # of time. Durations less than one second are represented with a 0
            # `seconds` field and a positive or negative `nanos` field. For durations
            # of one second or more, a non-zero value for the `nanos` field must be
            # of the same sign as the `seconds` field. Must be from -999,999,999
            # to +999,999,999 inclusive.
      },
    },
    &quot;executionId&quot;: &quot;A String&quot;, # A tool results execution ID.
        # @OutputOnly
  }

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A summary of perf metrics collected and performance environment info
      &quot;stepId&quot;: &quot;A String&quot;, # A tool results step ID.
          # @OutputOnly
      &quot;historyId&quot;: &quot;A String&quot;, # A tool results history ID.
          # @OutputOnly
      &quot;perfEnvironment&quot;: { # Encapsulates performance environment info # Describes the environment in which the performance metrics were collected
        &quot;cpuInfo&quot;: { # CPU related environment info
          &quot;numberOfCores&quot;: 42, # the number of CPU cores
          &quot;cpuProcessor&quot;: &quot;A String&quot;, # description of the device processor ie &#x27;1.8 GHz hexa core 64-bit ARMv8-A&#x27;
          &quot;cpuSpeedInGhz&quot;: 3.14, # the CPU clock speed in GHz
        },
        &quot;memoryInfo&quot;: { # Memory related environment info
          &quot;memoryTotalInKibibyte&quot;: &quot;A String&quot;, # Total memory available on the device in KiB
          &quot;memoryCapInKibibyte&quot;: &quot;A String&quot;, # Maximum memory that can be allocated to the process in KiB
        },
      },
      &quot;graphicsStats&quot;: { # Graphics statistics for the App. # Graphics statistics for the entire run. Statistics are reset at the
          # beginning of the run and collected at the end of the run.
          # The information is collected from &#x27;adb shell dumpsys graphicsstats&#x27;.
          # For more info see:
          # https://developer.android.com/training/testing/performance.html
          # Statistics will only be present for API 23+.
        &quot;slowBitmapUploadCount&quot;: &quot;A String&quot;, # Total &quot;slow bitmap upload&quot; events.
        &quot;buckets&quot;: [ # Histogram of frame render times. There should be 154 buckets ranging from
            # [5ms, 6ms) to [4950ms, infinity)
          {
            &quot;frameCount&quot;: &quot;A String&quot;, # Number of frames in the bucket.
            &quot;renderMillis&quot;: &quot;A String&quot;, # Lower bound of render time in milliseconds.
          },
        ],
        &quot;totalFrames&quot;: &quot;A String&quot;, # Total frames rendered by package.
        &quot;p50Millis&quot;: &quot;A String&quot;, # 50th percentile frame render time in milliseconds.
        &quot;slowUiThreadCount&quot;: &quot;A String&quot;, # Total &quot;slow UI thread&quot; events.
        &quot;p99Millis&quot;: &quot;A String&quot;, # 99th percentile frame render time in milliseconds.
        &quot;slowDrawCount&quot;: &quot;A String&quot;, # Total &quot;slow draw&quot; events.
        &quot;highInputLatencyCount&quot;: &quot;A String&quot;, # Total &quot;high input latency&quot; events.
        &quot;p95Millis&quot;: &quot;A String&quot;, # 95th percentile frame render time in milliseconds.
        &quot;missedVsyncCount&quot;: &quot;A String&quot;, # Total &quot;missed vsync&quot; events.
        &quot;p90Millis&quot;: &quot;A String&quot;, # 90th percentile frame render time in milliseconds.
        &quot;jankyFrames&quot;: &quot;A String&quot;, # Total frames with slow render time. Should be &lt;= total_frames.
      },
      &quot;projectId&quot;: &quot;A String&quot;, # The cloud project
          # @OutputOnly
      &quot;perfMetrics&quot;: [ # Set of resource collected
        &quot;A String&quot;,
      ],
      &quot;appStartTime&quot;: {
        &quot;initialDisplayTime&quot;: { #  # The time from app start to the first displayed activity being drawn,
            # as reported in Logcat. See
            # https://developer.android.com/topic/performance/launch-time.html#time-initial
            # A Duration represents a signed, fixed-length span of time represented
            # as a count of seconds and fractions of seconds at nanosecond
            # resolution. It is independent of any calendar and concepts like &quot;day&quot;
            # or &quot;month&quot;. It is related to Timestamp in that the difference between
            # two Timestamp values is a Duration and it can be added or subtracted
            # from a Timestamp. Range is approximately +-10,000 years.
          &quot;seconds&quot;: &quot;A String&quot;, # Signed seconds of the span of time. Must be from -315,576,000,000
              # to +315,576,000,000 inclusive. Note: these bounds are computed from:
              # 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years
          &quot;nanos&quot;: 42, # Signed fractions of a second at nanosecond resolution of the span
              # of time. Durations less than one second are represented with a 0
              # `seconds` field and a positive or negative `nanos` field. For durations
              # of one second or more, a non-zero value for the `nanos` field must be
              # of the same sign as the `seconds` field. Must be from -999,999,999
              # to +999,999,999 inclusive.
        },
        &quot;fullyDrawnTime&quot;: { #  # Optional. The time from app start to reaching the developer-reported
            # &quot;fully drawn&quot; time. This is only stored if the app includes a call to
            # Activity.reportFullyDrawn(). See
            # https://developer.android.com/topic/performance/launch-time.html#time-full
            # A Duration represents a signed, fixed-length span of time represented
            # as a count of seconds and fractions of seconds at nanosecond
            # resolution. It is independent of any calendar and concepts like &quot;day&quot;
            # or &quot;month&quot;. It is related to Timestamp in that the difference between
            # two Timestamp values is a Duration and it can be added or subtracted
            # from a Timestamp. Range is approximately +-10,000 years.
          &quot;seconds&quot;: &quot;A String&quot;, # Signed seconds of the span of time. Must be from -315,576,000,000
              # to +315,576,000,000 inclusive. Note: these bounds are computed from:
              # 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years
          &quot;nanos&quot;: 42, # Signed fractions of a second at nanosecond resolution of the span
              # of time. Durations less than one second are represented with a 0
              # `seconds` field and a positive or negative `nanos` field. For durations
              # of one second or more, a non-zero value for the `nanos` field must be
              # of the same sign as the `seconds` field. Must be from -999,999,999
              # to +999,999,999 inclusive.
        },
      },
      &quot;executionId&quot;: &quot;A String&quot;, # A tool results execution ID.
          # @OutputOnly
    }</pre>
</div>

</body></html>