func startNATSServer(context *cli.Context) (e *stand.StanServer, err error) { eventsURL, err := url.Parse(context.GlobalString("events-address")) if err != nil { return nil, err } no := stand.DefaultNatsServerOptions nOpts := &no nOpts.NoSigs = true parts := strings.Split(eventsURL.Host, ":") nOpts.Host = parts[0] if len(parts) == 2 { nOpts.Port, err = strconv.Atoi(parts[1]) } else { nOpts.Port = nats.DefaultPort } defer func() { if r := recover(); r != nil { e = nil if _, ok := r.(error); !ok { err = fmt.Errorf("failed to start NATS server: %v", r) } else { err = r.(error) } } }() s := stand.RunServerWithOpts(nil, nOpts) return s, nil }
func TestMaxChannels(t *testing.T) { // Set a small number of max channels opts := server.GetDefaultOptions() opts.ID = clusterName opts.MaxChannels = 10 // Run a NATS Streaming server s := server.RunServerWithOpts(opts, nil) defer s.Shutdown() sc := NewDefaultConnection(t) defer sc.Close() hw := []byte("Hello World") var subject string // These all should work fine for i := 0; i < opts.MaxChannels; i++ { subject = fmt.Sprintf("CHAN-%d", i) sc.PublishAsync(subject, hw, nil) } // This one should error if err := sc.Publish("CHAN_MAX", hw); err == nil { t.Fatalf("Expected an error signalling too many channels\n") } }