blob: d6efaf27b9cd24b0a399b74673bdc70dd7f38fa2 [file] [log] [blame]
# Copyright 2012 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 os
import tempfile
import unittest
from telemetry.core import util
from telemetry.page import cloud_storage
from telemetry.page import page_set
class TestPageSet(unittest.TestCase):
def testServingDirs(self):
directory_path = tempfile.mkdtemp()
try:
ps = page_set.PageSet(serving_dirs=['a/b'], file_path=directory_path)
ps.AddPageWithDefaultRunNavigate('file://c/test.html')
ps.AddPageWithDefaultRunNavigate('file://c/test.js')
ps.AddPageWithDefaultRunNavigate('file://d/e/../test.html')
finally:
os.rmdir(directory_path)
real_directory_path = os.path.realpath(directory_path)
expected_serving_dirs = set([os.path.join(real_directory_path, 'a', 'b')])
self.assertEquals(ps.serving_dirs, expected_serving_dirs)
self.assertEquals(ps[0].serving_dir, os.path.join(real_directory_path, 'c'))
self.assertEquals(ps[2].serving_dir, os.path.join(real_directory_path, 'd'))
def testAbsoluteServingDir(self):
directory_path = tempfile.mkdtemp()
try:
absolute_dir = os.path.join(directory_path, 'a', 'b')
ps = page_set.PageSet(file_path=directory_path,
serving_dirs=['', directory_path, absolute_dir])
real_directory_path = os.path.realpath(directory_path)
real_absolute_dir = os.path.realpath(absolute_dir)
self.assertEquals(ps.serving_dirs, set([real_directory_path,
real_absolute_dir]))
finally:
os.rmdir(directory_path)
def testSuccesfulPythonPageSetLoading(self):
test_pps_dir = os.path.join(util.GetUnittestDataDir(), 'test_page_set.py')
pps = page_set.PageSet.FromFile(test_pps_dir)
self.assertEqual('TestPageSet', pps.__class__.__name__)
self.assertEqual('A pageset for testing purpose', pps.Description())
self.assertEqual('data/test.json', pps.archive_data_file)
self.assertEqual('data/credential', pps.credentials_path)
self.assertEqual('desktop', pps.user_agent_type)
self.assertEqual(test_pps_dir, pps.file_path)
self.assertEqual(page_set.PUBLIC_BUCKET, pps.bucket)
self.assertEqual(3, len(pps.pages))
google_page = pps.pages[0]
self.assertEqual('https://www.google.com', google_page.url)
self.assertIs(pps, google_page.page_set)
self.assertTrue(5, google_page.RunGetActionRunner(action_runner=5))
def testMultiplePythonPageSetsLoading(self):
test_pps_1_dir = os.path.join(util.GetUnittestDataDir(),
'test_simple_one_page_set.py')
test_pps_2_dir = os.path.join(util.GetUnittestDataDir(),
'test_simple_two_page_set.py')
pps1 = page_set.PageSet.FromFile(test_pps_1_dir)
pps2 = page_set.PageSet.FromFile(test_pps_2_dir)
self.assertEqual('TestSimpleOnePageSet', pps1.__class__.__name__)
self.assertEqual('TestSimpleTwoPageSet', pps2.__class__.__name__)
def testPageFilePath(self):
test_pps_dir = os.path.join(util.GetUnittestDataDir(), 'test_page_set.py')
pps = page_set.PageSet.FromFile(test_pps_dir)
internal_page = pps.pages[1]
external_page = pps.pages[2]
self.assertEqual(
os.path.normpath(os.path.join(
util.GetUnittestDataDir(), 'bar.html')), internal_page.file_path)
self.assertEqual(
os.path.normpath(os.path.join(
util.GetUnittestDataDir(), 'pages/foo.html')), external_page.file_path)
def testCloudBucket(self):
blank_ps = page_set.PageSet()
expected_bucket = None
self.assertEqual(blank_ps.bucket, expected_bucket)
public_ps = page_set.PageSet(bucket=page_set.PUBLIC_BUCKET)
expected_bucket = cloud_storage.PUBLIC_BUCKET
self.assertEqual(public_ps.bucket, expected_bucket)
partner_ps = page_set.PageSet(bucket=page_set.PARTNER_BUCKET)
expected_bucket = cloud_storage.PARTNER_BUCKET
self.assertEqual(partner_ps.bucket, expected_bucket)
internal_ps = page_set.PageSet(bucket=page_set.INTERNAL_BUCKET)
expected_bucket = cloud_storage.INTERNAL_BUCKET
self.assertEqual(internal_ps.bucket, expected_bucket)
self.assertRaises(ValueError, page_set.PageSet, bucket='garbage_bucket')