mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-19 08:15:31 +00:00
Bug 1630610 - Add tests for perftestnotebook.py and transformer.py. r=sparky
Depends on D73926 Differential Revision: https://phabricator.services.mozilla.com/D73927
This commit is contained in:
parent
a8fc57d316
commit
44c0a36b80
@ -62,7 +62,7 @@ def files(data):
|
||||
resources["file_2"] = _create_temp_files(json_2, json.dumps(data["data_2"]))
|
||||
|
||||
txt_3 = dirs["resources"] / "file_3.txt"
|
||||
resources["file_3"] = _create_temp_files(txt_3, json.dumps(data["data_3"]))
|
||||
resources["file_3"] = _create_temp_files(txt_3, str(data["data_3"]))
|
||||
|
||||
output = dirs["output"] / "output.json"
|
||||
|
||||
|
@ -11,7 +11,9 @@ skip-if = python == 2
|
||||
[test_mach_commands.py]
|
||||
[test_metrics_utils.py]
|
||||
[test_perfherder.py]
|
||||
[test_perftestnotebook.py]
|
||||
[test_profile.py]
|
||||
[test_proxy.py]
|
||||
[test_scriptinfo.py]
|
||||
[test_utils.py]
|
||||
[test_transformer.py]
|
||||
[test_utils.py]
|
@ -0,0 +1,86 @@
|
||||
import json
|
||||
import mozunit
|
||||
import pathlib
|
||||
from mozperftest.metrics.notebook.analyzer import NotebookAnalyzer
|
||||
from mozperftest.metrics.notebook.constant import Constant
|
||||
from mozperftest.metrics.notebook.transformer import Transformer
|
||||
from mozperftest.metrics.notebook.transforms.single_json import SingleJsonRetriever
|
||||
|
||||
|
||||
def test_init(ptnbs):
|
||||
for ptnb in ptnbs.values():
|
||||
assert isinstance(ptnb.fmt_data, dict)
|
||||
assert isinstance(ptnb.file_groups, dict)
|
||||
assert isinstance(ptnb.config, dict)
|
||||
assert isinstance(ptnb.sort_files, bool)
|
||||
assert isinstance(ptnb.const, Constant)
|
||||
assert isinstance(ptnb.analyzer, NotebookAnalyzer)
|
||||
assert isinstance(ptnb.transformer, Transformer)
|
||||
|
||||
|
||||
def test_parse_file_grouping(ptnbs):
|
||||
def _check_files_created(ptnb, expected_files):
|
||||
actual_files = set(ptnb.parse_file_grouping(expected_files))
|
||||
expected_files = set(expected_files)
|
||||
|
||||
# Check all parsed files are regular files.
|
||||
assert all([pathlib.Path(file).is_file for file in actual_files])
|
||||
# Check parse_file_grouping function returns correct result.
|
||||
assert actual_files - expected_files == set()
|
||||
|
||||
# If file_grouping is a list of files.
|
||||
ptnb = ptnbs["ptnb_list"]
|
||||
expected_files = ptnb.file_groups["group_1"]
|
||||
_check_files_created(ptnb, expected_files)
|
||||
|
||||
# If file_grouping is a directory string.
|
||||
ptnb = ptnbs["ptnb_str"]
|
||||
expected_path = ptnb.file_groups["group_1"]
|
||||
expected_files = [f.resolve().as_posix() for f in pathlib.Path(expected_path).iterdir()]
|
||||
_check_files_created(ptnb, expected_files)
|
||||
|
||||
|
||||
def test_process(ptnbs, files):
|
||||
# Temporary resource files.
|
||||
files, _, output = files
|
||||
file_1 = files["file_1"]
|
||||
file_2 = files["file_2"]
|
||||
|
||||
# Create expected output.
|
||||
expected_output = [
|
||||
{
|
||||
"data": [
|
||||
{"value": 101, "xaxis": 1, "file": file_1},
|
||||
{"value": 102, "xaxis": 1, "file": file_1},
|
||||
{"value": 103, "xaxis": 1, "file": file_1},
|
||||
{"value": 201, "xaxis": 2, "file": file_2},
|
||||
{"value": 202, "xaxis": 2, "file": file_2},
|
||||
{"value": 203, "xaxis": 2, "file": file_2},
|
||||
],
|
||||
"name": "group_1",
|
||||
"subtest": "browserScripts.timings.firstPaint",
|
||||
}
|
||||
]
|
||||
|
||||
ptnb = ptnbs["ptnb_str"]
|
||||
ptnb.transformer = SingleJsonRetriever()
|
||||
|
||||
# Create expected result.
|
||||
expected_result = {
|
||||
"data": expected_output,
|
||||
"file-output": output,
|
||||
}
|
||||
|
||||
# Check return value.
|
||||
actual_result = ptnb.process()
|
||||
assert actual_result == expected_result
|
||||
|
||||
# Check output file.
|
||||
with pathlib.Path(output).open() as f:
|
||||
actual_output = json.load(f)
|
||||
|
||||
assert expected_output == actual_output
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
mozunit.main()
|
45
python/mozperftest/mozperftest/tests/test_transformer.py
Normal file
45
python/mozperftest/mozperftest/tests/test_transformer.py
Normal file
@ -0,0 +1,45 @@
|
||||
import mozunit
|
||||
import pytest
|
||||
from mozperftest.metrics.notebook.transformer import Transformer
|
||||
|
||||
|
||||
def test_files_getter(files):
|
||||
files, _, _ = files
|
||||
assert files == Transformer(files).files
|
||||
|
||||
|
||||
def test_files_setter(files):
|
||||
files, _, _ = files
|
||||
files = list(files.values())
|
||||
tfm = Transformer()
|
||||
tfm.files = files
|
||||
assert files == tfm.files
|
||||
|
||||
|
||||
def test_files_setter_failure():
|
||||
tfm = Transformer()
|
||||
tfm.files = "fail"
|
||||
assert not tfm.files
|
||||
|
||||
|
||||
def test_open_data(data, files):
|
||||
tfm = Transformer()
|
||||
|
||||
files, _, _ = files
|
||||
json_1 = files["file_1"]
|
||||
json_2 = files["file_2"]
|
||||
txt_3 = files["file_3"]
|
||||
|
||||
# If a json file is open.
|
||||
assert data["data_1"] == tfm.open_data(json_1)
|
||||
assert data["data_2"] == tfm.open_data(json_2)
|
||||
# If an other type file is open.
|
||||
assert [str(data["data_3"])] == tfm.open_data(txt_3)
|
||||
|
||||
# Test failure
|
||||
with pytest.raises(Exception):
|
||||
tfm.open_data("fail")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
mozunit.main()
|
Loading…
Reference in New Issue
Block a user