fix flakey tests

This commit is contained in:
Steven Soroka 2020-10-09 16:10:17 -04:00
parent a8810b2b7a
commit 827b2d4df5
3 changed files with 21 additions and 63 deletions

View File

@ -16,8 +16,8 @@ import (
func TestProcesses(t *testing.T) { func TestProcesses(t *testing.T) {
processes := &Processes{ processes := &Processes{
Log: testutil.Logger{}, Log: testutil.Logger{},
execPS: execPS, execPS: testExecPS("STAT\n Ss \n S \n Z \n R \n S< \n SNs \n Ss+ \n \n \n"),
readProcFile: readProcFile, readProcFile: readProcFile,
} }
var acc testutil.Accumulator var acc testutil.Accumulator
@ -37,7 +37,7 @@ func TestProcesses(t *testing.T) {
func TestFromPS(t *testing.T) { func TestFromPS(t *testing.T) {
processes := &Processes{ processes := &Processes{
Log: testutil.Logger{}, Log: testutil.Logger{},
execPS: testExecPS, execPS: testExecPS("\nSTAT\nD\nI\nL\nR\nR+\nS\nS+\nSNs\nSs\nU\nZ\n"),
forcePS: true, forcePS: true,
} }
@ -46,12 +46,12 @@ func TestFromPS(t *testing.T) {
require.NoError(t, err) require.NoError(t, err)
fields := getEmptyFields() fields := getEmptyFields()
fields["blocked"] = int64(4) fields["blocked"] = int64(3)
fields["zombies"] = int64(1) fields["zombies"] = int64(1)
fields["running"] = int64(4) fields["running"] = int64(2)
fields["sleeping"] = int64(34) fields["sleeping"] = int64(4)
fields["idle"] = int64(2) fields["idle"] = int64(1)
fields["total"] = int64(45) fields["total"] = int64(11)
acc.AssertContainsTaggedFields(t, "processes", fields, map[string]string{}) acc.AssertContainsTaggedFields(t, "processes", fields, map[string]string{})
} }
@ -168,8 +168,8 @@ func TestParkedProcess(t *testing.T) {
testutil.IgnoreTime()) testutil.IgnoreTime())
} }
func testExecPS() ([]byte, error) { func testExecPS(out string) func() ([]byte, error) {
return []byte(testPSOut), nil return func() ([]byte, error) { return []byte(out), nil }
} }
// struct for counting calls to testProcFile // struct for counting calls to testProcFile
@ -188,58 +188,9 @@ func (t *tester) testProcFile2(_ string) ([]byte, error) {
} }
func testExecPSError() ([]byte, error) { func testExecPSError() ([]byte, error) {
return []byte(testPSOut), fmt.Errorf("ERROR!") return []byte("\nSTAT\nD\nI\nL\nR\nR+\nS\nS+\nSNs\nSs\nU\nZ\n"), fmt.Errorf("ERROR!")
} }
const testPSOut = `
STAT
S
S
S
S
R
R
S
S
Ss
Ss
S
SNs
Ss
Ss
S
R+
S
U
S
S
S
S
Ss
S+
Ss
S
S+
S+
Ss
S+
Ss
S
R+
Ss
S
S+
S+
Ss
L
U
Z
D
S+
I
I
`
const testProcStat = `10 (rcuob/0) %s 2 0 0 0 -1 2129984 0 0 0 0 0 0 0 0 20 0 %s 0 11 0 0 18446744073709551615 0 0 0 0 0 0 0 2147483647 0 18446744073709551615 0 0 17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 const testProcStat = `10 (rcuob/0) %s 2 0 0 0 -1 2129984 0 0 0 0 0 0 0 0 20 0 %s 0 11 0 0 18446744073709551615 0 0 0 0 0 0 0 2147483647 0 18446744073709551615 0 0 17 0 0 0 0 0 0 0 0 0 0 0 0 0 0
` `

View File

@ -264,11 +264,12 @@ func TestRunParserInvalidMsg(t *testing.T) {
listener.parser, _ = parsers.NewInfluxParser() listener.parser, _ = parsers.NewInfluxParser()
listener.wg.Add(1) listener.wg.Add(1)
go listener.tcpParser()
buf := bytes.NewBuffer(nil) buf := bytes.NewBuffer(nil)
log.SetOutput(buf) log.SetOutput(buf)
defer log.SetOutput(os.Stderr) defer log.SetOutput(os.Stderr)
go listener.tcpParser()
in <- testmsg in <- testmsg
scnr := bufio.NewScanner(buf) scnr := bufio.NewScanner(buf)

View File

@ -363,7 +363,13 @@ func (a *Accumulator) AssertContainsTaggedFields(
return return
} }
} }
msg := fmt.Sprintf("unknown measurement %s with tags %v", measurement, tags) // We've failed. spit out some debug logging
for _, p := range a.Metrics {
if p.Measurement == measurement {
t.Log("measurement", p.Measurement, "tags", p.Tags, "fields", p.Fields)
}
}
msg := fmt.Sprintf("unknown measurement %q with tags %v", measurement, tags)
assert.Fail(t, msg) assert.Fail(t, msg)
} }
@ -403,7 +409,7 @@ func (a *Accumulator) AssertContainsFields(
return return
} }
} }
msg := fmt.Sprintf("unknown measurement %s", measurement) msg := fmt.Sprintf("unknown measurement %q", measurement)
assert.Fail(t, msg) assert.Fail(t, msg)
} }