// NewConfig returns an instance of Config with reasonable defaults. func NewConfig() *Config { c := &Config{ Hostname: "localhost", } c.HTTP = httpd.NewConfig() c.Storage = storage.NewConfig() c.Replay = replay.NewConfig() c.Task = task_store.NewConfig() c.Logging = logging.NewConfig() c.Collectd = collectd.NewConfig() c.OpenTSDB = opentsdb.NewConfig() c.SMTP = smtp.NewConfig() c.OpsGenie = opsgenie.NewConfig() c.VictorOps = victorops.NewConfig() c.PagerDuty = pagerduty.NewConfig() c.Sensu = sensu.NewConfig() c.Slack = slack.NewConfig() c.Telegram = telegram.NewConfig() c.HipChat = hipchat.NewConfig() c.Alerta = alerta.NewConfig() c.Reporting = reporting.NewConfig() c.Stats = stats.NewConfig() c.UDF = udf.NewConfig() c.Deadman = deadman.NewConfig() c.Talk = talk.NewConfig() return c }
func init() { wlog.SetLevel(wlog.OFF) // create API server config := httpd.NewConfig() config.BindAddress = ":0" // Choose port dynamically httpService = httpd.NewService(config, logService.NewLogger("[http] ", log.LstdFlags)) err := httpService.Open() if err != nil { panic(err) } }
// NewConfig returns an instance of Config with reasonable defaults. func NewConfig() *Config { c := &Config{ Hostname: "localhost", } c.HTTP = httpd.NewConfig() c.Replay = replay.NewConfig() c.Task = task_store.NewConfig() c.InfluxDB = influxdb.NewConfig() c.Logging = logging.NewConfig() c.Collectd = collectd.NewConfig() c.OpenTSDB = opentsdb.NewConfig() c.SMTP = smtp.NewConfig() c.OpsGenie = opsgenie.NewConfig() c.VictorOps = victorops.NewConfig() c.PagerDuty = pagerduty.NewConfig() c.Slack = slack.NewConfig() c.HipChat = hipchat.NewConfig() c.Reporting = reporting.NewConfig() c.Stats = stats.NewConfig() return c }
// Generic Benchmark method func Bench(b *testing.B, tasksCount, pointCount, expectedProcessedCount int, tickScript, db, rp string, measurements ...string) { // Setup HTTPD service config := httpd.NewConfig() config.BindAddress = ":0" // Choose port dynamically config.LogEnabled = false httpdService := httpd.NewService(config, "localhost", logService.NewLogger("[http] ", log.LstdFlags), logService) httpdService.Handler.AuthService = noauth.NewService(logService.NewLogger("[noauth] ", log.LstdFlags)) err := httpdService.Open() if err != nil { b.Fatal(err) } writes := make([]struct { request *http.Request seeker io.Seeker }, len(measurements)) for i, m := range measurements { writes[i].request, writes[i].seeker = createWriteRequest(b, db, rp, m, pointCount) } dbrps := []kapacitor.DBRP{{Database: db, RetentionPolicy: rp}} b.ReportAllocs() b.ResetTimer() for i := 0; i < b.N; i++ { // Do not time setup b.StopTimer() tm := kapacitor.NewTaskMaster("bench", &LogService{}) tm.HTTPDService = httpdService tm.UDFService = nil tm.TaskStore = taskStore{} tm.DeadmanService = deadman{} tm.Open() httpdService.Handler.PointsWriter = tm tasks := createTasks(b, tm, tasksCount, tickScript, dbrps) // Seek writes back to beginning for _, write := range writes { write.seeker.Seek(0, 0) } wg := sync.WaitGroup{} wg.Add(len(writes)) // Time how long it takes to process all data b.StartTimer() for _, write := range writes { go func(writeRequest *http.Request, seeker io.Seeker) { defer wg.Done() responseRecorder := httptest.NewRecorder() httpdService.Handler.ServeHTTP(responseRecorder, writeRequest) if responseRecorder.Code != http.StatusNoContent { b.Fatalf("failed to write test data %s", responseRecorder.Body.String()) } }(write.request, write.seeker) } wg.Wait() tm.Drain() for _, t := range tasks { t.Wait() } // Do not time cleanup b.StopTimer() // Validate that tasks did not error out and processed all points validateTasks(b, tm, tasks, expectedProcessedCount) tm.Close() } }