packer-cn/packer/rpc/port_test.go

34 lines
817 B
Go

package rpc
import (
"cgl.tideland.biz/asserts"
"net"
"strings"
"testing"
)
func addrPort(address net.Addr) string {
parts := strings.Split(address.String(), ":")
return parts[len(parts)-1]
}
func Test_netListenerInRange(t *testing.T) {
assert := asserts.NewTestingAsserts(t, true)
// Open up port 10000 so that we take up a port
L1000, err := net.Listen("tcp", "127.0.0.1:11000")
defer L1000.Close()
assert.Nil(err, "should be able to bind to port 10000")
if err == nil {
// Verify it selects an open port
L := netListenerInRange(11000, 11005)
assert.NotNil(L, "should have a listener")
assert.Equal(addrPort(L.Addr()), "11001", "should bind to open port")
// Returns nil if there are no open ports
L = netListenerInRange(11000, 11000)
assert.Nil(L, "should not get a listener")
}
}