# Copyright (c) 2015 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import json
import os
import unittest
from catapult_build import dev_server
from perf_insights_build import perf_insights_dev_server_config
from tracing_build import tracing_dev_server_config
import webapp2
class DevServerTests(unittest.TestCase):
def setUp(self):
self.pds = [
perf_insights_dev_server_config.PerfInsightsDevServerConfig(),
tracing_dev_server_config.TracingDevServerConfig(),
]
self.args = dev_server._AddCommandLineArguments(self.pds, [])
def testStaticDirectoryHandling(self):
app = dev_server.DevServerApp(self.pds, self.args)
request = webapp2.Request.blank('/tracing/tests.html')
response = request.get_response(app)
self.assertEqual(response.status_int, 200)
def testGetURLForAbsFilename(self):
app = dev_server.DevServerApp(self.pds, self.args)
class FakeServer(object):
pass
app.server = FakeServer()
cfg = tracing_dev_server_config.TracingDevServerConfig()
base_html_filename = os.path.join(cfg.project.tracing_src_path,
'base', 'base.html')
url = app.GetURLForAbsFilename(base_html_filename)
self.assertEqual(url, '/tracing/base/base.html')
url = app.GetURLForAbsFilename('/tmp/foo')
self.assertIsNone(url)
def testGetAbsFilenameForHref(self):
app = dev_server.DevServerApp(self.pds, self.args)
cfg = tracing_dev_server_config.TracingDevServerConfig()
base_html_filename = os.path.join(cfg.project.tracing_src_path,
'base', 'base.html')
filename = app.GetAbsFilenameForHref('/tracing/base/base.html')
self.assertEqual(base_html_filename, filename)
filename = app.GetAbsFilenameForHref('/etc/passwd')
self.assertIsNone(filename)
def testTestDataDirectory(self):
app = dev_server.DevServerApp(self.pds, self.args)
request = webapp2.Request.blank('/tracing/test_data/trivial_trace.json')
response = request.get_response(app)
self.assertEqual(response.status_int, 200)
def testTestDataDirectoryListing(self):
app = dev_server.DevServerApp(self.pds, self.args)
request = webapp2.Request.blank('/tracing/test_data/__file_list__')
response = request.get_response(app)
self.assertEqual(response.status_int, 200)
res = json.loads(response.body)
assert '/tracing/test_data/trivial_trace.json' in res
def testSkpDataDirectoryListing(self):
app = dev_server.DevServerApp(self.pds, self.args)
request = webapp2.Request.blank('/tracing/skp_data/__file_list__')
response = request.get_response(app)
self.assertEqual(response.status_int, 200)
res = json.loads(response.body)
assert '/tracing/skp_data/lthi_cats.skp' in res
def testTestListingHandler(self):
app = dev_server.DevServerApp(self.pds, self.args)
request = webapp2.Request.blank('/tracing/tests')
response = request.get_response(app)
self.assertEqual(response.status_int, 200)
res = json.loads(response.body)
self.assertTrue('test_relpaths' in res)
self.assertTrue(len(res['test_relpaths']) > 0)