Path: blob/main/tests/integration_tests/functional/test_metrics.py
1958 views
# Copyright 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved.1# SPDX-License-Identifier: Apache-2.02"""Tests the metrics system."""34import datetime5import os6import math7import platform8import host_tools.logging as log_tools91011def test_flush_metrics(test_microvm_with_api):12"""Check the `FlushMetrics` vmm action."""13microvm = test_microvm_with_api14microvm.spawn()15microvm.basic_config()1617# Configure metrics system.18metrics_fifo_path = os.path.join(microvm.path, 'metrics_fifo')19metrics_fifo = log_tools.Fifo(metrics_fifo_path)2021response = microvm.metrics.put(22metrics_path=microvm.create_jailed_resource(metrics_fifo.path)23)24assert microvm.api_session.is_status_no_content(response.status_code)2526microvm.start()2728metrics = microvm.flush_metrics(metrics_fifo)2930exp_keys = [31'utc_timestamp_ms',32'api_server',33'balloon',34'block',35'get_api_requests',36'i8042',37'latencies_us',38'logger',39'mmds',40'net',41'patch_api_requests',42'put_api_requests',43'seccomp',44'vcpu',45'vmm',46'uart',47'signals',48'vsock'49]5051if platform.machine() == "aarch64":52exp_keys.append("rtc")5354assert set(metrics.keys()) == set(exp_keys)5556utc_time = datetime.datetime.now(datetime.timezone.utc)57utc_timestamp_ms = math.floor(utc_time.timestamp() * 1000)5859# Assert that the absolute difference is less than 1 second, to check that60# the reported utc_timestamp_ms is actually a UTC timestamp from the Unix61# Epoch.Regression test for:62# https://github.com/firecracker-microvm/firecracker/issues/263963assert abs(utc_timestamp_ms - metrics['utc_timestamp_ms']) < 1000646566