blob: 8567dda19df9fd62e73e5ab888f7f9dc033349d7 [file] [log] [blame]
# Copyright (C) 2024 The Android Open Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
import os
import perfetto.bigtrace.api
import subprocess
import unittest
from perfetto.common.exceptions import PerfettoException
# To run this test you must setup the a GCS bucket and a GKE cluster setup with
# Bigtrace running.
# This should be executed within the same VPC to allow for connection to the
# service.
# This should be replaced with the name of the trace bucket you have deployed
# on.
TRACE_BUCKET_NAME = "trace_example_bucket"
# This should be loaded in the top level of the bucket.
TRACE_PATH = "android_startup_real.perfetto_trace"
# This should be replaced with the address of the Orchestrator service for the
# Bigtrace service.
ORCHESTRATOR_ADDRESS = "127.0.0.1:5052"
# This can be changed if testing on a different trace.
QUERY_RESULT_COUNT = 339338
class BigtraceGcsTest(unittest.TestCase):
def setUpClass(self):
self.client = perfetto.bigtrace.api.Bigtrace(
wait_for_ready_for_testing=True)
def test_valid_trace(self):
traces = [f"/gcs/{TRACE_BUCKET_NAME}/o/{TRACE_PATH}"]
result = self.client.query(traces, "SELECT count(1) as count FROM slice")
self.assertEqual(result['count'].iloc[0], QUERY_RESULT_COUNT)
def test_invalid_trace(self):
with self.assertRaises(PerfettoException):
traces = [f"/gcs/{TRACE_BUCKET_NAME}/o/badpath"]
result = self.client.query(traces, "SELECT count(1) as count FROM slice")
def test_invalid_bucket(self):
with self.assertRaises(PerfettoException):
traces = [f"/gcs//o/{TRACE_PATH}"]
result = self.client.query(traces, "SELECT count(1) as count FROM slice")