From f8a8444b27a594b2eb49d8ffca48d664bcd19a10 Mon Sep 17 00:00:00 2001 From: Leonid Bugaev Date: Sat, 2 Nov 2013 16:53:59 +0100 Subject: [PATCH] Add basic benchmakrs --- emitter_test.go | 26 ++++++++++++++++++++ output_http_test.go | 58 +++++++++++++++++++++++++++++++++++++-------- 2 files changed, 74 insertions(+), 10 deletions(-) diff --git a/emitter_test.go b/emitter_test.go index b5d84e2..1efe0b5 100644 --- a/emitter_test.go +++ b/emitter_test.go @@ -71,3 +71,29 @@ func TestEmitterRoundRobin(t *testing.T) { Settings.splitOutput = false } + +func BenchmarkEmitter(b *testing.B) { + wg := new(sync.WaitGroup) + quit := make(chan int) + + input := NewTestInput() + + output := NewTestOutput(func(data []byte) { + wg.Done() + }) + + Plugins.Inputs = []io.Reader{input} + Plugins.Outputs = []io.Writer{output} + + go Start(quit) + + b.ResetTimer() + + for i := 0; i < b.N; i++ { + wg.Add(1) + input.EmitGET() + } + + wg.Wait() + close(quit) +} diff --git a/output_http_test.go b/output_http_test.go index 7c9d977..b7d0fe7 100644 --- a/output_http_test.go +++ b/output_http_test.go @@ -1,30 +1,35 @@ package gor import ( + "fmt" "io" + "net" "net/http" "sync" "testing" ) +func startHTTP(cb func(*http.Request)) net.Listener { + handler := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + cb(r) + }) + + listener, _ := net.Listen("tcp", ":0") + + go http.Serve(listener, handler) + + return listener +} + func TestHTTPOutput(t *testing.T) { - startHTTP := func(addr string, cb func(*http.Request)) { - handler := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - cb(r) - }) - - go http.ListenAndServe(addr, handler) - } - wg := new(sync.WaitGroup) quit := make(chan int) input := NewTestInput() headers := HTTPHeaders{HTTPHeader{"User-Agent", "Gor"}} - output := NewHTTPOutput("127.0.0.1:50003", headers, "") - startHTTP("127.0.0.1:50003", func(req *http.Request) { + listener := startHTTP(func(req *http.Request) { if req.Header.Get("User-Agent") != "Gor" { t.Error("Wrong header") } @@ -32,6 +37,8 @@ func TestHTTPOutput(t *testing.T) { wg.Done() }) + output := NewHTTPOutput(listener.Addr().String(), headers, "") + Plugins.Inputs = []io.Reader{input} Plugins.Outputs = []io.Writer{output} @@ -47,3 +54,34 @@ func TestHTTPOutput(t *testing.T) { close(quit) } + +func BenchmarkHTTPOutput(b *testing.B) { + wg := new(sync.WaitGroup) + quit := make(chan int) + + input := NewTestInput() + + headers := HTTPHeaders{HTTPHeader{"User-Agent", "Gor"}} + + listener := startHTTP(func(req *http.Request) { + go wg.Done() + }) + + output := NewHTTPOutput(listener.Addr().String(), headers, "") + + Plugins.Inputs = []io.Reader{input} + Plugins.Outputs = []io.Writer{output} + + go Start(quit) + + fmt.Println(b) + + for i := 0; i < b.N; i++ { + wg.Add(1) + input.EmitPOST() + } + + wg.Wait() + + close(quit) +}