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 package tivan
import "github.com/influxdb/influxdb/client" import (
"fmt"
"sort"
"strings"
"github.com/influxdb/influxdb/client"
)
type BatchPoints struct { type BatchPoints struct {
client.BatchPoints client.BatchPoints
Debug bool
} }
func (bp *BatchPoints) Add(name string, val interface{}, tags map[string]string) { 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{ bp.Points = append(bp.Points, client.Point{
Name: name, Name: name,
Tags: tags, Tags: tags,

View File

@ -37,9 +37,15 @@ func NewAgent(config *Config) (*Agent, error) {
return nil, err return nil, err
} }
return agent, nil
}
func (agent *Agent) Connect() error {
config := agent.Config
u, err := url.Parse(config.URL) u, err := url.Parse(config.URL)
if err != nil { if err != nil {
return nil, err return err
} }
c, err := client.NewClient(client.Config{ c, err := client.NewClient(client.Config{
@ -50,12 +56,12 @@ func NewAgent(config *Config) (*Agent, error) {
}) })
if err != nil { if err != nil {
return nil, err return err
} }
agent.conn = c agent.conn = c
return agent, nil return nil
} }
func (a *Agent) LoadPlugins() ([]string, error) { func (a *Agent) LoadPlugins() ([]string, error) {
@ -74,6 +80,8 @@ func (a *Agent) LoadPlugins() ([]string, error) {
func (a *Agent) crank() error { func (a *Agent) crank() error {
var acc BatchPoints var acc BatchPoints
acc.Debug = a.Debug
for _, plugin := range a.plugins { for _, plugin := range a.plugins {
err := plugin.Gather(&acc) err := plugin.Gather(&acc)
if err != nil { if err != nil {
@ -89,6 +97,21 @@ func (a *Agent) crank() error {
return err 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{}) { func (a *Agent) Run(shutdown chan struct{}) {
ticker := time.NewTicker(a.Interval.Duration) 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 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") var fConfig = flag.String("config", "", "configuration file to load")
func main() { func main() {
@ -46,6 +46,20 @@ func main() {
log.Fatal(err) 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{}) shutdown := make(chan struct{})
signals := make(chan os.Signal) signals := make(chan os.Signal)