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 }