diff options
Diffstat (limited to 'python/mozperftest/mozperftest/tests/test_perftestnotebook.py')
-rw-r--r-- | python/mozperftest/mozperftest/tests/test_perftestnotebook.py | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/python/mozperftest/mozperftest/tests/test_perftestnotebook.py b/python/mozperftest/mozperftest/tests/test_perftestnotebook.py new file mode 100644 index 0000000000..58debe9343 --- /dev/null +++ b/python/mozperftest/mozperftest/tests/test_perftestnotebook.py @@ -0,0 +1,75 @@ +#!/usr/bin/env python +from pathlib import Path +from unittest import mock + +import mozunit +import pytest + +from mozperftest.metrics.notebook.constant import Constant + + +def test_init(ptnb, standarized_data): + assert isinstance(ptnb.data, dict) + assert isinstance(ptnb.const, Constant) + + +def test_get_notebook_section(ptnb): + func = "scatterplot" + with (ptnb.const.here / "notebook-sections" / func).open() as f: + assert ptnb.get_notebook_section(func) == f.read() + + +def test_get_notebook_section_unknown_analysis(ptnb): + func = "unknown" + assert ptnb.get_notebook_section(func) == "" + + +@pytest.mark.parametrize("analysis", [["scatterplot"], None]) +def test_post_to_iodide(ptnb, standarized_data, analysis): + opener = mock.mock_open() + + def mocked_open(self, *args, **kwargs): + return opener(self, *args, **kwargs) + + with mock.patch.object(Path, "open", mocked_open), mock.patch( + "mozperftest.metrics.notebook.perftestnotebook.webbrowser.open_new_tab" + ) as browser, mock.patch( + "mozperftest.metrics.notebook.perftestnotebook.HTTPServer" + ) as server: + ptnb.post_to_iodide(analysis=analysis) + + list_of_calls = opener.mock_calls + + header_path = ptnb.const.here / "notebook-sections" / "header" + assert mock.call(header_path) in list_of_calls + index1 = list_of_calls.index(mock.call(header_path)) + assert list_of_calls[index1 + 2] == mock.call().read() + + template_upload_file_path = ptnb.const.here / "template_upload_file.html" + assert mock.call(template_upload_file_path) in list_of_calls + index2 = list_of_calls.index(mock.call(template_upload_file_path)) + assert list_of_calls[index2 + 2] == mock.call().read() + + upload_file_path = ptnb.const.here / "upload_file.html" + assert mock.call(upload_file_path, "w") in list_of_calls + index3 = list_of_calls.index(mock.call(upload_file_path, "w")) + assert list_of_calls[index3 + 2] == mock.call().write("") + + assert index1 < index2 < index3 + + if analysis: + section_path = ptnb.const.here / "notebook-sections" / analysis[0] + assert mock.call(section_path) in list_of_calls + index4 = list_of_calls.index(mock.call(section_path)) + assert index1 < index4 < index2 + else: + assert list_of_calls.count(mock.call().__enter__()) == 3 + + browser.assert_called_with(str(upload_file_path)) + server.assert_has_calls( + [mock.call().serve_forever(), mock.call().server_close()] + ) + + +if __name__ == "__main__": + mozunit.main() |