UNPKG

@flarelabs-net/workers-observability-utils

Version:

A collection of Utilities for Capturing Logs and Metrics from Cloudflare Workers

119 lines (118 loc) 3.96 kB
import { describe, it, expect, beforeEach } from "vitest"; import { TraceItemDb } from "./traceItem"; describe("TraceItemDb", () => { let traceItemDb; beforeEach(() => { traceItemDb = new TraceItemDb(); }); it("should store and retrieve trace items", () => { const mockTraceItems = [ { scriptName: "test-worker-1", executionModel: "isolate", outcome: "ok", cpuTime: 100, wallTime: 150, eventTimestamp: Date.now(), event: {}, truncated: false, diagnosticsChannelEvents: [], logs: [], exceptions: [], }, { scriptName: "test-worker-2", executionModel: "isolate", outcome: "exception", cpuTime: 200, wallTime: 250, eventTimestamp: Date.now(), event: {}, truncated: false, diagnosticsChannelEvents: [], logs: [], exceptions: [], }, ]; traceItemDb.storeTraceItems(mockTraceItems); const retrievedItems = traceItemDb.getTraceItems(); expect(retrievedItems).toHaveLength(2); expect(retrievedItems[0]).toMatchObject({ scriptName: "test-worker-1", executionModel: "isolate", outcome: "ok", cpuTime: 100, wallTime: 150, }); expect(retrievedItems[1]).toMatchObject({ scriptName: "test-worker-2", executionModel: "isolate", outcome: "exception", cpuTime: 200, wallTime: 250, }); }); it("should append trace items when called multiple times", () => { const firstBatch = [ { scriptName: "worker-1", executionModel: "isolate", outcome: "ok", cpuTime: 100, wallTime: 150, eventTimestamp: Date.now(), event: {}, truncated: false, diagnosticsChannelEvents: [], logs: [], exceptions: [], }, ]; const secondBatch = [ { scriptName: "worker-2", executionModel: "isolate", outcome: "ok", cpuTime: 200, wallTime: 250, eventTimestamp: Date.now(), event: {}, truncated: false, diagnosticsChannelEvents: [], logs: [], exceptions: [], }, ]; traceItemDb.storeTraceItems(firstBatch); traceItemDb.storeTraceItems(secondBatch); const allItems = traceItemDb.getTraceItems(); expect(allItems).toHaveLength(2); expect(allItems[0].scriptName).toBe("worker-1"); expect(allItems[1].scriptName).toBe("worker-2"); }); it("should clear all trace items", () => { const mockTraceItems = [ { scriptName: "test-worker", executionModel: "isolate", outcome: "ok", cpuTime: 100, wallTime: 150, eventTimestamp: Date.now(), event: {}, truncated: false, diagnosticsChannelEvents: [], logs: [], exceptions: [], }, ]; traceItemDb.storeTraceItems(mockTraceItems); expect(traceItemDb.getTraceItems()).toHaveLength(1); traceItemDb.clear(); expect(traceItemDb.getTraceItems()).toHaveLength(0); }); it("should handle empty arrays", () => { traceItemDb.storeTraceItems([]); expect(traceItemDb.getTraceItems()).toHaveLength(0); }); });