93 lines
2.0 KiB
Go
93 lines
2.0 KiB
Go
package statement
|
|
|
|
import (
|
|
"fmt"
|
|
"testing"
|
|
|
|
"github.com/influxdata/influxdb/stress/v2/stress_client"
|
|
)
|
|
|
|
func TestSetSetID(t *testing.T) {
|
|
e := newTestSet("database", "foo")
|
|
newID := "oaijnifo"
|
|
e.SetID(newID)
|
|
if e.StatementID != newID {
|
|
t.Errorf("Expected: %v\nGot: %v\n", newID, e.StatementID)
|
|
}
|
|
}
|
|
|
|
func TestSetRun(t *testing.T) {
|
|
properties := []string{
|
|
"precision",
|
|
"startdate",
|
|
"batchsize",
|
|
"resultsaddress",
|
|
"testname",
|
|
"addresses",
|
|
"writeinterval",
|
|
"queryinterval",
|
|
"database",
|
|
"writeconcurrency",
|
|
"queryconcurrency",
|
|
}
|
|
for _, prop := range properties {
|
|
testSetRunUtl(t, prop, "1")
|
|
}
|
|
}
|
|
|
|
func testSetRunUtl(t *testing.T, property string, value string) {
|
|
i := newTestSet(property, value)
|
|
s, _, directiveCh := stressClient.NewTestStressTest()
|
|
// Listen to the other side of the directiveCh
|
|
go func() {
|
|
for d := range directiveCh {
|
|
if i.Var != d.Property {
|
|
t.Errorf("wrong property sent to stressClient\n expected: %v\n got: %v\n", i.Var, d.Property)
|
|
}
|
|
if i.Value != d.Value {
|
|
t.Errorf("wrong value sent to stressClient\n expected: %v\n got: %v\n", i.Value, d.Value)
|
|
}
|
|
d.Tracer.Done()
|
|
}
|
|
}()
|
|
// Run the statement
|
|
i.Run(s)
|
|
// Check the result
|
|
switch i.Var {
|
|
case "precision":
|
|
if i.Value != s.Precision {
|
|
t.Errorf("Failed to set %v\n", i.Var)
|
|
}
|
|
case "startdate":
|
|
if i.Value != s.StartDate {
|
|
t.Errorf("Failed to set %v\n", i.Var)
|
|
}
|
|
case "batchsize":
|
|
if parseInt(i.Value) != s.BatchSize {
|
|
t.Errorf("Failed to set %v\n", i.Var)
|
|
}
|
|
// TODO: Actually test this
|
|
case "resultsaddress":
|
|
default:
|
|
}
|
|
}
|
|
|
|
func TestSetReport(t *testing.T) {
|
|
set := newTestSet("this", "that")
|
|
s, _, _ := stressClient.NewTestStressTest()
|
|
rpt := set.Report(s)
|
|
expected := fmt.Sprintf("SET %v = '%v'", set.Var, set.Value)
|
|
if rpt != expected {
|
|
t.Errorf("expected: %v\ngot: %v\n", expected, rpt)
|
|
}
|
|
}
|
|
|
|
func newTestSet(toSet, value string) *SetStatement {
|
|
return &SetStatement{
|
|
Var: toSet,
|
|
Value: value,
|
|
Tracer: stressClient.NewTracer(make(map[string]string)),
|
|
StatementID: "fooID",
|
|
}
|
|
}
|