summaryrefslogtreecommitdiffstats
path: root/devtools/client/netmonitor/test/sjs_timings-test-server.sjs
blob: 64464610398cf8333fdb24e70d522cf7582a17d8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
/* Any copyright is dedicated to the Public Domain.
   http://creativecommons.org/publicdomain/zero/1.0/ */
"use strict";

const trailerServerTiming = [
  { metric: "metric3", duration: "99789.11", description: "time3" },
  { metric: "metric4", duration: "1112.13", description: "time4" },
];

const responseServerTiming = [
  { metric: "metric1", duration: "123.4", description: "time1" },
  { metric: "metric2", duration: "0", description: "time2" },
];

function handleRequest(request, response) {
  const body = "c\r\ndata reached\r\n3\r\nhej\r\n0\r\n";

  response.seizePower();
  response.write("HTTP/1.1 200 OK\r\n");
  response.write("Content-Type: text/plain\r\n");
  response.write(createServerTimingHeader(responseServerTiming));
  response.write("Transfer-Encoding: chunked\r\n");
  response.write("\r\n");
  response.write(body);
  response.write(createServerTimingHeader(trailerServerTiming));
  response.write("\r\n");
  response.finish();
}

function createServerTimingHeader(headerData) {
  let header = "";
  for (let i = 0; i < headerData.length; i++) {
    header +=
      "Server-Timing: " +
      headerData[i].metric +
      ";" +
      "dur=" +
      headerData[i].duration +
      ";" +
      "desc=" +
      headerData[i].description +
      "\r\n";
  }
  return header;
}