supervisor_testhelpers.go 768 B

12345678910111213141516171819202122232425262728293031323334
  1. package supervisor
  2. import (
  3. "context"
  4. "testing"
  5. )
  6. // waitSettle waits until the supervisor reaches a 'settled' state - ie., one
  7. // where no actions have been performed for a number of GC cycles.
  8. // This is used in tests only.
  9. func (s *supervisor) waitSettle(ctx context.Context) error {
  10. waiter := make(chan struct{})
  11. s.pReq <- &processorRequest{
  12. waitSettled: &processorRequestWaitSettled{
  13. waiter: waiter,
  14. },
  15. }
  16. select {
  17. case <-ctx.Done():
  18. return ctx.Err()
  19. case <-waiter:
  20. return nil
  21. }
  22. }
  23. // waitSettleError wraps waitSettle to fail a test if an error occurs, eg. the
  24. // context is canceled.
  25. func (s *supervisor) waitSettleError(ctx context.Context, t *testing.T) {
  26. err := s.waitSettle(ctx)
  27. if err != nil {
  28. t.Fatalf("waitSettle: %v", err)
  29. }
  30. }