Пример #1
0
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
		}
	}
}
Пример #2
0
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() {