Skip to content

Commit f9cc0b8

Browse files
committed
Revert "refactor build infio"
This reverts commit 2304fca.
1 parent 524c7f1 commit f9cc0b8

File tree

8 files changed

+59
-191
lines changed

8 files changed

+59
-191
lines changed

.github/workflows/all.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,3 +70,4 @@ jobs:
7070
MVTEST_SRC: ${{matrix.topology.srcConnStr}}
7171
MVTEST_DST: ${{matrix.topology.dstConnStr}}
7272
MVTEST_META: mongodb://localhost:27040
73+
MVTEST_TOPOLOGY: ${{matrix.topology.name}}

internal/partitions/partition.go

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,7 @@ func (p *Partition) FindCmd(
137137
// (e.g. use the partitions on the source to read the destination for verification)
138138
// If the passed-in buildinfo indicates a mongodb version < 5.0, type bracketing is not used.
139139
// filterAndPredicates is a slice of filter criteria that's used to construct the "filter" field in the find option.
140-
func (p *Partition) GetFindOptions(buildInfo *util.BuildInfo, filterAndPredicates bson.A) bson.D {
140+
func (p *Partition) GetFindOptions(buildInfo *bson.M, filterAndPredicates bson.A) bson.D {
141141
if p == nil {
142142
if len(filterAndPredicates) > 0 {
143143
return bson.D{{"filter", bson.D{{"$and", filterAndPredicates}}}}
@@ -160,9 +160,16 @@ func (p *Partition) GetFindOptions(buildInfo *util.BuildInfo, filterAndPredicate
160160
allowTypeBracketing := false
161161
if buildInfo != nil {
162162
allowTypeBracketing = true
163-
164-
if buildInfo.VersionArray != nil {
165-
allowTypeBracketing = buildInfo.VersionArray[0] < 5
163+
versionArray, ok := (*buildInfo)["versionArray"].(bson.A)
164+
//bson values are int32 or int64, never int.
165+
if ok {
166+
majorVersion, ok := versionArray[0].(int32)
167+
if ok {
168+
allowTypeBracketing = majorVersion < 5
169+
} else {
170+
majorVersion64, _ := versionArray[0].(int64)
171+
allowTypeBracketing = majorVersion64 < 5
172+
}
166173
}
167174
}
168175
if !allowTypeBracketing {

internal/partitions/partition_test.go

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -77,38 +77,43 @@ func (suite *UnitTestSuite) TestVersioning() {
7777
filter := getFilterFromFindOptions(findOptions)
7878
suite.Require().Equal(expectedFilter, filter)
7979

80+
// 6.0 (int64)
81+
findOptions = partition.GetFindOptions(&bson.M{"versionArray": bson.A{int64(6), int64(0), int64(0), int64(0)}}, nil)
82+
filter = getFilterFromFindOptions(findOptions)
83+
suite.Require().Equal(expectedFilter, filter)
84+
8085
// 6.0
81-
findOptions = partition.GetFindOptions(&util.BuildInfo{VersionArray: []int{6, 0, 0}}, nil)
86+
findOptions = partition.GetFindOptions(&bson.M{"versionArray": bson.A{int32(6), int32(0), int32(0), int32(0)}}, nil)
8287
filter = getFilterFromFindOptions(findOptions)
8388
suite.Require().Equal(expectedFilter, filter)
8489

8590
// 5.3.0.9
86-
findOptions = partition.GetFindOptions(&util.BuildInfo{VersionArray: []int{5, 3, 0, 9}}, nil)
91+
findOptions = partition.GetFindOptions(&bson.M{"versionArray": bson.A{int32(5), int32(3), int32(0), int32(9)}}, nil)
8792
filter = getFilterFromFindOptions(findOptions)
8893
suite.Require().Equal(expectedFilter, filter)
8994

9095
// 7.1.3.5
91-
findOptions = partition.GetFindOptions(&util.BuildInfo{VersionArray: []int{7, 1, 3, 5}}, nil)
96+
findOptions = partition.GetFindOptions(&bson.M{"versionArray": bson.A{int32(7), int32(1), int32(3), int32(5)}}, nil)
9297
filter = getFilterFromFindOptions(findOptions)
9398
suite.Require().Equal(expectedFilter, filter)
9499

95100
// 4.4 (int64)
96-
findOptions = partition.GetFindOptions(&util.BuildInfo{VersionArray: []int{4, 4, 0, 0}}, nil)
101+
findOptions = partition.GetFindOptions(&bson.M{"versionArray": bson.A{int64(4), int64(4), int64(0), int64(0)}}, nil)
97102
filter = getFilterFromFindOptions(findOptions)
98103
suite.Require().Equal(expectedFilterWithTypeBracketing, filter)
99104

100105
// 4.4
101-
findOptions = partition.GetFindOptions(&util.BuildInfo{VersionArray: []int{4, 4, 0, 0}}, nil)
106+
findOptions = partition.GetFindOptions(&bson.M{"versionArray": bson.A{int32(4), int32(4), int32(0), int32(0)}}, nil)
102107
filter = getFilterFromFindOptions(findOptions)
103108
suite.Require().Equal(expectedFilterWithTypeBracketing, filter)
104109

105110
// 4.2
106-
findOptions = partition.GetFindOptions(&util.BuildInfo{VersionArray: []int{4, 2, 0, 0}}, nil)
111+
findOptions = partition.GetFindOptions(&bson.M{"versionArray": bson.A{int32(4), int32(2), int32(0), int32(0)}}, nil)
107112
filter = getFilterFromFindOptions(findOptions)
108113
suite.Require().Equal(expectedFilterWithTypeBracketing, filter)
109114

110115
// No version array -- assume old, require type bracketing.
111-
findOptions = partition.GetFindOptions(&util.BuildInfo{}, nil)
116+
findOptions = partition.GetFindOptions(&bson.M{"notVersionArray": bson.A{6, int32(0), int32(0), int32(0)}}, nil)
112117
filter = getFilterFromFindOptions(findOptions)
113118
suite.Require().Equal(expectedFilterWithTypeBracketing, filter)
114119
}

internal/util/buildinfo.go

Lines changed: 0 additions & 36 deletions
This file was deleted.

internal/verifier/integration_test_suite.go

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,11 @@ package verifier
22

33
import (
44
"context"
5+
"os"
56
"strings"
67

7-
"github.com/10gen/migration-verifier/internal/util"
88
mapset "github.com/deckarep/golang-set/v2"
99
"github.com/pkg/errors"
10-
"github.com/samber/lo"
1110
"github.com/stretchr/testify/suite"
1211
"go.mongodb.org/mongo-driver/bson"
1312
"go.mongodb.org/mongo-driver/mongo"
@@ -122,10 +121,19 @@ func (suite *IntegrationTestSuite) TearDownTest() {
122121
}
123122

124123
func (suite *IntegrationTestSuite) GetTopology() TestTopology {
125-
buildInfo, err := util.GetBuildInfo(suite.Context(), suite.srcMongoClient)
126-
suite.Require().NoError(err, "should read source's build info")
124+
rawTopology, found := os.LookupEnv(topologyEnvVar)
127125

128-
return lo.Ternary(buildInfo.IsSharded, TopologySharded, "")
126+
suite.Require().True(found, "Environment must contain %#q.", topologyEnvVar)
127+
128+
topology := TestTopology(rawTopology)
129+
130+
suite.Require().Contains(
131+
knownTopologies,
132+
topology,
133+
"%#q must be a known value.",
134+
)
135+
136+
return topology
129137
}
130138

131139
func (suite *IntegrationTestSuite) BuildVerifier() *Verifier {

internal/verifier/migration_verifier.go

Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@ import (
2121
"github.com/10gen/migration-verifier/internal/reportutils"
2222
"github.com/10gen/migration-verifier/internal/retry"
2323
"github.com/10gen/migration-verifier/internal/types"
24-
"github.com/10gen/migration-verifier/internal/util"
2524
"github.com/10gen/migration-verifier/internal/uuidutil"
2625
"github.com/olekukonko/tablewriter"
2726
"github.com/pkg/errors"
@@ -89,8 +88,8 @@ type Verifier struct {
8988
metaClient *mongo.Client
9089
srcClient *mongo.Client
9190
dstClient *mongo.Client
92-
srcBuildInfo *util.BuildInfo
93-
dstBuildInfo *util.BuildInfo
91+
srcBuildInfo *bson.M
92+
dstBuildInfo *bson.M
9493
numWorkers int
9594
failureDisplaySize int64
9695

@@ -277,33 +276,21 @@ func (verifier *Verifier) SetSrcURI(ctx context.Context, uri string) error {
277276
var err error
278277
verifier.srcClient, err = mongo.Connect(ctx, opts)
279278
if err != nil {
280-
return errors.Wrapf(err, "failed to connect to source %#q", uri)
279+
return errors.Wrapf(err, "failed to connect to %#q", uri)
281280
}
282-
283-
buildInfo, err := util.GetBuildInfo(ctx, verifier.srcClient)
284-
if err != nil {
285-
return errors.Wrap(err, "failed to read source build info")
286-
}
287-
288-
verifier.srcBuildInfo = &buildInfo
289-
return nil
281+
verifier.srcBuildInfo, err = getBuildInfo(ctx, verifier.srcClient)
282+
return err
290283
}
291284

292285
func (verifier *Verifier) SetDstURI(ctx context.Context, uri string) error {
293286
opts := verifier.getClientOpts(uri)
294287
var err error
295288
verifier.dstClient, err = mongo.Connect(ctx, opts)
296289
if err != nil {
297-
return errors.Wrapf(err, "failed to connect to destination %#q", uri)
298-
}
299-
300-
buildInfo, err := util.GetBuildInfo(ctx, verifier.dstClient)
301-
if err != nil {
302-
return errors.Wrap(err, "failed to read destination build info")
290+
return err
303291
}
304-
305-
verifier.dstBuildInfo = &buildInfo
306-
return nil
292+
verifier.dstBuildInfo, err = getBuildInfo(ctx, verifier.dstClient)
293+
return err
307294
}
308295

309296
func (verifier *Verifier) SetServerPort(port int) {
@@ -442,7 +429,7 @@ func (verifier *Verifier) maybeAppendGlobalFilterToPredicates(predicates bson.A)
442429
return append(predicates, verifier.globalFilter)
443430
}
444431

445-
func (verifier *Verifier) getDocumentsCursor(ctx context.Context, collection *mongo.Collection, buildInfo *util.BuildInfo,
432+
func (verifier *Verifier) getDocumentsCursor(ctx context.Context, collection *mongo.Collection, buildInfo *bson.M,
446433
startAtTs *primitive.Timestamp, task *VerificationTask) (*mongo.Cursor, error) {
447434
var findOptions bson.D
448435
runCommandOptions := options.RunCmd()
@@ -1415,3 +1402,16 @@ func (verifier *Verifier) getNamespaces(ctx context.Context, fieldName string) (
14151402
}
14161403
return namespaces, nil
14171404
}
1405+
1406+
func getBuildInfo(ctx context.Context, client *mongo.Client) (*bson.M, error) {
1407+
commandResult := client.Database("admin").RunCommand(ctx, bson.D{{"buildinfo", 1}})
1408+
if commandResult.Err() != nil {
1409+
return nil, commandResult.Err()
1410+
}
1411+
var buildInfoMap bson.M
1412+
err := commandResult.Decode(&buildInfoMap)
1413+
if err != nil {
1414+
return nil, err
1415+
}
1416+
return &buildInfoMap, nil
1417+
}

mbson/bson_raw.go

Lines changed: 0 additions & 29 deletions
This file was deleted.

mbson/unit_test.go

Lines changed: 0 additions & 88 deletions
This file was deleted.

0 commit comments

Comments
 (0)