chromium/third_party/perfetto/src/trace_redaction/trace_processor_integrationtest.cc

/*
 * 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.
 */

#include "perfetto/trace_processor/trace_processor.h"
#include "src/base/test/status_matchers.h"
#include "src/trace_redaction/trace_redaction_integration_fixture.h"
#include "test/gtest_and_gmock.h"

namespace perfetto::trace_redaction {
namespace {
constexpr auto kTrace =;

constexpr auto kPackageName =;
constexpr auto kPackageUid =;
}  // namespace

class AfterRedactionIntegrationTest
    : public testing::Test,
      protected TraceRedactionIntegrationFixure {};

// After redaction, the only package remaining in the package list should be the
// target package.
TEST_F(AfterRedactionIntegrationTest, FindsCorrectUid) {}

TEST_F(AfterRedactionIntegrationTest, CreatesThreadForEachCPU) {}

TEST_F(AfterRedactionIntegrationTest, ReducesProcesses) {}

// Tests comparing the trace before and after redaction.
class BeforeAndAfterAfterIntegrationTest
    : public testing::Test,
      protected TraceRedactionIntegrationFixure {};

TEST_F(BeforeAndAfterAfterIntegrationTest, KeepsAllTargetPackageThreads) {}

// There are two Zygotes on Android ('zygote', 'zygote64'). Modern device should
// have both, so we assume both are present in the unredacted trace. During
// redaction, all zygote information will be lost during the merge stage.
// However, since the target process references the zygote (ppid) a "ghost"
// process will appear in the process table.
class RedactedZygoteIntegrationTest
    : public BeforeAndAfterAfterIntegrationTest {};

TEST_F(RedactedZygoteIntegrationTest, KeepsOneZygote) {}

TEST_F(RedactedZygoteIntegrationTest, RemovesName) {}

// After redaction, the only application left should be the target package.
// While an application can have multiple processes, there should one top level
// process that was forked by the zygote.
//
// WARNING: This test relies on an assumption: there is only be one instance of
// the application running. We know this assumption to be faulty as multiple
// profiles allow for multiple instances of the same package to be running.
// In redaction, we treat them all as a single instance. The test trace does not
// use multiple profiles, so this assumption hold for this trace.
TEST_F(RedactedZygoteIntegrationTest, OnlyReferencedByTargetPackage) {}

}  // namespace perfetto::trace_redaction