Added a simple test and migrated to vgo
This commit is contained in:
parent
da5280083a
commit
851c00f29f
@ -1,5 +1,5 @@
|
|||||||
# Builder stage to
|
# Builder stage to
|
||||||
FROM golang:1.12 as builder
|
FROM golang:1.13 as builder
|
||||||
|
|
||||||
# Add the project in the image
|
# Add the project in the image
|
||||||
ADD . /go/src/github.com/kumina/postfix_exporter
|
ADD . /go/src/github.com/kumina/postfix_exporter
|
||||||
@ -11,7 +11,7 @@ RUN apt-get update -q && apt-get install -qy \
|
|||||||
libsystemd-dev
|
libsystemd-dev
|
||||||
|
|
||||||
# Get dependencies and build the static binary
|
# Get dependencies and build the static binary
|
||||||
RUN go get -d ./...
|
RUN go test
|
||||||
RUN go build -a -tags static_all
|
RUN go build -a -tags static_all
|
||||||
|
|
||||||
# Real image
|
# Real image
|
||||||
|
15
go.mod
Normal file
15
go.mod
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
module github.com/kumina/postfix_exporter
|
||||||
|
|
||||||
|
go 1.13
|
||||||
|
|
||||||
|
require (
|
||||||
|
github.com/alecthomas/kingpin v2.2.6+incompatible
|
||||||
|
github.com/coreos/go-systemd/v22 v22.0.0
|
||||||
|
github.com/fsnotify/fsnotify v1.4.7 // indirect
|
||||||
|
github.com/hpcloud/tail v1.0.0
|
||||||
|
github.com/prometheus/client_golang v1.4.1
|
||||||
|
github.com/prometheus/client_model v0.2.0
|
||||||
|
github.com/stretchr/testify v1.4.0
|
||||||
|
gopkg.in/fsnotify.v1 v1.4.7 // indirect
|
||||||
|
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 // indirect
|
||||||
|
)
|
161
postfix_exporter_test.go
Normal file
161
postfix_exporter_test.go
Normal file
@ -0,0 +1,161 @@
|
|||||||
|
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
|
||||||
|
}
|
@ -9,7 +9,7 @@ import (
|
|||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/alecthomas/kingpin"
|
"github.com/alecthomas/kingpin"
|
||||||
"github.com/coreos/go-systemd/sdjournal"
|
"github.com/coreos/go-systemd/v22/sdjournal"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Journal represents a lockable systemd journal.
|
// Journal represents a lockable systemd journal.
|
||||||
|
Loading…
Reference in New Issue
Block a user