コード例 #1
0
ファイル: tcp_test.go プロジェクト: nolenroyalty/bangarang
func TestSendSingle(t *testing.T) {
	if testing.Short() {
		t.Skip("Skipping because of short test")
	}
	p, port := newTestTCP()

	tp := &testPasser{
		in: make(chan *event.Event),
	}

	p.Start(tp)

	c, err := net.Dial("tcp", fmt.Sprintf("localhost:%d", port))
	if err != nil {
		t.Fatal(err)
	}

	e := newTestEvent()

	conn := newman.NewConn(c)
	conn.Write(e)

	ne := <-tp.in

	ne.Tags.ForEach(func(k, v string) {
		if e.Get(k) != v {
			t.Fatalf("Wanted %s got %s for %s", e.Get(k), v, k)
		}
	})

	if ne.Metric != e.Metric {
		t.Fatal()
	}
}
コード例 #2
0
ファイル: tcp_test.go プロジェクト: nolenroyalty/bangarang
func TestMany(t *testing.T) {
	if testing.Short() {
		t.Skip("Skipping because of short test")
	}
	p, port := newTestTCP()
	tp := &testPasser{
		in: make(chan *event.Event),
	}

	p.Start(tp)

	c, err := net.Dial("tcp", fmt.Sprintf("localhost:%d", port))
	if err != nil {
		t.Fatal(err)
	}

	conn := newman.NewConn(c)

	go func() {
		// send 10000 events
		for i := 0; i < 10000; i++ {
			e := newTestEvent()
			conn.Write(e)
		}

	}()

	for i := 0; i < 10000; i++ {
		<-tp.in
	}
}
コード例 #3
0
ファイル: main.go プロジェクト: nolenroyalty/bangarang
func main() {
	n := make(chan *event.Event)
	genEvents([]string{"host1", "host2", "host3"}, []string{"1", "2", "3", "4"}, n)
	slp := time.Second

	for {
		c, err := net.Dial("tcp4", "localhost:5555")
		if err != nil {
			log.Println(err)
			time.Sleep(slp)
			slp *= 2
		} else {
			slp = time.Second

			conn := newman.NewConn(c)
			for {
				e := <-n
				err = conn.Write(e)
				if err != nil {
					log.Println(err)
					break
				}
			}
		}
	}
}
コード例 #4
0
ファイル: tcp.go プロジェクト: nolenroyalty/bangarang
func (t *TCPProvider) consume(c *net.TCPConn, p event.EventPasser) {

	// create a newman connection
	conn := newman.NewConn(c)
	conn.SetWaiter(&newman.Backoff{})

	// drain the connection for ever
	in, _ := conn.Generate(func() newman.Message {
		return event.NewEvent()
	})
	for raw := range in {
		// convert it to an event because we know that is what we are getting
		e := raw.(*event.Event)

		// pass it on to the next step
		p.PassEvent(e)
	}

	// when it is done, close the connection
	c.Close()
}