Merge branch 'JS-timing'

This commit is contained in:
Brian Warner 2016-06-03 22:57:03 -07:00
commit d11af9d0a6
3 changed files with 35 additions and 21 deletions

View File

@ -48,6 +48,10 @@ rect.proc-span-import {
fill: #fcc;
}
rect.proc-span-websocket {
fill: #cfc;
}
rect.api {
fill: #cfc;
}

View File

@ -57,6 +57,7 @@ const server_message_color = {
const proc_map = {
"command dispatch": "dispatch",
"open websocket": "websocket",
"code established": "code-established",
"key established": "key-established",
"transit connected": "transit-connected",
@ -135,6 +136,8 @@ d3.json("data.json", function(d) {
if (proc_map[e.name]) {
rel_e.category = "proc";
rel_e.x = x_offset(3, side_name);
if (e.name === "open websocket")
rel_e.x = x_offset(4, side_name);
rel_e.text = proc_map[e.name];
if (e.name === "import")
rel_e.text += " " + e.details.which;
@ -184,8 +187,8 @@ d3.json("data.json", function(d) {
} else if (ev.name === "ws_receive") {
if (ev.details.message.type !== "message")
return;
id = ev.details.message.message.id;
phase = ev.details.message.message.phase;
id = ev.details.message.id;
phase = ev.details.message.phase;
} else
return;
@ -205,7 +208,7 @@ d3.json("data.json", function(d) {
cm.tx_x = x_offset(TX_COLUMN, ev.side_name);
cm.tx_side_name = ev.side_name;
} else { // message
cm.server_rx = ev.details.message.message.server_rx - first;
cm.server_rx = ev.details.message.server_rx - first;
cm.arrivals.push({server_tx: ev.details.message.server_tx - first,
rx: ev.start,
rx_x: x_offset(RX_COLUMN, ev.side_name)});
@ -508,7 +511,7 @@ d3.json("data.json", function(d) {
chart.selectAll("circle.c2c").filter(d => d.col == dot.col)
.attr("r", 10);
chart.selectAll("line.c2c")
.classed("active", d => d[2] == dot.col);
.classed("active", d => d.col == dot.col);
})
.on("mouseout", dot => {
tip.hide(dot);
@ -703,7 +706,26 @@ d3.json("data.json", function(d) {
redraw();
return;
});
/*
TODO
* identify the largest gaps in the timeline (biggest is probably waiting for
the recipient to start the program, followed by waiting for recipient to
type in code, followed by waiting for recipient to approve transfer, with
the time of actual transfer being anywhere among the others).
* identify groups of events that are separated by those gaps
* put a [1 2 3 4 all] set of buttons at the top of the page
* clicking on each button will zoom the display to 10% beyond the span of
events in the given group, or reset the zoom to include all events
*/
function OFF() {
/* leftover code from an older implementation, retained since there might
still be some useful pieces here */
function y_off(d) {
@ -1036,18 +1058,4 @@ d3.json("data.json", function(d) {
redraw();
$.get("done", function(_) {});
});
/*
TODO
* identify the largest gaps in the timeline (biggest is probably waiting for
the recipient to start the program, followed by waiting for recipient to
type in code, followed by waiting for recipient to approve transfer, with
the time of actual transfer being anywhere among the others).
* identify groups of events that are separated by those gaps
* put a [1 2 3 4 all] set of buttons at the top of the page
* clicking on each button will zoom the display to 10% beyond the span of
events in the given group, or reset the zoom to include all events
*/
}

View File

@ -223,6 +223,7 @@ class _Wormhole:
self._side = bytes_to_hexstr(os.urandom(5))
self._connection_state = CLOSED
self._connection_waiters = []
self._ws_t = None
self._started_get_code = False
self._get_code = None
self._started_input_code = False
@ -350,6 +351,7 @@ class _Wormhole:
# state
assert self._side
self._connection_state = OPENING
self._ws_t = self._timing.add("open websocket")
p = urlparse(self._ws_url)
f = WSFactory(self._ws_url)
f.wormhole = self
@ -369,7 +371,7 @@ class _Wormhole:
def _event_connected(self, ws):
self._ws = ws
self._ws_t = self._timing.add("websocket")
self._ws_t.finish()
def _event_ws_opened(self, _):
self._connection_state = OPEN