Provide a test mode to check plugins easily

This commit is contained in:
Evan Phoenix 2015-04-06 17:24:24 -07:00
parent 7b0c09d5e9
commit 609cba2cd5
3 changed files with 62 additions and 5 deletions

View File

@ -1,12 +1,32 @@
package tivan
import "github.com/influxdb/influxdb/client"
import (
"fmt"
"sort"
"strings"
"github.com/influxdb/influxdb/client"
)
type BatchPoints struct {
client.BatchPoints
Debug bool
}
func (bp *BatchPoints) Add(name string, val interface{}, tags map[string]string) {
if bp.Debug {
var tg []string
for k, v := range tags {
tg = append(tg, fmt.Sprintf("%s=\"%s\"", k, v))
}
sort.Strings(tg)
fmt.Printf("> [%s] %s=%v\n", strings.Join(tg, " "), name, val)
}
bp.Points = append(bp.Points, client.Point{
Name: name,
Tags: tags,

View File

@ -37,9 +37,15 @@ func NewAgent(config *Config) (*Agent, error) {
return nil, err
}
return agent, nil
}
func (agent *Agent) Connect() error {
config := agent.Config
u, err := url.Parse(config.URL)
if err != nil {
return nil, err
return err
}
c, err := client.NewClient(client.Config{
@ -50,12 +56,12 @@ func NewAgent(config *Config) (*Agent, error) {
})
if err != nil {
return nil, err
return err
}
agent.conn = c
return agent, nil
return nil
}
func (a *Agent) LoadPlugins() ([]string, error) {
@ -74,6 +80,8 @@ func (a *Agent) LoadPlugins() ([]string, error) {
func (a *Agent) crank() error {
var acc BatchPoints
acc.Debug = a.Debug
for _, plugin := range a.plugins {
err := plugin.Gather(&acc)
if err != nil {
@ -89,6 +97,21 @@ func (a *Agent) crank() error {
return err
}
func (a *Agent) Test() error {
var acc BatchPoints
acc.Debug = true
for _, plugin := range a.plugins {
err := plugin.Gather(&acc)
if err != nil {
return err
}
}
return nil
}
func (a *Agent) Run(shutdown chan struct{}) {
ticker := time.NewTicker(a.Interval.Duration)

View File

@ -12,7 +12,7 @@ import (
)
var fDebug = flag.Bool("debug", false, "show metrics as they're generated to stdout")
var fTest = flag.Bool("test", false, "gather metrics, print them out, and exit")
var fConfig = flag.String("config", "", "configuration file to load")
func main() {
@ -46,6 +46,20 @@ func main() {
log.Fatal(err)
}
if *fTest {
err = ag.Test()
if err != nil {
log.Fatal(err)
}
return
}
err = ag.Connect()
if err != nil {
log.Fatal(err)
}
shutdown := make(chan struct{})
signals := make(chan os.Signal)