34 lines
1.4 KiB
Swift
34 lines
1.4 KiB
Swift
// SPDX-FileCopyrightText: 2026 Kaede Akino
|
|
// SPDX-License-Identifier: GPL-3.0-only
|
|
|
|
import Foundation
|
|
import TermindDomain
|
|
import Testing
|
|
|
|
@Suite
|
|
nonisolated struct MetricsCPUUsageTests {
|
|
private let before: [UInt64] = [100, 0, 100, 800, 0, 0, 0, 0, 90, 0]
|
|
private let after: [UInt64] = [120, 0, 110, 850, 15, 0, 0, 5, 110, 0]
|
|
|
|
@Test func aggregateAndCoreShareCounterBreakdownWithoutCountingGuestTwice() {
|
|
let point = MetricsCalculation.point(
|
|
previous: MetricsSample(uptime: 100, cpu: before, cpuCores: [7: before]),
|
|
current: MetricsSample(uptime: 102, cpu: after, cpuCores: [7: after]),
|
|
selection: MetricsSelection(id: UUID()), date: .now)
|
|
|
|
let expected = MetricsCPUUsage(utilization: 35, user: 20, system: 10, wait: 15, steal: 5, idle: 50)
|
|
#expect(point.cpuUsage == expected)
|
|
#expect(point.cpuCores == [MetricsCPUPoint(id: 7, usage: expected)])
|
|
}
|
|
|
|
@Test func newAndResetCoresRemainUnknownWithoutDiscardingAggregateUsage() {
|
|
let point = MetricsCalculation.point(
|
|
previous: MetricsSample(uptime: 100, cpu: before, cpuCores: [7: before]),
|
|
current: MetricsSample(uptime: 102, cpu: after, cpuCores: [7: [UInt64](repeating: 0, count: 8), 2: after]),
|
|
selection: MetricsSelection(id: UUID()), date: .now)
|
|
|
|
#expect(point.cpu == 35)
|
|
#expect(point.cpuCores == [MetricsCPUPoint(id: 2), MetricsCPUPoint(id: 7)])
|
|
}
|
|
}
|