1bd87c1f9d792ed619d3dc6287ad3e7a0d6702a9dJoseph Hwang#!/usr/bin/awk -f
2bd87c1f9d792ed619d3dc6287ad3e7a0d6702a9dJoseph Hwang
3bd87c1f9d792ed619d3dc6287ad3e7a0d6702a9dJoseph Hwang# Copyright (c) 2013 The Chromium OS Authors. All rights reserved.
4bd87c1f9d792ed619d3dc6287ad3e7a0d6702a9dJoseph Hwang# Use of this source code is governed by a BSD-style license that can be
5bd87c1f9d792ed619d3dc6287ad3e7a0d6702a9dJoseph Hwang# found in the LICENSE file.
6bd87c1f9d792ed619d3dc6287ad3e7a0d6702a9dJoseph Hwang
7bd87c1f9d792ed619d3dc6287ad3e7a0d6702a9dJoseph Hwang# This script computes the intervals between the time instants of
8bd87c1f9d792ed619d3dc6287ad3e7a0d6702a9dJoseph Hwang# contiguous SYN_REPORT packets, and count the number of packets
9bd87c1f9d792ed619d3dc6287ad3e7a0d6702a9dJoseph Hwang# with time intervals greater than 1/60 seconds.
10bd87c1f9d792ed619d3dc6287ad3e7a0d6702a9dJoseph Hwang# Note: this script is larged borrowed from adlr@'s timing test in shell.
11bd87c1f9d792ed619d3dc6287ad3e7a0d6702a9dJoseph Hwang
12bd87c1f9d792ed619d3dc6287ad3e7a0d6702a9dJoseph Hwang# Usage: DISPLAY=:0 mtplot tools/awk_process_syn
13bd87c1f9d792ed619d3dc6287ad3e7a0d6702a9dJoseph Hwang#  Note: You need to press 'q' instead of ctrl-c to exit mtplot
14bd87c1f9d792ed619d3dc6287ad3e7a0d6702a9dJoseph Hwang#        in order to print the count of large intervals.
15bd87c1f9d792ed619d3dc6287ad3e7a0d6702a9dJoseph Hwang
16bd87c1f9d792ed619d3dc6287ad3e7a0d6702a9dJoseph Hwang
17bd87c1f9d792ed619d3dc6287ad3e7a0d6702a9dJoseph HwangBEGIN {
18bd87c1f9d792ed619d3dc6287ad3e7a0d6702a9dJoseph Hwang  previous = 0;
19bd87c1f9d792ed619d3dc6287ad3e7a0d6702a9dJoseph Hwang  count_packets = 0;
20bd87c1f9d792ed619d3dc6287ad3e7a0d6702a9dJoseph Hwang  count_large = 0;
21bd87c1f9d792ed619d3dc6287ad3e7a0d6702a9dJoseph Hwang}
22bd87c1f9d792ed619d3dc6287ad3e7a0d6702a9dJoseph Hwang
23bd87c1f9d792ed619d3dc6287ad3e7a0d6702a9dJoseph Hwang/SYN_REPORT/ {
24bd87c1f9d792ed619d3dc6287ad3e7a0d6702a9dJoseph Hwang  if (previous == 0) {
25bd87c1f9d792ed619d3dc6287ad3e7a0d6702a9dJoseph Hwang    previous = $3;
26bd87c1f9d792ed619d3dc6287ad3e7a0d6702a9dJoseph Hwang  } else {
27bd87c1f9d792ed619d3dc6287ad3e7a0d6702a9dJoseph Hwang    current = $3;
28bd87c1f9d792ed619d3dc6287ad3e7a0d6702a9dJoseph Hwang    interval = current - previous;
29bd87c1f9d792ed619d3dc6287ad3e7a0d6702a9dJoseph Hwang    previous = current;
30bd87c1f9d792ed619d3dc6287ad3e7a0d6702a9dJoseph Hwang    count_packets++;
31bd87c1f9d792ed619d3dc6287ad3e7a0d6702a9dJoseph Hwang    if (interval > 1.0 / 60) {
32bd87c1f9d792ed619d3dc6287ad3e7a0d6702a9dJoseph Hwang      mark = "*****";
33bd87c1f9d792ed619d3dc6287ad3e7a0d6702a9dJoseph Hwang      count_large++;
34bd87c1f9d792ed619d3dc6287ad3e7a0d6702a9dJoseph Hwang    } else {
35bd87c1f9d792ed619d3dc6287ad3e7a0d6702a9dJoseph Hwang      mark = "     ";
36bd87c1f9d792ed619d3dc6287ad3e7a0d6702a9dJoseph Hwang    }
37bd87c1f9d792ed619d3dc6287ad3e7a0d6702a9dJoseph Hwang    template = "  %s interval: %.6f   (%s)\n";
38bd87c1f9d792ed619d3dc6287ad3e7a0d6702a9dJoseph Hwang    printf(template, mark, interval, $0);
39bd87c1f9d792ed619d3dc6287ad3e7a0d6702a9dJoseph Hwang  }
40bd87c1f9d792ed619d3dc6287ad3e7a0d6702a9dJoseph Hwang}
41bd87c1f9d792ed619d3dc6287ad3e7a0d6702a9dJoseph Hwang
42bd87c1f9d792ed619d3dc6287ad3e7a0d6702a9dJoseph HwangEND {
43bd87c1f9d792ed619d3dc6287ad3e7a0d6702a9dJoseph Hwang  msg = "\nthe count of large intervals: %d out of %d packets\n\n"
44bd87c1f9d792ed619d3dc6287ad3e7a0d6702a9dJoseph Hwang  printf(msg, count_large, count_packets);
45bd87c1f9d792ed619d3dc6287ad3e7a0d6702a9dJoseph Hwang}
46bd87c1f9d792ed619d3dc6287ad3e7a0d6702a9dJoseph Hwang
47