Documentation ¶
Index ¶
- func BasicReadHandler(r <-chan response, rt *Timer)
- func BasicWriteHandler(rs <-chan response, wt *Timer)
- func Run(c *Config)
- type AbstractField
- type AbstractFields
- type AbstractTag
- type AbstractTags
- type BasicClient
- type BasicPointGenerator
- type BasicProvisioner
- type BasicQuery
- type BasicQueryClient
- type ConcurrencyLimiter
- type Config
- type Field
- type Fields
- type InfluxClient
- type InfluxClients
- type KeyValue
- type Pnt
- type Point
- type PointGenerator
- type PointGenerators
- type Provision
- type Provisioner
- type Querier
- type Query
- type QueryClient
- type QueryClients
- type QueryGenerator
- type QueryGenerators
- type QueryResponse
- type Read
- type ResponseTime
- type ResponseTimes
- type StdPoint
- type StressTest
- type Tag
- type Tags
- type Timer
- type Write
- type WriteResponse
- type Writer
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func BasicReadHandler ¶ added in v0.9.6
func BasicReadHandler(r <-chan response, rt *Timer)
BasicReadHandler handles read responses.
func BasicWriteHandler ¶ added in v0.9.6
func BasicWriteHandler(rs <-chan response, wt *Timer)
BasicWriteHandler handles write responses.
Types ¶
type AbstractField ¶ added in v0.9.6
AbstractField is a struct that abstractly defines a field
type AbstractFields ¶ added in v0.9.6
type AbstractFields []AbstractField
AbstractFields is a slice of abstract fields
func (AbstractFields) Template ¶ added in v0.9.6
func (f AbstractFields) Template() (string, []string)
Template returns a templated string of fields
type AbstractTag ¶ added in v0.9.6
AbstractTag is a struct that abstractly defines a tag
type AbstractTags ¶ added in v0.9.6
type AbstractTags []AbstractTag
AbstractTags is a slice of abstract tags
func (AbstractTags) Template ¶ added in v0.9.6
func (t AbstractTags) Template() string
Template returns a templated string of tags
type BasicClient ¶ added in v0.9.6
type BasicClient struct { Enabled bool `toml:"enabled"` Addresses []string `toml:"addresses"` Database string `toml:"database"` Precision string `toml:"precision"` BatchSize int `toml:"batch_size"` BatchInterval string `toml:"batch_interval"` Concurrency int `toml:"concurrency"` SSL bool `toml:"ssl"` Format string `toml:"format"` // contains filtered or unexported fields }
BasicClient implements the InfluxClient interface.
func (*BasicClient) Batch ¶ added in v0.9.6
func (c *BasicClient) Batch(ps <-chan Point, r chan<- response) error
Batch groups together points
func (*BasicClient) HTTPWriteHandler ¶ added in v0.9.6
func (b *BasicClient) HTTPWriteHandler(rs <-chan response, wt *Timer)
type BasicPointGenerator ¶ added in v0.9.6
type BasicPointGenerator struct { PointCount int `toml:"point_count"` Tick string `toml:"tick"` Jitter bool `toml:"jitter"` Measurement string `toml:"measurement"` SeriesCount int `toml:"series_count"` Tags AbstractTags `toml:"tag"` Fields AbstractFields `toml:"field"` StartDate string `toml:"start_date"` Precision string `toml:"precision"` // contains filtered or unexported fields }
BasicPointGenerator implements the PointGenerator interface
func (*BasicPointGenerator) Generate ¶ added in v0.9.6
func (b *BasicPointGenerator) Generate() (<-chan Point, error)
Generate returns a point channel. Implements the Generate method for the PointGenerator interface
func (*BasicPointGenerator) Template ¶ added in v0.9.6
func (b *BasicPointGenerator) Template() func(i int, t time.Time) *Pnt
Template returns a function that returns a pointer to a Pnt.
func (*BasicPointGenerator) Time ¶ added in v0.9.6
func (b *BasicPointGenerator) Time() time.Time
Time returns the timestamp for the latest points that are being generated. Implements the Time method for the PointGenerator interface.
type BasicProvisioner ¶ added in v0.9.6
type BasicProvisioner struct { Enabled bool `toml:"enabled"` Address string `toml:"address"` Database string `toml:"database"` ResetDatabase bool `toml:"reset_database"` }
BasicProvisioner implements the Provisioner interface.
func (*BasicProvisioner) Provision ¶ added in v0.9.6
func (b *BasicProvisioner) Provision() error
Provision runs the resetDB function.
type BasicQuery ¶ added in v0.9.6
type BasicQuery struct { Template Query `toml:"template"` QueryCount int `toml:"query_count"` // contains filtered or unexported fields }
BasicQuery implements the QueryGenerator interface
func (*BasicQuery) QueryGenerate ¶ added in v0.9.6
func (q *BasicQuery) QueryGenerate(now func() time.Time) (<-chan Query, error)
QueryGenerate returns a Query channel
func (*BasicQuery) SetTime ¶ added in v0.9.6
func (q *BasicQuery) SetTime(t time.Time)
SetTime sets the internal state of time
type BasicQueryClient ¶ added in v0.9.6
type BasicQueryClient struct { Enabled bool `toml:"enabled"` Addresses []string `toml:"addresses"` Database string `toml:"database"` QueryInterval string `toml:"query_interval"` Concurrency int `toml:"concurrency"` // contains filtered or unexported fields }
BasicQueryClient implements the QueryClient interface
func (*BasicQueryClient) Exec ¶ added in v0.9.6
func (b *BasicQueryClient) Exec(qs <-chan Query, r chan<- response) error
Exec listens to the query channel an executes queries as they come in
func (*BasicQueryClient) Init ¶ added in v0.9.6
func (b *BasicQueryClient) Init() error
Init initializes the InfluxDB client
func (*BasicQueryClient) Query ¶ added in v0.9.6
func (b *BasicQueryClient) Query(cmd Query) (response, error)
Query runs the query
type ConcurrencyLimiter ¶
type ConcurrencyLimiter struct {
// contains filtered or unexported fields
}
ConcurrencyLimiter is a go routine safe struct that can be used to ensure that no more than a specifid max number of goroutines are executing.
func NewConcurrencyLimiter ¶
func NewConcurrencyLimiter(max int) *ConcurrencyLimiter
NewConcurrencyLimiter returns a configured limiter that will ensure that calls to Increment will block if the max is hit.
func (*ConcurrencyLimiter) Decrement ¶
func (c *ConcurrencyLimiter) Decrement()
Decrement will reduce the count of running goroutines by 1
func (*ConcurrencyLimiter) Increment ¶
func (c *ConcurrencyLimiter) Increment()
Increment will increase the count of running goroutines by 1. if the number is currently at the max, the call to Increment will block until another goroutine decrements.
type Config ¶
type Config struct { Provision Provision `toml:"provision"` Write Write `toml:"write"` Read Read `toml:"read"` }
Config is a struct for the Stress test configuration
func BasicStress ¶ added in v0.9.6
BasicStress returns a config for a basic stress test.
func DecodeConfig ¶ added in v0.9.6
DecodeConfig takes a file path for a toml config file and returns a pointer to a Config Struct.
func DecodeFile ¶
DecodeFile takes a file path for a toml config file and returns a pointer to a Config Struct.
type InfluxClient ¶ added in v0.9.6
type InfluxClient interface { Batch(ps <-chan Point, r chan<- response) error // contains filtered or unexported methods }
InfluxClient is an interface for writing data to the database.
type InfluxClients ¶ added in v0.9.6
type InfluxClients struct {
Basic BasicClient `toml:"basic"`
}
InfluxClients is a struct that contains the configuration parameters for all implemented InfluxClient's.
type KeyValue ¶ added in v0.9.6
KeyValue is an intermediate type that is used to express Tag and Field similarly.
type Pnt ¶ added in v0.9.6
type Pnt struct {
// contains filtered or unexported fields
}
Pnt is a struct that implements the Point interface.
func (*Pnt) Next ¶ added in v0.9.6
Next generates very simple points very efficiently. TODO: Take this out
func (Pnt) OpenJSON ¶ added in v0.9.6
OpenJSON returns a byte array for a point in opentsdb json format
func (Pnt) OpenTelnet ¶ added in v0.9.6
OpenTelnet returns a byte array for a point in opentsdb-telnet format
type Point ¶ added in v0.9.6
Point is an interface that is used to represent the abstract idea of a point in InfluxDB.
type PointGenerator ¶ added in v0.9.6
PointGenerator is an interface for generating points.
type PointGenerators ¶ added in v0.9.6
type PointGenerators struct {
Basic BasicPointGenerator `toml:"basic"`
}
PointGenerators is a struct that contains the configuration parameters for all implemented PointGenerator's.
type Provision ¶ added in v0.9.6
type Provision struct {
Basic BasicProvisioner `toml:"basic"`
}
Provision is a struct that contains the configuration parameters for all implemented Provisioner's.
type Provisioner ¶ added in v0.9.6
type Provisioner interface {
Provision() error
}
Provisioner is an interface that provisions an InfluxDB instance
type Querier ¶ added in v0.9.6
type Querier struct { QueryGenerator QueryClient }
Querier queries the database.
func NewQuerier ¶ added in v0.9.6
func NewQuerier(q QueryGenerator, c QueryClient) Querier
NewQuerier returns a Querier.
type QueryClient ¶ added in v0.9.6
type QueryClient interface { Query(q Query) (response, error) Exec(qs <-chan Query, r chan<- response) error }
QueryClient is an interface that can write a query to an InfluxDB instance.
type QueryClients ¶ added in v0.9.6
type QueryClients struct {
Basic BasicQueryClient `toml:"basic"`
}
QueryClients is a struct that contains the configuration parameters for all implemented QueryClient's.
type QueryGenerator ¶ added in v0.9.6
type QueryGenerator interface { QueryGenerate(f func() time.Time) (<-chan Query, error) SetTime(t time.Time) }
QueryGenerator is an interface that is used to define queries that will be ran on the DB.
type QueryGenerators ¶ added in v0.9.6
type QueryGenerators struct {
Basic BasicQuery `toml:"basic"`
}
QueryGenerators is a struct that contains the configuration parameters for all implemented QueryGenerator's.
type QueryResponse ¶ added in v0.9.6
type QueryResponse struct { Body string // contains filtered or unexported fields }
QueryResponse is a response for a Querier
type Read ¶ added in v0.9.6
type Read struct { QueryGenerators QueryGenerators `toml:"query_generator"` QueryClients QueryClients `toml:"query_client"` }
Read is a struct that contains the configuration parameters for the stress test Reader.
type ResponseTime ¶
ResponseTime is a struct that contains `Value` `Time` pairing.
func NewResponseTime ¶
func NewResponseTime(v int) ResponseTime
NewResponseTime returns a new response time with value `v` and time `time.Now()`.
type ResponseTimes ¶
type ResponseTimes []ResponseTime
ResponseTimes is a slice of response times
func (ResponseTimes) Len ¶
func (rs ResponseTimes) Len() int
Implements the `Len` method for the sort.Interface type
func (ResponseTimes) Less ¶
func (rs ResponseTimes) Less(i, j int) bool
Implements the `Less` method for the sort.Interface type
func (ResponseTimes) Swap ¶
func (rs ResponseTimes) Swap(i, j int)
Implements the `Swap` method for the sort.Interface type
type StdPoint ¶ added in v0.9.6
StdPoint represents a point in InfluxDB
func (StdPoint) Graphite ¶ added in v0.9.6
Graphite returns a byte array for a point in graphite-protocol format
func (StdPoint) Line ¶ added in v0.9.6
Line returns a byte array for a point in line-protocol format
func (StdPoint) OpenTelnet ¶ added in v0.9.6
OpenTelnet returns a byte array for a point in OpenTSDB-telnet format
type StressTest ¶ added in v0.9.6
type StressTest struct { Provisioner Writer Querier }
StressTest is a struct that contains all of the logic required to execute a Stress Test
func NewStressTest ¶ added in v0.9.6
func NewStressTest(p Provisioner, w Writer, r Querier) StressTest
NewStressTest returns an instance of a StressTest
func (*StressTest) Start ¶ added in v0.9.6
func (s *StressTest) Start(wHandle responseHandler, rHandle responseHandler)
Start executes the Stress Test
type Timer ¶
type Timer struct {
// contains filtered or unexported fields
}
Timer is struct that can be used to track elaspsed time
func NewTimer ¶
func NewTimer() *Timer
NewTimer returns a pointer to a `Timer` struct where the timers `start` field has been set to `time.Now()`
func (*Timer) Elapsed ¶
Elapsed returns the total elapsed time between the `start` and `end` fields on a timer.
func (*Timer) StartTimer ¶
func (t *Timer) StartTimer()
StartTimer sets a timers `start` field to the current time
type Write ¶ added in v0.9.6
type Write struct { PointGenerators PointGenerators `toml:"point_generator"` InfluxClients InfluxClients `toml:"influx_client"` }
Write is a struct that contains the configuration parameters for the stress test Writer.
type WriteResponse ¶ added in v0.9.6
type WriteResponse response
WriteResponse is a response for a Writer
type Writer ¶ added in v0.9.6
type Writer struct { PointGenerator InfluxClient }
Writer is a PointGenerator and an InfluxClient.
func NewWriter ¶ added in v0.9.6
func NewWriter(p PointGenerator, i InfluxClient) Writer
NewWriter returns a Writer.