1
0
Fork 0
mirror of https://github.com/ansible-collections/community.general.git synced 2026-04-08 04:57:16 +00:00

Reformat everything.

This commit is contained in:
Felix Fontein 2025-11-01 12:08:41 +01:00
parent 3f2213791a
commit 340ff8586d
1008 changed files with 61301 additions and 58309 deletions

View file

@ -17,84 +17,73 @@ ELASTIC_MINIMUM_PYTHON_VERSION = (3, 6)
class TestOpentelemetry(unittest.TestCase):
@patch('ansible_collections.community.general.plugins.callback.elastic.socket')
@patch("ansible_collections.community.general.plugins.callback.elastic.socket")
def setUp(self, mock_socket):
if sys.version_info < ELASTIC_MINIMUM_PYTHON_VERSION:
self.skipTest(f"Python {'.'.join(map(str, ELASTIC_MINIMUM_PYTHON_VERSION))}+ is needed for Elastic")
mock_socket.gethostname.return_value = 'my-host'
mock_socket.gethostbyname.return_value = '1.2.3.4'
mock_socket.gethostname.return_value = "my-host"
mock_socket.gethostbyname.return_value = "1.2.3.4"
self.elastic = ElasticSource(display=None)
self.task_fields = {'args': {}}
self.mock_host = Mock('MockHost')
self.mock_host.name = 'myhost'
self.mock_host._uuid = 'myhost_uuid'
self.task_fields = {"args": {}}
self.mock_host = Mock("MockHost")
self.mock_host.name = "myhost"
self.mock_host._uuid = "myhost_uuid"
self.mock_task = Task()
self.mock_task.action = 'myaction'
self.mock_task.action = "myaction"
self.mock_task.no_log = False
self.mock_task._role = 'myrole'
self.mock_task._uuid = 'myuuid'
self.mock_task._role = "myrole"
self.mock_task._uuid = "myuuid"
self.mock_task.args = {}
self.mock_task.get_name = MagicMock(return_value='mytask')
self.mock_task.get_path = MagicMock(return_value='/mypath')
self.my_task = TaskData('myuuid', 'mytask', '/mypath', 'myplay', 'myaction', '')
self.my_task_result = TaskResult(host=self.mock_host, task=self.mock_task, return_data={}, task_fields=self.task_fields)
self.mock_task.get_name = MagicMock(return_value="mytask")
self.mock_task.get_path = MagicMock(return_value="/mypath")
self.my_task = TaskData("myuuid", "mytask", "/mypath", "myplay", "myaction", "")
self.my_task_result = TaskResult(
host=self.mock_host, task=self.mock_task, return_data={}, task_fields=self.task_fields
)
def test_start_task(self):
tasks_data = OrderedDict()
self.elastic.start_task(
tasks_data,
False,
'myplay',
self.mock_task
)
self.elastic.start_task(tasks_data, False, "myplay", self.mock_task)
task_data = tasks_data['myuuid']
self.assertEqual(task_data.uuid, 'myuuid')
self.assertEqual(task_data.name, 'mytask')
self.assertEqual(task_data.path, '/mypath')
self.assertEqual(task_data.play, 'myplay')
self.assertEqual(task_data.action, 'myaction')
self.assertEqual(task_data.args, '')
task_data = tasks_data["myuuid"]
self.assertEqual(task_data.uuid, "myuuid")
self.assertEqual(task_data.name, "mytask")
self.assertEqual(task_data.path, "/mypath")
self.assertEqual(task_data.play, "myplay")
self.assertEqual(task_data.action, "myaction")
self.assertEqual(task_data.args, "")
def test_finish_task_with_a_host_match(self):
tasks_data = OrderedDict()
tasks_data['myuuid'] = self.my_task
tasks_data["myuuid"] = self.my_task
self.elastic.finish_task(
tasks_data,
'ok',
self.my_task_result
)
self.elastic.finish_task(tasks_data, "ok", self.my_task_result)
task_data = tasks_data['myuuid']
host_data = task_data.host_data['myhost_uuid']
self.assertEqual(host_data.uuid, 'myhost_uuid')
self.assertEqual(host_data.name, 'myhost')
self.assertEqual(host_data.status, 'ok')
task_data = tasks_data["myuuid"]
host_data = task_data.host_data["myhost_uuid"]
self.assertEqual(host_data.uuid, "myhost_uuid")
self.assertEqual(host_data.name, "myhost")
self.assertEqual(host_data.status, "ok")
def test_finish_task_without_a_host_match(self):
result = TaskResult(host=None, task=self.mock_task, return_data={}, task_fields=self.task_fields)
tasks_data = OrderedDict()
tasks_data['myuuid'] = self.my_task
tasks_data["myuuid"] = self.my_task
self.elastic.finish_task(
tasks_data,
'ok',
result
)
self.elastic.finish_task(tasks_data, "ok", result)
task_data = tasks_data['myuuid']
host_data = task_data.host_data['include']
self.assertEqual(host_data.uuid, 'include')
self.assertEqual(host_data.name, 'include')
self.assertEqual(host_data.status, 'ok')
task_data = tasks_data["myuuid"]
host_data = task_data.host_data["include"]
self.assertEqual(host_data.uuid, "include")
self.assertEqual(host_data.name, "include")
self.assertEqual(host_data.status, "ok")
def test_get_error_message(self):
test_cases = (
('my-exception', 'my-msg', None, 'my-exception'),
(None, 'my-msg', None, 'my-msg'),
(None, None, None, 'failed'),
("my-exception", "my-msg", None, "my-exception"),
(None, "my-msg", None, "my-msg"),
(None, None, None, "failed"),
)
for tc in test_cases:
@ -103,11 +92,21 @@ class TestOpentelemetry(unittest.TestCase):
def test_enrich_error_message(self):
test_cases = (
('my-exception', 'my-msg', 'my-stderr', 'message: "my-msg"\nexception: "my-exception"\nstderr: "my-stderr"'),
('my-exception', None, 'my-stderr', 'message: "failed"\nexception: "my-exception"\nstderr: "my-stderr"'),
(None, 'my-msg', 'my-stderr', 'message: "my-msg"\nexception: "None"\nstderr: "my-stderr"'),
('my-exception', 'my-msg', None, 'message: "my-msg"\nexception: "my-exception"\nstderr: "None"'),
('my-exception', 'my-msg', '\nline1\nline2', 'message: "my-msg"\nexception: "my-exception"\nstderr: "\nline1\nline2"')
(
"my-exception",
"my-msg",
"my-stderr",
'message: "my-msg"\nexception: "my-exception"\nstderr: "my-stderr"',
),
("my-exception", None, "my-stderr", 'message: "failed"\nexception: "my-exception"\nstderr: "my-stderr"'),
(None, "my-msg", "my-stderr", 'message: "my-msg"\nexception: "None"\nstderr: "my-stderr"'),
("my-exception", "my-msg", None, 'message: "my-msg"\nexception: "my-exception"\nstderr: "None"'),
(
"my-exception",
"my-msg",
"\nline1\nline2",
'message: "my-msg"\nexception: "my-exception"\nstderr: "\nline1\nline2"',
),
)
for tc in test_cases:
@ -118,9 +117,9 @@ class TestOpentelemetry(unittest.TestCase):
def generate_test_data(exception=None, msg=None, stderr=None):
res_data = OrderedDict()
if exception:
res_data['exception'] = exception
res_data["exception"] = exception
if msg:
res_data['msg'] = msg
res_data["msg"] = msg
if stderr:
res_data['stderr'] = stderr
res_data["stderr"] = stderr
return res_data

View file

@ -14,52 +14,59 @@ from ansible_collections.community.general.plugins.callback.loganalytics import
class TestAzureLogAnalytics(unittest.TestCase):
@patch('ansible_collections.community.general.plugins.callback.loganalytics.socket')
@patch("ansible_collections.community.general.plugins.callback.loganalytics.socket")
def setUp(self, mock_socket):
mock_socket.gethostname.return_value = 'my-host'
mock_socket.gethostbyname.return_value = '1.2.3.4'
mock_socket.gethostname.return_value = "my-host"
mock_socket.gethostbyname.return_value = "1.2.3.4"
self.loganalytics = AzureLogAnalyticsSource()
self.mock_task = Mock('MockTask')
self.mock_task._role = 'myrole'
self.mock_task._uuid = 'myuuid'
self.task_fields = {'args': {}}
self.mock_host = Mock('MockHost')
self.mock_host.name = 'myhost'
self.mock_task = Mock("MockTask")
self.mock_task._role = "myrole"
self.mock_task._uuid = "myuuid"
self.task_fields = {"args": {}}
self.mock_host = Mock("MockHost")
self.mock_host.name = "myhost"
@patch('ansible_collections.community.general.plugins.callback.loganalytics.now')
@patch('ansible_collections.community.general.plugins.callback.loganalytics.open_url')
@patch("ansible_collections.community.general.plugins.callback.loganalytics.now")
@patch("ansible_collections.community.general.plugins.callback.loganalytics.open_url")
def test_overall(self, open_url_mock, mock_now):
mock_now.return_value = datetime(2020, 12, 1)
result = TaskResult(host=self.mock_host, task=self.mock_task, return_data={}, task_fields=self.task_fields)
self.loganalytics.send_event(workspace_id='01234567-0123-0123-0123-01234567890a',
shared_key='dZD0kCbKl3ehZG6LHFMuhtE0yHiFCmetzFMc2u+roXIUQuatqU924SsAAAAPemhjbGlAemhjbGktTUJQAQIDBA==',
state='OK',
result=result,
runtime=100)
self.loganalytics.send_event(
workspace_id="01234567-0123-0123-0123-01234567890a",
shared_key="dZD0kCbKl3ehZG6LHFMuhtE0yHiFCmetzFMc2u+roXIUQuatqU924SsAAAAPemhjbGlAemhjbGktTUJQAQIDBA==",
state="OK",
result=result,
runtime=100,
)
args, kwargs = open_url_mock.call_args
sent_data = json.loads(args[1])
self.assertEqual(sent_data['event']['timestamp'], 'Tue, 01 Dec 2020 00:00:00 GMT')
self.assertEqual(sent_data['event']['host'], 'my-host')
self.assertEqual(sent_data['event']['uuid'], 'myuuid')
self.assertEqual(args[0], 'https://01234567-0123-0123-0123-01234567890a.ods.opinsights.azure.com/api/logs?api-version=2016-04-01')
self.assertEqual(sent_data["event"]["timestamp"], "Tue, 01 Dec 2020 00:00:00 GMT")
self.assertEqual(sent_data["event"]["host"], "my-host")
self.assertEqual(sent_data["event"]["uuid"], "myuuid")
self.assertEqual(
args[0],
"https://01234567-0123-0123-0123-01234567890a.ods.opinsights.azure.com/api/logs?api-version=2016-04-01",
)
@patch('ansible_collections.community.general.plugins.callback.loganalytics.now')
@patch('ansible_collections.community.general.plugins.callback.loganalytics.open_url')
@patch("ansible_collections.community.general.plugins.callback.loganalytics.now")
@patch("ansible_collections.community.general.plugins.callback.loganalytics.open_url")
def test_auth_headers(self, open_url_mock, mock_now):
mock_now.return_value = datetime(2020, 12, 1)
result = TaskResult(host=self.mock_host, task=self.mock_task, return_data={}, task_fields=self.task_fields)
self.loganalytics.send_event(workspace_id='01234567-0123-0123-0123-01234567890a',
shared_key='dZD0kCbKl3ehZG6LHFMuhtE0yHiFCmetzFMc2u+roXIUQuatqU924SsAAAAPemhjbGlAemhjbGktTUJQAQIDBA==',
state='OK',
result=result,
runtime=100)
self.loganalytics.send_event(
workspace_id="01234567-0123-0123-0123-01234567890a",
shared_key="dZD0kCbKl3ehZG6LHFMuhtE0yHiFCmetzFMc2u+roXIUQuatqU924SsAAAAPemhjbGlAemhjbGktTUJQAQIDBA==",
state="OK",
result=result,
runtime=100,
)
args, kwargs = open_url_mock.call_args
headers = kwargs['headers']
headers = kwargs["headers"]
self.assertRegex(headers['Authorization'], r'^SharedKey 01234567-0123-0123-0123-01234567890a:.*=$')
self.assertEqual(headers['Log-Type'], 'ansible_playbook')
self.assertRegex(headers["Authorization"], r"^SharedKey 01234567-0123-0123-0123-01234567890a:.*=$")
self.assertEqual(headers["Log-Type"], "ansible_playbook")

View file

@ -17,88 +17,77 @@ OPENTELEMETRY_MINIMUM_PYTHON_VERSION = (3, 7)
class TestOpentelemetry(unittest.TestCase):
@patch('ansible_collections.community.general.plugins.callback.opentelemetry.socket')
@patch("ansible_collections.community.general.plugins.callback.opentelemetry.socket")
def setUp(self, mock_socket):
# TODO: this python version validation won't be needed as long as the _time_ns call is mocked.
if sys.version_info < OPENTELEMETRY_MINIMUM_PYTHON_VERSION:
self.skipTest(f"Python {'.'.join(map(str, OPENTELEMETRY_MINIMUM_PYTHON_VERSION))}+ is needed for OpenTelemetry")
self.skipTest(
f"Python {'.'.join(map(str, OPENTELEMETRY_MINIMUM_PYTHON_VERSION))}+ is needed for OpenTelemetry"
)
mock_socket.gethostname.return_value = 'my-host'
mock_socket.gethostbyname.return_value = '1.2.3.4'
mock_socket.gethostname.return_value = "my-host"
mock_socket.gethostbyname.return_value = "1.2.3.4"
self.opentelemetry = OpenTelemetrySource(display=None)
self.task_fields = {'args': {}}
self.mock_host = Mock('MockHost')
self.mock_host.name = 'myhost'
self.mock_host._uuid = 'myhost_uuid'
self.task_fields = {"args": {}}
self.mock_host = Mock("MockHost")
self.mock_host.name = "myhost"
self.mock_host._uuid = "myhost_uuid"
self.mock_task = Task()
self.mock_task.action = 'myaction'
self.mock_task.action = "myaction"
self.mock_task.no_log = False
self.mock_task._role = 'myrole'
self.mock_task._uuid = 'myuuid'
self.mock_task._role = "myrole"
self.mock_task._uuid = "myuuid"
self.mock_task.args = {}
self.mock_task.get_name = MagicMock(return_value='mytask')
self.mock_task.get_path = MagicMock(return_value='/mypath')
self.my_task = TaskData('myuuid', 'mytask', '/mypath', 'myplay', 'myaction', '')
self.my_task_result = TaskResult(host=self.mock_host, task=self.mock_task, return_data={}, task_fields=self.task_fields)
self.mock_task.get_name = MagicMock(return_value="mytask")
self.mock_task.get_path = MagicMock(return_value="/mypath")
self.my_task = TaskData("myuuid", "mytask", "/mypath", "myplay", "myaction", "")
self.my_task_result = TaskResult(
host=self.mock_host, task=self.mock_task, return_data={}, task_fields=self.task_fields
)
def test_start_task(self):
tasks_data = OrderedDict()
self.opentelemetry.start_task(
tasks_data,
False,
'myplay',
self.mock_task
)
self.opentelemetry.start_task(tasks_data, False, "myplay", self.mock_task)
task_data = tasks_data['myuuid']
self.assertEqual(task_data.uuid, 'myuuid')
self.assertEqual(task_data.name, 'mytask')
self.assertEqual(task_data.path, '/mypath')
self.assertEqual(task_data.play, 'myplay')
self.assertEqual(task_data.action, 'myaction')
task_data = tasks_data["myuuid"]
self.assertEqual(task_data.uuid, "myuuid")
self.assertEqual(task_data.name, "mytask")
self.assertEqual(task_data.path, "/mypath")
self.assertEqual(task_data.play, "myplay")
self.assertEqual(task_data.action, "myaction")
self.assertEqual(task_data.args, {})
def test_finish_task_with_a_host_match(self):
tasks_data = OrderedDict()
tasks_data['myuuid'] = self.my_task
tasks_data["myuuid"] = self.my_task
self.opentelemetry.finish_task(
tasks_data,
'ok',
self.my_task_result,
""
)
self.opentelemetry.finish_task(tasks_data, "ok", self.my_task_result, "")
task_data = tasks_data['myuuid']
host_data = task_data.host_data['myhost_uuid']
self.assertEqual(host_data.uuid, 'myhost_uuid')
self.assertEqual(host_data.name, 'myhost')
self.assertEqual(host_data.status, 'ok')
task_data = tasks_data["myuuid"]
host_data = task_data.host_data["myhost_uuid"]
self.assertEqual(host_data.uuid, "myhost_uuid")
self.assertEqual(host_data.name, "myhost")
self.assertEqual(host_data.status, "ok")
def test_finish_task_without_a_host_match(self):
result = TaskResult(host=None, task=self.mock_task, return_data={}, task_fields=self.task_fields)
tasks_data = OrderedDict()
tasks_data['myuuid'] = self.my_task
tasks_data["myuuid"] = self.my_task
self.opentelemetry.finish_task(
tasks_data,
'ok',
result,
""
)
self.opentelemetry.finish_task(tasks_data, "ok", result, "")
task_data = tasks_data['myuuid']
host_data = task_data.host_data['include']
self.assertEqual(host_data.uuid, 'include')
self.assertEqual(host_data.name, 'include')
self.assertEqual(host_data.status, 'ok')
task_data = tasks_data["myuuid"]
host_data = task_data.host_data["include"]
self.assertEqual(host_data.uuid, "include")
self.assertEqual(host_data.name, "include")
self.assertEqual(host_data.status, "ok")
def test_get_error_message(self):
test_cases = (
('my-exception', 'my-msg', None, 'my-exception'),
(None, 'my-msg', None, 'my-msg'),
(None, None, None, 'failed'),
("my-exception", "my-msg", None, "my-exception"),
(None, "my-msg", None, "my-msg"),
(None, None, None, "failed"),
)
for tc in test_cases:
@ -107,25 +96,37 @@ class TestOpentelemetry(unittest.TestCase):
def test_get_error_message_from_results(self):
test_cases = (
('my-exception', 'my-msg', None, False, None),
(None, 'my-msg', None, False, None),
("my-exception", "my-msg", None, False, None),
(None, "my-msg", None, False, None),
(None, None, None, False, None),
('my-exception', 'my-msg', None, True, 'shell(none) - my-exception'),
(None, 'my-msg', None, True, 'shell(none) - my-msg'),
(None, None, None, True, 'shell(none) - failed'),
("my-exception", "my-msg", None, True, "shell(none) - my-exception"),
(None, "my-msg", None, True, "shell(none) - my-msg"),
(None, None, None, True, "shell(none) - failed"),
)
for tc in test_cases:
result = self.opentelemetry.get_error_message_from_results([generate_test_data(tc[0], tc[1], tc[2], tc[3])], 'shell')
result = self.opentelemetry.get_error_message_from_results(
[generate_test_data(tc[0], tc[1], tc[2], tc[3])], "shell"
)
self.assertEqual(result, tc[4])
def test_enrich_error_message(self):
test_cases = (
('my-exception', 'my-msg', 'my-stderr', 'message: "my-msg"\nexception: "my-exception"\nstderr: "my-stderr"'),
('my-exception', None, 'my-stderr', 'message: "failed"\nexception: "my-exception"\nstderr: "my-stderr"'),
(None, 'my-msg', 'my-stderr', 'message: "my-msg"\nexception: "None"\nstderr: "my-stderr"'),
('my-exception', 'my-msg', None, 'message: "my-msg"\nexception: "my-exception"\nstderr: "None"'),
('my-exception', 'my-msg', '\nline1\nline2', 'message: "my-msg"\nexception: "my-exception"\nstderr: "\nline1\nline2"')
(
"my-exception",
"my-msg",
"my-stderr",
'message: "my-msg"\nexception: "my-exception"\nstderr: "my-stderr"',
),
("my-exception", None, "my-stderr", 'message: "failed"\nexception: "my-exception"\nstderr: "my-stderr"'),
(None, "my-msg", "my-stderr", 'message: "my-msg"\nexception: "None"\nstderr: "my-stderr"'),
("my-exception", "my-msg", None, 'message: "my-msg"\nexception: "my-exception"\nstderr: "None"'),
(
"my-exception",
"my-msg",
"\nline1\nline2",
'message: "my-msg"\nexception: "my-exception"\nstderr: "\nline1\nline2"',
),
)
for tc in test_cases:
@ -134,29 +135,61 @@ class TestOpentelemetry(unittest.TestCase):
def test_enrich_error_message_from_results(self):
test_cases = (
('my-exception', 'my-msg', 'my-stderr', False, ''),
('my-exception', None, 'my-stderr', False, ''),
(None, 'my-msg', 'my-stderr', False, ''),
('my-exception', 'my-msg', None, False, ''),
('my-exception', 'my-msg', '\nline1\nline2', False, ''),
('my-exception', 'my-msg', 'my-stderr', True, 'shell(none) - message: "my-msg"\nexception: "my-exception"\nstderr: "my-stderr"\n'),
('my-exception', None, 'my-stderr', True, 'shell(none) - message: "failed"\nexception: "my-exception"\nstderr: "my-stderr"\n'),
(None, 'my-msg', 'my-stderr', True, 'shell(none) - message: "my-msg"\nexception: "None"\nstderr: "my-stderr"\n'),
('my-exception', 'my-msg', None, True, 'shell(none) - message: "my-msg"\nexception: "my-exception"\nstderr: "None"\n'),
('my-exception', 'my-msg', '\nline1\nline2', True, 'shell(none) - message: "my-msg"\nexception: "my-exception"\nstderr: "\nline1\nline2"\n')
("my-exception", "my-msg", "my-stderr", False, ""),
("my-exception", None, "my-stderr", False, ""),
(None, "my-msg", "my-stderr", False, ""),
("my-exception", "my-msg", None, False, ""),
("my-exception", "my-msg", "\nline1\nline2", False, ""),
(
"my-exception",
"my-msg",
"my-stderr",
True,
'shell(none) - message: "my-msg"\nexception: "my-exception"\nstderr: "my-stderr"\n',
),
(
"my-exception",
None,
"my-stderr",
True,
'shell(none) - message: "failed"\nexception: "my-exception"\nstderr: "my-stderr"\n',
),
(
None,
"my-msg",
"my-stderr",
True,
'shell(none) - message: "my-msg"\nexception: "None"\nstderr: "my-stderr"\n',
),
(
"my-exception",
"my-msg",
None,
True,
'shell(none) - message: "my-msg"\nexception: "my-exception"\nstderr: "None"\n',
),
(
"my-exception",
"my-msg",
"\nline1\nline2",
True,
'shell(none) - message: "my-msg"\nexception: "my-exception"\nstderr: "\nline1\nline2"\n',
),
)
for tc in test_cases:
result = self.opentelemetry.enrich_error_message_from_results([generate_test_data(tc[0], tc[1], tc[2], tc[3])], 'shell')
result = self.opentelemetry.enrich_error_message_from_results(
[generate_test_data(tc[0], tc[1], tc[2], tc[3])], "shell"
)
self.assertEqual(result, tc[4])
def test_url_from_args(self):
test_cases = (
({}, ""),
({'url': 'my-url'}, 'my-url'),
({'url': 'my-url', 'api_url': 'my-api_url'}, 'my-url'),
({'api_url': 'my-api_url'}, 'my-api_url'),
({'api_url': 'my-api_url', 'chart_repo_url': 'my-chart_repo_url'}, 'my-api_url')
({"url": "my-url"}, "my-url"),
({"url": "my-url", "api_url": "my-api_url"}, "my-url"),
({"api_url": "my-api_url"}, "my-api_url"),
({"api_url": "my-api_url", "chart_repo_url": "my-chart_repo_url"}, "my-api_url"),
)
for tc in test_cases:
@ -166,12 +199,12 @@ class TestOpentelemetry(unittest.TestCase):
def test_parse_and_redact_url_if_possible(self):
test_cases = (
({}, None),
({'url': 'wrong'}, None),
({'url': 'https://my-url'}, 'https://my-url'),
({'url': 'https://user:pass@my-url'}, 'https://my-url'),
({'url': 'https://my-url:{{ my_port }}'}, 'https://my-url:{{ my_port }}'),
({'url': 'https://{{ my_hostname }}:{{ my_port }}'}, None),
({'url': '{{my_schema}}{{ my_hostname }}:{{ my_port }}'}, None)
({"url": "wrong"}, None),
({"url": "https://my-url"}, "https://my-url"),
({"url": "https://user:pass@my-url"}, "https://my-url"),
({"url": "https://my-url:{{ my_port }}"}, "https://my-url:{{ my_port }}"),
({"url": "https://{{ my_hostname }}:{{ my_port }}"}, None),
({"url": "{{my_schema}}{{ my_hostname }}:{{ my_port }}"}, None),
)
for tc in test_cases:
@ -185,10 +218,10 @@ class TestOpentelemetry(unittest.TestCase):
def generate_test_data(exception=None, msg=None, stderr=None, failed=False):
res_data = OrderedDict()
if exception:
res_data['exception'] = exception
res_data["exception"] = exception
if msg:
res_data['msg'] = msg
res_data["msg"] = msg
if stderr:
res_data['stderr'] = stderr
res_data['failed'] = failed
res_data["stderr"] = stderr
res_data["failed"] = failed
return res_data

View file

@ -14,50 +14,62 @@ import json
class TestSplunkClient(unittest.TestCase):
@patch('ansible_collections.community.general.plugins.callback.splunk.socket')
@patch("ansible_collections.community.general.plugins.callback.splunk.socket")
def setUp(self, mock_socket):
mock_socket.gethostname.return_value = 'my-host'
mock_socket.gethostbyname.return_value = '1.2.3.4'
mock_socket.gethostname.return_value = "my-host"
mock_socket.gethostbyname.return_value = "1.2.3.4"
self.splunk = SplunkHTTPCollectorSource()
self.mock_task = Mock('MockTask')
self.mock_task._role = 'myrole'
self.mock_task._uuid = 'myuuid'
self.task_fields = {'args': {}}
self.mock_host = Mock('MockHost')
self.mock_host.name = 'myhost'
self.mock_task = Mock("MockTask")
self.mock_task._role = "myrole"
self.mock_task._uuid = "myuuid"
self.task_fields = {"args": {}}
self.mock_host = Mock("MockHost")
self.mock_host.name = "myhost"
@patch('ansible_collections.community.general.plugins.callback.splunk.now')
@patch('ansible_collections.community.general.plugins.callback.splunk.open_url')
@patch("ansible_collections.community.general.plugins.callback.splunk.now")
@patch("ansible_collections.community.general.plugins.callback.splunk.open_url")
def test_timestamp_with_milliseconds(self, open_url_mock, mock_now):
mock_now.return_value = datetime(2020, 12, 1)
result = TaskResult(host=self.mock_host, task=self.mock_task, return_data={}, task_fields=self.task_fields)
self.splunk.send_event(
url='endpoint', authtoken='token', validate_certs=False, include_milliseconds=True,
batch="abcefghi-1234-5678-9012-abcdefghijkl", state='OK', result=result, runtime=100
url="endpoint",
authtoken="token",
validate_certs=False,
include_milliseconds=True,
batch="abcefghi-1234-5678-9012-abcdefghijkl",
state="OK",
result=result,
runtime=100,
)
args, kwargs = open_url_mock.call_args
sent_data = json.loads(args[1])
self.assertEqual(sent_data['event']['timestamp'], '2020-12-01 00:00:00.000000 +0000')
self.assertEqual(sent_data['event']['host'], 'my-host')
self.assertEqual(sent_data['event']['ip_address'], '1.2.3.4')
self.assertEqual(sent_data["event"]["timestamp"], "2020-12-01 00:00:00.000000 +0000")
self.assertEqual(sent_data["event"]["host"], "my-host")
self.assertEqual(sent_data["event"]["ip_address"], "1.2.3.4")
@patch('ansible_collections.community.general.plugins.callback.splunk.now')
@patch('ansible_collections.community.general.plugins.callback.splunk.open_url')
@patch("ansible_collections.community.general.plugins.callback.splunk.now")
@patch("ansible_collections.community.general.plugins.callback.splunk.open_url")
def test_timestamp_without_milliseconds(self, open_url_mock, mock_now):
mock_now.return_value = datetime(2020, 12, 1)
result = TaskResult(host=self.mock_host, task=self.mock_task, return_data={}, task_fields=self.task_fields)
self.splunk.send_event(
url='endpoint', authtoken='token', validate_certs=False, include_milliseconds=False,
batch="abcefghi-1234-5678-9012-abcdefghijkl", state='OK', result=result, runtime=100
url="endpoint",
authtoken="token",
validate_certs=False,
include_milliseconds=False,
batch="abcefghi-1234-5678-9012-abcdefghijkl",
state="OK",
result=result,
runtime=100,
)
args, kwargs = open_url_mock.call_args
sent_data = json.loads(args[1])
self.assertEqual(sent_data['event']['timestamp'], '2020-12-01 00:00:00 +0000')
self.assertEqual(sent_data['event']['host'], 'my-host')
self.assertEqual(sent_data['event']['ip_address'], '1.2.3.4')
self.assertEqual(sent_data["event"]["timestamp"], "2020-12-01 00:00:00 +0000")
self.assertEqual(sent_data["event"]["host"], "my-host")
self.assertEqual(sent_data["event"]["ip_address"], "1.2.3.4")