blob: a8dffedb2a3fa8483dea4b1152b9d75f0ee8f49e [file] [log] [blame]
Chris Craik93216d02015-03-05 13:58:42 -08001#!/usr/bin/env python
2# Copyright (c) 2014 The Chromium Authors. All rights reserved.
3# Use of this source code is governed by a BSD-style license that can be
4# found in the LICENSE file.
Chris Craikf516a622015-04-01 17:52:39 -07005import json
Chris Craik93216d02015-03-05 13:58:42 -08006import os
7import sys
Chris Craik93216d02015-03-05 13:58:42 -08008
9from trace_viewer import trace_viewer_project
10import tvcm
11
12_ROOT_PATH = os.path.abspath(os.path.join(os.path.dirname(__file__), '..', '..'))
13
14def getFilesIn(basedir):
15 data_files = []
16 for dirpath, dirnames, filenames in os.walk(basedir, followlinks=True):
17 new_dirnames = [d for d in dirnames if not d.startswith('.')]
18 del dirnames[:]
19 dirnames += new_dirnames
20
21 for f in filenames:
22 if f.startswith('.'):
23 continue
24 full_f = os.path.join(dirpath, f)
25 rel_f = os.path.relpath(full_f, basedir)
26 data_files.append(rel_f)
27
28 data_files.sort()
29 return data_files
30
31
32def do_GET_json_examples(request):
33 test_data_path = os.path.abspath(os.path.join(_ROOT_PATH, 'test_data'))
34 data_files = getFilesIn(test_data_path)
35 files_as_json = json.dumps(data_files)
36
37 request.send_response(200)
38 request.send_header('Content-Type', 'application/json')
39 request.send_header('Content-Length', len(files_as_json))
40 request.end_headers()
41 request.wfile.write(files_as_json)
42
43def do_GET_json_examples_skp(request):
44 skp_data_path = os.path.abspath(os.path.join(_ROOT_PATH, 'skp_data'))
45 data_files = getFilesIn(skp_data_path)
46 files_as_json = json.dumps(data_files)
47
48 request.send_response(200)
49 request.send_header('Content-Type', 'application/json')
50 request.send_header('Content-Length', len(files_as_json))
51 request.end_headers()
52 request.wfile.write(files_as_json)
53
54def do_GET_json_tests(self):
55 test_module_resources = self.server.project.FindAllTestModuleResources()
56
Chris Craik44c28202015-05-12 17:25:16 -070057 test_relpaths = [x.unix_style_relative_path
58 for x in test_module_resources]
Chris Craik93216d02015-03-05 13:58:42 -080059
Chris Craik44c28202015-05-12 17:25:16 -070060 tests = {'test_relpaths': test_relpaths,
Chris Craik93216d02015-03-05 13:58:42 -080061 'test_links': self.server.test_links}
62 tests_as_json = json.dumps(tests);
63
64 self.send_response(200)
65 self.send_header('Content-Type', 'application/json')
66 self.send_header('Content-Length', len(tests_as_json))
67 self.end_headers()
68 self.wfile.write(tests_as_json)
69
Chris Craikf516a622015-04-01 17:52:39 -070070def do_POST_report_test_results(request):
71 request.send_response(200)
72 request.send_header('Content-Length', '0')
73 request.end_headers()
74 msg = request.rfile.read()
75 ostream = sys.stdout if 'PASSED' in msg else sys.stderr
76 ostream.write(msg + '\n')
77
78def do_POST_report_test_completion(request):
79 request.send_response(200)
80 request.send_header('Content-Length', '0')
81 request.end_headers()
82 msg = request.rfile.read()
83 sys.stdout.write(msg + '\n')
84 request.server.RequestShutdown(exit_code=(0 if 'ALL_PASSED' in msg else 1))
85
Chris Craik93216d02015-03-05 13:58:42 -080086def Main(args):
87 port = 8003
88 project = trace_viewer_project.TraceViewerProject()
89
90 server = tvcm.DevServer(port=port, project=project)
91 server.AddPathHandler('/json/examples', do_GET_json_examples)
92 server.AddPathHandler('/tv/json/tests', do_GET_json_tests)
93 server.AddPathHandler('/json/examples/skp', do_GET_json_examples_skp)
94
95 server.AddSourcePathMapping(project.trace_viewer_path)
96 server.AddTestLink('/examples/skia_debugger.html', 'Skia Debugger')
97 server.AddTestLink('/examples/trace_viewer.html', 'Trace File Viewer')
Chris Craikf516a622015-04-01 17:52:39 -070098
99 server.AddPathHandler('/test_automation/notify_test_result',
100 do_POST_report_test_results, supports_post=True)
101 server.AddPathHandler('/test_automation/notify_completion',
102 do_POST_report_test_completion, supports_post=True)
103
104
Chris Craik93216d02015-03-05 13:58:42 -0800105 server.serve_forever()