Files
MacMonitor/Tests/MMLoadAverageTests.swift
T
gronod 66401bec28
MacMonitor CI/CD Pipeline / Build & Test (Intel x86_64) (push) Canceled after 0s
feat(telemetry): implement load average and thread concurrency provider (fixes #7)
2026-09-08 12:33:14 +01:00

63 lines
2.1 KiB
Swift

import XCTest
@testable import MacMonitor
final class MMLoadAverageTests: XCTestCase {
func testLoadMetricsCalculation() {
let metrics = MMLoadAverageProvider.calculateLoadMetrics(
withLoad1: 4.0,
load5: 3.5,
load15: 2.5,
taskCount: 500,
threadCount: 2200,
cpuCount: 8,
machFactor: 1.25
)
let load1 = metrics["load1m"] as? Double ?? 0
let norm1 = metrics["normalizedLoad1m"] as? Double ?? 0
let norm5 = metrics["normalizedLoad5m"] as? Double ?? 0
let taskCount = metrics["taskCount"] as? Int ?? 0
let threadCount = metrics["threadCount"] as? Int ?? 0
let isOverloaded = metrics["isOverloaded"] as? Bool ?? true
XCTAssertEqual(load1, 4.0, accuracy: 0.01)
XCTAssertEqual(norm1, 4.0 / 8.0, accuracy: 0.01)
XCTAssertEqual(norm5, 3.5 / 8.0, accuracy: 0.01)
XCTAssertEqual(taskCount, 500)
XCTAssertEqual(threadCount, 2200)
XCTAssertFalse(isOverloaded)
}
func testOverloadedStateDetection() {
let metrics = MMLoadAverageProvider.calculateLoadMetrics(
withLoad1: 12.0,
load5: 10.0,
load15: 8.0,
taskCount: 650,
threadCount: 3100,
cpuCount: 8,
machFactor: 0.4
)
let isOverloaded = metrics["isOverloaded"] as? Bool ?? false
let norm1 = metrics["normalizedLoad1m"] as? Double ?? 0
XCTAssertTrue(isOverloaded)
XCTAssertEqual(norm1, 1.5, accuracy: 0.01)
}
func testLiveLoadAverageProvider() throws {
let provider = MMLoadAverageProvider()
XCTAssertEqual(provider.domain, .system)
XCTAssertEqual(provider.providerIdentifier, "com.i3omb.macmonitor.telemetry.system.load")
let sample = try provider.sampleTelemetry()
XCTAssertNotNil(sample)
XCTAssertNotNil(sample["load1m"])
XCTAssertNotNil(sample["taskCount"])
XCTAssertNotNil(sample["threadCount"])
XCTAssertNotNil(sample["normalizedLoad1m"])
}
}