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  }