func NewRouter(c *config.Config) *Router { router := &Router{ config: c, } // setup number of procs if router.config.GoMaxProcs != 0 { runtime.GOMAXPROCS(router.config.GoMaxProcs) } router.mbusClient = yagnats.NewClient() router.registry = registry.NewRegistry(router.config, router.mbusClient) router.registry.StartPruningCycle() router.varz = varz.NewVarz(router.registry) router.proxy = proxy.NewProxy(router.config, router.registry, router.varz) var host string if router.config.Status.Port != 0 { host = fmt.Sprintf("%s:%d", router.config.Ip, router.config.Status.Port) } varz := &vcap.Varz{ UniqueVarz: router.varz, } varz.LogCounts = log.Counter healthz := &vcap.Healthz{ LockableObject: router.registry, } router.component = &vcap.VcapComponent{ Type: "Router", Index: router.config.Index, Host: host, Credentials: []string{router.config.Status.User, router.config.Status.Pass}, Config: router.config, Varz: varz, Healthz: healthz, InfoRoutes: map[string]json.Marshaler{ "/routes": router.registry, }, } vcap.StartComponent(router.component) return router }
func BenchmarkRegister(b *testing.B) { c := config.DefaultConfig() mbus := fakeyagnats.New() r := registry.NewRegistry(c, mbus) p := proxy.NewProxy(c, r, varz.NewVarz(r)) for i := 0; i < b.N; i++ { str := strconv.Itoa(i) p.Register( route.Uri("bench.vcap.me."+str), &route.Endpoint{ Host: "localhost", Port: uint16(i), }, ) } }
func (s *ProxySuite) SetUpTest(c *C) { config := config.DefaultConfig() config.TraceKey = "my_trace_key" config.EndpointTimeout = 500 * time.Millisecond mbus := fakeyagnats.New() s.r = registry.NewRegistry(config, mbus) s.p = NewProxy(config, s.r, nullVarz{}) ln, err := net.Listen("tcp", "127.0.0.1:0") if err != nil { panic(err) } server := server.Server{Handler: s.p} go server.Serve(ln) s.proxyServer = ln }
func (s *VarzSuite) SetUpTest(c *C) { r := registry.NewRegistry(config.DefaultConfig(), fakeyagnats.New()) s.Registry = r s.Varz = NewVarz(r) }