@@ -112,6 +112,50 @@ def conn.reset(*args); raise(ResetError) end
112
112
queue . conn_adapter . disconnect
113
113
end
114
114
115
+ def test_enqueue_retry
116
+ queue = QC ::Queue . new ( "queue_classic_jobs" )
117
+ queue . conn_adapter = QC ::ConnAdapter . new
118
+ conn = queue . conn_adapter . connection
119
+ conn . exec ( 'select pg_terminate_backend(pg_backend_pid())' ) rescue nil
120
+ queue . enqueue ( "Klass.method" )
121
+ assert_equal ( 1 , queue . count )
122
+ queue . conn_adapter . disconnect
123
+ end
124
+
125
+ def test_enqueue_stops_retrying_on_permanent_error
126
+ queue = QC ::Queue . new ( "queue_classic_jobs" )
127
+ queue . conn_adapter = QC ::ConnAdapter . new
128
+ conn = queue . conn_adapter . connection
129
+ conn . exec ( 'select pg_terminate_backend(pg_backend_pid())' ) rescue nil
130
+ # Simulate permanent connection error
131
+ def conn . exec ( *args ) ; raise ( PGError ) ; end
132
+ # Ensure that the error is reraised on second time
133
+ assert_raises ( PG ::Error ) { queue . enqueue ( "Klass.other_method" ) }
134
+ queue . conn_adapter . disconnect
135
+ end
136
+
137
+ def test_enqueue_in_retry
138
+ queue = QC ::Queue . new ( "queue_classic_jobs" )
139
+ queue . conn_adapter = QC ::ConnAdapter . new
140
+ conn = queue . conn_adapter . connection
141
+ conn . exec ( 'select pg_terminate_backend(pg_backend_pid())' ) rescue nil
142
+ queue . enqueue_in ( 10 , "Klass.method" )
143
+ assert_equal ( 1 , queue . count )
144
+ queue . conn_adapter . disconnect
145
+ end
146
+
147
+ def test_enqueue_in_stops_retrying_on_permanent_error
148
+ queue = QC ::Queue . new ( "queue_classic_jobs" )
149
+ queue . conn_adapter = QC ::ConnAdapter . new
150
+ conn = queue . conn_adapter . connection
151
+ conn . exec ( 'select pg_terminate_backend(pg_backend_pid())' ) rescue nil
152
+ # Simulate permanent connection error
153
+ def conn . exec ( *args ) ; raise ( PGError ) ; end
154
+ # Ensure that the error is reraised on second time
155
+ assert_raises ( PG ::Error ) { queue . enqueue_in ( 10 , "Klass.method" ) }
156
+ queue . conn_adapter . disconnect
157
+ end
158
+
115
159
def test_custom_default_queue
116
160
queue_class = Class . new do
117
161
attr_accessor :jobs
0 commit comments