Skip to content

Commit 1d44b78

Browse files
committed
Merge branch 'master' into godriver3081
2 parents a561125 + 00e355c commit 1d44b78

File tree

167 files changed

+10406
-7014
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

167 files changed

+10406
-7014
lines changed

.evergreen/config.yml

Lines changed: 46 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -2283,6 +2283,16 @@ axes:
22832283
variables:
22842284
GO_DIST: "/opt/golang/go1.20"
22852285

2286+
- id: serverless-type
2287+
display_name: "Serverless Type"
2288+
values:
2289+
- id: "original"
2290+
display_name: "Serverless"
2291+
- id: "proxy"
2292+
display_name: "Serverless Proxy"
2293+
variables:
2294+
VAULT_NAME: "serverless_next"
2295+
22862296
task_groups:
22872297
- name: serverless_task_group
22882298
setup_group_can_fail_task: true
@@ -2298,12 +2308,8 @@ task_groups:
22982308
shell: "bash"
22992309
script: |
23002310
${PREPARE_SHELL}
2301-
2302-
SERVERLESS_DRIVERS_GROUP=${SERVERLESS_DRIVERS_GROUP} \
2303-
SERVERLESS_API_PUBLIC_KEY=${SERVERLESS_API_PUBLIC_KEY} \
2304-
SERVERLESS_API_PRIVATE_KEY=${SERVERLESS_API_PRIVATE_KEY} \
2305-
LOADBALANCED=ON \
2306-
bash ${DRIVERS_TOOLS}/.evergreen/serverless/create-instance.sh
2311+
bash ${DRIVERS_TOOLS}/.evergreen/serverless/setup-secrets.sh ${VAULT_NAME}
2312+
bash ${DRIVERS_TOOLS}/.evergreen/serverless/create-instance.sh
23072313
- command: expansions.update
23082314
params:
23092315
file: serverless-expansion.yml
@@ -2313,30 +2319,6 @@ task_groups:
23132319
script: |
23142320
${PREPARE_SHELL}
23152321
2316-
if [ -z "${SERVERLESS_MONGODB_VERSION}" ]; then
2317-
echo "expected SERVERLESS_MONGODB_VERSION to be set"
2318-
exit 1
2319-
fi
2320-
2321-
# Download the enterprise server download for current platform to $MONGODB_BINARIES.
2322-
# This is required for tests that need mongocryptd.
2323-
# $MONGODB_BINARIES is added to the $PATH in fetch-source.
2324-
${PYTHON3_BINARY} $DRIVERS_TOOLS/.evergreen/mongodl.py \
2325-
--component archive \
2326-
--version ${SERVERLESS_MONGODB_VERSION} \
2327-
--edition enterprise \
2328-
--out $MONGODB_BINARIES \
2329-
--strip-path-components 2
2330-
2331-
# Download the crypt_shared dynamic library for the current platform.
2332-
${PYTHON3_BINARY} $DRIVERS_TOOLS/.evergreen/mongodl.py \
2333-
--component crypt_shared \
2334-
--version ${SERVERLESS_MONGODB_VERSION} \
2335-
--edition enterprise \
2336-
--out . \
2337-
--only "**/mongo_crypt_v1.*" \
2338-
--strip-path-components 1
2339-
23402322
# Find the crypt_shared library file in the current directory and set the CRYPT_SHARED_LIB_PATH to
23412323
# the path of that file. Only look for .so, .dll, or .dylib files to prevent matching any other
23422324
# downloaded files.
@@ -2363,12 +2345,7 @@ task_groups:
23632345
shell: "bash"
23642346
script: |
23652347
${PREPARE_SHELL}
2366-
2367-
SERVERLESS_DRIVERS_GROUP=${SERVERLESS_DRIVERS_GROUP} \
2368-
SERVERLESS_API_PUBLIC_KEY=${SERVERLESS_API_PUBLIC_KEY} \
2369-
SERVERLESS_API_PRIVATE_KEY=${SERVERLESS_API_PRIVATE_KEY} \
2370-
SERVERLESS_INSTANCE_NAME=${SERVERLESS_INSTANCE_NAME} \
2371-
bash ${DRIVERS_TOOLS}/.evergreen/serverless/delete-instance.sh
2348+
bash ${DRIVERS_TOOLS}/.evergreen/serverless/delete-instance.sh
23722349
- func: handle-test-artifacts
23732350
- func: cleanup
23742351
tasks:
@@ -2604,7 +2581,13 @@ buildvariants:
26042581

26052582
- matrix_name: "tests-42-plus-zlib-zstd-support"
26062583
tags: ["pullrequest"]
2607-
matrix_spec: { version: ["4.2", "4.4", "5.0", "6.0", "7.0", "latest"], os-ssl-40: ["windows-64-go-1-20", "rhel87-64-go-1-20"] }
2584+
matrix_spec: { version: ["4.2", "4.4", "5.0", "6.0", "7.0"], os-ssl-40: ["windows-64-go-1-20", "rhel87-64-go-1-20"] }
2585+
display_name: "${version} ${os-ssl-40}"
2586+
tasks:
2587+
- name: ".test !.enterprise-auth !.snappy"
2588+
2589+
- matrix_name: "tests-latest-zlib-zstd-support"
2590+
matrix_spec: { version: ["latest"], os-ssl-40: ["windows-64-go-1-20", "rhel87-64-go-1-20"] }
26082591
display_name: "${version} ${os-ssl-40}"
26092592
tasks:
26102593
- name: ".test !.enterprise-auth !.snappy"
@@ -2646,40 +2629,58 @@ buildvariants:
26462629

26472630
- matrix_name: "race-test"
26482631
tags: ["pullrequest"]
2649-
matrix_spec: { version: ["latest"], os-ssl-40: ["rhel87-64-go-1-20"] }
2632+
matrix_spec: { version: ["7.0"], os-ssl-40: ["rhel87-64-go-1-20"] }
26502633
display_name: "Race Detector Test"
26512634
tasks:
26522635
- name: ".race"
26532636

26542637
- matrix_name: "versioned-api-test"
26552638
tags: ["pullrequest"]
2656-
matrix_spec: { version: ["5.0", "6.0", "7.0", "latest"], os-ssl-40: ["windows-64-go-1-20", "rhel87-64-go-1-20"] }
2639+
matrix_spec: { version: ["5.0", "6.0", "7.0"], os-ssl-40: ["windows-64-go-1-20", "rhel87-64-go-1-20"] }
2640+
display_name: "API Version ${version} ${os-ssl-40}"
2641+
tasks:
2642+
- name: ".versioned-api"
2643+
2644+
- matrix_name: "versioned-api-latest-test"
2645+
matrix_spec: { version: ["latest"], os-ssl-40: ["windows-64-go-1-20", "rhel87-64-go-1-20"] }
26572646
display_name: "API Version ${version} ${os-ssl-40}"
26582647
tasks:
26592648
- name: ".versioned-api"
26602649

26612650
- matrix_name: "kms-tls-test"
2662-
matrix_spec: { version: ["latest"], os-ssl-40: ["rhel87-64-go-1-20"] }
2651+
matrix_spec: { version: ["7.0"], os-ssl-40: ["rhel87-64-go-1-20"] }
26632652
display_name: "KMS TLS ${os-ssl-40}"
26642653
tasks:
26652654
- name: ".kms-tls"
26662655

26672656
- matrix_name: "load-balancer-test"
26682657
tags: ["pullrequest"]
2669-
matrix_spec: { version: ["5.0", "6.0", "7.0", "latest", "rapid"], os-ssl-40: ["rhel87-64-go-1-20"] }
2658+
matrix_spec: { version: ["5.0", "6.0", "7.0"], os-ssl-40: ["rhel87-64-go-1-20"] }
2659+
display_name: "Load Balancer Support ${version} ${os-ssl-40}"
2660+
tasks:
2661+
- name: ".load-balancer"
2662+
2663+
- matrix_name: "load-balancer-latest-test"
2664+
matrix_spec: { version: ["latest"], os-ssl-40: ["rhel87-64-go-1-20"] }
26702665
display_name: "Load Balancer Support ${version} ${os-ssl-40}"
26712666
tasks:
26722667
- name: ".load-balancer"
26732668

26742669
- matrix_name: "serverless"
26752670
tags: ["pullrequest"]
2676-
matrix_spec: { os-serverless: "*" }
2677-
display_name: "Serverless ${os-serverless}"
2671+
matrix_spec: { os-serverless: "*", serverless-type: "original" }
2672+
display_name: "${serverless-type} ${os-serverless}"
2673+
tasks:
2674+
- "serverless_task_group"
2675+
2676+
- matrix_name: "serverless-proxy"
2677+
matrix_spec: { os-serverless: "*", serverless-type: "proxy" }
2678+
display_name: "${serverless-type} ${os-serverless}"
26782679
tasks:
26792680
- "serverless_task_group"
26802681

26812682
- matrix_name: "kms-kmip-test"
2682-
matrix_spec: { version: ["latest"], os-ssl-40: ["rhel87-64-go-1-20"] }
2683+
matrix_spec: { version: ["7.0"], os-ssl-40: ["rhel87-64-go-1-20"] }
26832684
display_name: "KMS KMIP ${os-ssl-40}"
26842685
tasks:
26852686
- name: ".kms-kmip"
@@ -2692,7 +2693,7 @@ buildvariants:
26922693
batchtime: 1440 # Run at most once per 24 hours.
26932694

26942695
- matrix_name: "faas-test"
2695-
matrix_spec: { version: ["latest"], os-faas-80: ["rhel87-large-go-1-20"] }
2696+
matrix_spec: { version: ["7.0"], os-faas-80: ["rhel87-large-go-1-20"] }
26962697
display_name: "FaaS ${version} ${os-faas-80}"
26972698
tasks:
26982699
- test-aws-lambda-task-group

.pre-commit-config.yaml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,12 @@ repos:
4444
exclude: ^(vendor/|internal/benchmark/operation_test.go)
4545
exclude_types: [json,yaml,pem]
4646

47+
- repo: https://github.com/tcort/markdown-link-check
48+
rev: v3.11.2
49+
hooks:
50+
- id: markdown-link-check
51+
exclude: ^(vendor)
52+
4753
- repo: https://github.com/golangci/golangci-lint
4854
rev: v1.55.1
4955
hooks:

bson/bson_test.go

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import (
1818
"github.com/google/go-cmp/cmp"
1919
"go.mongodb.org/mongo-driver/bson/bsoncodec"
2020
"go.mongodb.org/mongo-driver/bson/bsonoptions"
21+
"go.mongodb.org/mongo-driver/bson/bsonrw"
2122
"go.mongodb.org/mongo-driver/bson/bsontype"
2223
"go.mongodb.org/mongo-driver/internal/assert"
2324
"go.mongodb.org/mongo-driver/x/bsonx/bsoncore"
@@ -180,10 +181,16 @@ func TestMapCodec(t *testing.T) {
180181
for _, tc := range testCases {
181182
t.Run(tc.name, func(t *testing.T) {
182183
mapCodec := bsoncodec.NewMapCodec(tc.opts)
183-
mapRegistry := NewRegistryBuilder().RegisterDefaultEncoder(reflect.Map, mapCodec).Build()
184-
val, err := MarshalWithRegistry(mapRegistry, mapObj)
185-
assert.Nil(t, err, "Marshal error: %v", err)
186-
assert.True(t, strings.Contains(string(val), tc.key), "expected result to contain %v, got: %v", tc.key, string(val))
184+
mapRegistry := NewRegistry()
185+
mapRegistry.RegisterKindEncoder(reflect.Map, mapCodec)
186+
buf := new(bytes.Buffer)
187+
vw := bsonrw.NewValueWriter(buf)
188+
enc := NewEncoder(vw)
189+
enc.SetRegistry(mapRegistry)
190+
err := enc.Encode(mapObj)
191+
assert.Nil(t, err, "Encode error: %v", err)
192+
str := buf.String()
193+
assert.True(t, strings.Contains(str, tc.key), "expected result to contain %v, got: %v", tc.key, str)
187194
})
188195
}
189196
})

bson/bsoncodec/default_value_decoders_test.go

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -2427,7 +2427,7 @@ func TestDefaultValueDecoders(t *testing.T) {
24272427
buildDocument(bsoncore.AppendNullElement(nil, "bar")),
24282428
),
24292429
)
2430-
dvr := bsonrw.NewBSONDocumentReader(b)
2430+
dvr := bsonrw.NewValueReader(b)
24312431
dr, err := dvr.ReadDocument()
24322432
noerr(t, err)
24332433
_, vr, err := dr.ReadElement()
@@ -2488,7 +2488,7 @@ func TestDefaultValueDecoders(t *testing.T) {
24882488
noerr(t, err)
24892489
doc, err = bsoncore.AppendDocumentEnd(doc, idx)
24902490
noerr(t, err)
2491-
dvr := bsonrw.NewBSONDocumentReader(doc)
2491+
dvr := bsonrw.NewValueReader(doc)
24922492
noerr(t, err)
24932493
dr, err := dvr.ReadDocument()
24942494
noerr(t, err)
@@ -3132,7 +3132,7 @@ func TestDefaultValueDecoders(t *testing.T) {
31323132
t.Run("Decode", func(t *testing.T) {
31333133
for _, tc := range testCases {
31343134
t.Run(tc.name, func(t *testing.T) {
3135-
vr := bsonrw.NewBSONDocumentReader(tc.b)
3135+
vr := bsonrw.NewValueReader(tc.b)
31363136
reg := buildDefaultRegistry()
31373137
vtype := reflect.TypeOf(tc.value)
31383138
dec, err := reg.LookupDecoder(vtype)
@@ -3181,7 +3181,7 @@ func TestDefaultValueDecoders(t *testing.T) {
31813181

31823182
for _, tc := range testCases {
31833183
t.Run(tc.name, func(t *testing.T) {
3184-
vr := bsonrw.NewBSONDocumentReader(tc.b)
3184+
vr := bsonrw.NewValueReader(tc.b)
31853185
reg := buildDefaultRegistry()
31863186
vtype := reflect.TypeOf(tc.value)
31873187
dec, err := reg.LookupDecoder(vtype)
@@ -3403,7 +3403,7 @@ func TestDefaultValueDecoders(t *testing.T) {
34033403
})
34043404
t.Run("top level document", func(t *testing.T) {
34053405
data := bsoncore.BuildDocument(nil, bsoncore.AppendDoubleElement(nil, "pi", 3.14159))
3406-
vr := bsonrw.NewBSONDocumentReader(data)
3406+
vr := bsonrw.NewValueReader(data)
34073407
want := primitive.D{{"pi", 3.14159}}
34083408
var got interface{}
34093409
val := reflect.ValueOf(&got).Elem()
@@ -3451,7 +3451,7 @@ func TestDefaultValueDecoders(t *testing.T) {
34513451
}
34523452
for _, tc := range testCases {
34533453
var got interface{}
3454-
vr := bsonrw.NewBSONDocumentReader(doc)
3454+
vr := bsonrw.NewValueReader(doc)
34553455
val := reflect.ValueOf(&got).Elem()
34563456

34573457
err := defaultEmptyInterfaceCodec.DecodeValue(DecodeContext{Registry: tc.registry}, vr, val)
@@ -3487,7 +3487,7 @@ func TestDefaultValueDecoders(t *testing.T) {
34873487
}
34883488

34893489
var got primitive.D
3490-
vr := bsonrw.NewBSONDocumentReader(doc)
3490+
vr := bsonrw.NewValueReader(doc)
34913491
val := reflect.ValueOf(&got).Elem()
34923492
err := defaultSliceCodec.DecodeValue(DecodeContext{Registry: reg}, vr, val)
34933493
noerr(t, err)
@@ -3577,7 +3577,7 @@ func TestDefaultValueDecoders(t *testing.T) {
35773577
// DecodeValue error when decoding into a primitive.D.
35783578
"primitive.D slice",
35793579
primitive.D{},
3580-
bsonrw.NewBSONDocumentReader(docBytes),
3580+
bsonrw.NewValueReader(docBytes),
35813581
emptyInterfaceErrorRegistry,
35823582
defaultSliceCodec,
35833583
docEmptyInterfaceErr,
@@ -3600,7 +3600,7 @@ func TestDefaultValueDecoders(t *testing.T) {
36003600
// the decodeD helper function.
36013601
"primitive.D array",
36023602
[1]primitive.E{},
3603-
bsonrw.NewBSONDocumentReader(docBytes),
3603+
bsonrw.NewValueReader(docBytes),
36043604
emptyInterfaceErrorRegistry,
36053605
ValueDecoderFunc(dvd.ArrayDecodeValue),
36063606
docEmptyInterfaceErr,
@@ -3623,7 +3623,7 @@ func TestDefaultValueDecoders(t *testing.T) {
36233623
// DecodeValue error when decoding into a map.
36243624
"map",
36253625
map[string]interface{}{},
3626-
bsonrw.NewBSONDocumentReader(docBytes),
3626+
bsonrw.NewValueReader(docBytes),
36273627
emptyInterfaceErrorRegistry,
36283628
defaultMapCodec,
36293629
docEmptyInterfaceErr,
@@ -3632,7 +3632,7 @@ func TestDefaultValueDecoders(t *testing.T) {
36323632
// DecodeValue error when decoding into a struct.
36333633
"struct - DecodeValue error",
36343634
emptyInterfaceStruct{},
3635-
bsonrw.NewBSONDocumentReader(docBytes),
3635+
bsonrw.NewValueReader(docBytes),
36363636
emptyInterfaceErrorRegistry,
36373637
defaultTestStructCodec,
36383638
emptyInterfaceStructErr,
@@ -3643,15 +3643,15 @@ func TestDefaultValueDecoders(t *testing.T) {
36433643
// no decoder for strings.
36443644
"struct - no decoder found",
36453645
stringStruct{},
3646-
bsonrw.NewBSONDocumentReader(docBytes),
3646+
bsonrw.NewValueReader(docBytes),
36473647
NewRegistryBuilder().Build(),
36483648
defaultTestStructCodec,
36493649
stringStructErr,
36503650
},
36513651
{
36523652
"deeply nested struct",
36533653
outer{},
3654-
bsonrw.NewBSONDocumentReader(outerDoc),
3654+
bsonrw.NewValueReader(outerDoc),
36553655
nestedRegistry,
36563656
defaultTestStructCodec,
36573657
nestedErr,
@@ -3681,7 +3681,7 @@ func TestDefaultValueDecoders(t *testing.T) {
36813681
type outer struct{ Foo inner }
36823682

36833683
dc := DecodeContext{Registry: buildDefaultRegistry()}
3684-
vr := bsonrw.NewBSONDocumentReader(outerBytes)
3684+
vr := bsonrw.NewValueReader(outerBytes)
36853685
val := reflect.New(reflect.TypeOf(outer{})).Elem()
36863686
err := defaultTestStructCodec.DecodeValue(dc, vr, val)
36873687

@@ -3714,7 +3714,7 @@ func TestDefaultValueDecoders(t *testing.T) {
37143714
reg := rb.RegisterTypeMapEntry(bsontype.Boolean, reflect.TypeOf(mybool(true))).Build()
37153715

37163716
dc := DecodeContext{Registry: reg}
3717-
vr := bsonrw.NewBSONDocumentReader(docBytes)
3717+
vr := bsonrw.NewValueReader(docBytes)
37183718
val := reflect.New(tD).Elem()
37193719
err := defaultValueDecoders.DDecodeValue(dc, vr, val)
37203720
assert.Nil(t, err, "DDecodeValue error: %v", err)
@@ -3733,7 +3733,7 @@ func TestDefaultValueDecoders(t *testing.T) {
37333733

37343734
type myMap map[string]mybool
37353735
dc := DecodeContext{Registry: buildDefaultRegistry()}
3736-
vr := bsonrw.NewBSONDocumentReader(docBytes)
3736+
vr := bsonrw.NewValueReader(docBytes)
37373737
val := reflect.New(reflect.TypeOf(myMap{})).Elem()
37383738
err := defaultMapCodec.DecodeValue(dc, vr, val)
37393739
assert.Nil(t, err, "DecodeValue error: %v", err)

bson/bsoncodec/default_value_encoders_test.go

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1770,8 +1770,7 @@ func TestDefaultValueEncoders(t *testing.T) {
17701770
for _, tc := range testCases {
17711771
t.Run(tc.name, func(t *testing.T) {
17721772
b := make(bsonrw.SliceWriter, 0, 512)
1773-
vw, err := bsonrw.NewBSONValueWriter(&b)
1774-
noerr(t, err)
1773+
vw := bsonrw.NewValueWriter(&b)
17751774
reg := buildDefaultRegistry()
17761775
enc, err := reg.LookupEncoder(reflect.TypeOf(tc.value))
17771776
noerr(t, err)
@@ -1821,8 +1820,7 @@ func TestDefaultValueEncoders(t *testing.T) {
18211820
for _, tc := range testCases {
18221821
t.Run(tc.name, func(t *testing.T) {
18231822
b := make(bsonrw.SliceWriter, 0, 512)
1824-
vw, err := bsonrw.NewBSONValueWriter(&b)
1825-
noerr(t, err)
1823+
vw := bsonrw.NewValueWriter(&b)
18261824
reg := buildDefaultRegistry()
18271825
enc, err := reg.LookupEncoder(reflect.TypeOf(tc.value))
18281826
noerr(t, err)

0 commit comments

Comments
 (0)