func main() { cfg, err := config.ParseEnv() if err != nil { log.Fatal(err) } uaa := &cflib.UAA{ URL: cfg.UaaURL, Username: cfg.Username, Password: cfg.Password, ClientID: cfg.ClientID, ClientSecret: cfg.ClientSecret, } cc := &cflib.CC{ URL: cfg.ApiURL, } logcounter := logcounter.New(uaa, cc, cfg) go func() { if err := logcounter.Start(); err != nil { log.Fatal(err) } }() consumer := consumer.New(cfg.DopplerURL, &tls.Config{InsecureSkipVerify: true}, nil) fmt.Println("===== Streaming Firehose (will only succeed if you have admin credentials)") // notify on ctrl+c terminate := make(chan os.Signal, 1) signal.Notify(terminate, os.Interrupt) go func() { for range terminate { logcounter.Stop() } }() for { authToken, err := uaa.GetAuthToken() if err != nil || authToken == "" { fmt.Fprintf(os.Stderr, "error getting token %s\n", err) continue } fmt.Println("got new oauth token") msgs, errors := consumer.FirehoseWithoutReconnect(cfg.SubscriptionID, authToken) go logcounter.HandleMessages(msgs) done := logcounter.HandleErrors(errors, terminate, consumer) if done { return } } }
import ( "os" "time" "tools/logcounterapp/config" . "github.com/onsi/ginkgo" . "github.com/onsi/ginkgo/extensions/table" . "github.com/onsi/gomega" ) var _ = Describe("Config", func() { Describe("ParseEnv", func() { It("parses environment variables", func() { setAllEnvsExcept("") cfg, err := config.ParseEnv() Expect(err).ToNot(HaveOccurred()) Expect(cfg.Username).To(Equal("testUserName")) Expect(cfg.Password).To(Equal("testPassword")) Expect(cfg.ClientID).To(Equal("testID")) Expect(cfg.ClientSecret).To(Equal("clientSecret")) Expect(cfg.MessagePrefix).To(Equal("testPrefix")) Expect(cfg.DopplerURL).To(Equal("doppler.test.com")) Expect(cfg.ApiURL).To(Equal("api.test.com")) Expect(cfg.UaaURL).To(Equal("uaa.test.com")) Expect(cfg.Port).To(Equal("12345")) Expect(cfg.LogfinURL).To(Equal("logfin.test.com")) Expect(cfg.Runtime).To(Equal(time.Second)) }) It("returns an error for an invalid runtime duration", func() {