42 lines
1.2 KiB
Swift
42 lines
1.2 KiB
Swift
import CodexBarCore
|
|
import Foundation
|
|
import Testing
|
|
|
|
struct GroqUsageFetcherTests {
|
|
@Test
|
|
func `parses prometheus scalar response`() throws {
|
|
let json = """
|
|
{
|
|
"status": "success",
|
|
"data": {
|
|
"result": [
|
|
{ "value": [1710000000, "2.5"] },
|
|
{ "value": [1710000000, "1.5"] }
|
|
]
|
|
}
|
|
}
|
|
"""
|
|
|
|
let value = try GroqUsageFetcher._parseScalarForTesting(Data(json.utf8))
|
|
|
|
#expect(value == 4)
|
|
}
|
|
|
|
@Test
|
|
func `snapshot maps prometheus rates to menu windows`() {
|
|
let snapshot = GroqUsageSnapshot(
|
|
requestRatePerSecond: 2,
|
|
inputTokenRatePerSecond: 100,
|
|
outputTokenRatePerSecond: 50,
|
|
promptCacheHitRatePerSecond: 3,
|
|
updatedAt: Date(timeIntervalSince1970: 1))
|
|
.toUsageSnapshot()
|
|
|
|
#expect(snapshot.identity?.providerID == .groq)
|
|
#expect(snapshot.identity?.loginMethod == "Prometheus metrics")
|
|
#expect(snapshot.primary?.resetDescription == "120 req/min")
|
|
#expect(snapshot.secondary?.resetDescription == "9000 tok/min")
|
|
#expect(snapshot.tertiary?.resetDescription == "180 cache/min")
|
|
}
|
|
}
|