提交 fabb8d58 编写于 作者: A Ashwin Agrawal

Make uao fault injector tests deterministic.

Replace sleeps with deterministic check for database operational, after
injecting PANIC faults.
上级 5f75adfe
...@@ -25,7 +25,6 @@ import unittest2 as unittest ...@@ -25,7 +25,6 @@ import unittest2 as unittest
import os import os
import subprocess import subprocess
import sys import sys
from time import sleep
@unittest.skipIf(os.environ.get('BUILD_TYPE') == 'gcov', "Skip for Instrumented Build") @unittest.skipIf(os.environ.get('BUILD_TYPE') == 'gcov', "Skip for Instrumented Build")
...@@ -84,10 +83,8 @@ class UAO_FaultInjection_TestCase(MPPTestCase): ...@@ -84,10 +83,8 @@ class UAO_FaultInjection_TestCase(MPPTestCase):
PSQL.run_sql_file(sql_file1, out_file=out_file1) PSQL.run_sql_file(sql_file1, out_file=out_file1)
result1 = Gpdiff.are_files_equal(out_file1, ans_file1) result1 = Gpdiff.are_files_equal(out_file1, ans_file1)
# The connection is accepted before it is actually ready, leading to panic messages PSQL.wait_for_database_up();
# Therefore we have to sleep here.
sleep(5)
gpfaultinjector = Command(cmd_type, set_fault_in_master_reset) gpfaultinjector = Command(cmd_type, set_fault_in_master_reset)
gpfaultinjector.run() gpfaultinjector.run()
...@@ -114,9 +111,8 @@ class UAO_FaultInjection_TestCase(MPPTestCase): ...@@ -114,9 +111,8 @@ class UAO_FaultInjection_TestCase(MPPTestCase):
PSQL.run_sql_file(sql_file1, out_file=out_file1) PSQL.run_sql_file(sql_file1, out_file=out_file1)
result1 = Gpdiff.are_files_equal(out_file1, ans_file1) result1 = Gpdiff.are_files_equal(out_file1, ans_file1)
# The connection is accepted before it is actually ready, leading to panic messages
# Therefore we have to sleep here. PSQL.wait_for_database_up();
sleep(5)
gpfaultinjector = Command(cmd_type, set_fault_in_master_reset) gpfaultinjector = Command(cmd_type, set_fault_in_master_reset)
gpfaultinjector.run() gpfaultinjector.run()
...@@ -143,9 +139,8 @@ class UAO_FaultInjection_TestCase(MPPTestCase): ...@@ -143,9 +139,8 @@ class UAO_FaultInjection_TestCase(MPPTestCase):
PSQL.run_sql_file(sql_file1, out_file=out_file1) PSQL.run_sql_file(sql_file1, out_file=out_file1)
result1 = Gpdiff.are_files_equal(out_file1, ans_file1) result1 = Gpdiff.are_files_equal(out_file1, ans_file1)
# The connection is accepted before it is actually ready, leading to panic messages
# Therefore we have to sleep here. PSQL.wait_for_database_up();
sleep(5)
gpfaultinjector = Command(cmd_type, set_fault_in_master_reset) gpfaultinjector = Command(cmd_type, set_fault_in_master_reset)
gpfaultinjector.run() gpfaultinjector.run()
...@@ -172,9 +167,8 @@ class UAO_FaultInjection_TestCase(MPPTestCase): ...@@ -172,9 +167,8 @@ class UAO_FaultInjection_TestCase(MPPTestCase):
PSQL.run_sql_file(sql_file1, out_file=out_file1) PSQL.run_sql_file(sql_file1, out_file=out_file1)
result1 = Gpdiff.are_files_equal(out_file1, ans_file1) result1 = Gpdiff.are_files_equal(out_file1, ans_file1)
# The connection is accepted before it is actually ready, leading to panic messages
# Therefore we have to sleep here. PSQL.wait_for_database_up();
sleep(5)
gpfaultinjector = Command(cmd_type, set_fault_in_seg_reset) gpfaultinjector = Command(cmd_type, set_fault_in_seg_reset)
gpfaultinjector.run() gpfaultinjector.run()
...@@ -201,9 +195,8 @@ class UAO_FaultInjection_TestCase(MPPTestCase): ...@@ -201,9 +195,8 @@ class UAO_FaultInjection_TestCase(MPPTestCase):
PSQL.run_sql_file(sql_file1, out_file=out_file1) PSQL.run_sql_file(sql_file1, out_file=out_file1)
result1 = Gpdiff.are_files_equal(out_file1, ans_file1) result1 = Gpdiff.are_files_equal(out_file1, ans_file1)
# The connection is accepted before it is actually ready, leading to panic messages
# Therefore we have to sleep here. PSQL.wait_for_database_up();
sleep(5)
gpfaultinjector = Command(cmd_type, set_fault_in_seg_reset) gpfaultinjector = Command(cmd_type, set_fault_in_seg_reset)
gpfaultinjector.run() gpfaultinjector.run()
...@@ -255,10 +248,8 @@ class UAO_FaultInjection_TestCase(MPPTestCase): ...@@ -255,10 +248,8 @@ class UAO_FaultInjection_TestCase(MPPTestCase):
PSQL.run_sql_file(sql_file1, out_file=out_file1) PSQL.run_sql_file(sql_file1, out_file=out_file1)
result1 = Gpdiff.are_files_equal(out_file1, ans_file1) result1 = Gpdiff.are_files_equal(out_file1, ans_file1)
# The connection is accepted before it is actually ready, leading to panic messages PSQL.wait_for_database_up();
# Therefore we have to sleep here.
sleep(5)
gpfaultinjector = Command(cmd_type, set_fault_in_master_reset) gpfaultinjector = Command(cmd_type, set_fault_in_master_reset)
gpfaultinjector.run() gpfaultinjector.run()
...@@ -285,9 +276,8 @@ class UAO_FaultInjection_TestCase(MPPTestCase): ...@@ -285,9 +276,8 @@ class UAO_FaultInjection_TestCase(MPPTestCase):
PSQL.run_sql_file(sql_file1, out_file=out_file1) PSQL.run_sql_file(sql_file1, out_file=out_file1)
result1 = Gpdiff.are_files_equal(out_file1, ans_file1) result1 = Gpdiff.are_files_equal(out_file1, ans_file1)
# The connection is accepted before it is actually ready, leading to panic messages
# Therefore we have to sleep here. PSQL.wait_for_database_up();
sleep(5)
gpfaultinjector = Command(cmd_type, set_fault_in_master_reset) gpfaultinjector = Command(cmd_type, set_fault_in_master_reset)
gpfaultinjector.run() gpfaultinjector.run()
...@@ -314,9 +304,8 @@ class UAO_FaultInjection_TestCase(MPPTestCase): ...@@ -314,9 +304,8 @@ class UAO_FaultInjection_TestCase(MPPTestCase):
PSQL.run_sql_file(sql_file1, out_file=out_file1) PSQL.run_sql_file(sql_file1, out_file=out_file1)
result1 = Gpdiff.are_files_equal(out_file1, ans_file1) result1 = Gpdiff.are_files_equal(out_file1, ans_file1)
# The connection is accepted before it is actually ready, leading to panic messages
# Therefore we have to sleep here. PSQL.wait_for_database_up();
sleep(5)
gpfaultinjector = Command(cmd_type, set_fault_in_master_reset) gpfaultinjector = Command(cmd_type, set_fault_in_master_reset)
gpfaultinjector.run() gpfaultinjector.run()
...@@ -343,9 +332,8 @@ class UAO_FaultInjection_TestCase(MPPTestCase): ...@@ -343,9 +332,8 @@ class UAO_FaultInjection_TestCase(MPPTestCase):
PSQL.run_sql_file(sql_file1, out_file=out_file1) PSQL.run_sql_file(sql_file1, out_file=out_file1)
result1 = Gpdiff.are_files_equal(out_file1, ans_file1) result1 = Gpdiff.are_files_equal(out_file1, ans_file1)
# The connection is accepted before it is actually ready, leading to panic messages
# Therefore we have to sleep here. PSQL.wait_for_database_up();
sleep(5)
gpfaultinjector = Command(cmd_type, set_fault_in_seg_reset) gpfaultinjector = Command(cmd_type, set_fault_in_seg_reset)
gpfaultinjector.run() gpfaultinjector.run()
...@@ -372,9 +360,8 @@ class UAO_FaultInjection_TestCase(MPPTestCase): ...@@ -372,9 +360,8 @@ class UAO_FaultInjection_TestCase(MPPTestCase):
PSQL.run_sql_file(sql_file1, out_file=out_file1) PSQL.run_sql_file(sql_file1, out_file=out_file1)
result1 = Gpdiff.are_files_equal(out_file1, ans_file1) result1 = Gpdiff.are_files_equal(out_file1, ans_file1)
# The connection is accepted before it is actually ready, leading to panic messages
# Therefore we have to sleep here. PSQL.wait_for_database_up();
sleep(5)
gpfaultinjector = Command(cmd_type, set_fault_in_seg_reset) gpfaultinjector = Command(cmd_type, set_fault_in_seg_reset)
gpfaultinjector.run() gpfaultinjector.run()
...@@ -401,9 +388,8 @@ class UAO_FaultInjection_TestCase(MPPTestCase): ...@@ -401,9 +388,8 @@ class UAO_FaultInjection_TestCase(MPPTestCase):
PSQL.run_sql_file(sql_file1, out_file=out_file1) PSQL.run_sql_file(sql_file1, out_file=out_file1)
result1 = Gpdiff.are_files_equal(out_file1, ans_file1) result1 = Gpdiff.are_files_equal(out_file1, ans_file1)
# The connection is accepted before it is actually ready, leading to panic messages
# Therefore we have to sleep here. PSQL.wait_for_database_up();
sleep(5)
gpfaultinjector = Command(cmd_type, set_fault_in_seg_reset) gpfaultinjector = Command(cmd_type, set_fault_in_seg_reset)
gpfaultinjector.run() gpfaultinjector.run()
...@@ -430,9 +416,8 @@ class UAO_FaultInjection_TestCase(MPPTestCase): ...@@ -430,9 +416,8 @@ class UAO_FaultInjection_TestCase(MPPTestCase):
PSQL.run_sql_file(sql_file1, out_file=out_file1) PSQL.run_sql_file(sql_file1, out_file=out_file1)
result1 = Gpdiff.are_files_equal(out_file1, ans_file1) result1 = Gpdiff.are_files_equal(out_file1, ans_file1)
# The connection is accepted before it is actually ready, leading to panic messages
# Therefore we have to sleep here. PSQL.wait_for_database_up();
sleep(5)
gpfaultinjector = Command(cmd_type, set_fault_in_seg_reset) gpfaultinjector = Command(cmd_type, set_fault_in_seg_reset)
gpfaultinjector.run() gpfaultinjector.run()
...@@ -459,9 +444,8 @@ class UAO_FaultInjection_TestCase(MPPTestCase): ...@@ -459,9 +444,8 @@ class UAO_FaultInjection_TestCase(MPPTestCase):
PSQL.run_sql_file(sql_file1, out_file=out_file1) PSQL.run_sql_file(sql_file1, out_file=out_file1)
result1 = Gpdiff.are_files_equal(out_file1, ans_file1) result1 = Gpdiff.are_files_equal(out_file1, ans_file1)
# The connection is accepted before it is actually ready, leading to panic messages
# Therefore we have to sleep here. PSQL.wait_for_database_up();
sleep(5)
gpfaultinjector = Command(cmd_type, set_fault_in_seg_reset) gpfaultinjector = Command(cmd_type, set_fault_in_seg_reset)
gpfaultinjector.run() gpfaultinjector.run()
...@@ -488,9 +472,8 @@ class UAO_FaultInjection_TestCase(MPPTestCase): ...@@ -488,9 +472,8 @@ class UAO_FaultInjection_TestCase(MPPTestCase):
PSQL.run_sql_file(sql_file1, out_file=out_file1) PSQL.run_sql_file(sql_file1, out_file=out_file1)
result1 = Gpdiff.are_files_equal(out_file1, ans_file1) result1 = Gpdiff.are_files_equal(out_file1, ans_file1)
# The connection is accepted before it is actually ready, leading to panic messages
# Therefore we have to sleep here. PSQL.wait_for_database_up();
sleep(5)
gpfaultinjector = Command(cmd_type, set_fault_in_seg_reset) gpfaultinjector = Command(cmd_type, set_fault_in_seg_reset)
gpfaultinjector.run() gpfaultinjector.run()
...@@ -517,9 +500,8 @@ class UAO_FaultInjection_TestCase(MPPTestCase): ...@@ -517,9 +500,8 @@ class UAO_FaultInjection_TestCase(MPPTestCase):
PSQL.run_sql_file(sql_file1, out_file=out_file1) PSQL.run_sql_file(sql_file1, out_file=out_file1)
result1 = Gpdiff.are_files_equal(out_file1, ans_file1) result1 = Gpdiff.are_files_equal(out_file1, ans_file1)
# The connection is accepted before it is actually ready, leading to panic messages
# Therefore we have to sleep here. PSQL.wait_for_database_up();
sleep(5)
gpfaultinjector = Command(cmd_type, set_fault_in_seg_reset) gpfaultinjector = Command(cmd_type, set_fault_in_seg_reset)
gpfaultinjector.run() gpfaultinjector.run()
...@@ -546,9 +528,8 @@ class UAO_FaultInjection_TestCase(MPPTestCase): ...@@ -546,9 +528,8 @@ class UAO_FaultInjection_TestCase(MPPTestCase):
PSQL.run_sql_file(sql_file1, out_file=out_file1) PSQL.run_sql_file(sql_file1, out_file=out_file1)
result1 = Gpdiff.are_files_equal(out_file1, ans_file1) result1 = Gpdiff.are_files_equal(out_file1, ans_file1)
# The connection is accepted before it is actually ready, leading to panic messages
# Therefore we have to sleep here. PSQL.wait_for_database_up();
sleep(5)
gpfaultinjector = Command(cmd_type, set_fault_in_seg_reset) gpfaultinjector = Command(cmd_type, set_fault_in_seg_reset)
gpfaultinjector.run() gpfaultinjector.run()
...@@ -575,9 +556,8 @@ class UAO_FaultInjection_TestCase(MPPTestCase): ...@@ -575,9 +556,8 @@ class UAO_FaultInjection_TestCase(MPPTestCase):
PSQL.run_sql_file(sql_file1, out_file=out_file1) PSQL.run_sql_file(sql_file1, out_file=out_file1)
result1 = Gpdiff.are_files_equal(out_file1, ans_file1) result1 = Gpdiff.are_files_equal(out_file1, ans_file1)
# The connection is accepted before it is actually ready, leading to panic messages
# Therefore we have to sleep here. PSQL.wait_for_database_up();
sleep(5)
gpfaultinjector = Command(cmd_type, set_fault_in_seg_reset) gpfaultinjector = Command(cmd_type, set_fault_in_seg_reset)
gpfaultinjector.run() gpfaultinjector.run()
...@@ -604,9 +584,8 @@ class UAO_FaultInjection_TestCase(MPPTestCase): ...@@ -604,9 +584,8 @@ class UAO_FaultInjection_TestCase(MPPTestCase):
PSQL.run_sql_file(sql_file1, out_file=out_file1) PSQL.run_sql_file(sql_file1, out_file=out_file1)
result1 = Gpdiff.are_files_equal(out_file1, ans_file1) result1 = Gpdiff.are_files_equal(out_file1, ans_file1)
# The connection is accepted before it is actually ready, leading to panic messages
# Therefore we have to sleep here. PSQL.wait_for_database_up();
sleep(5)
gpfaultinjector = Command(cmd_type, set_fault_in_seg_reset) gpfaultinjector = Command(cmd_type, set_fault_in_seg_reset)
gpfaultinjector.run() gpfaultinjector.run()
...@@ -633,9 +612,8 @@ class UAO_FaultInjection_TestCase(MPPTestCase): ...@@ -633,9 +612,8 @@ class UAO_FaultInjection_TestCase(MPPTestCase):
PSQL.run_sql_file(sql_file1, out_file=out_file1) PSQL.run_sql_file(sql_file1, out_file=out_file1)
result1 = Gpdiff.are_files_equal(out_file1, ans_file1) result1 = Gpdiff.are_files_equal(out_file1, ans_file1)
# The connection is accepted before it is actually ready, leading to panic messages
# Therefore we have to sleep here. PSQL.wait_for_database_up();
sleep(5)
gpfaultinjector = Command(cmd_type, set_fault_in_seg_reset) gpfaultinjector = Command(cmd_type, set_fault_in_seg_reset)
gpfaultinjector.run() gpfaultinjector.run()
...@@ -662,9 +640,8 @@ class UAO_FaultInjection_TestCase(MPPTestCase): ...@@ -662,9 +640,8 @@ class UAO_FaultInjection_TestCase(MPPTestCase):
PSQL.run_sql_file(sql_file1, out_file=out_file1) PSQL.run_sql_file(sql_file1, out_file=out_file1)
result1 = Gpdiff.are_files_equal(out_file1, ans_file1) result1 = Gpdiff.are_files_equal(out_file1, ans_file1)
# The connection is accepted before it is actually ready, leading to panic messages
# Therefore we have to sleep here. PSQL.wait_for_database_up();
sleep(5)
gpfaultinjector = Command(cmd_type, set_fault_in_seg_reset) gpfaultinjector = Command(cmd_type, set_fault_in_seg_reset)
gpfaultinjector.run() gpfaultinjector.run()
...@@ -691,9 +668,8 @@ class UAO_FaultInjection_TestCase(MPPTestCase): ...@@ -691,9 +668,8 @@ class UAO_FaultInjection_TestCase(MPPTestCase):
PSQL.run_sql_file(sql_file1, out_file=out_file1) PSQL.run_sql_file(sql_file1, out_file=out_file1)
result1 = Gpdiff.are_files_equal(out_file1, ans_file1) result1 = Gpdiff.are_files_equal(out_file1, ans_file1)
# The connection is accepted before it is actually ready, leading to panic messages
# Therefore we have to sleep here. PSQL.wait_for_database_up();
sleep(5)
gpfaultinjector = Command(cmd_type, set_fault_in_seg_reset) gpfaultinjector = Command(cmd_type, set_fault_in_seg_reset)
gpfaultinjector.run() gpfaultinjector.run()
...@@ -720,9 +696,8 @@ class UAO_FaultInjection_TestCase(MPPTestCase): ...@@ -720,9 +696,8 @@ class UAO_FaultInjection_TestCase(MPPTestCase):
PSQL.run_sql_file(sql_file1, out_file=out_file1) PSQL.run_sql_file(sql_file1, out_file=out_file1)
result1 = Gpdiff.are_files_equal(out_file1, ans_file1) result1 = Gpdiff.are_files_equal(out_file1, ans_file1)
# The connection is accepted before it is actually ready, leading to panic messages
# Therefore we have to sleep here. PSQL.wait_for_database_up();
sleep(5)
gpfaultinjector = Command(cmd_type, set_fault_in_seg_reset) gpfaultinjector = Command(cmd_type, set_fault_in_seg_reset)
gpfaultinjector.run() gpfaultinjector.run()
...@@ -749,9 +724,8 @@ class UAO_FaultInjection_TestCase(MPPTestCase): ...@@ -749,9 +724,8 @@ class UAO_FaultInjection_TestCase(MPPTestCase):
PSQL.run_sql_file(sql_file1, out_file=out_file1) PSQL.run_sql_file(sql_file1, out_file=out_file1)
result1 = Gpdiff.are_files_equal(out_file1, ans_file1) result1 = Gpdiff.are_files_equal(out_file1, ans_file1)
# The connection is accepted before it is actually ready, leading to panic messages
# Therefore we have to sleep here. PSQL.wait_for_database_up();
sleep(5)
gpfaultinjector = Command(cmd_type, set_fault_in_seg_reset) gpfaultinjector = Command(cmd_type, set_fault_in_seg_reset)
gpfaultinjector.run() gpfaultinjector.run()
...@@ -778,9 +752,8 @@ class UAO_FaultInjection_TestCase(MPPTestCase): ...@@ -778,9 +752,8 @@ class UAO_FaultInjection_TestCase(MPPTestCase):
PSQL.run_sql_file(sql_file1, out_file=out_file1) PSQL.run_sql_file(sql_file1, out_file=out_file1)
result1 = Gpdiff.are_files_equal(out_file1, ans_file1) result1 = Gpdiff.are_files_equal(out_file1, ans_file1)
# The connection is accepted before it is actually ready, leading to panic messages
# Therefore we have to sleep here. PSQL.wait_for_database_up();
sleep(5)
gpfaultinjector = Command(cmd_type, set_fault_in_seg_reset) gpfaultinjector = Command(cmd_type, set_fault_in_seg_reset)
gpfaultinjector.run() gpfaultinjector.run()
......
...@@ -547,3 +547,21 @@ class PSQL(Command): ...@@ -547,3 +547,21 @@ class PSQL(Command):
if 'command_found_' + dbname in output: if 'command_found_' + dbname in output:
return True return True
return False return False
@staticmethod
def wait_for_database_up():
'''
Wait till the system is up, as master may take some time
to come back after FI crash.
'''
down = True
results = {'rc':0, 'stdout':'', 'stderr':''}
for i in range(60):
res = PSQL.run_sql_command('select count(*) from gp_dist_random(\'gp_id\');', results=results)
if results['rc'] == 0:
down = False
break
time.sleep(1)
if down:
raise PSQLException('database has not come up')
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册