Mypal/testing/talos/tests/test_talosconfig.py

156 lines
6.8 KiB
Python

from talos import talosconfig
from talos.configuration import YAML
import unittest
import json
# globals
ffox_path = 'test/path/to/firefox'
command_args = [ffox_path,
'-profile',
'pathtoprofile',
'-tp',
'pathtotpmanifest',
'-tpchrome',
'-tpmozafterpaint',
'-tpnoisy',
'-rss',
'-tpcycles',
'1',
'-tppagecycles',
'1']
with open("test_talosconfig_browser_config.json") as json_browser_config:
browser_config = json.load(json_browser_config)
with open("test_talosconfig_test_config.json") as json_test_config:
test_config = json.load(json_test_config)
class TestWriteConfig(unittest.TestCase):
def test_writeConfigFile(self):
obj = dict(some=123, thing='456', other=789)
self.assertEquals(
json.loads(talosconfig.writeConfigFile(obj, ('some', 'thing'))),
dict(some=123, thing='456')
)
# test without keys
self.assertEquals(
json.loads(talosconfig.writeConfigFile(obj, None)),
obj
)
class TalosConfigUnitTest(unittest.TestCase):
"""
A class inheriting from unittest.TestCase to test the generateTalosConfig function.
"""
def validate(self, var1, var2):
# Function to check whether the output generated is correct or not.
# If the output generated is not correct then specify the expected output to be generated.
if var1 == var2:
return 1
else:
print("input '%s' != expected '%s'" % (var1, var2))
def test_talosconfig(self):
# This function stimulates a call to generateTalosConfig in talosconfig.py .
# It is then tested whether the output generated is correct or not.
# ensure that the output generated in yaml file is as expected or not.
yaml = YAML()
content = yaml.read(browser_config['bcontroller_config'])
self.validate(content['command'],
"test/path/to/firefox " +
"-profile " +
"pathtoprofile " +
"-tp " +
"pathtotpmanifest " +
"-tpchrome " +
"-tpmozafterpaint " +
"-tpnoisy " +
"-rss " +
"-tpcycles " +
"1 " +
"-tppagecycles " +
"1")
self.validate(content['child_process'], "plugin-container")
self.validate(content['process'], "firefox.exe")
self.validate(content['browser_wait'], 5)
self.validate(content['test_timeout'], 1200)
self.validate(content['browser_log'], "browser_output.txt")
self.validate(content['browser_path'], "test/path/to/firefox")
self.validate(content['error_filename'], "pathtoerrorfile")
self.validate(content['xperf_path'],
"C:/Program Files/Microsoft Windows Performance Toolkit/xperf.exe")
self.validate(content['buildid'], 20131205075310)
self.validate(content['sourcestamp'], "39faf812aaec")
self.validate(content['repository'], "http://hg.mozilla.org/releases/mozilla-release")
self.validate(content['title'], "qm-pxp01")
self.validate(content['testname'], "tp5n")
self.validate(content['xperf_providers'], ['PROC_THREAD',
'LOADER',
'HARD_FAULTS',
'FILENAME',
'FILE_IO',
'FILE_IO_INIT'])
self.validate(content['xperf_user_providers'],
['Mozilla Generic Provider', 'Microsoft-Windows-TCPIP'])
self.validate(content['xperf_stackwalk'],
['FileCreate', 'FileRead', 'FileWrite', 'FileFlush', 'FileClose'])
self.validate(content['processID'], "None")
self.validate(content['approot'], "test/path/to")
def test_errors(self):
# Tests if errors are correctly raised.
# Testing that error is correctly raised or not if xperf_path is missing
browser_config_copy = browser_config.copy()
test_config_copy = test_config.copy()
del browser_config_copy['xperf_path']
talosconfig.generateTalosConfig(command_args, browser_config_copy, test_config_copy)
yaml = YAML()
content = yaml.read(browser_config['bcontroller_config'])
with self.assertRaises(KeyError):
self.validate(content['xperf_path'],
"C:/Program Files/Microsoft Windows Performance Toolkit/xperf.exe")
# Test to see if keyerror is raised or not for calling testname when xperf_path is missing
with self.assertRaises(KeyError):
self.validate(content['testname'], "tp5n")
# Testing that error is correctly raised or not if xperf_providers is missing
browser_config_copy = browser_config.copy()
test_config_copy = test_config.copy()
del test_config_copy['xperf_providers']
talosconfig.generateTalosConfig(command_args, browser_config_copy, test_config_copy)
yaml = YAML()
content = yaml.read(browser_config['bcontroller_config'])
# Checking keyerror when calling xperf_providers
with self.assertRaises(KeyError):
self.validate(content['xperf_providers'], ['PROC_THREAD', 'LOADER', 'HARD_FAULTS',
'FILENAME', 'FILE_IO', 'FILE_IO_INIT'])
# Checking keyerror when calling xperf_user_providers when xperf_providers is missing
with self.assertRaises(KeyError):
self.validate(content['xperf_user_providers'],
['Mozilla Generic Provider', 'Microsoft-Windows-TCPIP'])
# Checking keyerror when calling xperf_stackwalk when xperf_providers is missing
with self.assertRaises(KeyError):
self.validate(content['xperf_stackwalk'],
['FileCreate', 'FileRead', 'FileWrite', 'FileFlush', 'FileClose'])
# Checking keyerror when calling processID when xperf_providers is missing
with self.assertRaises(KeyError):
self.validate(content['processID'], "None")
# Checking keyerror when calling approot when xperf_providers is missing
with self.assertRaises(KeyError):
self.validate(content['approot'], "test/path/to")
if __name__ == '__main__':
unittest.main()