Extract explanatory patterns in variables

and extend the tests for presence and absence.
This commit is contained in:
Carsten Grohmann 2023-03-17 22:26:34 +01:00
parent f2b0bf42c6
commit ae1bcda939

124
test.py
View File

@ -36,6 +36,27 @@ class ThreadedTCPServer(socketserver.ThreadingMixIn, socketserver.TCPServer):
class TestBase(unittest.TestCase): class TestBase(unittest.TestCase):
text_alloc_failed_below_low_watermark = (
"The request failed because after its fulfillment the free memory would "
"be below the memory low watermark."
)
text_alloc_failed_no_free_chunks = (
"The request failed because there is no free chunk in the current or "
"higher order."
)
text_alloc_failed_unknown_reason = "The request failed, but the reason is unknown."
text_mem_not_heavily_fragmented = "The system memory is not heavily fragmented"
text_mem_heavily_fragmented = "The system memory is heavily fragmented"
text_oom_triggered_manually = "OOM killer was manually triggered"
text_oom_triggered_automatically = "OOM killer was automatically triggered"
text_swap_space_not_in_use = "physical memory and no swap space"
text_swap_space_are_in_use = "swap space are in use"
text_with_an_oom_score_of = "with an OOM score of"
def get_lines(self, text, count): def get_lines(self, text, count):
""" """
Return the number of lines specified by count from given text Return the number of lines specified by count from given text
@ -221,12 +242,29 @@ class TestInBrowser(TestBase):
self.assertEqual(swap_total_kb.text, "8388604 kBytes") self.assertEqual(swap_total_kb.text, "8388604 kBytes")
explanation = self.driver.find_element(By.ID, "explanation") explanation = self.driver.find_element(By.ID, "explanation")
self.assertTrue( for expected in [
"OOM killer was automatically triggered" in explanation.text, self.text_alloc_failed_below_low_watermark,
'Missing text "OOM killer was automatically triggered"', self.text_mem_not_heavily_fragmented,
) self.text_oom_triggered_automatically,
self.text_swap_space_are_in_use,
self.text_with_an_oom_score_of,
]:
self.assertTrue(
expected in explanation.text,
'Missing statement "%s"' % expected,
)
for unexpected in [
self.text_alloc_failed_no_free_chunks,
self.text_alloc_failed_unknown_reason,
self.text_mem_heavily_fragmented,
self.text_oom_triggered_manually,
self.text_swap_space_not_in_use,
]:
self.assertTrue(
unexpected not in explanation.text,
'Unexpected statement "%s"' % unexpected,
)
explanation = self.driver.find_element(By.ID, "explanation")
self.assertTrue( self.assertTrue(
"system has 33519336 kBytes physical memory and 8388604 kBytes swap space." "system has 33519336 kBytes physical memory and 8388604 kBytes swap space."
in explanation.text, in explanation.text,
@ -246,15 +284,6 @@ class TestInBrowser(TestBase):
in explanation.text, in explanation.text,
"Used swap space in summary not found", "Used swap space in summary not found",
) )
self.assertTrue(
"The request failed because after its fulfillment the free memory would be below the memory low watermark."
in explanation.text,
"Memory allocation failure analysis not found",
)
self.assertTrue(
"The system memory is not heavily fragmented" in explanation.text,
"Missing statement about not fragmented memory",
)
mem_node_info = self.driver.find_element(By.CLASS_NAME, "mem_node_info") mem_node_info = self.driver.find_element(By.CLASS_NAME, "mem_node_info")
self.assertEqual( self.assertEqual(
@ -304,36 +333,37 @@ class TestInBrowser(TestBase):
) )
explanation = self.driver.find_element(By.ID, "explanation") explanation = self.driver.find_element(By.ID, "explanation")
self.assertTrue( for expected in [
"OOM killer was manually triggered" in explanation.text, self.text_oom_triggered_manually,
'Missing text "OOM killer was manually triggered"', self.text_swap_space_not_in_use,
) ]:
self.assertTrue(
expected in explanation.text,
'Missing statement "%s"' % expected,
)
for unexpected in [
self.text_alloc_failed_below_low_watermark,
self.text_alloc_failed_no_free_chunks,
self.text_alloc_failed_unknown_reason,
self.text_mem_heavily_fragmented,
self.text_mem_not_heavily_fragmented,
self.text_oom_triggered_automatically,
self.text_with_an_oom_score_of,
]:
self.assertTrue(
unexpected not in explanation.text,
'Unexpected statement "%s"' % unexpected,
)
self.assertFalse(
"with an OOM score of" in explanation.text,
'No OOM score but text "with an OOM score of"',
)
explanation = self.driver.find_element(By.ID, "explanation")
self.assertTrue( self.assertTrue(
"system has 2096632 kBytes physical memory and no swap space" "system has 2096632 kBytes physical memory" in explanation.text,
in explanation.text, "Physical memory in summary not found",
"Physical and swap memory in summary not found",
) )
self.assertTrue( self.assertTrue(
"9 % (209520 kBytes out of 2096632 kBytes) physical memory" "9 % (209520 kBytes out of 2096632 kBytes) physical memory"
in explanation.text, in explanation.text,
"Used physical memory in summary not found", "Used physical memory in summary not found",
) )
self.assertTrue(
"The request failed because" not in explanation.text,
"Unexpected memory allocation failure analysis found",
)
self.assertTrue(
"The system memory is heavily fragmented" not in explanation.text
and "The system memory is not heavily fragmented" not in explanation.text,
"Unexpected memory fragmentation statement found",
)
mem_node_info = self.driver.find_element(By.CLASS_NAME, "mem_node_info") mem_node_info = self.driver.find_element(By.CLASS_NAME, "mem_node_info")
self.assertEqual( self.assertEqual(
@ -358,19 +388,19 @@ class TestInBrowser(TestBase):
def check_swap_inactive(self): def check_swap_inactive(self):
explanation = self.driver.find_element(By.ID, "explanation") explanation = self.driver.find_element(By.ID, "explanation")
self.assertTrue( self.assertTrue(
"physical memory and no swap space" in explanation.text, self.text_swap_space_not_in_use in explanation.text,
'Missing text "physical memory and no swap space"', 'Missing statement "%s"' % self.text_swap_space_not_in_use,
) )
self.assertFalse( self.assertTrue(
"swap space are in use" in explanation.text, self.text_swap_space_are_in_use not in explanation.text,
'No swap space but text "swap space are in use"', 'Unexpected statement "%s"' % self.text_swap_space_are_in_use,
) )
def check_swap_active(self): def check_swap_active(self):
explanation = self.driver.find_element(By.ID, "explanation") explanation = self.driver.find_element(By.ID, "explanation")
self.assertTrue( self.assertTrue(
"swap space are in use" in explanation.text, self.text_swap_space_are_in_use in explanation.text,
'Swap space active but no text "swap space are in use"', 'Missing statement "%s"' % self.text_swap_space_are_in_use,
) )
def test_010_load_page(self): def test_010_load_page(self):
@ -565,8 +595,12 @@ Killed process 6576 (java) total-vm:33914892kB, anon-rss:20629004kB, file-rss:0k
explanation = self.driver.find_element(By.ID, "explanation") explanation = self.driver.find_element(By.ID, "explanation")
self.assertTrue( self.assertTrue(
"OOM killer was manually triggered" in explanation.text, self.text_oom_triggered_manually in explanation.text,
'Missing text "OOM killer was manually triggered"', 'Missing statement "%s"' % self.text_oom_triggered_manually,
)
self.assertTrue(
self.text_oom_triggered_automatically not in explanation.text,
'Unexpected statement "%s"' % self.text_oom_triggered_automatically,
) )
def test_080_swap_deactivated(self): def test_080_swap_deactivated(self):