get.pme.sh/pnats@v0.0.0-20240304004023-26bb5a137ed0/test/port_test.go (about)

     1  // Copyright 2014-2019 The NATS Authors
     2  // Licensed under the Apache License, Version 2.0 (the "License");
     3  // you may not use this file except in compliance with the License.
     4  // You may obtain a copy of the License at
     5  //
     6  // http://www.apache.org/licenses/LICENSE-2.0
     7  //
     8  // Unless required by applicable law or agreed to in writing, software
     9  // distributed under the License is distributed on an "AS IS" BASIS,
    10  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    11  // See the License for the specific language governing permissions and
    12  // limitations under the License.
    13  
    14  package test
    15  
    16  import (
    17  	"net"
    18  	"strconv"
    19  	"testing"
    20  
    21  	"get.pme.sh/pnats/server"
    22  )
    23  
    24  func TestResolveRandomPort(t *testing.T) {
    25  	opts := &server.Options{Host: "127.0.0.1", Port: server.RANDOM_PORT, NoSigs: true}
    26  	s := RunServer(opts)
    27  	defer s.Shutdown()
    28  
    29  	addr := s.Addr()
    30  	_, port, err := net.SplitHostPort(addr.String())
    31  	if err != nil {
    32  		t.Fatalf("Expected no error: Got %v\n", err)
    33  	}
    34  
    35  	portNum, err := strconv.Atoi(port)
    36  	if err != nil {
    37  		t.Fatalf("Expected no error: Got %v\n", err)
    38  	}
    39  
    40  	if portNum == server.DEFAULT_PORT {
    41  		t.Fatalf("Expected server to choose a random port\nGot: %d", server.DEFAULT_PORT)
    42  	}
    43  
    44  	if portNum == server.RANDOM_PORT {
    45  		t.Fatalf("Expected server to choose a random port\nGot: %d", server.RANDOM_PORT)
    46  	}
    47  
    48  	if opts.Port != portNum {
    49  		t.Fatalf("Options port (%d) should have been overridden by chosen random port (%d)",
    50  			opts.Port, portNum)
    51  	}
    52  }