Skip to main content
Glama

hny-mcp

by honeycombio
MIT License
2
36
  • Linux
  • Apple
transformations.test.ts3.46 kB
import { describe, it, expect } from "vitest"; import { summarizeResults } from "./transformations.js"; import { QueryResultValue } from "../types/query.js"; import { z } from "zod"; import { QueryToolSchema } from "../types/schema.js"; describe("Response transformations", () => { describe("summarizeResults", () => { it("handles empty results", () => { const results: QueryResultValue[] = []; const params: z.infer<typeof QueryToolSchema> = { environment: "test-env", dataset: "test-dataset", calculations: [{ op: "COUNT" }] }; const summary = summarizeResults(results, params); expect(summary).toEqual({ count: 0 }); }); it("calculates basic count stats", () => { const results: QueryResultValue[] = [ { COUNT: 5, service: "api" }, { COUNT: 10, service: "web" }, { COUNT: 3, service: "database" } ]; const params: z.infer<typeof QueryToolSchema> = { environment: "test-env", dataset: "test-dataset", calculations: [{ op: "COUNT" }], breakdowns: ["service"] }; const summary = summarizeResults(results, params); expect(summary.count).toBe(3); if (summary.countStats) { expect(summary.countStats.total).toBe(18); } if (summary.breakdowns && summary.breakdowns.service) { expect(summary.breakdowns.service.uniqueCount).toBe(3); } }); it("processes numeric calculations", () => { const results: QueryResultValue[] = [ { "AVG(duration)": 150, "MAX(duration)": 300, service: "api" }, { "AVG(duration)": 200, "MAX(duration)": 400, service: "web" } ]; const params: z.infer<typeof QueryToolSchema> = { environment: "test-env", dataset: "test-dataset", calculations: [ { op: "AVG", column: "duration" }, { op: "MAX", column: "duration" } ], breakdowns: ["service"] }; const summary = summarizeResults(results, params); expect(summary.count).toBe(2); const avgStats = summary["AVG(duration)"]; if (avgStats && typeof avgStats !== 'number') { expect(avgStats.min).toBe(150); expect(avgStats.max).toBe(200); } const maxStats = summary["MAX(duration)"]; if (maxStats && typeof maxStats !== 'number') { expect(maxStats.min).toBe(300); expect(maxStats.max).toBe(400); } }); it("calculates breakdown cardinality", () => { const results: QueryResultValue[] = [ { service: "api", region: "us-east" }, { service: "api", region: "us-west" }, { service: "web", region: "us-east" }, { service: "database", region: "us-west" } ]; const params: z.infer<typeof QueryToolSchema> = { environment: "test-env", dataset: "test-dataset", calculations: [{ op: "COUNT" }], breakdowns: ["service", "region"] }; const summary = summarizeResults(results, params); expect(summary.count).toBe(4); if (summary.breakdowns) { if (summary.breakdowns.service) { expect(summary.breakdowns.service.uniqueCount).toBe(3); } if (summary.breakdowns.region) { expect(summary.breakdowns.region.uniqueCount).toBe(2); } } }); }); });

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/honeycombio/honeycomb-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server