@@ -277,8 +277,16 @@ def on_message(message)
277277
278278 describe 'pausing' do
279279 it 'pauses on error' do
280- queue = Queue . new
281- test = AdHoc . spawn :tester do
280+ queue = Queue . new
281+ resuming_behaviour = Behaviour . restarting_behaviour_definition . map do |c , args |
282+ if Behaviour ::Supervising == c
283+ [ c , [ :resume! , :one_for_one ] ]
284+ else
285+ [ c , args ]
286+ end
287+ end
288+
289+ test = AdHoc . spawn name : :tester , behaviour_definition : resuming_behaviour do
282290 actor = AdHoc . spawn name : :pausing ,
283291 behaviour_definition : Behaviour . restarting_behaviour_definition do
284292 queue << :init
@@ -288,50 +296,44 @@ def on_message(message)
288296 actor << :supervise
289297 queue << actor . ask! ( :supervisor )
290298 actor << nil
299+ queue << actor . ask ( :add )
291300
292301 -> m do
293302 queue << m
294- if UnknownMessage === m
295- ivar = envelope . sender . ask ( :add )
296- envelope . sender << :resume!
297- queue << ivar . value!
298- end
299303 end
300304 end
301305
302306 expect ( queue . pop ) . to eq :init
303307 expect ( queue . pop ) . to eq test
304- expect ( queue . pop ) . to be_kind_of ( UnknownMessage )
305- expect ( queue . pop ) . to eq 1
308+ expect ( queue . pop . value ) . to eq 1
306309 expect ( queue . pop ) . to eq :resumed
307310 terminate_actors test
308311
309- test = AdHoc . spawn :tester do
312+ test = AdHoc . spawn name : :tester ,
313+ behaviour_definition : Behaviour . restarting_behaviour_definition do
310314 actor = AdHoc . spawn name : :pausing ,
311315 supervise : true ,
312316 behaviour_definition : Behaviour . restarting_behaviour_definition do
313317 queue << :init
314- -> m { m == :add ? 1 : pass }
318+ -> m { m == :object_id ? self . object_id : pass }
315319 end
316320
317321 queue << actor . ask! ( :supervisor )
322+ queue << actor . ask! ( :object_id )
318323 actor << nil
324+ queue << actor . ask ( :object_id )
319325
320326 -> m do
321327 queue << m
322- if UnknownMessage === m
323- ivar = envelope . sender . ask ( :add )
324- envelope . sender << :reset!
325- queue << ivar . value!
326- end
327328 end
328329 end
329330
330331 expect ( queue . pop ) . to eq :init
331332 expect ( queue . pop ) . to eq test
332- expect ( queue . pop ) . to be_kind_of ( UnknownMessage )
333+ first_id = queue . pop
334+ second_id = queue . pop . value
335+ expect ( first_id ) . not_to eq second_id # context already reset
333336 expect ( queue . pop ) . to eq :init # rebuilds context
334- expect ( queue . pop ) . to eq 1
335337 expect ( queue . pop ) . to eq :reset
336338 terminate_actors test
337339 end
0 commit comments