github.com/mattyw/juju@v0.0.0-20140610034352-732aecd63861/provider/local/local_test.go (about)

     1  // Copyright 2013 Canonical Ltd.
     2  // Licensed under the AGPLv3, see LICENCE file for details.
     3  
     4  package local_test
     5  
     6  import (
     7  	"fmt"
     8  	"net"
     9  	stdtesting "testing"
    10  
    11  	gc "launchpad.net/gocheck"
    12  
    13  	"github.com/juju/juju/environs"
    14  	"github.com/juju/juju/provider"
    15  	"github.com/juju/juju/provider/local"
    16  	coretesting "github.com/juju/juju/testing"
    17  )
    18  
    19  func TestLocal(t *stdtesting.T) {
    20  	gc.TestingT(t)
    21  }
    22  
    23  type localSuite struct {
    24  	coretesting.BaseSuite
    25  }
    26  
    27  var _ = gc.Suite(&localSuite{})
    28  
    29  func (*localSuite) TestProviderRegistered(c *gc.C) {
    30  	provider, error := environs.Provider(provider.Local)
    31  	c.Assert(error, gc.IsNil)
    32  	c.Assert(provider, gc.DeepEquals, local.Provider)
    33  }
    34  
    35  func (*localSuite) TestCheckLocalPort(c *gc.C) {
    36  	// Listen on a random port.
    37  	ln, err := net.Listen("tcp", "127.0.0.1:0")
    38  	c.Assert(err, gc.IsNil)
    39  	defer ln.Close()
    40  	port := ln.Addr().(*net.TCPAddr).Port
    41  
    42  	checkLocalPort := *local.CheckLocalPort
    43  	err = checkLocalPort(port, "test port")
    44  	c.Assert(err, gc.ErrorMatches, fmt.Sprintf("cannot use %d as test port, already in use", port))
    45  
    46  	ln.Close()
    47  	err = checkLocalPort(port, "test port, no longer in use")
    48  	c.Assert(err, gc.IsNil)
    49  }