github.com/altoros/juju-vmware@v0.0.0-20150312064031-f19ae857ccca/worker/uniter/export_test.go (about)

     1  // Copyright 2013, 2014 Canonical Ltd.
     2  // Licensed under the AGPLv3, see LICENCE file for details.
     3  
     4  package uniter
     5  
     6  import (
     7  	"fmt"
     8  	"time"
     9  )
    10  
    11  func SetUniterObserver(u *Uniter, observer UniterExecutionObserver) {
    12  	u.observer = observer
    13  }
    14  
    15  var (
    16  	ActiveMetricsTimer = &activeMetricsTimer
    17  )
    18  
    19  // manualTicker will be used to generate collect-metrics events
    20  // in a time-independent manner for testing.
    21  type ManualTicker struct {
    22  	c chan time.Time
    23  }
    24  
    25  // Tick sends a signal on the ticker channel.
    26  func (t *ManualTicker) Tick() error {
    27  	select {
    28  	case t.c <- time.Now():
    29  	default:
    30  		return fmt.Errorf("ticker channel blocked")
    31  	}
    32  	return nil
    33  }
    34  
    35  // ReturnTimer can be used to replace the metrics signal generator.
    36  func (t *ManualTicker) ReturnTimer(now, lastRun time.Time, interval time.Duration) <-chan time.Time {
    37  	return t.c
    38  }
    39  
    40  func NewManualTicker() *ManualTicker {
    41  	return &ManualTicker{
    42  		c: make(chan time.Time, 1),
    43  	}
    44  }