github.com/juju/juju@v0.0.0-20240327075706-a90865de2538/worker/actionpruner/worker_test.go (about)

     1  // Copyright 2021 Canonical Ltd.
     2  // Licensed under the AGPLv3, see LICENCE file for details.
     3  
     4  package actionpruner_test
     5  
     6  import (
     7  	"time"
     8  
     9  	"github.com/juju/clock/testclock"
    10  	"github.com/juju/loggo"
    11  	jc "github.com/juju/testing/checkers"
    12  	"github.com/juju/worker/v3/workertest"
    13  	"go.uber.org/mock/gomock"
    14  	gc "gopkg.in/check.v1"
    15  
    16  	"github.com/juju/juju/core/watcher/watchertest"
    17  	"github.com/juju/juju/environs/config"
    18  	coretesting "github.com/juju/juju/testing"
    19  	"github.com/juju/juju/worker/actionpruner"
    20  	"github.com/juju/juju/worker/pruner"
    21  	"github.com/juju/juju/worker/pruner/mocks"
    22  )
    23  
    24  type PrunerSuite struct{}
    25  
    26  var _ = gc.Suite(&PrunerSuite{})
    27  
    28  func (s *PrunerSuite) TestRunStop(c *gc.C) {
    29  	ctrl := gomock.NewController(c)
    30  	defer ctrl.Finish()
    31  
    32  	cfg, err := config.New(false, map[string]interface{}{
    33  		"name":                    "test",
    34  		"type":                    "manual",
    35  		"uuid":                    coretesting.ModelTag.Id(),
    36  		"max-action-results-age":  "2h",
    37  		"max-action-results-size": "2GiB",
    38  	})
    39  	c.Assert(err, jc.ErrorIsNil)
    40  
    41  	ch := make(chan struct{}, 1)
    42  	ch <- struct{}{}
    43  	w := watchertest.NewMockNotifyWatcher(ch)
    44  
    45  	facade := mocks.NewMockFacade(ctrl)
    46  	facade.EXPECT().WatchForModelConfigChanges().Return(w, nil)
    47  
    48  	// Depending on the host compute speed, the loop may select either
    49  	// the watcher change event, or the catacomb's dying event first.
    50  	facade.EXPECT().ModelConfig().Return(cfg, nil).AnyTimes()
    51  
    52  	updater, err := actionpruner.New(pruner.Config{
    53  		Facade:        facade,
    54  		PruneInterval: time.Minute,
    55  		Clock:         testclock.NewClock(time.Now()),
    56  		Logger:        loggo.GetLogger("test"),
    57  	})
    58  
    59  	c.Assert(err, jc.ErrorIsNil)
    60  	workertest.CleanKill(c, updater)
    61  }