Skip to content

Commit 38fa4f0

Browse files
committed
PMM-13477 fix tests.
1 parent a6a06a1 commit 38fa4f0

File tree

5 files changed

+23
-41
lines changed

5 files changed

+23
-41
lines changed

exporter/diagnostic_data_collector.go

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -112,13 +112,25 @@ func (d *diagnosticDataCollector) collect(ch chan<- prometheus.Metric) {
112112
err = errors.Wrapf(errUnexpectedDataType, "%T for data field", m["data"])
113113
logger.Errorf("cannot decode getDiagnosticData: %s", err)
114114
}
115-
if c, ok := m["common"].(bson.M); ok {
116-
m = c
117-
}
118115

119116
logger.Debug("getDiagnosticData result")
120117
debugResult(logger, m)
121118

119+
// MongoDB 8.0 splits the diagnostic data into multiple blocks, so we need to merge them
120+
if d.buildInfo.VersionArray[0] >= 8 {
121+
b := bson.M{}
122+
for _, mv := range m {
123+
block, ok := mv.(bson.M)
124+
if !ok {
125+
continue
126+
}
127+
for k, v := range block {
128+
b[k] = v
129+
}
130+
}
131+
m = b
132+
}
133+
122134
metrics = makeMetrics("", m, d.topologyInfo.baseLabels(), d.compatibleMode)
123135
metrics = append(metrics, locksMetrics(logger, m)...)
124136

exporter/exporter.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -239,7 +239,7 @@ func (e *Exporter) makeRegistry(ctx context.Context, client *mongo.Client, topol
239239
// replSetGetStatus is not supported through mongos.
240240
if e.opts.EnableReplicasetStatus && nodeType != typeMongos && requestOpts.EnableReplicasetStatus {
241241
rsgsc := newReplicationSetStatusCollector(ctx, client, e.opts.Logger,
242-
e.opts.CompatibleMode, topologyInfo, dbBuildInfo)
242+
e.opts.CompatibleMode, topologyInfo)
243243
registry.MustRegister(rsgsc)
244244
}
245245

exporter/exporter_test.go

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -27,12 +27,10 @@ import (
2727
"sync"
2828
"testing"
2929

30+
"github.com/percona/mongodb_exporter/internal/tu"
3031
"github.com/prometheus/client_golang/prometheus/testutil"
3132
"github.com/sirupsen/logrus"
3233
"github.com/stretchr/testify/assert"
33-
"github.com/stretchr/testify/require"
34-
35-
"github.com/percona/mongodb_exporter/internal/tu"
3634
)
3735

3836
// Use this for testing because labels like cluster ID are not constant in docker containers
@@ -187,10 +185,7 @@ func TestMongoS(t *testing.T) {
187185
assert.NoError(t, err)
188186

189187
e := New(exporterOpts)
190-
191-
version, err := retrieveMongoDBBuildInfo(ctx, client, exporterOpts.Logger.WithField("component", "test"))
192-
require.NoError(t, err)
193-
rsgsc := newReplicationSetStatusCollector(ctx, client, e.opts.Logger, e.opts.CompatibleMode, new(labelsGetterMock), version)
188+
rsgsc := newReplicationSetStatusCollector(ctx, client, e.opts.Logger, e.opts.CompatibleMode, new(labelsGetterMock))
194189

195190
r := e.makeRegistry(ctx, client, new(labelsGetterMock), *e.opts)
196191

exporter/replset_status_collector.go

Lines changed: 1 addition & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,6 @@ package exporter
1717

1818
import (
1919
"context"
20-
"strings"
21-
2220
"github.com/prometheus/client_golang/prometheus"
2321
"github.com/sirupsen/logrus"
2422
"go.mongodb.org/mongo-driver/bson"
@@ -36,19 +34,16 @@ type replSetGetStatusCollector struct {
3634

3735
compatibleMode bool
3836
topologyInfo labelsGetter
39-
40-
version buildInfo
4137
}
4238

4339
// newReplicationSetStatusCollector creates a collector for statistics on replication set.
44-
func newReplicationSetStatusCollector(ctx context.Context, client *mongo.Client, logger *logrus.Logger, compatible bool, topology labelsGetter, version buildInfo) *replSetGetStatusCollector {
40+
func newReplicationSetStatusCollector(ctx context.Context, client *mongo.Client, logger *logrus.Logger, compatible bool, topology labelsGetter) *replSetGetStatusCollector {
4541
return &replSetGetStatusCollector{
4642
ctx: ctx,
4743
base: newBaseCollector(client, logger.WithFields(logrus.Fields{"collector": "replset_status"})),
4844

4945
compatibleMode: compatible,
5046
topologyInfo: topology,
51-
version: version,
5247
}
5348
}
5449

@@ -88,19 +83,6 @@ func (d *replSetGetStatusCollector) collect(ch chan<- prometheus.Metric) {
8883
for _, metric := range makeMetrics("", m, d.topologyInfo.baseLabels(), d.compatibleMode) {
8984
ch <- metric
9085
}
91-
92-
if strings.HasPrefix(d.version.Version, "8.") {
93-
for _, metric := range makeMetrics("rs", m, d.topologyInfo.baseLabels(), d.compatibleMode) {
94-
ch <- metric
95-
}
96-
if d.compatibleMode {
97-
logger.Infof("collecting compatibility metrics for version %s", d.version.Version)
98-
metrics := replSetMetrics(m, logger)
99-
for _, metric := range metrics {
100-
ch <- metric
101-
}
102-
}
103-
}
10486
}
10587

10688
var _ prometheus.Collector = (*replSetGetStatusCollector)(nil)

exporter/replset_status_collector_test.go

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -21,12 +21,10 @@ import (
2121
"testing"
2222
"time"
2323

24+
"github.com/percona/mongodb_exporter/internal/tu"
2425
"github.com/prometheus/client_golang/prometheus/testutil"
2526
"github.com/sirupsen/logrus"
2627
"github.com/stretchr/testify/assert"
27-
"github.com/stretchr/testify/require"
28-
29-
"github.com/percona/mongodb_exporter/internal/tu"
3028
)
3129

3230
func TestReplsetStatusCollector(t *testing.T) {
@@ -37,9 +35,7 @@ func TestReplsetStatusCollector(t *testing.T) {
3735

3836
ti := labelsGetterMock{}
3937

40-
version, err := retrieveMongoDBBuildInfo(ctx, client, logrus.New().WithField("component", "test"))
41-
require.NoError(t, err)
42-
c := newReplicationSetStatusCollector(ctx, client, logrus.New(), false, ti, version)
38+
c := newReplicationSetStatusCollector(ctx, client, logrus.New(), false, ti)
4339

4440
// The last \n at the end of this string is important
4541
expected := strings.NewReader(`
@@ -57,7 +53,7 @@ func TestReplsetStatusCollector(t *testing.T) {
5753
"mongodb_myState",
5854
"mongodb_ok",
5955
}
60-
err = testutil.CollectAndCompare(c, expected, filter...)
56+
err := testutil.CollectAndCompare(c, expected, filter...)
6157
assert.NoError(t, err)
6258
}
6359

@@ -69,10 +65,7 @@ func TestReplsetStatusCollectorNoSharding(t *testing.T) {
6965

7066
ti := labelsGetterMock{}
7167

72-
version, err := retrieveMongoDBBuildInfo(ctx, client, logrus.New().WithField("component", "test"))
73-
require.NoError(t, err)
74-
75-
c := newReplicationSetStatusCollector(ctx, client, logrus.New(), false, ti, version)
68+
c := newReplicationSetStatusCollector(ctx, client, logrus.New(), false, ti)
7669

7770
// Replication set metrics should not be generated for unsharded server
7871
count := testutil.CollectAndCount(c)

0 commit comments

Comments
 (0)