github.com/btccom/go-micro/v2@v2.9.3/broker/nats/nats_test.go (about)

     1  package nats
     2  
     3  import (
     4  	"fmt"
     5  	"testing"
     6  
     7  	"github.com/btccom/go-micro/v2/broker"
     8  	nats "github.com/nats-io/nats.go"
     9  )
    10  
    11  var addrTestCases = []struct {
    12  	name        string
    13  	description string
    14  	addrs       map[string]string // expected address : set address
    15  }{
    16  	{
    17  		"brokerOpts",
    18  		"set broker addresses through a broker.Option in constructor",
    19  		map[string]string{
    20  			"nats://192.168.10.1:5222": "192.168.10.1:5222",
    21  			"nats://10.20.10.0:4222":   "10.20.10.0:4222"},
    22  	},
    23  	{
    24  		"brokerInit",
    25  		"set broker addresses through a broker.Option in broker.Init()",
    26  		map[string]string{
    27  			"nats://192.168.10.1:5222": "192.168.10.1:5222",
    28  			"nats://10.20.10.0:4222":   "10.20.10.0:4222"},
    29  	},
    30  	{
    31  		"natsOpts",
    32  		"set broker addresses through the nats.Option in constructor",
    33  		map[string]string{
    34  			"nats://192.168.10.1:5222": "192.168.10.1:5222",
    35  			"nats://10.20.10.0:4222":   "10.20.10.0:4222"},
    36  	},
    37  	{
    38  		"default",
    39  		"check if default Address is set correctly",
    40  		map[string]string{
    41  			"nats://127.0.0.1:4222": "",
    42  		},
    43  	},
    44  }
    45  
    46  // TestInitAddrs tests issue #100. Ensures that if the addrs is set by an option in init it will be used.
    47  func TestInitAddrs(t *testing.T) {
    48  
    49  	for _, tc := range addrTestCases {
    50  		t.Run(fmt.Sprintf("%s: %s", tc.name, tc.description), func(t *testing.T) {
    51  
    52  			var br broker.Broker
    53  			var addrs []string
    54  
    55  			for _, addr := range tc.addrs {
    56  				addrs = append(addrs, addr)
    57  			}
    58  
    59  			switch tc.name {
    60  			case "brokerOpts":
    61  				// we know that there are just two addrs in the dict
    62  				br = NewBroker(broker.Addrs(addrs[0], addrs[1]))
    63  				br.Init()
    64  			case "brokerInit":
    65  				br = NewBroker()
    66  				// we know that there are just two addrs in the dict
    67  				br.Init(broker.Addrs(addrs[0], addrs[1]))
    68  			case "natsOpts":
    69  				nopts := nats.GetDefaultOptions()
    70  				nopts.Servers = addrs
    71  				br = NewBroker(Options(nopts))
    72  				br.Init()
    73  			case "default":
    74  				br = NewBroker()
    75  				br.Init()
    76  			}
    77  
    78  			natsBroker, ok := br.(*natsBroker)
    79  			if !ok {
    80  				t.Fatal("Expected broker to be of types *natsBroker")
    81  			}
    82  			// check if the same amount of addrs we set has actually been set, default
    83  			// have only 1 address nats://127.0.0.1:4222 (current nats code) or
    84  			// nats://localhost:4222 (older code version)
    85  			if len(natsBroker.addrs) != len(tc.addrs) && tc.name != "default" {
    86  				t.Errorf("Expected Addr count = %d, Actual Addr count = %d",
    87  					len(natsBroker.addrs), len(tc.addrs))
    88  			}
    89  
    90  			for _, addr := range natsBroker.addrs {
    91  				_, ok := tc.addrs[addr]
    92  				if !ok {
    93  					t.Errorf("Expected '%s' has not been set", addr)
    94  				}
    95  			}
    96  		})
    97  	}
    98  }