func main() { c := config.DefaultConfig() logCounter := vcap.NewLogCounter() if configFile != "" { c = config.InitConfigFromFile(configFile) } InitLoggerFromConfig(c, logCounter) logger := steno.NewLogger("router.main") err := dropsonde.Initialize(c.Logging.MetronAddress, c.Logging.JobName) if err != nil { logger.Errorf("Dropsonde failed to initialize: %s", err.Error()) os.Exit(1) } // setup number of procs if c.GoMaxProcs != 0 { runtime.GOMAXPROCS(c.GoMaxProcs) } if c.DebugAddr != "" { cf_debug_server.Run(c.DebugAddr) } logger.Info("Setting up etcd connection") etcdEndpoint, err := endpoint.NewEtcdEndpoint(c) if err != nil { os.Exit(1) } metricsReporter := metrics.NewMetricsReporter() registry := rregistry.NewRouteRegistry(c, etcdEndpoint, metricsReporter) logger.Info("Setting up routing_api route fetcher") setupRouteFetcher(c, registry) varz := rvarz.NewVarz(registry) compositeReporter := metrics.NewCompositeReporter(varz, metricsReporter) accessLogger, err := access_log.CreateRunningAccessLogger(c) if err != nil { logger.Fatalf("Error creating access logger: %s\n", err) } var crypto secure.Crypto var cryptoPrev secure.Crypto if c.RouteServiceEnabled { crypto = createCrypto(c.RouteServiceSecret, logger) if c.RouteServiceSecretPrev != "" { cryptoPrev = createCrypto(c.RouteServiceSecretPrev, logger) } } proxy := buildProxy(c, registry, accessLogger, compositeReporter, crypto, cryptoPrev) router, err := router.NewRouter(c, proxy, etcdEndpoint, registry, varz, logCounter) if err != nil { logger.Errorf("An error occurred: %s", err.Error()) os.Exit(1) } errChan := router.Run() logger.Info("gorouter.started") waitOnErrOrSignal(c, logger, errChan, router) os.Exit(0) }
"github.com/cloudfoundry/dropsonde/metricbatcher" . "github.com/onsi/ginkgo" . "github.com/onsi/gomega" "net/http" "time" "vulcan/router/route" ) var _ = Describe("MetricsReporter", func() { var metricsReporter *metrics.MetricsReporter var req *http.Request var endpoint *route.Endpoint var sender *fake.FakeMetricSender BeforeEach(func() { metricsReporter = metrics.NewMetricsReporter() req, _ = http.NewRequest("GET", "https://example.com", nil) endpoint = route.NewEndpoint("someId", "host", 2222, "privateId", map[string]string{}, 30, "") sender = fake.NewFakeMetricSender() batcher := metricbatcher.New(sender, time.Millisecond) dropsondeMetrics.Initialize(sender, batcher) }) It("increments the bad_requests metric", func() { metricsReporter.CaptureBadRequest(req) Eventually(func() uint64 { return sender.GetCounter("rejected_requests") }).Should(BeEquivalentTo(1)) metricsReporter.CaptureBadRequest(req) Eventually(func() uint64 { return sender.GetCounter("rejected_requests") }).Should(BeEquivalentTo(2)) })