コード例 #1
0
def create_metrics(platform: Platform) -> List[Metric]:
    """Creates a list of Metric objects from data in Platform object"""
    platform_metrics = []

    platform_metrics.extend([
        Metric.create_metric_with_metadata(MetricName.PLATFORM_TOPOLOGY_CORES,
                                           value=platform.cores),
        Metric.create_metric_with_metadata(MetricName.PLATFORM_TOPOLOGY_CPUS,
                                           value=platform.cpus),
        Metric.create_metric_with_metadata(MetricName.PLATFORM_TOPOLOGY_SOCKETS,
                                           value=platform.sockets),
        Metric.create_metric_with_metadata(MetricName.PLATFORM_LAST_SEEN,
                                           value=time.time()),
    ])

    # Exporting measurements into metrics.
    platform_metrics.extend(export_metrics_from_measurements(platform.measurements))

    platform_metrics.append(
        Metric.create_metric_with_metadata(
            MetricName.WCA_INFORMATION,
            value=1,
            labels=dict(
                sockets=str(platform.sockets),
                cores=str(platform.cores),
                cpus=str(platform.cpus),
                cpu_model=platform.cpu_model,
                wca_version=get_wca_version(),
            )
        )
    )

    return platform_metrics
コード例 #2
0
def test_export_metrics_from_measurements_artifical_metric():
    """We currently do not have a metric which len(METRICS_METADATA[X].levels) > 1,
        so the need to add such metric in metrics structures for the test."""
    with TestMetric():
        measurements = {'test_metric': {'id0': {'stress': 0, 'dbmango': 1},
                                        'id1': {'stress': 10, 'dbmango': 20}}}
        result = export_metrics_from_measurements(measurements)
        assert len(result) == 4
        assert result[0].name == 'test_metric'
        assert 'numa_node' in result[0].labels and 'container' in result[0].labels
        assert sorted([item.value for item in result]) == [0, 1, 10, 20]  # values for metrics
コード例 #3
0
def _build_tasks_metrics(tasks_data: TasksData) -> List[Metric]:
    """Build metrics for all tasks."""
    tasks_metrics: List[Metric] = []

    for task, data in tasks_data.items():
        task_metrics = export_metrics_from_measurements(data.measurements)

        # Decorate metrics with task specific labels.
        for task_metric in task_metrics:
            task_metric.labels.update(data.labels)

        tasks_metrics += task_metrics

    return tasks_metrics
コード例 #4
0
def test_export_metrics_from_measurements(measurements, expected):
    result = export_metrics_from_measurements(measurements)
    assert len(result) == expected