github.com/juju/juju@v0.0.0-20240327075706-a90865de2538/container/lxd/cluster_test.go (about) 1 // Copyright 2018 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package lxd_test 5 6 import ( 7 "errors" 8 9 jc "github.com/juju/testing/checkers" 10 "go.uber.org/mock/gomock" 11 gc "gopkg.in/check.v1" 12 13 "github.com/juju/juju/container/lxd" 14 lxdtesting "github.com/juju/juju/container/lxd/testing" 15 ) 16 17 type clusterSuite struct { 18 lxdtesting.BaseSuite 19 } 20 21 var _ = gc.Suite(&clusterSuite{}) 22 23 func (s *imageSuite) TestUseTargetGoodNode(c *gc.C) { 24 ctrl := gomock.NewController(c) 25 defer ctrl.Finish() 26 27 c1Svr := s.NewMockServerClustered(ctrl, "cluster-1") 28 c2Svr := s.NewMockServerClustered(ctrl, "cluster-2") 29 30 c1Svr.EXPECT().UseTarget("cluster-2").Return(c2Svr) 31 32 jujuSvr, err := lxd.NewServer(c1Svr) 33 c.Assert(err, jc.ErrorIsNil) 34 35 _, err = jujuSvr.UseTargetServer("cluster-2") 36 c.Assert(err, jc.ErrorIsNil) 37 } 38 39 func (s *imageSuite) TestUseTargetBadNode(c *gc.C) { 40 ctrl := gomock.NewController(c) 41 defer ctrl.Finish() 42 43 c1Svr := s.NewMockServerClustered(ctrl, "cluster-1") 44 c2Svr := lxdtesting.NewMockInstanceServer(ctrl) 45 46 c1Svr.EXPECT().UseTarget("cluster-2").Return(c2Svr) 47 c2Svr.EXPECT().GetServer().Return(nil, "", errors.New("not a cluster member")) 48 49 jujuSvr, err := lxd.NewServer(c1Svr) 50 c.Assert(err, jc.ErrorIsNil) 51 52 _, err = jujuSvr.UseTargetServer("cluster-2") 53 c.Assert(err, gc.ErrorMatches, "not a cluster member") 54 }