162 lines
6.4 KiB
Go
162 lines
6.4 KiB
Go
package main
|
|
|
|
import (
|
|
"github.com/hpcloud/tail"
|
|
"github.com/prometheus/client_golang/prometheus"
|
|
io_prometheus_client "github.com/prometheus/client_model/go"
|
|
"github.com/stretchr/testify/assert"
|
|
"testing"
|
|
)
|
|
|
|
func TestPostfixExporter_CollectFromLogline(t *testing.T) {
|
|
type fields struct {
|
|
showqPath string
|
|
journal *Journal
|
|
tailer *tail.Tail
|
|
cleanupProcesses prometheus.Counter
|
|
cleanupRejects prometheus.Counter
|
|
cleanupNotAccepted prometheus.Counter
|
|
lmtpDelays *prometheus.HistogramVec
|
|
pipeDelays *prometheus.HistogramVec
|
|
qmgrInsertsNrcpt prometheus.Histogram
|
|
qmgrInsertsSize prometheus.Histogram
|
|
qmgrRemoves prometheus.Counter
|
|
smtpDelays *prometheus.HistogramVec
|
|
smtpTLSConnects *prometheus.CounterVec
|
|
smtpDeferreds prometheus.Counter
|
|
smtpdConnects prometheus.Counter
|
|
smtpdDisconnects prometheus.Counter
|
|
smtpdFCrDNSErrors prometheus.Counter
|
|
smtpdLostConnections *prometheus.CounterVec
|
|
smtpdProcesses *prometheus.CounterVec
|
|
smtpdRejects *prometheus.CounterVec
|
|
smtpdSASLAuthenticationFailures prometheus.Counter
|
|
smtpdTLSConnects *prometheus.CounterVec
|
|
unsupportedLogEntries *prometheus.CounterVec
|
|
}
|
|
type args struct {
|
|
line []string
|
|
count int
|
|
}
|
|
tests := []struct {
|
|
name string
|
|
fields fields
|
|
args args
|
|
}{
|
|
{
|
|
name: "Single line",
|
|
args: args{
|
|
line: []string{
|
|
"Feb 11 16:49:24 letterman postfix/qmgr[8204]: AAB4D259B1: removed",
|
|
},
|
|
count: 1,
|
|
},
|
|
},
|
|
{
|
|
name: "Multiple lines",
|
|
args: args{
|
|
line: []string{
|
|
"Feb 11 16:49:24 letterman postfix/qmgr[8204]: AAB4D259B1: removed",
|
|
"Feb 11 16:49:24 letterman postfix/qmgr[8204]: C2032259E6: removed",
|
|
"Feb 11 16:49:24 letterman postfix/qmgr[8204]: B83C4257DC: removed",
|
|
"Feb 11 16:49:24 letterman postfix/qmgr[8204]: 721BE256EA: removed",
|
|
"Feb 11 16:49:25 letterman postfix/qmgr[8204]: CA94A259EB: removed",
|
|
"Feb 11 16:49:25 letterman postfix/qmgr[8204]: AC1E3259E1: removed",
|
|
"Feb 11 16:49:25 letterman postfix/qmgr[8204]: D114D221E3: removed",
|
|
"Feb 11 16:49:25 letterman postfix/qmgr[8204]: A55F82104D: removed",
|
|
"Feb 11 16:49:25 letterman postfix/qmgr[8204]: D6DAA259BC: removed",
|
|
"Feb 11 16:49:25 letterman postfix/qmgr[8204]: E3908259F0: removed",
|
|
"Feb 11 16:49:25 letterman postfix/qmgr[8204]: 0CBB8259BF: removed",
|
|
"Feb 11 16:49:25 letterman postfix/qmgr[8204]: EA3AD259F2: removed",
|
|
"Feb 11 16:49:25 letterman postfix/qmgr[8204]: DDEF824B48: removed",
|
|
"Feb 11 16:49:26 letterman postfix/qmgr[8204]: 289AF21DB9: removed",
|
|
"Feb 11 16:49:26 letterman postfix/qmgr[8204]: 6192B260E8: removed",
|
|
"Feb 11 16:49:26 letterman postfix/qmgr[8204]: F2831259F4: removed",
|
|
"Feb 11 16:49:26 letterman postfix/qmgr[8204]: 09D60259F8: removed",
|
|
"Feb 11 16:49:26 letterman postfix/qmgr[8204]: 13A19259FA: removed",
|
|
"Feb 11 16:49:26 letterman postfix/qmgr[8204]: 2D42722065: removed",
|
|
"Feb 11 16:49:26 letterman postfix/qmgr[8204]: 746E325A0E: removed",
|
|
"Feb 11 16:49:26 letterman postfix/qmgr[8204]: 4D2F125A02: removed",
|
|
"Feb 11 16:49:26 letterman postfix/qmgr[8204]: E30BC259EF: removed",
|
|
"Feb 11 16:49:26 letterman postfix/qmgr[8204]: DC88924DA1: removed",
|
|
"Feb 11 16:49:26 letterman postfix/qmgr[8204]: 2164B259FD: removed",
|
|
"Feb 11 16:49:26 letterman postfix/qmgr[8204]: 8C30525A14: removed",
|
|
"Feb 11 16:49:26 letterman postfix/qmgr[8204]: 8DCCE25A15: removed",
|
|
"Feb 11 16:49:26 letterman postfix/qmgr[8204]: C5217255D5: removed",
|
|
"Feb 11 16:49:27 letterman postfix/qmgr[8204]: D8EE625A28: removed",
|
|
"Feb 11 16:49:27 letterman postfix/qmgr[8204]: 9AD7C25A19: removed",
|
|
"Feb 11 16:49:27 letterman postfix/qmgr[8204]: D0EEE2596C: removed",
|
|
"Feb 11 16:49:27 letterman postfix/qmgr[8204]: DFE732172E: removed",
|
|
},
|
|
count: 31,
|
|
},
|
|
},
|
|
}
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
e := &PostfixExporter{
|
|
showqPath: tt.fields.showqPath,
|
|
journal: tt.fields.journal,
|
|
tailer: tt.fields.tailer,
|
|
cleanupProcesses: tt.fields.cleanupProcesses,
|
|
cleanupRejects: tt.fields.cleanupRejects,
|
|
cleanupNotAccepted: tt.fields.cleanupNotAccepted,
|
|
lmtpDelays: tt.fields.lmtpDelays,
|
|
pipeDelays: tt.fields.pipeDelays,
|
|
qmgrInsertsNrcpt: tt.fields.qmgrInsertsNrcpt,
|
|
qmgrInsertsSize: tt.fields.qmgrInsertsSize,
|
|
qmgrRemoves: tt.fields.qmgrRemoves,
|
|
smtpDelays: tt.fields.smtpDelays,
|
|
smtpTLSConnects: tt.fields.smtpTLSConnects,
|
|
smtpDeferreds: tt.fields.smtpDeferreds,
|
|
smtpdConnects: tt.fields.smtpdConnects,
|
|
smtpdDisconnects: tt.fields.smtpdDisconnects,
|
|
smtpdFCrDNSErrors: tt.fields.smtpdFCrDNSErrors,
|
|
smtpdLostConnections: tt.fields.smtpdLostConnections,
|
|
smtpdProcesses: tt.fields.smtpdProcesses,
|
|
smtpdRejects: tt.fields.smtpdRejects,
|
|
smtpdSASLAuthenticationFailures: tt.fields.smtpdSASLAuthenticationFailures,
|
|
smtpdTLSConnects: tt.fields.smtpdTLSConnects,
|
|
unsupportedLogEntries: tt.fields.unsupportedLogEntries,
|
|
}
|
|
counter := testCounter{}
|
|
e.qmgrRemoves = &counter
|
|
for _, line := range tt.args.line {
|
|
e.CollectFromLogLine(line)
|
|
}
|
|
assert.Equal(t, tt.args.count, counter.Count(), "Wrong number of lines counted")
|
|
if counter.Count() != tt.args.count {
|
|
t.Fatal("Counter wrong: ")
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
type testCounter struct {
|
|
count int
|
|
}
|
|
|
|
func (t *testCounter) setCount(count int) {
|
|
t.count = count
|
|
}
|
|
|
|
func (t *testCounter) Count() int {
|
|
return t.count
|
|
}
|
|
|
|
func (t *testCounter) Add(add float64) {
|
|
}
|
|
func (t *testCounter) Collect(c chan<- prometheus.Metric) {
|
|
}
|
|
func (t *testCounter) Describe(c chan<- *prometheus.Desc) {
|
|
}
|
|
func (t *testCounter) Desc() *prometheus.Desc {
|
|
return nil
|
|
}
|
|
func (t *testCounter) Inc() {
|
|
t.count++
|
|
}
|
|
func (t *testCounter) Write(x *io_prometheus_client.Metric) error {
|
|
return nil
|
|
}
|