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