blob: 2c43ac4d1c26967fd74de9d6ea293d46a9c9b896 [file] [log] [blame]
# Copyright 2025 The Fuchsia Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
"""Tests `ffx profile memory component` integration with `components_sql.py`
"""
import json
import os.path
import sqlite3
import components_sql
from fuchsia_base_test import fuchsia_base_test
from honeydew.fuchsia_device import fuchsia_device
from mobly import asserts, test_runner
class ComponentsSqlEndToEndTest(fuchsia_base_test.FuchsiaBaseTest):
def setup_class(self) -> None:
"""setup_class is called once before running tests."""
super().setup_class()
self.dut: fuchsia_device.FuchsiaDevice = self.fuchsia_devices[0]
self.dut.ffx.run(
["config", "set", "ffx_profile_memory_components", "true"]
)
def test_components_sql_creates_db(self) -> None:
detailed_profile = self.dut.ffx.run(
[
"--machine",
"json",
"profile",
"memory",
"components",
"--detailed",
],
log_output=False,
)
components_sql.process_json_input(
json.loads(detailed_profile),
os.path.join(self.test_case_path, "components_sql_test.db"),
)
db = sqlite3.connect(
os.path.join(self.test_case_path, "components_sql_test.db")
)
cursor = db.cursor()
cursor.execute("SELECT name FROM sqlite_master WHERE type='table';")
tables = cursor.fetchall()
asserts.assert_count_equal(
[
("kernel_stats",),
("principals",),
("vmos",),
("resource_names",),
("resources",),
("principals_resources",),
],
tables,
)
cursor.execute("SELECT * FROM principals;")
principals = cursor.fetchall()
asserts.assert_greater(len(principals), 0)
cursor.execute("SELECT * FROM vmos;")
vmos = cursor.fetchall()
asserts.assert_greater(len(vmos), 0)
cursor.execute("SELECT * FROM kernel_stats;")
kernel_stats = cursor.fetchall()
asserts.assert_greater(len(kernel_stats), 0)
if __name__ == "__main__":
test_runner.main()