349 lines
15 KiB
Python
349 lines
15 KiB
Python
import unittest
|
|
|
|
import buildscripts.monitor_build_status.cli as under_test
|
|
|
|
|
|
class TestSummarize(unittest.TestCase):
|
|
def test_previous_unknown_current_red_not_friday(self):
|
|
previous_build_status = under_test.BuildStatus.UNKNOWN
|
|
current_build_status = under_test.BuildStatus.RED
|
|
today_is_friday = False
|
|
|
|
resulting_build_status, summary = under_test.MonitorBuildStatusOrchestrator._summarize(
|
|
previous_build_status, current_build_status, today_is_friday
|
|
)
|
|
|
|
expected_status = under_test.BuildStatus.YELLOW
|
|
expected_summary = (
|
|
f"{under_test.SummaryMsg.TITLE.value}\n"
|
|
f"{under_test.SummaryMsg.STATUS_CHANGED.value.format(status=expected_status.value)}\n"
|
|
f"{under_test.SummaryMsg.THRESHOLD_EXCEEDED_X2.value}\n"
|
|
f"{under_test.SummaryMsg.ACTION_ON_YELLOW.value}\n\n"
|
|
f"{under_test.SummaryMsg.PLAYBOOK_REFERENCE.value}\n"
|
|
)
|
|
|
|
self.assertEqual(resulting_build_status, expected_status)
|
|
self.assertEqual(summary, expected_summary)
|
|
|
|
def test_previous_green_current_red_not_friday(self):
|
|
previous_build_status = under_test.BuildStatus.GREEN
|
|
current_build_status = under_test.BuildStatus.RED
|
|
today_is_friday = False
|
|
|
|
resulting_build_status, summary = under_test.MonitorBuildStatusOrchestrator._summarize(
|
|
previous_build_status, current_build_status, today_is_friday
|
|
)
|
|
|
|
expected_status = under_test.BuildStatus.YELLOW
|
|
expected_summary = (
|
|
f"{under_test.SummaryMsg.TITLE.value}\n"
|
|
f"{under_test.SummaryMsg.STATUS_CHANGED.value.format(status=expected_status.value)}\n"
|
|
f"{under_test.SummaryMsg.THRESHOLD_EXCEEDED_X2.value}\n"
|
|
f"{under_test.SummaryMsg.ACTION_ON_YELLOW.value}\n\n"
|
|
f"{under_test.SummaryMsg.PLAYBOOK_REFERENCE.value}\n"
|
|
)
|
|
|
|
self.assertEqual(resulting_build_status, expected_status)
|
|
self.assertEqual(summary, expected_summary)
|
|
|
|
def test_previous_yellow_current_red_not_friday(self):
|
|
previous_build_status = under_test.BuildStatus.YELLOW
|
|
current_build_status = under_test.BuildStatus.RED
|
|
today_is_friday = False
|
|
|
|
resulting_build_status, summary = under_test.MonitorBuildStatusOrchestrator._summarize(
|
|
previous_build_status, current_build_status, today_is_friday
|
|
)
|
|
|
|
expected_status = under_test.BuildStatus.YELLOW
|
|
expected_summary = (
|
|
f"{under_test.SummaryMsg.TITLE.value}\n"
|
|
f"{under_test.SummaryMsg.STATUS_IS.value.format(status=expected_status.value)}\n"
|
|
f"{under_test.SummaryMsg.THRESHOLD_EXCEEDED_X2.value}\n"
|
|
f"{under_test.SummaryMsg.ACTION_ON_YELLOW.value}\n\n"
|
|
f"{under_test.SummaryMsg.PLAYBOOK_REFERENCE.value}\n"
|
|
)
|
|
|
|
self.assertEqual(resulting_build_status, expected_status)
|
|
self.assertEqual(summary, expected_summary)
|
|
|
|
def test_previous_red_current_red_not_friday(self):
|
|
previous_build_status = under_test.BuildStatus.RED
|
|
current_build_status = under_test.BuildStatus.RED
|
|
today_is_friday = False
|
|
|
|
resulting_build_status, summary = under_test.MonitorBuildStatusOrchestrator._summarize(
|
|
previous_build_status, current_build_status, today_is_friday
|
|
)
|
|
|
|
expected_status = under_test.BuildStatus.RED
|
|
expected_summary = (
|
|
f"{under_test.SummaryMsg.TITLE.value}\n"
|
|
f"{under_test.SummaryMsg.STATUS_IS.value.format(status=expected_status.value)}\n"
|
|
f"{under_test.SummaryMsg.THRESHOLD_EXCEEDED_X2.value}\n"
|
|
f"{under_test.SummaryMsg.STILL_RED.value}\n"
|
|
f"{under_test.SummaryMsg.ACTION_ON_RED.value}\n\n"
|
|
f"{under_test.SummaryMsg.PLAYBOOK_REFERENCE.value}\n"
|
|
)
|
|
|
|
self.assertEqual(resulting_build_status, expected_status)
|
|
self.assertEqual(summary, expected_summary)
|
|
|
|
def test_previous_unknown_current_red_on_friday(self):
|
|
previous_build_status = under_test.BuildStatus.UNKNOWN
|
|
current_build_status = under_test.BuildStatus.RED
|
|
today_is_friday = True
|
|
|
|
resulting_build_status, summary = under_test.MonitorBuildStatusOrchestrator._summarize(
|
|
previous_build_status, current_build_status, today_is_friday
|
|
)
|
|
|
|
expected_status = under_test.BuildStatus.RED
|
|
expected_summary = (
|
|
f"{under_test.SummaryMsg.TITLE.value}\n"
|
|
f"{under_test.SummaryMsg.STATUS_CHANGED.value.format(status=expected_status.value)}\n"
|
|
f"{under_test.SummaryMsg.THRESHOLD_EXCEEDED_X2.value}\n"
|
|
f"{under_test.SummaryMsg.ENTER_RED.value}\n"
|
|
f"{under_test.SummaryMsg.ACTION_ON_RED.value}\n\n"
|
|
f"{under_test.SummaryMsg.PLAYBOOK_REFERENCE.value}\n"
|
|
)
|
|
|
|
self.assertEqual(resulting_build_status, expected_status)
|
|
self.assertEqual(summary, expected_summary)
|
|
|
|
def test_previous_green_current_red_on_friday(self):
|
|
previous_build_status = under_test.BuildStatus.GREEN
|
|
current_build_status = under_test.BuildStatus.RED
|
|
today_is_friday = True
|
|
|
|
resulting_build_status, summary = under_test.MonitorBuildStatusOrchestrator._summarize(
|
|
previous_build_status, current_build_status, today_is_friday
|
|
)
|
|
|
|
expected_status = under_test.BuildStatus.RED
|
|
expected_summary = (
|
|
f"{under_test.SummaryMsg.TITLE.value}\n"
|
|
f"{under_test.SummaryMsg.STATUS_CHANGED.value.format(status=expected_status.value)}\n"
|
|
f"{under_test.SummaryMsg.THRESHOLD_EXCEEDED_X2.value}\n"
|
|
f"{under_test.SummaryMsg.ENTER_RED.value}\n"
|
|
f"{under_test.SummaryMsg.ACTION_ON_RED.value}\n\n"
|
|
f"{under_test.SummaryMsg.PLAYBOOK_REFERENCE.value}\n"
|
|
)
|
|
|
|
self.assertEqual(resulting_build_status, expected_status)
|
|
self.assertEqual(summary, expected_summary)
|
|
|
|
def test_previous_yellow_current_red_on_friday(self):
|
|
previous_build_status = under_test.BuildStatus.YELLOW
|
|
current_build_status = under_test.BuildStatus.RED
|
|
today_is_friday = True
|
|
|
|
resulting_build_status, summary = under_test.MonitorBuildStatusOrchestrator._summarize(
|
|
previous_build_status, current_build_status, today_is_friday
|
|
)
|
|
|
|
expected_status = under_test.BuildStatus.RED
|
|
expected_summary = (
|
|
f"{under_test.SummaryMsg.TITLE.value}\n"
|
|
f"{under_test.SummaryMsg.STATUS_CHANGED.value.format(status=expected_status.value)}\n"
|
|
f"{under_test.SummaryMsg.THRESHOLD_EXCEEDED_X2.value}\n"
|
|
f"{under_test.SummaryMsg.ENTER_RED.value}\n"
|
|
f"{under_test.SummaryMsg.ACTION_ON_RED.value}\n\n"
|
|
f"{under_test.SummaryMsg.PLAYBOOK_REFERENCE.value}\n"
|
|
)
|
|
|
|
self.assertEqual(resulting_build_status, expected_status)
|
|
self.assertEqual(summary, expected_summary)
|
|
|
|
def test_previous_red_current_red_on_friday(self):
|
|
previous_build_status = under_test.BuildStatus.RED
|
|
current_build_status = under_test.BuildStatus.RED
|
|
today_is_friday = True
|
|
|
|
resulting_build_status, summary = under_test.MonitorBuildStatusOrchestrator._summarize(
|
|
previous_build_status, current_build_status, today_is_friday
|
|
)
|
|
|
|
expected_status = under_test.BuildStatus.RED
|
|
expected_summary = (
|
|
f"{under_test.SummaryMsg.TITLE.value}\n"
|
|
f"{under_test.SummaryMsg.STATUS_IS.value.format(status=expected_status.value)}\n"
|
|
f"{under_test.SummaryMsg.THRESHOLD_EXCEEDED_X2.value}\n"
|
|
f"{under_test.SummaryMsg.STILL_RED.value}\n"
|
|
f"{under_test.SummaryMsg.ACTION_ON_RED.value}\n\n"
|
|
f"{under_test.SummaryMsg.PLAYBOOK_REFERENCE.value}\n"
|
|
)
|
|
|
|
self.assertEqual(resulting_build_status, expected_status)
|
|
self.assertEqual(summary, expected_summary)
|
|
|
|
def test_previous_unknown_current_yellow(self):
|
|
previous_build_status = under_test.BuildStatus.UNKNOWN
|
|
current_build_status = under_test.BuildStatus.YELLOW
|
|
today_is_friday = False
|
|
|
|
resulting_build_status, summary = under_test.MonitorBuildStatusOrchestrator._summarize(
|
|
previous_build_status, current_build_status, today_is_friday
|
|
)
|
|
|
|
expected_status = under_test.BuildStatus.YELLOW
|
|
expected_summary = (
|
|
f"{under_test.SummaryMsg.TITLE.value}\n"
|
|
f"{under_test.SummaryMsg.STATUS_CHANGED.value.format(status=expected_status.value)}\n"
|
|
f"{under_test.SummaryMsg.THRESHOLD_EXCEEDED.value}\n"
|
|
f"{under_test.SummaryMsg.ACTION_ON_YELLOW.value}\n\n"
|
|
f"{under_test.SummaryMsg.PLAYBOOK_REFERENCE.value}\n"
|
|
)
|
|
|
|
self.assertEqual(resulting_build_status, expected_status)
|
|
self.assertEqual(summary, expected_summary)
|
|
|
|
def test_previous_green_current_yellow(self):
|
|
previous_build_status = under_test.BuildStatus.GREEN
|
|
current_build_status = under_test.BuildStatus.YELLOW
|
|
today_is_friday = False
|
|
|
|
resulting_build_status, summary = under_test.MonitorBuildStatusOrchestrator._summarize(
|
|
previous_build_status, current_build_status, today_is_friday
|
|
)
|
|
|
|
expected_status = under_test.BuildStatus.YELLOW
|
|
expected_summary = (
|
|
f"{under_test.SummaryMsg.TITLE.value}\n"
|
|
f"{under_test.SummaryMsg.STATUS_CHANGED.value.format(status=expected_status.value)}\n"
|
|
f"{under_test.SummaryMsg.THRESHOLD_EXCEEDED.value}\n"
|
|
f"{under_test.SummaryMsg.ACTION_ON_YELLOW.value}\n\n"
|
|
f"{under_test.SummaryMsg.PLAYBOOK_REFERENCE.value}\n"
|
|
)
|
|
|
|
self.assertEqual(resulting_build_status, expected_status)
|
|
self.assertEqual(summary, expected_summary)
|
|
|
|
def test_previous_yellow_current_yellow(self):
|
|
previous_build_status = under_test.BuildStatus.YELLOW
|
|
current_build_status = under_test.BuildStatus.YELLOW
|
|
today_is_friday = False
|
|
|
|
resulting_build_status, summary = under_test.MonitorBuildStatusOrchestrator._summarize(
|
|
previous_build_status, current_build_status, today_is_friday
|
|
)
|
|
|
|
expected_status = under_test.BuildStatus.YELLOW
|
|
expected_summary = (
|
|
f"{under_test.SummaryMsg.TITLE.value}\n"
|
|
f"{under_test.SummaryMsg.STATUS_IS.value.format(status=expected_status.value)}\n"
|
|
f"{under_test.SummaryMsg.THRESHOLD_EXCEEDED.value}\n"
|
|
f"{under_test.SummaryMsg.ACTION_ON_YELLOW.value}\n\n"
|
|
f"{under_test.SummaryMsg.PLAYBOOK_REFERENCE.value}\n"
|
|
)
|
|
|
|
self.assertEqual(resulting_build_status, expected_status)
|
|
self.assertEqual(summary, expected_summary)
|
|
|
|
def test_previous_red_current_yellow(self):
|
|
previous_build_status = under_test.BuildStatus.RED
|
|
current_build_status = under_test.BuildStatus.YELLOW
|
|
today_is_friday = False
|
|
|
|
resulting_build_status, summary = under_test.MonitorBuildStatusOrchestrator._summarize(
|
|
previous_build_status, current_build_status, today_is_friday
|
|
)
|
|
|
|
expected_status = under_test.BuildStatus.RED
|
|
expected_summary = (
|
|
f"{under_test.SummaryMsg.TITLE.value}\n"
|
|
f"{under_test.SummaryMsg.STATUS_IS.value.format(status=expected_status.value)}\n"
|
|
f"{under_test.SummaryMsg.THRESHOLD_EXCEEDED.value}\n"
|
|
f"{under_test.SummaryMsg.STILL_RED.value}\n"
|
|
f"{under_test.SummaryMsg.ACTION_ON_RED.value}\n\n"
|
|
f"{under_test.SummaryMsg.PLAYBOOK_REFERENCE.value}\n"
|
|
)
|
|
|
|
self.assertEqual(resulting_build_status, expected_status)
|
|
self.assertEqual(summary, expected_summary)
|
|
|
|
def test_previous_unknown_current_green(self):
|
|
previous_build_status = under_test.BuildStatus.UNKNOWN
|
|
current_build_status = under_test.BuildStatus.GREEN
|
|
today_is_friday = False
|
|
|
|
resulting_build_status, summary = under_test.MonitorBuildStatusOrchestrator._summarize(
|
|
previous_build_status, current_build_status, today_is_friday
|
|
)
|
|
|
|
expected_status = under_test.BuildStatus.GREEN
|
|
expected_summary = (
|
|
f"{under_test.SummaryMsg.TITLE.value}\n"
|
|
f"{under_test.SummaryMsg.STATUS_CHANGED.value.format(status=expected_status.value)}\n"
|
|
f"{under_test.SummaryMsg.BELOW_THRESHOLDS.value}\n"
|
|
f"{under_test.SummaryMsg.ACTION_ON_GREEN.value}\n\n"
|
|
f"{under_test.SummaryMsg.PLAYBOOK_REFERENCE.value}\n"
|
|
)
|
|
|
|
self.assertEqual(resulting_build_status, expected_status)
|
|
self.assertEqual(summary, expected_summary)
|
|
|
|
def test_previous_green_current_green(self):
|
|
previous_build_status = under_test.BuildStatus.GREEN
|
|
current_build_status = under_test.BuildStatus.GREEN
|
|
today_is_friday = False
|
|
|
|
resulting_build_status, summary = under_test.MonitorBuildStatusOrchestrator._summarize(
|
|
previous_build_status, current_build_status, today_is_friday
|
|
)
|
|
|
|
expected_status = under_test.BuildStatus.GREEN
|
|
expected_summary = (
|
|
f"{under_test.SummaryMsg.TITLE.value}\n"
|
|
f"{under_test.SummaryMsg.STATUS_IS.value.format(status=expected_status.value)}\n"
|
|
f"{under_test.SummaryMsg.BELOW_THRESHOLDS.value}\n"
|
|
f"{under_test.SummaryMsg.ACTION_ON_GREEN.value}\n\n"
|
|
f"{under_test.SummaryMsg.PLAYBOOK_REFERENCE.value}\n"
|
|
)
|
|
|
|
self.assertEqual(resulting_build_status, expected_status)
|
|
self.assertEqual(summary, expected_summary)
|
|
|
|
def test_previous_yellow_current_green(self):
|
|
previous_build_status = under_test.BuildStatus.YELLOW
|
|
current_build_status = under_test.BuildStatus.GREEN
|
|
today_is_friday = False
|
|
|
|
resulting_build_status, summary = under_test.MonitorBuildStatusOrchestrator._summarize(
|
|
previous_build_status, current_build_status, today_is_friday
|
|
)
|
|
|
|
expected_status = under_test.BuildStatus.GREEN
|
|
expected_summary = (
|
|
f"{under_test.SummaryMsg.TITLE.value}\n"
|
|
f"{under_test.SummaryMsg.STATUS_CHANGED.value.format(status=expected_status.value)}\n"
|
|
f"{under_test.SummaryMsg.BELOW_THRESHOLDS.value}\n"
|
|
f"{under_test.SummaryMsg.ACTION_ON_GREEN.value}\n\n"
|
|
f"{under_test.SummaryMsg.PLAYBOOK_REFERENCE.value}\n"
|
|
)
|
|
|
|
self.assertEqual(resulting_build_status, expected_status)
|
|
self.assertEqual(summary, expected_summary)
|
|
|
|
def test_previous_red_current_green(self):
|
|
previous_build_status = under_test.BuildStatus.RED
|
|
current_build_status = under_test.BuildStatus.GREEN
|
|
today_is_friday = False
|
|
|
|
resulting_build_status, summary = under_test.MonitorBuildStatusOrchestrator._summarize(
|
|
previous_build_status, current_build_status, today_is_friday
|
|
)
|
|
|
|
expected_status = under_test.BuildStatus.GREEN
|
|
expected_summary = (
|
|
f"{under_test.SummaryMsg.TITLE.value}\n"
|
|
f"{under_test.SummaryMsg.STATUS_CHANGED.value.format(status=expected_status.value)}\n"
|
|
f"{under_test.SummaryMsg.BELOW_THRESHOLDS.value}\n"
|
|
f"{under_test.SummaryMsg.EXIT_RED.value}\n"
|
|
f"{under_test.SummaryMsg.ACTION_ON_GREEN.value}\n\n"
|
|
f"{under_test.SummaryMsg.PLAYBOOK_REFERENCE.value}\n"
|
|
)
|
|
|
|
self.assertEqual(resulting_build_status, expected_status)
|
|
self.assertEqual(summary, expected_summary)
|