1[
2  {
3    "operation": "modify-overwrite-beta",
4    "spec": {
5      "*": {
6        "key-name": "=concat(@(1,params.sslProvider),' ',@(1,params.bufferType))"
7      }
8    }
9  },
10  {
11    "operation": "shift",
12    "spec": {
13      // pivot the data by benchmark name
14      "*": {
15        "key-name": {
16          "*": { // match any value of name
17            // go up the tree 3 levels
18            // grab the whole array element and
19            // write it to the output in an array
20            // aka benchmark1[] or benchmark2[]
21            "@(3,[&2])": "&.[]"
22          }
23        }
24      }
25    }
26  },
27  {
28    "operation": "shift",
29    "spec": {
30      // now group the relevant data
31      "*": { // benchmark 1 or 2
32        "$": "&.name",
33        "*": { // array of benchmark1 or 2
34          "params": {
35            "messageSize": "&3.x[]"
36          },
37          "primaryMetric": {
38            "score": "&3.y[]",
39            "scoreError": "&3.error_y.array[]"
40          }
41        }
42      }
43    }
44  },
45  {
46    // now convert from a map to a top level list
47    "operation": "shift",
48    "spec": {
49      // benchmark1 or benchmark2
50      "*": "data.[#1]"
51    }
52  },
53  {
54    // add graph default stuff
55    "operation": "modify-default-beta",
56    "spec": {
57      "data": {
58        "*": {
59          "mode": "lines+markers",
60          "type": "scatter"
61        }
62      },
63      "layout": {
64        "autosize": true,
65        "yaxis": {
66          "type": "linear",
67          "autorange": true,
68          "title": "messages/sec"
69        },
70        "title": "SslEngineBenchmark.sendMessage",
71        "showlegend": true,
72        "xaxis": {
73          "title": "size of message",
74          "type": "category",
75          "autorange": true
76        }
77      }
78    }
79  }
80]
81