MCPcopy Create free account
hub / github.com/avoidwork/tenso / testHypermediaMemory

Function testHypermediaMemory

benchmarks/memory.js:503–565  ·  view source on GitHub ↗

* Tests hypermedia memory usage

()

Source from the content-addressed store, hash-verified

501 * Tests hypermedia memory usage
502 */
503async function testHypermediaMemory () {
504 console.log("🔥 Hypermedia Memory Test");
505 console.log("-".repeat(50));
506
507 const monitor = new MemoryMonitor();
508 const server = tenso({
509 silent: true,
510 logging: { enabled: false },
511 hypermedia: { enabled: true, header: true }
512 });
513
514 monitor.snapshot("Initial state");
515
516 // Create test data with many linkable fields
517 const testData = Array.from({ length: 1000 }, (_, i) => ({
518 id: i,
519 user_id: i + 1000,
520 category_id: i % 10 + 1,
521 related_ids: [i + 1, i + 2, i + 3],
522 profile_url: `/users/${i + 1000}`,
523 comments_url: `/posts/${i}/comments`,
524 tags: [`tag${i % 20}`, `category${i % 10}`]
525 }));
526
527 // Process hypermedia for this data many times
528 for (let i = 0; i < 100; i++) {
529 const req = {
530 method: "GET",
531 url: "/api/posts",
532 headers: { accept: "application/json" },
533 parsed: {
534 searchParams: new URLSearchParams("page=1&page_size=10"),
535 href: "http://localhost/api/posts"
536 },
537 hypermedia: true,
538 hypermediaHeader: true,
539 server: server
540 };
541
542 const res = {
543 statusCode: 200,
544 headers: {},
545 getHeader: name => res.headers[name],
546 removeHeader: name => delete res.headers[name],
547 header: (name, value) => res.headers[name] = value, // eslint-disable-line no-return-assign
548 getHeaders: () => res.headers
549 };
550
551 // This would normally be called by the hypermedia middleware
552 // We're simulating the link generation process
553 const rep = { data: testData.slice(i * 10, (i + 1) * 10) };
554
555 // Simulate hypermedia processing
556 server.render(req, res, rep);
557
558 if (i % 20 === 0) {
559 monitor.forceGC();
560 }

Callers 1

mainFunction · 0.85

Calls 6

snapshotMethod · 0.95
forceGCMethod · 0.95
reportMethod · 0.95
tensoFunction · 0.90
logMethod · 0.80
renderMethod · 0.80

Tested by

no test coverage detected