Documentation ¶
Overview ¶
Package testing is a test suit for readers. They should provide an object that implements the Constructor interface then run:
import rt "github.com/arsham/expipe/reader/testing" .... type Construct struct { *rt.BaseConstruct testServer *httptest.Server } func (c *Construct) TestServer() *httptest.Server { return /* a test server */ } func (c *Construct) Object() (reader.DataReader, error) { return expvar.New(c.Setters()...) } func TestMyReader(t *testing.T) { rt.TestSuites(t, func() (rt.Constructor, func()) { c := &Construct{ testServer: getTestServer(), BaseConstruct: rt.NewBaseConstruct(), } return c, func() { c.testServer.Close() } }) }
The test suit will pick it up and does all the tests.
Important Note ¶
The test suite might close and request the test server multiple times during its work. Make sure you return a brand new instance every time the TestServer method is been called. All tests are ran in isolation and they are set to be run as parallel. Make sure your code doesn't have any race conditions. You need to write the edge cases if they are not covered in this section.
Index ¶
- func TestSuites(t *testing.T, setup func() (Constructor, func()))
- type BaseConstruct
- func (b *BaseConstruct) SetBackoff(backoff int)
- func (b *BaseConstruct) SetEndpoint(endpoint string)
- func (b *BaseConstruct) SetInterval(interval time.Duration)
- func (b *BaseConstruct) SetLogger(logger tools.FieldLogger)
- func (b *BaseConstruct) SetMapper(mapper datatype.Mapper)
- func (b *BaseConstruct) SetName(name string)
- func (b *BaseConstruct) SetTimeout(timeout time.Duration)
- func (b *BaseConstruct) SetTypeName(typeName string)
- func (b *BaseConstruct) Setters() []func(reader.Constructor) error
- type Config
- func (c *Config) Backoff() int
- func (c *Config) Endpoint() string
- func (c *Config) Interval() time.Duration
- func (c *Config) Logger() tools.FieldLogger
- func (c *Config) Name() string
- func (c *Config) Reader() (reader.DataReader, error)
- func (c *Config) Timeout() time.Duration
- func (c *Config) TypeName() string
- type Constructor
- type Reader
- func (r *Reader) Backoff() int
- func (r *Reader) Endpoint() string
- func (r *Reader) Interval() time.Duration
- func (r *Reader) Logger() tools.FieldLogger
- func (r *Reader) Mapper() datatype.Mapper
- func (r *Reader) Name() string
- func (r *Reader) Ping() error
- func (r *Reader) Read(job *token.Context) (*reader.Result, error)
- func (r *Reader) SetBackoff(backoff int)
- func (r *Reader) SetEndpoint(endpoint string)
- func (r *Reader) SetInterval(interval time.Duration)
- func (r *Reader) SetLogger(log tools.FieldLogger)
- func (r *Reader) SetMapper(mapper datatype.Mapper)
- func (r *Reader) SetName(name string)
- func (r *Reader) SetTimeout(timeout time.Duration)
- func (r *Reader) SetTypeName(typeName string)
- func (r *Reader) Timeout() time.Duration
- func (r *Reader) TypeName() string
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func TestSuites ¶ added in v0.8.1
func TestSuites(t *testing.T, setup func() (Constructor, func()))
TestSuites returns a map of test name to the runner function.
Types ¶
type BaseConstruct ¶ added in v0.10.0
BaseConstruct implements Constructor interface. It only remembers the setter functions, therefore you need to apply them when creating an object in the derived constructor. It is concurrent safe.
func NewBaseConstruct ¶ added in v0.10.0
func NewBaseConstruct() *BaseConstruct
NewBaseConstruct returns an instance of BaseConstruct.
func (*BaseConstruct) SetBackoff ¶ added in v0.10.0
func (b *BaseConstruct) SetBackoff(backoff int)
SetBackoff adds a Backoff value to setter configuration.
func (*BaseConstruct) SetEndpoint ¶ added in v0.10.0
func (b *BaseConstruct) SetEndpoint(endpoint string)
SetEndpoint adds a Endpoint value to setter configuration.
func (*BaseConstruct) SetInterval ¶ added in v0.10.0
func (b *BaseConstruct) SetInterval(interval time.Duration)
SetInterval adds a Interval value to setter configuration.
func (*BaseConstruct) SetLogger ¶ added in v0.10.0
func (b *BaseConstruct) SetLogger(logger tools.FieldLogger)
SetLogger adds a Logger value to setter configuration.
func (*BaseConstruct) SetMapper ¶ added in v0.10.0
func (b *BaseConstruct) SetMapper(mapper datatype.Mapper)
SetMapper adds a Mapper value to setter configuration.
func (*BaseConstruct) SetName ¶ added in v0.10.0
func (b *BaseConstruct) SetName(name string)
SetName adds a Name value to setter configuration.
func (*BaseConstruct) SetTimeout ¶ added in v0.10.0
func (b *BaseConstruct) SetTimeout(timeout time.Duration)
SetTimeout adds a Timeout value to setter configuration.
func (*BaseConstruct) SetTypeName ¶ added in v0.10.0
func (b *BaseConstruct) SetTypeName(typeName string)
SetTypeName adds a TypeName value to setter configuration.
func (*BaseConstruct) Setters ¶ added in v0.10.0
func (b *BaseConstruct) Setters() []func(reader.Constructor) error
Setters returns a copy of the configuration functions.
type Config ¶ added in v0.7.0
type Config struct { MockName string MockTypeName string MockEndpoint string MockTimeout time.Duration MockInterval time.Duration MockBackoff int MockLogger tools.FieldLogger }
Config is used for instantiating a mock reader.
func (*Config) Logger ¶ added in v0.7.0
func (c *Config) Logger() tools.FieldLogger
Logger returns the logger.
func (*Config) Reader ¶ added in v0.10.0
func (c *Config) Reader() (reader.DataReader, error)
Reader implements the ReaderConf interface.
type Constructor ¶ added in v0.7.0
type Constructor interface { reader.Constructor TestServer() *httptest.Server Object() (reader.DataReader, error) }
Constructor is an interface for setting up an object for testing. TestServer should return a ready to use test server Object should return the instantiated object
type Reader ¶ added in v0.7.0
type Reader struct { MockName string MockTypeName string MockEndpoint string MockMapper datatype.Mapper MockInterval time.Duration ReadFunc func(*token.Context) (*reader.Result, error) PingFunc func() error Pinged bool // contains filtered or unexported fields }
Reader is useful for testing purposes.
func New ¶ added in v0.7.0
func New(options ...func(reader.Constructor) error) (*Reader, error)
New is a reader for using in tests.
func (*Reader) Logger ¶ added in v0.8.1
func (r *Reader) Logger() tools.FieldLogger
Logger returns the log.
func (*Reader) Read ¶ added in v0.7.0
Read executes the ReadFunc if defined, otherwise continues normally.
func (*Reader) SetBackoff ¶ added in v0.8.1
SetBackoff sets the backoff of the reader.
func (*Reader) SetEndpoint ¶ added in v0.8.1
SetEndpoint sets the endpoint of the reader.
func (*Reader) SetInterval ¶ added in v0.8.1
SetInterval sets the interval of the reader.
func (*Reader) SetLogger ¶ added in v0.8.1
func (r *Reader) SetLogger(log tools.FieldLogger)
SetLogger sets the log of the reader.
func (*Reader) SetTimeout ¶ added in v0.8.1
SetTimeout sets the timeout of the reader.
func (*Reader) SetTypeName ¶ added in v0.8.1
SetTypeName sets the type name of the reader.