@@ -93,6 +93,10 @@ class QueryException(Exception):
9393 pass
9494
9595
96+ class TimeoutException (Exception ):
97+ pass
98+
99+
96100class StartNodeException (Exception ):
97101 pass
98102
@@ -115,8 +119,8 @@ def __init__(self, node_name, fd):
115119
116120 threading .Thread .__init__ (self )
117121
118- self .node_name = node_name
119122 self .fd = fd
123+ self .node_name = node_name
120124 self .stop_event = threading .Event ()
121125 self .logger = logging .getLogger (node_name )
122126 self .logger .setLevel (logging .INFO )
@@ -366,13 +370,19 @@ def __bool__(self):
366370
367371
368372class PostgresNode (object ):
369- def __init__ (self , name , port = None , base_dir = None , use_logging = False ):
373+ def __init__ (self ,
374+ name ,
375+ port = None ,
376+ base_dir = None ,
377+ use_logging = False ,
378+ master = None ):
370379 global bound_ports
371380
372381 # check that port is not used
373382 if port in bound_ports :
374383 raise InitNodeException ('port {} is already in use' .format (port ))
375384
385+ self .master = master
376386 self .name = name
377387 self .host = '127.0.0.1'
378388 self .port = port or reserve_port ()
@@ -809,13 +819,22 @@ def poll_query_until(self, dbname, query, username=None, max_attempts=60, sleep_
809819 username = username ,
810820 commit = True )
811821
822+ if res is None :
823+ raise QueryException ('Query returned None' )
824+
825+ if len (res ) == 0 :
826+ raise QueryException ('Query returned 0 rows' )
827+
828+ if len (res [0 ]) == 0 :
829+ raise QueryException ('Query returned 0 columns' )
830+
812831 if res [0 ][0 ]:
813832 return # done
814833
815834 time .sleep (sleep_time )
816835 attemps += 1
817836
818- raise QueryException ('Query timeout' )
837+ raise TimeoutException ('Query timeout' )
819838
820839 def execute (self , dbname , query , username = None , commit = False ):
821840 """
0 commit comments