github.com/altoros/juju-vmware@v0.0.0-20150312064031-f19ae857ccca/network/network_test.go (about) 1 // Copyright 2014 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package network_test 5 6 import ( 7 jc "github.com/juju/testing/checkers" 8 gc "gopkg.in/check.v1" 9 10 "github.com/juju/juju/network" 11 "github.com/juju/juju/testing" 12 ) 13 14 type InterfaceInfoSuite struct { 15 info []network.InterfaceInfo 16 } 17 18 var _ = gc.Suite(&InterfaceInfoSuite{}) 19 20 func (s *InterfaceInfoSuite) SetUpTest(c *gc.C) { 21 s.info = []network.InterfaceInfo{ 22 {VLANTag: 1, DeviceIndex: 0, InterfaceName: "eth0"}, 23 {VLANTag: 0, DeviceIndex: 1, InterfaceName: "eth1"}, 24 {VLANTag: 42, DeviceIndex: 2, InterfaceName: "br2"}, 25 {ConfigType: network.ConfigDHCP, NoAutoStart: true}, 26 {Address: network.NewAddress("0.1.2.3", network.ScopeUnknown)}, 27 {DNSServers: network.NewAddresses("1.1.1.1", "2.2.2.2")}, 28 {GatewayAddress: network.NewAddress("4.3.2.1", network.ScopeUnknown)}, 29 {ExtraConfig: map[string]string{ 30 "foo": "bar", 31 "baz": "nonsense", 32 }}, 33 } 34 } 35 36 func (s *InterfaceInfoSuite) TestActualInterfaceName(c *gc.C) { 37 c.Check(s.info[0].ActualInterfaceName(), gc.Equals, "eth0.1") 38 c.Check(s.info[1].ActualInterfaceName(), gc.Equals, "eth1") 39 c.Check(s.info[2].ActualInterfaceName(), gc.Equals, "br2.42") 40 } 41 42 func (s *InterfaceInfoSuite) TestIsVirtual(c *gc.C) { 43 c.Check(s.info[0].IsVirtual(), jc.IsTrue) 44 c.Check(s.info[1].IsVirtual(), jc.IsFalse) 45 c.Check(s.info[2].IsVirtual(), jc.IsTrue) 46 } 47 48 func (s *InterfaceInfoSuite) TestIsVLAN(c *gc.C) { 49 c.Check(s.info[0].IsVLAN(), jc.IsTrue) 50 c.Check(s.info[1].IsVLAN(), jc.IsFalse) 51 c.Check(s.info[2].IsVLAN(), jc.IsTrue) 52 } 53 54 func (s *InterfaceInfoSuite) TestAdditionalFields(c *gc.C) { 55 c.Check(s.info[3].ConfigType, gc.Equals, network.ConfigDHCP) 56 c.Check(s.info[3].NoAutoStart, jc.IsTrue) 57 c.Check(s.info[4].Address, jc.DeepEquals, network.NewAddress("0.1.2.3", network.ScopeUnknown)) 58 c.Check(s.info[5].DNSServers, jc.DeepEquals, network.NewAddresses("1.1.1.1", "2.2.2.2")) 59 c.Check(s.info[6].GatewayAddress, jc.DeepEquals, network.NewAddress("4.3.2.1", network.ScopeUnknown)) 60 c.Check(s.info[7].ExtraConfig, jc.DeepEquals, map[string]string{ 61 "foo": "bar", 62 "baz": "nonsense", 63 }) 64 } 65 66 func (s *InterfaceInfoSuite) TestSortInterfaceInfo(c *gc.C) { 67 info := []network.InterfaceInfo{ 68 {VLANTag: 42, DeviceIndex: 2, InterfaceName: "br2"}, 69 {VLANTag: 0, DeviceIndex: 1, InterfaceName: "eth1"}, 70 {VLANTag: 1, DeviceIndex: 0, InterfaceName: "eth0"}, 71 } 72 expectedInfo := []network.InterfaceInfo{ 73 {VLANTag: 1, DeviceIndex: 0, InterfaceName: "eth0"}, 74 {VLANTag: 0, DeviceIndex: 1, InterfaceName: "eth1"}, 75 {VLANTag: 42, DeviceIndex: 2, InterfaceName: "br2"}, 76 } 77 network.SortInterfaceInfo(info) 78 c.Assert(info, jc.DeepEquals, expectedInfo) 79 } 80 81 type NetworkSuite struct { 82 testing.BaseSuite 83 } 84 85 var _ = gc.Suite(&NetworkSuite{}) 86 87 func (*NetworkSuite) TestInitializeFromConfig(c *gc.C) { 88 c.Check(network.GetPreferIPv6(), jc.IsFalse) 89 90 envConfig := testing.CustomEnvironConfig(c, testing.Attrs{ 91 "prefer-ipv6": true, 92 }) 93 network.InitializeFromConfig(envConfig) 94 c.Check(network.GetPreferIPv6(), jc.IsTrue) 95 96 envConfig = testing.CustomEnvironConfig(c, testing.Attrs{ 97 "prefer-ipv6": false, 98 }) 99 network.InitializeFromConfig(envConfig) 100 c.Check(network.GetPreferIPv6(), jc.IsFalse) 101 }