func TestInfluxdbBackend(t *testing.T) { logging.SetLevel("debug") conf := &config.Transport_influxdb{ Version: "0.9.0", URL: "http://10.3.6.225:8086/", Username: "******", Password: "******", Database: "mydb", RetentionPolicy: "test", } merge := newcore.Merge( newcore.Subscribe(newcore.NewDummyCollector("c1", time.Millisecond*100, 1), nil), newcore.Subscribe(newcore.NewDummyCollector("c2", time.Millisecond*100, 1), nil), ) b1, _ := NewInfluxdbBackend("b1", conf) fset := newcore.FanOut(merge, b1) fset_closed_chan := make(chan error) time.AfterFunc(time.Second*time.Duration(2), func() { // merge will be closed within FanOut fset_closed_chan <- fset.Close() }) timeout := time.After(time.Second * time.Duration(3)) main_loop: for { select { case <-fset_closed_chan: fmt.Println("fset closed") break main_loop case <-timeout: t.Error("timed out! something is blocking") break main_loop } } }
func TestElasticsearchBackend(t *testing.T) { logging.SetLevel("debug") conf := &config.Transport_elasticsearch{ URL: "http://192.168.81.129:9200", Index: "test", Type: "test", } merge := newcore.Merge( newcore.Subscribe(newcore.NewDummyCollector("c1", time.Millisecond*100, 1), nil), newcore.Subscribe(newcore.NewDummyCollector("c2", time.Millisecond*100, 1), nil), ) b1, _ := NewElasticsearchBackend("b1", conf) fset := newcore.FanOut(merge, b1) fset_closed_chan := make(chan error) time.AfterFunc(time.Second*time.Duration(2), func() { // merge will be closed within FanOut fset_closed_chan <- fset.Close() }) timeout := time.After(time.Second * time.Duration(3)) main_loop: for { select { case <-fset_closed_chan: fmt.Println("fset closed") break main_loop case <-timeout: t.Error("timed out! something is blocking") break main_loop } } }
func TestFileBackend(t *testing.T) { os.Remove(test_file_path) conf := &config.Transport_file{ Enabled: true, Path: test_file_path, } merge := newcore.Merge( newcore.Subscribe(newcore.NewDummyCollector("c1", time.Millisecond*100, 1), nil), newcore.Subscribe(newcore.NewDummyCollector("c2", time.Millisecond*100, 1), nil), ) b1, _ := NewFileBackend("b1", conf) hook := newcore.NewHookBackend() bks := []newcore.Publication{b1, hook} fset := newcore.FanOut(merge, bks...) fset_closed_chan := make(chan error) time.AfterFunc(time.Second*time.Duration(1), func() { // merge will be closed within FanOut fset_closed_chan <- fset.Close() }) timeout := time.After(time.Second * time.Duration(3)) expected := 0 main_loop: for { select { case md, ok := <-hook.Hook(): if ok != false { expected += len(md) } else { break main_loop } case <-fset_closed_chan: fmt.Println("fset closed") break main_loop case <-timeout: t.Error("timed out! something is blocking") break main_loop } } // check how many data we collected. lines, err := fileLines(test_file_path) if err != nil { t.Error("failed counting lines", err) return } // on windows this may fail! os.Remove(test_file_path) t.Logf("expected: %d, got: %d", expected, lines) // 1s / 100 ms = 10 batch x 1 for each x 2 collectors = 20 // expected := 20 if lines != expected { t.Error("lines mismatch: lines: %d, expected: %d", lines, expected) } }