make portallocator.ErrNotInRange a type
This commit is contained in:
@@ -37,11 +37,18 @@ type Interface interface {
|
||||
|
||||
var (
|
||||
ErrFull = errors.New("range is full")
|
||||
ErrNotInRange = errors.New("provided port is not in the valid range")
|
||||
ErrAllocated = errors.New("provided port is already allocated")
|
||||
ErrMismatchedNetwork = errors.New("the provided port range does not match the current port range")
|
||||
)
|
||||
|
||||
type ErrNotInRange struct {
|
||||
ValidPorts string
|
||||
}
|
||||
|
||||
func (e *ErrNotInRange) Error() string {
|
||||
return fmt.Sprintf("provided port is not in the valid range. The range of valid ports is %s", e.ValidPorts)
|
||||
}
|
||||
|
||||
type PortAllocator struct {
|
||||
portRange net.PortRange
|
||||
|
||||
@@ -84,8 +91,7 @@ func (r *PortAllocator) Allocate(port int) error {
|
||||
if !ok {
|
||||
// include valid port range in error
|
||||
validPorts := r.portRange.String()
|
||||
msg := fmt.Sprintf("Valid ports range is %s", validPorts)
|
||||
return fmt.Errorf("%v. %s", ErrNotInRange, msg)
|
||||
return &ErrNotInRange{validPorts}
|
||||
}
|
||||
|
||||
allocated, err := r.alloc.Allocate(offset)
|
||||
|
@@ -73,16 +73,23 @@ func TestAllocate(t *testing.T) {
|
||||
if err := r.Release(released); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if err := r.Allocate(1); err != ErrNotInRange {
|
||||
|
||||
err = r.Allocate(1)
|
||||
if _, ok := err.(*ErrNotInRange); !ok {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
if err := r.Allocate(10001); err != ErrAllocated {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if err := r.Allocate(20000); err != ErrNotInRange {
|
||||
|
||||
err = r.Allocate(20000)
|
||||
if _, ok := err.(*ErrNotInRange); !ok {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if err := r.Allocate(10201); err != ErrNotInRange {
|
||||
|
||||
err = r.Allocate(10201)
|
||||
if _, ok := err.(*ErrNotInRange); !ok {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if f := r.Free(); f != 1 {
|
||||
|
@@ -114,7 +114,7 @@ func (c *Repair) runOnce() error {
|
||||
// TODO: send event
|
||||
// port is broken, reallocate
|
||||
runtime.HandleError(fmt.Errorf("the port %d for service %s/%s was assigned to multiple services; please recreate", port, svc.Name, svc.Namespace))
|
||||
case portallocator.ErrNotInRange:
|
||||
case err.(*portallocator.ErrNotInRange):
|
||||
// TODO: send event
|
||||
// port is broken, reallocate
|
||||
runtime.HandleError(fmt.Errorf("the port %d for service %s/%s is not within the port range %v; please recreate", port, svc.Name, svc.Namespace, c.portRange))
|
||||
|
Reference in New Issue
Block a user