func (s *lxcBrokerSuite) TestDiscoverPrimaryNICInterfaceNotFound(c *gc.C) { s.PatchValue(provisioner.NetInterfaces, func() ([]net.Interface, error) { return nil, nil }) nic, addr, err := provisioner.DiscoverPrimaryNIC() c.Assert(err, gc.ErrorMatches, "cannot detect the primary network interface") c.Assert(nic, gc.Equals, "") c.Assert(addr, jc.DeepEquals, network.Address{}) }
func (s *lxcBrokerSuite) TestDiscoverPrimaryNICNetInterfacesError(c *gc.C) { s.PatchValue(provisioner.NetInterfaces, func() ([]net.Interface, error) { return nil, errors.New("boom!") }) nic, addr, err := provisioner.DiscoverPrimaryNIC() c.Assert(err, gc.ErrorMatches, "cannot get network interfaces: boom!") c.Assert(nic, gc.Equals, "") c.Assert(addr, jc.DeepEquals, network.Address{}) }
func (s *lxcBrokerSuite) TestDiscoverPrimaryNICInvalidAddr(c *gc.C) { s.PatchValue(provisioner.NetInterfaces, func() ([]net.Interface, error) { return []net.Interface{{ Index: 0, Name: "fake", Flags: net.FlagUp, }}, nil }) s.PatchValue(provisioner.InterfaceAddrs, func(i *net.Interface) ([]net.Addr, error) { return []net.Addr{&fakeAddr{}}, nil }) nic, addr, err := provisioner.DiscoverPrimaryNIC() c.Assert(err, gc.ErrorMatches, `cannot parse address "fakeAddr": invalid CIDR address: fakeAddr`) c.Assert(nic, gc.Equals, "") c.Assert(addr, jc.DeepEquals, network.Address{}) }
func (s *lxcBrokerSuite) TestDiscoverPrimaryNICInterfaceAddrsError(c *gc.C) { s.PatchValue(provisioner.NetInterfaces, func() ([]net.Interface, error) { return []net.Interface{{ Index: 0, Name: "fake", Flags: net.FlagUp, }}, nil }) s.PatchValue(provisioner.InterfaceAddrs, func(i *net.Interface) ([]net.Addr, error) { return nil, errors.New("boom!") }) nic, addr, err := provisioner.DiscoverPrimaryNIC() c.Assert(err, gc.ErrorMatches, `cannot get "fake" addresses: boom!`) c.Assert(nic, gc.Equals, "") c.Assert(addr, jc.DeepEquals, network.Address{}) }
func (s *lxcBrokerSuite) TestDiscoverPrimaryNICSuccess(c *gc.C) { s.PatchValue(provisioner.NetInterfaces, func() ([]net.Interface, error) { return []net.Interface{{ Index: 0, Name: "lo", Flags: net.FlagUp | net.FlagLoopback, // up but loopback - ignored. }, { Index: 1, Name: "if0", Flags: net.FlagPointToPoint, // not up - ignored. }, { Index: 2, Name: "if1", Flags: net.FlagUp, // up but no addresses - ignored. }, { Index: 3, Name: "if2", Flags: net.FlagUp, // up and has addresses - returned. }}, nil }) s.PatchValue(provisioner.InterfaceAddrs, func(i *net.Interface) ([]net.Addr, error) { // We should be called only for the last two NICs. The first // one (if1) won't have addresses, only the last one (if2). c.Assert(i, gc.NotNil) c.Assert(i.Name, gc.Matches, "if[12]") if i.Name == "if2" { return []net.Addr{&fakeAddr{"0.1.2.3/24"}}, nil } // For if1 we return no addresses. return nil, nil }) nic, addr, err := provisioner.DiscoverPrimaryNIC() c.Assert(err, jc.ErrorIsNil) c.Assert(nic, gc.Equals, "if2") c.Assert(addr, jc.DeepEquals, network.NewAddress("0.1.2.3")) }