Browse Source

broken promise contagion across vats test 1

broken-promise-contagion-fix
Christine Lemmer-Webber 4 years ago
parent
commit
6fdc381ba6
No known key found for this signature in database
GPG Key ID: 4BC025925FF8F4D3
  1. 30
      goblins/vat.rkt

30
goblins/vat.rkt

@ -399,6 +399,36 @@
what-i-got
"*Vroom vroom!* You drive your blue Fork Explorist!"))
;; this is for testing for broken promise contagion across vats
(define (^lessgood-car-factory bcom company-name)
(define (^car bcom model color)
(lambda ()
(format #f "*Vroom vroom!* You drive your ~a ~a ~a!"
color company-name model)))
(define (make-car model color)
(error "Your car exploded on the factory floor! Ooops! (Expected for test)")
(spawn ^car model color))
make-car)
(let ((what-i-got #f)
(borked-factory
(a-vat 'spawn ^lessgood-car-factory "Forked")))
(b-vat 'run
(lambda ()
(on (<- (<- borked-factory "Exploder" "red"))
(lambda (val)
(set! what-i-got `(ok ,val)))
#:catch
(lambda (err)
(set! what-i-got `(err ,err))))))
(sleep 0.05)
(test-true
"Broken promise contagion works across vats"
(match what-i-got
((list 'err _err)
#t))))
(define (try-remote-on-promise . resolve-args)
(define fulfilled-val #f)
(define broken-val #f)

Loading…
Cancel
Save