github.com/juju/juju@v0.0.0-20240327075706-a90865de2538/worker/toolsversionchecker/worker_test.go (about) 1 // Copyright 2015 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package toolsversionchecker_test 5 6 import ( 7 "time" 8 9 jc "github.com/juju/testing/checkers" 10 gc "gopkg.in/check.v1" 11 12 coretesting "github.com/juju/juju/testing" 13 "github.com/juju/juju/worker/toolsversionchecker" 14 ) 15 16 var _ = gc.Suite(&ToolsCheckerSuite{}) 17 18 type ToolsCheckerSuite struct { 19 coretesting.BaseSuite 20 } 21 22 type facade struct { 23 called chan string 24 } 25 26 func (f *facade) UpdateToolsVersion() error { 27 f.called <- "UpdateToolsVersion" 28 return nil 29 } 30 31 func newFacade() *facade { 32 f := &facade{ 33 called: make(chan string, 1), 34 } 35 return f 36 } 37 38 func (s *ToolsCheckerSuite) TestWorker(c *gc.C) { 39 f := newFacade() 40 params := &toolsversionchecker.VersionCheckerParams{ 41 CheckInterval: coretesting.ShortWait, 42 } 43 44 checker := toolsversionchecker.NewPeriodicWorkerForTests( 45 f, 46 params, 47 ) 48 s.AddCleanup(func(c *gc.C) { 49 checker.Kill() 50 c.Assert(checker.Wait(), jc.ErrorIsNil) 51 }) 52 53 select { 54 case called := <-f.called: 55 c.Assert(called, gc.Equals, "UpdateToolsVersion") 56 case <-time.After(coretesting.LongWait): 57 c.Fatalf("timed out waiting worker to seek new agent binaries versions") 58 } 59 60 }