12da489cd246702bee5938545b18a6f710ed214bcJamie Gennis# Copyright (c) 2012 The Chromium Authors. All rights reserved.
22da489cd246702bee5938545b18a6f710ed214bcJamie Gennis# Use of this source code is governed by a BSD-style license that can be
32da489cd246702bee5938545b18a6f710ed214bcJamie Gennis# found in the LICENSE file.
42da489cd246702bee5938545b18a6f710ed214bcJamie Gennisimport time
52da489cd246702bee5938545b18a6f710ed214bcJamie Gennis
62da489cd246702bee5938545b18a6f710ed214bcJamie Gennisdef web_socket_do_extra_handshake(request):
72da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    # This example handler accepts any request. See origin_check_wsh.py for how
82da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    # to reject access from untrusted scripts based on origin value.
92da489cd246702bee5938545b18a6f710ed214bcJamie Gennis
102da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    pass  # Always accept.
112da489cd246702bee5938545b18a6f710ed214bcJamie Gennis
122da489cd246702bee5938545b18a6f710ed214bcJamie Gennisdef make_slice(start_time, elapsed_time, label, last):
132da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    out = []
142da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    out.append("{")
152da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    out.append('\"l\": \"{0}\",'.format(label))
162da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    out.append('\"s\": {0},'.format(start_time))
172da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    out.append('\"e\": {0}'.format(start_time+elapsed_time))
182da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    out.append('}')
192da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    if last == False:
202da489cd246702bee5938545b18a6f710ed214bcJamie Gennis        out.append(',')
212da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    return ''.join(out)
222da489cd246702bee5938545b18a6f710ed214bcJamie Gennis
232da489cd246702bee5938545b18a6f710ed214bcJamie Gennisdef make_thread(thread_name, base_time):
242da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    out = []
252da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    out.append('\"n\": \"{0}\",'.format(thread_name))
262da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    out.append('\"s\": [')
272da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    out.append(make_slice(base_time, 4, "alligator", False))
282da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    out.append(make_slice(base_time+2, 1, "bandicoot", False))
292da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    out.append(make_slice(base_time+5, 1, "cheetah", True))
302da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    out.append(']')
312da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    return ''.join(out)
322da489cd246702bee5938545b18a6f710ed214bcJamie Gennis
332da489cd246702bee5938545b18a6f710ed214bcJamie Gennisdef make_thread_payload(pid, thread_name, base_time):
342da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    out = []
352da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    out.append('\"pid\": \"{0}\",'.format(pid))
362da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    out.append('\"td\": {')
372da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    out.append(make_thread(thread_name, base_time))
382da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    out.append('}')
392da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    return ''.join(out)
402da489cd246702bee5938545b18a6f710ed214bcJamie Gennis
412da489cd246702bee5938545b18a6f710ed214bcJamie Gennisdef make_thread_command(base_time, thread_name):
422da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    out = []
432da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    out.append('{ \"cmd\": \"ptd\",')
442da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    out.append(make_thread_payload('314159', thread_name,  base_time))
452da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    out.append('}')
462da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    return ''.join(out)
472da489cd246702bee5938545b18a6f710ed214bcJamie Gennis
482da489cd246702bee5938545b18a6f710ed214bcJamie Gennisdef make_count(start_time, value, last):
492da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    out = []
502da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    out.append('{')
512da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    out.append('\"t\": {0},'.format(start_time))
522da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    out.append('\"v\": [{0}]'.format(value))
532da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    out.append('}')
542da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    if last == False:
552da489cd246702bee5938545b18a6f710ed214bcJamie Gennis        out.append(',')
562da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    return ''.join(out)
572da489cd246702bee5938545b18a6f710ed214bcJamie Gennis
582da489cd246702bee5938545b18a6f710ed214bcJamie Gennisdef make_counter(counter_name, series_name, base_time):
592da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    out = []
602da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    out.append('\"n\": \"{0}\",'.format(counter_name))
612da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    out.append('\"sn\": [\"{0}\"],'.format(series_name))
622da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    out.append('\"sc\": [2],')
632da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    out.append('\"c\": [')
642da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    out.append(make_count(base_time, 16, False))
652da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    out.append(make_count(base_time+1, 32, False))
662da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    out.append(make_count(base_time+2, 48, False))
672da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    out.append(make_count(base_time+3, 64, False))
682da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    out.append(make_count(base_time+8, 16, True))
692da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    out.append(']')
702da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    return ''.join(out)
712da489cd246702bee5938545b18a6f710ed214bcJamie Gennis
722da489cd246702bee5938545b18a6f710ed214bcJamie Gennisdef make_counter_payload(pid, counter_name, series_name, base_time):
732da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    out = []
742da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    out.append('\"pid\": \"{0}\",'.format(pid))
752da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    out.append('\"cd\": {')
762da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    out.append(make_counter(counter_name, series_name, base_time))
772da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    out.append('}')
782da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    return ''.join(out)
792da489cd246702bee5938545b18a6f710ed214bcJamie Gennis
802da489cd246702bee5938545b18a6f710ed214bcJamie Gennisdef make_counter_command(base_time, counter_name, series_name):
812da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    out = []
822da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    out.append('{ \"cmd\": \"pcd\",')
832da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    out.append(make_counter_payload('314159', counter_name,
842da489cd246702bee5938545b18a6f710ed214bcJamie Gennis                                    series_name, base_time))
852da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    out.append('}')
862da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    return ''.join(out)
872da489cd246702bee5938545b18a6f710ed214bcJamie Gennis
882da489cd246702bee5938545b18a6f710ed214bcJamie Gennisdef web_socket_transfer_data(request):
892da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    start_time = 0;
902da489cd246702bee5938545b18a6f710ed214bcJamie Gennis    while True:
912da489cd246702bee5938545b18a6f710ed214bcJamie Gennis        msg = make_thread_command(start_time, 'apple')
922da489cd246702bee5938545b18a6f710ed214bcJamie Gennis        request.ws_stream.send_message(msg, binary=False)
932da489cd246702bee5938545b18a6f710ed214bcJamie Gennis        msg = make_thread_command(start_time+1, 'banana')
942da489cd246702bee5938545b18a6f710ed214bcJamie Gennis        request.ws_stream.send_message(msg, binary=False)
952da489cd246702bee5938545b18a6f710ed214bcJamie Gennis        msg = make_thread_command(start_time+2, 'cherry')
962da489cd246702bee5938545b18a6f710ed214bcJamie Gennis        request.ws_stream.send_message(msg, binary=False)
972da489cd246702bee5938545b18a6f710ed214bcJamie Gennis        msg = make_counter_command(start_time+2, 'Base', 'Bytes')
982da489cd246702bee5938545b18a6f710ed214bcJamie Gennis        request.ws_stream.send_message(msg, binary=False)
992da489cd246702bee5938545b18a6f710ed214bcJamie Gennis        msg = make_counter_command(start_time+3, 'Font', 'Bytes')
1002da489cd246702bee5938545b18a6f710ed214bcJamie Gennis        request.ws_stream.send_message(msg, binary=False)
1012da489cd246702bee5938545b18a6f710ed214bcJamie Gennis        msg = make_counter_command(start_time+5, 'Textures', 'Bytes')
1022da489cd246702bee5938545b18a6f710ed214bcJamie Gennis        request.ws_stream.send_message(msg, binary=False)
1032da489cd246702bee5938545b18a6f710ed214bcJamie Gennis        start_time += 16
1042da489cd246702bee5938545b18a6f710ed214bcJamie Gennis        time.sleep(0.16)
1052da489cd246702bee5938545b18a6f710ed214bcJamie Gennis
1062da489cd246702bee5938545b18a6f710ed214bcJamie Gennis# vi:sts=4 sw=4 et
107