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  }