Skip to content

Commit 7f1eb95

Browse files
author
Alex Meadows
committed
process_tracker_python-139 Add high level dates to process
✨ New high level audit dates added to process (for completed, errored, etc.) ✨ Clarified failure vs completed when changing status Closes #139
1 parent d936fea commit 7f1eb95

File tree

5 files changed

+51
-22
lines changed

5 files changed

+51
-22
lines changed

dbscripts/mysql_process_tracker.sql

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -246,6 +246,8 @@ create table process
246246
process_tool_id int null,
247247
last_failed_run_date_time datetime not null,
248248
schedule_frequency_id int default 0 not null,
249+
last_completed_run_date_time datetime not null,
250+
last_errored_run_date_time datetime not null,
249251
constraint process_name
250252
unique (process_name),
251253
constraint process_fk03

dbscripts/postgresql_process_tracker.sql

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -256,7 +256,9 @@ create table process_tracker.process
256256
process_tool_id integer
257257
constraint process_fk03
258258
references process_tracker.tool_lkup,
259-
last_failed_run_date_time timestamp default '1900-01-01 00:00:00'::timestamp without time zone not null,
259+
last_failed_run_date_time timestamp default '1900-01-01 00:00:00'::timestamp with time zone not null,
260+
last_completed_run_date_time timestamp default '1900-01-01 00:00:00'::timestamp with time zone not null,
261+
last_errored_run_date_time timestamp default '1900-01-01 00:00:00'::timestamp with time zone not null,
260262
schedule_frequency_id integer default 0 not null
261263
constraint process_fk04
262264
references process_tracker.schedule_frequency_lkup

process_tracker/models/process.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -148,6 +148,12 @@ class Process(Base):
148148
last_failed_run_date_time = Column(
149149
DateTime(timezone=True), nullable=False, default=default_date
150150
)
151+
last_completed_run_date_time = Column(
152+
DateTime(timezone=True), nullable=False, default=default_date
153+
)
154+
last_errored_run_date_time = Column(
155+
DateTime(timezone=True), nullable=False, default=default_date
156+
)
151157
schedule_frequency_id = Column(
152158
Integer,
153159
ForeignKey("process_tracker.schedule_frequency_lkup.schedule_frequency_id"),

process_tracker/process_tracker.py

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -267,20 +267,19 @@ def change_run_status(self, new_status, end_date=None):
267267
new_status
268268
]
269269

270-
if (
271-
self.process_status_types[new_status] == self.process_status_complete
272-
) or (self.process_status_types[new_status] == self.process_status_failed):
273-
274-
self.logger.info("Process status changing to failed or completed.")
275-
270+
if self.process_status_types[new_status] == self.process_status_complete:
271+
self.logger.info("Process status changing to completed.")
272+
self.process.last_completed_run_date_time = end_date
276273
self.process_tracking_run.process_run_end_date_time = end_date
277274

278-
if self.process_status_types[new_status] == self.process_status_failed:
279-
self.logger.info(
280-
"Process recording as failed. Setting process last_failed_run_date_time."
281-
)
275+
elif self.process_status_types[new_status] == self.process_status_failed:
276+
277+
self.logger.info(
278+
"Process recording as failed. Setting process last_failed_run_date_time."
279+
)
282280

283-
self.process.last_failed_run_date_time = end_date
281+
self.process.last_failed_run_date_time = end_date
282+
self.process_tracking_run.process_run_end_date_time = end_date
284283

285284
self.session.commit()
286285

tests/test_process_tracker.py

Lines changed: 30 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1559,32 +1559,52 @@ def test_register_process_target_object_attributes(self):
15591559
def test_change_run_status_complete(self):
15601560
"""
15611561
Testing that when changing the run status from 'running' to 'complete' the run record updates successfully.
1562+
Process record is also updated for last_completed_date_time.
15621563
:return:
15631564
"""
1564-
self.process_tracker.change_run_status(new_status="completed")
1565+
end_date = datetime.now()
1566+
self.process_tracker.change_run_status(
1567+
new_status="completed", end_date=end_date
1568+
)
15651569

1566-
run_record = self.session.query(ProcessTracking).filter(
1567-
ProcessTracking.process_id == self.process_id
1570+
run_record = (
1571+
self.session.query(
1572+
ProcessTracking.process_status_id, Process.last_completed_run_date_time
1573+
)
1574+
.join(Process)
1575+
.filter(ProcessTracking.process_id == self.process_id)
15681576
)
15691577

1570-
given_result = run_record[0].process_status_id
1571-
expected_result = self.process_tracker.process_status_complete
1578+
given_result = [
1579+
run_record[0].process_status_id,
1580+
run_record[0].last_completed_run_date_time,
1581+
]
1582+
expected_result = [self.process_tracker.process_status_complete, end_date]
15721583

15731584
self.assertEqual(expected_result, given_result)
15741585

15751586
def test_change_run_status_failed(self):
15761587
"""
15771588
Testing that when changing the run status from 'running' to 'failed' the run record updates successfully.
1589+
Process record is also updated for last_failed_date_time.
15781590
:return:
15791591
"""
1580-
self.process_tracker.change_run_status(new_status="failed")
1592+
end_date = datetime.now()
1593+
self.process_tracker.change_run_status(new_status="failed", end_date=end_date)
15811594

1582-
run_record = self.session.query(ProcessTracking).filter(
1583-
ProcessTracking.process_id == self.process_id
1595+
run_record = (
1596+
self.session.query(
1597+
ProcessTracking.process_status_id, Process.last_failed_run_date_time
1598+
)
1599+
.join(Process)
1600+
.filter(ProcessTracking.process_id == self.process_id)
15841601
)
15851602

1586-
given_result = run_record[0].process_status_id
1587-
expected_result = self.process_tracker.process_status_failed
1603+
given_result = [
1604+
run_record[0].process_status_id,
1605+
run_record[0].last_failed_run_date_time,
1606+
]
1607+
expected_result = [self.process_tracker.process_status_failed, end_date]
15881608

15891609
self.assertEqual(expected_result, given_result)
15901610

0 commit comments

Comments
 (0)