From 8d6b04ffde3bbd1edf81df19c232fb1abc3c9d14 Mon Sep 17 00:00:00 2001
From: nhertz <nhertz@nrao.edu>
Date: Tue, 1 Sep 2020 17:25:36 -0600
Subject: [PATCH] Updated tests; added test log file

---
 apps/cli/utilities/wf_monitor/logs/test.log   |  1 +
 .../wf_monitor/test/test_wf_monitor.py        | 43 ++++++++++++++++---
 2 files changed, 37 insertions(+), 7 deletions(-)
 create mode 100644 apps/cli/utilities/wf_monitor/logs/test.log

diff --git a/apps/cli/utilities/wf_monitor/logs/test.log b/apps/cli/utilities/wf_monitor/logs/test.log
new file mode 100644
index 000000000..9a98d7400
--- /dev/null
+++ b/apps/cli/utilities/wf_monitor/logs/test.log
@@ -0,0 +1 @@
+this will trigger an exception!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
\ No newline at end of file
diff --git a/apps/cli/utilities/wf_monitor/test/test_wf_monitor.py b/apps/cli/utilities/wf_monitor/test/test_wf_monitor.py
index 4e381941f..a908f46cd 100644
--- a/apps/cli/utilities/wf_monitor/test/test_wf_monitor.py
+++ b/apps/cli/utilities/wf_monitor/test/test_wf_monitor.py
@@ -1,12 +1,17 @@
+from typing import List
+
+import pika
+import pytest
+import pytest_mock
 from wf_monitor.wf_event import WorkflowEvent, EventType
-from wf_monitor.monitor import WorkflowMonitor
+from wf_monitor.monitor import WorkflowMonitor, send_event_data, make_amqp_connection
 
-log_path = 'logs/condor.log'
-test_monitor = WorkflowMonitor(log_path)
+log_path: str = 'logs/condor.log'
+test_monitor: WorkflowMonitor = WorkflowMonitor(log_path)
 
 
 def test_read_log():
-    test_strs = [
+    test_strs: List[str] = [
         'Image size of job updated: 432',
         '432  -  ResidentSetSize of job (KB)',
         '(1) Normal termination (return value 0)',
@@ -17,8 +22,15 @@ def test_read_log():
         assert s in test_monitor.log
 
 
+def test_read_log_timeout(capsys):
+    with pytest.raises(SystemExit) as sys_ex:
+        WorkflowMonitor('logs/file-that-does-not-exist.txt', 1)
+    assert sys_ex.type == SystemExit
+    assert sys_ex.value.code == -1
+
+
 def test_parse_log():
-    test_event_types = [
+    test_event_types: List[EventType] = [
         EventType.SUBMITTED,
         EventType.EXECUTING,
         EventType.OTHER,
@@ -32,5 +44,22 @@ def test_parse_log():
         assert e.type == e_type
 
 
-def test_send_event_data():
-    pass
+def test_parse_log_error():
+    with pytest.raises(ValueError) as val_err:
+        WorkflowMonitor('logs/test.log')
+    assert val_err.type == ValueError
+
+
+def test_send_event_data(mocker):
+    mock_list = [
+        'pika.adapters.blocking_connection.BlockingChannel.basic_publish',
+        'wf_monitor.monitor.make_amqp_connection',
+        'wf_monitor.monitor.send_event_data',
+    ]
+    [mocker.patch(mock) for mock in mock_list]
+
+    connection: pika.BlockingConnection = make_amqp_connection('nmtest')
+
+    for event in WorkflowMonitor(log_path).events:
+        send_event_data(connection, event)
+    assert connection.channel().basic_publish.call_count == 8
-- 
GitLab