|
| 1 | +from servicex.app.transforms import LogLevel, TimeFrame |
| 2 | +from servicex.app.transforms import add_query, select_time, create_kibana_link_parameters |
| 3 | +from unittest import mock |
| 4 | +from typer.testing import CliRunner |
| 5 | +from servicex.app.transforms import transforms_app |
| 6 | + |
| 7 | + |
| 8 | +def test_add_query(): |
| 9 | + key = "abc" |
| 10 | + value = "123-345-567" |
| 11 | + query = "(query:(match_phrase:(abc:'123-345-567')))" |
| 12 | + assert add_query(key, value) == query |
| 13 | + |
| 14 | + key = "requestId" |
| 15 | + value = "d2ede739-9779-4075-95b1-0c7fae1de408" |
| 16 | + query = "(query:(match_phrase:(requestId:'d2ede739-9779-4075-95b1-0c7fae1de408')))" |
| 17 | + assert add_query(key, value) == query |
| 18 | + |
| 19 | + |
| 20 | +def test_select_time(): |
| 21 | + time_frame = TimeFrame.week |
| 22 | + time_filter = "time:(from:now%2Fw,to:now%2Fw)" |
| 23 | + assert time_filter == select_time(time_frame) |
| 24 | + |
| 25 | + time_frame = "month" |
| 26 | + time_filter = "time:(from:now-30d%2Fd,to:now)" |
| 27 | + assert time_filter == select_time(time_frame) |
| 28 | + |
| 29 | + time_frame = "daY" |
| 30 | + time_filter = "time:(from:now%2Fd,to:now%2Fd)" |
| 31 | + assert time_filter == select_time(time_frame) |
| 32 | + |
| 33 | + |
| 34 | +def test_create_kibana_link_parameters(): |
| 35 | + initial_log_url = "https://atlas-kibana.mwt2.org:5601/s/servicex/app"\ |
| 36 | + "/dashboards?auth_provider_hint=anonymous1#/view/"\ |
| 37 | + "2d2b3b40-f34e-11ed-a6d8-9f6a16cd6d78?embed=true&_g=()"\ |
| 38 | + "&show-time-filter=true&hide-filter-bar=true" |
| 39 | + transform_id = "d2ede739-9779-4075-95b1-0c7fae1de408" |
| 40 | + log_level = LogLevel.error |
| 41 | + time_frame = TimeFrame.day |
| 42 | + final_url = "https://atlas-kibana.mwt2.org:5601/s/servicex/app/dashboards?"\ |
| 43 | + "auth_provider_hint=anonymous1#/view/2d2b3b40-f34e-11ed-a6d8-9f6a16cd6d78?"\ |
| 44 | + "embed=true&_g=(time:(from:now%2Fd,to:now%2Fd))"\ |
| 45 | + "&_a=(filters:!((query:(match_phrase:"\ |
| 46 | + "(requestId:'d2ede739-9779-4075-95b1-0c7fae1de408'))),"\ |
| 47 | + "(query:(match_phrase:(level:'error')))))&show-time-filter=true"\ |
| 48 | + "&hide-filter-bar=true" |
| 49 | + assert create_kibana_link_parameters(initial_log_url, transform_id, |
| 50 | + log_level, time_frame) == final_url |
| 51 | + |
| 52 | + transform_id = "93713b34-2f0b-4d53-8412-8afa98626516" |
| 53 | + log_level = LogLevel.info |
| 54 | + time_frame = TimeFrame.month |
| 55 | + final_url = "https://atlas-kibana.mwt2.org:5601/s/servicex/app/dashboards?"\ |
| 56 | + "auth_provider_hint=anonymous1#/view/2d2b3b40-f34e-11ed-a6d8-9f6a16cd6d78?"\ |
| 57 | + "embed=true&_g=(time:(from:now-30d%2Fd,to:now))"\ |
| 58 | + "&_a=(filters:!((query:(match_phrase:"\ |
| 59 | + "(requestId:'93713b34-2f0b-4d53-8412-8afa98626516'))),"\ |
| 60 | + "(query:(match_phrase:(level:'info')))))&show-time-filter=true"\ |
| 61 | + "&hide-filter-bar=true" |
| 62 | + assert create_kibana_link_parameters(initial_log_url, transform_id, |
| 63 | + log_level, time_frame) == final_url |
| 64 | + |
| 65 | + |
| 66 | +# TODO find way to test the logs cli function without opening the browswer |
| 67 | +def test_logs(): |
| 68 | + final_url_month = "https://atlas-kibana.mwt2.org:5601/s/servicex/app/dashboards?"\ |
| 69 | + "auth_provider_hint=anonymous1#/view/2d2b3b40-f34e-11ed-a6d8-9f6a16cd6d78?"\ |
| 70 | + "embed=true&_g=(time:(from:now-30d%2Fd,to:now))"\ |
| 71 | + "&_a=(filters:!((query:(match_phrase:"\ |
| 72 | + "(requestId:'d2ede739-9779-4075-95b1-0c7fae1de408'))),"\ |
| 73 | + "(query:(match_phrase:(level:'error')))))&show-time-filter=true"\ |
| 74 | + "&hide-filter-bar=true" |
| 75 | + final_url_day = "https://atlas-kibana.mwt2.org:5601/s/servicex/app/dashboards?"\ |
| 76 | + "auth_provider_hint=anonymous1#/view/2d2b3b40-f34e-11ed-a6d8-9f6a16cd6d78?"\ |
| 77 | + "embed=true&_g=(time:(from:now%2Fd,to:now%2Fd))"\ |
| 78 | + "&_a=(filters:!((query:(match_phrase:"\ |
| 79 | + "(requestId:'d2ede739-9779-4075-95b1-0c7fae1de408'))),"\ |
| 80 | + "(query:(match_phrase:(level:'error')))))&show-time-filter=true"\ |
| 81 | + "&hide-filter-bar=true" |
| 82 | + runner = CliRunner() |
| 83 | + with mock.patch("servicex.app.transforms.webbrowser.open") as mock_url_open: |
| 84 | + result = runner.invoke(transforms_app, ["logs", "-b", "testing4", "-t", |
| 85 | + "d2ede739-9779-4075-95b1-0c7fae1de408"]) |
| 86 | + assert result.exit_code == 0 |
| 87 | + mock_url_open.assert_called_with(final_url_month) |
| 88 | + assert mock_url_open.called |
| 89 | + |
| 90 | + result = runner.invoke(transforms_app, ["logs", "-b", "testing4", "-t", |
| 91 | + "d2ede739-9779-4075-95b1-0c7fae1de408", |
| 92 | + "-f", "day"]) |
| 93 | + assert result.exit_code == 0 |
| 94 | + mock_url_open.assert_called_with(final_url_day) |
| 95 | + |
| 96 | + result = runner.invoke(transforms_app, ["logs", "-b", "testing4", "-td", |
| 97 | + "d2ede739-9779-4075-95b1-0c7fae1de408"]) |
| 98 | + assert result.exit_code == 2 |
| 99 | + mock_url_open.assert_not_called |
0 commit comments