github.com/juju/juju@v0.0.0-20240430160146-1752b71fcf00/apiserver/common/addresses_test.go (about) 1 // Copyright 2013 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package common_test 5 6 import ( 7 jc "github.com/juju/testing/checkers" 8 gc "gopkg.in/check.v1" 9 10 "github.com/juju/juju/apiserver/common" 11 "github.com/juju/juju/controller" 12 "github.com/juju/juju/core/network" 13 "github.com/juju/juju/state" 14 coretesting "github.com/juju/juju/testing" 15 ) 16 17 type apiAddresserSuite struct { 18 addresser *common.APIAddresser 19 fake *fakeAddresses 20 } 21 22 var _ = gc.Suite(&apiAddresserSuite{}) 23 24 // Verify that APIAddressAccessor is satisfied by *state.State. 25 var _ common.APIAddressAccessor = (*state.State)(nil) 26 27 func (s *apiAddresserSuite) SetUpTest(c *gc.C) { 28 s.fake = &fakeAddresses{ 29 hostPorts: []network.SpaceHostPorts{ 30 network.NewSpaceHostPorts(1, "apiaddresses"), 31 network.NewSpaceHostPorts(2, "apiaddresses"), 32 }, 33 } 34 s.addresser = common.NewAPIAddresser(s.fake, common.NewResources()) 35 } 36 37 func (s *apiAddresserSuite) TestAPIAddresses(c *gc.C) { 38 result, err := s.addresser.APIAddresses() 39 c.Assert(err, jc.ErrorIsNil) 40 c.Assert(result.Result, gc.DeepEquals, []string{"apiaddresses:1", "apiaddresses:2"}) 41 } 42 43 func (s *apiAddresserSuite) TestAPIAddressesPrivateFirst(c *gc.C) { 44 addrs := network.NewSpaceAddresses("52.7.1.1", "10.0.2.1") 45 ctlr1 := network.SpaceAddressesWithPort(addrs, 17070) 46 47 addrs = network.NewSpaceAddresses("53.51.121.17", "10.0.1.17") 48 ctlr2 := network.SpaceAddressesWithPort(addrs, 17070) 49 50 s.fake.hostPorts = []network.SpaceHostPorts{ 51 network.NewSpaceHostPorts(1, "apiaddresses"), 52 ctlr1, 53 ctlr2, 54 network.NewSpaceHostPorts(2, "apiaddresses"), 55 } 56 for _, hps := range s.fake.hostPorts { 57 for _, hp := range hps { 58 c.Logf("%s - %#v", hp.Scope, hp) 59 } 60 } 61 62 result, err := s.addresser.APIAddresses() 63 c.Assert(err, jc.ErrorIsNil) 64 65 c.Check(result.Result, gc.DeepEquals, []string{ 66 "apiaddresses:1", 67 "10.0.2.1:17070", 68 "52.7.1.1:17070", 69 "10.0.1.17:17070", 70 "53.51.121.17:17070", 71 "apiaddresses:2", 72 }) 73 } 74 75 var _ common.APIAddressAccessor = fakeAddresses{} 76 77 type fakeAddresses struct { 78 hostPorts []network.SpaceHostPorts 79 } 80 81 func (fakeAddresses) Addresses() ([]string, error) { 82 return []string{"addresses:1", "addresses:2"}, nil 83 } 84 85 func (fakeAddresses) ControllerConfig() (controller.Config, error) { 86 return coretesting.FakeControllerConfig(), nil 87 } 88 89 func (f fakeAddresses) APIHostPortsForAgents() ([]network.SpaceHostPorts, error) { 90 return f.hostPorts, nil 91 } 92 93 func (fakeAddresses) WatchAPIHostPortsForAgents() state.NotifyWatcher { 94 panic("should never be called") 95 }