Showing preview only (6,831K chars total). Download the full file or copy to clipboard to get everything.
Repository: mongodb/mongo-go-driver
Branch: master
Commit: 8fe7e71d20cb
Files: 745
Total size: 6.4 MB
Directory structure:
gitextract_b5ez4ucg/
├── .errcheck-excludes
├── .evergreen/
│ ├── config.yml
│ ├── krb5.config
│ ├── ocsp-requirements.txt
│ ├── run-mongodb-aws-ecs-test.sh
│ ├── run-task.sh
│ └── setup-system.sh
├── .github/
│ ├── dependabot.yml
│ ├── labeler.yml
│ ├── release.yml
│ └── workflows/
│ ├── check-labels.yml
│ ├── codeql.yml
│ ├── create-release-branch.yml
│ ├── labeler.yml
│ ├── merge-up.yml
│ ├── release.yml
│ ├── scorecard.yml
│ └── test.yml
├── .gitignore
├── .gitmodules
├── .golangci.yml
├── .pre-commit-config.yaml
├── Dockerfile
├── LICENSE
├── README.md
├── THIRD-PARTY-NOTICES
├── Taskfile.yml
├── bson/
│ ├── array_codec.go
│ ├── benchmark_test.go
│ ├── bson_binary_vector_spec_test.go
│ ├── bson_corpus_spec_test.go
│ ├── bson_test.go
│ ├── bsoncodec.go
│ ├── bsoncodec_test.go
│ ├── bsonrw_test.go
│ ├── buffered_byte_src.go
│ ├── buffered_byte_src_test.go
│ ├── byte_slice_codec.go
│ ├── codec_cache.go
│ ├── codec_cache_test.go
│ ├── cond_addr_codec.go
│ ├── cond_addr_codec_test.go
│ ├── copier.go
│ ├── copier_test.go
│ ├── decimal.go
│ ├── decimal_test.go
│ ├── decode_value_fuzz_test.go
│ ├── decoder.go
│ ├── decoder_example_test.go
│ ├── decoder_test.go
│ ├── default_value_decoders.go
│ ├── default_value_decoders_test.go
│ ├── default_value_encoders.go
│ ├── default_value_encoders_test.go
│ ├── doc.go
│ ├── empty_interface_codec.go
│ ├── encoder.go
│ ├── encoder_example_test.go
│ ├── encoder_test.go
│ ├── example_test.go
│ ├── extjson_parser.go
│ ├── extjson_parser_test.go
│ ├── extjson_prose_test.go
│ ├── extjson_reader.go
│ ├── extjson_reader_test.go
│ ├── extjson_tables.go
│ ├── extjson_wrappers.go
│ ├── extjson_writer.go
│ ├── extjson_writer_test.go
│ ├── fuzz_test.go
│ ├── json_scanner.go
│ ├── json_scanner_test.go
│ ├── map_codec.go
│ ├── marshal.go
│ ├── marshal_test.go
│ ├── marshal_value_cases_test.go
│ ├── marshal_value_test.go
│ ├── marshaling_cases_test.go
│ ├── mgocompat/
│ │ ├── doc.go
│ │ └── registry.go
│ ├── mgoregistry.go
│ ├── mgoregistry_test.go
│ ├── mode.go
│ ├── objectid.go
│ ├── objectid_test.go
│ ├── pointer_codec.go
│ ├── primitive.go
│ ├── primitive_codecs.go
│ ├── primitive_codecs_test.go
│ ├── raw.go
│ ├── raw_array.go
│ ├── raw_array_test.go
│ ├── raw_element.go
│ ├── raw_test.go
│ ├── raw_value.go
│ ├── raw_value_test.go
│ ├── reader.go
│ ├── registry.go
│ ├── registry_examples_test.go
│ ├── registry_test.go
│ ├── slice_codec.go
│ ├── streaming_byte_src.go
│ ├── string_codec.go
│ ├── struct_codec.go
│ ├── struct_codec_test.go
│ ├── struct_tag_parser.go
│ ├── struct_tag_parser_test.go
│ ├── testdata/
│ │ ├── fuzz/
│ │ │ └── FuzzDecode/
│ │ │ ├── 002ae7d43f636100116fede772a03d07726ed75c3c3b83da865fe9b718adf8ae
│ │ │ ├── 0de854041b0055ca1e5e6e54a7fb667ed38461db171af267665c21776f9a9ef4
│ │ │ ├── 718592474a0a3626039f3471449b9aa374c746754d4925fcfe4ba747e7101504
│ │ │ ├── 93c43e3c1cf35c19b7618a618d128cea0ce05cef0711fdd91e403fe3b2f45628
│ │ │ └── c3ffbb42eb85b743ede396f00b7706e6ad0529c32689c63ca663dae37d072627
│ │ └── lorem.txt
│ ├── time_codec.go
│ ├── time_codec_test.go
│ ├── truncation_test.go
│ ├── type_test.go
│ ├── types.go
│ ├── uint_codec.go
│ ├── unmarshal.go
│ ├── unmarshal_test.go
│ ├── unmarshal_value_test.go
│ ├── unmarshaling_cases_test.go
│ ├── value_reader.go
│ ├── value_reader_test.go
│ ├── value_reader_writer_test.go
│ ├── value_writer.go
│ ├── value_writer_test.go
│ ├── vector.go
│ └── writer.go
├── docs/
│ ├── CODEOWNERS
│ ├── CONTRIBUTING.md
│ ├── SECURITY.md
│ ├── common-issues.md
│ ├── migration-2.0.md
│ └── pull_request_template.md
├── etc/
│ ├── api_report.sh
│ ├── check_fmt.sh
│ ├── check_license.sh
│ ├── check_modules.sh
│ ├── cherry-picker.sh
│ ├── docker_entry.sh
│ ├── gen-ec-certs/
│ │ ├── client.ext
│ │ ├── empty.cnf
│ │ ├── gen-ec-certs.sh
│ │ └── server.ext
│ ├── generate_notices.pl
│ ├── golangci-lint.sh
│ ├── govulncheck.sh
│ ├── install-libmongocrypt.sh
│ ├── perf-pr-comment.sh
│ ├── pr-task.sh
│ ├── profile-test.sh
│ ├── run-awskms-test.sh
│ ├── run-azurekms-test.sh
│ ├── run-compile-check-test.sh
│ ├── run-fuzz.sh
│ ├── run-gcpkms-test.sh
│ ├── run-goleak-test.sh
│ ├── run-mongodb-aws-ecs-test.sh
│ ├── run-mongodb-aws-test.sh
│ ├── run-oidc-remote-test.sh
│ ├── run-oidc-test.sh
│ ├── run_docker.sh
│ ├── setup-encryption.sh
│ ├── setup-test.sh
│ └── update_spec_tests.sh
├── event/
│ ├── description.go
│ ├── doc.go
│ ├── examples_test.go
│ └── monitoring.go
├── examples/
│ ├── _example_customdns_test.go
│ ├── _example_overload_error_test.go
│ └── _logger/
│ ├── logrus/
│ │ ├── go.mod
│ │ ├── go.sum
│ │ └── main.go
│ ├── zap/
│ │ ├── go.mod
│ │ ├── go.sum
│ │ └── main.go
│ └── zerolog/
│ ├── go.mod
│ ├── go.sum
│ └── main.go
├── go.mod
├── go.sum
├── go.work
├── internal/
│ ├── assert/
│ │ ├── assertbson/
│ │ │ ├── assertbson.go
│ │ │ └── assertbson_test.go
│ │ ├── assertion_compare.go
│ │ ├── assertion_compare_can_convert.go
│ │ ├── assertion_compare_go1.17_test.go
│ │ ├── assertion_compare_legacy.go
│ │ ├── assertion_compare_test.go
│ │ ├── assertion_format.go
│ │ ├── assertion_mongo.go
│ │ ├── assertion_mongo_test.go
│ │ ├── assertions.go
│ │ ├── assertions_test.go
│ │ ├── difflib.go
│ │ └── difflib_test.go
│ ├── aws/
│ │ ├── awserr/
│ │ │ ├── error.go
│ │ │ └── types.go
│ │ ├── credentials/
│ │ │ ├── chain_provider.go
│ │ │ ├── chain_provider_test.go
│ │ │ ├── credentials.go
│ │ │ └── credentials_test.go
│ │ ├── signer/
│ │ │ └── v4/
│ │ │ ├── header_rules.go
│ │ │ ├── request.go
│ │ │ ├── uri_path.go
│ │ │ ├── v4.go
│ │ │ └── v4_test.go
│ │ └── types.go
│ ├── binaryutil/
│ │ ├── binaryutil.go
│ │ ├── binaryutil_test.go
│ │ └── doc.go
│ ├── bsoncoreutil/
│ │ ├── bsoncoreutil.go
│ │ └── bsoncoreutil_test.go
│ ├── bsonutil/
│ │ └── bsonutil.go
│ ├── cmd/
│ │ ├── benchmark/
│ │ │ ├── benchmark_test.go
│ │ │ ├── go.mod
│ │ │ └── go.sum
│ │ ├── build-oss-fuzz-corpus/
│ │ │ └── main.go
│ │ ├── faas/
│ │ │ └── awslambda/
│ │ │ ├── Makefile
│ │ │ ├── mongodb/
│ │ │ │ ├── bootstrap.go
│ │ │ │ ├── go.mod
│ │ │ │ └── go.sum
│ │ │ └── template.yaml
│ │ ├── parse-api-report/
│ │ │ └── main.go
│ │ ├── testatlas/
│ │ │ └── atlas_test.go
│ │ ├── testentauth/
│ │ │ └── main.go
│ │ └── testkms/
│ │ └── main.go
│ ├── codecutil/
│ │ ├── encoding.go
│ │ └── encoding_test.go
│ ├── credproviders/
│ │ ├── assume_role_provider.go
│ │ ├── ec2_provider.go
│ │ ├── ecs_provider.go
│ │ ├── env_provider.go
│ │ ├── imds_provider.go
│ │ └── static_provider.go
│ ├── csfle/
│ │ └── csfle.go
│ ├── csot/
│ │ ├── csot.go
│ │ └── csot_test.go
│ ├── decimal128/
│ │ └── decimal128.go
│ ├── docexamples/
│ │ ├── README
│ │ ├── examples.go
│ │ └── examples_test.go
│ ├── driverutil/
│ │ ├── description.go
│ │ ├── hello.go
│ │ ├── operation.go
│ │ └── operation_test.go
│ ├── errutil/
│ │ ├── join.go
│ │ ├── join_go1.19.go
│ │ ├── join_go1.20.go
│ │ └── join_test.go
│ ├── eventtest/
│ │ └── eventtest.go
│ ├── failpoint/
│ │ └── failpoint.go
│ ├── handshake/
│ │ └── handshake.go
│ ├── httputil/
│ │ ├── httputil.go
│ │ └── httputil_test.go
│ ├── integration/
│ │ ├── causal_consistency_test.go
│ │ ├── change_stream_test.go
│ │ ├── clam_prose_test.go
│ │ ├── client_options_test.go
│ │ ├── client_side_encryption_prose_test.go
│ │ ├── client_side_encryption_spec_test.go
│ │ ├── client_side_encryption_test.go
│ │ ├── client_test.go
│ │ ├── cmd_monitoring_helpers_test.go
│ │ ├── collection_test.go
│ │ ├── crud_helpers_test.go
│ │ ├── crud_prose_test.go
│ │ ├── csot_cse_prose_test.go
│ │ ├── csot_prose_test.go
│ │ ├── csot_test.go
│ │ ├── cursor_test.go
│ │ ├── database_test.go
│ │ ├── errors_test.go
│ │ ├── gridfs_test.go
│ │ ├── handshake_test.go
│ │ ├── index_view_test.go
│ │ ├── initial_dns_seedlist_discovery_test.go
│ │ ├── json_helpers_test.go
│ │ ├── load_balancer_prose_test.go
│ │ ├── log_helpers_test.go
│ │ ├── main.go
│ │ ├── main_test.go
│ │ ├── mock_find_test.go
│ │ ├── mongointernal_test.go
│ │ ├── mongos_pinning_test.go
│ │ ├── mtest/
│ │ │ ├── csfle_enabled.go
│ │ │ ├── csfle_not_enabled.go
│ │ │ ├── deployment_helpers.go
│ │ │ ├── doc.go
│ │ │ ├── global_state.go
│ │ │ ├── mongotest.go
│ │ │ ├── options.go
│ │ │ ├── proxy_capture.go
│ │ │ ├── proxy_dialer.go
│ │ │ ├── received_message.go
│ │ │ ├── sent_message.go
│ │ │ ├── setup.go
│ │ │ ├── setup_options.go
│ │ │ └── wiremessage_helpers.go
│ │ ├── primary_stepdown_test.go
│ │ ├── retryable_reads_prose_test.go
│ │ ├── retryable_writes_prose_test.go
│ │ ├── sdam_error_handling_test.go
│ │ ├── sdam_prose_test.go
│ │ ├── search_index_prose_test.go
│ │ ├── server_selection_prose_test.go
│ │ ├── sessions_mongocryptd_prose_test.go
│ │ ├── sessions_test.go
│ │ ├── unified/
│ │ │ ├── admin_helpers.go
│ │ │ ├── bsonutil.go
│ │ │ ├── bucket_options.go
│ │ │ ├── bulkwrite_helpers.go
│ │ │ ├── client_encryption_operation_execution.go
│ │ │ ├── client_entity.go
│ │ │ ├── client_operation_execution.go
│ │ │ ├── collection_data.go
│ │ │ ├── collection_operation_execution.go
│ │ │ ├── common_options.go
│ │ │ ├── context.go
│ │ │ ├── crud_helpers.go
│ │ │ ├── cursor_entity.go
│ │ │ ├── cursor_operation_execution.go
│ │ │ ├── database_operation_execution.go
│ │ │ ├── db_collection_options.go
│ │ │ ├── entity.go
│ │ │ ├── entity_test.go
│ │ │ ├── error.go
│ │ │ ├── event.go
│ │ │ ├── event_verification.go
│ │ │ ├── gridfs_bucket_operation_execution.go
│ │ │ ├── logger.go
│ │ │ ├── logger_verification.go
│ │ │ ├── main_test.go
│ │ │ ├── matches.go
│ │ │ ├── matches_test.go
│ │ │ ├── operation.go
│ │ │ ├── options.go
│ │ │ ├── result.go
│ │ │ ├── schema_version.go
│ │ │ ├── server_api_options.go
│ │ │ ├── session_operation_execution.go
│ │ │ ├── session_options.go
│ │ │ ├── testrunner_operation.go
│ │ │ ├── unified_spec_runner.go
│ │ │ └── unified_spec_test.go
│ │ ├── unified_runner_events_helper_test.go
│ │ ├── unified_runner_thread_helpers_test.go
│ │ └── unified_spec_test.go
│ ├── integtest/
│ │ └── integtest.go
│ ├── israce/
│ │ ├── norace.go
│ │ └── race.go
│ ├── logger/
│ │ ├── component.go
│ │ ├── component_test.go
│ │ ├── context.go
│ │ ├── context_test.go
│ │ ├── io_sink.go
│ │ ├── level.go
│ │ ├── logger.go
│ │ └── logger_test.go
│ ├── mongoutil/
│ │ ├── mongoutil.go
│ │ └── mongoutil_test.go
│ ├── optionsutil/
│ │ └── options.go
│ ├── ptrutil/
│ │ ├── int64.go
│ │ ├── int64_test.go
│ │ └── ptr.go
│ ├── rand/
│ │ ├── arith128_test.go
│ │ ├── bits.go
│ │ ├── example_test.go
│ │ ├── exp.go
│ │ ├── modulo_test.go
│ │ ├── normal.go
│ │ ├── race_test.go
│ │ ├── rand.go
│ │ ├── rand_test.go
│ │ ├── regress_test.go
│ │ └── rng.go
│ ├── randutil/
│ │ ├── randutil.go
│ │ └── randutil_test.go
│ ├── require/
│ │ └── require.go
│ ├── serverselector/
│ │ ├── server_selector.go
│ │ └── server_selector_test.go
│ ├── spectest/
│ │ ├── skip.go
│ │ └── spectest.go
│ ├── test/
│ │ ├── aws/
│ │ │ └── aws_test.go
│ │ ├── compilecheck/
│ │ │ ├── compile_check_test.go
│ │ │ ├── go.mod
│ │ │ └── go.sum
│ │ ├── goleak/
│ │ │ ├── go.mod
│ │ │ ├── go.sum
│ │ │ └── goleak_test.go
│ │ └── oidcauth/
│ │ └── oidcauth_test.go
│ ├── testutil/
│ │ └── reflect.go
│ └── uuid/
│ ├── uuid.go
│ └── uuid_test.go
├── mongo/
│ ├── address/
│ │ ├── addr.go
│ │ └── addr_test.go
│ ├── background_context.go
│ ├── background_context_test.go
│ ├── batch_cursor.go
│ ├── bson_helpers_test.go
│ ├── bulk_write.go
│ ├── bulk_write_models.go
│ ├── change_stream.go
│ ├── change_stream_deployment.go
│ ├── change_stream_test.go
│ ├── client.go
│ ├── client_bulk_write.go
│ ├── client_bulk_write_models.go
│ ├── client_bulk_write_test.go
│ ├── client_encryption.go
│ ├── client_encryption_test.go
│ ├── client_examples_test.go
│ ├── client_side_encryption_examples_test.go
│ ├── client_test.go
│ ├── collection.go
│ ├── collection_test.go
│ ├── crud_examples_test.go
│ ├── crypt_retrievers.go
│ ├── cursor.go
│ ├── cursor_test.go
│ ├── database.go
│ ├── database_test.go
│ ├── doc.go
│ ├── errors.go
│ ├── errors_test.go
│ ├── gridfs_bucket.go
│ ├── gridfs_bucket_test.go
│ ├── gridfs_download_stream.go
│ ├── gridfs_examples_test.go
│ ├── gridfs_test.go
│ ├── gridfs_upload_stream.go
│ ├── index_view.go
│ ├── insert.go
│ ├── mongo.go
│ ├── mongo_test.go
│ ├── mongocryptd.go
│ ├── mongointernal.go
│ ├── ocsp_test.go
│ ├── options/
│ │ ├── aggregateoptions.go
│ │ ├── autoencryptionoptions.go
│ │ ├── bulkwriteoptions.go
│ │ ├── changestreamoptions.go
│ │ ├── clientbulkwriteoptions.go
│ │ ├── clientencryptionoptions.go
│ │ ├── clientoptions.go
│ │ ├── clientoptions_test.go
│ │ ├── collectionoptions.go
│ │ ├── countoptions.go
│ │ ├── createcollectionoptions.go
│ │ ├── datakeyoptions.go
│ │ ├── dboptions.go
│ │ ├── deleteoptions.go
│ │ ├── distinctoptions.go
│ │ ├── doc.go
│ │ ├── dropcollectionoptions.go
│ │ ├── encryptoptions.go
│ │ ├── estimatedcountoptions.go
│ │ ├── example_test.go
│ │ ├── findoptions.go
│ │ ├── gridfsoptions.go
│ │ ├── indexoptions.go
│ │ ├── insertoptions.go
│ │ ├── listcollectionsoptions.go
│ │ ├── listdatabasesoptions.go
│ │ ├── lister.go
│ │ ├── loggeroptions.go
│ │ ├── mongooptions.go
│ │ ├── replaceoptions.go
│ │ ├── rewrapdatakeyoptions.go
│ │ ├── runcmdoptions.go
│ │ ├── searchindexoptions.go
│ │ ├── serverapioptions.go
│ │ ├── sessionoptions.go
│ │ ├── testdata/
│ │ │ ├── ca-key.pem
│ │ │ ├── ca-with-intermediates-first.pem
│ │ │ ├── ca-with-intermediates-second.pem
│ │ │ ├── ca-with-intermediates-third.pem
│ │ │ ├── ca-with-intermediates.pem
│ │ │ ├── ca.pem
│ │ │ ├── cert.pem
│ │ │ ├── certificate.pem
│ │ │ ├── csr.json
│ │ │ ├── empty-ca.pem
│ │ │ ├── key.pem
│ │ │ ├── malformed-ca.pem
│ │ │ ├── nopass/
│ │ │ │ ├── cert.pem
│ │ │ │ ├── certificate.pem
│ │ │ │ └── key.pem
│ │ │ └── one-pk-multiple-certs.pem
│ │ ├── transactionoptions.go
│ │ └── updateoptions.go
│ ├── read_write_concern_spec_test.go
│ ├── readconcern/
│ │ └── readconcern.go
│ ├── readpref/
│ │ ├── mode.go
│ │ ├── mode_test.go
│ │ ├── options.go
│ │ ├── options_example_test.go
│ │ ├── readpref.go
│ │ └── readpref_test.go
│ ├── results.go
│ ├── search_index_view.go
│ ├── session.go
│ ├── single_result.go
│ ├── single_result_test.go
│ ├── with_transactions_test.go
│ └── writeconcern/
│ ├── writeconcern.go
│ ├── writeconcern_example_test.go
│ └── writeconcern_test.go
├── sbom.json
├── tag/
│ ├── tag.go
│ └── tag_test.go
├── testdata/
│ ├── client-side-encryption-prose/
│ │ ├── change-streams-test.json
│ │ ├── corpus-encrypted.json
│ │ ├── corpus-key-aws.json
│ │ ├── corpus-key-azure.json
│ │ ├── corpus-key-gcp.json
│ │ ├── corpus-key-kmip.json
│ │ ├── corpus-key-local.json
│ │ ├── corpus-schema.json
│ │ ├── corpus.json
│ │ ├── encrypted-fields.json
│ │ ├── encryptedFields-prefix-suffix.json
│ │ ├── external-key.json
│ │ ├── external-schema.json
│ │ ├── key1-document.json
│ │ ├── limits-doc.json
│ │ ├── limits-key.json
│ │ ├── limits-schema.json
│ │ ├── range-encryptedFields-Date.json
│ │ ├── range-encryptedFields-DecimalNoPrecision.json
│ │ ├── range-encryptedFields-DecimalPrecision.json
│ │ ├── range-encryptedFields-DoubleNoPrecision.json
│ │ ├── range-encryptedFields-DoublePrecision.json
│ │ ├── range-encryptedFields-Int.json
│ │ └── range-encryptedFields-Long.json
│ ├── kmip-certs/
│ │ ├── ca-ec.pem
│ │ ├── client-ec.pem
│ │ └── server-ec.pem
│ └── mongocrypt/
│ ├── collection-info.json
│ ├── command-reply.json
│ ├── command.json
│ ├── encrypted-command-reply.json
│ ├── encrypted-command.json
│ ├── encrypted-value.json
│ ├── json-schema.json
│ ├── key-document.json
│ ├── key-filter-keyAltName.json
│ ├── key-filter.json
│ ├── kms-reply.txt
│ ├── list-collections-filter.json
│ ├── local-key-document.json
│ ├── mongocryptd-command-local.json
│ ├── mongocryptd-command-remote.json
│ └── mongocryptd-reply.json
├── version/
│ └── version.go
└── x/
├── README.md
├── bsonx/
│ └── bsoncore/
│ ├── array.go
│ ├── array_test.go
│ ├── bson_arraybuilder.go
│ ├── bson_arraybuilder_test.go
│ ├── bson_documentbuilder.go
│ ├── bson_documentbuilder_test.go
│ ├── bsoncore.go
│ ├── bsoncore_test.go
│ ├── doc.go
│ ├── document.go
│ ├── document_test.go
│ ├── element.go
│ ├── element_test.go
│ ├── iterator.go
│ ├── iterator_test.go
│ ├── tables.go
│ ├── type.go
│ ├── value.go
│ └── value_test.go
└── mongo/
└── driver/
├── auth/
│ ├── auth.go
│ ├── auth_spec_test.go
│ ├── auth_test.go
│ ├── aws_conv.go
│ ├── conversation.go
│ ├── cred.go
│ ├── creds/
│ │ ├── awscreds.go
│ │ ├── azurecreds.go
│ │ ├── credscaching_test.go
│ │ ├── doc.go
│ │ └── gcpcreds.go
│ ├── default.go
│ ├── doc.go
│ ├── gssapi.go
│ ├── gssapi_not_enabled.go
│ ├── gssapi_not_supported.go
│ ├── gssapi_test.go
│ ├── internal/
│ │ └── gssapi/
│ │ ├── gss.go
│ │ ├── gss_wrapper.c
│ │ ├── gss_wrapper.h
│ │ ├── sspi.go
│ │ ├── sspi_wrapper.c
│ │ └── sspi_wrapper.h
│ ├── mongodbaws.go
│ ├── mongodbaws_test.go
│ ├── oidc.go
│ ├── oidc_test.go
│ ├── plain.go
│ ├── plain_test.go
│ ├── sasl.go
│ ├── scram.go
│ ├── scram_test.go
│ ├── speculative_scram_test.go
│ ├── speculative_x509_test.go
│ ├── util.go
│ └── x509.go
├── batch_cursor.go
├── batch_cursor_test.go
├── batches.go
├── batches_test.go
├── command_monitoring_test.go
├── compression.go
├── compression_test.go
├── connstring/
│ ├── connstring.go
│ ├── connstring_spec_test.go
│ ├── connstring_test.go
│ └── initial_dns_seedlist_discovery_prose_test.go
├── crypt.go
├── description/
│ ├── server.go
│ └── topology.go
├── dns/
│ └── dns.go
├── driver.go
├── drivertest/
│ ├── channel_conn.go
│ ├── channel_netconn.go
│ ├── doc.go
│ ├── opmsg_deployment.go
│ └── opmsg_deployment_test.go
├── errors.go
├── integration/
│ ├── aggregate_test.go
│ ├── compressor_test.go
│ ├── doc.go
│ ├── integration.go
│ ├── main_test.go
│ └── scram_test.go
├── legacy.go
├── mnet/
│ └── connection.go
├── mongocrypt/
│ ├── binary.go
│ ├── binary_test.go
│ ├── errors.go
│ ├── errors_not_enabled.go
│ ├── mongocrypt.go
│ ├── mongocrypt_context.go
│ ├── mongocrypt_context_not_enabled.go
│ ├── mongocrypt_kms_context.go
│ ├── mongocrypt_kms_context_not_enabled.go
│ ├── mongocrypt_not_enabled.go
│ ├── mongocrypt_test.go
│ ├── options/
│ │ ├── doc.go
│ │ ├── mongocrypt_context_options.go
│ │ └── mongocrypt_options.go
│ └── state.go
├── ocsp/
│ ├── cache.go
│ ├── cache_test.go
│ ├── config.go
│ ├── ocsp.go
│ ├── ocsp_test.go
│ └── options.go
├── operation/
│ ├── abort_transaction.go
│ ├── aggregate.go
│ ├── command.go
│ ├── commit_transaction.go
│ ├── count.go
│ ├── create.go
│ ├── create_indexes.go
│ ├── create_search_indexes.go
│ ├── delete.go
│ ├── distinct.go
│ ├── doc.go
│ ├── drop_collection.go
│ ├── drop_database.go
│ ├── drop_indexes.go
│ ├── drop_search_index.go
│ ├── end_sessions.go
│ ├── errors.go
│ ├── find.go
│ ├── find_and_modify.go
│ ├── hello.go
│ ├── hello_test.go
│ ├── list_collections.go
│ ├── list_databases.go
│ ├── list_indexes.go
│ ├── update.go
│ └── update_search_index.go
├── operation.go
├── operation_exhaust.go
├── operation_test.go
├── serverapioptions.go
├── session/
│ ├── client_session.go
│ ├── client_session_test.go
│ ├── cluster_clock.go
│ ├── cluster_clock_test.go
│ ├── doc.go
│ ├── options.go
│ ├── server_session.go
│ ├── server_session_test.go
│ ├── session_pool.go
│ └── session_pool_test.go
├── testdata/
│ └── compression.go
├── topology/
│ ├── CMAP_spec_test.go
│ ├── DESIGN.md
│ ├── cmap_prose_test.go
│ ├── connection.go
│ ├── connection_errors_test.go
│ ├── connection_legacy.go
│ ├── connection_options.go
│ ├── connection_test.go
│ ├── context_listener.go
│ ├── diff.go
│ ├── diff_test.go
│ ├── errors.go
│ ├── example_test.go
│ ├── fsm.go
│ ├── fsm_test.go
│ ├── polling_srv_records_test.go
│ ├── pool.go
│ ├── pool_generation_counter.go
│ ├── pool_test.go
│ ├── rtt_monitor.go
│ ├── rtt_monitor_test.go
│ ├── sdam_spec_test.go
│ ├── server.go
│ ├── server_options.go
│ ├── server_rtt_test.go
│ ├── server_test.go
│ ├── stats.go
│ ├── stats_test.go
│ ├── tls_connection_source_1_16.go
│ ├── tls_connection_source_1_17.go
│ ├── topology.go
│ ├── topology_errors_test.go
│ ├── topology_options.go
│ ├── topology_options_test.go
│ └── topology_test.go
├── wiremessage/
│ ├── wiremessage.go
│ └── wiremessage_test.go
└── xoptions/
├── options.go
└── options_test.go
================================================
FILE CONTENTS
================================================
================================================
FILE: .errcheck-excludes
================================================
(go.mongodb.org/mongo-driver/x/mongo/driver.Connection).Close
(*go.mongodb.org/mongo-driver/x/network/connection.connection).Close
(go.mongodb.org/mongo-driver/x/network/connection.Connection).Close
(*go.mongodb.org/mongo-driver/x/mongo/driver/topology.connection).close
(*go.mongodb.org/mongo-driver/x/mongo/driver/topology.Topology).Unsubscribe
(*go.mongodb.org/mongo-driver/x/mongo/driver/topology.Server).Close
(*go.mongodb.org/mongo-driver/x/network/connection.pool).closeConnection
(*go.mongodb.org/mongo-driver/x/mongo/driver/topology.pool).close
(go.mongodb.org/mongo-driver/x/network/wiremessage.ReadWriteCloser).Close
(*go.mongodb.org/mongo-driver/mongo.Cursor).Close
(*go.mongodb.org/mongo-driver/mongo.ChangeStream).Close
(*go.mongodb.org/mongo-driver/mongo.Client).Disconnect
(net.Conn).Close
encoding/pem.Encode
fmt.Fprintf
fmt.Fprint
================================================
FILE: .evergreen/config.yml
================================================
########################################
# Evergreen Template for MongoDB Drivers
########################################
# When a task that used to pass starts to fail
# Go through all versions that may have been skipped to detect
# when the task started failing
stepback: true
# Mark a failure as a system/bootstrap failure (purple box) rather then a task
# failure by default.
# Actual testing tasks are marked with `type: test`
command_type: setup
# Fail builds when pre tasks fail.
pre_error_fails_task: true
# Protect the CI from long or indefinite runtimes.
exec_timeout_secs: 3600
# What to do when evergreen hits the timeout (`post:` tasks are run automatically)
timeout:
- command: subprocess.exec
params:
binary: bash
args: [ls, -la]
functions:
setup-system:
# Executes clone and applies the submitted patch, if any
- command: git.get_project
type: system
params:
directory: src/go.mongodb.org/mongo-driver
- command: shell.exec
params:
working_dir: "src/go.mongodb.org/mongo-driver"
script: |
git submodule update --init
# Make an env.sh and evergreen expansion file with dynamic values
- command: subprocess.exec
params:
binary: bash
working_dir: src/go.mongodb.org/mongo-driver
env:
GOROOT: ${GO_DIST}
IS_PATCH: ${is_patch}
VERSION_ID: ${version_id}
# Define an alias for the task runner script.
TASK_RUNNER_ALIAS: &task-runner src/go.mongodb.org/mongo-driver/.evergreen/run-task.sh
args: [.evergreen/setup-system.sh]
- command: expansions.update
params:
file: src/go.mongodb.org/mongo-driver/expansion.yml
- command: subprocess.exec
params:
binary: bash
include_expansions_in_env: ["PROJECT_DIRECTORY"]
args:
- "${DRIVERS_TOOLS}/.evergreen/setup.sh"
handle-test-artifacts:
- command: gotest.parse_files
params:
optional_output: "true"
files:
- "src/go.mongodb.org/mongo-driver/*.suite"
- command: ec2.assume_role
params:
role_arn: ${assume_role_arn}
- command: s3.put
params:
aws_key: ${AWS_ACCESS_KEY_ID}
aws_secret: ${AWS_SECRET_ACCESS_KEY}
aws_session_token: ${AWS_SESSION_TOKEN}
local_file: ${DRIVERS_TOOLS}/.evergreen/test_logs.tar.gz
remote_file: ${build_variant}/${revision}/${version_id}/${build_id}/logs/${task_id}-${execution}-drivers-tools-logs.tar.gz
bucket: ${aws_bucket}
permissions: public-read
content_type: ${content_type|application/x-gzip}
display_name: "drivers-tools-logs.tar.gz"
- command: s3.put
params:
aws_key: ${AWS_ACCESS_KEY_ID}
aws_secret: ${AWS_SECRET_ACCESS_KEY}
aws_session_token: ${AWS_SESSION_TOKEN}
optional: true
local_file: ${PROJECT_DIRECTORY}/fuzz.tgz
remote_file: ${build_variant}/${revision}/${version_id}/${build_id}/${task_id}-${execution}-fuzz.tgz
bucket: ${aws_bucket}
permissions: public-read
content_type: application/x-gzip
display_name: "fuzz.tgz"
- command: subprocess.exec
params:
binary: bash
args: [*task-runner, evg-gather-test-suites]
- command: s3.put
params:
aws_key: ${AWS_ACCESS_KEY_ID}
aws_secret: ${AWS_SECRET_ACCESS_KEY}
aws_session_token: ${AWS_SESSION_TOKEN}
local_file: src/go.mongodb.org/mongo-driver/test_suite.tgz
optional: true
remote_file: ${build_variant}/${revision}/${version_id}/${build_id}/logs/${task_id}-${execution}-test_suite.tgz
bucket: ${aws_bucket}
permissions: public-read
content_type: ${content_type|text/plain}
display_name: test_suite.tgz
bootstrap-mongohoused:
- command: ec2.assume_role
params:
role_arn: ${aws_test_secrets_role}
- command: subprocess.exec
params:
binary: bash
add_expansions_to_env: true
args:
- ${DRIVERS_TOOLS}/.evergreen/atlas_data_lake/pull-mongohouse-image.sh
- command: subprocess.exec
params:
binary: bash
args:
- ${DRIVERS_TOOLS}/.evergreen/atlas_data_lake/run-mongohouse-image.sh
bootstrap-mongo-orchestration:
- command: subprocess.exec
params:
binary: bash
env:
MONGODB_VERSION: ${VERSION}
include_expansions_in_env: [TOPOLOGY, AUTH, SSL, ORCHESTRATION_FILE, REQUIRE_API_VERSION, LOAD_BALANCER]
args: ["${DRIVERS_TOOLS}/.evergreen/run-orchestration.sh"]
- command: expansions.update
params:
file: mo-expansion.yml
ocsp-bootstrap-mongo-orchestration:
- command: subprocess.exec
params:
binary: bash
env:
MONGODB_VERSION: ${VERSION}
include_expansions_in_env: [TOPOLOGY, AUTH, SSL, ORCHESTRATION_FILE]
args: ["${DRIVERS_TOOLS}/.evergreen/run-orchestration.sh"]
- command: expansions.update
params:
file: mo-expansion.yml
teardown:
- command: subprocess.exec
params:
binary: bash
args:
# Ensure the instance profile is reassigned for aws tests.
- ${DRIVERS_TOOLS}/.evergreen/auth_aws/teardown.sh
- command: subprocess.exec
params:
binary: bash
args:
- ${DRIVERS_TOOLS}/.evergreen/csfle/teardown.sh
- command: subprocess.exec
params:
binary: bash
args:
- ${DRIVERS_TOOLS}/.evergreen/ocsp/teardown.sh
- command: subprocess.exec
params:
binary: bash
args:
- ${DRIVERS_TOOLS}/.evergreen/teardown.sh
assume-test-secrets-ec2-role:
- command: ec2.assume_role
params:
role_arn: ${aws_test_secrets_role}
duration_seconds: 1800
run-oidc-auth-test-with-test-credentials:
- command: subprocess.exec
type: test
params:
binary: bash
env:
OIDC: oidc
include_expansions_in_env: [DRIVERS_TOOLS, AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_SESSION_TOKEN]
args: [*task-runner, test-oidc]
run-tests:
- command: subprocess.exec
params:
binary: bash
env:
GO_BUILD_TAGS: "cse,mongointernal"
include_expansions_in_env: ["TOPOLOGY", "AUTH", "SSL", "SKIP_CSOT_TESTS", "MONGODB_URI", "CRYPT_SHARED_LIB_PATH", "SKIP_CRYPT_SHARED_LIB", "RACE", "MONGO_GO_DRIVER_COMPRESSOR", "REQUIRE_API_VERSION", "LOAD_BALANCER"]
args: [*task-runner, setup-test]
- command: subprocess.exec
type: test
retry_on_failure: true
params:
binary: bash
args: [*task-runner, "${DEFAULT_TASK}"]
create-api-report:
- command: subprocess.exec
type: test
params:
binary: bash
add_expansions_to_env: true
env:
BASE_SHA: "${revision}"
HEAD_SHA: "${github_commit}"
args: [*task-runner, api-report]
"backport pr":
- command: subprocess.exec
type: test
params:
binary: bash
env:
COMMIT: "${github_commit}"
PR_TASK: backport-pr
args: [*task-runner, pr-task]
send-perf-data:
# Here we begin to generate the request to send the data to SPS
- command: shell.exec
params:
script: |
# We use the requester expansion to determine whether the data is from a mainline evergreen run or not
if [ "${requester}" == "commit" ]; then
is_mainline=true
else
is_mainline=false
fi
# We parse the username out of the order_id as patches append that in and SPS does not need that information
parsed_order_id=$(echo "${revision_order_id}" | awk -F'_' '{print $NF}')
# Submit the performance data to the SPS endpoint
response=$(curl -s -w "\nHTTP_STATUS:%{http_code}" -X 'POST' \
"https://performance-monitoring-api.corp.mongodb.com/raw_perf_results/cedar_report?project=${project_id}&version=${version_id}&variant=${build_variant}&order=$parsed_order_id&task_name=${task_name}&task_id=${task_id}&execution=${execution}&mainline=$is_mainline" \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d @src/go.mongodb.org/mongo-driver/perf.json)
http_status=$(echo "$response" | grep "HTTP_STATUS" | awk -F':' '{print $2}')
response_body=$(echo "$response" | sed '/HTTP_STATUS/d')
# We want to throw an error if the data was not successfully submitted
if [ "$http_status" -ne 200 ]; then
echo "Error: Received HTTP status $http_status"
echo "Response Body: $response_body"
exit 1
fi
echo "Response Body: $response_body"
echo "HTTP Status: $http_status"
send-perf-pr-comment:
- command: subprocess.exec
type: test
params:
binary: bash
add_expansions_to_env: true
env:
VERSION_ID: ${version_id}
BASE_SHA: "${revision}"
HEAD_SHA: "${github_commit}"
include_expansions_in_env: [PERF_URI_PRIVATE_ENDPOINT]
args: [*task-runner, perf-pr-comment]
run-enterprise-auth-tests:
- command: ec2.assume_role
params:
role_arn: "${aws_test_secrets_role}"
- command: subprocess.exec
params:
binary: bash
include_expansions_in_env: [AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_SESSION_TOKEN]
env:
TEST_ENTERPRISE_AUTH: plain
args: [*task-runner, setup-test]
- command: subprocess.exec
type: test
retry_on_failure: true
params:
binary: bash
args: [*task-runner, --silent, evg-test-enterprise-auth]
run-enterprise-gssapi-auth-tests:
- command: ec2.assume_role
params:
role_arn: "${aws_test_secrets_role}"
- command: subprocess.exec
params:
binary: bash
include_expansions_in_env: [AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_SESSION_TOKEN]
env:
TEST_ENTERPRISE_AUTH: gssapi
args: [*task-runner, setup-test]
- command: subprocess.exec
type: test
retry_on_failure: true
params:
binary: bash
args: [*task-runner, --silent, evg-test-enterprise-auth]
run-atlas-test:
- command: ec2.assume_role
params:
role_arn: "${aws_test_secrets_role}"
- command: subprocess.exec
params:
binary: bash
include_expansions_in_env: [AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_SESSION_TOKEN]
env:
TEST_ATLAS_CONNECT: "1"
args: [*task-runner, setup-test]
- command: subprocess.exec
type: test
retry_on_failure: true
params:
binary: bash
args: [*task-runner, test-atlas-connect]
run-ocsp-test:
- command: subprocess.exec
params:
binary: bash
env:
TOPOLOGY: server
AUTH: auth
SSL: ssl
include_expansions_in_env: [OCSP_ALGORITHM, MONGODB_URI]
args: [*task-runner, setup-test]
- command: subprocess.exec
type: test
retry_on_failure: true
params:
binary: bash
include_expansions_in_env: [OCSP_TLS_SHOULD_SUCCEED]
args: [*task-runner, evg-test-ocsp]
run-versioned-api-test:
- command: subprocess.exec
params:
binary: bash
env:
GO_BUILD_TAGS: cse
include_expansions_in_env: [AUTH, SSL, MONGODB_URI, TOPOLOGY, MONGO_GO_DRIVER_COMPRESSOR, REQUIRE_API_VERSION, SKIP_CRYPT_SHARED_LIB, CRYPT_SHARED_LIB_PATH]
args: [*task-runner, setup-test]
- command: subprocess.exec
type: test
retry_on_failure: true
params:
binary: bash
args: [*task-runner, evg-test-versioned-api]
run-load-balancer-tests:
- command: subprocess.exec
params:
binary: bash
include_expansions_in_env: [SINGLE_MONGOS_LB_URI, MULTI_MONGOS_LB_URI, AUTH, SSL, MONGO_GO_DRIVER_COMPRESSOR]
env:
LOAD_BALANCER: "true"
args: [*task-runner, setup-test]
- command: subprocess.exec
type: test
retry_on_failure: true
params:
binary: bash
args: [*task-runner, evg-test-load-balancers]
run-docker-test:
- command: subprocess.exec
type: test
params:
binary: "bash"
env:
TASKFILE_TARGET: test-short
args: [*task-runner, run-docker]
- command: subprocess.exec
type: test
params:
binary: "bash"
env:
TOPOLOGY: sharded_cluster
TASKFILE_TARGET: test-short
args: [*task-runner, run-docker]
run-goleak-test:
- command: subprocess.exec
type: test
params:
binary: "bash"
include_expansions_in_env: ["MONGODB_URI"]
args: [*task-runner, test-goleak]
"run oidc k8s test":
- command: subprocess.exec
type: test
params:
binary: bash
include_expansions_in_env: [AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_SESSION_TOKEN, VARIANT, DRIVERS_TOOLS]
env:
OIDC_ENV: k8s
args: [*task-runner, test-oidc-remote]
run-ocsp-server:
- command: subprocess.exec
params:
binary: bash
background: true
include_expansions_in_env: [SERVER_TYPE, OCSP_ALGORITHM]
args:
- ${DRIVERS_TOOLS}/.evergreen/ocsp/setup.sh
run-load-balancer:
- command: subprocess.exec
params:
binary: "bash"
include_expansions_in_env: ["MONGODB-AWS", "MONGODB_URI"]
args: ["${DRIVERS_TOOLS}/.evergreen/run-load-balancer.sh", start]
- command: expansions.update
params:
file: lb-expansion.yml
run-search-index-tests:
- command: subprocess.exec
type: test
params:
binary: "bash"
env:
SEARCH_INDEX_URI: "${SEARCH_INDEX_URI}"
args: [*task-runner, evg-test-search-index]
add-aws-auth-variables-to-file:
- command: ec2.assume_role
params:
role_arn: ${aws_test_secrets_role}
- command: subprocess.exec
type: test
params:
include_expansions_in_env: ["AWS_ACCESS_KEY_ID", "AWS_SECRET_ACCESS_KEY", "AWS_SESSION_TOKEN"]
binary: "bash"
args:
- ${DRIVERS_TOOLS}/.evergreen/auth_aws/setup-secrets.sh
run-aws-auth-test-with-regular-aws-credentials:
- command: subprocess.exec
type: test
params:
binary: "bash"
env:
AWS_TEST: regular
args: [*task-runner, evg-test-aws]
run-aws-auth-test-with-assume-role-credentials:
- command: subprocess.exec
type: test
params:
binary: "bash"
env:
AWS_TEST: assume-role
args: [*task-runner, evg-test-aws]
run-aws-auth-test-with-aws-EC2-credentials:
- command: subprocess.exec
type: test
params:
binary: bash
include_expansions_in_env: [SKIP_EC2_AUTH_TEST]
env:
AWS_TEST: ec2
args: [*task-runner, evg-test-aws]
run-aws-auth-test-with-aws-credentials-as-environment-variables:
- command: subprocess.exec
type: test
params:
binary: "bash"
env:
AWS_TEST: env-creds
args: [*task-runner, evg-test-aws]
run-aws-auth-test-with-aws-credentials-and-session-token-as-environment-variables:
- command: subprocess.exec
type: test
params:
binary: "bash"
env:
AWS_TEST: session-creds
args: [*task-runner, evg-test-aws]
run-aws-ECS-auth-test:
- command: subprocess.exec
type: test
params:
binary: "bash"
include_expansions_in_env: [SKIP_ECS_AUTH_TEST]
args: [*task-runner, evg-test-aws-ecs]
run-aws-auth-test-with-aws-web-identity-credentials:
- command: subprocess.exec
type: test
params:
binary: bash
include_expansions_in_env: [SKIP_WEB_IDENTITY_AUTH_TEST]
env:
AWS_TEST: web-identity
args: [*task-runner, evg-test-aws]
- command: subprocess.exec
type: test
params:
binary: bash
env:
AWS_ROLE_SESSION_NAME: test
AWS_TEST: web-identity
include_expansions_in_env: [SKIP_WEB_IDENTITY_AUTH_TEST]
args: [*task-runner, evg-test-aws]
start-cse-servers:
- command: ec2.assume_role
params:
role_arn: ${aws_test_secrets_role}
- command: subprocess.exec
params:
working_dir: src/go.mongodb.org/mongo-driver
binary: bash
background: true
include_expansions_in_env: ["AWS_ACCESS_KEY_ID", "AWS_SECRET_ACCESS_KEY", "AWS_SESSION_TOKEN", "DRIVERS_TOOLS"]
# This cannot use task because it will hang on Windows.
args: [etc/setup-encryption.sh]
- command: subprocess.exec
params:
binary: bash
args: ["${DRIVERS_TOOLS}/.evergreen/csfle/await-servers.sh"]
run-kmip-tests:
- command: subprocess.exec
params:
binary: "bash"
env:
GO_BUILD_TAGS: cse
include_expansions_in_env: [AUTH, SSL, MONGODB_URI, TOPOLOGY, MONGO_GO_DRIVER_COMPRESSOR]
args: [*task-runner, setup-test]
- command: subprocess.exec
type: test
retry_on_failure: true
params:
binary: "bash"
env:
KMS_MOCK_SERVERS_RUNNING: "true"
args: [*task-runner, evg-test-kmip]
run-client-side-encryption-test:
- command: subprocess.exec
params:
binary: "bash"
env:
GO_BUILD_TAGS: cse
include_expansions_in_env: [AUTH, SSL, MONGODB_URI, TOPOLOGY, MONGO_GO_DRIVER_COMPRESSOR, CRYPT_SHARED_LIB_PATH]
args: [*task-runner, setup-test]
- command: subprocess.exec
type: test
retry_on_failure: true
params:
binary: "bash"
env:
KMS_MOCK_SERVERS_RUNNING: "true"
KMS_FAILPOINT_CA_FILE: "${DRIVERS_TOOLS}/.evergreen/x509gen/ca.pem"
KMS_FAILPOINT_SERVER_RUNNING: "true"
args: [*task-runner, evg-test-client-side-encryption]
run-fuzz-tests:
- command: subprocess.exec
type: test
params:
binary: "bash"
args: [*task-runner, run-fuzz]
pre:
- func: setup-system
post:
- func: teardown
- func: handle-test-artifacts
tasks:
- name: static-analysis
tags: ["static-analysis"]
commands:
- command: subprocess.exec
params:
binary: bash
args: [*task-runner, check-fmt, check-license, check-modules, lint]
- name: govulncheck
tags: ["static-analysis"]
commands:
- command: subprocess.exec
type: test
params:
binary: bash
args: [*task-runner, govulncheck]
- name: pull-request-helpers
allowed_requesters: ["patch", "github_pr"]
commands:
- func: assume-test-secrets-ec2-role
- func: "create-api-report"
- name: backport-pr
allowed_requesters: ["commit"]
commands:
- func: "backport pr"
- name: perf
tags: ["performance"]
exec_timeout_secs: 7200
commands:
- func: bootstrap-mongo-orchestration
vars:
VERSION: "v6.0-perf"
TOPOLOGY: "server"
AUTH: "noauth"
SSL: "nossl"
SKIP_LEGACY_SHELL: "true"
- command: subprocess.exec
params:
binary: bash
args: [*task-runner, driver-benchmark]
- func: assume-test-secrets-ec2-role
- func: send-perf-data
- func: send-perf-pr-comment
- name: test-standalone-noauth-nossl
tags: ["test", "standalone"]
commands:
- func: bootstrap-mongo-orchestration
vars:
TOPOLOGY: "server"
AUTH: "noauth"
SSL: "nossl"
- func: start-cse-servers
- func: run-tests
vars:
TOPOLOGY: "server"
AUTH: "noauth"
SSL: "nossl"
- name: test-standalone-noauth-nossl-snappy-compression
tags: ["test", "standalone", "compression", "snappy"]
commands:
- func: bootstrap-mongo-orchestration
vars:
TOPOLOGY: "server"
AUTH: "noauth"
SSL: "nossl"
- func: start-cse-servers
- func: run-tests
vars:
TOPOLOGY: "server"
AUTH: "noauth"
SSL: "nossl"
MONGO_GO_DRIVER_COMPRESSOR: "snappy"
- name: test-standalone-noauth-nossl-zlib-compression
tags: ["test", "standalone", "compression", "zlib"]
commands:
- func: bootstrap-mongo-orchestration
vars:
TOPOLOGY: "server"
AUTH: "noauth"
SSL: "nossl"
- func: start-cse-servers
- func: run-tests
vars:
TOPOLOGY: "server"
AUTH: "noauth"
SSL: "nossl"
MONGO_GO_DRIVER_COMPRESSOR: "zlib"
- name: test-standalone-noauth-nossl-zstd-compression
tags: ["test", "standalone", "compression", "zstd"]
commands:
- func: bootstrap-mongo-orchestration
vars:
TOPOLOGY: "server"
AUTH: "noauth"
SSL: "nossl"
- func: start-cse-servers
- func: run-tests
vars:
TOPOLOGY: "server"
AUTH: "noauth"
SSL: "nossl"
MONGO_GO_DRIVER_COMPRESSOR: "zstd"
- name: test-standalone-auth-ssl
tags: ["test", "standalone", "authssl"]
commands:
- func: bootstrap-mongo-orchestration
vars:
TOPOLOGY: "server"
AUTH: "auth"
SSL: "ssl"
- func: start-cse-servers
- func: run-tests
vars:
TOPOLOGY: "server"
AUTH: "auth"
SSL: "ssl"
- name: test-standalone-auth-nossl
tags: ["test", "standalone", "authssl"]
commands:
- func: bootstrap-mongo-orchestration
vars:
TOPOLOGY: "server"
AUTH: "auth"
SSL: "nossl"
- func: start-cse-servers
- func: run-tests
vars:
TOPOLOGY: "server"
AUTH: "auth"
SSL: "nossl"
- name: test-standalone-auth-ssl-snappy-compression
tags: ["test", "standalone", "authssl", "compression", "snappy"]
commands:
- func: bootstrap-mongo-orchestration
vars:
TOPOLOGY: "server"
AUTH: "auth"
SSL: "ssl"
- func: start-cse-servers
- func: run-tests
vars:
TOPOLOGY: "server"
AUTH: "auth"
SSL: "ssl"
MONGO_GO_DRIVER_COMPRESSOR: "snappy"
- name: test-standalone-auth-ssl-zlib-compression
tags: ["test", "standalone", "authssl", "compression", "zlib"]
commands:
- func: bootstrap-mongo-orchestration
vars:
TOPOLOGY: "server"
AUTH: "auth"
SSL: "ssl"
- func: start-cse-servers
- func: run-tests
vars:
TOPOLOGY: "server"
AUTH: "auth"
SSL: "ssl"
MONGO_GO_DRIVER_COMPRESSOR: "zlib"
- name: test-standalone-auth-ssl-zstd-compression
tags: ["test", "standalone", "authssl", "compression", "zstd"]
commands:
- func: bootstrap-mongo-orchestration
vars:
TOPOLOGY: "server"
AUTH: "auth"
SSL: "ssl"
- func: start-cse-servers
- func: run-tests
vars:
TOPOLOGY: "server"
AUTH: "auth"
SSL: "ssl"
MONGO_GO_DRIVER_COMPRESSOR: "zstd"
- name: test-ocsp-rsa-valid-cert-server-staples
tags: ["ocsp", "ocsp-rsa", "ocsp-staple"]
commands:
- func: run-ocsp-server
vars:
OCSP_ALGORITHM: "rsa"
SERVER_TYPE: valid
- func: ocsp-bootstrap-mongo-orchestration
vars:
ORCHESTRATION_FILE: "rsa-basic-tls-ocsp-mustStaple.json"
- func: run-ocsp-test
vars:
OCSP_ALGORITHM: "rsa"
OCSP_TLS_SHOULD_SUCCEED: "true"
- name: test-ocsp-rsa-invalid-cert-server-staples
tags: ["ocsp", "ocsp-rsa", "ocsp-staple"]
commands:
- func: run-ocsp-server
vars:
OCSP_ALGORITHM: "rsa"
SERVER_TYPE: revoked
- func: ocsp-bootstrap-mongo-orchestration
vars:
ORCHESTRATION_FILE: "rsa-basic-tls-ocsp-mustStaple.json"
- func: run-ocsp-test
vars:
OCSP_ALGORITHM: "rsa"
OCSP_TLS_SHOULD_SUCCEED: "false"
- name: test-ocsp-rsa-valid-cert-server-does-not-staple
tags: ["ocsp", "ocsp-rsa"]
commands:
- func: run-ocsp-server
vars:
OCSP_ALGORITHM: "rsa"
SERVER_TYPE: valid
- func: ocsp-bootstrap-mongo-orchestration
vars:
ORCHESTRATION_FILE: "rsa-basic-tls-ocsp-disableStapling.json"
- func: run-ocsp-test
vars:
OCSP_ALGORITHM: "rsa"
OCSP_TLS_SHOULD_SUCCEED: "true"
- name: test-ocsp-rsa-invalid-cert-server-does-not-staple
tags: ["ocsp", "ocsp-rsa"]
commands:
- func: run-ocsp-server
vars:
OCSP_ALGORITHM: "rsa"
SERVER_TYPE: revoked
- func: ocsp-bootstrap-mongo-orchestration
vars:
ORCHESTRATION_FILE: "rsa-basic-tls-ocsp-disableStapling.json"
- func: run-ocsp-test
vars:
OCSP_ALGORITHM: "rsa"
OCSP_TLS_SHOULD_SUCCEED: "false"
- name: test-ocsp-rsa-soft-fail
tags: ["ocsp", "ocsp-rsa"]
commands:
- func: ocsp-bootstrap-mongo-orchestration
vars:
ORCHESTRATION_FILE: "rsa-basic-tls-ocsp-disableStapling.json"
- func: run-ocsp-test
vars:
OCSP_ALGORITHM: "rsa"
OCSP_TLS_SHOULD_SUCCEED: "true"
- name: test-ocsp-rsa-malicious-invalid-cert-mustStaple-server-does-not-staple
tags: ["ocsp", "ocsp-rsa"]
commands:
- func: run-ocsp-server
vars:
OCSP_ALGORITHM: "rsa"
SERVER_TYPE: revoked
- func: ocsp-bootstrap-mongo-orchestration
vars:
ORCHESTRATION_FILE: "rsa-basic-tls-ocsp-mustStaple-disableStapling.json"
- func: run-ocsp-test
vars:
OCSP_ALGORITHM: "rsa"
OCSP_TLS_SHOULD_SUCCEED: "false"
- name: test-ocsp-rsa-malicious-no-responder-mustStaple-server-does-not-staple
tags: ["ocsp", "ocsp-rsa"]
commands:
- func: ocsp-bootstrap-mongo-orchestration
vars:
ORCHESTRATION_FILE: "rsa-basic-tls-ocsp-mustStaple-disableStapling.json"
- func: run-ocsp-test
vars:
OCSP_ALGORITHM: "rsa"
OCSP_TLS_SHOULD_SUCCEED: "false"
- name: test-ocsp-rsa-delegate-valid-cert-server-staples
tags: ["ocsp", "ocsp-rsa", "ocsp-staple"]
commands:
- func: run-ocsp-server
vars:
OCSP_ALGORITHM: "rsa"
SERVER_TYPE: valid-delegate
- func: ocsp-bootstrap-mongo-orchestration
vars:
ORCHESTRATION_FILE: "rsa-basic-tls-ocsp-mustStaple.json"
- func: run-ocsp-test
vars:
OCSP_ALGORITHM: "rsa"
OCSP_TLS_SHOULD_SUCCEED: "true"
- name: test-ocsp-rsa-delegate-invalid-cert-server-staples
tags: ["ocsp", "ocsp-rsa", "ocsp-staple"]
commands:
- func: run-ocsp-server
vars:
OCSP_ALGORITHM: "rsa"
SERVER_TYPE: revoked-delegate
- func: ocsp-bootstrap-mongo-orchestration
vars:
ORCHESTRATION_FILE: "rsa-basic-tls-ocsp-mustStaple.json"
- func: run-ocsp-test
vars:
OCSP_ALGORITHM: "rsa"
OCSP_TLS_SHOULD_SUCCEED: "false"
- name: test-ocsp-rsa-delegate-valid-cert-server-does-not-staple
tags: ["ocsp", "ocsp-rsa"]
commands:
- func: run-ocsp-server
vars:
OCSP_ALGORITHM: "rsa"
SERVER_TYPE: valid-delegate
- func: ocsp-bootstrap-mongo-orchestration
vars:
ORCHESTRATION_FILE: "rsa-basic-tls-ocsp-disableStapling.json"
- func: run-ocsp-test
vars:
OCSP_ALGORITHM: "rsa"
OCSP_TLS_SHOULD_SUCCEED: "true"
- name: test-ocsp-rsa-delegate-invalid-cert-server-does-not-staple
tags: ["ocsp", "ocsp-rsa"]
commands:
- func: run-ocsp-server
vars:
OCSP_ALGORITHM: "rsa"
SERVER_TYPE: revoked-delegate
- func: ocsp-bootstrap-mongo-orchestration
vars:
ORCHESTRATION_FILE: "rsa-basic-tls-ocsp-disableStapling.json"
- func: run-ocsp-test
vars:
OCSP_ALGORITHM: "rsa"
OCSP_TLS_SHOULD_SUCCEED: "false"
- name: test-ocsp-rsa-delegate-malicious-invalid-cert-mustStaple-server-does-not-staple
tags: ["ocsp", "ocsp-rsa"]
commands:
- func: run-ocsp-server
vars:
OCSP_ALGORITHM: "rsa"
SERVER_TYPE: revoked-delegate
- func: ocsp-bootstrap-mongo-orchestration
vars:
ORCHESTRATION_FILE: "rsa-basic-tls-ocsp-mustStaple-disableStapling.json"
- func: run-ocsp-test
vars:
OCSP_ALGORITHM: "rsa"
OCSP_TLS_SHOULD_SUCCEED: "false"
- name: test-ocsp-ecdsa-valid-cert-server-staples
tags: ["ocsp", "ocsp-ecdsa", "ocsp-staple"]
commands:
- func: run-ocsp-server
vars:
OCSP_ALGORITHM: "ecdsa"
SERVER_TYPE: valid
- func: ocsp-bootstrap-mongo-orchestration
vars:
ORCHESTRATION_FILE: "ecdsa-basic-tls-ocsp-mustStaple.json"
- func: run-ocsp-test
vars:
OCSP_ALGORITHM: "ecdsa"
OCSP_TLS_SHOULD_SUCCEED: "true"
- name: test-ocsp-ecdsa-invalid-cert-server-staples
tags: ["ocsp", "ocsp-ecdsa", "ocsp-staple"]
commands:
- func: run-ocsp-server
vars:
OCSP_ALGORITHM: "ecdsa"
SERVER_TYPE: revoked
- func: ocsp-bootstrap-mongo-orchestration
vars:
ORCHESTRATION_FILE: "ecdsa-basic-tls-ocsp-mustStaple.json"
- func: run-ocsp-test
vars:
OCSP_ALGORITHM: "ecdsa"
OCSP_TLS_SHOULD_SUCCEED: "false"
- name: test-ocsp-ecdsa-valid-cert-server-does-not-staple
tags: ["ocsp", "ocsp-ecdsa"]
commands:
- func: run-ocsp-server
vars:
OCSP_ALGORITHM: "ecdsa"
SERVER_TYPE: valid
- func: ocsp-bootstrap-mongo-orchestration
vars:
ORCHESTRATION_FILE: "ecdsa-basic-tls-ocsp-disableStapling.json"
- func: run-ocsp-test
vars:
OCSP_ALGORITHM: "ecdsa"
OCSP_TLS_SHOULD_SUCCEED: "true"
- name: test-ocsp-ecdsa-invalid-cert-server-does-not-staple
tags: ["ocsp", "ocsp-ecdsa"]
commands:
- func: run-ocsp-server
vars:
OCSP_ALGORITHM: "ecdsa"
SERVER_TYPE: revoked
- func: ocsp-bootstrap-mongo-orchestration
vars:
ORCHESTRATION_FILE: "ecdsa-basic-tls-ocsp-disableStapling.json"
- func: run-ocsp-test
vars:
OCSP_ALGORITHM: "ecdsa"
OCSP_TLS_SHOULD_SUCCEED: "false"
- name: test-ocsp-ecdsa-soft-fail
tags: ["ocsp", "ocsp-ecdsa"]
commands:
- func: ocsp-bootstrap-mongo-orchestration
vars:
ORCHESTRATION_FILE: "ecdsa-basic-tls-ocsp-disableStapling.json"
- func: run-ocsp-test
vars:
OCSP_ALGORITHM: "ecdsa"
OCSP_TLS_SHOULD_SUCCEED: "true"
- name: test-ocsp-ecdsa-malicious-invalid-cert-mustStaple-server-does-not-staple
tags: ["ocsp", "ocsp-ecdsa"]
commands:
- func: run-ocsp-server
vars:
OCSP_ALGORITHM: "ecdsa"
SERVER_TYPE: revoked
- func: ocsp-bootstrap-mongo-orchestration
vars:
ORCHESTRATION_FILE: "ecdsa-basic-tls-ocsp-mustStaple-disableStapling.json"
- func: run-ocsp-test
vars:
OCSP_ALGORITHM: "ecdsa"
OCSP_TLS_SHOULD_SUCCEED: "false"
- name: test-ocsp-ecdsa-malicious-no-responder-mustStaple-server-does-not-staple
tags: ["ocsp", "ocsp-ecdsa"]
commands:
- func: ocsp-bootstrap-mongo-orchestration
vars:
ORCHESTRATION_FILE: "ecdsa-basic-tls-ocsp-mustStaple-disableStapling.json"
- func: run-ocsp-test
vars:
OCSP_ALGORITHM: "ecdsa"
OCSP_TLS_SHOULD_SUCCEED: "false"
- name: test-ocsp-ecdsa-delegate-valid-cert-server-staples
tags: ["ocsp", "ocsp-ecdsa", "ocsp-staple"]
commands:
- func: run-ocsp-server
vars:
OCSP_ALGORITHM: "ecdsa"
SERVER_TYPE: valid-delegate
- func: ocsp-bootstrap-mongo-orchestration
vars:
ORCHESTRATION_FILE: "ecdsa-basic-tls-ocsp-mustStaple.json"
- func: run-ocsp-test
vars:
OCSP_ALGORITHM: "ecdsa"
OCSP_TLS_SHOULD_SUCCEED: "true"
- name: test-ocsp-ecdsa-delegate-invalid-cert-server-staples
tags: ["ocsp", "ocsp-ecdsa", "ocsp-staple"]
commands:
- func: run-ocsp-server
vars:
OCSP_ALGORITHM: "ecdsa"
SERVER_TYPE: revoked-delegate
- func: ocsp-bootstrap-mongo-orchestration
vars:
ORCHESTRATION_FILE: "ecdsa-basic-tls-ocsp-mustStaple.json"
- func: run-ocsp-test
vars:
OCSP_ALGORITHM: "ecdsa"
OCSP_TLS_SHOULD_SUCCEED: "false"
- name: test-ocsp-ecdsa-delegate-valid-cert-server-does-not-staple
tags: ["ocsp", "ocsp-ecdsa"]
commands:
- func: run-ocsp-server
vars:
OCSP_ALGORITHM: "ecdsa"
SERVER_TYPE: valid-delegate
- func: ocsp-bootstrap-mongo-orchestration
vars:
ORCHESTRATION_FILE: "ecdsa-basic-tls-ocsp-disableStapling.json"
- func: run-ocsp-test
vars:
OCSP_ALGORITHM: "ecdsa"
OCSP_TLS_SHOULD_SUCCEED: "true"
- name: test-ocsp-ecdsa-delegate-invalid-cert-server-does-not-staple
tags: ["ocsp", "ocsp-ecdsa"]
commands:
- func: run-ocsp-server
vars:
OCSP_ALGORITHM: "ecdsa"
SERVER_TYPE: revoked-delegate
- func: ocsp-bootstrap-mongo-orchestration
vars:
ORCHESTRATION_FILE: "ecdsa-basic-tls-ocsp-disableStapling.json"
- func: run-ocsp-test
vars:
OCSP_ALGORITHM: "ecdsa"
OCSP_TLS_SHOULD_SUCCEED: "false"
- name: test-ocsp-ecdsa-delegate-malicious-invalid-cert-mustStaple-server-does-not-staple
tags: ["ocsp", "ocsp-ecdsa"]
commands:
- func: run-ocsp-server
vars:
OCSP_ALGORITHM: "ecdsa"
SERVER_TYPE: revoked-delegate
- func: ocsp-bootstrap-mongo-orchestration
vars:
ORCHESTRATION_FILE: "ecdsa-basic-tls-ocsp-mustStaple-disableStapling.json"
- func: run-ocsp-test
vars:
OCSP_ALGORITHM: "ecdsa"
OCSP_TLS_SHOULD_SUCCEED: "false"
- name: test-docker-runner
commands:
- func: bootstrap-mongo-orchestration
- func: run-docker-test
- name: test-goroutine-leaks-replicaset
tags: ["goleak"]
commands:
- func: bootstrap-mongo-orchestration
vars:
TOPOLOGY: "replica_set"
AUTH: "noauth"
SSL: "nossl"
- func: run-goleak-test
- name: test-goroutine-leaks-sharded
tags: ["goleak"]
commands:
- func: bootstrap-mongo-orchestration
vars:
TOPOLOGY: "sharded_cluster"
AUTH: "noauth"
SSL: "nossl"
- func: run-goleak-test
- name: test-load-balancer-noauth-nossl
tags: ["load-balancer"]
commands:
- func: bootstrap-mongo-orchestration
vars:
TOPOLOGY: "sharded_cluster"
AUTH: "noauth"
SSL: "nossl"
LOAD_BALANCER: "true"
- func: run-load-balancer
- func: run-load-balancer-tests
vars:
AUTH: "noauth"
SSL: "nossl"
- name: test-load-balancer-auth-ssl
tags: ["load-balancer"]
commands:
- func: bootstrap-mongo-orchestration
vars:
TOPOLOGY: "sharded_cluster"
AUTH: "auth"
SSL: "ssl"
LOAD_BALANCER: "true"
- func: run-load-balancer
- func: run-load-balancer-tests
vars:
AUTH: "auth"
SSL: "ssl"
- name: test-race
tags: ["race"]
commands:
- func: bootstrap-mongo-orchestration
vars:
TOPOLOGY: "replica_set"
AUTH: "noauth"
SSL: "nossl"
- func: start-cse-servers
- func: run-tests
vars:
TOPOLOGY: "replica_set"
AUTH: "noauth"
SSL: "nossl"
RACE: "-race"
- name: test-replicaset-noauth-nossl
tags: ["test", "replicaset"]
commands:
- func: bootstrap-mongo-orchestration
vars:
TOPOLOGY: "replica_set"
AUTH: "noauth"
SSL: "nossl"
- func: start-cse-servers
- func: run-tests
vars:
TOPOLOGY: "replica_set"
AUTH: "noauth"
SSL: "nossl"
- name: test-replicaset-auth-ssl
tags: ["test", "replicaset", "authssl"]
commands:
- func: bootstrap-mongo-orchestration
vars:
TOPOLOGY: "replica_set"
AUTH: "auth"
SSL: "ssl"
- func: start-cse-servers
- func: run-tests
vars:
TOPOLOGY: "replica_set"
AUTH: "auth"
SSL: "ssl"
- name: test-replicaset-auth-ssl-mongocryptd
tags: ["test", "replicaset", "authssl", "mongocryptd"]
commands:
- func: bootstrap-mongo-orchestration
vars:
TOPOLOGY: "replica_set"
AUTH: "auth"
SSL: "ssl"
- func: start-cse-servers
- func: run-tests
vars:
TOPOLOGY: "replica_set"
AUTH: "auth"
SSL: "ssl"
# Don't use the crypt_shared library, which should cause all of the tests to fall
# back to using mongocryptd instead of crypt_shared.
SKIP_CRYPT_SHARED_LIB: "true"
- name: test-replicaset-auth-nossl
tags: ["test", "replicaset", "authssl"]
commands:
- func: bootstrap-mongo-orchestration
vars:
TOPOLOGY: "replica_set"
AUTH: "auth"
SSL: "nossl"
- func: start-cse-servers
- func: run-tests
vars:
TOPOLOGY: "replica_set"
AUTH: "auth"
SSL: "nossl"
- name: test-sharded-noauth-nossl
tags: ["test", "sharded"]
commands:
- func: bootstrap-mongo-orchestration
vars:
TOPOLOGY: "sharded_cluster"
AUTH: "noauth"
SSL: "nossl"
- func: start-cse-servers
- func: run-tests
vars:
TOPOLOGY: "sharded_cluster"
AUTH: "noauth"
SSL: "nossl"
- name: test-sharded-noauth-nossl-snappy-compression
tags: ["test", "sharded", "compression", "snappy"]
commands:
- func: bootstrap-mongo-orchestration
vars:
TOPOLOGY: "sharded_cluster"
AUTH: "noauth"
SSL: "nossl"
- func: start-cse-servers
- func: run-tests
vars:
TOPOLOGY: "sharded_cluster"
AUTH: "noauth"
SSL: "nossl"
MONGO_GO_DRIVER_COMPRESSOR: "snappy"
- name: test-sharded-noauth-nossl-zlib-compression
tags: ["test", "sharded", "compression", "zlib"]
commands:
- func: bootstrap-mongo-orchestration
vars:
TOPOLOGY: "sharded_cluster"
AUTH: "noauth"
SSL: "nossl"
- func: start-cse-servers
- func: run-tests
vars:
TOPOLOGY: "sharded_cluster"
AUTH: "noauth"
SSL: "nossl"
MONGO_GO_DRIVER_COMPRESSOR: "zlib"
- name: test-sharded-noauth-nossl-zstd-compression
tags: ["test", "sharded", "compression", "zstd"]
commands:
- func: bootstrap-mongo-orchestration
vars:
TOPOLOGY: "sharded_cluster"
AUTH: "noauth"
SSL: "nossl"
- func: start-cse-servers
- func: run-tests
vars:
TOPOLOGY: "sharded_cluster"
AUTH: "noauth"
SSL: "nossl"
MONGO_GO_DRIVER_COMPRESSOR: "zstd"
- name: test-sharded-auth-ssl
tags: ["test", "sharded", "authssl"]
commands:
- func: bootstrap-mongo-orchestration
vars:
TOPOLOGY: "sharded_cluster"
AUTH: "auth"
SSL: "ssl"
- func: start-cse-servers
- func: run-tests
vars:
TOPOLOGY: "sharded_cluster"
AUTH: "auth"
SSL: "ssl"
- name: test-sharded-auth-ssl-snappy-compression
tags: ["test", "sharded", "authssl", "compression", "snappy"]
commands:
- func: bootstrap-mongo-orchestration
vars:
TOPOLOGY: "sharded_cluster"
AUTH: "auth"
SSL: "ssl"
- func: start-cse-servers
- func: run-tests
vars:
TOPOLOGY: "sharded_cluster"
AUTH: "auth"
SSL: "ssl"
MONGO_GO_DRIVER_COMPRESSOR: "snappy"
- name: test-sharded-auth-ssl-zlib-compression
tags: ["test", "sharded", "authssl", "compression", "zlib"]
commands:
- func: bootstrap-mongo-orchestration
vars:
TOPOLOGY: "sharded_cluster"
AUTH: "auth"
SSL: "ssl"
- func: start-cse-servers
- func: run-tests
vars:
TOPOLOGY: "sharded_cluster"
AUTH: "auth"
SSL: "ssl"
MONGO_GO_DRIVER_COMPRESSOR: "zlib"
- name: test-sharded-auth-ssl-zstd-compression
tags: ["test", "sharded", "authssl", "compression", "zstd"]
commands:
- func: bootstrap-mongo-orchestration
vars:
TOPOLOGY: "sharded_cluster"
AUTH: "auth"
SSL: "ssl"
- func: start-cse-servers
- func: run-tests
vars:
TOPOLOGY: "sharded_cluster"
AUTH: "auth"
SSL: "ssl"
MONGO_GO_DRIVER_COMPRESSOR: "zstd"
- name: test-sharded-auth-nossl
tags: ["test", "sharded", "authssl"]
commands:
- func: bootstrap-mongo-orchestration
vars:
TOPOLOGY: "sharded_cluster"
AUTH: "auth"
SSL: "nossl"
- func: start-cse-servers
- func: run-tests
vars:
TOPOLOGY: "sharded_cluster"
AUTH: "auth"
SSL: "nossl"
- name: test-enterprise-auth-plain
tags: ["test", "enterprise-auth"]
commands:
- func: run-enterprise-auth-tests
- name: test-enterprise-auth-gssapi
tags: ["test", "enterprise-auth"]
commands:
- func: run-enterprise-gssapi-auth-tests
vars:
MONGO_GO_DRIVER_COMPRESSOR: "snappy"
# Build the compilecheck submodule with all supported versions of Go >=
# the minimum supported version.
- name: go-build
tags: ["compile-check"]
commands:
- command: subprocess.exec
params:
binary: bash
args: [*task-runner, build-compile-check-all]
# Build with the same Go version that we're using for tests.
- name: build
tags: ["compile-check"]
commands:
- command: subprocess.exec
params:
binary: bash
# Set the GO_VERSION to empty string to use the Go installation in the
# PATH.
env:
GO_VERSION: ""
args: [*task-runner, build]
- name: "atlas-test"
commands:
- func: "run-atlas-test"
- name: "aws-auth-test"
commands:
- func: bootstrap-mongo-orchestration
vars:
AUTH: "auth"
ORCHESTRATION_FILE: "auth-aws.json"
TOPOLOGY: "server"
- func: add-aws-auth-variables-to-file
- func: run-aws-auth-test-with-regular-aws-credentials
- func: run-aws-auth-test-with-assume-role-credentials
- func: run-aws-auth-test-with-aws-credentials-as-environment-variables
- func: run-aws-auth-test-with-aws-credentials-and-session-token-as-environment-variables
- func: run-aws-auth-test-with-aws-EC2-credentials
- func: run-aws-ECS-auth-test
- func: run-aws-auth-test-with-aws-web-identity-credentials
- name: "test-standalone-versioned-api"
tags: ["versioned-api"]
commands:
- func: bootstrap-mongo-orchestration
vars:
TOPOLOGY: "server"
AUTH: "auth"
SSL: "nossl"
REQUIRE_API_VERSION: true
- func: start-cse-servers
- func: run-versioned-api-test
vars:
TOPOLOGY: "server"
AUTH: "auth"
SSL: "nossl"
REQUIRE_API_VERSION: true
- name: "test-sharded-versioned-api"
tags: ["versioned-api"]
commands:
- func: bootstrap-mongo-orchestration
vars:
TOPOLOGY: "sharded_cluster"
AUTH: "auth"
SSL: "nossl"
REQUIRE_API_VERSION: true
- func: start-cse-servers
- func: run-versioned-api-test
vars:
TOPOLOGY: "sharded_cluster"
AUTH: "auth"
SSL: "nossl"
REQUIRE_API_VERSION: true
- name: "test-standalone-versioned-api-test-commands"
tags: ["versioned-api"]
commands:
- func: bootstrap-mongo-orchestration
vars:
TOPOLOGY: "server"
AUTH: "noauth"
SSL: "nossl"
ORCHESTRATION_FILE: "versioned-api-testing.json"
- func: start-cse-servers
- func: run-versioned-api-test
vars:
TOPOLOGY: "server"
AUTH: "noauth"
SSL: "nossl"
- name: "test-kms-kmip"
tags: ["kms-kmip"]
commands:
- func: bootstrap-mongo-orchestration
vars:
TOPOLOGY: "server"
AUTH: "noauth"
SSL: "nossl"
- func: start-cse-servers
- func: run-kmip-tests
vars:
TOPOLOGY: "server"
AUTH: "noauth"
SSL: "nossl"
- name: "test-client-side-encryption"
tags: ["client-side-encryption-test"]
commands:
- func: bootstrap-mongo-orchestration
vars:
TOPOLOGY: "replica_set"
AUTH: "noauth"
SSL: "nossl"
- func: start-cse-servers
- func: run-client-side-encryption-test
vars:
TOPOLOGY: "replica_set"
AUTH: "noauth"
SSL: "nossl"
- name: "testgcpkms-task"
commands:
- command: subprocess.exec
type: test
params:
binary: bash
args: [*task-runner, test-gcpkms]
- name: "testgcpkms-fail-task"
# testgcpkms-fail-task runs in a non-GCE environment.
# It is expected to fail to obtain GCE credentials.
commands:
- command: subprocess.exec
type: test
params:
binary: bash
env:
EXPECT_ERROR: "1"
args: [*task-runner, test-gcpkms]
- name: "testawskms-task"
commands:
- func: assume-test-secrets-ec2-role
- command: subprocess.exec
type: test
params:
binary: "bash"
add_expansions_to_env: true
args: [*task-runner, test-awskms]
- name: "testawskms-fail-task"
# testawskms-fail-task runs without environment variables.
# It is expected to fail to obtain credentials.
commands:
- func: assume-test-secrets-ec2-role
- command: subprocess.exec
type: test
params:
binary: "bash"
add_expansions_to_env: true
env:
EXPECT_ERROR: 'status=400'
args: [*task-runner, test-awskms]
- name: "testazurekms-task"
commands:
- command: subprocess.exec
type: test
params:
binary: bash
add_expansions_to_env: true
args: [*task-runner, test-azurekms]
- name: "testazurekms-fail-task"
# testazurekms-fail-task runs without environment variables.
# It is expected to fail to obtain credentials.
commands:
- func: assume-test-secrets-ec2-role
- command: subprocess.exec
type: test
params:
binary: bash
add_expansions_to_env: true
env:
EXPECT_ERROR: "1"
args: [*task-runner, test-azurekms]
- name: "test-fuzz"
commands:
- func: bootstrap-mongo-orchestration
- func: run-fuzz-tests
- name: "test-aws-lambda-deployed"
commands:
- command: subprocess.exec
type: test
params:
binary: bash
add_expansions_to_env: true
env:
TEST_LAMBDA_DIRECTORY: ${PROJECT_DIRECTORY}/internal/cmd/faas/awslambda
LAMBDA_STACK_NAME: dbx-go-lambda
AWS_REGION: us-east-1
args: [*task-runner, evg-test-deployed-lambda-aws]
- name: "oidc-auth-test"
commands:
- func: "run-oidc-auth-test-with-test-credentials"
- name: "oidc-auth-test-azure"
commands:
- command: subprocess.exec
type: test
params:
binary: bash
env:
OIDC_ENV: azure
args: [*task-runner, test-oidc-remote]
- name: "oidc-auth-test-gcp"
commands:
- command: subprocess.exec
type: test
params:
binary: bash
env:
OIDC_ENV: gcp
args: [*task-runner, test-oidc-remote]
- name: "oidc-auth-test-k8s"
commands:
- func: assume-test-secrets-ec2-role
- func: "run oidc k8s test"
vars:
VARIANT: eks
- func: "run oidc k8s test"
vars:
VARIANT: gke
- func: "run oidc k8s test"
vars:
VARIANT: aks
- name: "test-search-index"
commands:
- func: "bootstrap-mongo-orchestration"
vars:
VERSION: "latest"
TOPOLOGY: "replica_set"
- func: "run-search-index-tests"
axes:
- id: version
display_name: MongoDB Version
values:
- id: "8.0"
display_name: "8.0"
variables:
VERSION: "8.0"
- id: "7.0"
display_name: "7.0"
variables:
VERSION: "7.0"
- id: "6.0"
display_name: "6.0"
variables:
VERSION: "6.0"
- id: "5.0"
display_name: "5.0"
variables:
VERSION: "5.0"
- id: "4.4"
display_name: "4.4"
variables:
VERSION: "4.4"
- id: "4.2"
display_name: "4.2"
variables:
VERSION: "4.2"
- id: "rapid"
display_name: "rapid"
variables:
VERSION: "rapid"
- id: "latest"
display_name: "latest"
variables:
VERSION: "latest"
# OSes that require >= 3.2 for SSL
- id: os-ssl-32
display_name: OS
values:
- id: "windows-64"
display_name: "Windows 64-bit"
run_on:
- windows-2022-latest-small
variables:
GCC_PATH: "/cygdrive/c/ProgramData/chocolatey/lib/mingw/tools/install/mingw64/bin"
GO_DIST: "C:\\golang\\go1.25"
VENV_BIN_DIR: "Scripts"
DEFAULT_TASK: evg-test
# CSOT tests are unreliable on our slow Windows hosts.
SKIP_CSOT_TESTS: true
- id: "rhel87-64"
display_name: "RHEL 8.7"
run_on: rhel8.7-large
variables:
GO_DIST: "/opt/golang/go1.25"
DEFAULT_TASK: evg-test
- id: "macos"
display_name: "MacOS 14.0"
run_on: macos-14
batchtime: 1440 # Run at most once per 24 hours.
variables:
GO_DIST: "/opt/golang/go1.25"
DEFAULT_TASK: evg-test-load-balancers
# CSOT tests are unreliable on our slow macOS hosts.
SKIP_CSOT_TESTS: true
# OSes that require >= 4.0 for SSL
- id: os-ssl-40
display_name: OS
values:
- id: "windows-64"
display_name: "Windows 64-bit"
run_on:
- windows-2022-latest-small
variables:
GCC_PATH: "/cygdrive/c/ProgramData/chocolatey/lib/mingw/tools/install/mingw64/bin"
GO_DIST: "C:\\golang\\go1.25"
VENV_BIN_DIR: "Scripts"
DEFAULT_TASK: evg-test
# CSOT tests are unreliable on our slow Windows hosts.
SKIP_CSOT_TESTS: true
- id: "rhel87-64"
display_name: "RHEL 8.7"
run_on: rhel8.7-large
variables:
GO_DIST: "/opt/golang/go1.25"
DEFAULT_TASK: evg-test
- id: "macos"
display_name: "MacOS 14.0"
run_on: macos-14
batchtime: 1440 # Run at most once per 24 hours.
variables:
GO_DIST: "/opt/golang/go1.25"
DEFAULT_TASK: evg-test-load-balancers
# CSOT tests are unreliable on our slow macOS hosts.
SKIP_CSOT_TESTS: true
- id: ocsp-rhel-87
display_name: OS
values:
- id: "rhel87"
display_name: "RHEL 8.7"
run_on: rhel8.7-large
variables:
GO_DIST: "/opt/golang/go1.25"
DEFAULT_TASK: evg-test
- id: os-aws-auth
display_name: OS
values:
- id: "windows-64-2022-latest-small"
display_name: "Windows 64-bit"
run_on:
- windows-2022-latest-small
variables:
GCC_PATH: "/cygdrive/c/ProgramData/chocolatey/lib/mingw/tools/install/mingw64/bin"
GO_DIST: "C:\\golang\\go1.25"
SKIP_ECS_AUTH_TEST: true
DEFAULT_TASK: evg-test
# CSOT tests are unreliable on our slow Windows hosts.
SKIP_CSOT_TESTS: true
- id: "ubuntu2004-64"
display_name: "Ubuntu 20.04"
run_on: ubuntu2004-test
variables:
GO_DIST: "/opt/golang/go1.25"
DEFAULT_TASK: evg-test
- id: "macos"
display_name: "MacOS 14.0"
run_on: macos-14
batchtime: 1440 # Run at most once per 24 hours.
variables:
GO_DIST: "/opt/golang/go1.25"
SKIP_ECS_AUTH_TEST: true
SKIP_EC2_AUTH_TEST: true
SKIP_WEB_IDENTITY_AUTH_TEST: true
DEFAULT_TASK: evg-test-load-balancers
# CSOT tests are unreliable on our slow macOS hosts.
SKIP_CSOT_TESTS: true
- id: os-faas-80
display_name: OS
values:
- id: "rhel87-large"
display_name: "RHEL 8.7"
run_on: rhel8.7-large
variables:
GO_DIST: "/opt/golang/go1.25"
task_groups:
- name: testgcpkms_task_group
setup_group_can_fail_task: true
setup_group_timeout_secs: 1800 # 30 minutes
setup_group:
- func: setup-system
- func: assume-test-secrets-ec2-role
- command: subprocess.exec
params:
binary: "bash"
add_expansions_to_env: true
args:
- ${DRIVERS_TOOLS}/.evergreen/csfle/gcpkms/setup.sh
teardown_group:
- command: subprocess.exec
params:
binary: "bash"
args:
- ${DRIVERS_TOOLS}/.evergreen/csfle/gcpkms/teardown.sh
- func: teardown
- func: handle-test-artifacts
tasks:
- testgcpkms-task
- name: testazurekms_task_group
setup_group_can_fail_task: true
teardown_task_can_fail_task: true
setup_group_timeout_secs: 1800 # 30 minutes
setup_group:
- func: setup-system
- func: assume-test-secrets-ec2-role
- command: subprocess.exec
params:
binary: bash
add_expansions_to_env: true
env:
AZUREKMS_VMNAME_PREFIX: GODRIVER
args:
- ${DRIVERS_TOOLS}/.evergreen/csfle/azurekms/setup.sh
teardown_group:
- command: subprocess.exec
params:
binary: "bash"
args:
- ${DRIVERS_TOOLS}/.evergreen/csfle/azurekms/teardown.sh
- func: teardown
- func: handle-test-artifacts
tasks:
- testazurekms-task
- name: testoidc_task_group
setup_group_can_fail_task: true
setup_group_timeout_secs: 1800
# TODO(DRIVERS-3141): Uncomment the following line once the teardown bug is
# fixed. See DRIVERS-3141 for more context.
#
# teardown_task_can_fail_task: true
teardown_group_timeout_secs: 180 # 3 minutes (max allowed time)
setup_group:
- func: setup-system
- func: assume-test-secrets-ec2-role
- command: subprocess.exec
params:
binary: bash
include_expansions_in_env: ["AWS_ACCESS_KEY_ID", "AWS_SECRET_ACCESS_KEY", "AWS_SESSION_TOKEN"]
env:
MONGODB_VERSION: "8.0"
args:
- ${DRIVERS_TOOLS}/.evergreen/auth_oidc/setup.sh
teardown_task:
- command: subprocess.exec
params:
binary: bash
args:
- ${DRIVERS_TOOLS}/.evergreen/auth_oidc/teardown.sh
- func: teardown
- func: handle-test-artifacts
tasks:
- oidc-auth-test
- name: testazureoidc_task_group
setup_group_can_fail_task: true
setup_group_timeout_secs: 1800
teardown_task_can_fail_task: true
teardown_group_timeout_secs: 180 # 3 minutes (max allowed time)
setup_group:
- func: setup-system
- func: assume-test-secrets-ec2-role
- command: subprocess.exec
params:
binary: bash
add_expansions_to_env: true
env:
AZUREOIDC_VMNAME_PREFIX: "GO_DRIVER"
args:
- ${DRIVERS_TOOLS}/.evergreen/auth_oidc/azure/setup.sh
teardown_task:
- command: subprocess.exec
params:
binary: bash
args:
- ${DRIVERS_TOOLS}/.evergreen/auth_oidc/azure/teardown.sh
- func: teardown
- func: handle-test-artifacts
tasks:
- oidc-auth-test-azure
- name: testgcpoidc_task_group
setup_group_can_fail_task: true
setup_group_timeout_secs: 1800
teardown_task_can_fail_task: true
teardown_group_timeout_secs: 180 # 3 minutes (max allowed time)
setup_group:
- func: setup-system
- func: assume-test-secrets-ec2-role
- command: subprocess.exec
params:
binary: bash
add_expansions_to_env: true
env:
AZUREOIDC_VMNAME_PREFIX: "GO_DRIVER"
args:
- ${DRIVERS_TOOLS}/.evergreen/auth_oidc/gcp/setup.sh
teardown_task:
- command: subprocess.exec
params:
binary: bash
args:
- ${DRIVERS_TOOLS}/.evergreen/auth_oidc/gcp/teardown.sh
- func: teardown
- func: handle-test-artifacts
tasks:
- oidc-auth-test-gcp
- name: testk8soidc_task_group
setup_group_can_fail_task: true
setup_group_timeout_secs: 1800
teardown_task_can_fail_task: true
teardown_group_timeout_secs: 180 # 3 minutes (max allowed time)
setup_group:
- func: setup-system
- func: assume-test-secrets-ec2-role
- command: subprocess.exec
params:
binary: bash
include_expansions_in_env: ["AWS_ACCESS_KEY_ID", "AWS_SECRET_ACCESS_KEY", "AWS_SESSION_TOKEN"]
args:
- ${DRIVERS_TOOLS}/.evergreen/auth_oidc/k8s/setup.sh
teardown_group:
- command: subprocess.exec
params:
binary: bash
args:
- ${DRIVERS_TOOLS}/.evergreen/auth_oidc/k8s/teardown.sh
- func: teardown
- func: handle-test-artifacts
tasks:
- oidc-auth-test-k8s
- name: test-aws-lambda-task-group
setup_group:
- func: setup-system
- func: assume-test-secrets-ec2-role
- command: subprocess.exec
params:
working_dir: src/go.mongodb.org/mongo-driver
binary: bash
include_expansions_in_env: [AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_SESSION_TOKEN]
env:
MONGODB_VERSION: ${VERSION}
LAMBDA_STACK_NAME: dbx-go-lambda
args:
- ${DRIVERS_TOOLS}/.evergreen/atlas/setup.sh
teardown_group:
- command: subprocess.exec
params:
working_dir: src/go.mongodb.org/mongo-driver
binary: bash
add_expansions_to_env: true
env:
LAMBDA_STACK_NAME: dbx-go-lambda
AWS_REGION: us-east-1
args:
- ${DRIVERS_TOOLS}/.evergreen/atlas/teardown.sh
- func: teardown
- func: handle-test-artifacts
setup_group_can_fail_task: true
setup_group_timeout_secs: 1800
tasks:
- test-aws-lambda-deployed
- name: test-search-index-task-group
setup_group:
- func: setup-system
- func: assume-test-secrets-ec2-role
- command: subprocess.exec
params:
working_dir: src/go.mongodb.org/mongo-driver
binary: bash
include_expansions_in_env: [AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_SESSION_TOKEN, MONGODB_URI]
env:
MONGODB_VERSION: ${VERSION}
LAMBDA_STACK_NAME: dbx-go-lambda
args:
- ${DRIVERS_TOOLS}/.evergreen/atlas/setup.sh
- command: expansions.update
params:
file: src/go.mongodb.org/mongo-driver/atlas-expansion.yml
- command: shell.exec
params:
working_dir: src/go.mongodb.org/mongo-driver
shell: bash
script: |-
echo "SEARCH_INDEX_URI: ${MONGODB_URI}" > atlas-expansion.yml
- command: expansions.update
params:
file: src/go.mongodb.org/mongo-driver/atlas-expansion.yml
teardown_group:
- command: subprocess.exec
params:
working_dir: src/go.mongodb.org/mongo-driver
binary: bash
args:
- ${DRIVERS_TOOLS}/.evergreen/atlas/teardown.sh
- func: teardown
- func: handle-test-artifacts
setup_group_can_fail_task: true
setup_group_timeout_secs: 1800
tasks:
- test-search-index
buildvariants:
- name: static-analysis
tags: ["pullrequest"]
display_name: "Static Analysis"
run_on:
- rhel8.7-small
expansions:
# Keep this in sync with go version used in etc/golangci-lint.sh
GO_DIST: "/opt/golang/go1.25"
tasks:
- name: ".static-analysis"
- name: pull-request-helpers
tags: ["pullrequest"]
display_name: "Pull Request Helpers"
run_on:
- rhel8.7-small
expansions:
GO_DIST: "/opt/golang/go1.25"
tasks:
- name: "pull-request-helpers"
- name: perf
tags: ["pullrequest"]
display_name: "Performance"
run_on: rhel90-dbx-perf-large
expansions:
GO_DIST: "/opt/golang/go1.25"
tasks:
- name: ".performance"
- name: build-check
tags: ["pullrequest"]
display_name: "Compile Only Checks"
run_on:
- ubuntu2204-small
expansions:
GO_DIST: "/opt/golang/go1.25"
tasks:
- name: ".compile-check"
- name: backport-pr
display_name: "Backport PR"
run_on:
- rhel8.7-small
expansions:
GO_DIST: "/opt/golang/go1.25"
tasks:
- name: "backport-pr"
- name: atlas-test
tags: ["pullrequest"]
display_name: "Atlas test"
run_on:
- rhel8.7-large
expansions:
GO_DIST: "/opt/golang/go1.25"
tasks:
- name: "atlas-test"
- name: docker-runner-test
tags: ["pullrequest"]
display_name: "Docker Runner Test"
run_on:
- ubuntu2204-large
expansions:
GO_DIST: "/opt/golang/go1.25"
tasks:
- name: "test-docker-runner"
- name: goroutine-leaks-test
tags: ["pullrequest"]
display_name: "Goroutine Leaks Test"
run_on:
- ubuntu2204-large
expansions:
GO_DIST: "/opt/golang/go1.25"
tasks:
- name: ".goleak"
- matrix_name: "tests-rhel-44-plus-zlib-zstd-support"
tags: ["pullrequest"]
matrix_spec: {version: ["4.2", "4.4", "5.0", "6.0", "7.0", "8.0"], os-ssl-40: ["rhel87-64"]}
display_name: "${version} ${os-ssl-40}"
tasks:
- name: ".test !.enterprise-auth !.snappy"
- matrix_name: "tests-windows-42-plus-zlib-zstd-support"
matrix_spec: {version: ["4.2", "4.4", "5.0", "6.0", "7.0"], os-ssl-40: ["windows-64"]}
display_name: "${version} ${os-ssl-40}"
tasks:
- name: ".test !.enterprise-auth !.snappy"
- matrix_name: "tests-windows-80-zlib-zstd-support"
tags: ["pullrequest"]
matrix_spec: {version: ["8.0"], os-ssl-40: ["windows-64"]}
display_name: "${version} ${os-ssl-40}"
tasks:
- name: ".test !.enterprise-auth !.snappy"
- matrix_name: "tests-latest-rapid-zlib-zstd-support"
matrix_spec: {version: ["latest", "rapid"], os-ssl-40: ["windows-64", "rhel87-64"]}
display_name: "${version} ${os-ssl-40}"
tasks:
- name: ".test !.enterprise-auth !.snappy"
- matrix_name: "enterprise-auth-tests"
matrix_spec: {os-ssl-32: "*"}
display_name: "Enterprise Auth - ${os-ssl-32}"
tasks:
- name: ".test .enterprise-auth"
- matrix_name: "aws-auth-test"
matrix_spec: {version: ["4.4", "5.0", "6.0", "7.0", "8.0", "latest", "rapid"], os-aws-auth: "*"}
display_name: "MONGODB-AWS Auth ${version} ${os-aws-auth}"
tasks:
- name: "aws-auth-test"
- matrix_name: "ocsp-test"
matrix_spec: {version: ["4.4", "5.0", "6.0", "7.0", "8.0", "latest", "rapid"], ocsp-rhel-87: ["rhel87"]}
display_name: "OCSP ${version} ${ocsp-rhel-87}"
batchtime: 20160 # Use a batchtime of 14 days as suggested by the OCSP test README
tasks:
- name: ".ocsp"
- matrix_name: "ocsp-test-windows"
matrix_spec: {version: ["4.4", "5.0", "6.0", "7.0", "8.0", "latest", "rapid"], os-ssl-40: ["windows-64"]}
display_name: "OCSP ${version} ${os-ssl-40}"
batchtime: 20160 # Use a batchtime of 14 days as suggested by the OCSP test README
tasks:
# Windows MongoDB servers do not staple OCSP responses and only support RSA.
- name: ".ocsp-rsa !.ocsp-staple"
- matrix_name: "ocsp-test-macos"
matrix_spec: {version: ["4.4", "5.0", "6.0", "7.0", "8.0", "latest", "rapid"], os-ssl-40: ["macos"]}
display_name: "OCSP ${version} ${os-ssl-40}"
batchtime: 20160 # Use a batchtime of 14 days as suggested by the OCSP test README
tasks:
# macos MongoDB servers do not staple OCSP responses and only support RSA.
- name: ".ocsp-rsa !.ocsp-staple"
- matrix_name: "race-test"
tags: ["pullrequest"]
matrix_spec: {version: ["7.0"], os-ssl-40: ["rhel87-64"]}
display_name: "Race Detector Test"
tasks:
- name: ".race"
- matrix_name: "versioned-api-test"
tags: ["pullrequest"]
matrix_spec: {version: ["5.0", "6.0", "7.0", "8.0"], os-ssl-40: ["windows-64", "rhel87-64"]}
display_name: "API Version ${version} ${os-ssl-40}"
tasks:
- name: ".versioned-api"
- matrix_name: "versioned-api-latest-rapid-test"
matrix_spec: {version: ["latest", "rapid"], os-ssl-40: ["windows-64", "rhel87-64"]}
display_name: "API Version ${version} ${os-ssl-40}"
tasks:
- name: ".versioned-api"
- matrix_name: "client-side-encryption-test"
matrix_spec: {version: ["latest", "rapid"], os-ssl-40: ["rhel87-64"]}
display_name: "Client Side Encryption Tests ${version} ${os-ssl-40}"
tasks:
- name: ".client-side-encryption-test"
- matrix_name: "load-balancer-test"
tags: ["pullrequest"]
matrix_spec: {version: ["5.0", "6.0", "7.0", "8.0"], os-ssl-40: ["rhel87-64"]}
display_name: "Load Balancer Support ${version} ${os-ssl-40}"
tasks:
- name: ".load-balancer"
- matrix_name: "load-balancer-latest-rapid-test"
matrix_spec: {version: ["latest", "rapid"], os-ssl-40: ["rhel87-64"]}
display_name: "Load Balancer Support ${version} ${os-ssl-40}"
tasks:
- name: ".load-balancer"
- matrix_name: "kms-kmip-test"
matrix_spec: {version: ["7.0"], os-ssl-40: ["rhel87-64"]}
display_name: "KMS KMIP ${os-ssl-40}"
tasks:
- name: ".kms-kmip"
- matrix_name: "fuzz-test"
matrix_spec: {version: ["5.0"], os-ssl-40: ["rhel87-64"]}
display_name: "Fuzz ${version} ${os-ssl-40}"
tasks:
- name: "test-fuzz"
batchtime: 1440 # Run at most once per 24 hours.
- matrix_name: "faas-test"
matrix_spec: {version: ["7.0"], os-faas-80: ["rhel87-large"]}
display_name: "FaaS ${version} ${os-faas-80}"
tasks:
- test-aws-lambda-task-group
- matrix_name: "searchindex-test"
matrix_spec: {version: ["7.0"], os-faas-80: ["rhel87-large"]}
display_name: "Search Index ${version} ${os-faas-80}"
tasks:
- test-search-index-task-group
- name: testgcpkms-variant
display_name: "GCP KMS"
run_on:
- rhel8.7-small
expansions:
GO_DIST: "/opt/golang/go1.25"
tasks:
- name: testgcpkms_task_group
batchtime: 20160 # Use a batchtime of 14 days as suggested by the CSFLE test README
- testgcpkms-fail-task
- name: testawskms-variant
display_name: "AWS KMS"
run_on:
- rhel8.7-small
expansions:
GO_DIST: "/opt/golang/go1.25"
tasks:
- testawskms-task
- testawskms-fail-task
- name: testazurekms-variant
display_name: "AZURE KMS"
run_on:
- rhel8.7-small
expansions:
GO_DIST: "/opt/golang/go1.25"
tasks:
- name: testazurekms_task_group
batchtime: 20160 # Use a batchtime of 14 days as suggested by the CSFLE test README
- testazurekms-fail-task
- name: testoidc-variant
display_name: "OIDC"
run_on:
- ubuntu2204-small
expansions:
GO_DIST: "/opt/golang/go1.25"
tasks:
- name: testoidc_task_group
- name: testazureoidc_task_group
- name: testgcpoidc_task_group
- name: testk8soidc_task_group
================================================
FILE: .evergreen/krb5.config
================================================
[realms]
LDAPTEST.10GEN.CC = {
kdc = ldaptest.10gen.cc
admin_server = ldaptest.10gen.cc
}
[libdefaults]
rdns = false
================================================
FILE: .evergreen/ocsp-requirements.txt
================================================
asn1crypto==1.3.0
bottle==0.12.20
oscrypto==1.2.0
================================================
FILE: .evergreen/run-mongodb-aws-ecs-test.sh
================================================
#!/bin/bash
set -o errexit # Exit the script with error if any of the commands fail
############################################
# Main Program #
############################################
if [[ -z "$1" ]]; then
echo "usage: $0 <MONGODB_URI>"
exit 1
fi
export MONGODB_URI="$1"
echo "Running MONGODB-AWS ECS authentication tests"
if echo "$MONGODB_URI" | grep -q "@"; then
echo "MONGODB_URI unexpectedly contains user credentials in ECS test!";
exit 1
fi
./src/main
================================================
FILE: .evergreen/run-task.sh
================================================
#!/usr/bin/env bash
#
# Source the env.sh file and run the given task
set -eu
SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
PROJECT_DIRECTORY=$(dirname $SCRIPT_DIR)
pushd ${PROJECT_DIRECTORY} > /dev/null
source env.sh
task "$@"
popd > /dev/null
================================================
FILE: .evergreen/setup-system.sh
================================================
#!/usr/bin/env bash
#
# Set up environment and write env.sh and expansion.yml files.
set -eu
# Set up default environment variables.
SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
PROJECT_DIRECTORY=$(dirname $SCRIPT_DIR)
pushd $PROJECT_DIRECTORY
ROOT_DIR=$(dirname $PROJECT_DIRECTORY)
DRIVERS_TOOLS=${DRIVERS_TOOLS:-${ROOT_DIR}/drivers-evergreen-tools}
MONGO_ORCHESTRATION_HOME="${DRIVERS_TOOLS}/.evergreen/orchestration"
MONGODB_BINARIES="${DRIVERS_TOOLS}/mongodb/bin"
OS="${OS:-""}"
# Set Golang environment vars. GOROOT is wherever current Go distribution is, and is set in evergreen config.
# GOPATH is always 3 directories up from pwd on EVG; GOCACHE is under .cache in the pwd.
GOROOT=${GOROOT:-$(dirname "$(dirname "$(which go)")")}
export GOPATH=${GOPATH:-$ROOT_DIR}
export GOCACHE="${GO_CACHE:-$PROJECT_DIRECTORY/.cache}"
# Handle paths on Windows.
if [ "Windows_NT" = "${OS:-}" ]; then # Magic variable in cygwin
GOPATH=$(cygpath -m $GOPATH)
GOCACHE=$(cygpath -w $GOCACHE)
DRIVERS_TOOLS=$(cygpath -m $DRIVERS_TOOLS)
PROJECT_DIRECTORY=$(cygpath -m $PROJECT_DIRECTORY)
EXTRA_PATH=/cygdrive/c/libmongocrypt/bin
MONGO_ORCHESTRATION_HOME=$(cygpath -m $MONGO_ORCHESTRATION_HOME)
MONGODB_BINARIES=$(cygpath -m $MONGODB_BINARIES)
# Set home variables for Windows, too.
USERPROFILE=$(cygpath -w "$ROOT_DIR")
HOME=$USERPROFILE
else
EXTRA_PATH=${GCC:-}
fi
# Add binaries to the path.
PATH="${GOROOT}/bin:${GOPATH}/bin:${MONGODB_BINARIES}:${EXTRA_PATH}:${PATH}"
# Get the current unique version of this checkout.
if [ "${IS_PATCH:-}" = "true" ]; then
CURRENT_VERSION=$(git describe)-patch-${VERSION_ID}
else
CURRENT_VERSION=latest
fi
# Ensure a checkout of drivers-tools.
if [ ! -d "$DRIVERS_TOOLS" ]; then
git clone https://github.com/mongodb-labs/drivers-evergreen-tools $DRIVERS_TOOLS
fi
# Write the .env file for drivers-tools.
cat <<EOT > ${DRIVERS_TOOLS}/.env
SKIP_LEGACY_SHELL=1
DRIVERS_TOOLS="$DRIVERS_TOOLS"
MONGO_ORCHESTRATION_HOME="$MONGO_ORCHESTRATION_HOME"
MONGODB_BINARIES="$MONGODB_BINARIES"
TMPDIR="$MONGO_ORCHESTRATION_HOME/db"
EOT
# Check Go installation.
go version
go env
# Install taskfile.
go install github.com/go-task/task/v3/cmd/task@v3.39.1
# Write our own env file.
cat <<EOT > env.sh
export GOROOT="$GOROOT"
export GOPATH="$GOPATH"
export GOCACHE="$GOCACHE"
export DRIVERS_TOOLS="$DRIVERS_TOOLS"
export PROJECT_DIRECTORY="$PROJECT_DIRECTORY"
export MONGODB_BINARIES="$MONGODB_BINARIES"
export PATH="$PATH"
EOT
if [ "Windows_NT" = "$OS" ]; then
echo "export USERPROFILE=$USERPROFILE" >> env.sh
echo "export HOME=$HOME" >> env.sh
fi
# source the env.sh file and write the expansion file.
cat <<EOT > expansion.yml
CURRENT_VERSION: "$CURRENT_VERSION"
DRIVERS_TOOLS: "$DRIVERS_TOOLS"
PROJECT_DIRECTORY: "$PROJECT_DIRECTORY"
RUN_TASK: "$PROJECT_DIRECTORY/.evergreen/run-task.sh"
EOT
cat env.sh
popd
================================================
FILE: .github/dependabot.yml
================================================
version: 2
updates:
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "weekly"
groups:
actions:
patterns:
- "*"
- package-ecosystem: gomod
directory: /
schedule:
interval: "weekly"
- package-ecosystem: "gitsubmodule"
directory: "/"
schedule:
interval: "monthly"
================================================
FILE: .github/labeler.yml
================================================
review-priority-normal:
- changed-files:
- any-glob-to-any-file: "*"
documentation:
- changed-files:
- any-glob-to-any-file:
- docs/**
- examples/**
dependencies:
- changed-files:
- any-glob-to-any-file:
- go.mod
================================================
FILE: .github/release.yml
================================================
changelog:
exclude:
labels:
- ignore-for-release
- github_actions
- submodules
authors:
- mongodb-drivers-pr-bot
categories:
- title: ⚠️ Breaking Changes
labels:
- breaking
- title: ✨ New Features
labels:
- enhancement
- feature
- title: 🐛 Fixed
labels:
- bug
- title: 📦 Dependency Updates
labels:
- dependencies
- title: 📝 Other Changes
labels:
- "*"
================================================
FILE: .github/workflows/check-labels.yml
================================================
name: Label Checker
on:
pull_request:
types:
- opened
- synchronize
- reopened
- labeled
- unlabeled
permissions:
pull-requests: read
jobs:
check_labels:
name: Check labels
runs-on: ubuntu-latest
steps:
- uses: docker://agilepathway/pull-request-label-checker@sha256:65e57fd98ba3ab6ca4fcbc5a0aef288dd984ee4ab988f124d83424d19b55b801
with:
one_of: bug,feature,enhancement,documentation,dependencies,ignore-for-release,ci/cd
repo_token: ${{ secrets.GITHUB_TOKEN }}
================================================
FILE: .github/workflows/codeql.yml
================================================
name: "CodeQL"
on:
push:
branches:
- "v1"
- "cloud-*"
- "master"
- "release/*"
- "feature/*"
pull_request:
branches:
- "v1"
- "cloud-*"
- "master"
- "release/*"
- "feature/*"
schedule:
- cron: "36 17 * * 0"
workflow_call:
inputs:
ref:
required: true
type: string
permissions:
contents: read
jobs:
analyze:
name: Analyze (go)
runs-on: "ubuntu-latest"
timeout-minutes: 360
permissions:
# required for all workflows
contents: read
security-events: write
steps:
- name: Checkout repository
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd #v6.0.2
- name: Set up Go
uses: actions/setup-go@4b73464bb391d4059bd26b0524d20df3927bd417 #v6.3.0
with:
go-version: "1.25.0"
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@v4.33.0 #immutable
with:
languages: go
build-mode: manual
- name: Build (CodeQL-instrumented)
shell: bash
run: |
# TODO(GODRIVER-3723): Run using taskfile targets.
go build ./...
go test -short -run ^$$ ./...
go test -v ./internal/test/compilecheck -run '^TestCompileCheck/go:1\.19$'
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v4.33.0 #immutable
with:
category: "/language:go"
================================================
FILE: .github/workflows/create-release-branch.yml
================================================
name: Create Release Branch
on:
workflow_dispatch:
inputs:
branch_name:
description: The name of the new branch
required: true
version:
description: The version to set on the branch
required: true
base_ref:
description: The base reference for the branch
push_changes:
description: Whether to push the changes
default: "true"
permissions:
contents: read
concurrency:
group: create-branch-${{ github.ref }}
cancel-in-progress: true
defaults:
run:
shell: bash -eux {0}
jobs:
create-branch:
environment: release
runs-on: ubuntu-latest
permissions:
id-token: write
contents: write
outputs:
version: ${{ steps.pre-publish.outputs.version }}
steps:
- uses: mongodb-labs/drivers-github-tools/secure-checkout@fac300d2aa6fe2ddd6316aa673df485941b882f0 #v3
with:
app_id: ${{ vars.APP_ID }}
private_key: ${{ secrets.APP_PRIVATE_KEY }}
- uses: mongodb-labs/drivers-github-tools/setup@fac300d2aa6fe2ddd6316aa673df485941b882f0 #v3
with:
aws_role_arn: ${{ secrets.AWS_ROLE_ARN }}
aws_region_name: ${{ vars.AWS_REGION_NAME }}
aws_secret_id: ${{ secrets.AWS_SECRET_ID }}
artifactory_username: ${{ vars.ARTIFACTORY_USERNAME }}
- uses: mongodb-labs/drivers-github-tools/create-branch@fac300d2aa6fe2ddd6316aa673df485941b882f0 #v3
id: create-branch
with:
branch_name: ${{ inputs.branch_name }}
version: ${{ inputs.version }}
base_ref: ${{ inputs.base_ref }}
push_changes: ${{ inputs.push_changes }}
version_bump_script: "go run ${{ github.action_path }}/bump-version.go"
evergreen_project: mongo-go-driver-release
release_workflow_path: ./.github/workflows/release.yml
================================================
FILE: .github/workflows/labeler.yml
================================================
name: "Pull Request Labeler"
on:
- pull_request_target
permissions:
contents: read
jobs:
labeler:
permissions:
contents: read
pull-requests: write
runs-on: ubuntu-latest
steps:
- uses: actions/labeler@634933edcd8ababfe52f92936142cc22ac488b1b #v6.0.1
================================================
FILE: .github/workflows/merge-up.yml
================================================
name: Merge up
on:
push:
branches:
- release/*.*
- v*
permissions:
contents: read
jobs:
merge-up:
name: Create merge up pull request
runs-on: ubuntu-latest
permissions:
id-token: write
contents: write
pull-requests: write
steps:
- uses: mongodb-labs/drivers-github-tools/secure-checkout@fac300d2aa6fe2ddd6316aa673df485941b882f0 #v3
with:
app_id: ${{ vars.PR_APP_ID }}
private_key: ${{ secrets.PR_APP_PRIVATE_KEY }}
# Make sure to include fetch-depth 0 so all branches are fetched, not
# just the current one
fetch-depth: 0
- name: Create pull request
id: create-pull-request
uses: alcaeus/automatic-merge-up-action@e23e7c71d58f12531cbaba73473bbe78fd14baf0 #v1.0.1
with:
ref: ${{ github.ref_name }}
branchNamePattern: "release/<major>.<minor>"
devBranchNamePattern: "v<major>"
fallbackBranch: "master"
ignoredBranches: ${{ vars.IGNORED_MERGE_UP_BRANCHES }}
enableAutoMerge: true
================================================
FILE: .github/workflows/release.yml
================================================
name: Release
on:
workflow_dispatch:
inputs:
version:
description: "The new version to set"
required: true
prev_version:
description: "The previous tagged version"
required: true
push_changes:
description: "Push changes?"
default: true
type: boolean
permissions:
contents: read
defaults:
run:
shell: bash -eux {0}
env:
# Changes per branch
SILK_ASSET_GROUP: mongodb-go-driver
EVERGREEN_PROJECT: mongo-go-driver
jobs:
pre-publish:
environment: release
runs-on: ubuntu-latest
permissions:
id-token: write
contents: write
outputs:
prev_version: ${{ steps.pre-publish.outputs.prev_version }}
steps:
- uses: mongodb-labs/drivers-github-tools/secure-checkout@fac300d2aa6fe2ddd6316aa673df485941b882f0 #v3
with:
app_id: ${{ vars.APP_ID }}
private_key: ${{ secrets.APP_PRIVATE_KEY }}
- uses: mongodb-labs/drivers-github-tools/setup@fac300d2aa6fe2ddd6316aa673df485941b882f0 #v3
with:
aws_role_arn: ${{ secrets.AWS_ROLE_ARN }}
aws_region_name: ${{ vars.AWS_REGION_NAME }}
aws_secret_id: ${{ secrets.AWS_SECRET_ID }}
artifactory_username: ${{ vars.ARTIFACTORY_USERNAME }}
- name: Pre Publish
id: pre-publish
uses: mongodb-labs/drivers-github-tools/golang/pre-publish@fac300d2aa6fe2ddd6316aa673df485941b882f0 #v3
with:
version: ${{ inputs.version }}
push_changes: ${{ inputs.push_changes }}
ignored_branches: ${{ vars.IGNORED_MERGE_UP_BRANCHES }}
static-scan:
needs: [pre-publish]
permissions:
contents: read
security-events: write
uses: ./.github/workflows/codeql.yml
with:
ref: ${{ github.ref }}
publish:
needs: [pre-publish, static-scan]
runs-on: ubuntu-latest
environment: release
permissions:
id-token: write
contents: write
security-events: read
steps:
- uses: mongodb-labs/drivers-github-tools/secure-checkout@fac300d2aa6fe2ddd6316aa673df485941b882f0 #v3
with:
app_id: ${{ vars.APP_ID }}
private_key: ${{ secrets.APP_PRIVATE_KEY }}
- uses: mongodb-labs/drivers-github-tools/setup@fac300d2aa6fe2ddd6316aa673df485941b882f0 #v3
with:
aws_role_arn: ${{ secrets.AWS_ROLE_ARN }}
aws_region_name: ${{ vars.AWS_REGION_NAME }}
aws_secret_id: ${{ secrets.AWS_SECRET_ID }}
artifactory_username: ${{ vars.ARTIFACTORY_USERNAME }}
- name: Publish
uses: mongodb-labs/drivers-github-tools/golang/publish@fac300d2aa6fe2ddd6316aa673df485941b882f0 #v3
with:
version: ${{ inputs.version }}
silk_asset_group: ${{ env.SILK_ASSET_GROUP }}
evergreen_project: ${{ env.EVERGREEN_PROJECT }}
prev_version: ${{ inputs.prev_version }}
push_changes: ${{ inputs.push_changes }}
token: ${{ env.GH_TOKEN }}
================================================
FILE: .github/workflows/scorecard.yml
================================================
# This workflow uses actions that are not certified by GitHub. They are provided
# by a third-party and are governed by separate terms of service, privacy
# policy, and support documentation.
name: Scorecard supply-chain security
on:
# For Branch-Protection check. Only the default branch is supported. See
# https://github.com/ossf/scorecard/blob/main/docs/checks.md#branch-protection
branch_protection_rule:
# To guarantee Maintained check is occasionally updated. See
# https://github.com/ossf/scorecard/blob/main/docs/checks.md#maintained
schedule:
- cron: "24 21 * * 1"
push:
branches: ["master"]
# Declare default permissions as read only.
permissions: read-all
jobs:
analysis:
name: Scorecard analysis
runs-on: ubuntu-latest
# `publish_results: true` only works when run from the default branch. conditional can be removed if disabled.
if: github.event.repository.default_branch == github.ref_name || github.event_name == 'pull_request'
permissions:
# Needed to upload the results to code-scanning dashboard.
security-events: write
# Needed to publish results and get a badge (see publish_results below).
id-token: write
# Uncomment the permissions below if installing in a private repository.
# contents: read
# actions: read
steps:
- name: "Checkout code"
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd #v6.0.2
with:
persist-credentials: false
- name: "Run analysis"
uses: ossf/scorecard-action@4eaacf0543bb3f2c246792bd56e8cdeffafb205a # v2.4.3
with:
results_file: results.sarif
results_format: sarif
# (Optional) "write" PAT token. Uncomment the `repo_token` line below if:
# - you want to enable the Branch-Protection check on a *public* repository, or
# - you are installing Scorecard on a *private* repository
# To create the PAT, follow the steps in https://github.com/ossf/scorecard-action?tab=readme-ov-file#authentication-with-fine-grained-pat-optional.
# repo_token: ${{ secrets.SCORECARD_TOKEN }}
# Public repositories:
# - Publish results to OpenSSF REST API for easy access by consumers
# - Allows the repository to include the Scorecard badge.
# - See https://github.com/ossf/scorecard-action#publishing-results.
# For private repositories:
# - `publish_results` will always be set to `false`, regardless
# of the value entered here.
publish_results: true
# (Optional) Uncomment file_mode if you have a .gitattributes with files marked export-ignore
# file_mode: git
# Upload the results as artifacts (optional). Commenting out will disable uploads of run results in SARIF
# format to the repository Actions tab.
- name: "Upload artifact"
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0
with:
name: SARIF file
path: results.sarif
retention-days: 5
# Upload the results to GitHub's code scanning dashboard (optional).
# Commenting out will disable upload of results to your repo's Code Scanning dashboard
- name: "Upload to code-scanning"
uses: github/codeql-action/upload-sarif@v4.33.0 #immutable
with:
sarif_file: results.sarif
================================================
FILE: .github/workflows/test.yml
================================================
name: GoDriver Tests
on:
push:
pull_request:
permissions:
contents: read
concurrency:
group: test-${{ github.ref }}
cancel-in-progress: true
defaults:
run:
shell: bash -eux {0}
jobs:
pre_commit:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd #v6.0.2
- uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 #v6.2.0
- uses: actions/setup-go@4b73464bb391d4059bd26b0524d20df3927bd417 #v6.3.0
with:
go-version: 'stable'
- uses: pre-commit/action@2c7b3805fd2a0fd8c1884dcaebf91fc102a13ecd #v3.0.1
================================================
FILE: .gitignore
================================================
.vscode
debug
.idea
*.iml
*.ipr
*.iws
.idea
*.sublime-project
*.sublime-workspace
driver-test-data.tar.gz
perf
perf.json
perf.suite
**mongocryptd.pid
*.test
.DS_Store
install
main.so
.cache
install
libmongocrypt
venv
test.suite
go.work.sum
.task
env.sh
expansion.yml
bin
# AWS SAM-generated files
internal/cmd/faas/awslambda/.aws-sam
internal/cmd/faas/awslambda/events/event.json
# Ignore api report files
api-report.md
api-report.txt
# Ignore perf report files
perf-report.md
perf-report.txt
# Ignore secrets files
secrets-expansion.yml
secrets-export.sh
.test.env
================================================
FILE: .gitmodules
================================================
[submodule "specifications"]
path = testdata/specifications
url = https://github.com/mongodb/specifications
================================================
FILE: .golangci.yml
================================================
version: "2"
linters:
default: none
enable:
- errcheck
- gocritic
# TODO(GODRIVER-3712): Enable gosec in golangci-lint version 2.8.0
#- gosec
- govet
- ineffassign
- makezero
- misspell
- nakedret
- paralleltest
- prealloc
- revive
- staticcheck
- unconvert
- unparam
- unused
settings:
errcheck:
exclude-functions:
- .errcheck-excludes
govet:
disable:
- cgocall
- composites
paralleltest:
# Ignore missing calls to `t.Parallel()` and only report incorrect uses of
# `t.Parallel()`.
ignore-missing: true
staticcheck:
checks:
- all
# Disable deprecation warnings for now.
- -SA1012
# Disable "do not pass a nil Context" to allow testing nil contexts in
# tests.
- -SA1019
exclusions:
generated: lax
rules:
# Ignore some linters for example code that is intentionally simplified.
- linters:
- errcheck
- revive
path: examples/
# Disable "unused" linter for code files that depend on the
# "mongocrypt.MongoCrypt" type because the linter build doesn't work
# correctly with CGO enabled. As a result, all calls to a
# "mongocrypt.MongoCrypt" API appear to always panic (see
# mongocrypt_not_enabled.go), leading to confusing messages about unused
# code.
- linters:
- unused
path: x/mongo/driver/crypt.go|mongo/(crypt_retrievers|mongocryptd).go
# Ignore "TLS MinVersion too low", "TLS InsecureSkipVerify set true", and
# "Use of weak random number generator (math/rand instead of crypto/rand)"
# in tests. Disable gosec entirely for test files to reduce noise.
- linters:
- gosec
path: _test\.go
# Ignore prealloc warnings for test files.
- linters:
- prealloc
path: _test\.go
# Ignore missing comments for exported variable/function/type for code in
# the "internal" and "benchmark" directories.
- path: (internal\/|benchmark\/)
text: exported (.+) should have comment( \(or a comment on this block\))? or be unexported
# Ignore missing package comments for directories that aren't frequently
# used by external users.
- path: (internal\/|benchmark\/|x\/|cmd\/|mongo\/integration\/)
text: should have a package comment
# Add all default excluded issues except issues related to exported
# types/functions not having comments; we want those warnings. The
# defaults are copied from the "--exclude-use-default" documentation on
# https://golangci-lint.run/usage/configuration/#command-line-options
#
## Defaults ##
#
# EXC0001 errcheck: Almost all programs ignore errors on these functions
# and in most cases it's ok
- path: (.+)\.go$
text: Error return value of .((os\.)?std(out|err)\..*|.*Close|.*Flush|os\.Remove(All)?|.*print(f|ln)?|os\.(Un)?Setenv). is not checked
# EXC0003 golint: False positive when tests are defined in package 'test'
- path: (.+)\.go$
text: func name will be used as test\.Test.* by other packages, and that stutters; consider calling this
# EXC0004 govet: Common false positives
- path: (.+)\.go$
text: (possible misuse of unsafe.Pointer|should have signature)
# EXC0005 staticcheck: Developers tend to write in C-style with an explicit 'break' in a 'switch', so it's ok to ignore
- path: (.+)\.go$
text: ineffective break statement. Did you mean to break out of the outer loop
# EXC0006 gosec: Too many false-positives on 'unsafe' usage
- path: (.+)\.go$
text: Use of unsafe calls should be audited
# EXC0007 gosec: Too many false-positives for parametrized shell calls
- path: (.+)\.go$
text: Subprocess launch(ed with variable|ing should be audited)
# EXC0008 gosec: Duplicated errcheck checks
- path: (.+)\.go$
text: (G104|G307)
# EXC0009 gosec: Too many issues in popular repos
- path: (.+)\.go$
text: (Expect directory permissions to be 0750 or less|Expect file permissions to be 0600 or less)
# EXC0010 gosec: False positive is triggered by
# 'src, err := ioutil.ReadFile(filename)'
- path: (.+)\.go$
text: Potential file inclusion via variable
## End Defaults ##
# Ignore capitalization warning for this weird field name.
- path: (.+)\.go$
text: "var-naming: struct field CqCssWxW should be CqCSSWxW"
# Ignore warnings for common "wiremessage.Read..." usage because the
# safest way to use that API is by assigning possibly unused returned byte
# buffers.
- path: (.+)\.go$
text: "SA4006: this value of `wm` is never used"
- path: (.+)\.go$
text: "SA4006: this value of `rem` is never used"
- path: (.+)\.go$
text: ineffectual assignment to wm
- path: (.+)\.go$
text: ineffectual assignment to rem
paths:
- (^|/)testdata($|/)
- (^|/)etc($|/)
# Disable all linters for copied third-party code.
- internal/rand
- internal/aws
- internal/assert
formatters:
enable:
- goimports
exclusions:
generated: lax
paths:
- (^|/)testdata($|/)
- (^|/)etc($|/)
- internal/rand
- internal/aws
- internal/assert
================================================
FILE: .pre-commit-config.yaml
================================================
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v6.0.0
hooks:
- id: check-case-conflict
- id: check-executables-have-shebangs
- id: check-added-large-files
- id: check-case-conflict
- id: check-merge-conflict
- id: check-json
- id: end-of-file-fixer
exclude: ^(vendor/|bson/testdata/lorem.txt)
exclude_types: [json, yaml]
- id: trailing-whitespace
exclude: ^(vendor/|internal/assert/assertions_test.go|bson/testdata/lorem.txt)
exclude_types: [json, yaml]
- repo: https://github.com/executablebooks/mdformat
rev: 0.7.17
hooks:
- id: mdformat
exclude: ^vendor/
- repo: https://github.com/python-jsonschema/check-jsonschema
rev: 0.27.0
hooks:
- id: check-github-workflows
# We use the Python version instead of the original version which seems to require Docker
# https://github.com/koalaman/shellcheck-precommit
- repo: https://github.com/shellcheck-py/shellcheck-py
rev: v0.9.0.6
hooks:
- id: shellcheck
name: shellcheck
args: ["--severity=warning"]
- repo: https://github.com/codespell-project/codespell
rev: "v2.2.6"
hooks:
- id: codespell
args: ["-L", "te,fo,fle,alo,nin,compres,wil,collone,asess,sav,ot,wll,dne,nulll,hellow,aks"]
exclude: ^(vendor/|internal/cmd/benchmark/operation_test.go|bson/testdata/)
exclude_types: [json, yaml, pem]
- repo: https://github.com/tcort/markdown-link-check
rev: v3.11.2
hooks:
- id: markdown-link-check
exclude: ^(vendor)
# If the endpoint returns HTTP 429 (Too Many Requests), consider it a
# successful check.
args: ["-a 200,206,429"]
- repo: local
hooks:
- id: executable-shell
name: executable-shell
entry: chmod +x
language: system
types: [shell]
- id: gofumpt
name: gofumpt
entry: gofumpt -w
language: golang
types: [go]
exclude: ^vendor/
additional_dependencies: [mvdan.cc/gofumpt@v0.9.2]
- id: golangci-lint
name: golangci-lint
language: system
types: [go]
require_serial: true
pass_filenames: false
entry: etc/golangci-lint.sh
- id: check-licenses
name: check-licenses
language: system
types: [go]
entry: etc/check_license.sh
- repo: https://github.com/google/yamlfmt
rev: v0.10.0
hooks:
- id: yamlfmt
================================================
FILE: Dockerfile
================================================
# Dockerfile for Go Driver local development.
# sha found via this command: docker inspect --format='{{index .RepoDigests 0}}' golang:1.25.6-trixie
FROM golang:1.25.6-trixie@sha256:fb4b74a39c7318d53539ebda43ccd3ecba6e447a78591889c0efc0a7235ea8b3 AS base
# Build libmongocrypt in a separate build stage.
FROM base AS libmongocrypt
RUN apt-get -qq update && \
apt-get -qqy install --no-install-recommends \
git \
ca-certificates \
curl \
build-essential \
libssl-dev \
pkg-config \
python3 \
python3-packaging \
python-is-python3 && \
rm -rf /var/lib/apt/lists/*
COPY etc/install-libmongocrypt.sh /root/install-libmongocrypt.sh
RUN cd /root && bash ./install-libmongocrypt.sh
# Final dev image (already has Go 1.25.x).
FROM base
RUN export DEBIAN_FRONTEND=noninteractive && \
export TZ=Etc/UTC && \
apt-get -qq update && \
apt-get -qqy install --reinstall --no-install-recommends \
git \
ca-certificates \
curl \
wget \
tzdata \
pkg-config \
gpg \
apt-utils \
libc6-dev \
gcc \
make \
libkrb5-dev && \
update-ca-certificates && \
rm -rf /var/lib/apt/lists/*
# Install taskfile
RUN go install github.com/go-task/task/v3/cmd/task@v3.39.2
COPY etc/docker_entry.sh /root/docker_entry.sh
COPY --from=libmongocrypt /root/install /root/install
# Copy the Go driver source for local development and compile checks.
COPY . /mongo-go-driver
ENV DOCKER_RUNNING=true
ENTRYPOINT ["/bin/bash", "/root/docker_entry.sh"]
================================================
FILE: LICENSE
================================================
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "[]"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.
Copyright [yyyy] [name of copyright owner]
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
================================================
FILE: README.md
================================================
<p align="center"><img src="etc/assets/mongo-gopher.png" width="250"></p>
<p align="center">
<a href="https://goreportcard.com/report/go.mongodb.org/mongo-driver/v2"><img src="https://goreportcard.com/badge/go.mongodb.org/mongo-driver/v2"></a>
<a href="https://pkg.go.dev/go.mongodb.org/mongo-driver/v2/mongo"><img src="etc/assets/godev-mongo-blue.svg" alt="docs"></a>
<a href="https://pkg.go.dev/go.mongodb.org/mongo-driver/v2/bson"><img src="etc/assets/godev-bson-blue.svg" alt="docs"></a>
<a href="https://www.mongodb.com/docs/drivers/go/current/"><img src="etc/assets/docs-mongodb-green.svg"></a>
<a href="https://securityscorecards.dev/viewer/?uri=github.com/mongodb/mongo-go-driver">
<img src="https://api.securityscorecards.dev/projects/github.com/mongodb/mongo-go-driver/badge" alt="OpenSSF Scorecard" />
</a>
</p>
# MongoDB Go Driver
The MongoDB supported driver for Go.
See the following resources to learn more about upgrading from version 1.x to 2.0.:
- [v2.0 Migration Guide](docs/migration-2.0.md)
- [v2.0 What's New](https://www.mongodb.com/docs/drivers/go/upcoming/whats-new/#what-s-new-in-2.0)
The MongoDB Go driver follows [semantic versioning](https://semver.org/) for its releases.
## Requirements
- Go 1.19 or higher. We aim to support the latest versions of Go.
- Go 1.25 or higher is required to run the driver test suite.
- MongoDB 4.2 and higher.
## Installation
The recommended way to get started using the MongoDB Go driver is by using Go modules to install the dependency in
your project. This can be done either by importing packages from `go.mongodb.org/mongo-driver` and having the build
step install the dependency or by explicitly running
```bash
go get go.mongodb.org/mongo-driver/v2/mongo
```
When using a version of Go that does not support modules, the driver can be installed using `dep` by running
```bash
dep ensure -add "go.mongodb.org/mongo-driver/v2/mongo"
```
## Usage
To get started with the driver, import the `mongo` package and create a `mongo.Client` with the `Connect` function:
```go
import (
"context"
"time"
"go.mongodb.org/mongo-driver/v2/mongo"
"go.mongodb.org/mongo-driver/v2/mongo/options"
"go.mongodb.org/mongo-driver/v2/mongo/readpref"
)
client, _ := mongo.Connect(options.Client().ApplyURI("mongodb://localhost:27017"))
```
Make sure to defer a call to `Disconnect` after instantiating your client:
```go
defer func() {
if err := client.Disconnect(ctx); err != nil {
panic(err)
}
}()
```
For more advanced configuration and authentication, see the [documentation for mongo.Connect](https://pkg.go.dev/go.mongodb.org/mongo-driver/v2/mongo#Connect).
Calling `Connect` does not block for server discovery. If you wish to know if a MongoDB server has been found and connected to,
use the `Ping` method:
```go
ctx, cancel := context.WithTimeout(context.Background(), 2*time.Second)
defer cancel()
_ = client.Ping(ctx, readpref.Primary())
```
To insert a document into a collection, first retrieve a `Database` and then `Collection` instance from the `Client`:
```go
collection := client.Database("testing").Collection("numbers")
```
The `Collection` instance can then be used to insert documents:
```go
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
defer cancel()
res, _ := collection.InsertOne(ctx, bson.D{{"name", "pi"}, {"value", 3.14159}})
id := res.InsertedID
```
To use `bson.D`, you will need to add `"go.mongodb.org/mongo-driver/v2/bson"` to your imports.
Your import statement should now look like this:
```go
import (
"context"
"log"
"time"
"go.mongodb.org/mongo-driver/v2/bson"
"go.mongodb.org/mongo-driver/v2/mongo"
"go.mongodb.org/mongo-driver/v2/mongo/options"
"go.mongodb.org/mongo-driver/v2/mongo/readpref"
)
```
Several query methods return a cursor, which can be used like this:
```go
ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second)
defer cancel()
cur, err := collection.Find(ctx, bson.D{})
if err != nil {
log.Fatal(err)
}
defer cur.Close(ctx)
for cur.Next(ctx) {
var result bson.D
if err := cur.Decode(&result); err != nil {
log.Fatal(err)
}
// do something with result....
}
if err := cur.Err(); err != nil {
log.Fatal(err)
}
```
For methods that return a single item, a `SingleResult` instance is returned:
```go
var result struct {
Value float64
}
filter := bson.D{{"name", "pi"}}
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
defer cancel()
err := collection.FindOne(ctx, filter).Decode(&result)
if errors.Is(err, mongo.ErrNoDocuments) {
// Do something when no record was found
} else if err != nil {
log.Fatal(err)
}
// Do something with result...
```
Additional examples and documentation can be found under the examples directory and [on the MongoDB Documentation website](https://www.mongodb.com/docs/drivers/go/current/).
### Network Compression
Network compression will reduce bandwidth requirements between MongoDB and the application.
The Go Driver supports the following compression algorithms:
1. [Snappy](https://google.github.io/snappy/) (`snappy`): available in MongoDB 3.4 and later.
1. [Zlib](https://zlib.net/) (`zlib`): available in MongoDB 3.6 and later.
1. [Zstandard](https://github.com/facebook/zstd/) (`zstd`): available in MongoDB 4.2 and later.
#### Specify Compression Algorithms
Compression can be enabled using the `compressors` parameter on the connection string or by using [`ClientOptions.SetCompressors`](https://pkg.go.dev/go.mongodb.org/mongo-driver/mongo/options#ClientOptions.SetCompressors):
```go
opts := options.Client().ApplyURI("mongodb://localhost:27017/?compressors=snappy,zlib,zstd")
client, _ := mongo.Connect(opts)
```
```go
opts := options.Client().SetCompressors([]string{"snappy", "zlib", "zstd"})
client, _ := mongo.Connect(opts)
```
If compressors are set, the Go Driver negotiates with the server to select the first common compressor. For server configuration and defaults, refer to [`networkMessageCompressors`](https://www.mongodb.com/docs/manual/reference/program/mongod/#std-option-mongod.--networkMessageCompressors).
Messages compress when both parties enable network compression; otherwise, messages remain uncompressed
## Support / Feedback
For issues with, questions about, or feedback for the Go Driver, please look into our [support channels](https://www.mongodb.com/docs/manual/support/), including [StackOverflow](https://stackoverflow.com/questions/tagged/mongodb%20go?sort=Newest).
New features and bugs can be reported on the [GODRIVER Jira project](https://jira.mongodb.org/browse/GODRIVER).
## Contribution
Check out the [GODRIVER Jira project](https://jira.mongodb.org/browse/GODRIVER) for tickets that need completing. See our [contribution guidelines](docs/CONTRIBUTING.md) for details.
## Continuous Integration
Commits to master are run automatically on [evergreen](https://evergreen.mongodb.com/waterfall/mongo-go-driver).
## Frequently Encountered Issues
See our [common issues](docs/common-issues.md) documentation for troubleshooting frequently encountered issues.
## Thanks and Acknowledgement
- The Go Gopher artwork by [@ashleymcnamara](https://github.com/ashleymcnamara)
- The original Go Gopher was designed by [Renee French](http://reneefrench.blogspot.com/)
## License
The MongoDB Go Driver is licensed under the [Apache License](LICENSE).
================================================
FILE: THIRD-PARTY-NOTICES
================================================
----------------------------------------------------------------------
License notice for AWS V4 signing code from github.com/aws/aws-sdk-go
AWS SDK for Go
Copyright 2015 Amazon.com, Inc. or its affiliates. All Rights Reserved.
Copyright 2014-2015 Stripe, Inc.
----------------------------------------------------------------------
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
---------------------------------------------------------------------
License notice for gopkg.in/mgo.v2/bson
---------------------------------------------------------------------
BSON library for Go
Copyright (c) 2010-2013 - Gustavo Niemeyer <gustavo@niemeyer.net>
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
---------------------------------------------------------------------
License notice for JSON and CSV code from github.com/golang/go
---------------------------------------------------------------------
Copyright (c) 2009 The Go Authors. All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above
copyright notice, this list of conditions and the following disclaimer
in the documentation and/or other materials provided with the
distribution.
* Neither the name of Google Inc. nor the names of its
contributors may be used to endorse or promote products derived from
this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
---------------------------------------------------------------------
License notice for rand code from golang.org/x/exp
---------------------------------------------------------------------
Copyright (c) 2009 The Go Authors. All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above
copyright notice, this list of conditions and the following disclaimer
in the documentation and/or other materials provided with the
distribution.
* Neither the name of Google Inc. nor the names of its
contributors may be used to endorse or promote products derived from
this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
---------------------------------------------------------------------
License notice for Add64 and Mul64 code from github.com/golang/go
---------------------------------------------------------------------
Copyright (c) 2009 The Go Authors. All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above
copyright notice, this list of conditions and the following disclaimer
in the documentation and/or other materials provided with the
distribution.
* Neither the name of Google Inc. nor the names of its
contributors may be used to endorse or promote products derived from
this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
----------------------------------------------------------------------
License notice for github.com/davecgh/go-spew
----------------------------------------------------------------------
ISC License
Copyright (c) 2012-2016 Dave Collins <dave@davec.name>
Permission to use, copy, modify, and/or distribute this software for any
purpose with or without fee is hereby granted, provided that the above
copyright notice and this permission notice appear in all copies.
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
----------------------------------------------------------------------
License notice for github.com/google/go-cmp
----------------------------------------------------------------------
Copyright (c) 2017 The Go Authors. All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above
copyright notice, this list of conditions and the following disclaimer
in the documentation and/or other materials provided with the
distribution.
* Neither the name of Google Inc. nor the names of its
contributors may be used to endorse or promote products derived from
this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
----------------------------------------------------------------------
License notice for github.com/klauspost/compress
----------------------------------------------------------------------
Copyright (c) 2012 The Go Authors. All rights reserved.
Copyright (c) 2019 Klaus Post. All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above
copyright notice, this list of conditions and the following disclaimer
in the documentation and/or other materials provided with the
distribution.
* Neither the name of Google Inc. nor the names of its
contributors may be used to endorse or promote products derived from
this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
----------------------------------------------------------------------
License notice for github.com/klauspost/compress/snappy
----------------------------------------------------------------------
Copyright (c) 2011 The Snappy-Go Authors. All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above
copyright notice, this list of conditions and the following disclaimer
in the documentation and/or other materials provided with the
distribution.
* Neither the name of Google Inc. nor the names of its
contributors may be used to endorse or promote products derived from
this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
----------------------------------------------------------------------
License notice for github.com/konsorten/go-windows-terminal-sequences
----------------------------------------------------------------------
(The MIT License)
Copyright (c) 2017 marvin + konsorten GmbH (open-source@konsorten.de)
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the 'Software'), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
----------------------------------------------------------------------
License notice for github.com/markbates/oncer
----------------------------------------------------------------------
The MIT License (MIT)
Copyright (c) 2018 Mark Bates
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
----------------------------------------------------------------------
License notice for github.com/markbates/safe
----------------------------------------------------------------------
The MIT License (MIT)
Copyright (c) 2018 Mark Bates
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
----------------------------------------------------------------------
License notice for github.com/montanaflynn/stats
----------------------------------------------------------------------
The MIT License (MIT)
Copyright (c) 2014-2015 Montana Flynn (https://anonfunction.com)
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
----------------------------------------------------------------------
License notice for github.com/pkg/errors
----------------------------------------------------------------------
Copyright (c) 2015, Dave Cheney <dave@cheney.net>
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
----------------------------------------------------------------------
License notice for github.com/pmezard/go-difflib
----------------------------------------------------------------------
Copyright (c) 2013, Patrick Mezard
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:
Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
The names of its contributors may not be used to endorse or promote
products derived from this software without specific prior written
permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
----------------------------------------------------------------------
License notice for github.com/rogpeppe/go-internal
----------------------------------------------------------------------
Copyright (c) 2018 The Go Authors. All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above
copyright notice, this list of conditions and the following disclaimer
in the documentation and/or other materials provided with the
distribution.
* Neither the name of Google Inc. nor the names of its
contributors may be used to endorse or promote products derived from
this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
----------------------------------------------------------------------
License notice for github.com/stretchr/testify
----------------------------------------------------------------------
MIT License
Copyright (c) 2012-2020 Mat Ryer, Tyler Bunnell and contributors.
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
----------------------------------------------------------------------
License notice for github.com/xdg-go/pbkdf2
----------------------------------------------------------------------
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
----------------------------------------------------------------------
License notice for github.com/xdg-go/scram
----------------------------------------------------------------------
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
----------------------------------------------------------------------
License notice for github.com/xdg-go/stringprep
----------------------------------------------------------------------
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
----------------------------------------------------------------------
License notice for github.com/youmark/pkcs8
----------------------------------------------------------------------
The MIT License (MIT)
Copyright (c) 2014 youmark
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
----------------------------------------------------------------------
License notice for golang.org/x/crypto
----------------------------------------------------------------------
Copyright (c) 2009 The Go Authors. All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above
copyright notice, this list of conditions and the following disclaimer
in the documentation and/or other materials provided with the
distribution.
* Neither the name of Google Inc. nor the names of its
contributors may be used to endorse or promote products derived from
this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
----------------------------------------------------------------------
License notice for golang.org/x/sync
----------------------------------------------------------------------
Copyright (c) 2009 The Go Authors. All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above
copyright notice, this list of conditions and the following disclaimer
in the documentation and/or other materials provided with the
distribution.
* Neither the name of Google Inc. nor the names of its
contributors may be used to endorse or promote products derived from
this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
----------------------------------------------------------------------
License notice for golang.org/x/sys
----------------------------------------------------------------------
Copyright (c) 2009 The Go Authors. All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above
copyright notice, this list of conditions and the following disclaimer
in the documentation and/or other materials provided with the
distribution.
* Neither the name of Google Inc. nor the names of its
contributors may be used to endorse or promote products derived from
this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
----------------------------------------------------------------------
License notice for golang.org/x/text
----------------------------------------------------------------------
Copyright (c) 2009 The Go Authors. All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above
copyright notice, this list of conditions and the following disclaimer
in the documentation and/or other materials provided with the
distribution.
* Neither the name of Google Inc. nor the names of its
contributors may be used to endorse or promote products derived from
this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
----------------------------------------------------------------------
License notice for golang.org/x/tools
----------------------------------------------------------------------
Copyright (c) 2009 The Go Authors. All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above
copyright notice, this list of conditions and the following disclaimer
in the documentation and/or other materials provided with the
distribution.
* Neither the name of Google Inc. nor the names of its
contributors may be used to endorse or promote products derived from
this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
----------------------------------------------------------------------
License notice for golang.org/x/xerrors
----------------------------------------------------------------------
Copyright (c) 2019 The Go Authors. All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above
copyright notice, this list of conditions and the following disclaimer
in the documentation and/or other materials provided with the
distribution.
* Neither the name of Google Inc. nor the names of its
contributors may be used to endorse or promote products derived from
this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
----------------------------------------------------------------------
License notice for gopkg.in/yaml.v3
----------------------------------------------------------------------
This project is covered by two different licenses: MIT and Apache.
#### MIT License ####
The following files were ported to Go from C files of libyaml, and thus
are still covered by their original MIT license, with the additional
copyright staring in 2011 when the project was ported over:
apic.go emitterc.go parserc.go readerc.go scannerc.go
writerc.go yamlh.go yamlprivateh.go
Copyright (c) 2006-2010 Kirill Simonov
Copyright (c) 2006-2011 Kirill Simonov
Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in
the Software without restriction, including without limitation the rights to
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
of the Software, and to permit persons to whom the Software is furnished to do
so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
### Apache License ###
All the remaining project files are covered by the Apache license:
Copyright (c) 2011-2019 Canonical Ltd
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
================================================
FILE: Taskfile.yml
================================================
# See https://taskfile.dev/usage/
version: "3"
env:
TEST_TIMEOUT: 1800
LONG_TEST_TIMEOUT: 3600
dotenv: [".test.env"]
tasks:
### Utility tasks. ###
default:
deps: [build, check-license, check-fmt, check-modules, lint, test-short]
add-license: bash etc/check_license.sh -a
check-license: bash etc/check_license.sh
init-submodule: git submodule update --init
build:
deps: [install-libmongocrypt]
cmds:
- go build ./...
- go build ${BUILD_TAGS} ./...
- task: build-tests
- task: compilecheck-119
build-tests: go test -short ${BUILD_TAGS} -run ^$$ ./...
compilecheck-119:
dir: internal/test/compilecheck
cmds:
- go mod download
- GOTOOLCHAIN=auto go test -v -run '^TestCompileCheck/go:1\.19$'
build-compile-check-all: bash etc/run-compile-check-test.sh
build-aws-ecs-test: go test -c ./internal/test/aws -o aws.testbin
check-fmt:
deps: [install-lll, install-gofumpt]
cmds:
- bash etc/check_fmt.sh
check-modules: bash etc/check_modules.sh
doc: godoc -http=:6060 -index
fmt:
deps: [install-gofumpt]
cmds:
- gofumpt -w .
api-report: bash etc/api_report.sh
install-libmongocrypt:
cmds: [bash etc/install-libmongocrypt.sh]
status:
- test -d install || test -d /cygdrive/c/libmongocrypt/bin
run-docker: bash etc/run_docker.sh
run-fuzz: bash etc/run-fuzz.sh
cherry-picker: bash etc/cherry-picker.sh
pr-task: bash etc/pr-task.sh
perf-pr-comment: bash etc/perf-pr-comment.sh
# Lint with various GOO
gitextract_b5ez4ucg/
├── .errcheck-excludes
├── .evergreen/
│ ├── config.yml
│ ├── krb5.config
│ ├── ocsp-requirements.txt
│ ├── run-mongodb-aws-ecs-test.sh
│ ├── run-task.sh
│ └── setup-system.sh
├── .github/
│ ├── dependabot.yml
│ ├── labeler.yml
│ ├── release.yml
│ └── workflows/
│ ├── check-labels.yml
│ ├── codeql.yml
│ ├── create-release-branch.yml
│ ├── labeler.yml
│ ├── merge-up.yml
│ ├── release.yml
│ ├── scorecard.yml
│ └── test.yml
├── .gitignore
├── .gitmodules
├── .golangci.yml
├── .pre-commit-config.yaml
├── Dockerfile
├── LICENSE
├── README.md
├── THIRD-PARTY-NOTICES
├── Taskfile.yml
├── bson/
│ ├── array_codec.go
│ ├── benchmark_test.go
│ ├── bson_binary_vector_spec_test.go
│ ├── bson_corpus_spec_test.go
│ ├── bson_test.go
│ ├── bsoncodec.go
│ ├── bsoncodec_test.go
│ ├── bsonrw_test.go
│ ├── buffered_byte_src.go
│ ├── buffered_byte_src_test.go
│ ├── byte_slice_codec.go
│ ├── codec_cache.go
│ ├── codec_cache_test.go
│ ├── cond_addr_codec.go
│ ├── cond_addr_codec_test.go
│ ├── copier.go
│ ├── copier_test.go
│ ├── decimal.go
│ ├── decimal_test.go
│ ├── decode_value_fuzz_test.go
│ ├── decoder.go
│ ├── decoder_example_test.go
│ ├── decoder_test.go
│ ├── default_value_decoders.go
│ ├── default_value_decoders_test.go
│ ├── default_value_encoders.go
│ ├── default_value_encoders_test.go
│ ├── doc.go
│ ├── empty_interface_codec.go
│ ├── encoder.go
│ ├── encoder_example_test.go
│ ├── encoder_test.go
│ ├── example_test.go
│ ├── extjson_parser.go
│ ├── extjson_parser_test.go
│ ├── extjson_prose_test.go
│ ├── extjson_reader.go
│ ├── extjson_reader_test.go
│ ├── extjson_tables.go
│ ├── extjson_wrappers.go
│ ├── extjson_writer.go
│ ├── extjson_writer_test.go
│ ├── fuzz_test.go
│ ├── json_scanner.go
│ ├── json_scanner_test.go
│ ├── map_codec.go
│ ├── marshal.go
│ ├── marshal_test.go
│ ├── marshal_value_cases_test.go
│ ├── marshal_value_test.go
│ ├── marshaling_cases_test.go
│ ├── mgocompat/
│ │ ├── doc.go
│ │ └── registry.go
│ ├── mgoregistry.go
│ ├── mgoregistry_test.go
│ ├── mode.go
│ ├── objectid.go
│ ├── objectid_test.go
│ ├── pointer_codec.go
│ ├── primitive.go
│ ├── primitive_codecs.go
│ ├── primitive_codecs_test.go
│ ├── raw.go
│ ├── raw_array.go
│ ├── raw_array_test.go
│ ├── raw_element.go
│ ├── raw_test.go
│ ├── raw_value.go
│ ├── raw_value_test.go
│ ├── reader.go
│ ├── registry.go
│ ├── registry_examples_test.go
│ ├── registry_test.go
│ ├── slice_codec.go
│ ├── streaming_byte_src.go
│ ├── string_codec.go
│ ├── struct_codec.go
│ ├── struct_codec_test.go
│ ├── struct_tag_parser.go
│ ├── struct_tag_parser_test.go
│ ├── testdata/
│ │ ├── fuzz/
│ │ │ └── FuzzDecode/
│ │ │ ├── 002ae7d43f636100116fede772a03d07726ed75c3c3b83da865fe9b718adf8ae
│ │ │ ├── 0de854041b0055ca1e5e6e54a7fb667ed38461db171af267665c21776f9a9ef4
│ │ │ ├── 718592474a0a3626039f3471449b9aa374c746754d4925fcfe4ba747e7101504
│ │ │ ├── 93c43e3c1cf35c19b7618a618d128cea0ce05cef0711fdd91e403fe3b2f45628
│ │ │ └── c3ffbb42eb85b743ede396f00b7706e6ad0529c32689c63ca663dae37d072627
│ │ └── lorem.txt
│ ├── time_codec.go
│ ├── time_codec_test.go
│ ├── truncation_test.go
│ ├── type_test.go
│ ├── types.go
│ ├── uint_codec.go
│ ├── unmarshal.go
│ ├── unmarshal_test.go
│ ├── unmarshal_value_test.go
│ ├── unmarshaling_cases_test.go
│ ├── value_reader.go
│ ├── value_reader_test.go
│ ├── value_reader_writer_test.go
│ ├── value_writer.go
│ ├── value_writer_test.go
│ ├── vector.go
│ └── writer.go
├── docs/
│ ├── CODEOWNERS
│ ├── CONTRIBUTING.md
│ ├── SECURITY.md
│ ├── common-issues.md
│ ├── migration-2.0.md
│ └── pull_request_template.md
├── etc/
│ ├── api_report.sh
│ ├── check_fmt.sh
│ ├── check_license.sh
│ ├── check_modules.sh
│ ├── cherry-picker.sh
│ ├── docker_entry.sh
│ ├── gen-ec-certs/
│ │ ├── client.ext
│ │ ├── empty.cnf
│ │ ├── gen-ec-certs.sh
│ │ └── server.ext
│ ├── generate_notices.pl
│ ├── golangci-lint.sh
│ ├── govulncheck.sh
│ ├── install-libmongocrypt.sh
│ ├── perf-pr-comment.sh
│ ├── pr-task.sh
│ ├── profile-test.sh
│ ├── run-awskms-test.sh
│ ├── run-azurekms-test.sh
│ ├── run-compile-check-test.sh
│ ├── run-fuzz.sh
│ ├── run-gcpkms-test.sh
│ ├── run-goleak-test.sh
│ ├── run-mongodb-aws-ecs-test.sh
│ ├── run-mongodb-aws-test.sh
│ ├── run-oidc-remote-test.sh
│ ├── run-oidc-test.sh
│ ├── run_docker.sh
│ ├── setup-encryption.sh
│ ├── setup-test.sh
│ └── update_spec_tests.sh
├── event/
│ ├── description.go
│ ├── doc.go
│ ├── examples_test.go
│ └── monitoring.go
├── examples/
│ ├── _example_customdns_test.go
│ ├── _example_overload_error_test.go
│ └── _logger/
│ ├── logrus/
│ │ ├── go.mod
│ │ ├── go.sum
│ │ └── main.go
│ ├── zap/
│ │ ├── go.mod
│ │ ├── go.sum
│ │ └── main.go
│ └── zerolog/
│ ├── go.mod
│ ├── go.sum
│ └── main.go
├── go.mod
├── go.sum
├── go.work
├── internal/
│ ├── assert/
│ │ ├── assertbson/
│ │ │ ├── assertbson.go
│ │ │ └── assertbson_test.go
│ │ ├── assertion_compare.go
│ │ ├── assertion_compare_can_convert.go
│ │ ├── assertion_compare_go1.17_test.go
│ │ ├── assertion_compare_legacy.go
│ │ ├── assertion_compare_test.go
│ │ ├── assertion_format.go
│ │ ├── assertion_mongo.go
│ │ ├── assertion_mongo_test.go
│ │ ├── assertions.go
│ │ ├── assertions_test.go
│ │ ├── difflib.go
│ │ └── difflib_test.go
│ ├── aws/
│ │ ├── awserr/
│ │ │ ├── error.go
│ │ │ └── types.go
│ │ ├── credentials/
│ │ │ ├── chain_provider.go
│ │ │ ├── chain_provider_test.go
│ │ │ ├── credentials.go
│ │ │ └── credentials_test.go
│ │ ├── signer/
│ │ │ └── v4/
│ │ │ ├── header_rules.go
│ │ │ ├── request.go
│ │ │ ├── uri_path.go
│ │ │ ├── v4.go
│ │ │ └── v4_test.go
│ │ └── types.go
│ ├── binaryutil/
│ │ ├── binaryutil.go
│ │ ├── binaryutil_test.go
│ │ └── doc.go
│ ├── bsoncoreutil/
│ │ ├── bsoncoreutil.go
│ │ └── bsoncoreutil_test.go
│ ├── bsonutil/
│ │ └── bsonutil.go
│ ├── cmd/
│ │ ├── benchmark/
│ │ │ ├── benchmark_test.go
│ │ │ ├── go.mod
│ │ │ └── go.sum
│ │ ├── build-oss-fuzz-corpus/
│ │ │ └── main.go
│ │ ├── faas/
│ │ │ └── awslambda/
│ │ │ ├── Makefile
│ │ │ ├── mongodb/
│ │ │ │ ├── bootstrap.go
│ │ │ │ ├── go.mod
│ │ │ │ └── go.sum
│ │ │ └── template.yaml
│ │ ├── parse-api-report/
│ │ │ └── main.go
│ │ ├── testatlas/
│ │ │ └── atlas_test.go
│ │ ├── testentauth/
│ │ │ └── main.go
│ │ └── testkms/
│ │ └── main.go
│ ├── codecutil/
│ │ ├── encoding.go
│ │ └── encoding_test.go
│ ├── credproviders/
│ │ ├── assume_role_provider.go
│ │ ├── ec2_provider.go
│ │ ├── ecs_provider.go
│ │ ├── env_provider.go
│ │ ├── imds_provider.go
│ │ └── static_provider.go
│ ├── csfle/
│ │ └── csfle.go
│ ├── csot/
│ │ ├── csot.go
│ │ └── csot_test.go
│ ├── decimal128/
│ │ └── decimal128.go
│ ├── docexamples/
│ │ ├── README
│ │ ├── examples.go
│ │ └── examples_test.go
│ ├── driverutil/
│ │ ├── description.go
│ │ ├── hello.go
│ │ ├── operation.go
│ │ └── operation_test.go
│ ├── errutil/
│ │ ├── join.go
│ │ ├── join_go1.19.go
│ │ ├── join_go1.20.go
│ │ └── join_test.go
│ ├── eventtest/
│ │ └── eventtest.go
│ ├── failpoint/
│ │ └── failpoint.go
│ ├── handshake/
│ │ └── handshake.go
│ ├── httputil/
│ │ ├── httputil.go
│ │ └── httputil_test.go
│ ├── integration/
│ │ ├── causal_consistency_test.go
│ │ ├── change_stream_test.go
│ │ ├── clam_prose_test.go
│ │ ├── client_options_test.go
│ │ ├── client_side_encryption_prose_test.go
│ │ ├── client_side_encryption_spec_test.go
│ │ ├── client_side_encryption_test.go
│ │ ├── client_test.go
│ │ ├── cmd_monitoring_helpers_test.go
│ │ ├── collection_test.go
│ │ ├── crud_helpers_test.go
│ │ ├── crud_prose_test.go
│ │ ├── csot_cse_prose_test.go
│ │ ├── csot_prose_test.go
│ │ ├── csot_test.go
│ │ ├── cursor_test.go
│ │ ├── database_test.go
│ │ ├── errors_test.go
│ │ ├── gridfs_test.go
│ │ ├── handshake_test.go
│ │ ├── index_view_test.go
│ │ ├── initial_dns_seedlist_discovery_test.go
│ │ ├── json_helpers_test.go
│ │ ├── load_balancer_prose_test.go
│ │ ├── log_helpers_test.go
│ │ ├── main.go
│ │ ├── main_test.go
│ │ ├── mock_find_test.go
│ │ ├── mongointernal_test.go
│ │ ├── mongos_pinning_test.go
│ │ ├── mtest/
│ │ │ ├── csfle_enabled.go
│ │ │ ├── csfle_not_enabled.go
│ │ │ ├── deployment_helpers.go
│ │ │ ├── doc.go
│ │ │ ├── global_state.go
│ │ │ ├── mongotest.go
│ │ │ ├── options.go
│ │ │ ├── proxy_capture.go
│ │ │ ├── proxy_dialer.go
│ │ │ ├── received_message.go
│ │ │ ├── sent_message.go
│ │ │ ├── setup.go
│ │ │ ├── setup_options.go
│ │ │ └── wiremessage_helpers.go
│ │ ├── primary_stepdown_test.go
│ │ ├── retryable_reads_prose_test.go
│ │ ├── retryable_writes_prose_test.go
│ │ ├── sdam_error_handling_test.go
│ │ ├── sdam_prose_test.go
│ │ ├── search_index_prose_test.go
│ │ ├── server_selection_prose_test.go
│ │ ├── sessions_mongocryptd_prose_test.go
│ │ ├── sessions_test.go
│ │ ├── unified/
│ │ │ ├── admin_helpers.go
│ │ │ ├── bsonutil.go
│ │ │ ├── bucket_options.go
│ │ │ ├── bulkwrite_helpers.go
│ │ │ ├── client_encryption_operation_execution.go
│ │ │ ├── client_entity.go
│ │ │ ├── client_operation_execution.go
│ │ │ ├── collection_data.go
│ │ │ ├── collection_operation_execution.go
│ │ │ ├── common_options.go
│ │ │ ├── context.go
│ │ │ ├── crud_helpers.go
│ │ │ ├── cursor_entity.go
│ │ │ ├── cursor_operation_execution.go
│ │ │ ├── database_operation_execution.go
│ │ │ ├── db_collection_options.go
│ │ │ ├── entity.go
│ │ │ ├── entity_test.go
│ │ │ ├── error.go
│ │ │ ├── event.go
│ │ │ ├── event_verification.go
│ │ │ ├── gridfs_bucket_operation_execution.go
│ │ │ ├── logger.go
│ │ │ ├── logger_verification.go
│ │ │ ├── main_test.go
│ │ │ ├── matches.go
│ │ │ ├── matches_test.go
│ │ │ ├── operation.go
│ │ │ ├── options.go
│ │ │ ├── result.go
│ │ │ ├── schema_version.go
│ │ │ ├── server_api_options.go
│ │ │ ├── session_operation_execution.go
│ │ │ ├── session_options.go
│ │ │ ├── testrunner_operation.go
│ │ │ ├── unified_spec_runner.go
│ │ │ └── unified_spec_test.go
│ │ ├── unified_runner_events_helper_test.go
│ │ ├── unified_runner_thread_helpers_test.go
│ │ └── unified_spec_test.go
│ ├── integtest/
│ │ └── integtest.go
│ ├── israce/
│ │ ├── norace.go
│ │ └── race.go
│ ├── logger/
│ │ ├── component.go
│ │ ├── component_test.go
│ │ ├── context.go
│ │ ├── context_test.go
│ │ ├── io_sink.go
│ │ ├── level.go
│ │ ├── logger.go
│ │ └── logger_test.go
│ ├── mongoutil/
│ │ ├── mongoutil.go
│ │ └── mongoutil_test.go
│ ├── optionsutil/
│ │ └── options.go
│ ├── ptrutil/
│ │ ├── int64.go
│ │ ├── int64_test.go
│ │ └── ptr.go
│ ├── rand/
│ │ ├── arith128_test.go
│ │ ├── bits.go
│ │ ├── example_test.go
│ │ ├── exp.go
│ │ ├── modulo_test.go
│ │ ├── normal.go
│ │ ├── race_test.go
│ │ ├── rand.go
│ │ ├── rand_test.go
│ │ ├── regress_test.go
│ │ └── rng.go
│ ├── randutil/
│ │ ├── randutil.go
│ │ └── randutil_test.go
│ ├── require/
│ │ └── require.go
│ ├── serverselector/
│ │ ├── server_selector.go
│ │ └── server_selector_test.go
│ ├── spectest/
│ │ ├── skip.go
│ │ └── spectest.go
│ ├── test/
│ │ ├── aws/
│ │ │ └── aws_test.go
│ │ ├── compilecheck/
│ │ │ ├── compile_check_test.go
│ │ │ ├── go.mod
│ │ │ └── go.sum
│ │ ├── goleak/
│ │ │ ├── go.mod
│ │ │ ├── go.sum
│ │ │ └── goleak_test.go
│ │ └── oidcauth/
│ │ └── oidcauth_test.go
│ ├── testutil/
│ │ └── reflect.go
│ └── uuid/
│ ├── uuid.go
│ └── uuid_test.go
├── mongo/
│ ├── address/
│ │ ├── addr.go
│ │ └── addr_test.go
│ ├── background_context.go
│ ├── background_context_test.go
│ ├── batch_cursor.go
│ ├── bson_helpers_test.go
│ ├── bulk_write.go
│ ├── bulk_write_models.go
│ ├── change_stream.go
│ ├── change_stream_deployment.go
│ ├── change_stream_test.go
│ ├── client.go
│ ├── client_bulk_write.go
│ ├── client_bulk_write_models.go
│ ├── client_bulk_write_test.go
│ ├── client_encryption.go
│ ├── client_encryption_test.go
│ ├── client_examples_test.go
│ ├── client_side_encryption_examples_test.go
│ ├── client_test.go
│ ├── collection.go
│ ├── collection_test.go
│ ├── crud_examples_test.go
│ ├── crypt_retrievers.go
│ ├── cursor.go
│ ├── cursor_test.go
│ ├── database.go
│ ├── database_test.go
│ ├── doc.go
│ ├── errors.go
│ ├── errors_test.go
│ ├── gridfs_bucket.go
│ ├── gridfs_bucket_test.go
│ ├── gridfs_download_stream.go
│ ├── gridfs_examples_test.go
│ ├── gridfs_test.go
│ ├── gridfs_upload_stream.go
│ ├── index_view.go
│ ├── insert.go
│ ├── mongo.go
│ ├── mongo_test.go
│ ├── mongocryptd.go
│ ├── mongointernal.go
│ ├── ocsp_test.go
│ ├── options/
│ │ ├── aggregateoptions.go
│ │ ├── autoencryptionoptions.go
│ │ ├── bulkwriteoptions.go
│ │ ├── changestreamoptions.go
│ │ ├── clientbulkwriteoptions.go
│ │ ├── clientencryptionoptions.go
│ │ ├── clientoptions.go
│ │ ├── clientoptions_test.go
│ │ ├── collectionoptions.go
│ │ ├── countoptions.go
│ │ ├── createcollectionoptions.go
│ │ ├── datakeyoptions.go
│ │ ├── dboptions.go
│ │ ├── deleteoptions.go
│ │ ├── distinctoptions.go
│ │ ├── doc.go
│ │ ├── dropcollectionoptions.go
│ │ ├── encryptoptions.go
│ │ ├── estimatedcountoptions.go
│ │ ├── example_test.go
│ │ ├── findoptions.go
│ │ ├── gridfsoptions.go
│ │ ├── indexoptions.go
│ │ ├── insertoptions.go
│ │ ├── listcollectionsoptions.go
│ │ ├── listdatabasesoptions.go
│ │ ├── lister.go
│ │ ├── loggeroptions.go
│ │ ├── mongooptions.go
│ │ ├── replaceoptions.go
│ │ ├── rewrapdatakeyoptions.go
│ │ ├── runcmdoptions.go
│ │ ├── searchindexoptions.go
│ │ ├── serverapioptions.go
│ │ ├── sessionoptions.go
│ │ ├── testdata/
│ │ │ ├── ca-key.pem
│ │ │ ├── ca-with-intermediates-first.pem
│ │ │ ├── ca-with-intermediates-second.pem
│ │ │ ├── ca-with-intermediates-third.pem
│ │ │ ├── ca-with-intermediates.pem
│ │ │ ├── ca.pem
│ │ │ ├── cert.pem
│ │ │ ├── certificate.pem
│ │ │ ├── csr.json
│ │ │ ├── empty-ca.pem
│ │ │ ├── key.pem
│ │ │ ├── malformed-ca.pem
│ │ │ ├── nopass/
│ │ │ │ ├── cert.pem
│ │ │ │ ├── certificate.pem
│ │ │ │ └── key.pem
│ │ │ └── one-pk-multiple-certs.pem
│ │ ├── transactionoptions.go
│ │ └── updateoptions.go
│ ├── read_write_concern_spec_test.go
│ ├── readconcern/
│ │ └── readconcern.go
│ ├── readpref/
│ │ ├── mode.go
│ │ ├── mode_test.go
│ │ ├── options.go
│ │ ├── options_example_test.go
│ │ ├── readpref.go
│ │ └── readpref_test.go
│ ├── results.go
│ ├── search_index_view.go
│ ├── session.go
│ ├── single_result.go
│ ├── single_result_test.go
│ ├── with_transactions_test.go
│ └── writeconcern/
│ ├── writeconcern.go
│ ├── writeconcern_example_test.go
│ └── writeconcern_test.go
├── sbom.json
├── tag/
│ ├── tag.go
│ └── tag_test.go
├── testdata/
│ ├── client-side-encryption-prose/
│ │ ├── change-streams-test.json
│ │ ├── corpus-encrypted.json
│ │ ├── corpus-key-aws.json
│ │ ├── corpus-key-azure.json
│ │ ├── corpus-key-gcp.json
│ │ ├── corpus-key-kmip.json
│ │ ├── corpus-key-local.json
│ │ ├── corpus-schema.json
│ │ ├── corpus.json
│ │ ├── encrypted-fields.json
│ │ ├── encryptedFields-prefix-suffix.json
│ │ ├── external-key.json
│ │ ├── external-schema.json
│ │ ├── key1-document.json
│ │ ├── limits-doc.json
│ │ ├── limits-key.json
│ │ ├── limits-schema.json
│ │ ├── range-encryptedFields-Date.json
│ │ ├── range-encryptedFields-DecimalNoPrecision.json
│ │ ├── range-encryptedFields-DecimalPrecision.json
│ │ ├── range-encryptedFields-DoubleNoPrecision.json
│ │ ├── range-encryptedFields-DoublePrecision.json
│ │ ├── range-encryptedFields-Int.json
│ │ └── range-encryptedFields-Long.json
│ ├── kmip-certs/
│ │ ├── ca-ec.pem
│ │ ├── client-ec.pem
│ │ └── server-ec.pem
│ └── mongocrypt/
│ ├── collection-info.json
│ ├── command-reply.json
│ ├── command.json
│ ├── encrypted-command-reply.json
│ ├── encrypted-command.json
│ ├── encrypted-value.json
│ ├── json-schema.json
│ ├── key-document.json
│ ├── key-filter-keyAltName.json
│ ├── key-filter.json
│ ├── kms-reply.txt
│ ├── list-collections-filter.json
│ ├── local-key-document.json
│ ├── mongocryptd-command-local.json
│ ├── mongocryptd-command-remote.json
│ └── mongocryptd-reply.json
├── version/
│ └── version.go
└── x/
├── README.md
├── bsonx/
│ └── bsoncore/
│ ├── array.go
│ ├── array_test.go
│ ├── bson_arraybuilder.go
│ ├── bson_arraybuilder_test.go
│ ├── bson_documentbuilder.go
│ ├── bson_documentbuilder_test.go
│ ├── bsoncore.go
│ ├── bsoncore_test.go
│ ├── doc.go
│ ├── document.go
│ ├── document_test.go
│ ├── element.go
│ ├── element_test.go
│ ├── iterator.go
│ ├── iterator_test.go
│ ├── tables.go
│ ├── type.go
│ ├── value.go
│ └── value_test.go
└── mongo/
└── driver/
├── auth/
│ ├── auth.go
│ ├── auth_spec_test.go
│ ├── auth_test.go
│ ├── aws_conv.go
│ ├── conversation.go
│ ├── cred.go
│ ├── creds/
│ │ ├── awscreds.go
│ │ ├── azurecreds.go
│ │ ├── credscaching_test.go
│ │ ├── doc.go
│ │ └── gcpcreds.go
│ ├── default.go
│ ├── doc.go
│ ├── gssapi.go
│ ├── gssapi_not_enabled.go
│ ├── gssapi_not_supported.go
│ ├── gssapi_test.go
│ ├── internal/
│ │ └── gssapi/
│ │ ├── gss.go
│ │ ├── gss_wrapper.c
│ │ ├── gss_wrapper.h
│ │ ├── sspi.go
│ │ ├── sspi_wrapper.c
│ │ └── sspi_wrapper.h
│ ├── mongodbaws.go
│ ├── mongodbaws_test.go
│ ├── oidc.go
│ ├── oidc_test.go
│ ├── plain.go
│ ├── plain_test.go
│ ├── sasl.go
│ ├── scram.go
│ ├── scram_test.go
│ ├── speculative_scram_test.go
│ ├── speculative_x509_test.go
│ ├── util.go
│ └── x509.go
├── batch_cursor.go
├── batch_cursor_test.go
├── batches.go
├── batches_test.go
├── command_monitoring_test.go
├── compression.go
├── compression_test.go
├── connstring/
│ ├── connstring.go
│ ├── connstring_spec_test.go
│ ├── connstring_test.go
│ └── initial_dns_seedlist_discovery_prose_test.go
├── crypt.go
├── description/
│ ├── server.go
│ └── topology.go
├── dns/
│ └── dns.go
├── driver.go
├── drivertest/
│ ├── channel_conn.go
│ ├── channel_netconn.go
│ ├── doc.go
│ ├── opmsg_deployment.go
│ └── opmsg_deployment_test.go
├── errors.go
├── integration/
│ ├── aggregate_test.go
│ ├── compressor_test.go
│ ├── doc.go
│ ├── integration.go
│ ├── main_test.go
│ └── scram_test.go
├── legacy.go
├── mnet/
│ └── connection.go
├── mongocrypt/
│ ├── binary.go
│ ├── binary_test.go
│ ├── errors.go
│ ├── errors_not_enabled.go
│ ├── mongocrypt.go
│ ├── mongocrypt_context.go
│ ├── mongocrypt_context_not_enabled.go
│ ├── mongocrypt_kms_context.go
│ ├── mongocrypt_kms_context_not_enabled.go
│ ├── mongocrypt_not_enabled.go
│ ├── mongocrypt_test.go
│ ├── options/
│ │ ├── doc.go
│ │ ├── mongocrypt_context_options.go
│ │ └── mongocrypt_options.go
│ └── state.go
├── ocsp/
│ ├── cache.go
│ ├── cache_test.go
│ ├── config.go
│ ├── ocsp.go
│ ├── ocsp_test.go
│ └── options.go
├── operation/
│ ├── abort_transaction.go
│ ├── aggregate.go
│ ├── command.go
│ ├── commit_transaction.go
│ ├── count.go
│ ├── create.go
│ ├── create_indexes.go
│ ├── create_search_indexes.go
│ ├── delete.go
│ ├── distinct.go
│ ├── doc.go
│ ├── drop_collection.go
│ ├── drop_database.go
│ ├── drop_indexes.go
│ ├── drop_search_index.go
│ ├── end_sessions.go
│ ├── errors.go
│ ├── find.go
│ ├── find_and_modify.go
│ ├── hello.go
│ ├── hello_test.go
│ ├── list_collections.go
│ ├── list_databases.go
│ ├── list_indexes.go
│ ├── update.go
│ └── update_search_index.go
├── operation.go
├── operation_exhaust.go
├── operation_test.go
├── serverapioptions.go
├── session/
│ ├── client_session.go
│ ├── client_session_test.go
│ ├── cluster_clock.go
│ ├── cluster_clock_test.go
│ ├── doc.go
│ ├── options.go
│ ├── server_session.go
│ ├── server_session_test.go
│ ├── session_pool.go
│ └── session_pool_test.go
├── testdata/
│ └── compression.go
├── topology/
│ ├── CMAP_spec_test.go
│ ├── DESIGN.md
│ ├── cmap_prose_test.go
│ ├── connection.go
│ ├── connection_errors_test.go
│ ├── connection_legacy.go
│ ├── connection_options.go
│ ├── connection_test.go
│ ├── context_listener.go
│ ├── diff.go
│ ├── diff_test.go
│ ├── errors.go
│ ├── example_test.go
│ ├── fsm.go
│ ├── fsm_test.go
│ ├── polling_srv_records_test.go
│ ├── pool.go
│ ├── pool_generation_counter.go
│ ├── pool_test.go
│ ├── rtt_monitor.go
│ ├── rtt_monitor_test.go
│ ├── sdam_spec_test.go
│ ├── server.go
│ ├── server_options.go
│ ├── server_rtt_test.go
│ ├── server_test.go
│ ├── stats.go
│ ├── stats_test.go
│ ├── tls_connection_source_1_16.go
│ ├── tls_connection_source_1_17.go
│ ├── topology.go
│ ├── topology_errors_test.go
│ ├── topology_options.go
│ ├── topology_options_test.go
│ └── topology_test.go
├── wiremessage/
│ ├── wiremessage.go
│ └── wiremessage_test.go
└── xoptions/
├── options.go
└── options_test.go
Showing preview only (708K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (7568 symbols across 568 files)
FILE: bson/array_codec.go
type arrayCodec (line 17) | type arrayCodec struct
method EncodeValue (line 20) | func (ac *arrayCodec) EncodeValue(_ EncodeContext, vw ValueWriter, val...
method DecodeValue (line 30) | func (ac *arrayCodec) DecodeValue(_ DecodeContext, vr ValueReader, val...
FILE: bson/benchmark_test.go
function init (line 24) | func init() {
type encodetest (line 36) | type encodetest struct
type nestedtest1 (line 51) | type nestedtest1 struct
type nestedtest2 (line 55) | type nestedtest2 struct
type nestedtest3 (line 59) | type nestedtest3 struct
type nestedtest4 (line 63) | type nestedtest4 struct
type nestedtest5 (line 67) | type nestedtest5 struct
type nestedtest6 (line 71) | type nestedtest6 struct
type nestedtest7 (line 75) | type nestedtest7 struct
type nestedtest8 (line 79) | type nestedtest8 struct
type nestedtest9 (line 83) | type nestedtest9 struct
type nestedtest10 (line 87) | type nestedtest10 struct
type nestedtest11 (line 91) | type nestedtest11 struct
constant extendedBSONDir (line 147) | extendedBSONDir = "../testdata/extended_bson"
function readExtJSONFile (line 157) | func readExtJSONFile(filename string) map[string]any {
function BenchmarkMarshal (line 198) | func BenchmarkMarshal(b *testing.B) {
function BenchmarkUnmarshal (line 284) | func BenchmarkUnmarshal(b *testing.B) {
type codeResponse (line 439) | type codeResponse struct
type codeNode (line 444) | type codeNode struct
function codeInit (line 460) | func codeInit() {
function BenchmarkCodeUnmarshal (line 503) | func BenchmarkCodeUnmarshal(b *testing.B) {
function BenchmarkCodeMarshal (line 535) | func BenchmarkCodeMarshal(b *testing.B) {
FILE: bson/bson_binary_vector_spec_test.go
type bsonBinaryVectorTests (line 22) | type bsonBinaryVectorTests struct
type bsonBinaryVectorTestCase (line 28) | type bsonBinaryVectorTestCase struct
function TestBsonBinaryVectorSpec (line 38) | func TestBsonBinaryVectorSpec(t *testing.T) {
function decodeTestSlice (line 85) | func decodeTestSlice[T int8 | float32 | byte](t *testing.T, data []byte)...
function runBsonBinaryVectorTest (line 102) | func runBsonBinaryVectorTest(t *testing.T, testKey string, test bsonBina...
FILE: bson/bson_corpus_spec_test.go
type testCase (line 29) | type testCase struct
type validityTestCase (line 39) | type validityTestCase struct
type decodeErrorTestCase (line 51) | type decodeErrorTestCase struct
type parseErrorTestCase (line 56) | type parseErrorTestCase struct
function findJSONFilesInDir (line 63) | func findJSONFilesInDir(dir string) ([]string, error) {
function seedExtJSON (line 83) | func seedExtJSON(f *testing.F, extJSON string, extJSONType string, desc ...
function seedTestCase (line 94) | func seedTestCase(f *testing.F, tcase *testCase) {
function seedBSONCorpus (line 117) | func seedBSONCorpus(f *testing.F) {
function needsEscapedUnicode (line 140) | func needsEscapedUnicode(bsonType string) bool {
function unescapeUnicode (line 144) | func unescapeUnicode(s, bsonType string) string {
function normalizeCanonicalDouble (line 187) | func normalizeCanonicalDouble(t *testing.T, key string, cEJ string) stri...
function normalizeRelaxedDouble (line 202) | func normalizeRelaxedDouble(t *testing.T, key string, rEJ string) string {
function bsonToNative (line 218) | func bsonToNative(t *testing.T, b []byte, bType, testDesc string) D {
function nativeToBSON (line 227) | func nativeToBSON(t *testing.T, cB []byte, doc D, testDesc, bType, docSr...
function jsonToNative (line 239) | func jsonToNative(ej, ejType, testDesc string) (D, error) {
function jsonToBytes (line 248) | func jsonToBytes(ej, ejType, testDesc string) ([]byte, error) {
function nativeToJSON (line 263) | func nativeToJSON(t *testing.T, ej string, doc D, testDesc, ejType, ejSh...
function runTest (line 274) | func runTest(t *testing.T, file string) {
function TestBSONCorpus (line 429) | func TestBSONCorpus(t *testing.T) {
function TestRelaxedUUIDValidation (line 438) | func TestRelaxedUUIDValidation(t *testing.T) {
FILE: bson/bson_test.go
function noerr (line 26) | func noerr(t *testing.T, err error) {
function TestTimestamp (line 34) | func TestTimestamp(t *testing.T) {
function TestPrimitiveIsZero (line 107) | func TestPrimitiveIsZero(t *testing.T) {
function TestRegexCompare (line 129) | func TestRegexCompare(t *testing.T) {
function TestDateTime (line 149) | func TestDateTime(t *testing.T) {
function TestTimeRoundTrip (line 192) | func TestTimeRoundTrip(t *testing.T) {
function TestNonNullTimeRoundTrip (line 221) | func TestNonNullTimeRoundTrip(t *testing.T) {
function TestD (line 246) | func TestD(t *testing.T) {
function TestDStringer (line 278) | func TestDStringer(t *testing.T) {
function TestMStringer (line 284) | func TestMStringer(t *testing.T) {
function TestD_MarshalJSON (line 303) | func TestD_MarshalJSON(t *testing.T) {
function TestD_UnmarshalJSON (line 375) | func TestD_UnmarshalJSON(t *testing.T) {
type stringerString (line 476) | type stringerString
method String (line 478) | func (ss stringerString) String() string {
type keyBool (line 482) | type keyBool
method MarshalKey (line 484) | func (kb keyBool) MarshalKey() (string, error) {
method UnmarshalKey (line 488) | func (kb *keyBool) UnmarshalKey(key string) error {
type keyStruct (line 500) | type keyStruct struct
method MarshalText (line 504) | func (k keyStruct) MarshalText() (text []byte, err error) {
method UnmarshalText (line 510) | func (k *keyStruct) UnmarshalText(text []byte) error {
function TestMapCodec (line 523) | func TestMapCodec(t *testing.T) {
function TestExtJSONEscapeKey (line 587) | func TestExtJSONEscapeKey(t *testing.T) {
function TestBsoncoreArray (line 614) | func TestBsoncoreArray(t *testing.T) {
function BenchmarkDateTimeMarshalJSON (line 651) | func BenchmarkDateTimeMarshalJSON(b *testing.B) {
function BenchmarkDateTimeUnmarshalJSON (line 666) | func BenchmarkDateTimeUnmarshalJSON(b *testing.B) {
FILE: bson/bsoncodec.go
type ValueEncoderError (line 19) | type ValueEncoderError struct
method Error (line 26) | func (vee ValueEncoderError) Error() string {
type ValueDecoderError (line 47) | type ValueDecoderError struct
method Error (line 54) | func (vde ValueDecoderError) Error() string {
type EncodeContext (line 78) | type EncodeContext struct
type DecodeContext (line 98) | type DecodeContext struct
type ValueEncoder (line 130) | type ValueEncoder interface
type ValueEncoderFunc (line 136) | type ValueEncoderFunc
method EncodeValue (line 139) | func (fn ValueEncoderFunc) EncodeValue(ec EncodeContext, vw ValueWrite...
type ValueDecoder (line 148) | type ValueDecoder interface
type ValueDecoderFunc (line 154) | type ValueDecoderFunc
method DecodeValue (line 157) | func (fn ValueDecoderFunc) DecodeValue(dc DecodeContext, vr ValueReade...
type typeDecoder (line 162) | type typeDecoder interface
type typeDecoderFunc (line 167) | type typeDecoderFunc
method decodeType (line 169) | func (fn typeDecoderFunc) decodeType(dc DecodeContext, vr ValueReader,...
type decodeAdapter (line 174) | type decodeAdapter struct
function decodeTypeOrValueWithInfo (line 184) | func decodeTypeOrValueWithInfo(vd ValueDecoder, dc DecodeContext, vr Val...
FILE: bson/bsoncodec_test.go
function ExampleValueEncoder (line 15) | func ExampleValueEncoder() {
function ExampleValueDecoder (line 25) | func ExampleValueDecoder() {
type llCodec (line 44) | type llCodec struct
method EncodeValue (line 51) | func (llc *llCodec) EncodeValue(_ EncodeContext, _ ValueWriter, i any)...
method DecodeValue (line 60) | func (llc *llCodec) DecodeValue(_ DecodeContext, _ ValueReader, val re...
FILE: bson/bsonrw_test.go
type invoked (line 21) | type invoked
method String (line 78) | func (i invoked) String() string {
constant nothing (line 25) | nothing invoked = iota
constant readArray (line 26) | readArray
constant readBinary (line 27) | readBinary
constant readBoolean (line 28) | readBoolean
constant readDocument (line 29) | readDocument
constant readCodeWithScope (line 30) | readCodeWithScope
constant readDBPointer (line 31) | readDBPointer
constant readDateTime (line 32) | readDateTime
constant readDecimal128 (line 33) | readDecimal128
constant readDouble (line 34) | readDouble
constant readInt32 (line 35) | readInt32
constant readInt64 (line 36) | readInt64
constant readJavascript (line 37) | readJavascript
constant readMaxKey (line 38) | readMaxKey
constant readMinKey (line 39) | readMinKey
constant readNull (line 40) | readNull
constant readObjectID (line 41) | readObjectID
constant readRegex (line 42) | readRegex
constant readString (line 43) | readString
constant readSymbol (line 44) | readSymbol
constant readTimestamp (line 45) | readTimestamp
constant readUndefined (line 46) | readUndefined
constant readElement (line 47) | readElement
constant readValue (line 48) | readValue
constant writeArray (line 49) | writeArray
constant writeBinary (line 50) | writeBinary
constant writeBinaryWithSubtype (line 51) | writeBinaryWithSubtype
constant writeBoolean (line 52) | writeBoolean
constant writeCodeWithScope (line 53) | writeCodeWithScope
constant writeDBPointer (line 54) | writeDBPointer
constant writeDateTime (line 55) | writeDateTime
constant writeDecimal128 (line 56) | writeDecimal128
constant writeDouble (line 57) | writeDouble
constant writeInt32 (line 58) | writeInt32
constant writeInt64 (line 59) | writeInt64
constant writeJavascript (line 60) | writeJavascript
constant writeMaxKey (line 61) | writeMaxKey
constant writeMinKey (line 62) | writeMinKey
constant writeNull (line 63) | writeNull
constant writeObjectID (line 64) | writeObjectID
constant writeRegex (line 65) | writeRegex
constant writeString (line 66) | writeString
constant writeDocument (line 67) | writeDocument
constant writeSymbol (line 68) | writeSymbol
constant writeTimestamp (line 69) | writeTimestamp
constant writeUndefined (line 70) | writeUndefined
constant writeDocumentElement (line 71) | writeDocumentElement
constant writeDocumentEnd (line 72) | writeDocumentEnd
constant writeArrayElement (line 73) | writeArrayElement
constant writeArrayEnd (line 74) | writeArrayEnd
constant skip (line 75) | skip
type valueReaderWriter (line 186) | type valueReaderWriter struct
method checkdepth (line 197) | func (llvrw *valueReaderWriter) checkdepth() {
method Type (line 205) | func (llvrw *valueReaderWriter) Type() Type {
method Skip (line 211) | func (llvrw *valueReaderWriter) Skip() error {
method ReadArray (line 221) | func (llvrw *valueReaderWriter) ReadArray() (ArrayReader, error) {
method ReadBinary (line 232) | func (llvrw *valueReaderWriter) ReadBinary() (b []byte, btype byte, er...
method ReadBoolean (line 254) | func (llvrw *valueReaderWriter) ReadBoolean() (bool, error) {
method ReadDocument (line 278) | func (llvrw *valueReaderWriter) ReadDocument() (DocumentReader, error) {
method ReadCodeWithScope (line 289) | func (llvrw *valueReaderWriter) ReadCodeWithScope() (code string, dr D...
method ReadDBPointer (line 300) | func (llvrw *valueReaderWriter) ReadDBPointer() (ns string, oid Object...
method ReadDateTime (line 322) | func (llvrw *valueReaderWriter) ReadDateTime() (int64, error) {
method ReadDecimal128 (line 339) | func (llvrw *valueReaderWriter) ReadDecimal128() (Decimal128, error) {
method ReadDouble (line 356) | func (llvrw *valueReaderWriter) ReadDouble() (float64, error) {
method ReadInt32 (line 373) | func (llvrw *valueReaderWriter) ReadInt32() (int32, error) {
method ReadInt64 (line 390) | func (llvrw *valueReaderWriter) ReadInt64() (int64, error) {
method ReadJavascript (line 406) | func (llvrw *valueReaderWriter) ReadJavascript() (code string, err err...
method ReadMaxKey (line 422) | func (llvrw *valueReaderWriter) ReadMaxKey() error {
method ReadMinKey (line 433) | func (llvrw *valueReaderWriter) ReadMinKey() error {
method ReadNull (line 444) | func (llvrw *valueReaderWriter) ReadNull() error {
method ReadObjectID (line 455) | func (llvrw *valueReaderWriter) ReadObjectID() (ObjectID, error) {
method ReadRegex (line 471) | func (llvrw *valueReaderWriter) ReadRegex() (pattern string, options s...
method ReadString (line 492) | func (llvrw *valueReaderWriter) ReadString() (string, error) {
method ReadSymbol (line 508) | func (llvrw *valueReaderWriter) ReadSymbol() (symbol string, err error) {
method ReadTimestamp (line 531) | func (llvrw *valueReaderWriter) ReadTimestamp() (t uint32, i uint32, e...
method ReadUndefined (line 552) | func (llvrw *valueReaderWriter) ReadUndefined() error {
method WriteArray (line 563) | func (llvrw *valueReaderWriter) WriteArray() (ArrayWriter, error) {
method WriteBinary (line 573) | func (llvrw *valueReaderWriter) WriteBinary([]byte) error {
method WriteBinaryWithSubtype (line 583) | func (llvrw *valueReaderWriter) WriteBinaryWithSubtype([]byte, byte) e...
method WriteBoolean (line 593) | func (llvrw *valueReaderWriter) WriteBoolean(bool) error {
method WriteCodeWithScope (line 603) | func (llvrw *valueReaderWriter) WriteCodeWithScope(string) (DocumentWr...
method WriteDBPointer (line 613) | func (llvrw *valueReaderWriter) WriteDBPointer(string, ObjectID) error {
method WriteDateTime (line 623) | func (llvrw *valueReaderWriter) WriteDateTime(int64) error {
method WriteDecimal128 (line 633) | func (llvrw *valueReaderWriter) WriteDecimal128(Decimal128) error {
method WriteDouble (line 643) | func (llvrw *valueReaderWriter) WriteDouble(float64) error {
method WriteInt32 (line 653) | func (llvrw *valueReaderWriter) WriteInt32(int32) error {
method WriteInt64 (line 663) | func (llvrw *valueReaderWriter) WriteInt64(int64) error {
method WriteJavascript (line 673) | func (llvrw *valueReaderWriter) WriteJavascript(string) error {
method WriteMaxKey (line 683) | func (llvrw *valueReaderWriter) WriteMaxKey() error {
method WriteMinKey (line 693) | func (llvrw *valueReaderWriter) WriteMinKey() error {
method WriteNull (line 703) | func (llvrw *valueReaderWriter) WriteNull() error {
method WriteObjectID (line 713) | func (llvrw *valueReaderWriter) WriteObjectID(ObjectID) error {
method WriteRegex (line 723) | func (llvrw *valueReaderWriter) WriteRegex(string, string) error {
method WriteString (line 733) | func (llvrw *valueReaderWriter) WriteString(string) error {
method WriteDocument (line 743) | func (llvrw *valueReaderWriter) WriteDocument() (DocumentWriter, error) {
method WriteSymbol (line 753) | func (llvrw *valueReaderWriter) WriteSymbol(string) error {
method WriteTimestamp (line 763) | func (llvrw *valueReaderWriter) WriteTimestamp(uint32, uint32) error {
method WriteUndefined (line 773) | func (llvrw *valueReaderWriter) WriteUndefined() error {
method ReadElement (line 783) | func (llvrw *valueReaderWriter) ReadElement() (string, ValueReader, er...
method WriteDocumentElement (line 794) | func (llvrw *valueReaderWriter) WriteDocumentElement(string) (ValueWri...
method WriteDocumentEnd (line 805) | func (llvrw *valueReaderWriter) WriteDocumentEnd() error {
method ReadValue (line 816) | func (llvrw *valueReaderWriter) ReadValue() (ValueReader, error) {
method WriteArrayElement (line 827) | func (llvrw *valueReaderWriter) WriteArrayElement() (ValueWriter, erro...
method WriteArrayEnd (line 838) | func (llvrw *valueReaderWriter) WriteArrayEnd() error {
FILE: bson/buffered_byte_src.go
type bufferedByteSrc (line 17) | type bufferedByteSrc struct
method readExact (line 26) | func (b *bufferedByteSrc) readExact(p []byte) (int, error) {
method ReadByte (line 36) | func (b *bufferedByteSrc) ReadByte() (byte, error) {
method peek (line 45) | func (b *bufferedByteSrc) peek(n int) ([]byte, error) {
method discard (line 56) | func (b *bufferedByteSrc) discard(n int) (int, error) {
method readSlice (line 73) | func (b *bufferedByteSrc) readSlice(delim byte) ([]byte, error) {
method pos (line 96) | func (b *bufferedByteSrc) pos() int64 {
method regexLength (line 101) | func (b *bufferedByteSrc) regexLength() (int32, error) {
method streamable (line 121) | func (*bufferedByteSrc) streamable() bool {
method reset (line 125) | func (b *bufferedByteSrc) reset() {
FILE: bson/buffered_byte_src_test.go
function TestBufferedvalueReader_discard (line 18) | func TestBufferedvalueReader_discard(t *testing.T) {
function TestBufferedvalueReader_peek (line 85) | func TestBufferedvalueReader_peek(t *testing.T) {
FILE: bson/byte_slice_codec.go
type byteSliceCodec (line 15) | type byteSliceCodec struct
method EncodeValue (line 27) | func (bsc *byteSliceCodec) EncodeValue(ec EncodeContext, vw ValueWrite...
method decodeType (line 37) | func (bsc *byteSliceCodec) decodeType(_ DecodeContext, vr ValueReader,...
method DecodeValue (line 85) | func (bsc *byteSliceCodec) DecodeValue(dc DecodeContext, vr ValueReade...
FILE: bson/codec_cache.go
function init (line 17) | func init() {
type typeEncoderCache (line 30) | type typeEncoderCache struct
method Store (line 34) | func (c *typeEncoderCache) Store(rt reflect.Type, enc ValueEncoder) {
method Load (line 38) | func (c *typeEncoderCache) Load(rt reflect.Type) (ValueEncoder, bool) {
method LoadOrStore (line 45) | func (c *typeEncoderCache) LoadOrStore(rt reflect.Type, enc ValueEncod...
method Clone (line 52) | func (c *typeEncoderCache) Clone() *typeEncoderCache {
type typeDecoderCache (line 63) | type typeDecoderCache struct
method Store (line 67) | func (c *typeDecoderCache) Store(rt reflect.Type, dec ValueDecoder) {
method Load (line 71) | func (c *typeDecoderCache) Load(rt reflect.Type) (ValueDecoder, bool) {
method LoadOrStore (line 78) | func (c *typeDecoderCache) LoadOrStore(rt reflect.Type, dec ValueDecod...
method Clone (line 85) | func (c *typeDecoderCache) Clone() *typeDecoderCache {
type kindEncoderCacheEntry (line 100) | type kindEncoderCacheEntry struct
type kindEncoderCache (line 104) | type kindEncoderCache struct
method Store (line 108) | func (c *kindEncoderCache) Store(rt reflect.Kind, enc ValueEncoder) {
method Load (line 114) | func (c *kindEncoderCache) Load(rt reflect.Kind) (ValueEncoder, bool) {
method Clone (line 123) | func (c *kindEncoderCache) Clone() *kindEncoderCache {
type kindDecoderCacheEntry (line 137) | type kindDecoderCacheEntry struct
type kindDecoderCache (line 141) | type kindDecoderCache struct
method Store (line 145) | func (c *kindDecoderCache) Store(rt reflect.Kind, dec ValueDecoder) {
method Load (line 151) | func (c *kindDecoderCache) Load(rt reflect.Kind) (ValueDecoder, bool) {
method Clone (line 160) | func (c *kindDecoderCache) Clone() *kindDecoderCache {
FILE: bson/codec_cache_test.go
function TestTypeCache (line 37) | func TestTypeCache(t *testing.T) {
function TestTypeCacheClone (line 63) | func TestTypeCacheClone(t *testing.T) {
function TestKindCacheArray (line 83) | func TestKindCacheArray(t *testing.T) {
function TestKindCacheClone (line 108) | func TestKindCacheClone(t *testing.T) {
function TestKindCacheEncoderNilEncoder (line 134) | func TestKindCacheEncoderNilEncoder(t *testing.T) {
function BenchmarkEncoderCacheLoad (line 153) | func BenchmarkEncoderCacheLoad(b *testing.B) {
function BenchmarkEncoderCacheStore (line 167) | func BenchmarkEncoderCacheStore(b *testing.B) {
FILE: bson/cond_addr_codec.go
type condAddrEncoder (line 14) | type condAddrEncoder struct
method EncodeValue (line 28) | func (cae *condAddrEncoder) EncodeValue(ec EncodeContext, vw ValueWrit...
function newCondAddrEncoder (line 22) | func newCondAddrEncoder(canAddrEnc, elseEnc ValueEncoder) *condAddrEncod...
type condAddrDecoder (line 39) | type condAddrDecoder struct
method DecodeValue (line 53) | func (cad *condAddrDecoder) DecodeValue(dc DecodeContext, vr ValueRead...
function newCondAddrDecoder (line 47) | func newCondAddrDecoder(canAddrDec, elseDec ValueDecoder) *condAddrDecod...
FILE: bson/cond_addr_codec_test.go
function TestCondAddrCodec (line 16) | func TestCondAddrCodec(t *testing.T) {
FILE: bson/copier.go
function copyDocument (line 18) | func copyDocument(dst ValueWriter, src ValueReader) error {
function copyArrayFromBytes (line 34) | func copyArrayFromBytes(dst ValueWriter, src []byte) error {
function copyDocumentFromBytes (line 50) | func copyDocumentFromBytes(dst ValueWriter, src []byte) error {
type writeElementFn (line 64) | type writeElementFn
function copyBytesToArrayWriter (line 68) | func copyBytesToArrayWriter(dst ArrayWriter, src []byte) error {
function copyBytesToDocumentWriter (line 78) | func copyBytesToDocumentWriter(dst DocumentWriter, src []byte) error {
function copyBytesToValueWriter (line 86) | func copyBytesToValueWriter(src []byte, wef writeElementFn) error {
function copyDocumentToBytes (line 137) | func copyDocumentToBytes(src ValueReader) ([]byte, error) {
function appendDocumentBytes (line 143) | func appendDocumentBytes(dst []byte, src ValueReader) ([]byte, error) {
function appendArrayBytes (line 160) | func appendArrayBytes(dst []byte, src ValueReader) ([]byte, error) {
function copyValueFromBytes (line 177) | func copyValueFromBytes(dst ValueWriter, t Type, src []byte) error {
function copyValueToBytes (line 193) | func copyValueToBytes(src ValueReader) (Type, []byte, error) {
function copyValue (line 213) | func copyValue(dst ValueWriter, src ValueReader) error {
function copyArray (line 365) | func copyArray(dst ValueWriter, src ValueReader) error {
function copyDocumentCore (line 399) | func copyDocumentCore(dw DocumentWriter, dr DocumentReader) error {
type bytesReader (line 426) | type bytesReader interface
type bytesWriter (line 431) | type bytesWriter interface
FILE: bson/copier_test.go
function TestCopier (line 19) | func TestCopier(t *testing.T) {
FILE: bson/decimal.go
constant MaxDecimal128Exp (line 26) | MaxDecimal128Exp = 6111
constant MinDecimal128Exp (line 27) | MinDecimal128Exp = -6176
type Decimal128 (line 38) | type Decimal128 struct
method GetBytes (line 49) | func (d Decimal128) GetBytes() (uint64, uint64) {
method String (line 54) | func (d Decimal128) String() string {
method BigInt (line 59) | func (d Decimal128) BigInt() (*big.Int, int, error) {
method IsNaN (line 107) | func (d Decimal128) IsNaN() bool {
method IsInf (line 116) | func (d Decimal128) IsInf() int {
method IsZero (line 128) | func (d Decimal128) IsZero() bool {
method MarshalJSON (line 133) | func (d Decimal128) MarshalJSON() ([]byte, error) {
method UnmarshalJSON (line 140) | func (d *Decimal128) UnmarshalJSON(b []byte) error {
function NewDecimal128 (line 43) | func NewDecimal128(h, l uint64) Decimal128 {
function dErr (line 181) | func dErr(s string) (Decimal128, error) {
function ParseDecimal128 (line 190) | func ParseDecimal128(s string) (Decimal128, error) {
function ParseDecimal128FromBigInt (line 261) | func ParseDecimal128FromBigInt(bi *big.Int, exp int) (Decimal128, bool) {
function bigIntCmpAbs (line 328) | func bigIntCmpAbs(x, y *big.Int) int {
function bigIntAbsValue (line 336) | func bigIntAbsValue(b *big.Int) *big.Int {
FILE: bson/decimal_test.go
type bigIntTestCase (line 19) | type bigIntTestCase struct
function parseBigInt (line 31) | func parseBigInt(s string) *big.Int {
function TestDecimal128_BigInt (line 99) | func TestDecimal128_BigInt(t *testing.T) {
function TestParseDecimal128FromBigInt (line 118) | func TestParseDecimal128FromBigInt(t *testing.T) {
function TestParseDecimal128 (line 135) | func TestParseDecimal128(t *testing.T) {
function TestDecimal128_JSON (line 177) | func TestDecimal128_JSON(t *testing.T) {
FILE: bson/decode_value_fuzz_test.go
function FuzzDecodeValue (line 15) | func FuzzDecodeValue(f *testing.F) {
FILE: bson/decoder.go
type Decoder (line 30) | type Decoder struct
method Decode (line 47) | func (d *Decoder) Decode(val any) error {
method Reset (line 81) | func (d *Decoder) Reset(vr ValueReader) {
method SetRegistry (line 86) | func (d *Decoder) SetRegistry(r *Registry) {
method DefaultDocumentM (line 92) | func (d *Decoder) DefaultDocumentM() {
method DefaultDocumentMap (line 99) | func (d *Decoder) DefaultDocumentMap() {
method AllowTruncatingDoubles (line 106) | func (d *Decoder) AllowTruncatingDoubles() {
method BinaryAsSlice (line 112) | func (d *Decoder) BinaryAsSlice() {
method ObjectIDAsHexString (line 117) | func (d *Decoder) ObjectIDAsHexString() {
method UseJSONStructTags (line 123) | func (d *Decoder) UseJSONStructTags() {
method UseLocalTimeZone (line 129) | func (d *Decoder) UseLocalTimeZone() {
method ZeroMaps (line 135) | func (d *Decoder) ZeroMaps() {
method ZeroStructs (line 141) | func (d *Decoder) ZeroStructs() {
function NewDecoder (line 36) | func NewDecoder(vr ValueReader) *Decoder {
FILE: bson/decoder_example_test.go
function ExampleDecoder (line 19) | func ExampleDecoder() {
function ExampleDecoder_DefaultDocumentM (line 52) | func ExampleDecoder_DefaultDocumentM() {
function ExampleDecoder_DefaultDocumentMap (line 97) | func ExampleDecoder_DefaultDocumentMap() {
function ExampleDecoder_UseJSONStructTags (line 142) | func ExampleDecoder_UseJSONStructTags() {
function ExampleDecoder_extendedJSON (line 179) | func ExampleDecoder_extendedJSON() {
function ExampleDecoder_multipleExtendedJSONDocuments (line 208) | func ExampleDecoder_multipleExtendedJSONDocuments() {
FILE: bson/decoder_test.go
function TestDecodeValue (line 21) | func TestDecodeValue(t *testing.T) {
function TestDecodingInterfaces (line 42) | func TestDecodingInterfaces(t *testing.T) {
function TestDecoder (line 221) | func TestDecoder(t *testing.T) {
type testUnmarshaler (line 430) | type testUnmarshaler struct
method UnmarshalBSON (line 436) | func (tu *testUnmarshaler) UnmarshalBSON(d []byte) error {
function TestDecoderConfiguration (line 442) | func TestDecoderConfiguration(t *testing.T) {
FILE: bson/default_value_decoders.go
type decodeBinaryError (line 23) | type decodeBinaryError struct
method Error (line 28) | func (d decodeBinaryError) Error() string {
function registerDefaultDecoders (line 38) | func registerDefaultDecoders(reg *Registry) {
function dDecodeValue (line 111) | func dDecodeValue(dc DecodeContext, vr ValueReader, val reflect.Value) e...
function booleanDecodeType (line 166) | func booleanDecodeType(_ DecodeContext, vr ValueReader, t reflect.Type) ...
function booleanDecodeValue (line 213) | func booleanDecodeValue(dctx DecodeContext, vr ValueReader, val reflect....
function intDecodeType (line 227) | func intDecodeType(dc DecodeContext, vr ValueReader, t reflect.Type) (re...
function intDecodeValue (line 311) | func intDecodeValue(dc DecodeContext, vr ValueReader, val reflect.Value)...
function floatDecodeType (line 329) | func floatDecodeType(dc DecodeContext, vr ValueReader, t reflect.Type) (...
function floatDecodeValue (line 389) | func floatDecodeValue(ec DecodeContext, vr ValueReader, val reflect.Valu...
function javaScriptDecodeType (line 407) | func javaScriptDecodeType(_ DecodeContext, vr ValueReader, t reflect.Typ...
function javaScriptDecodeValue (line 436) | func javaScriptDecodeValue(dctx DecodeContext, vr ValueReader, val refle...
function symbolDecodeType (line 450) | func symbolDecodeType(_ DecodeContext, vr ValueReader, t reflect.Type) (...
function symbolDecodeValue (line 491) | func symbolDecodeValue(dctx DecodeContext, vr ValueReader, val reflect.V...
function binaryDecode (line 505) | func binaryDecode(vr ValueReader) (Binary, error) {
function binaryDecodeType (line 530) | func binaryDecodeType(_ DecodeContext, vr ValueReader, t reflect.Type) (...
function binaryDecodeValue (line 547) | func binaryDecodeValue(dc DecodeContext, vr ValueReader, val reflect.Val...
function vectorDecodeType (line 561) | func vectorDecodeType(_ DecodeContext, vr ValueReader, t reflect.Type) (...
function vectorDecodeValue (line 584) | func vectorDecodeValue(dctx DecodeContext, vr ValueReader, val reflect.V...
function undefinedDecodeType (line 603) | func undefinedDecodeType(_ DecodeContext, vr ValueReader, t reflect.Type...
function undefinedDecodeValue (line 629) | func undefinedDecodeValue(dc DecodeContext, vr ValueReader, val reflect....
function objectIDDecodeType (line 644) | func objectIDDecodeType(_ DecodeContext, vr ValueReader, t reflect.Type)...
function objectIDDecodeValue (line 690) | func objectIDDecodeValue(dc DecodeContext, vr ValueReader, val reflect.V...
function dateTimeDecodeType (line 704) | func dateTimeDecodeType(_ DecodeContext, vr ValueReader, t reflect.Type)...
function dateTimeDecodeValue (line 733) | func dateTimeDecodeValue(dc DecodeContext, vr ValueReader, val reflect.V...
function nullDecodeType (line 747) | func nullDecodeType(_ DecodeContext, vr ValueReader, t reflect.Type) (re...
function nullDecodeValue (line 773) | func nullDecodeValue(dc DecodeContext, vr ValueReader, val reflect.Value...
function regexDecodeType (line 787) | func regexDecodeType(_ DecodeContext, vr ValueReader, t reflect.Type) (r...
function regexDecodeValue (line 816) | func regexDecodeValue(dc DecodeContext, vr ValueReader, val reflect.Valu...
function dbPointerDecodeType (line 830) | func dbPointerDecodeType(_ DecodeContext, vr ValueReader, t reflect.Type...
function dbPointerDecodeValue (line 860) | func dbPointerDecodeValue(dc DecodeContext, vr ValueReader, val reflect....
function timestampDecodeType (line 874) | func timestampDecodeType(_ DecodeContext, vr ValueReader, reflectType re...
function timestampDecodeValue (line 903) | func timestampDecodeValue(dc DecodeContext, vr ValueReader, val reflect....
function minKeyDecodeType (line 917) | func minKeyDecodeType(_ DecodeContext, vr ValueReader, t reflect.Type) (...
function minKeyDecodeValue (line 945) | func minKeyDecodeValue(dc DecodeContext, vr ValueReader, val reflect.Val...
function maxKeyDecodeType (line 959) | func maxKeyDecodeType(_ DecodeContext, vr ValueReader, t reflect.Type) (...
function maxKeyDecodeValue (line 987) | func maxKeyDecodeValue(dc DecodeContext, vr ValueReader, val reflect.Val...
function decimal128DecodeType (line 1001) | func decimal128DecodeType(_ DecodeContext, vr ValueReader, t reflect.Typ...
function decimal128DecodeValue (line 1030) | func decimal128DecodeValue(dctx DecodeContext, vr ValueReader, val refle...
function jsonNumberDecodeType (line 1044) | func jsonNumberDecodeType(_ DecodeContext, vr ValueReader, t reflect.Typ...
function jsonNumberDecodeValue (line 1089) | func jsonNumberDecodeValue(dc DecodeContext, vr ValueReader, val reflect...
function urlDecodeType (line 1103) | func urlDecodeType(_ DecodeContext, vr ValueReader, t reflect.Type) (ref...
function urlDecodeValue (line 1138) | func urlDecodeValue(dc DecodeContext, vr ValueReader, val reflect.Value)...
function arrayDecodeValue (line 1153) | func arrayDecodeValue(dc DecodeContext, vr ValueReader, val reflect.Valu...
function valueUnmarshalerDecodeValue (line 1219) | func valueUnmarshalerDecodeValue(_ DecodeContext, vr ValueReader, val re...
function unmarshalerDecodeValue (line 1264) | func unmarshalerDecodeValue(_ DecodeContext, vr ValueReader, val reflect...
function coreDocumentDecodeValue (line 1309) | func coreDocumentDecodeValue(_ DecodeContext, vr ValueReader, val reflec...
function decodeDefault (line 1330) | func decodeDefault(dc DecodeContext, vr ValueReader, val reflect.Value) ...
function codeWithScopeDecodeType (line 1422) | func codeWithScopeDecodeType(dc DecodeContext, vr ValueReader, t reflect...
function codeWithScopeDecodeValue (line 1468) | func codeWithScopeDecodeValue(dc DecodeContext, vr ValueReader, val refl...
function decodeD (line 1482) | func decodeD(dc DecodeContext, vr ValueReader, _ reflect.Value) ([]refle...
function decodeElemsFromDocumentReader (line 1497) | func decodeElemsFromDocumentReader(dc DecodeContext, dr DocumentReader) ...
FILE: bson/default_value_decoders_test.go
function TestDefaultValueDecoders (line 26) | func TestDefaultValueDecoders(t *testing.T) {
function buildDocumentArray (line 3855) | func buildDocumentArray(fn func([]byte) []byte) []byte {
function buildArray (line 3862) | func buildArray(vals []byte) []byte {
function appendArrayElement (line 3869) | func appendArrayElement(dst []byte, key string, vals []byte) []byte {
function buildDocument (line 3877) | func buildDocument(elems []byte) []byte {
function buildDefaultRegistry (line 3884) | func buildDefaultRegistry() *Registry {
FILE: bson/default_value_encoders.go
function encodeElement (line 35) | func encodeElement(ec EncodeContext, dw DocumentWriter, e E) error {
function registerDefaultEncoders (line 58) | func registerDefaultEncoders(reg *Registry) {
function booleanEncodeValue (line 108) | func booleanEncodeValue(_ EncodeContext, vw ValueWriter, val reflect.Val...
function fitsIn32Bits (line 115) | func fitsIn32Bits(i int64) bool {
function intEncodeValue (line 120) | func intEncodeValue(ec EncodeContext, vw ValueWriter, val reflect.Value)...
function floatEncodeValue (line 146) | func floatEncodeValue(_ EncodeContext, vw ValueWriter, val reflect.Value...
function objectIDEncodeValue (line 156) | func objectIDEncodeValue(_ EncodeContext, vw ValueWriter, val reflect.Va...
function decimal128EncodeValue (line 164) | func decimal128EncodeValue(_ EncodeContext, vw ValueWriter, val reflect....
function jsonNumberEncodeValue (line 172) | func jsonNumberEncodeValue(ec EncodeContext, vw ValueWriter, val reflect...
function urlEncodeValue (line 192) | func urlEncodeValue(_ EncodeContext, vw ValueWriter, val reflect.Value) ...
function arrayEncodeValue (line 201) | func arrayEncodeValue(ec EncodeContext, vw ValueWriter, val reflect.Valu...
function lookupElementEncoder (line 271) | func lookupElementEncoder(ec EncodeContext, origEncoder ValueEncoder, cu...
function valueMarshalerEncodeValue (line 285) | func valueMarshalerEncodeValue(_ EncodeContext, vw ValueWriter, val refl...
function marshalerEncodeValue (line 313) | func marshalerEncodeValue(_ EncodeContext, vw ValueWriter, val reflect.V...
function javaScriptEncodeValue (line 341) | func javaScriptEncodeValue(_ EncodeContext, vw ValueWriter, val reflect....
function symbolEncodeValue (line 350) | func symbolEncodeValue(_ EncodeContext, vw ValueWriter, val reflect.Valu...
function binaryEncodeValue (line 359) | func binaryEncodeValue(_ EncodeContext, vw ValueWriter, val reflect.Valu...
function vectorEncodeValue (line 369) | func vectorEncodeValue(_ EncodeContext, vw ValueWriter, val reflect.Valu...
function undefinedEncodeValue (line 384) | func undefinedEncodeValue(_ EncodeContext, vw ValueWriter, val reflect.V...
function dateTimeEncodeValue (line 393) | func dateTimeEncodeValue(_ EncodeContext, vw ValueWriter, val reflect.Va...
function nullEncodeValue (line 402) | func nullEncodeValue(_ EncodeContext, vw ValueWriter, val reflect.Value)...
function regexEncodeValue (line 411) | func regexEncodeValue(_ EncodeContext, vw ValueWriter, val reflect.Value...
function dbPointerEncodeValue (line 422) | func dbPointerEncodeValue(_ EncodeContext, vw ValueWriter, val reflect.V...
function timestampEncodeValue (line 433) | func timestampEncodeValue(_ EncodeContext, vw ValueWriter, val reflect.V...
function minKeyEncodeValue (line 444) | func minKeyEncodeValue(_ EncodeContext, vw ValueWriter, val reflect.Valu...
function maxKeyEncodeValue (line 453) | func maxKeyEncodeValue(_ EncodeContext, vw ValueWriter, val reflect.Valu...
function coreDocumentEncodeValue (line 462) | func coreDocumentEncodeValue(_ EncodeContext, vw ValueWriter, val reflec...
function codeWithScopeEncodeValue (line 473) | func codeWithScopeEncodeValue(ec EncodeContext, vw ValueWriter, val refl...
function isImplementationNil (line 512) | func isImplementationNil(val reflect.Value, inter reflect.Type) bool {
FILE: bson/default_value_encoders_test.go
type myInterface (line 25) | type myInterface interface
type myStruct (line 29) | type myStruct struct
method Foo (line 33) | func (ms myStruct) Foo() int {
function TestDefaultValueEncoders (line 37) | func TestDefaultValueEncoders(t *testing.T) {
type testValueMarshalPtr (line 1741) | type testValueMarshalPtr struct
method MarshalBSONValue (line 1747) | func (tvm *testValueMarshalPtr) MarshalBSONValue() (byte, []byte, erro...
type testMarshalPtr (line 1751) | type testMarshalPtr struct
method MarshalBSON (line 1756) | func (tvm *testMarshalPtr) MarshalBSON() ([]byte, error) {
FILE: bson/empty_interface_codec.go
type emptyInterfaceCodec (line 14) | type emptyInterfaceCodec struct
method EncodeValue (line 26) | func (eic *emptyInterfaceCodec) EncodeValue(ec EncodeContext, vw Value...
method getEmptyInterfaceDecodeType (line 42) | func (eic *emptyInterfaceCodec) getEmptyInterfaceDecodeType(dc DecodeC...
method decodeType (line 79) | func (eic *emptyInterfaceCodec) decodeType(dc DecodeContext, vr ValueR...
method DecodeValue (line 115) | func (eic *emptyInterfaceCodec) DecodeValue(dc DecodeContext, vr Value...
FILE: bson/encoder.go
type Encoder (line 25) | type Encoder struct
method Encode (line 41) | func (e *Encoder) Encode(val any) error {
method Reset (line 61) | func (e *Encoder) Reset(vw ValueWriter) {
method SetRegistry (line 66) | func (e *Encoder) SetRegistry(r *Registry) {
method ErrorOnInlineDuplicates (line 72) | func (e *Encoder) ErrorOnInlineDuplicates() {
method IntMinSize (line 79) | func (e *Encoder) IntMinSize() {
method StringifyMapKeysWithFmt (line 85) | func (e *Encoder) StringifyMapKeysWithFmt() {
method NilMapAsEmpty (line 91) | func (e *Encoder) NilMapAsEmpty() {
method NilSliceAsEmpty (line 97) | func (e *Encoder) NilSliceAsEmpty() {
method NilByteSliceAsEmpty (line 103) | func (e *Encoder) NilByteSliceAsEmpty() {
method OmitZeroStruct (line 116) | func (e *Encoder) OmitZeroStruct() {
method OmitEmpty (line 122) | func (e *Encoder) OmitEmpty() {
method UseJSONStructTags (line 128) | func (e *Encoder) UseJSONStructTags() {
function NewEncoder (line 31) | func NewEncoder(vw ValueWriter) *Encoder {
FILE: bson/encoder_example_test.go
function ExampleEncoder (line 18) | func ExampleEncoder() {
type CityState (line 47) | type CityState struct
method String (line 52) | func (k CityState) String() string {
function ExampleEncoder_StringifyMapKeysWithFmt (line 56) | func ExampleEncoder_StringifyMapKeysWithFmt() {
function ExampleEncoder_UseJSONStructTags (line 81) | func ExampleEncoder_UseJSONStructTags() {
function ExampleEncoder_multipleBSONDocuments (line 114) | func ExampleEncoder_multipleBSONDocuments() {
function ExampleEncoder_extendedJSON (line 157) | func ExampleEncoder_extendedJSON() {
function ExampleEncoder_multipleExtendedJSONDocuments (line 186) | func ExampleEncoder_multipleExtendedJSONDocuments() {
function ExampleEncoder_IntMinSize (line 219) | func ExampleEncoder_IntMinSize() {
FILE: bson/encoder_test.go
function TestBasicEncode (line 21) | func TestBasicEncode(t *testing.T) {
function TestEncoderEncode (line 40) | func TestEncoderEncode(t *testing.T) {
type testMarshaler (line 117) | type testMarshaler struct
method MarshalBSON (line 122) | func (tm testMarshaler) MarshalBSON() ([]byte, error) { return tm.buf,...
function docToBytes (line 124) | func docToBytes(d any) []byte {
type stringerTest (line 132) | type stringerTest struct
method String (line 134) | func (stringerTest) String() string {
function TestEncoderConfiguration (line 138) | func TestEncoderConfiguration(t *testing.T) {
FILE: bson/example_test.go
function ExampleRaw_unmarshal (line 17) | func ExampleRaw_unmarshal() {
function ExampleRaw_marshal (line 45) | func ExampleRaw_marshal() {
function ExampleRawValue_unmarshal (line 70) | func ExampleRawValue_unmarshal() {
function ExampleRawValue_marshal (line 117) | func ExampleRawValue_marshal() {
FILE: bson/extjson_parser.go
constant maxNestingDepth (line 18) | maxNestingDepth = 200
type jsonParseState (line 23) | type jsonParseState
constant jpsStartState (line 26) | jpsStartState jsonParseState = iota
constant jpsSawBeginObject (line 27) | jpsSawBeginObject
constant jpsSawEndObject (line 28) | jpsSawEndObject
constant jpsSawBeginArray (line 29) | jpsSawBeginArray
constant jpsSawEndArray (line 30) | jpsSawEndArray
constant jpsSawColon (line 31) | jpsSawColon
constant jpsSawComma (line 32) | jpsSawComma
constant jpsSawKey (line 33) | jpsSawKey
constant jpsSawValue (line 34) | jpsSawValue
constant jpsDoneState (line 35) | jpsDoneState
constant jpsInvalidState (line 36) | jpsInvalidState
type jsonParseMode (line 39) | type jsonParseMode
constant jpmInvalidMode (line 42) | jpmInvalidMode jsonParseMode = iota
constant jpmObjectMode (line 43) | jpmObjectMode
constant jpmArrayMode (line 44) | jpmArrayMode
type extJSONValue (line 47) | type extJSONValue struct
type extJSONObject (line 52) | type extJSONObject struct
type extJSONParser (line 57) | type extJSONParser struct
method peekType (line 88) | func (ejp *extJSONParser) peekType() (Type, error) {
method readKey (line 163) | func (ejp *extJSONParser) readKey() (string, Type, error) {
method readValue (line 227) | func (ejp *extJSONParser) readValue(t Type) (*extJSONValue, error) {
method readObject (line 484) | func (ejp *extJSONParser) readObject(numKeys int, started bool) ([]str...
method advanceState (line 528) | func (ejp *extJSONParser) advanceState() {
method validateToken (line 678) | func (ejp *extJSONParser) validateToken(jtt jsonTokenType) bool {
method ensureExtValueType (line 703) | func (ejp *extJSONParser) ensureExtValueType(t Type) bool {
method pushMode (line 716) | func (ejp *extJSONParser) pushMode(m jsonParseMode) {
method popMode (line 720) | func (ejp *extJSONParser) popMode() jsonParseMode {
method peekMode (line 732) | func (ejp *extJSONParser) peekMode() jsonParseMode {
function newExtJSONParser (line 77) | func newExtJSONParser(r io.Reader, canonicalOnly bool) *extJSONParser {
function extendJSONToken (line 741) | func extendJSONToken(jt *jsonToken) *extJSONValue {
function ensureColon (line 764) | func ensureColon(s jsonParseState, key string) error {
function invalidRequestError (line 772) | func invalidRequestError(s string) error {
function invalidJSONError (line 776) | func invalidJSONError(expected string) error {
function invalidJSONErrorForType (line 780) | func invalidJSONErrorForType(expected string, t Type) error {
function unexpectedTokenError (line 784) | func unexpectedTokenError(jt *jsonToken) error {
function nestingDepthError (line 801) | func nestingDepthError(p, depth int) error {
FILE: bson/extjson_parser_test.go
type expectedErrorFunc (line 28) | type expectedErrorFunc
type peekTypeTestCase (line 30) | type peekTypeTestCase struct
type readKeyValueTestCase (line 37) | type readKeyValueTestCase struct
function expectNoError (line 48) | func expectNoError(t *testing.T, err error, desc string) {
function expectError (line 56) | func expectError(t *testing.T, err error, desc string) {
function expectSpecificError (line 64) | func expectSpecificError(expected error) expectedErrorFunc {
function specificDiff (line 74) | func specificDiff(name string) func(t *testing.T, expected, actual any, ...
function expectErrorNOOP (line 84) | func expectErrorNOOP(_ *testing.T, _ error, _ string) {
function readKeyDiff (line 87) | func readKeyDiff(t *testing.T, eKey, aKey string, eTyp, aTyp Type, err e...
function readValueDiff (line 93) | func readValueDiff(t *testing.T, eVal, aVal *extJSONValue, err error, er...
function TestExtJSONParserPeekType (line 104) | func TestExtJSONParserPeekType(t *testing.T) {
function TestExtJSONParserReadKeyReadValue (line 195) | func TestExtJSONParserReadKeyReadValue(t *testing.T) {
type ejpExpectationTest (line 376) | type ejpExpectationTest
type ejpTestCase (line 378) | type ejpTestCase struct
function expectSingleValue (line 388) | func expectSingleValue(t *testing.T, p *extJSONParser, expectedKey strin...
function expectMultipleValues (line 400) | func expectMultipleValues(t *testing.T, p *extJSONParser, expectedKey st...
type ejpKeyTypValTriple (line 422) | type ejpKeyTypValTriple struct
type ejpSubDocumentTestValue (line 428) | type ejpSubDocumentTestValue struct
function expectSubDocument (line 436) | func expectSubDocument(t *testing.T, p *extJSONParser, expectedKey strin...
function expectArray (line 472) | func expectArray(t *testing.T, p *extJSONParser, expectedKey string, _ T...
function TestExtJSONParserAllTypes (line 496) | func TestExtJSONParserAllTypes(t *testing.T) {
function TestExtJSONValue (line 777) | func TestExtJSONValue(t *testing.T) {
FILE: bson/extjson_prose_test.go
function TestExtJSON (line 16) | func TestExtJSON(t *testing.T) {
FILE: bson/extjson_reader.go
type ejvrState (line 15) | type ejvrState struct
type extJSONValueReader (line 22) | type extJSONValueReader struct
method reset (line 41) | func (ejvr *extJSONValueReader) reset(r io.Reader, canonicalOnly bool)...
method advanceFrame (line 69) | func (ejvr *extJSONValueReader) advanceFrame() {
method pushDocument (line 88) | func (ejvr *extJSONValueReader) pushDocument() {
method pushCodeWithScope (line 95) | func (ejvr *extJSONValueReader) pushCodeWithScope() {
method pushArray (line 101) | func (ejvr *extJSONValueReader) pushArray() {
method push (line 107) | func (ejvr *extJSONValueReader) push(m mode, t Type) {
method pop (line 114) | func (ejvr *extJSONValueReader) pop() {
method skipObject (line 123) | func (ejvr *extJSONValueReader) skipObject() {
method invalidTransitionErr (line 154) | func (ejvr *extJSONValueReader) invalidTransitionErr(destination mode,...
method typeError (line 168) | func (ejvr *extJSONValueReader) typeError(t Type) error {
method ensureElementValue (line 172) | func (ejvr *extJSONValueReader) ensureElementValue(t Type, destination...
method Type (line 189) | func (ejvr *extJSONValueReader) Type() Type {
method Skip (line 193) | func (ejvr *extJSONValueReader) Skip() error {
method ReadArray (line 217) | func (ejvr *extJSONValueReader) ReadArray() (ArrayReader, error) {
method ReadBinary (line 233) | func (ejvr *extJSONValueReader) ReadBinary() (b []byte, btype byte, er...
method ReadBoolean (line 249) | func (ejvr *extJSONValueReader) ReadBoolean() (bool, error) {
method ReadDocument (line 267) | func (ejvr *extJSONValueReader) ReadDocument() (DocumentReader, error) {
method ReadCodeWithScope (line 283) | func (ejvr *extJSONValueReader) ReadCodeWithScope() (code string, dr D...
method ReadDBPointer (line 299) | func (ejvr *extJSONValueReader) ReadDBPointer() (ns string, oid Object...
method ReadDateTime (line 315) | func (ejvr *extJSONValueReader) ReadDateTime() (int64, error) {
method ReadDecimal128 (line 331) | func (ejvr *extJSONValueReader) ReadDecimal128() (Decimal128, error) {
method ReadDouble (line 347) | func (ejvr *extJSONValueReader) ReadDouble() (float64, error) {
method ReadInt32 (line 363) | func (ejvr *extJSONValueReader) ReadInt32() (int32, error) {
method ReadInt64 (line 379) | func (ejvr *extJSONValueReader) ReadInt64() (int64, error) {
method ReadJavascript (line 395) | func (ejvr *extJSONValueReader) ReadJavascript() (code string, err err...
method ReadMaxKey (line 411) | func (ejvr *extJSONValueReader) ReadMaxKey() error {
method ReadMinKey (line 427) | func (ejvr *extJSONValueReader) ReadMinKey() error {
method ReadNull (line 443) | func (ejvr *extJSONValueReader) ReadNull() error {
method ReadObjectID (line 461) | func (ejvr *extJSONValueReader) ReadObjectID() (ObjectID, error) {
method ReadRegex (line 477) | func (ejvr *extJSONValueReader) ReadRegex() (pattern string, options s...
method ReadString (line 493) | func (ejvr *extJSONValueReader) ReadString() (string, error) {
method ReadSymbol (line 511) | func (ejvr *extJSONValueReader) ReadSymbol() (symbol string, err error) {
method ReadTimestamp (line 527) | func (ejvr *extJSONValueReader) ReadTimestamp() (t uint32, i uint32, e...
method ReadUndefined (line 543) | func (ejvr *extJSONValueReader) ReadUndefined() error {
method ReadElement (line 559) | func (ejvr *extJSONValueReader) ReadElement() (string, ValueReader, er...
method ReadValue (line 586) | func (ejvr *extJSONValueReader) ReadValue() (ValueReader, error) {
function NewExtJSONValueReader (line 32) | func NewExtJSONValueReader(r io.Reader, canonicalOnly bool) (ValueReader...
function newExtJSONValueReader (line 36) | func newExtJSONValueReader(r io.Reader, canonicalOnly bool) (*extJSONVal...
FILE: bson/extjson_reader_test.go
function TestExtJSONReader (line 20) | func TestExtJSONReader(t *testing.T) {
function TestReadMultipleTopLevelDocuments (line 52) | func TestReadMultipleTopLevelDocuments(t *testing.T) {
function readAllDocuments (line 125) | func readAllDocuments(vr ValueReader) ([][]byte, error) {
FILE: bson/extjson_wrappers.go
function wrapperKeyBSONType (line 18) | func wrapperKeyBSONType(key string) Type {
method parseBinary (line 57) | func (ejv *extJSONValue) parseBinary() (b []byte, subType byte, err erro...
method parseDBPointer (line 118) | func (ejv *extJSONValue) parseDBPointer() (ns string, oid ObjectID, err ...
constant rfc3339Milli (line 174) | rfc3339Milli = "2006-01-02T15:04:05.999Z07:00"
method parseDateTime (line 179) | func (ejv *extJSONValue) parseDateTime() (int64, error) {
function parseDatetimeString (line 194) | func parseDatetimeString(data string) (int64, error) {
function parseDatetimeObject (line 211) | func parseDatetimeObject(data *extJSONObject) (d int64, err error) {
method parseDecimal128 (line 244) | func (ejv *extJSONValue) parseDecimal128() (Decimal128, error) {
method parseDouble (line 257) | func (ejv *extJSONValue) parseDouble() (float64, error) {
method parseInt32 (line 283) | func (ejv *extJSONValue) parseInt32() (int32, error) {
method parseInt64 (line 304) | func (ejv *extJSONValue) parseInt64() (int64, error) {
method parseJavascript (line 321) | func (ejv *extJSONValue) parseJavascript() (code string, err error) {
method parseMinMaxKey (line 329) | func (ejv *extJSONValue) parseMinMaxKey(minmax string) error {
method parseObjectID (line 341) | func (ejv *extJSONValue) parseObjectID() (ObjectID, error) {
method parseRegex (line 349) | func (ejv *extJSONValue) parseRegex() (pattern, options string, err erro...
method parseSymbol (line 400) | func (ejv *extJSONValue) parseSymbol() (string, error) {
method parseTimestamp (line 408) | func (ejv *extJSONValue) parseTimestamp() (t, i uint32, err error) {
method parseUndefined (line 475) | func (ejv *extJSONValue) parseUndefined() error {
FILE: bson/extjson_writer.go
type ejvwState (line 22) | type ejvwState struct
type extJSONValueWriter (line 26) | type extJSONValueWriter struct
method reset (line 71) | func (ejvw *extJSONValueWriter) reset(buf []byte, canonical, escapeHTM...
method advanceFrame (line 85) | func (ejvw *extJSONValueWriter) advanceFrame() {
method push (line 99) | func (ejvw *extJSONValueWriter) push(m mode) {
method pop (line 105) | func (ejvw *extJSONValueWriter) pop() {
method invalidTransitionErr (line 114) | func (ejvw *extJSONValueWriter) invalidTransitionErr(destination mode,...
method ensureElementValue (line 128) | func (ejvw *extJSONValueWriter) ensureElementValue(destination mode, c...
method writeExtendedSingleValue (line 142) | func (ejvw *extJSONValueWriter) writeExtendedSingleValue(key string, v...
method WriteArray (line 153) | func (ejvw *extJSONValueWriter) WriteArray() (ArrayWriter, error) {
method WriteBinary (line 164) | func (ejvw *extJSONValueWriter) WriteBinary(b []byte) error {
method WriteBinaryWithSubtype (line 168) | func (ejvw *extJSONValueWriter) WriteBinaryWithSubtype(b []byte, btype...
method WriteBoolean (line 184) | func (ejvw *extJSONValueWriter) WriteBoolean(b bool) error {
method WriteCodeWithScope (line 196) | func (ejvw *extJSONValueWriter) WriteCodeWithScope(code string) (Docum...
method WriteDBPointer (line 212) | func (ejvw *extJSONValueWriter) WriteDBPointer(ns string, oid ObjectID...
method WriteDateTime (line 230) | func (ejvw *extJSONValueWriter) WriteDateTime(dt int64) error {
method WriteDecimal128 (line 250) | func (ejvw *extJSONValueWriter) WriteDecimal128(d Decimal128) error {
method WriteDocument (line 262) | func (ejvw *extJSONValueWriter) WriteDocument() (DocumentWriter, error) {
method WriteDouble (line 277) | func (ejvw *extJSONValueWriter) WriteDouble(f float64) error {
method WriteInt32 (line 304) | func (ejvw *extJSONValueWriter) WriteInt32(i int32) error {
method WriteInt64 (line 323) | func (ejvw *extJSONValueWriter) WriteInt64(i int64) error {
method WriteJavascript (line 342) | func (ejvw *extJSONValueWriter) WriteJavascript(code string) error {
method WriteMaxKey (line 357) | func (ejvw *extJSONValueWriter) WriteMaxKey() error {
method WriteMinKey (line 369) | func (ejvw *extJSONValueWriter) WriteMinKey() error {
method WriteNull (line 381) | func (ejvw *extJSONValueWriter) WriteNull() error {
method WriteObjectID (line 393) | func (ejvw *extJSONValueWriter) WriteObjectID(oid ObjectID) error {
method WriteRegex (line 405) | func (ejvw *extJSONValueWriter) WriteRegex(pattern string, options str...
method WriteString (line 424) | func (ejvw *extJSONValueWriter) WriteString(s string) error {
method WriteSymbol (line 439) | func (ejvw *extJSONValueWriter) WriteSymbol(symbol string) error {
method WriteTimestamp (line 454) | func (ejvw *extJSONValueWriter) WriteTimestamp(t uint32, i uint32) err...
method WriteUndefined (line 472) | func (ejvw *extJSONValueWriter) WriteUndefined() error {
method WriteDocumentElement (line 484) | func (ejvw *extJSONValueWriter) WriteDocumentElement(key string) (Valu...
method WriteDocumentEnd (line 499) | func (ejvw *extJSONValueWriter) WriteDocumentEnd() error {
method WriteArrayElement (line 538) | func (ejvw *extJSONValueWriter) WriteArrayElement() (ValueWriter, erro...
method WriteArrayEnd (line 549) | func (ejvw *extJSONValueWriter) WriteArrayEnd() error {
function NewExtJSONValueWriter (line 38) | func NewExtJSONValueWriter(w io.Writer, canonical, escapeHTML bool) Valu...
function newExtJSONWriter (line 45) | func newExtJSONWriter(w io.Writer, canonical, escapeHTML, newlines bool)...
function newExtJSONWriterFromSlice (line 59) | func newExtJSONWriterFromSlice(buf []byte, canonical, escapeHTML bool) *...
function formatDouble (line 569) | func formatDouble(f float64) string {
function writeStringWithEscapes (line 592) | func writeStringWithEscapes(s string, buf *bytes.Buffer, escapeHTML bool) {
type sortableString (line 672) | type sortableString
method Len (line 674) | func (ss sortableString) Len() int {
method Less (line 678) | func (ss sortableString) Less(i, j int) bool {
method Swap (line 682) | func (ss sortableString) Swap(i, j int) {
function sortStringAlphebeticAscending (line 686) | func sortStringAlphebeticAscending(s string) string {
FILE: bson/extjson_writer_test.go
function TestExtJSONValueWriter (line 19) | func TestExtJSONValueWriter(t *testing.T) {
FILE: bson/fuzz_test.go
function FuzzDecode (line 18) | func FuzzDecode(f *testing.F) {
FILE: bson/json_scanner.go
type jsonTokenType (line 20) | type jsonTokenType
constant jttBeginObject (line 23) | jttBeginObject jsonTokenType = iota
constant jttEndObject (line 24) | jttEndObject
constant jttBeginArray (line 25) | jttBeginArray
constant jttEndArray (line 26) | jttEndArray
constant jttColon (line 27) | jttColon
constant jttComma (line 28) | jttComma
constant jttInt32 (line 29) | jttInt32
constant jttInt64 (line 30) | jttInt64
constant jttDouble (line 31) | jttDouble
constant jttString (line 32) | jttString
constant jttBool (line 33) | jttBool
constant jttNull (line 34) | jttNull
constant jttEOF (line 35) | jttEOF
type jsonToken (line 38) | type jsonToken struct
type jsonScanner (line 44) | type jsonScanner struct
method nextToken (line 53) | func (js *jsonScanner) nextToken() (*jsonToken, error) {
method readNextByte (line 100) | func (js *jsonScanner) readNextByte() (byte, error) {
method readNNextBytes (line 115) | func (js *jsonScanner) readNNextBytes(dst []byte, n, offset int) error {
method readIntoBuf (line 129) | func (js *jsonScanner) readIntoBuf() error {
method scanString (line 191) | func (js *jsonScanner) scanString() (*jsonToken, error) {
method scanLiteral (line 315) | func (js *jsonScanner) scanLiteral(first byte) (*jsonToken, error) {
method scanNumber (line 365) | func (js *jsonScanner) scanNumber(first byte) (*jsonToken, error) {
function isWhiteSpace (line 153) | func isWhiteSpace(c byte) bool {
function isDigit (line 157) | func isDigit(c byte) bool {
function isValueTerminator (line 161) | func isValueTerminator(c byte) bool {
function getu4 (line 169) | func getu4(s []byte) rune {
type numberScanState (line 349) | type numberScanState
constant nssSawLeadingMinus (line 352) | nssSawLeadingMinus numberScanState = iota
constant nssSawLeadingZero (line 353) | nssSawLeadingZero
constant nssSawIntegerDigits (line 354) | nssSawIntegerDigits
constant nssSawDecimalPoint (line 355) | nssSawDecimalPoint
constant nssSawFractionDigits (line 356) | nssSawFractionDigits
constant nssSawExponentLetter (line 357) | nssSawExponentLetter
constant nssSawExponentSign (line 358) | nssSawExponentSign
constant nssSawExponentDigits (line 359) | nssSawExponentDigits
constant nssDone (line 360) | nssDone
constant nssInvalid (line 361) | nssInvalid
FILE: bson/json_scanner_test.go
function jttDiff (line 18) | func jttDiff(t *testing.T, expected, actual jsonTokenType, desc string) {
function jtvDiff (line 26) | func jtvDiff(t *testing.T, expected, actual any, desc string) {
function expectNilToken (line 34) | func expectNilToken(t *testing.T, v *jsonToken, desc string) {
type jsonScannerTestCase (line 42) | type jsonScannerTestCase struct
constant longKey (line 49) | longKey = "abcdefghijklmnopqrstuvwxyz" + "abcdefghijklmnopqrstuvwxyz" +
function TestJsonScannerValidInputs (line 60) | func TestJsonScannerValidInputs(t *testing.T) {
function TestJsonScannerInvalidInputs (line 358) | func TestJsonScannerInvalidInputs(t *testing.T) {
FILE: bson/map_codec.go
type mapCodec (line 18) | type mapCodec struct
method EncodeValue (line 49) | func (mc *mapCodec) EncodeValue(ec EncodeContext, vw ValueWriter, val ...
method encodeMapElements (line 81) | func (mc *mapCodec) encodeMapElements(ec EncodeContext, dw DocumentWri...
method DecodeValue (line 127) | func (mc *mapCodec) DecodeValue(dc DecodeContext, vr ValueReader, val ...
method encodeKey (line 196) | func (mc *mapCodec) encodeKey(val reflect.Value, encodeKeysWithStringe...
method decodeKey (line 244) | func (mc *mapCodec) decodeKey(key string, keyType reflect.Type) (refle...
type KeyMarshaler (line 34) | type KeyMarshaler interface
type KeyUnmarshaler (line 44) | type KeyUnmarshaler interface
function clearMap (line 189) | func clearMap(m reflect.Value) {
FILE: bson/marshal.go
constant defaultDstCap (line 15) | defaultDstCap = 256
type Marshaler (line 29) | type Marshaler interface
type ValueMarshaler (line 40) | type ValueMarshaler interface
function Marshal (line 57) | func Marshal(val any) ([]byte, error) {
function MarshalValue (line 97) | func MarshalValue(val any) (Type, []byte, error) {
function MarshalExtJSON (line 146) | func MarshalExtJSON(val any, canonical, escapeHTML bool) ([]byte, error) {
function IndentExtJSON (line 172) | func IndentExtJSON(dst *bytes.Buffer, src []byte, prefix, indent string)...
function MarshalExtJSONIndent (line 178) | func MarshalExtJSONIndent(val any, canonical, escapeHTML bool, prefix, i...
FILE: bson/marshal_test.go
function TestMarshalWithRegistry (line 24) | func TestMarshalWithRegistry(t *testing.T) {
function TestMarshalWithContext (line 48) | func TestMarshalWithContext(t *testing.T) {
function TestMarshalExtJSON (line 73) | func TestMarshalExtJSON(t *testing.T) {
function TestMarshal_roundtripFromBytes (line 87) | func TestMarshal_roundtripFromBytes(t *testing.T) {
function TestMarshal_roundtripFromDoc (line 128) | func TestMarshal_roundtripFromDoc(t *testing.T) {
function TestCachingEncodersNotSharedAcrossRegistries (line 146) | func TestCachingEncodersNotSharedAcrossRegistries(t *testing.T) {
function TestNullBytes (line 205) | func TestNullBytes(t *testing.T) {
function TestMarshalExtJSONIndent (line 244) | func TestMarshalExtJSONIndent(t *testing.T) {
function TestMarshalConcurrently (line 314) | func TestMarshalConcurrently(t *testing.T) {
FILE: bson/marshal_value_cases_test.go
type marshalValueInterfaceInner (line 175) | type marshalValueInterfaceInner struct
method Read (line 181) | func (marshalValueInterfaceInner) Read([]byte) (int, error) {
type marshalValueInterfaceOuter (line 186) | type marshalValueInterfaceOuter struct
type marshalValueMarshaler (line 191) | type marshalValueMarshaler struct
method MarshalBSONValue (line 197) | func (mvi marshalValueMarshaler) MarshalBSONValue() (byte, []byte, err...
method UnmarshalBSONValue (line 203) | func (mvi *marshalValueMarshaler) UnmarshalBSONValue(_ byte, b []byte)...
type marshalValueStruct (line 209) | type marshalValueStruct struct
type marshalValueTestCase (line 213) | type marshalValueTestCase struct
FILE: bson/marshal_value_test.go
function TestMarshalValue (line 19) | func TestMarshalValue(t *testing.T) {
function compareMarshalValueResults (line 70) | func compareMarshalValueResults(t *testing.T, tc marshalValueTestCase, g...
function BenchmarkSliceCodecMarshal (line 78) | func BenchmarkSliceCodecMarshal(b *testing.B) {
FILE: bson/marshaling_cases_test.go
type marshalingTestCase (line 9) | type marshalingTestCase struct
FILE: bson/mgoregistry.go
function NewMgoRegistry (line 26) | func NewMgoRegistry() *Registry {
function NewRespectNilValuesMgoRegistry (line 66) | func NewRespectNilValuesMgoRegistry() *Registry {
function mgoStringDecodeValue (line 79) | func mgoStringDecodeValue(dc DecodeContext, vr ValueReader, val reflect....
type setter (line 123) | type setter interface
type getter (line 133) | type getter interface
function setterDecodeValue (line 138) | func setterDecodeValue(_ DecodeContext, vr ValueReader, val reflect.Valu...
function getterEncodeValue (line 176) | func getterEncodeValue(ec EncodeContext, vw ValueWriter, val reflect.Val...
FILE: bson/mgoregistry_test.go
function wrapInDoc (line 29) | func wrapInDoc(data string) string {
function makeZeroDoc (line 36) | func makeZeroDoc(value any) (zero any) {
function unmarshalWithRegistry (line 54) | func unmarshalWithRegistry(t *testing.T, r *Registry, data []byte, val a...
function testUnmarshal (line 62) | func testUnmarshal(t *testing.T, data string, obj any) {
type testItemType (line 69) | type testItemType struct
function TestMarshalSampleItems (line 97) | func TestMarshalSampleItems(t *testing.T) {
function TestUnmarshalSampleItems (line 114) | func TestUnmarshalSampleItems(t *testing.T) {
function TestMarshalAllItems (line 226) | func TestMarshalAllItems(t *testing.T) {
function TestUnmarshalAllItems (line 243) | func TestUnmarshalAllItems(t *testing.T) {
function TestUnmarshalRawAllItems (line 254) | func TestUnmarshalRawAllItems(t *testing.T) {
function TestUnmarshalRawIncompatible (line 273) | func TestUnmarshalRawIncompatible(t *testing.T) {
function TestUnmarshalZeroesStruct (line 279) | func TestUnmarshalZeroesStruct(t *testing.T) {
function TestUnmarshalZeroesMap (line 294) | func TestUnmarshalZeroesMap(t *testing.T) {
function TestUnmarshalNonNilInterface (line 309) | func TestUnmarshalNonNilInterface(t *testing.T) {
function TestPtrInline (line 324) | func TestPtrInline(t *testing.T) {
function TestOneWayMarshalItems (line 473) | func TestOneWayMarshalItems(t *testing.T) {
type specSample1 (line 494) | type specSample1 struct
type specSample2 (line 498) | type specSample2 struct
function TestMarshalStructSampleItems (line 514) | func TestMarshalStructSampleItems(t *testing.T) {
function TestUnmarshalStructSampleItems (line 530) | func TestUnmarshalStructSampleItems(t *testing.T) {
function Test64bitInt (line 538) | func Test64bitInt(t *testing.T) {
type prefixPtr (line 561) | type prefixPtr
method GetBSON (line 565) | func (t *prefixPtr) GetBSON() (any, error) {
method SetBSON (line 572) | func (t *prefixPtr) SetBSON(raw RawValue) error {
type prefixVal (line 562) | type prefixVal
method GetBSON (line 595) | func (t prefixVal) GetBSON() (any, error) {
method SetBSON (line 599) | func (t *prefixVal) SetBSON(raw RawValue) error {
function TestMarshalStructItems (line 718) | func TestMarshalStructItems(t *testing.T) {
function TestUnmarshalStructItems (line 734) | func TestUnmarshalStructItems(t *testing.T) {
function TestUnmarshalRawStructItems (line 742) | func TestUnmarshalRawStructItems(t *testing.T) {
type dOnIface (line 765) | type dOnIface struct
type ignoreField (line 769) | type ignoreField struct
function TestMarshalOneWayItems (line 802) | func TestMarshalOneWayItems(t *testing.T) {
type intAlias (line 821) | type intAlias
function TestUnmarshalOneWayItems (line 875) | func TestUnmarshalOneWayItems(t *testing.T) {
function TestUnmarshalNilInStruct (line 883) | func TestUnmarshalNilInStruct(t *testing.T) {
type structWithDupKeys (line 897) | type structWithDupKeys struct
function TestMarshalErrorItems (line 949) | func TestMarshalErrorItems(t *testing.T) {
type unmarshalErrorType (line 969) | type unmarshalErrorType struct
function TestUnmarshalErrorItems (line 1003) | func TestUnmarshalErrorItems(t *testing.T) {
type unmarshalRawErrorType (line 1022) | type unmarshalRawErrorType struct
function TestUnmarshalRawErrorItems (line 1047) | func TestUnmarshalRawErrorItems(t *testing.T) {
function TestUnmarshalMapDocumentTooShort (line 1085) | func TestUnmarshalMapDocumentTooShort(t *testing.T) {
type setterType (line 1102) | type setterType struct
method SetBSON (line 1106) | func (o *setterType) SetBSON(raw RawValue) error {
type ptrSetterDoc (line 1129) | type ptrSetterDoc struct
type valSetterDoc (line 1133) | type valSetterDoc struct
function TestUnmarshalAllItemsWithPtrSetter (line 1137) | func TestUnmarshalAllItemsWithPtrSetter(t *testing.T) {
function TestUnmarshalWholeDocumentWithSetter (line 1174) | func TestUnmarshalWholeDocumentWithSetter(t *testing.T) {
function TestUnmarshalSetterErrors (line 1181) | func TestUnmarshalSetterErrors(t *testing.T) {
function TestUnmarshalSetterErrSetZero (line 1205) | func TestUnmarshalSetterErrSetZero(t *testing.T) {
type typeWithGetter (line 1228) | type typeWithGetter struct
method GetBSON (line 1233) | func (t *typeWithGetter) GetBSON() (any, error) {
type docWithGetterField (line 1240) | type docWithGetterField struct
function TestMarshalAllItemsWithGetter (line 1244) | func TestMarshalAllItemsWithGetter(t *testing.T) {
function TestMarshalWholeDocumentWithGetter (line 1266) | func TestMarshalWholeDocumentWithGetter(t *testing.T) {
function TestGetterErrors (line 1278) | func TestGetterErrors(t *testing.T) {
type intGetter (line 1301) | type intGetter
method GetBSON (line 1303) | func (t intGetter) GetBSON() (any, error) {
type typeWithIntGetter (line 1307) | type typeWithIntGetter struct
function TestMarshalShortWithGetter (line 1311) | func TestMarshalShortWithGetter(t *testing.T) {
function TestMarshalWithGetterNil (line 1325) | func TestMarshalWithGetterNil(t *testing.T) {
type crossTypeItem (line 1343) | type crossTypeItem struct
type condStr (line 1348) | type condStr struct
type condStrNS (line 1351) | type condStrNS struct
type condBool (line 1354) | type condBool struct
type condInt (line 1357) | type condInt struct
type condUInt (line 1360) | type condUInt struct
type condFloat (line 1363) | type condFloat struct
type condIface (line 1366) | type condIface struct
type condPtr (line 1369) | type condPtr struct
type condSlice (line 1372) | type condSlice struct
type condMap (line 1375) | type condMap struct
type namedCondStr (line 1378) | type namedCondStr struct
type condTime (line 1381) | type condTime struct
type condStruct (line 1384) | type condStruct struct
type shortInt (line 1388) | type shortInt struct
type shortUint (line 1391) | type shortUint struct
type shortIface (line 1394) | type shortIface struct
type shortPtr (line 1397) | type shortPtr struct
type shortNonEmptyInt (line 1400) | type shortNonEmptyInt struct
type inlineInt (line 1404) | type inlineInt struct
type inlineDupName (line 1407) | type inlineDupName struct
type inlineMap (line 1411) | type inlineMap struct
type inlineMapInt (line 1415) | type inlineMapInt struct
type inlineMapMyM (line 1419) | type inlineMapMyM struct
type inlineDupMap (line 1423) | type inlineDupMap struct
type inlineBadKeyMap (line 1427) | type inlineBadKeyMap struct
type inlineUnexported (line 1430) | type inlineUnexported struct
type MStruct (line 1434) | type MStruct struct
type InlinePtrStruct (line 1437) | type InlinePtrStruct struct
type inlinePtrPtrStruct (line 1441) | type inlinePtrPtrStruct struct
type unexported (line 1445) | type unexported struct
type getterSetterD (line 1449) | type getterSetterD
method GetBSON (line 1451) | func (s getterSetterD) GetBSON() (any, error) {
method SetBSON (line 1458) | func (s *getterSetterD) SetBSON(raw RawValue) error {
type getterSetterInt (line 1478) | type getterSetterInt
method GetBSON (line 1480) | func (i getterSetterInt) GetBSON() (any, error) {
method SetBSON (line 1484) | func (i *getterSetterInt) SetBSON(raw RawValue) error {
type ifaceType (line 1503) | type ifaceType interface
type ifaceSlice (line 1507) | type ifaceSlice
method SetBSON (line 1509) | func (s *ifaceSlice) SetBSON(raw RawValue) error {
method GetBSON (line 1525) | func (s ifaceSlice) GetBSON() (any, error) {
type MyString (line 1530) | type MyString
type MyBytes (line 1531) | type MyBytes
type MyBool (line 1532) | type MyBool
type MyD (line 1533) | type MyD
type MyRawD (line 1534) | type MyRawD
type MyM (line 1535) | type MyM
function parseURL (line 1549) | func parseURL(s string) *url.URL {
function testCrossPair (line 1785) | func testCrossPair(t *testing.T, dump any, load any) {
function TestTwoWayCrossPairs (line 1799) | func TestTwoWayCrossPairs(t *testing.T) {
function TestOneWayCrossPairs (line 1808) | func TestOneWayCrossPairs(t *testing.T) {
type jsonType (line 1819) | type jsonType struct
function objectIDHex (line 1823) | func objectIDHex(s string) ObjectID {
function TestObjectIdJSONMarshaling (line 1861) | func TestObjectIdJSONMarshaling(t *testing.T) {
function TestMarshalNotRespectNil (line 1890) | func TestMarshalNotRespectNil(t *testing.T) {
function TestMarshalRespectNil (line 1919) | func TestMarshalRespectNil(t *testing.T) {
type Inner (line 1983) | type Inner struct
type InlineLoop (line 1987) | type InlineLoop struct
function TestInlineWithPointerToSelf (line 1993) | func TestInlineWithPointerToSelf(t *testing.T) {
FILE: bson/mode.go
type mode (line 13) | type mode
method String (line 26) | func (m mode) String() string {
constant _ (line 16) | _ mode = iota
constant mTopLevel (line 17) | mTopLevel
constant mDocument (line 18) | mDocument
constant mArray (line 19) | mArray
constant mValue (line 20) | mValue
constant mElement (line 21) | mElement
constant mCodeWithScope (line 22) | mCodeWithScope
constant mSpacer (line 23) | mSpacer
type TransitionError (line 53) | type TransitionError struct
method Error (line 62) | func (te TransitionError) Error() string {
FILE: bson/objectid.go
type ObjectID (line 29) | type ObjectID
method Timestamp (line 61) | func (id ObjectID) Timestamp() time.Time {
method Hex (line 67) | func (id ObjectID) Hex() string {
method String (line 73) | func (id ObjectID) String() string {
method IsZero (line 78) | func (id ObjectID) IsZero() bool {
method MarshalText (line 100) | func (id ObjectID) MarshalText() ([]byte, error) {
method UnmarshalText (line 116) | func (id *ObjectID) UnmarshalText(b []byte) error {
method MarshalJSON (line 134) | func (id ObjectID) MarshalJSON() ([]byte, error) {
method UnmarshalJSON (line 152) | func (id *ObjectID) UnmarshalJSON(b []byte) error {
function NewObjectID (line 45) | func NewObjectID() ObjectID {
function NewObjectIDFromTimestamp (line 50) | func NewObjectIDFromTimestamp(timestamp time.Time) ObjectID {
function ObjectIDFromHex (line 84) | func ObjectIDFromHex(s string) (ObjectID, error) {
function processUniqueBytes (line 187) | func processUniqueBytes() [5]byte {
function readRandomUint32 (line 197) | func readRandomUint32() uint32 {
function putUint24 (line 207) | func putUint24(b []byte, v uint32) {
FILE: bson/objectid_test.go
function TestString (line 21) | func TestString(t *testing.T) {
function BenchmarkHex (line 26) | func BenchmarkHex(b *testing.B) {
function BenchmarkObjectIDFromHex (line 33) | func BenchmarkObjectIDFromHex(b *testing.B) {
function BenchmarkNewObjectIDFromTimestamp (line 40) | func BenchmarkNewObjectIDFromTimestamp(b *testing.B) {
function BenchmarkObjectIDJSON (line 47) | func BenchmarkObjectIDJSON(b *testing.B) {
function TestFromHex_RoundTrip (line 93) | func TestFromHex_RoundTrip(t *testing.T) {
function TestFromHex_InvalidHex (line 101) | func TestFromHex_InvalidHex(t *testing.T) {
function TestFromHex_WrongLength (line 106) | func TestFromHex_WrongLength(t *testing.T) {
function TestTimeStamp (line 111) | func TestTimeStamp(t *testing.T) {
function TestCreateFromTime (line 143) | func TestCreateFromTime(t *testing.T) {
function TestGenerationTime (line 178) | func TestGenerationTime(t *testing.T) {
function TestCounterOverflow (line 210) | func TestCounterOverflow(t *testing.T) {
function TestObjectID_MarshalJSONMap (line 216) | func TestObjectID_MarshalJSONMap(t *testing.T) {
function TestObjectID_UnmarshalJSONMap (line 232) | func TestObjectID_UnmarshalJSONMap(t *testing.T) {
function TestObjectID_UnmarshalJSON (line 248) | func TestObjectID_UnmarshalJSON(t *testing.T) {
function TestObjectID_MarshalText (line 278) | func TestObjectID_MarshalText(t *testing.T) {
function TestObjectID_UnmarshalText (line 287) | func TestObjectID_UnmarshalText(t *testing.T) {
FILE: bson/pointer_codec.go
type pointerCodec (line 19) | type pointerCodec struct
method EncodeValue (line 26) | func (pc *pointerCodec) EncodeValue(ec EncodeContext, vw ValueWriter, ...
method DecodeValue (line 56) | func (pc *pointerCodec) DecodeValue(dc DecodeContext, vr ValueReader, ...
FILE: bson/primitive.go
type Zeroer (line 23) | type Zeroer interface
type Binary (line 31) | type Binary struct
method Equal (line 37) | func (bp Binary) Equal(bp2 Binary) bool {
method IsZero (line 45) | func (bp Binary) IsZero() bool {
type Undefined (line 50) | type Undefined struct
type DateTime (line 53) | type DateTime
method MarshalJSON (line 61) | func (d DateTime) MarshalJSON() ([]byte, error) {
method UnmarshalJSON (line 66) | func (d *DateTime) UnmarshalJSON(data []byte) error {
method Time (line 81) | func (d DateTime) Time() time.Time {
function NewDateTimeFromTime (line 86) | func NewDateTimeFromTime(t time.Time) DateTime {
type Null (line 91) | type Null struct
type Regex (line 94) | type Regex struct
method String (line 99) | func (rp Regex) String() string {
method Equal (line 104) | func (rp Regex) Equal(rp2 Regex) bool {
method IsZero (line 109) | func (rp Regex) IsZero() bool {
type DBPointer (line 114) | type DBPointer struct
method String (line 119) | func (d DBPointer) String() string {
method Equal (line 124) | func (d DBPointer) Equal(d2 DBPointer) bool {
method IsZero (line 129) | func (d DBPointer) IsZero() bool {
type JavaScript (line 134) | type JavaScript
type Symbol (line 137) | type Symbol
type CodeWithScope (line 140) | type CodeWithScope struct
method String (line 145) | func (cws CodeWithScope) String() string {
type Timestamp (line 150) | type Timestamp struct
method After (line 156) | func (tp Timestamp) After(tp2 Timestamp) bool {
method Before (line 161) | func (tp Timestamp) Before(tp2 Timestamp) bool {
method Equal (line 166) | func (tp Timestamp) Equal(tp2 Timestamp) bool {
method IsZero (line 171) | func (tp Timestamp) IsZero() bool {
method Compare (line 177) | func (tp Timestamp) Compare(tp2 Timestamp) int {
type MinKey (line 189) | type MinKey struct
type MaxKey (line 192) | type MaxKey struct
type D (line 200) | type D
method String (line 202) | func (d D) String() string {
method MarshalJSON (line 211) | func (d D) MarshalJSON() ([]byte, error) {
method UnmarshalJSON (line 238) | func (d *D) UnmarshalJSON(b []byte) error {
type E (line 260) | type E struct
type M (line 272) | type M
method String (line 274) | func (m M) String() string {
type A (line 287) | type A
function jsonDecodeD (line 289) | func jsonDecodeD(dec *json.Decoder) (D, error) {
function jsonDecodeSlice (line 331) | func jsonDecodeSlice(dec *json.Decoder) ([]any, error) {
function tokenString (line 364) | func tokenString(t json.Token) string {
FILE: bson/primitive_codecs.go
function registerPrimitiveCodecs (line 21) | func registerPrimitiveCodecs(reg *Registry) {
function rawValueEncodeValue (line 32) | func rawValueEncodeValue(_ EncodeContext, vw ValueWriter, val reflect.Va...
function rawValueDecodeValue (line 51) | func rawValueDecodeValue(_ DecodeContext, vr ValueReader, val reflect.Va...
function rawEncodeValue (line 66) | func rawEncodeValue(_ EncodeContext, vw ValueWriter, val reflect.Value) ...
function rawDecodeValue (line 77) | func rawDecodeValue(_ DecodeContext, vr ValueReader, val reflect.Value) ...
FILE: bson/primitive_codecs_test.go
function bytesFromDoc (line 24) | func bytesFromDoc(doc any) []byte {
function TestPrimitiveValueEncoders (line 32) | func TestPrimitiveValueEncoders(t *testing.T) {
function TestPrimitiveValueDecoders (line 478) | func TestPrimitiveValueDecoders(t *testing.T) {
type testValueMarshaler (line 1063) | type testValueMarshaler struct
method MarshalBSONValue (line 1069) | func (tvm testValueMarshaler) MarshalBSONValue() (byte, []byte, error) {
type testValueUnmarshaler (line 1073) | type testValueUnmarshaler struct
method UnmarshalBSONValue (line 1079) | func (tvu *testValueUnmarshaler) UnmarshalBSONValue(t byte, val []byte...
method Equal (line 1084) | func (tvu testValueUnmarshaler) Equal(tvu2 testValueUnmarshaler) bool {
type noPrivateFields (line 1088) | type noPrivateFields struct
function compareNoPrivateFields (line 1092) | func compareNoPrivateFields(npf1, npf2 noPrivateFields) bool {
type zeroTest (line 1096) | type zeroTest struct
method IsZero (line 1100) | func (z zeroTest) IsZero() bool { return z.reportZero }
function compareZeroTest (line 1104) | func compareZeroTest(_, _ zeroTest) bool { return true }
function compareDecimal128 (line 1106) | func compareDecimal128(d1, d2 Decimal128) bool {
FILE: bson/raw.go
type Raw (line 23) | type Raw
method Validate (line 34) | func (r Raw) Validate() (err error) { return bsoncore.Document(r).Vali...
method Lookup (line 40) | func (r Raw) Lookup(key ...string) RawValue {
method LookupErr (line 46) | func (r Raw) LookupErr(key ...string) (RawValue, error) {
method Elements (line 54) | func (r Raw) Elements() ([]RawElement, error) {
method Values (line 73) | func (r Raw) Values() ([]RawValue, error) {
method Index (line 84) | func (r Raw) Index(index uint) RawElement { return RawElement(bsoncore...
method IndexErr (line 87) | func (r Raw) IndexErr(index uint) (RawElement, error) {
method String (line 93) | func (r Raw) String() string { return bsoncore.Document(r).String() }
function ReadDocument (line 27) | func ReadDocument(r io.Reader) (Raw, error) {
FILE: bson/raw_array.go
type RawArray (line 16) | type RawArray
method Index (line 28) | func (a RawArray) Index(index uint) RawValue {
method IndexErr (line 33) | func (a RawArray) IndexErr(index uint) (RawValue, error) {
method DebugString (line 42) | func (a RawArray) DebugString() string {
method String (line 48) | func (a RawArray) String() string {
method Values (line 55) | func (a RawArray) Values() ([]RawValue, error) {
method Validate (line 71) | func (a RawArray) Validate() error {
function ReadArray (line 20) | func ReadArray(r io.Reader) (RawArray, error) {
FILE: bson/raw_array_test.go
function TestReadArray (line 22) | func TestReadArray(t *testing.T) {
function TestArray_Validate (line 96) | func TestArray_Validate(t *testing.T) {
function TestArray_Index (line 212) | func TestArray_Index(t *testing.T) {
function TestRawArray_Stringt (line 319) | func TestRawArray_Stringt(t *testing.T) {
function TestRawArray_Values (line 409) | func TestRawArray_Values(t *testing.T) {
FILE: bson/raw_element.go
type RawElement (line 14) | type RawElement
method Key (line 18) | func (re RawElement) Key() string { return bsoncore.Element(re).Key() }
method KeyErr (line 21) | func (re RawElement) KeyErr() (string, error) { return bsoncore.Elemen...
method Value (line 25) | func (re RawElement) Value() RawValue { return convertFromCoreValue(bs...
method ValueErr (line 28) | func (re RawElement) ValueErr() (RawValue, error) {
method Validate (line 34) | func (re RawElement) Validate() error { return bsoncore.Element(re).Va...
method String (line 37) | func (re RawElement) String() string {
method DebugString (line 48) | func (re RawElement) DebugString() string { return bsoncore.Element(re...
FILE: bson/raw_test.go
function ExampleRaw_Validate (line 24) | func ExampleRaw_Validate() {
function BenchmarkRawValidate (line 33) | func BenchmarkRawValidate(b *testing.B) {
function TestRaw (line 41) | func TestRaw(t *testing.T) {
function BenchmarkRawString (line 368) | func BenchmarkRawString(b *testing.B) {
function TestComplexDocuments_StringN (line 472) | func TestComplexDocuments_StringN(t *testing.T) {
function createVoluminousDocument (line 496) | func createVoluminousDocument(numKeys int) D {
function createLargeStringsDocument (line 505) | func createLargeStringsDocument(sizeMB int) D {
function createMassiveArraysDocument (line 516) | func createMassiveArraysDocument(arraySize int) D {
function createUniqueVoluminousDocument (line 531) | func createUniqueVoluminousDocument(t *testing.T, size int) bsoncore.Doc...
function createLargeSingleDoc (line 552) | func createLargeSingleDoc(t *testing.T) bsoncore.Document {
function createVoluminousArrayDocuments (line 574) | func createVoluminousArrayDocuments(t *testing.T, size int) bsoncore.Doc...
FILE: bson/raw_value.go
type RawValue (line 29) | type RawValue struct
method IsZero (line 38) | func (rv RawValue) IsZero() bool {
method Unmarshal (line 46) | func (rv RawValue) Unmarshal(val any) error {
method Equal (line 55) | func (rv RawValue) Equal(rv2 RawValue) bool {
method UnmarshalWithRegistry (line 69) | func (rv RawValue) UnmarshalWithRegistry(r *Registry, val any) error {
method UnmarshalWithContext (line 89) | func (rv RawValue) UnmarshalWithContext(dc *DecodeContext, val any) er...
method Validate (line 116) | func (rv RawValue) Validate() error { return convertToCoreValue(rv).Va...
method IsNumber (line 119) | func (rv RawValue) IsNumber() bool { return convertToCoreValue(rv).IsN...
method String (line 123) | func (rv RawValue) String() string { return convertToCoreValue(rv).Str...
method DebugString (line 127) | func (rv RawValue) DebugString() string { return convertToCoreValue(rv...
method Double (line 131) | func (rv RawValue) Double() float64 { return convertToCoreValue(rv).Do...
method DoubleOK (line 134) | func (rv RawValue) DoubleOK() (float64, bool) { return convertToCoreVa...
method StringValue (line 141) | func (rv RawValue) StringValue() string { return convertToCoreValue(rv...
method StringValueOK (line 145) | func (rv RawValue) StringValueOK() (string, bool) { return convertToCo...
method Document (line 149) | func (rv RawValue) Document() Raw { return Raw(convertToCoreValue(rv)....
method DocumentOK (line 153) | func (rv RawValue) DocumentOK() (Raw, bool) {
method Array (line 160) | func (rv RawValue) Array() RawArray { return RawArray(convertToCoreVal...
method ArrayOK (line 164) | func (rv RawValue) ArrayOK() (RawArray, bool) {
method Binary (line 172) | func (rv RawValue) Binary() (subtype byte, data []byte) { return conve...
method BinaryOK (line 176) | func (rv RawValue) BinaryOK() (subtype byte, data []byte, ok bool) {
method ObjectID (line 182) | func (rv RawValue) ObjectID() ObjectID { return convertToCoreValue(rv)...
method ObjectIDOK (line 186) | func (rv RawValue) ObjectIDOK() (ObjectID, bool) {
method Boolean (line 192) | func (rv RawValue) Boolean() bool { return convertToCoreValue(rv).Bool...
method BooleanOK (line 196) | func (rv RawValue) BooleanOK() (bool, bool) { return convertToCoreValu...
method DateTime (line 200) | func (rv RawValue) DateTime() int64 { return convertToCoreValue(rv).Da...
method DateTimeOK (line 204) | func (rv RawValue) DateTimeOK() (int64, bool) { return convertToCoreVa...
method Time (line 208) | func (rv RawValue) Time() time.Time { return convertToCoreValue(rv).Ti...
method TimeOK (line 212) | func (rv RawValue) TimeOK() (time.Time, bool) { return convertToCoreVa...
method Regex (line 216) | func (rv RawValue) Regex() (pattern, options string) { return convertT...
method RegexOK (line 220) | func (rv RawValue) RegexOK() (pattern, options string, ok bool) {
method DBPointer (line 226) | func (rv RawValue) DBPointer() (string, ObjectID) {
method DBPointerOK (line 232) | func (rv RawValue) DBPointerOK() (string, ObjectID, bool) {
method JavaScript (line 238) | func (rv RawValue) JavaScript() string { return convertToCoreValue(rv)...
method JavaScriptOK (line 242) | func (rv RawValue) JavaScriptOK() (string, bool) { return convertToCor...
method Symbol (line 246) | func (rv RawValue) Symbol() string { return convertToCoreValue(rv).Sym...
method SymbolOK (line 250) | func (rv RawValue) SymbolOK() (string, bool) { return convertToCoreVal...
method CodeWithScope (line 254) | func (rv RawValue) CodeWithScope() (string, Raw) {
method CodeWithScopeOK (line 261) | func (rv RawValue) CodeWithScopeOK() (string, Raw, bool) {
method Int32 (line 268) | func (rv RawValue) Int32() int32 { return convertToCoreValue(rv).Int32...
method Int32OK (line 272) | func (rv RawValue) Int32OK() (int32, bool) { return convertToCoreValue...
method Timestamp (line 276) | func (rv RawValue) Timestamp() (t, i uint32) { return convertToCoreVal...
method TimestampOK (line 280) | func (rv RawValue) TimestampOK() (t, i uint32, ok bool) { return conve...
method Int64 (line 284) | func (rv RawValue) Int64() int64 { return convertToCoreValue(rv).Int64...
method Int64OK (line 288) | func (rv RawValue) Int64OK() (int64, bool) { return convertToCoreValue...
method AsInt64 (line 292) | func (rv RawValue) AsInt64() int64 { return convertToCoreValue(rv).AsI...
method AsInt64OK (line 296) | func (rv RawValue) AsInt64OK() (int64, bool) { return convertToCoreVal...
method AsFloat64 (line 300) | func (rv RawValue) AsFloat64() float64 { return convertToCoreValue(rv)...
method AsFloat64OK (line 304) | func (rv RawValue) AsFloat64OK() (float64, bool) { return convertToCor...
method Decimal128 (line 308) | func (rv RawValue) Decimal128() Decimal128 { return NewDecimal128(conv...
method Decimal128OK (line 312) | func (rv RawValue) Decimal128OK() (Decimal128, bool) {
function convertFromCoreValue (line 107) | func convertFromCoreValue(v bsoncore.Value) RawValue {
function convertToCoreValue (line 111) | func convertToCoreValue(v RawValue) bsoncore.Value {
FILE: bson/raw_value_test.go
function TestRawValue (line 19) | func TestRawValue(t *testing.T) {
FILE: bson/reader.go
type ArrayReader (line 11) | type ArrayReader interface
type DocumentReader (line 17) | type DocumentReader interface
type ValueReader (line 24) | type ValueReader interface
FILE: bson/registry.go
type errNoEncoder (line 21) | type errNoEncoder struct
method Error (line 25) | func (ene errNoEncoder) Error() string {
type errNoDecoder (line 33) | type errNoDecoder struct
method Error (line 37) | func (end errNoDecoder) Error() string {
type errNoTypeMapEntry (line 42) | type errNoTypeMapEntry struct
method Error (line 46) | func (entme errNoTypeMapEntry) Error() string {
type Registry (line 83) | type Registry struct
method RegisterTypeEncoder (line 117) | func (r *Registry) RegisterTypeEncoder(valueType reflect.Type, enc Val...
method RegisterTypeDecoder (line 131) | func (r *Registry) RegisterTypeDecoder(valueType reflect.Type, dec Val...
method RegisterKindEncoder (line 147) | func (r *Registry) RegisterKindEncoder(kind reflect.Kind, enc ValueEnc...
method RegisterKindDecoder (line 163) | func (r *Registry) RegisterKindDecoder(kind reflect.Kind, dec ValueDec...
method RegisterInterfaceEncoder (line 173) | func (r *Registry) RegisterInterfaceEncoder(iface reflect.Type, enc Va...
method RegisterInterfaceDecoder (line 196) | func (r *Registry) RegisterInterfaceDecoder(iface reflect.Type, dec Va...
method RegisterTypeMapEntry (line 222) | func (r *Registry) RegisterTypeMapEntry(bt Type, rt reflect.Type) {
method LookupEncoder (line 243) | func (r *Registry) LookupEncoder(valueType reflect.Type) (ValueEncoder...
method storeTypeEncoder (line 266) | func (r *Registry) storeTypeEncoder(rt reflect.Type, enc ValueEncoder)...
method lookupTypeEncoder (line 270) | func (r *Registry) lookupTypeEncoder(rt reflect.Type) (ValueEncoder, b...
method lookupInterfaceEncoder (line 274) | func (r *Registry) lookupInterfaceEncoder(valueType reflect.Type, allo...
method LookupDecoder (line 312) | func (r *Registry) LookupDecoder(valueType reflect.Type) (ValueDecoder...
method lookupTypeDecoder (line 335) | func (r *Registry) lookupTypeDecoder(valueType reflect.Type) (ValueDec...
method storeTypeDecoder (line 339) | func (r *Registry) storeTypeDecoder(typ reflect.Type, dec ValueDecoder...
method lookupInterfaceDecoder (line 343) | func (r *Registry) lookupInterfaceDecoder(valueType reflect.Type, allo...
method LookupTypeMapEntry (line 365) | func (r *Registry) LookupTypeMapEntry(bt Type) (reflect.Type, error) {
function NewRegistry (line 94) | func NewRegistry() *Registry {
type interfaceValueEncoder (line 373) | type interfaceValueEncoder struct
type interfaceValueDecoder (line 378) | type interfaceValueDecoder struct
FILE: bson/registry_examples_test.go
function ExampleRegistry_customEncoder (line 18) | func ExampleRegistry_customEncoder() {
function ExampleRegistry_customDecoder (line 79) | func ExampleRegistry_customDecoder() {
function ExampleRegistry_RegisterKindEncoder (line 161) | func ExampleRegistry_RegisterKindEncoder() {
function ExampleRegistry_RegisterKindDecoder (line 219) | func ExampleRegistry_RegisterKindDecoder() {
FILE: bson/registry_test.go
function newTestRegistry (line 19) | func newTestRegistry() *Registry {
function TestRegistry (line 28) | func TestRegistry(t *testing.T) {
method get (line 487) | func (c *kindEncoderCache) get(rt reflect.Kind) ValueEncoder {
function BenchmarkLookupEncoder (line 492) | func BenchmarkLookupEncoder(b *testing.B) {
type fakeType1 (line 533) | type fakeType1 struct
type fakeType2 (line 534) | type fakeType2 struct
type fakeType4 (line 535) | type fakeType4 struct
type fakeType5 (line 536) | type fakeType5
type fakeStructCodec (line 537) | type fakeStructCodec struct
type fakeSliceCodec (line 538) | type fakeSliceCodec struct
type fakeMapCodec (line 539) | type fakeMapCodec struct
type fakeCodec (line 542) | type fakeCodec struct
method EncodeValue (line 550) | func (*fakeCodec) EncodeValue(EncodeContext, ValueWriter, reflect.Valu...
method DecodeValue (line 554) | func (*fakeCodec) DecodeValue(DecodeContext, ValueReader, reflect.Valu...
type testInterface1 (line 559) | type testInterface1 interface
type testInterface2 (line 560) | type testInterface2 interface
type testInterface3 (line 561) | type testInterface3 interface
type testInterface4 (line 562) | type testInterface4 interface
type testInterface1Impl (line 565) | type testInterface1Impl struct
method test1 (line 569) | func (testInterface1Impl) test1() {}
type testInterface2Impl (line 571) | type testInterface2Impl struct
method test2 (line 575) | func (testInterface2Impl) test2() {}
type testInterface3Impl (line 577) | type testInterface3Impl struct
method test3 (line 581) | func (*testInterface3Impl) test3() {}
function typeComparer (line 583) | func typeComparer(i1, i2 reflect.Type) bool { return i1 == i2 }
FILE: bson/slice_codec.go
type sliceCodec (line 16) | type sliceCodec struct
method EncodeValue (line 23) | func (sc *sliceCodec) EncodeValue(ec EncodeContext, vw ValueWriter, va...
method DecodeValue (line 97) | func (sc *sliceCodec) DecodeValue(dc DecodeContext, vr ValueReader, va...
FILE: bson/streaming_byte_src.go
type streamingByteSrc (line 20) | type streamingByteSrc struct
method readExact (line 29) | func (s *streamingByteSrc) readExact(p []byte) (int, error) {
method ReadByte (line 39) | func (s *streamingByteSrc) ReadByte() (byte, error) {
method peek (line 48) | func (s *streamingByteSrc) peek(n int) ([]byte, error) {
method discard (line 53) | func (s *streamingByteSrc) discard(n int) (int, error) {
method readSlice (line 62) | func (s *streamingByteSrc) readSlice(delim byte) ([]byte, error) {
method pos (line 99) | func (s *streamingByteSrc) pos() int64 {
method regexLength (line 104) | func (s *streamingByteSrc) regexLength() (int32, error) {
method streamable (line 126) | func (*streamingByteSrc) streamable() bool {
method reset (line 130) | func (s *streamingByteSrc) reset() {
FILE: bson/string_codec.go
type stringCodec (line 16) | type stringCodec struct
method EncodeValue (line 24) | func (sc *stringCodec) EncodeValue(_ EncodeContext, vw ValueWriter, va...
method decodeType (line 36) | func (sc *stringCodec) decodeType(dc DecodeContext, vr ValueReader, t ...
method DecodeValue (line 95) | func (sc *stringCodec) DecodeValue(dctx DecodeContext, vr ValueReader,...
FILE: bson/struct_codec.go
type DecodeError (line 20) | type DecodeError struct
method Unwrap (line 26) | func (de *DecodeError) Unwrap() error {
method Error (line 31) | func (de *DecodeError) Error() string {
method Keys (line 41) | func (de *DecodeError) Keys() []string {
type mapElementsEncoder (line 51) | type mapElementsEncoder interface
type structCodec (line 56) | type structCodec struct
method EncodeValue (line 96) | func (sc *structCodec) EncodeValue(ec EncodeContext, vw ValueWriter, v...
method DecodeValue (line 218) | func (sc *structCodec) DecodeValue(dc DecodeContext, vr ValueReader, v...
method describeStruct (line 447) | func (sc *structCodec) describeStruct(
method describeStructSlow (line 470) | func (sc *structCodec) describeStructSlow(
function newStructCodec (line 88) | func newStructCodec(elemEncoder mapElementsEncoder) *structCodec {
function newDecodeError (line 202) | func newDecodeError(key string, original error) error {
function isEmpty (line 368) | func isEmpty(v reflect.Value, omitZeroStruct bool) bool {
type structDescription (line 399) | type structDescription struct
type fieldDescription (line 406) | type fieldDescription struct
type byIndex (line 418) | type byIndex
method Len (line 420) | func (bi byIndex) Len() int { return len(bi) }
method Swap (line 422) | func (bi byIndex) Swap(i, j int) { bi[i], bi[j] = bi[j], bi[i] }
method Less (line 424) | func (bi byIndex) Less(i, j int) bool {
function dominantField (line 614) | func dominantField(fields []fieldDescription) (fieldDescription, bool) {
function fieldByIndexErr (line 625) | func fieldByIndexErr(v reflect.Value, index []int) (result reflect.Value...
function getInlineField (line 641) | func getInlineField(val reflect.Value, index []int) (reflect.Value, erro...
function deepZero (line 662) | func deepZero(st reflect.Type) (result reflect.Value) {
function recursivePointerTo (line 681) | func recursivePointerTo(v reflect.Value) reflect.Value {
FILE: bson/struct_codec_test.go
function TestIsZero (line 17) | func TestIsZero(t *testing.T) {
FILE: bson/struct_tag_parser.go
type structTags (line 38) | type structTags struct
function parseStructTags (line 72) | func parseStructTags(sf reflect.StructField) (*structTags, error) {
function parseJSONStructTags (line 84) | func parseJSONStructTags(sf reflect.StructField) (*structTags, error) {
function parseTags (line 97) | func parseTags(key string, tag string) (*structTags, error) {
FILE: bson/struct_tag_parser_test.go
function TestStructTagParsers (line 16) | func TestStructTagParsers(t *testing.T) {
FILE: bson/time_codec.go
constant timeFormatString (line 16) | timeFormatString = "2006-01-02T15:04:05.999Z07:00"
type timeCodec (line 20) | type timeCodec struct
method decodeType (line 29) | func (tc *timeCodec) decodeType(dc DecodeContext, vr ValueReader, t re...
method DecodeValue (line 87) | func (tc *timeCodec) DecodeValue(dc DecodeContext, vr ValueReader, val...
method EncodeValue (line 102) | func (tc *timeCodec) EncodeValue(_ EncodeContext, vw ValueWriter, val ...
FILE: bson/time_codec_test.go
function TestTimeCodec (line 18) | func TestTimeCodec(t *testing.T) {
FILE: bson/truncation_test.go
type inputArgs (line 16) | type inputArgs struct
type outputArgs (line 21) | type outputArgs struct
function unmarshalWithContext (line 26) | func unmarshalWithContext(t *testing.T, dc DecodeContext, data []byte, v...
function TestTruncation (line 33) | func TestTruncation(t *testing.T) {
FILE: bson/type_test.go
function TestType (line 13) | func TestType(t *testing.T) {
FILE: bson/types.go
type Type (line 19) | type Type
method String (line 22) | func (bt Type) String() string {
method IsValid (line 27) | func (bt Type) IsValid() bool {
constant TypeDouble (line 41) | TypeDouble Type = 0x01
constant TypeString (line 42) | TypeString Type = 0x02
constant TypeEmbeddedDocument (line 43) | TypeEmbeddedDocument Type = 0x03
constant TypeArray (line 44) | TypeArray Type = 0x04
constant TypeBinary (line 45) | TypeBinary Type = 0x05
constant TypeUndefined (line 46) | TypeUndefined Type = 0x06
constant TypeObjectID (line 47) | TypeObjectID Type = 0x07
constant TypeBoolean (line 48) | TypeBoolean Type = 0x08
constant TypeDateTime (line 49) | TypeDateTime Type = 0x09
constant TypeNull (line 50) | TypeNull Type = 0x0A
constant TypeRegex (line 51) | TypeRegex Type = 0x0B
constant TypeDBPointer (line 52) | TypeDBPointer Type = 0x0C
constant TypeJavaScript (line 53) | TypeJavaScript Type = 0x0D
constant TypeSymbol (line 54) | TypeSymbol Type = 0x0E
constant TypeCodeWithScope (line 55) | TypeCodeWithScope Type = 0x0F
constant TypeInt32 (line 56) | TypeInt32 Type = 0x10
constant TypeTimestamp (line 57) | TypeTimestamp Type = 0x11
constant TypeInt64 (line 58) | TypeInt64 Type = 0x12
constant TypeDecimal128 (line 59) | TypeDecimal128 Type = 0x13
constant TypeMaxKey (line 60) | TypeMaxKey Type = 0x7F
constant TypeMinKey (line 61) | TypeMinKey Type = 0xFF
constant TypeBinaryGeneric (line 66) | TypeBinaryGeneric byte = 0x00
constant TypeBinaryFunction (line 67) | TypeBinaryFunction byte = 0x01
constant TypeBinaryBinaryOld (line 68) | TypeBinaryBinaryOld byte = 0x02
constant TypeBinaryUUIDOld (line 69) | TypeBinaryUUIDOld byte = 0x03
constant TypeBinaryUUID (line 70) | TypeBinaryUUID byte = 0x04
constant TypeBinaryMD5 (line 71) | TypeBinaryMD5 byte = 0x05
constant TypeBinaryEncrypted (line 72) | TypeBinaryEncrypted byte = 0x06
constant TypeBinaryColumn (line 73) | TypeBinaryColumn byte = 0x07
constant TypeBinarySensitive (line 74) | TypeBinarySensitive byte = 0x08
constant TypeBinaryVector (line 75) | TypeBinaryVector byte = 0x09
constant TypeBinaryUserDefined (line 76) | TypeBinaryUserDefined byte = 0x80
FILE: bson/uint_codec.go
type uintCodec (line 16) | type uintCodec struct
method EncodeValue (line 27) | func (uic *uintCodec) EncodeValue(ec EncodeContext, vw ValueWriter, va...
method decodeType (line 53) | func (uic *uintCodec) decodeType(dc DecodeContext, vr ValueReader, t r...
method DecodeValue (line 145) | func (uic *uintCodec) DecodeValue(dc DecodeContext, vr ValueReader, va...
FILE: bson/unmarshal.go
type Unmarshaler (line 22) | type Unmarshaler interface
type ValueUnmarshaler (line 34) | type ValueUnmarshaler interface
function Unmarshal (line 44) | func Unmarshal(data []byte, val any) error {
function UnmarshalValue (line 59) | func UnmarshalValue(t Type, data []byte, val any) error {
function UnmarshalExtJSON (line 73) | func UnmarshalExtJSON(data []byte, canonicalOnly bool, val any) error {
function unmarshalFromReader (line 82) | func unmarshalFromReader(dc DecodeContext, vr ValueReader, val any) error {
FILE: bson/unmarshal_test.go
function TestUnmarshal (line 20) | func TestUnmarshal(t *testing.T) {
function TestUnmarshalWithRegistry (line 42) | func TestUnmarshalWithRegistry(t *testing.T) {
function TestCachingDecodersNotSharedAcrossRegistries (line 89) | func TestCachingDecodersNotSharedAcrossRegistries(t *testing.T) {
function TestUnmarshalExtJSONWithUndefinedField (line 150) | func TestUnmarshalExtJSONWithUndefinedField(t *testing.T) {
function TestUnmarshalInterface (line 292) | func TestUnmarshalInterface(t *testing.T) {
function TestUnmarshalBSONWithUndefinedField (line 465) | func TestUnmarshalBSONWithUndefinedField(t *testing.T) {
function TestUnmarshalByteSlicesUseDistinctArrays (line 619) | func TestUnmarshalByteSlicesUseDistinctArrays(t *testing.T) {
function TestUnmarshalConcurrently (line 825) | func TestUnmarshalConcurrently(t *testing.T) {
function TestUnmarshalTypeCompatibility (line 843) | func TestUnmarshalTypeCompatibility(t *testing.T) {
FILE: bson/unmarshal_value_test.go
function TestUnmarshalValue (line 19) | func TestUnmarshalValue(t *testing.T) {
function TestInitializedPointerDataWithBSONNull (line 36) | func TestInitializedPointerDataWithBSONNull(t *testing.T) {
function BenchmarkSliceCodecUnmarshal (line 57) | func BenchmarkSliceCodecUnmarshal(b *testing.B) {
FILE: bson/unmarshaling_cases_test.go
type unmarshalingTestCase (line 15) | type unmarshalingTestCase struct
function unmarshalingTestCases (line 22) | func unmarshalingTestCases() []unmarshalingTestCase {
type unmarshalerPtrStruct (line 265) | type unmarshalerPtrStruct struct
type unmarshalerNonPtrStruct (line 275) | type unmarshalerNonPtrStruct struct
type myInt64 (line 282) | type myInt64
method UnmarshalBSONValue (line 286) | func (mi *myInt64) UnmarshalBSONValue(t byte, b []byte) error {
method UnmarshalBSON (line 303) | func (mi *myInt64) UnmarshalBSON(b []byte) error {
type myMap (line 315) | type myMap
method UnmarshalBSON (line 317) | func (mm *myMap) UnmarshalBSON(bytes []byte) error {
type myBytes (line 327) | type myBytes
method UnmarshalBSON (line 329) | func (mb *myBytes) UnmarshalBSON(b []byte) error {
type myString (line 341) | type myString
method UnmarshalBSON (line 343) | func (ms *myString) UnmarshalBSON(b []byte) error {
type unmarshalBSONValueCallTracker (line 357) | type unmarshalBSONValueCallTracker struct
method UnmarshalBSONValue (line 381) | func (tracker *unmarshalBSONValueCallTracker) UnmarshalBSONValue(byte,...
type unmarshalBSONCallTracker (line 365) | type unmarshalBSONCallTracker struct
method UnmarshalBSON (line 386) | func (tracker *unmarshalBSONCallTracker) UnmarshalBSON([]byte) error {
type unmarshalBehaviorTestCase (line 374) | type unmarshalBehaviorTestCase struct
FILE: bson/value_reader.go
type byteSrc (line 19) | type byteSrc interface
type vrState (line 59) | type vrState struct
type valueReader (line 74) | type valueReader struct
method advanceFrame (line 151) | func (vr *valueReader) advanceFrame() {
method pop (line 170) | func (vr *valueReader) pop() error {
method invalidTransitionErr (line 203) | func (vr *valueReader) invalidTransitionErr(destination mode, name str...
method typeError (line 217) | func (vr *valueReader) typeError(t Type) error {
method invalidDocumentLengthError (line 221) | func (vr *valueReader) invalidDocumentLengthError() error {
method ensureElementValue (line 225) | func (vr *valueReader) ensureElementValue(t Type, destination mode, ca...
method Type (line 238) | func (vr *valueReader) Type() Type {
method readBytes (line 303) | func (vr *valueReader) readBytes(n int32) ([]byte, error) {
method readValueBytes (line 312) | func (vr *valueReader) readValueBytes(dst []byte) (Type, []byte, error) {
method Skip (line 342) | func (vr *valueReader) Skip() error {
method ReadArray (line 364) | func (vr *valueReader) ReadArray() (ArrayReader, error) {
method ReadBinary (line 388) | func (vr *valueReader) ReadBinary() ([]byte, byte, error) {
method ReadBoolean (line 429) | func (vr *valueReader) ReadBoolean() (bool, error) {
method ReadDocument (line 451) | func (vr *valueReader) ReadDocument() (DocumentReader, error) {
method ReadCodeWithScope (line 487) | func (vr *valueReader) ReadCodeWithScope() (string, DocumentReader, er...
method ReadDBPointer (line 535) | func (vr *valueReader) ReadDBPointer() (string, ObjectID, error) {
method ReadDateTime (line 560) | func (vr *valueReader) ReadDateTime() (int64, error) {
method ReadDecimal128 (line 578) | func (vr *valueReader) ReadDecimal128() (Decimal128, error) {
method ReadDouble (line 597) | func (vr *valueReader) ReadDouble() (float64, error) {
method ReadInt32 (line 615) | func (vr *valueReader) ReadInt32() (int32, error) {
method ReadInt64 (line 632) | func (vr *valueReader) ReadInt64() (int64, error) {
method ReadJavascript (line 649) | func (vr *valueReader) ReadJavascript() (string, error) {
method ReadMaxKey (line 666) | func (vr *valueReader) ReadMaxKey() error {
method ReadMinKey (line 676) | func (vr *valueReader) ReadMinKey() error {
method ReadNull (line 686) | func (vr *valueReader) ReadNull() error {
method ReadObjectID (line 696) | func (vr *valueReader) ReadObjectID() (ObjectID, error) {
method ReadRegex (line 717) | func (vr *valueReader) ReadRegex() (string, string, error) {
method ReadString (line 740) | func (vr *valueReader) ReadString() (string, error) {
method ReadSymbol (line 757) | func (vr *valueReader) ReadSymbol() (string, error) {
method ReadTimestamp (line 773) | func (vr *valueReader) ReadTimestamp() (uint32, uint32, error) {
method ReadUndefined (line 796) | func (vr *valueReader) ReadUndefined() error {
method ReadElement (line 806) | func (vr *valueReader) ReadElement() (string, ValueReader, error) {
method ReadValue (line 841) | func (vr *valueReader) ReadValue() (ValueReader, error) {
method readByte (line 874) | func (vr *valueReader) readByte() (byte, error) {
method readCString (line 882) | func (vr *valueReader) readCString() (string, error) {
method readString (line 890) | func (vr *valueReader) readString() (string, error) {
method peekLength (line 914) | func (vr *valueReader) peekLength() (int32, error) {
method readLength (line 922) | func (vr *valueReader) readLength() (int32, error) {
method readi32 (line 926) | func (vr *valueReader) readi32() (int32, error) {
method readu32 (line 935) | func (vr *valueReader) readu32() (uint32, error) {
method readi64 (line 944) | func (vr *valueReader) readi64() (int64, error) {
method readu64 (line 953) | func (vr *valueReader) readu64() (uint64, error) {
function getBufferedDocumentReader (line 82) | func getBufferedDocumentReader(b []byte) *valueReader {
function putBufferedDocumentReader (line 86) | func putBufferedDocumentReader(vr *valueReader) {
function NewDocumentReader (line 103) | func NewDocumentReader(r io.Reader) ValueReader {
function newBufferedValueReader (line 118) | func newBufferedValueReader(t Type, b []byte) ValueReader {
function newBufferedDocumentReader (line 127) | func newBufferedDocumentReader(b []byte) *valueReader {
function peekNextValueSize (line 244) | func peekNextValueSize(vr *valueReader) (int32, error) {
function readBytes (line 282) | func readBytes(src byteSrc, n int) ([]byte, error) {
FILE: bson/value_reader_test.go
function TestValueReader_ReadBinary (line 29) | func TestValueReader_ReadBinary(t *testing.T) {
function TestValueReader_ReadBoolean (line 135) | func TestValueReader_ReadBoolean(t *testing.T) {
function TestValueReader_ReadDocument_TopLevel_InvalidLength (line 222) | func TestValueReader_ReadDocument_TopLevel_InvalidLength(t *testing.T) {
function TestValueReader_ReadDocument_TopLevel_ValidDocumentWithIncorrectEnd (line 256) | func TestValueReader_ReadDocument_TopLevel_ValidDocumentWithIncorrectEnd...
function TestValueReader_ReadDocument_EmbeddedDocument (line 286) | func TestValueReader_ReadDocument_EmbeddedDocument(t *testing.T) {
function TestValueReader_ReadCodeWithScope (line 388) | func TestValueReader_ReadCodeWithScope(t *testing.T) {
function TestValueReader_ReadDBPointer (line 568) | func TestValueReader_ReadDBPointer(t *testing.T) {
function TestValueReader_ReadDateTime (line 677) | func TestValueReader_ReadDateTime(t *testing.T) {
function TestValueReader_ReadDecimal128 (line 757) | func TestValueReader_ReadDecimal128(t *testing.T) {
function TestValueReader_ReadDouble (line 850) | func TestValueReader_ReadDouble(t *testing.T) {
function TestValueReader_ReadInt32 (line 930) | func TestValueReader_ReadInt32(t *testing.T) {
function TestValueReader_ReadInt64 (line 1010) | func TestValueReader_ReadInt64(t *testing.T) {
function TestValueReader_ReadJavascript_ReadString_ReadSymbol (line 1090) | func TestValueReader_ReadJavascript_ReadString_ReadSymbol(t *testing.T) {
function TestValueReader_ReadMaxKey_ReadMinKey_ReadNull_ReadUndefined (line 1288) | func TestValueReader_ReadMaxKey_ReadMinKey_ReadNull_ReadUndefined(t *tes...
function TestValueReader_ReadObjectID (line 1399) | func TestValueReader_ReadObjectID(t *testing.T) {
function TestValueReader_ReadRegex (line 1479) | func TestValueReader_ReadRegex(t *testing.T) {
function TestValueReader_ReadTimestamp (line 1577) | func TestValueReader_ReadTimestamp(t *testing.T) {
function TestValueReader_ReadBytes_Skip_Buffered (line 1675) | func TestValueReader_ReadBytes_Skip_Buffered(t *testing.T) {
function TestValueReader_ReadBytes_Skip_Streaming (line 2082) | func TestValueReader_ReadBytes_Skip_Streaming(t *testing.T) {
function TestValueReader_InvalidTransition (line 2500) | func TestValueReader_InvalidTransition(t *testing.T) {
function errequal (line 2521) | func errequal(t *testing.T, err1, err2 error) bool {
FILE: bson/value_reader_writer_test.go
type VRWInvoked (line 15) | type VRWInvoked
constant _ (line 18) | _ = iota
constant llvrwReadArray (line 19) | llvrwReadArray VRWInvoked = 1
constant llvrwReadBinary (line 20) | llvrwReadBinary
constant llvrwReadBoolean (line 21) | llvrwReadBoolean
constant llvrwReadDocument (line 22) | llvrwReadDocument
constant llvrwReadCodeWithScope (line 23) | llvrwReadCodeWithScope
constant llvrwReadDBPointer (line 24) | llvrwReadDBPointer
constant llvrwReadDateTime (line 25) | llvrwReadDateTime
constant llvrwReadDecimal128 (line 26) | llvrwReadDecimal128
constant llvrwReadDouble (line 27) | llvrwReadDouble
constant llvrwReadInt32 (line 28) | llvrwReadInt32
constant llvrwReadInt64 (line 29) | llvrwReadInt64
constant llvrwReadJavascript (line 30) | llvrwReadJavascript
constant llvrwReadMaxKey (line 31) | llvrwReadMaxKey
constant llvrwReadMinKey (line 32) | llvrwReadMinKey
constant llvrwReadNull (line 33) | llvrwReadNull
constant llvrwReadObjectID (line 34) | llvrwReadObjectID
constant llvrwReadRegex (line 35) | llvrwReadRegex
constant llvrwReadString (line 36) | llvrwReadString
constant llvrwReadSymbol (line 37) | llvrwReadSymbol
constant llvrwReadTimestamp (line 38) | llvrwReadTimestamp
constant llvrwReadUndefined (line 39) | llvrwReadUndefined
constant llvrwReadElement (line 40) | llvrwReadElement
constant llvrwReadValue (line 41) | llvrwReadValue
constant llvrwWriteArray (line 42) | llvrwWriteArray
constant llvrwWriteBinary (line 43) | llvrwWriteBinary
constant llvrwWriteBinaryWithSubtype (line 44) | llvrwWriteBinaryWithSubtype
constant llvrwWriteBoolean (line 45) | llvrwWriteBoolean
constant llvrwWriteCodeWithScope (line 46) | llvrwWriteCodeWithScope
constant llvrwWriteDBPointer (line 47) | llvrwWriteDBPointer
constant llvrwWriteDateTime (line 48) | llvrwWriteDateTime
constant llvrwWriteDecimal128 (line 49) | llvrwWriteDecimal128
constant llvrwWriteDouble (line 50) | llvrwWriteDouble
constant llvrwWriteInt32 (line 51) | llvrwWriteInt32
constant llvrwWriteInt64 (line 52) | llvrwWriteInt64
constant llvrwWriteJavascript (line 53) | llvrwWriteJavascript
constant llvrwWriteMaxKey (line 54) | llvrwWriteMaxKey
constant llvrwWriteMinKey (line 55) | llvrwWriteMinKey
constant llvrwWriteNull (line 56) | llvrwWriteNull
constant llvrwWriteObjectID (line 57) | llvrwWriteObjectID
constant llvrwWriteRegex (line 58) | llvrwWriteRegex
constant llvrwWriteString (line 59) | llvrwWriteString
constant llvrwWriteDocument (line 60) | llvrwWriteDocument
constant llvrwWriteSymbol (line 61) | llvrwWriteSymbol
constant llvrwWriteTimestamp (line 62) | llvrwWriteTimestamp
constant llvrwWriteUndefined (line 63) | llvrwWriteUndefined
constant llvrwWriteDocumentElement (line 64) | llvrwWriteDocumentElement
constant llvrwWriteDocumentEnd (line 65) | llvrwWriteDocumentEnd
constant llvrwWriteArrayElement (line 66) | llvrwWriteArrayElement
constant llvrwWriteArrayEnd (line 67) | llvrwWriteArrayEnd
type TestValueReaderWriter (line 70) | type TestValueReaderWriter struct
method Type (line 79) | func (llvrw *TestValueReaderWriter) Type() Type {
method Skip (line 83) | func (llvrw *TestValueReaderWriter) Skip() error {
method ReadArray (line 87) | func (llvrw *TestValueReaderWriter) ReadArray() (ArrayReader, error) {
method ReadBinary (line 96) | func (llvrw *TestValueReaderWriter) ReadBinary() (b []byte, btype byte...
method ReadBoolean (line 116) | func (llvrw *TestValueReaderWriter) ReadBoolean() (bool, error) {
method ReadDocument (line 131) | func (llvrw *TestValueReaderWriter) ReadDocument() (DocumentReader, er...
method ReadCodeWithScope (line 140) | func (llvrw *TestValueReaderWriter) ReadCodeWithScope() (code string, ...
method ReadDBPointer (line 149) | func (llvrw *TestValueReaderWriter) ReadDBPointer() (ns string, oid Ob...
method ReadDateTime (line 169) | func (llvrw *TestValueReaderWriter) ReadDateTime() (int64, error) {
method ReadDecimal128 (line 184) | func (llvrw *TestValueReaderWriter) ReadDecimal128() (Decimal128, erro...
method ReadDouble (line 199) | func (llvrw *TestValueReaderWriter) ReadDouble() (float64, error) {
method ReadInt32 (line 214) | func (llvrw *TestValueReaderWriter) ReadInt32() (int32, error) {
method ReadInt64 (line 229) | func (llvrw *TestValueReaderWriter) ReadInt64() (int64, error) {
method ReadJavascript (line 243) | func (llvrw *TestValueReaderWriter) ReadJavascript() (code string, err...
method ReadMaxKey (line 257) | func (llvrw *TestValueReaderWriter) ReadMaxKey() error {
method ReadMinKey (line 266) | func (llvrw *TestValueReaderWriter) ReadMinKey() error {
method ReadNull (line 275) | func (llvrw *TestValueReaderWriter) ReadNull() error {
method ReadObjectID (line 284) | func (llvrw *TestValueReaderWriter) ReadObjectID() (ObjectID, error) {
method ReadRegex (line 298) | func (llvrw *TestValueReaderWriter) ReadRegex() (pattern string, optio...
method ReadString (line 317) | func (llvrw *TestValueReaderWriter) ReadString() (string, error) {
method ReadSymbol (line 331) | func (llvrw *TestValueReaderWriter) ReadSymbol() (symbol string, err e...
method ReadTimestamp (line 350) | func (llvrw *TestValueReaderWriter) ReadTimestamp() (t uint32, i uint3...
method ReadUndefined (line 369) | func (llvrw *TestValueReaderWriter) ReadUndefined() error {
method WriteArray (line 378) | func (llvrw *TestValueReaderWriter) WriteArray() (ArrayWriter, error) {
method WriteBinary (line 386) | func (llvrw *TestValueReaderWriter) WriteBinary([]byte) error {
method WriteBinaryWithSubtype (line 394) | func (llvrw *TestValueReaderWriter) WriteBinaryWithSubtype([]byte, byt...
method WriteBoolean (line 402) | func (llvrw *TestValueReaderWriter) WriteBoolean(bool) error {
method WriteCodeWithScope (line 410) | func (llvrw *TestValueReaderWriter) WriteCodeWithScope(string) (Docume...
method WriteDBPointer (line 418) | func (llvrw *TestValueReaderWriter) WriteDBPointer(string, ObjectID) e...
method WriteDateTime (line 426) | func (llvrw *TestValueReaderWriter) WriteDateTime(int64) error {
method WriteDecimal128 (line 434) | func (llvrw *TestValueReaderWriter) WriteDecimal128(Decimal128) error {
method WriteDouble (line 442) | func (llvrw *TestValueReaderWriter) WriteDouble(float64) error {
method WriteInt32 (line 450) | func (llvrw *TestValueReaderWriter) WriteInt32(int32) error {
method WriteInt64 (line 458) | func (llvrw *TestValueReaderWriter) WriteInt64(int64) error {
method WriteJavascript (line 466) | func (llvrw *TestValueReaderWriter) WriteJavascript(string) error {
method WriteMaxKey (line 474) | func (llvrw *TestValueReaderWriter) WriteMaxKey() error {
method WriteMinKey (line 482) | func (llvrw *TestValueReaderWriter) WriteMinKey() error {
method WriteNull (line 490) | func (llvrw *TestValueReaderWriter) WriteNull() error {
method WriteObjectID (line 498) | func (llvrw *TestValueReaderWriter) WriteObjectID(ObjectID) error {
method WriteRegex (line 506) | func (llvrw *TestValueReaderWriter) WriteRegex(string, string) error {
method WriteString (line 514) | func (llvrw *TestValueReaderWriter) WriteString(string) error {
method WriteDocument (line 522) | func (llvrw *TestValueReaderWriter) WriteDocument() (DocumentWriter, e...
method WriteSymbol (line 530) | func (llvrw *TestValueReaderWriter) WriteSymbol(string) error {
method WriteTimestamp (line 538) | func (llvrw *TestValueReaderWriter) WriteTimestamp(uint32, uint32) err...
method WriteUndefined (line 546) | func (llvrw *TestValueReaderWriter) WriteUndefined() error {
method ReadElement (line 554) | func (llvrw *TestValueReaderWriter) ReadElement() (string, ValueReader...
method WriteDocumentElement (line 563) | func (llvrw *TestValueReaderWriter) WriteDocumentElement(string) (Valu...
method WriteDocumentEnd (line 572) | func (llvrw *TestValueReaderWriter) WriteDocumentEnd() error {
method ReadValue (line 581) | func (llvrw *TestValueReaderWriter) ReadValue() (ValueReader, error) {
method WriteArrayElement (line 590) | func (llvrw *TestValueReaderWriter) WriteArrayElement() (ValueWriter, ...
method WriteArrayEnd (line 599) | func (llvrw *TestValueReaderWriter) WriteArrayEnd() error {
FILE: bson/value_writer.go
function putValueWriter (line 29) | func putValueWriter(vw *valueWriter) {
function getDocumentWriter (line 42) | func getDocumentWriter(w io.Writer) *valueWriter {
function putDocumentWriter (line 52) | func putDocumentWriter(vw *valueWriter) {
type errMaxDocumentSizeExceeded (line 63) | type errMaxDocumentSizeExceeded struct
method Error (line 67) | func (mdse errMaxDocumentSizeExceeded) Error() string {
type vwMode (line 71) | type vwMode
method String (line 83) | func (vm vwMode) String() string {
constant _ (line 74) | _ vwMode = iota
constant vwTopLevel (line 75) | vwTopLevel
constant vwDocument (line 76) | vwDocument
constant vwArray (line 77) | vwArray
constant vwValue (line 78) | vwValue
constant vwElement (line 79) | vwElement
constant vwCodeWithScope (line 80) | vwCodeWithScope
type vwState (line 106) | type vwState struct
type valueWriter (line 113) | type valueWriter struct
method advanceFrame (line 121) | func (vw *valueWriter) advanceFrame() {
method push (line 128) | func (vw *valueWriter) push(m mode) {
method reserveLength (line 140) | func (vw *valueWriter) reserveLength() {
method pop (line 145) | func (vw *valueWriter) pop() {
method reset (line 182) | func (vw *valueWriter) reset(buf []byte) {
method invalidTransitionError (line 193) | func (vw *valueWriter) invalidTransitionError(destination mode, name s...
method writeElementHeader (line 207) | func (vw *valueWriter) writeElementHeader(t Type, destination mode, ca...
method writeValueBytes (line 229) | func (vw *valueWriter) writeValueBytes(t Type, b []byte) error {
method WriteArray (line 238) | func (vw *valueWriter) WriteArray() (ArrayWriter, error) {
method WriteBinary (line 248) | func (vw *valueWriter) WriteBinary(b []byte) error {
method WriteBinaryWithSubtype (line 252) | func (vw *valueWriter) WriteBinaryWithSubtype(b []byte, btype byte) er...
method WriteBoolean (line 262) | func (vw *valueWriter) WriteBoolean(b bool) error {
method WriteCodeWithScope (line 272) | func (vw *valueWriter) WriteCodeWithScope(code string) (DocumentWriter...
method WriteDBPointer (line 289) | func (vw *valueWriter) WriteDBPointer(ns string, oid ObjectID) error {
method WriteDateTime (line 299) | func (vw *valueWriter) WriteDateTime(dt int64) error {
method WriteDecimal128 (line 309) | func (vw *valueWriter) WriteDecimal128(d128 Decimal128) error {
method WriteDouble (line 320) | func (vw *valueWriter) WriteDouble(f float64) error {
method WriteInt32 (line 330) | func (vw *valueWriter) WriteInt32(i32 int32) error {
method WriteInt64 (line 340) | func (vw *valueWriter) WriteInt64(i64 int64) error {
method WriteJavascript (line 350) | func (vw *valueWriter) WriteJavascript(code string) error {
method WriteMaxKey (line 360) | func (vw *valueWriter) WriteMaxKey() error {
method WriteMinKey (line 369) | func (vw *valueWriter) WriteMinKey() error {
method WriteNull (line 378) | func (vw *valueWriter) WriteNull() error {
method WriteObjectID (line 387) | func (vw *valueWriter) WriteObjectID(oid ObjectID) error {
method WriteRegex (line 397) | func (vw *valueWriter) WriteRegex(pattern string, options string) error {
method WriteString (line 410) | func (vw *valueWriter) WriteString(s string) error {
method WriteDocument (line 420) | func (vw *valueWriter) WriteDocument() (DocumentWriter, error) {
method WriteSymbol (line 433) | func (vw *valueWriter) WriteSymbol(symbol string) error {
method WriteTimestamp (line 443) | func (vw *valueWriter) WriteTimestamp(t uint32, i uint32) error {
method WriteUndefined (line 453) | func (vw *valueWriter) WriteUndefined() error {
method WriteDocumentElement (line 462) | func (vw *valueWriter) WriteDocumentElement(key string) (ValueWriter, ...
method WriteDocumentEnd (line 475) | func (vw *valueWriter) WriteDocumentEnd() error {
method Flush (line 506) | func (vw *valueWriter) Flush() error {
method WriteArrayElement (line 519) | func (vw *valueWriter) WriteArrayElement() (ValueWriter, error) {
method WriteArrayEnd (line 533) | func (vw *valueWriter) WriteArrayEnd() error {
method writeLength (line 555) | func (vw *valueWriter) writeLength() error {
method appendHeader (line 590) | func (vw *valueWriter) appendHeader(t Type, key string) {
method appendIntHeader (line 596) | func (vw *valueWriter) appendIntHeader(t Type, key int) {
function NewDocumentWriter (line 158) | func NewDocumentWriter(w io.Writer) ValueWriter {
function newDocumentWriter (line 162) | func newDocumentWriter(w io.Writer) *valueWriter {
function newValueWriterFromSlice (line 172) | func newValueWriterFromSlice(buf []byte) *valueWriter {
function isValidCString (line 572) | func isValidCString(cs string) bool {
FILE: bson/value_writer_test.go
function TestNewDocumentWriter (line 23) | func TestNewDocumentWriter(t *testing.T) {
function TestDocumentWriter (line 30) | func TestDocumentWriter(t *testing.T) {
type errWriter (line 367) | type errWriter struct
method Write (line 371) | func (ew errWriter) Write([]byte) (int, error) { return 0, ew.err }
FILE: bson/vector.go
constant Int8Vector (line 18) | Int8Vector byte = 0x03
constant Float32Vector (line 19) | Float32Vector byte = 0x27
constant PackedBitVector (line 20) | PackedBitVector byte = 0x10
type vectorTypeError (line 30) | type vectorTypeError struct
method Error (line 36) | func (vte vectorTypeError) Error() string {
type Vector (line 50) | type Vector struct
method Type (line 59) | func (v Vector) Type() byte {
method Int8 (line 65) | func (v Vector) Int8() []int8 {
method Int8OK (line 74) | func (v Vector) Int8OK() ([]int8, bool) {
method Float32 (line 83) | func (v Vector) Float32() []float32 {
method Float32OK (line 92) | func (v Vector) Float32OK() ([]float32, bool) {
method PackedBit (line 102) | func (v Vector) PackedBit() ([]byte, uint8) {
method PackedBitOK (line 111) | func (v Vector) PackedBitOK() ([]byte, uint8, bool) {
method Binary (line 119) | func (v Vector) Binary() Binary {
function binaryFromInt8Vector (line 132) | func binaryFromInt8Vector(v []int8) Binary {
function binaryFromFloat32Vector (line 147) | func binaryFromFloat32Vector(v []float32) Binary {
function binaryFromBitVector (line 163) | func binaryFromBitVector(bits []byte, padding uint8) Binary {
function NewVector (line 175) | func NewVector[T int8 | float32](data []T) Vector {
function NewPackedBitVector (line 193) | func NewPackedBitVector(bits []byte, padding uint8) (Vector, error) {
function NewVectorFromBinary (line 209) | func NewVectorFromBinary(b Binary) (Vector, error) {
function newInt8Vector (line 229) | func newInt8Vector(b []byte) (Vector, error) {
function newFloat32Vector (line 244) | func newFloat32Vector(b []byte) (Vector, error) {
function newBitVector (line 263) | func newBitVector(b []byte) (Vector, error) {
FILE: bson/writer.go
type ArrayWriter (line 12) | type ArrayWriter interface
type DocumentWriter (line 20) | type DocumentWriter interface
type ValueWriter (line 28) | type ValueWriter interface
type sliceWriter (line 54) | type sliceWriter
method Write (line 57) | func (sw *sliceWriter) Write(p []byte) (int, error) {
FILE: event/description.go
type ServerDescription (line 21) | type ServerDescription struct
type TopologyDescription (line 52) | type TopologyDescription struct
FILE: event/examples_test.go
function ExampleCommandMonitor (line 22) | func ExampleCommandMonitor() {
FILE: event/monitoring.go
type CommandStartedEvent (line 18) | type CommandStartedEvent struct
type CommandFinishedEvent (line 33) | type CommandFinishedEvent struct
type CommandSucceededEvent (line 48) | type CommandSucceededEvent struct
type CommandFailedEvent (line 54) | type CommandFailedEvent struct
type CommandMonitor (line 60) | type CommandMonitor struct
constant ReasonIdle (line 68) | ReasonIdle = "idle"
constant ReasonPoolClosed (line 69) | ReasonPoolClosed = "poolClosed"
constant ReasonStale (line 70) | ReasonStale = "stale"
constant ReasonConnectionErrored (line 71) | ReasonConnectionErrored = "connectionError"
constant ReasonTimedOut (line 72) | ReasonTimedOut = "timeout"
constant ReasonError (line 73) | ReasonError = "error"
constant ConnectionPoolCreated (line 78) | ConnectionPoolCreated = "ConnectionPoolCreated"
constant ConnectionPoolReady (line 79) | ConnectionPoolReady = "ConnectionPoolReady"
constant ConnectionPoolCleared (line 80) | ConnectionPoolCleared = "ConnectionPoolCleared"
constant ConnectionPoolClosed (line 81) | ConnectionPoolClosed = "ConnectionPoolClosed"
constant ConnectionCreated (line 82) | ConnectionCreated = "ConnectionCreated"
constant ConnectionReady (line 83) | ConnectionReady = "ConnectionReady"
constant ConnectionClosed (line 84) | ConnectionClosed = "ConnectionClosed"
constant ConnectionCheckOutStarted (line 85) | ConnectionCheckOutStarted = "ConnectionCheckOutStarted"
constant ConnectionCheckOutFailed (line 86) | ConnectionCheckOutFailed = "ConnectionCheckOutFailed"
constant ConnectionCheckedOut (line 87) | ConnectionCheckedOut = "ConnectionCheckedOut"
constant ConnectionCheckedIn (line 88) | ConnectionCheckedIn = "ConnectionCheckedIn"
type MonitorPoolOptions (line 92) | type MonitorPoolOptions struct
type PoolEvent (line 99) | type PoolEvent struct
type PoolMonitor (line 114) | type PoolMonitor struct
type ServerDescriptionChangedEvent (line 119) | type ServerDescriptionChangedEvent struct
type ServerOpeningEvent (line 127) | type ServerOpeningEvent struct
type ServerClosedEvent (line 133) | type ServerClosedEvent struct
type TopologyDescriptionChangedEvent (line 139) | type TopologyDescriptionChangedEvent struct
type TopologyOpeningEvent (line 146) | type TopologyOpeningEvent struct
type TopologyClosedEvent (line 151) | type TopologyClosedEvent struct
type ServerHeartbeatStartedEvent (line 156) | type ServerHeartbeatStartedEvent struct
type ServerHeartbeatSucceededEvent (line 162) | type ServerHeartbeatSucceededEvent struct
type ServerHeartbeatFailedEvent (line 170) | type ServerHeartbeatFailedEvent struct
type ServerMonitor (line 181) | type ServerMonitor struct
FILE: examples/_example_customdns_test.go
function resolve (line 23) | func resolve(ctx context.Context, cache *dnsCache, in *dns.Conn, out *dn...
type RR (line 83) | type RR struct
type dnsCache (line 88) | type dnsCache struct
type dialer (line 93) | type dialer struct
function NewDialer (line 98) | func NewDialer() dialer {
function TestCustomDialer (line 122) | func TestCustomDialer(t *testing.T) {
FILE: examples/_example_overload_error_test.go
constant tokenBucketCap (line 23) | tokenBucketCap = 10_000
constant retryToken (line 24) | retryToken = 10
constant refreshToken (line 25) | refreshToken = 1
constant maxAttempts (line 27) | maxAttempts = 5
constant baseBackoff (line 29) | baseBackoff = 100 * time.Millisecond
constant maxBackoff (line 30) | maxBackoff = 10_000 * time.Millisecond
constant errSystemOverloadedError (line 32) | errSystemOverloadedError = "SystemOverloadedError"
constant errRetryableError (line 33) | errRetryableError = "RetryableError"
function isSystemOverloadedError (line 37) | func isSystemOverloadedError(err error) bool {
type tokenBucket (line 46) | type tokenBucket struct
method Consume (line 59) | func (tb *tokenBucket) Consume(amount int) bool {
method Deposit (line 69) | func (tb *tokenBucket) Deposit(amount int) {
function newTokenBucket (line 52) | func newTokenBucket(capacity int) *tokenBucket {
function executeWithRetries (line 80) | func executeWithRetries(
function ExampleOverloadError_Find (line 135) | func ExampleOverloadError_Find() {
FILE: examples/_logger/logrus/main.go
function main (line 22) | func main() {
FILE: examples/_logger/zap/main.go
function main (line 22) | func main() {
FILE: examples/_logger/zerolog/main.go
function main (line 23) | func main() {
FILE: internal/assert/assertbson/assertbson.go
type tHelper (line 15) | type tHelper interface
function EqualDocument (line 22) | func EqualDocument(t assert.TestingT, expected, actual []byte) bool {
function EqualValue (line 41) | func EqualValue[T bson.RawValue | bsoncore.Value](t assert.TestingT, exp...
FILE: internal/assert/assertbson/assertbson_test.go
function TestEqualDocument (line 16) | func TestEqualDocument(t *testing.T) {
function TestEqualValue (line 65) | func TestEqualValue(t *testing.T) {
FILE: internal/assert/assertion_compare.go
type CompareType (line 16) | type CompareType
constant compareLess (line 19) | compareLess CompareType = iota - 1
constant compareEqual (line 20) | compareEqual
constant compareGreater (line 21) | compareGreater
function compare (line 46) | func compare(obj1, obj2 interface{}, kind reflect.Kind) (CompareType, bo...
function Greater (line 363) | func Greater(t TestingT, e1 interface{}, e2 interface{}, msgAndArgs ...i...
function GreaterOrEqual (line 376) | func GreaterOrEqual(t TestingT, e1 interface{}, e2 interface{}, msgAndAr...
function Less (line 388) | func Less(t TestingT, e1 interface{}, e2 interface{}, msgAndArgs ...inte...
function LessOrEqual (line 401) | func LessOrEqual(t TestingT, e1 interface{}, e2 interface{}, msgAndArgs ...
function Positive (line 412) | func Positive(t TestingT, e interface{}, msgAndArgs ...interface{}) bool {
function Negative (line 424) | func Negative(t TestingT, e interface{}, msgAndArgs ...interface{}) bool {
function compareTwoValues (line 432) | func compareTwoValues(t TestingT, e1 interface{}, e2 interface{}, allowe...
function containsValue (line 455) | func containsValue(values []CompareType, value CompareType) bool {
function CompareErrors (line 466) | func CompareErrors(err1, err2 error) bool {
FILE: internal/assert/assertion_compare_can_convert.go
function canConvert (line 16) | func canConvert(value reflect.Value, to reflect.Type) bool {
FILE: internal/assert/assertion_compare_go1.17_test.go
function TestCompare17 (line 19) | func TestCompare17(t *testing.T) {
function TestGreater17 (line 62) | func TestGreater17(t *testing.T) {
function TestGreaterOrEqual17 (line 93) | func TestGreaterOrEqual17(t *testing.T) {
function TestLess17 (line 124) | func TestLess17(t *testing.T) {
function TestLessOrEqual17 (line 155) | func TestLessOrEqual17(t *testing.T) {
FILE: internal/assert/assertion_compare_legacy.go
function canConvert (line 16) | func canConvert(value reflect.Value, to reflect.Type) bool {
FILE: internal/assert/assertion_compare_test.go
function TestCompare (line 17) | func TestCompare(t *testing.T) {
type outputT (line 92) | type outputT struct
method Errorf (line 98) | func (t *outputT) Errorf(format string, args ...interface{}) {
method Helper (line 103) | func (t *outputT) Helper() {
function callerName (line 112) | func callerName(skip int) string {
function TestGreater (line 124) | func TestGreater(t *testing.T) {
function TestGreaterOrEqual (line 165) | func TestGreaterOrEqual(t *testing.T) {
function TestLess (line 206) | func TestLess(t *testing.T) {
function TestLessOrEqual (line 247) | func TestLessOrEqual(t *testing.T) {
function TestPositive (line 288) | func TestPositive(t *testing.T) {
function TestNegative (line 327) | func TestNegative(t *testing.T) {
function Test_compareTwoValuesDifferentValuesTypes (line 366) | func Test_compareTwoValuesDifferentValuesTypes(t *testing.T) {
function Test_compareTwoValuesNotComparableValues (line 384) | func Test_compareTwoValuesNotComparableValues(t *testing.T) {
function Test_compareTwoValuesCorrectCompareResult (line 402) | func Test_compareTwoValuesCorrectCompareResult(t *testing.T) {
function Test_containsValue (line 422) | func Test_containsValue(t *testing.T) {
function TestComparingMsgAndArgsForwarding (line 438) | func TestComparingMsgAndArgsForwarding(t *testing.T) {
FILE: internal/assert/assertion_format.go
function Containsf (line 19) | func Containsf(t TestingT, s interface{}, contains interface{}, msg stri...
function ElementsMatchf (line 31) | func ElementsMatchf(t TestingT, listA interface{}, listB interface{}, ms...
function Equalf (line 45) | func Equalf(t TestingT, expected interface{}, actual interface{}, msg st...
function EqualErrorf (line 57) | func EqualErrorf(t TestingT, theError error, errString string, msg strin...
function EqualValuesf (line 68) | func EqualValuesf(t TestingT, expected interface{}, actual interface{}, ...
function Errorf (line 81) | func Errorf(t TestingT, err error, msg string, args ...interface{}) bool {
function ErrorContainsf (line 93) | func ErrorContainsf(t TestingT, theError error, contains string, msg str...
function Eventuallyf (line 104) | func Eventuallyf(t TestingT, condition func() bool, waitFor time.Duratio...
function Failf (line 112) | func Failf(t TestingT, failureMessage string, msg string, args ...interf...
function FailNowf (line 120) | func FailNowf(t TestingT, failureMessage string, msg string, args ...int...
function Falsef (line 130) | func Falsef(t TestingT, value bool, msg string, args ...interface{}) bool {
function Greaterf (line 142) | func Greaterf(t TestingT, e1 interface{}, e2 interface{}, msg string, ar...
function GreaterOrEqualf (line 155) | func GreaterOrEqualf(t TestingT, e1 interface{}, e2 interface{}, msg str...
function InDeltaf (line 165) | func InDeltaf(t TestingT, expected interface{}, actual interface{}, delt...
function IsTypef (line 173) | func IsTypef(t TestingT, expectedType interface{}, object interface{}, m...
function Lenf (line 184) | func Lenf(t TestingT, object interface{}, length int, msg string, args ....
function Lessf (line 196) | func Lessf(t TestingT, e1 interface{}, e2 interface{}, msg string, args ...
function LessOrEqualf (line 209) | func LessOrEqualf(t TestingT, e1 interface{}, e2 interface{}, msg string...
function Negativef (line 220) | func Negativef(t TestingT, e interface{}, msg string, args ...interface{...
function Nilf (line 230) | func Nilf(t TestingT, object interface{}, msg string, args ...interface{...
function NoErrorf (line 243) | func NoErrorf(t TestingT, err error, msg string, args ...interface{}) bo...
function NotContainsf (line 256) | func NotContainsf(t TestingT, s interface{}, contains interface{}, msg s...
function NotEqualf (line 269) | func NotEqualf(t TestingT, expected interface{}, actual interface{}, msg...
function NotEqualValuesf (line 279) | func NotEqualValuesf(t TestingT, expected interface{}, actual interface{...
function NotNilf (line 289) | func NotNilf(t TestingT, object interface{}, msg string, args ...interfa...
function Positivef (line 300) | func Positivef(t TestingT, e interface{}, msg string, args ...interface{...
function Truef (line 310) | func Truef(t TestingT, value bool, msg string, args ...interface{}) bool {
function WithinDurationf (line 320) | func WithinDurationf(t TestingT, expected time.Time, actual time.Time, d...
FILE: internal/assert/assertion_mongo.go
function DifferentAddressRanges (line 21) | func DifferentAddressRanges(t TestingT, a, b []byte) (ok bool) {
function Soon (line 79) | func Soon(t TestingT, callback func(ctx context.Context), timeout time.D...
FILE: internal/assert/assertion_mongo_test.go
function TestDifferentAddressRanges (line 13) | func TestDifferentAddressRanges(t *testing.T) {
FILE: internal/assert/assertions.go
type TestingT (line 26) | type TestingT interface
function ObjectsAreEqual (line 33) | func ObjectsAreEqual(expected, actual interface{}) bool {
function ObjectsAreEqualValues (line 55) | func ObjectsAreEqualValues(expected, actual interface{}) bool {
function CallerInfo (line 80) | func CallerInfo() []string {
function isTest (line 143) | func isTest(name, prefix string) bool {
function messageFromMsgAndArgs (line 154) | func messageFromMsgAndArgs(msgAndArgs ...interface{}) string {
function indentMessageLines (line 175) | func indentMessageLines(message string, longestLabelLen int) string {
type failNower (line 190) | type failNower interface
function FailNow (line 195) | func FailNow(t TestingT, failureMessage string, msgAndArgs ...interface{...
function Fail (line 216) | func Fail(t TestingT, failureMessage string, msgAndArgs ...interface{}) ...
type labeledContent (line 242) | type labeledContent struct
function labeledOutput (line 256) | func labeledOutput(content ...labeledContent) string {
function IsType (line 271) | func IsType(t TestingT, expectedType interface{}, object interface{}, ms...
function Equal (line 290) | func Equal(t TestingT, expected, actual interface{}, msgAndArgs ...inter...
function validateEqualArgs (line 312) | func validateEqualArgs(expected, actual interface{}) error {
function formatUnequalValues (line 329) | func formatUnequalValues(expected, actual interface{}) (e string, a stri...
function truncatingFormat (line 345) | func truncatingFormat(data interface{}) string {
function EqualValues (line 358) | func EqualValues(t TestingT, expected, actual interface{}, msgAndArgs .....
function NotNil (line 377) | func NotNil(t TestingT, object interface{}, msgAndArgs ...interface{}) b...
function containsKind (line 388) | func containsKind(kinds []reflect.Kind, kind reflect.Kind) bool {
function isNil (line 399) | func isNil(object interface{}) bool {
function Nil (line 424) | func Nil(t TestingT, object interface{}, msgAndArgs ...interface{}) bool {
function getLen (line 436) | func getLen(x interface{}) (ok bool, length int) {
function Len (line 450) | func Len(t TestingT, object interface{}, length int, msgAndArgs ...inter...
function True (line 468) | func True(t TestingT, value bool, msgAndArgs ...interface{}) bool {
function False (line 482) | func False(t TestingT, value bool, msgAndArgs ...interface{}) bool {
function NotEqual (line 499) | func NotEqual(t TestingT, expected, actual interface{}, msgAndArgs ...in...
function NotEqualValues (line 518) | func NotEqualValues(t TestingT, expected, actual interface{}, msgAndArgs...
function containsElement (line 534) | func containsElement(list interface{}, element interface{}) (ok, found b...
function Contains (line 577) | func Contains(t TestingT, s, contains interface{}, msgAndArgs ...interfa...
function NotContains (line 599) | func NotContains(t TestingT, s, contains interface{}, msgAndArgs ...inte...
function isEmpty (line 616) | func isEmpty(object interface{}) bool {
function ElementsMatch (line 648) | func ElementsMatch(t TestingT, listA, listB interface{}, msgAndArgs ...i...
function isList (line 670) | func isList(t TestingT, list interface{}, msgAndArgs ...interface{}) (ok...
function diffLists (line 682) | func diffLists(listA, listB interface{}) ([]interface{}, []interface{}) {
function formatListDiff (line 721) | func formatListDiff(listA, listB interface{}, extraA, extraB []interface...
function WithinDuration (line 744) | func WithinDuration(t TestingT, expected, actual time.Time, delta time.D...
function toFloat (line 757) | func toFloat(x interface{}) (float64, bool) {
function InDelta (line 798) | func InDelta(t TestingT, expected, actual interface{}, delta float64, ms...
function NoError (line 840) | func NoError(t TestingT, err error, msgAndArgs ...interface{}) bool {
function Error (line 857) | func Error(t TestingT, err error, msgAndArgs ...interface{}) bool {
function EqualError (line 873) | func EqualError(t TestingT, theError error, errString string, msgAndArgs...
function ErrorIs (line 893) | func ErrorIs(t TestingT, err, target error, msgAndArgs ...interface{}) b...
function ErrorContains (line 919) | func ErrorContains(t TestingT, theError error, contains string, msgAndAr...
function typeAndKind (line 935) | func typeAndKind(v interface{}) (reflect.Type, reflect.Kind) {
function diff (line 948) | func diff(expected interface{}, actual interface{}) string {
function isFunction (line 991) | func isFunction(arg interface{}) bool {
type tHelper (line 1015) | type tHelper interface
function Eventually (line 1023) | func Eventually(t TestingT, condition func() bool, waitFor time.Duration...
function buildErrorChainString (line 1052) | func buildErrorChainString(err error) string {
function NotEmpty (line 1071) | func NotEmpty(t TestingT, object interface{}, msgAndArgs ...interface{})...
function Empty (line 1096) | func Empty(t TestingT, object interface{}, msgAndArgs ...interface{}) bo...
FILE: internal/assert/assertions_test.go
type AssertionTesterInterface (line 23) | type AssertionTesterInterface interface
type AssertionTesterConformingObject (line 28) | type AssertionTesterConformingObject struct
method TestMethod (line 30) | func (a *AssertionTesterConformingObject) TestMethod() {
type AssertionTesterNonConformingObject (line 34) | type AssertionTesterNonConformingObject struct
function TestObjectsAreEqual (line 36) | func TestObjectsAreEqual(t *testing.T) {
function TestIsType (line 82) | func TestIsType(t *testing.T) {
function TestEqual (line 93) | func TestEqual(t *testing.T) {
type bufferT (line 136) | type bufferT struct
method Errorf (line 140) | func (t *bufferT) Errorf(format string, args ...interface{}) {
function TestStringEqual (line 176) | func TestStringEqual(_ *testing.T) {
function TestEqualFormatting (line 190) | func TestEqualFormatting(_ *testing.T) {
function TestFormatUnequalValues (line 207) | func TestFormatUnequalValues(t *testing.T) {
function TestNotNil (line 233) | func TestNotNil(t *testing.T) {
function TestNil (line 247) | func TestNil(t *testing.T) {
function TestTrue (line 261) | func TestTrue(t *testing.T) {
function TestFalse (line 272) | func TestFalse(t *testing.T) {
function TestNotEqual (line 283) | func TestNotEqual(t *testing.T) {
function TestNotEqualValues (line 322) | func TestNotEqualValues(t *testing.T) {
function TestContainsNotContains (line 365) | func TestContainsNotContains(t *testing.T) {
function TestContainsFailMessage (line 428) | func TestContainsFailMessage(t *testing.T) {
function TestContainsNotContainsOnNilValue (line 439) | func TestContainsNotContainsOnNilValue(t *testing.T) {
function Test_containsElement (line 455) | func Test_containsElement(t *testing.T) {
function TestElementsMatch (line 505) | func TestElementsMatch(t *testing.T) {
function TestDiffLists (line 546) | func TestDiffLists(t *testing.T) {
function TestNoError (line 630) | func TestNoError(t *testing.T) {
type customError (line 656) | type customError struct
method Error (line 658) | func (*customError) Error() string { return "fail" }
function TestError (line 660) | func TestError(t *testing.T) {
function TestEqualError (line 689) | func TestEqualError(t *testing.T) {
function TestErrorContains (line 705) | func TestErrorContains(t *testing.T) {
function Test_isEmpty (line 723) | func Test_isEmpty(t *testing.T) {
function Test_getLen (line 749) | func Test_getLen(t *testing.T) {
function TestLen (line 794) | func TestLen(t *testing.T) {
function TestWithinDuration (line 856) | func TestWithinDuration(t *testing.T) {
function TestInDelta (line 874) | func TestInDelta(t *testing.T) {
type diffTestingStruct (line 912) | type diffTestingStruct struct
method String (line 917) | func (d *diffTestingStruct) String() string {
function TestDiff (line 921) | func TestDiff(t *testing.T) {
function TestTimeEqualityErrorFormatting (line 1055) | func TestTimeEqualityErrorFormatting(_ *testing.T) {
function TestDiffEmptyCases (line 1061) | func TestDiffEmptyCases(t *testing.T) {
function TestDiffRace (line 1071) | func TestDiffRace(t *testing.T) {
type mockTestingT (line 1104) | type mockTestingT struct
method errorString (line 1109) | func (m *mockTestingT) errorString() string {
method Errorf (line 1113) | func (m *mockTestingT) Errorf(format string, args ...interface{}) {
type mockFailNowTestingT (line 1118) | type mockFailNowTestingT struct
method Errorf (line 1120) | func (m *mockFailNowTestingT) Errorf(string, ...interface{}) {}
method FailNow (line 1122) | func (m *mockFailNowTestingT) FailNow() {}
function TestBytesEqual (line 1124) | func TestBytesEqual(t *testing.T) {
function BenchmarkBytesEqual (line 1137) | func BenchmarkBytesEqual(b *testing.B) {
function BenchmarkNotNil (line 1153) | func BenchmarkNotNil(b *testing.B) {
function TestEventuallyFalse (line 1159) | func TestEventuallyFalse(t *testing.T) {
function TestEventuallyTrue (line 1169) | func TestEventuallyTrue(t *testing.T) {
function Test_validateEqualArgs (line 1181) | func Test_validateEqualArgs(t *testing.T) {
function Test_truncatingFormat (line 1195) | func Test_truncatingFormat(t *testing.T) {
FILE: internal/assert/difflib.go
function min (line 16) | func min(a, b int) int {
function max (line 23) | func max(a, b int) int {
function calculateRatio (line 30) | func calculateRatio(matches, length int) float64 {
type Match (line 37) | type Match struct
type OpCode (line 43) | type OpCode struct
type SequenceMatcher (line 77) | type SequenceMatcher struct
method SetSeqs (line 105) | func (m *SequenceMatcher) SetSeqs(a, b []string) {
method SetSeq1 (line 119) | func (m *SequenceMatcher) SetSeq1(a []string) {
method SetSeq2 (line 130) | func (m *SequenceMatcher) SetSeq2(b []string) {
method chainB (line 141) | func (m *SequenceMatcher) chainB() {
method isBJunk (line 182) | func (m *SequenceMatcher) isBJunk(s string) bool {
method findLongestMatch (line 214) | func (m *SequenceMatcher) findLongestMatch(alo, ahi, blo, bhi int) Mat...
method GetMatchingBlocks (line 298) | func (m *SequenceMatcher) GetMatchingBlocks() []Match {
method GetOpCodes (line 366) | func (m *SequenceMatcher) GetOpCodes() []OpCode {
method GetGroupedOpCodes (line 406) | func (m *SequenceMatcher) GetGroupedOpCodes(n int) [][]OpCode {
method Ratio (line 460) | func (m *SequenceMatcher) Ratio() float64 {
method QuickRatio (line 472) | func (m *SequenceMatcher) QuickRatio() float64 {
method RealQuickRatio (line 504) | func (m *SequenceMatcher) RealQuickRatio() float64 {
function NewMatcher (line 90) | func NewMatcher(a, b []string) *SequenceMatcher {
function NewMatcherWithJunk (line 96) | func NewMatcherWithJunk(a, b []string, autoJunk bool,
function formatRangeUnified (line 510) | func formatRangeUnified(start, stop int) string {
type UnifiedDiff (line 524) | type UnifiedDiff struct
function WriteUnifiedDiff (line 555) | func WriteUnifiedDiff(writer io.Writer, diff UnifiedDiff) error {
function GetUnifiedDiffString (line 631) | func GetUnifiedDiffString(diff UnifiedDiff) (string, error) {
function formatRangeContext (line 638) | func formatRangeContext(start, stop int) string {
type ContextDiff (line 651) | type ContextDiff
function WriteContextDiff (line 670) | func WriteContextDiff(writer io.Writer, diff ContextDiff) error {
function GetContextDiffString (line 756) | func GetContextDiffString(diff ContextDiff) (string, error) {
function SplitLines (line 764) | func SplitLines(s string) []string {
FILE: internal/assert/difflib_test.go
function assertAlmostEqual (line 17) | func assertAlmostEqual(t *testing.T, a, b float64, places int) {
function assertEqual (line 23) | func assertEqual(t *testing.T, a, b interface{}) {
function splitChars (line 29) | func splitChars(s string) []string {
function TestSequenceMatcherRatio (line 38) | func TestSequenceMatcherRatio(t *testing.T) {
function TestGetOptCodes (line 45) | func TestGetOptCodes(t *testing.T) {
function TestGroupedOpCodes (line 66) | func TestGroupedOpCodes(t *testing.T) {
function rep (line 110) | func rep(s string, count int) string {
function TestWithAsciiOneInsert (line 114) | func TestWithAsciiOneInsert(t *testing.T) {
function TestWithAsciiOnDelete (line 130) | func TestWithAsciiOnDelete(t *testing.T) {
function TestWithAsciiBJunk (line 138) | func TestWithAsciiBJunk(t *testing.T) {
function TestSFBugsRatioForNullSeqn (line 158) | func TestSFBugsRatioForNullSeqn(t *testing.T) {
function TestSFBugsComparingEmptyLists (line 165) | func TestSFBugsComparingEmptyLists(t *testing.T) {
function TestOutputFormatRangeFormatUnified (line 178) | func TestOutputFormatRangeFormatUnified(t *testing.T) {
function TestOutputFormatRangeFormatContext (line 195) | func TestOutputFormatRangeFormatContext(t *testing.T) {
function TestOutputFormatTabDelimiter (line 219) | func TestOutputFormatTabDelimiter(t *testing.T) {
function TestOutputFormatNoTrailingTabOnEmptyFiledate (line 243) | func TestOutputFormatNoTrailingTabOnEmptyFiledate(t *testing.T) {
function TestOmitFilenames (line 260) | func TestOmitFilenames(t *testing.T) {
function TestSplitLines (line 295) | func TestSplitLines(t *testing.T) {
function benchmarkSplitLines (line 309) | func benchmarkSplitLines(b *testing.B, count int) {
function BenchmarkSplitLines100 (line 320) | func BenchmarkSplitLines100(b *testing.B) {
function BenchmarkSplitLines10000 (line 324) | func BenchmarkSplitLines10000(b *testing.B) {
FILE: internal/aws/awserr/error.go
type Error (line 17) | type Error interface
type BatchedErrors (line 36) | type BatchedErrors interface
function New (line 48) | func New(code, message string, origErr error) Error {
function NewBatchError (line 58) | func NewBatchError(code, message string, errs []error) BatchedErrors {
FILE: internal/aws/awserr/types.go
function SprintError (line 21) | func SprintError(code, message, extra string, origErr error) string {
type baseError (line 37) | type baseError struct
method Error (line 74) | func (b baseError) Error() string {
method String (line 85) | func (b baseError) String() string {
method Code (line 90) | func (b baseError) Code() string {
method Message (line 95) | func (b baseError) Message() string {
method OrigErr (line 102) | func (b baseError) OrigErr() error {
method OrigErrs (line 119) | func (b baseError) OrigErrs() []error {
function newBaseError (line 59) | func newBaseError(code, message string, origErrs []error) *baseError {
type errorList (line 124) | type errorList
method Error (line 129) | func (e errorList) Error() string {
FILE: internal/aws/credentials/chain_provider.go
type ChainProvider (line 30) | type ChainProvider struct
method Retrieve (line 48) | func (c *ChainProvider) Retrieve() (Value, error) {
method IsExpired (line 66) | func (c *ChainProvider) IsExpired() bool {
function NewChainCredentials (line 37) | func NewChainCredentials(providers []Provider) *Credentials {
FILE: internal/aws/credentials/chain_provider_test.go
type secondStubProvider (line 20) | type secondStubProvider struct
method Retrieve (line 26) | func (s *secondStubProvider) Retrieve() (Value, error) {
method IsExpired (line 32) | func (s *secondStubProvider) IsExpired() bool {
function TestChainProviderWithNames (line 36) | func TestChainProviderWithNames(t *testing.T) {
function TestChainProviderGet (line 78) | func TestChainProviderGet(t *testing.T) {
function TestChainProviderIsExpired (line 108) | func TestChainProviderIsExpired(t *testing.T) {
function TestChainProviderWithNoProvider (line 141) | func TestChainProviderWithNoProvider(t *testing.T) {
function TestChainProviderWithNoValidProvider (line 155) | func TestChainProviderWithNoValidProvider(t *testing.T) {
FILE: internal/aws/credentials/credentials.go
type Value (line 26) | type Value struct
method HasKeys (line 42) | func (v Value) HasKeys() bool {
type Provider (line 52) | type Provider interface
type ProviderWithContext (line 63) | type ProviderWithContext interface
type Credentials (line 83) | type Credentials struct
method GetWithContext (line 109) | func (c *Credentials) GetWithContext(ctx context.Context) (Value, erro...
method singleRetrieve (line 138) | func (c *Credentials) singleRetrieve(ctx context.Context) (interface{}...
method asyncIsExpired (line 162) | func (c *Credentials) asyncIsExpired() <-chan Value {
method isExpiredLocked (line 179) | func (c *Credentials) isExpiredLocked(creds interface{}) bool {
function NewCredentials (line 92) | func NewCredentials(provider Provider) *Credentials {
type suppressedContext (line 183) | type suppressedContext struct
method Deadline (line 187) | func (s *suppressedContext) Deadline() (deadline time.Time, ok bool) {
method Done (line 191) | func (s *suppressedContext) Done() <-chan struct{} {
method Err (line 195) | func (s *suppressedContext) Err() error {
FILE: internal/aws/credentials/credentials_test.go
function isExpired (line 22) | func isExpired(c *Credentials) bool {
type stubProvider (line 29) | type stubProvider struct
method Retrieve (line 36) | func (s *stubProvider) Retrieve() (Value, error) {
method IsExpired (line 43) | func (s *stubProvider) IsExpired() bool {
function TestCredentialsGet (line 47) | func TestCredentialsGet(t *testing.T) {
function TestCredentialsGetWithError (line 72) | func TestCredentialsGetWithError(t *testing.T) {
function TestCredentialsExpire (line 81) | func TestCredentialsExpire(t *testing.T) {
function TestCredentialsGetWithProviderName (line 104) | func TestCredentialsGetWithProviderName(t *testing.T) {
type MockProvider (line 118) | type MockProvider struct
method IsExpired (line 129) | func (e *MockProvider) IsExpired() bool {
method Retrieve (line 137) | func (*MockProvider) Retrieve() (Value, error) {
function TestCredentialsIsExpired_Race (line 141) | func TestCredentialsIsExpired_Race(_ *testing.T) {
type stubProviderConcurrent (line 161) | type stubProviderConcurrent struct
method Retrieve (line 166) | func (s *stubProviderConcurrent) Retrieve() (Value, error) {
function TestCredentialsGetConcurrent (line 171) | func TestCredentialsGetConcurrent(t *testing.T) {
FILE: internal/aws/signer/v4/header_rules.go
type rules (line 15) | type rules
method IsValid (line 25) | func (r rules) IsValid(value string) bool {
type rule (line 19) | type rule interface
type mapRule (line 35) | type mapRule
method IsValid (line 38) | func (m mapRule) IsValid(value string) bool {
type excludeList (line 44) | type excludeList struct
method IsValid (line 49) | func (b excludeList) IsValid(value string) bool {
FILE: internal/aws/signer/v4/request.go
function getHost (line 19) | func getHost(r *http.Request) string {
function stripPort (line 38) | func stripPort(hostport string) string {
function portOnly (line 53) | func portOnly(hostport string) string {
function isDefaultPort (line 69) | func isDefaultPort(scheme, port string) bool {
FILE: internal/aws/signer/v4/uri_path.go
function init (line 24) | func init() {
function getURIPath (line 37) | func getURIPath(u *url.URL) string {
function EscapePath (line 54) | func EscapePath(path string, encodeSep bool) string {
FILE: internal/aws/signer/v4/v4.go
constant authorizationHeader (line 31) | authorizationHeader = "Authorization"
constant authHeaderSignatureElem (line 32) | authHeaderSignatureElem = "Signature="
constant authHeaderPrefix (line 34) | authHeaderPrefix = "AWS4-HMAC-SHA256"
constant timeFormat (line 35) | timeFormat = "20060102T150405Z"
constant shortTimeFormat (line 36) | shortTimeFormat = "20060102"
constant awsV4Request (line 37) | awsV4Request = "aws4_request"
constant emptyStringSHA256 (line 40) | emptyStringSHA256 = `e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca49...
type Signer (line 55) | type Signer struct
method Sign (line 115) | func (v4 Signer) Sign(r *http.Request, body io.ReadSeeker, service, re...
method signWithBody (line 119) | func (v4 Signer) signWithBody(r *http.Request, body io.ReadSeeker, ser...
function NewSigner (line 62) | func NewSigner(credentials *credentials.Credentials) *Signer {
type signingCtx (line 70) | type signingCtx struct
method sanitizeHostForHeader (line 162) | func (ctx *signingCtx) sanitizeHostForHeader() {
method assignAmzQueryValues (line 171) | func (ctx *signingCtx) assignAmzQueryValues() {
method build (line 177) | func (ctx *signingCtx) build() error {
method buildTime (line 202) | func (ctx *signingCtx) buildTime() {
method buildCredentialString (line 206) | func (ctx *signingCtx) buildCredentialString() {
method buildCanonicalHeaders (line 210) | func (ctx *signingCtx) buildCanonicalHeaders(r rule, header http.Heade...
method buildCanonicalString (line 256) | func (ctx *signingCtx) buildCanonicalString() {
method buildStringToSign (line 273) | func (ctx *signingCtx) buildStringToSign() {
method buildSignature (line 282) | func (ctx *signingCtx) buildSignature() {
method buildBodyDigest (line 288) | func (ctx *signingCtx) buildBodyDigest() error {
method isRequestSigned (line 310) | func (ctx *signingCtx) isRequestSigned() bool {
function hmacSHA256 (line 314) | func hmacSHA256(key []byte, data []byte) []byte {
function hashSHA256 (line 320) | func hashSHA256(data []byte) []byte {
function makeSha256Reader (line 326) | func makeSha256Reader(reader io.ReadSeeker) (hashBytes []byte, err error) {
constant doubleSpace (line 349) | doubleSpace = " "
function stripExcessSpaces (line 353) | func stripExcessSpaces(vals []string) {
function buildSigningScope (line 398) | func buildSigningScope(region, service string, dt time.Time) string {
function deriveSigningKey (line 407) | func deriveSigningKey(region, service, secretKey string, dt time.Time) [...
function formatShortTime (line 415) | func formatShortTime(dt time.Time) string {
function formatTime (line 419) | func formatTime(dt time.Time) string {
FILE: internal/aws/signer/v4/v4_test.go
function epochTime (line 30) | func epochTime() time.Time { return time.Unix(0, 0) }
function TestStripExcessHeaders (line 32) | func TestStripExcessHeaders(t *testing.T) {
function buildRequest (line 75) | func buildRequest(body string) (*http.Request, io.ReadSeeker) {
function buildRequestReaderSeeker (line 80) | func buildRequestReaderSeeker(serviceName, region, body string) (*http.R...
function buildRequestWithBodyReader (line 85) | func buildRequestWithBodyReader(serviceName, region string, body io.Read...
function buildSigner (line 119) | func buildSigner() Signer {
function newTestStaticCredentials (line 125) | func newTestStaticCredentials() *credentials.Credentials {
function TestSignRequest (line 133) | func TestSignRequest(t *testing.T) {
function TestSignUnseekableBody (line 153) | func TestSignUnseekableBody(t *testing.T) {
function TestSignPreComputedHashUnseekableBody (line 166) | func TestSignPreComputedHashUnseekableBody(t *testing.T) {
function TestSignPrecomputedBodyChecksum (line 183) | func TestSignPrecomputedBodyChecksum(t *testing.T) {
function TestSignWithRequestBody (line 197) | func TestSignWithRequestBody(t *testing.T) {
function TestSignWithRequestBody_Overwrite (line 235) | func TestSignWithRequestBody_Overwrite(t *testing.T) {
function TestBuildCanonicalRequest (line 275) | func TestBuildCanonicalRequest(t *testing.T) {
function TestSignWithBody_ReplaceRequestBody (line 294) | func TestSignWithBody_ReplaceRequestBody(t *testing.T) {
function TestRequestHost (line 316) | func TestRequestHost(t *testing.T) {
function TestSign_buildCanonicalHeaders (line 335) | func TestSign_buildCanonicalHeaders(t *testing.T) {
function BenchmarkSignRequest (line 381) | func BenchmarkSignRequest(b *testing.B) {
function BenchmarkStripExcessSpaces (line 411) | func BenchmarkStripExcessSpaces(b *testing.B) {
type readerSeekerWrapper (line 420) | type readerSeekerWrapper struct
method Read (line 424) | func (r *readerSeekerWrapper) Read(p []byte) (n int, err error) {
method Seek (line 428) | func (r *readerSeekerWrapper) Seek(offset int64, whence int) (int64, e...
method Len (line 432) | func (r *readerSeekerWrapper) Len() int {
FILE: internal/aws/types.go
function ReadSeekCloser (line 29) | func ReadSeekCloser(r io.Reader) ReaderSeekerCloser {
type ReaderSeekerCloser (line 35) | type ReaderSeekerCloser struct
method Read (line 62) | func (r ReaderSeekerCloser) Read(p []byte) (int, error) {
method Seek (line 76) | func (r ReaderSeekerCloser) Seek(offset int64, whence int) (int64, err...
method IsSeeker (line 85) | func (r ReaderSeekerCloser) IsSeeker() bool {
method HasLen (line 92) | func (r ReaderSeekerCloser) HasLen() (int, bool) {
method GetLen (line 109) | func (r ReaderSeekerCloser) GetLen() (int64, error) {
function IsReaderSeekable (line 42) | func IsReaderSeekable(r io.Reader) bool {
function SeekerLen (line 123) | func SeekerLen(s io.Seeker) (int64, error) {
function seekerLen (line 136) | func seekerLen(s io.Seeker) (int64, error) {
FILE: internal/binaryutil/binaryutil.go
function Append32 (line 20) | func Append32[T ~uint32 | ~int32](dst []byte, v T) []byte {
function Append64 (line 34) | func Append64[T ~uint64 | ~int64](dst []byte, v T) []byte {
function ReadU32 (line 50) | func ReadU32(src []byte) (uint32, []byte, bool) {
function ReadI32 (line 64) | func ReadI32(src []byte) (int32, []byte, bool) {
function ReadU64 (line 82) | func ReadU64(src []byte) (uint64, []byte, bool) {
function ReadI64 (line 96) | func ReadI64(src []byte) (int64, []byte, bool) {
function ReadCStringBytes (line 118) | func ReadCStringBytes(src []byte) ([]byte, []byte, bool) {
function ReadCString (line 129) | func ReadCString(src []byte) (string, []byte, bool) {
FILE: internal/binaryutil/binaryutil_test.go
function BenchmarkAppend32 (line 41) | func BenchmarkAppend32(b *testing.B) {
function BenchmarkAppend64 (line 53) | func BenchmarkAppend64(b *testing.B) {
function BenchmarkStdlibAppendUint32 (line 66) | func BenchmarkStdlibAppendUint32(b *testing.B) {
function BenchmarkStdlibAppendUint64 (line 78) | func BenchmarkStdlibAppendUint64(b *testing.B) {
function BenchmarkReadU32 (line 94) | func BenchmarkReadU32(b *testing.B) {
function BenchmarkReadI32 (line 104) | func BenchmarkReadI32(b *testing.B) {
function BenchmarkReadU64 (line 114) | func BenchmarkReadU64(b *testing.B) {
function BenchmarkReadI64 (line 124) | func BenchmarkReadI64(b *testing.B) {
function BenchmarkStdlibUint32 (line 135) | func BenchmarkStdlibUint32(b *testing.B) {
function BenchmarkStdlibUint64 (line 145) | func BenchmarkStdlibUint64(b *testing.B) {
function BenchmarkReadCString (line 159) | func BenchmarkReadCString(b *testing.B) {
function BenchmarkReadCStringBytes (line 169) | func BenchmarkReadCStringBytes(b *testing.B) {
function BenchmarkReadCStringLong (line 179) | func BenchmarkReadCStringLong(b *testing.B) {
function TestAppend32RoundTrip (line 198) | func TestAppend32RoundTrip(t *testing.T) {
function TestAppend32RoundTripSigned (line 220) | func TestAppend32RoundTripSigned(t *testing.T) {
function TestAppend64RoundTrip (line 251) | func TestAppend64RoundTrip(t *testing.T) {
function TestAppend64RoundTripSigned (line 273) | func TestAppend64RoundTripSigned(t *testing.T) {
function TestAppend32MatchesStdlib (line 308) | func TestAppend32MatchesStdlib(t *testing.T) {
function TestAppend64MatchesStdlib (line 323) | func TestAppend64MatchesStdlib(t *testing.T) {
function TestReadU32MatchesStdlib (line 338) | func TestReadU32MatchesStdlib(t *testing.T) {
function TestReadU64MatchesStdlib (line 358) | func TestReadU64MatchesStdlib(t *testing.T) {
function TestReadU32ShortSlice (line 382) | func TestReadU32ShortSlice(t *testing.T) {
function TestReadI32ShortSlice (line 411) | func TestReadI32ShortSlice(t *testing.T) {
function TestReadU64ShortSlice (line 440) | func TestReadU64ShortSlice(t *testing.T) {
function TestReadI64ShortSlice (line 469) | func TestReadI64ShortSlice(t *testing.T) {
function TestReadU32ReturnsRemaining (line 502) | func TestReadU32ReturnsRemaining(t *testing.T) {
function TestReadU64ReturnsRemaining (line 519) | func TestReadU64ReturnsRemaining(t *testing.T) {
function TestReadCString (line 539) | func TestReadCString(t *testing.T) {
function TestReadCStringBytes (line 609) | func TestReadCStringBytes(t *testing.T) {
function TestAppend32ToExistingBuffer (line 676) | func TestAppend32ToExistingBuffer(t *testing.T) {
function TestAppend64ToExistingBuffer (line 697) | func TestAppend64ToExistingBuffer(t *testing.T) {
function TestAppend32ByteOrder (line 722) | func TestAppend32ByteOrder(t *testing.T) {
function TestAppend64ByteOrder (line 732) | func TestAppend64ByteOrder(t *testing.T) {
function TestReadU32ByteOrder (line 742) | func TestReadU32ByteOrder(t *testing.T) {
function TestReadU64ByteOrder (line 755) | func TestReadU64ByteOrder(t *testing.T) {
function TestMultipleSequentialReads (line 772) | func TestMultipleSequentialReads(t *testing.T) {
FILE: internal/bsoncoreutil/bsoncoreutil.go
function Truncate (line 10) | func Truncate(str string, width int) string {
FILE: internal/bsoncoreutil/bsoncoreutil_test.go
function TestTruncate (line 15) | func TestTruncate(t *testing.T) {
FILE: internal/bsonutil/bsonutil.go
function StringSliceFromRawValue (line 18) | func StringSliceFromRawValue(name string, val bson.RawValue) ([]string, ...
function RawArrayToDocuments (line 41) | func RawArrayToDocuments(arr bson.RawArray) []bson.Raw {
function RawToInterfaces (line 56) | func RawToInterfaces(docs ...bson.Raw) []any {
FILE: internal/cmd/benchmark/benchmark_test.go
constant defaultOutputFileName (line 32) | defaultOutputFileName = "perf.json"
constant legacyHelloLowercase (line 33) | legacyHelloLowercase = "ismaster"
constant tarFile (line 34) | tarFile = "perf.tar.gz"
constant perfDir (line 35) | perfDir = "perf"
constant testdataURL (line 36) | testdataURL = "https://s3.amazonaws.com/boxes.10gen.com/build/...
constant perftestDB (line 37) | perftestDB = "perftest"
constant corpusColl (line 38) | corpusColl = "corpus"
constant bsonDataDir (line 39) | bsonDataDir = "extended_bson"
constant flatBSONData (line 42) | flatBSONData = "flat_bson.json"
constant deepBSONData (line 43) | deepBSONData = "deep_bson.json"
constant fullBSONData (line 44) | fullBSONData = "full_bson.json"
constant singleAndMultiDataDir (line 47) | singleAndMultiDataDir = "single_and_multi_document"
constant tweetData (line 48) | tweetData = "tweet.json"
constant smallData (line 49) | smallData = "small_doc.json"
constant largeData (line 50) | largeData = "large_doc.json"
constant opsPerSecondMaxName (line 53) | opsPerSecondMaxName = "ops_per_second_max"
constant opsPerSecondMinName (line 54) | opsPerSecondMinName = "ops_per_second_min"
constant opsPerSecondMedName (line 55) | opsPerSecondMedName = "ops_per_second_med"
function init (line 63) | func init() {
type metrics (line 67) | type metrics struct
function recordMetrics (line 71) | func recordMetrics(b *testing.B, throughput *metrics, fn func(*testing.B...
function reportThroughputStats (line 84) | func reportThroughputStats(b *testing.B, times []float64) {
function reportMetrics (line 100) | func reportMetrics(b *testing.B, metrics *metrics) {
function testdataDir (line 109) | func testdataDir(tb testing.TB) string {
function testdataTarFileName (line 129) | func testdataTarFileName(tb testing.TB) string {
function testdataPerfDir (line 134) | func testdataPerfDir(tb testing.TB) string {
function downloadTestDataTgz (line 139) | func downloadTestDataTgz(t *testing.T) {
function extractTestDataTgz (line 155) | func extractTestDataTgz(t *testing.T) {
function loadSourceDocument (line 196) | func loadSourceDocument(b *testing.B, canonicalOnly bool, pathParts ...s...
function benchmarkBSONEncoding (line 212) | func benchmarkBSONEncoding(b *testing.B, canonicalOnly bool, source stri...
function benchmarkBSONDecoding (line 231) | func benchmarkBSONDecoding(b *testing.B, canonicalOnly bool, source stri...
function BenchmarkBSONFlatDocumentEncoding (line 255) | func BenchmarkBSONFlatDocumentEncoding(b *testing.B) {
function BenchmarkBSONFlatDocumentDecoding (line 261) | func BenchmarkBSONFlatDocumentDecoding(b *testing.B) {
function BenchmarkBSONDeepDocumentEncoding (line 267) | func BenchmarkBSONDeepDocumentEncoding(b *testing.B) {
function BenchmarkBSONDeepDocumentDecoding (line 273) | func BenchmarkBSONDeepDocumentDecoding(b *testing.B) {
function BenchmarkBSONFullDocumentEncoding (line 279) | func BenchmarkBSONFullDocumentEncoding(b *testing.B) {
function BenchmarkBSONFullDocumentDecoding (line 285) | func BenchmarkBSONFullDocumentDecoding(b *testing.B) {
function BenchmarkSingleRunCommand (line 291) | func BenchmarkSingleRunCommand(b *testing.B) {
function setupBench (line 320) | func setupBench(b *testing.B) (*mongo.Collection, func(b *testing.B)) {
function BenchmarkSingleFindOneByID (line 355) | func BenchmarkSingleFindOneByID(b *testing.B) {
function benchmarkSingleInsert (line 388) | func benchmarkSingleInsert(b *testing.B, source string) {
function BenchmarkSmallDocInsertOne (line 410) | func BenchmarkSmallDocInsertOne(b *testing.B) {
function BenchmarkLargeDocInsertOne (line 415) | func BenchmarkLargeDocInsertOne(b *testing.B) {
function BenchmarkMultiFindMany (line 420) | func BenchmarkMultiFindMany(b *testing.B) {
function benchmarkMultiInsert (line 467) | func benchmarkMultiInsert(b *testing.B, source string) {
function BenchmarkMultiInsertSmallDocument (line 489) | func BenchmarkMultiInsertSmallDocument(b *testing.B) {
function BenchmarkMultiInsertLargeDocument (line 494) | func BenchmarkMultiInsertLargeDocument(b *testing.B) {
function runBenchmark (line 498) | func runBenchmark(name string, fn func(*testing.B)) (poplarTest, error) {
function TestRunAllBenchmarks (line 552) | func TestRunAllBenchmarks(t *testing.T) {
type poplarTest (line 615) | type poplarTest struct
type poplarTestInfo (line 627) | type poplarTestInfo struct
type poplarTestArtifact (line 637) | type poplarTestArtifact struct
type poplarTestMetrics (line 665) | type poplarTestMetrics struct
FILE: internal/cmd/build-oss-fuzz-corpus/main.go
constant dataDir (line 25) | dataDir = "testdata/bson-corpus/"
type validityTestCase (line 27) | type validityTestCase struct
function findJSONFilesInDir (line 35) | func findJSONFilesInDir(dir string) ([]string, error) {
function jsonToNative (line 55) | func jsonToNative(ej, ejType, testDesc string) (bson.D, error) {
function jsonToBytes (line 64) | func jsonToBytes(ej, ejType, testDesc string) ([]byte, error) {
function seedExtJSON (line 79) | func seedExtJSON(zw *zip.Writer, extJSON string, extJSONType string, des...
function seedTestCase (line 102) | func seedTestCase(zw *zip.Writer, tcase []*validityTestCase) {
function seedBSONCorpus (line 125) | func seedBSONCorpus(zw *zip.Writer) {
function main (line 153) | func main() {
FILE: internal/cmd/faas/awslambda/mongodb/bootstrap.go
constant timeout (line 24) | timeout = 60 * time.Second
type eventListener (line 29) | type eventListener struct
method commandMonitor (line 41) | func (listener *eventListener) commandMonitor() *event.CommandMonitor {
method serverMonitor (line 61) | func (listener *eventListener) serverMonitor() *event.ServerMonitor {
method poolMonitor (line 88) | func (listener *eventListener) poolMonitor() *event.PoolMonitor {
type response (line 102) | type response struct
function gateway500 (line 111) | func gateway500() events.APIGatewayProxyResponse {
function handler (line 119) | func handler(ctx context.Context, request events.APIGatewayProxyRequest)...
function main (line 190) | func main() {
FILE: internal/cmd/parse-api-report/main.go
function main (line 17) | func main() {
FILE: internal/cmd/testatlas/atlas_test.go
function TestAtlas (line 32) | func TestAtlas(t *testing.T) {
function runTest (line 157) | func runTest(ctx context.Context, clientOpts *options.ClientOptions) err...
function createAtlasX509DevCertKeyFile (line 181) | func createAtlasX509DevCertKeyFile(t *testing.T) string {
function createAtlasX509DevCertKeyFileNoUser (line 198) | func createAtlasX509DevCertKeyFileNoUser(t *testing.T) string {
function addTLSCertKeyFile (line 215) | func addTLSCertKeyFile(t *testing.T, certKeyFile, uri string) string {
FILE: internal/cmd/testentauth/main.go
function main (line 20) | func main() {
FILE: internal/cmd/testkms/main.go
function main (line 37) | func main() {
FILE: internal/codecutil/encoding.go
type MarshalError (line 24) | type MarshalError struct
method Error (line 30) | func (e MarshalError) Error() string {
method Unwrap (line 35) | func (e MarshalError) Unwrap() error { return e.Err }
type EncoderFn (line 38) | type EncoderFn
function MarshalValue (line 42) | func MarshalValue(val any, encFn EncoderFn) (bsoncore.Value, error) {
FILE: internal/codecutil/encoding_test.go
function testEncFn (line 17) | func testEncFn(t *testing.T) EncoderFn {
function TestMarshalValue (line 26) | func TestMarshalValue(t *testing.T) {
FILE: internal/credproviders/assume_role_provider.go
constant assumeRoleProviderName (line 24) | assumeRoleProviderName = "AssumeRoleProvider"
constant stsURI (line 26) | stsURI = `https://sts.amazonaws.com/?Action=AssumeRoleWithWebIdentity&Ro...
type AssumeRoleProvider (line 30) | type AssumeRoleProvider struct
method RetrieveWithContext (line 61) | func (a *AssumeRoleProvider) RetrieveWithContext(ctx context.Context) ...
method Retrieve (line 141) | func (a *AssumeRoleProvider) Retrieve() (credentials.Value, error) {
method IsExpired (line 146) | func (a *AssumeRoleProvider) IsExpired() bool {
function NewAssumeRoleProvider (line 47) | func NewAssumeRoleProvider(httpClient *http.Client, expiryWindow time.Du...
FILE: internal/credproviders/ec2_provider.go
constant ec2ProviderName (line 23) | ec2ProviderName = "EC2Provider"
constant awsEC2URI (line 25) | awsEC2URI = "http://169.254.169.254/"
constant awsEC2RolePath (line 26) | awsEC2RolePath = "latest/meta-data/iam/security-credentials/"
constant awsEC2TokenPath (line 27) | awsEC2TokenPath = "latest/api/token"
constant defaultHTTPTimeout (line 29) | defaultHTTPTimeout = 10 * time.Second
type EC2Provider (line 33) | type EC2Provider struct
method getToken (line 53) | func (e *EC2Provider) getToken(ctx context.Context) (string, error) {
method getRoleName (line 82) | func (e *EC2Provider) getRoleName(ctx context.Context, token string) (...
method getCredentials (line 110) | func (e *EC2Provider) getCredentials(ctx context.Context, token string...
method RetrieveWithContext (line 150) | func (e *EC2Provider) RetrieveWithContext(ctx context.Context) (creden...
method Retrieve (line 176) | func (e *EC2Provider) Retrieve() (credentials.Value, error) {
method IsExpired (line 181) | func (e *EC2Provider) IsExpired() bool {
function NewEC2Provider (line 46) | func NewEC2Provider(httpClient *http.Client, expiryWindow time.Duration)...
FILE: internal/credproviders/ecs_provider.go
constant ecsProviderName (line 22) | ecsProviderName = "ECSProvider"
constant awsRelativeURI (line 24) | awsRelativeURI = "http://169.254.170.2/"
type ECSProvider (line 28) | type ECSProvider struct
method RetrieveWithContext (line 53) | func (e *ECSProvider) RetrieveWithContext(ctx context.Context) (creden...
method Retrieve (line 105) | func (e *ECSProvider) Retrieve() (credentials.Value, error) {
method IsExpired (line 110) | func (e *ECSProvider) IsExpired() bool {
function NewECSProvider (line 43) | func NewECSProvider(httpClient *http.Client, expiryWindow time.Duration)...
FILE: internal/credproviders/env_provider.go
constant envProviderName (line 16) | envProviderName = "EnvProvider"
type EnvVar (line 19) | type EnvVar
method Get (line 22) | func (ev EnvVar) Get() string {
type EnvProvider (line 28) | type EnvProvider struct
method Retrieve (line 49) | func (e *EnvProvider) Retrieve() (credentials.Value, error) {
method IsExpired (line 67) | func (e *EnvProvider) IsExpired() bool {
function NewEnvProvider (line 37) | func NewEnvProvider() *EnvProvider {
FILE: internal/credproviders/imds_provider.go
constant AzureProviderName (line 23) | AzureProviderName = "AzureProvider"
constant azureURI (line 25) | azureURI = "http://169.254.169.254/metadata/identity/oauth2/token"
type AzureProvider (line 29) | type AzureProvider struct
method RetrieveWithContext (line 45) | func (a *AzureProvider) RetrieveWithContext(ctx context.Context) (cred...
method Retrieve (line 96) | func (a *AzureProvider) Retrieve() (credentials.Value, error) {
method IsExpired (line 101) | func (a *AzureProvider) IsExpired() bool {
function NewAzureProvider (line 36) | func NewAzureProvider(httpClient *http.Client, expiryWindow time.Duratio...
FILE: internal/credproviders/static_provider.go
constant staticProviderName (line 16) | staticProviderName = "StaticProvider"
type StaticProvider (line 20) | type StaticProvider struct
method Retrieve (line 44) | func (s *StaticProvider) Retrieve() (credentials.Value, error) {
method IsExpired (line 56) | func (s *StaticProvider) IsExpired() bool {
function verify (line 27) | func verify(v credentials.Value) error {
FILE: internal/csfle/csfle.go
constant EncryptedCacheCollection (line 17) | EncryptedCacheCollection = "ecc"
constant EncryptedStateCollection (line 18) | EncryptedStateCollection = "esc"
constant EncryptedCompactionCollection (line 19) | EncryptedCompactionCollection = "ecoc"
function GetEncryptedStateCollectionName (line 23) | func GetEncryptedStateCollectionName(efBSON bsoncore.Document, dataColle...
FILE: internal/csot/csot.go
type clientLevel (line 14) | type clientLevel struct
function isClientLevel (line 16) | func isClientLevel(ctx context.Context) bool {
function IsTimeoutContext (line 27) | func IsTimeoutContext(ctx context.Context) bool {
function WithTimeout (line 40) | func WithTimeout(parent context.Context, timeout *time.Duration) (contex...
function WithServerSelectionTimeout (line 73) | func WithServerSelectionTimeout(
type ZeroRTTMonitor (line 86) | type ZeroRTTMonitor struct
method EWMA (line 89) | func (zrm *ZeroRTTMonitor) EWMA() time.Duration {
method Min (line 94) | func (zrm *ZeroRTTMonitor) Min() time.Duration {
method P90 (line 99) | func (zrm *ZeroRTTMonitor) P90() time.Duration {
method Stats (line 104) | func (zrm *ZeroRTTMonitor) Stats() string {
FILE: internal/csot/csot_test.go
function newTestContext (line 18) | func newTestContext(t *testing.T, timeout time.Duration) context.Context {
function TestWithServerSelectionTimeout (line 25) | func TestWithServerSelectionTimeout(t *testing.T) {
function TestWithTimeout (line 151) | func TestWithTimeout(t *testing.T) {
FILE: internal/decimal128/decimal128.go
constant MaxDecimal128Exp (line 15) | MaxDecimal128Exp = 6111
constant MinDecimal128Exp (line 16) | MinDecimal128Exp = -6176
function divmod (line 19) | func divmod(h, l uint64, div uint32) (qh, ql uint64, rem uint32) {
function String (line 37) | func String(h, l uint64) string {
FILE: internal/docexamples/examples.go
function requireCursorLength (line 29) | func requireCursorLength(t *testing.T, cursor *mongo.Cursor, length int) {
function containsKey (line 39) | func containsKey(doc bson.Raw, key ...string) bool {
function parseDate (line 44) | func parseDate(t *testing.T, dateString string) time.Time {
function InsertExamples (line 54) | func InsertExamples(t *testing.T, db *mongo.Database) {
function QueryToplevelFieldsExamples (line 143) | func QueryToplevelFieldsExamples(t *testing.T, db *mongo.Database) {
function QueryEmbeddedDocumentsExamples (line 313) | func QueryEmbeddedDocumentsExamples(t *testing.T, db *mongo.Database) {
function QueryArraysExamples (line 474) | func QueryArraysExamples(t *testing.T, db *mongo.Database) {
function QueryArrayEmbeddedDocumentsExamples (line 660) | func QueryArrayEmbeddedDocumentsExamples(t *testing.T, db *mongo.Databas...
function QueryNullMissingFieldsExamples (line 890) | func QueryNullMissingFieldsExamples(t *testing.T, db *mongo.Database) {
function ProjectionExamples (line 969) | func ProjectionExamples(t *testing.T, db *mongo.Database) {
function UpdateExamples (line 1354) | func UpdateExamples(t *testing.T, db *mongo.Database) {
function DeleteExamples (line 1634) | func DeleteExamples(t *testing.T, db *mongo.Database) {
function UpdateEmployeeInfo (line 1755) | func UpdateEmployeeInfo(ctx context.Context, client *mongo.Client) error {
function RunTransactionWithRetry (line 1808) | func RunTransactionWithRetry(ctx context.Context, txnFn func(context.Con...
function CommitWithRetry (line 1831) | func CommitWithRetry(ctx context.Context) error {
function TransactionsExamples (line 1858) | func TransactionsExamples(ctx context.Context, client *mongo.Client) err...
function WithTransactionExample (line 1965) | func WithTransactionExample(ctx context.Context) error {
function ChangeStreamExamples (line 2018) | func ChangeStreamExamples(t *testing.T, db *mongo.Database) {
function AggregationExamples (line 2129) | func AggregationExamples(t *testing.T, db *mongo.Database) {
function CausalConsistencyExamples (line 2552) | func CausalConsistencyExamples(client *mongo.Client) error {
function RunCommandExamples (line 2642) | func RunCommandExamples(t *testing.T, db *mongo.Database) {
function IndexExamples (line 2663) | func IndexExamples(t *testing.T, db *mongo.Database) {
function StableAPIExample (line 2783) | func StableAPIExample() {
function StableAPIStrictExample (line 2805) | func StableAPIStrictExample() {
function StableAPINonStrictExample (line 2827) | func StableAPINonStrictExample() {
function StableAPIDeprecationErrorsExample (line 2850) | func StableAPIDeprecationErrorsExample() {
function StableAPIStrictCountExample (line 2871) | func StableAPIStrictCountExample(t *testing.T) {
function StableAPIExamples (line 2933) | func StableAPIExamples() {
function insertSnapshotQueryTestData (line 2940) | func insertSnapshotQueryTestData(mt *mtest.T) {
function snapshotQueryPetExample (line 2986) | func snapshotQueryPetExample(mt *mtest.T) error {
function snapshotQueryRetailExample (line 3050) | func snapshotQueryRetailExample(mt *mtest.T) error {
function SnapshotQueryExamples (line 3116) | func SnapshotQueryExamples(mt *mtest.T) {
FILE: internal/docexamples/examples_test.go
function TestMain (line 24) | func TestMain(m *testing.M) {
function TestDocumentationExamples (line 43) | func TestDocumentationExamples(t *testing.T) {
FILE: internal/driverutil/description.go
constant MinWireVersion (line 24) | MinWireVersion = 8
constant MaxWireVersion (line 25) | MaxWireVersion = 25
function equalWireVersion (line 28) | func equalWireVersion(wv1, wv2 *description.VersionRange) bool {
function EqualServers (line 42) | func EqualServers(srv1, srv2 description.Server) bool {
function IsServerLoadBalanced (line 112) | func IsServerLoadBalanced(srv description.Server) bool {
function stringSliceFromRawElement (line 120) | func stringSliceFromRawElement(element bson.RawElement) ([]string, error) {
function decodeStringMap (line 124) | func decodeStringMap(element bson.RawElement, name string) (map[string]s...
function NewTopologyVersion (line 146) | func NewTopologyVersion(doc bson.Raw) (*description.TopologyVersion, err...
function NewVersionRange (line 171) | func NewVersionRange(min, max int32) description.VersionRange {
function VersionRangeIncludes (line 177) | func VersionRangeIncludes(versionRange description.VersionRange, v int32...
function CompareTopologyVersions (line 188) | func CompareTopologyVersions(receiver, response *description.TopologyVer...
function NewServerDescription (line 206) | func NewServerDescription(addr address.Address, response bson.Raw) descr...
function sliceStringEqual (line 481) | func sliceStringEqual(a []string, b []string) bool {
FILE: internal/driverutil/hello.go
constant AwsLambdaPrefix (line 14) | AwsLambdaPrefix = "AWS_Lambda_"
constant EnvVarAWSExecutionEnv (line 20) | EnvVarAWSExecutionEnv = "AWS_EXECUTION_ENV"
constant EnvVarAWSLambdaRuntimeAPI (line 22) | EnvVarAWSLambdaRuntimeAPI = "AWS_LAMBDA_RUNTIME_API"
constant EnvVarFunctionsWorkerRuntime (line 24) | EnvVarFunctionsWorkerRuntime = "FUNCTIONS_WORKER_RUNTIME"
constant EnvVarKService (line 26) | EnvVarKService = "K_SERVICE"
constant EnvVarFunctionName (line 28) | EnvVarFunctionName = "FUNCTION_NAME"
constant EnvVarVercel (line 30) | EnvVarVercel = "VERCEL"
constant EnvVarK8s (line 32) | EnvVarK8s = "KUBERNETES_SERVICE_HOST"
constant EnvVarAWSRegion (line 39) | EnvVarAWSRegion = "AWS_REGION"
constant EnvVarAWSLambdaFunctionMemorySize (line 41) | EnvVarAWSLambdaFunctionMemorySize = "AWS_LAMBDA_FUNCTION_MEMORY_SIZE"
constant EnvVarFunctionMemoryMB (line 43) | EnvVarFunctionMemoryMB = "FUNCTION_MEMORY_MB"
constant EnvVarFunctionTimeoutSec (line 45) | EnvVarFunctionTimeoutSec = "FUNCTION_TIMEOUT_SEC"
constant EnvVarFunctionRegion (line 47) | EnvVarFunctionRegion = "FUNCTION_REGION"
constant EnvVarVercelRegion (line 49) | EnvVarVercelRegion = "VERCEL_REGION"
constant EnvNameAWSLambda (line 56) | EnvNameAWSLambda = "aws.lambda"
constant EnvNameAzureFunc (line 58) | EnvNameAzureFunc = "azure.func"
constant EnvNameGCPFunc (line 60) | EnvNameGCPFunc = "gcp.func"
constant EnvNameVercel (line 62) | EnvNameVercel = "vercel"
function GetFaasEnvName (line 71) | func GetFaasEnvName() string {
FILE: internal/driverutil/operation.go
constant AbortTransactionOp (line 18) | AbortTransactionOp = "abortTransaction"
constant AggregateOp (line 19) | AggregateOp = "aggregate"
constant CommitTransactionOp (line 20) | CommitTransactionOp = "commitTransaction"
constant CountOp (line 21) | CountOp = "count"
constant CreateOp (line 22) | CreateOp = "create"
constant CreateIndexesOp (line 23) | CreateIndexesOp = "createIndexes"
constant DeleteOp (line 24) | DeleteOp = "delete"
constant DistinctOp (line 25) | DistinctOp = "distinct"
constant DropOp (line 26) | DropOp = "drop"
constant DropDatabaseOp (line 27) | DropDatabaseOp = "dropDatabase"
constant DropIndexesOp (line 28) | DropIndexesOp = "dropIndexes"
constant EndSessionsOp (line 29) | EndSessionsOp = "endSessions"
constant FindAndModifyOp (line 30) | FindAndModifyOp = "findAndModify"
constant FindOp (line 31) | FindOp = "find"
constant InsertOp (line 32) | InsertOp = "insert"
constant ListCollectionsOp (line 33) | ListCollectionsOp = "listCollections"
constant ListIndexesOp (line 34) | ListIndexesOp = "listIndexes"
constant ListDatabasesOp (line 35) | ListDatabasesOp = "listDatabases"
constant UpdateOp (line 36) | UpdateOp = "update"
constant BulkWriteOp (line 37) | BulkWriteOp = "bulkWrite"
function CalculateMaxTimeMS (line 44) | func CalculateMaxTimeMS(ctx context.Context, rttMin time.Duration) (int6...
FILE: internal/driverutil/operation_test.go
function TestCalculateMaxTimeMS (line 18) | func TestCalculateMaxTimeMS(t *testing.T) {
FILE: internal/errutil/join.go
function join (line 17) | func join(errs ...error) error {
type joinError (line 44) | type joinError struct
method Error (line 48) | func (e *joinError) Error() string {
method Unwrap (line 64) | func (e *joinError) Unwrap() error {
method Is (line 72) | func (e *joinError) Is(target error) bool {
method As (line 80) | func (e *joinError) As(target any) bool {
FILE: internal/errutil/join_go1.19.go
function Join (line 17) | func Join(errs ...error) error {
FILE: internal/errutil/join_go1.20.go
function Join (line 14) | func Join(errs ...error) error {
FILE: internal/errutil/join_test.go
function TestJoin_Nil (line 20) | func TestJoin_Nil(t *testing.T) {
function TestJoin_Error (line 30) | func TestJoin_Error(t *testing.T) {
function TestJoin_ErrorsIs (line 69) | func TestJoin_ErrorsIs(t *testing.T) {
type errType1 (line 154) | type errType1 struct
method Error (line 156) | func (errType1) Error() string { return "" }
type errType2 (line 158) | type errType2 struct
method Error (line 160) | func (errType2) Error() string { return "" }
function TestJoin_ErrorsAs (line 164) | func TestJoin_ErrorsAs(t *testing.T) {
FILE: internal/eventtest/eventtest.go
type TestPoolMonitor (line 19) | type TestPoolMonitor struct
method Events (line 43) | func (tpm *TestPoolMonitor) Events(filters ...func(*event.PoolEvent) b...
method ClearEvents (line 65) | func (tpm *TestPoolMonitor) ClearEvents() {
method IsPoolCleared (line 73) | func (tpm *TestPoolMonitor) IsPoolCleared() bool {
method Interruptions (line 81) | func (tpm *TestPoolMonitor) Interruptions() int {
function NewTestPoolMonitor (line 26) | func NewTestPoolMonitor() *TestPoolMonitor {
FILE: internal/failpoint/failpoint.go
constant ModeAlwaysOn (line 16) | ModeAlwaysOn = "alwaysOn"
constant ModeOff (line 19) | ModeOff = "off"
type FailPoint (line 27) | type FailPoint struct
type Mode (line 36) | type Mode struct
type Data (line 43) | type Data struct
type WriteConcernError (line 57) | type WriteConcernError struct
FILE: internal/httputil/httputil.go
function NewHTTPClient (line 17) | func NewHTTPClient() *http.Client {
function CloseIdleHTTPConnections (line 31) | func CloseIdleHTTPConnections(client *http.Client) {
FILE: internal/httputil/httputil_test.go
type nonDefaultTransport (line 16) | type nonDefaultTransport struct
method RoundTrip (line 18) | func (*nonDefaultTransport) RoundTrip(*http.Request) (*http.Response, ...
function TestDefaultHTTPClientTransport (line 20) | func TestDefaultHTTPClientTransport(t *testing.T) {
FILE: internal/integration/causal_consistency_test.go
function TestCausalConsistency_Supported (line 29) | func TestCausalConsistency_Supported(t *testing.T) {
function checkOperationTime (line 204) | func checkOperationTime(mt *mtest.T, cmd bson.Raw, shouldInclude bool) {
function getReadConcernFields (line 215) | func getReadConcernFields(mt *mtest.T, cmd bson.Raw) (string, *bson.Time...
FILE: internal/integration/change_stream_test.go
type resumeType (line 28) | type resumeType
type streamType (line 29) | type streamType
constant minChangeStreamVersion (line 33) | minChangeStreamVersion = "3.6.0"
constant minPbrtVersion (line 34) | minPbrtVersion = "4.0.7"
constant minStartAfterVersion (line 35) | minStartAfterVersion = "4.1.1"
constant startAfter (line 37) | startAfter resumeType = iota
constant resumeAfter (line 38) | resumeAfter
constant operationTime (line 39) | operationTime
constant client (line 41) | client streamType = iota
constant database (line 42) | database
constant collection (line 43) | collection
constant errorInterrupted (line 45) | errorInterrupted int32 = 11601
constant errorHostUnreachable (line 46) | errorHostUnreachable int32 = 6
constant resumableChangeStreamError (line 48) | resumableChangeStreamError = "ResumableChangeStreamError"
function TestChangeStream_Standalone (line 51) | func TestChangeStream_Standalone(t *testing.T) {
function TestChangeStream_ReplicaSet (line 62) | func TestChangeStream_ReplicaSet(t *testing.T) {
function closeStream (line 742) | func closeStream(cs *mongo.ChangeStream) {
function generateEvents (line 746) | func generateEvents(mt *mtest.T, numEvents int) {
function getAggregateResponseInfo (line 757) | func getAggregateResponseInfo(mt *mtest.T) (bson.Raw, bson.Timestamp) {
function compareResumeTokens (line 769) | func compareResumeTokens(mt *mtest.T, cs *mongo.ChangeStream, expected b...
FILE: internal/integration/clam_prose_test.go
function clamTruncErr (line 26) | func clamTruncErr(mt *mtest.T, op string, want, got int) error {
function clamDefaultTruncLimitOp (line 32) | func clamDefaultTruncLimitOp(ctx context.Context, mt *mtest.T, coll *mon...
function clamDefaultTruncLimitLogs (line 53) | func clamDefaultTruncLimitLogs(mt *mtest.T) []truncValidator {
function clamExplicitTruncLimitOp (line 95) | func clamExplicitTruncLimitOp(ctx context.Context, mt *mtest.T, coll *mo...
function clamExplicitTruncLimitLogs (line 102) | func clamExplicitTruncLimitLogs(mt *mtest.T) []truncValidator {
function clamExplicitTruncLimitFailOp (line 132) | func clamExplicitTruncLimitFailOp(ctx context.Context, mt *mtest.T, coll...
function clamExplicitTruncLimitFailLogs (line 139) | func clamExplicitTruncLimitFailLogs(mt *mtest.T) []truncValidator {
function clamMultiByteTrunc (line 175) | func clamMultiByteTrunc(ctx context.Context, mt *mtest.T, coll *mongo.Co...
function clamMultiByteTruncLogs (line 191) | func clamMultiByteTruncLogs(mt *mtest.T) []truncValidator {
function TestCommandLoggingAndMonitoringProse (line 218) | func TestCommandLoggingAndMonitoringProse(t *testing.T) {
FILE: internal/integration/client_options_test.go
function TestClientOptions_CustomDia
Condensed preview — 745 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (7,404K chars).
[
{
"path": ".errcheck-excludes",
"chars": 849,
"preview": "(go.mongodb.org/mongo-driver/x/mongo/driver.Connection).Close\n(*go.mongodb.org/mongo-driver/x/network/connection.connect"
},
{
"path": ".evergreen/config.yml",
"chars": 68897,
"preview": "########################################\n# Evergreen Template for MongoDB Drivers\n######################################"
},
{
"path": ".evergreen/krb5.config",
"chars": 132,
"preview": "[realms]\n LDAPTEST.10GEN.CC = {\n kdc = ldaptest.10gen.cc\n admin_server = ldaptest.10gen.cc\n }\n\n[libdefaults]\n r"
},
{
"path": ".evergreen/ocsp-requirements.txt",
"chars": 50,
"preview": "asn1crypto==1.3.0\nbottle==0.12.20\noscrypto==1.2.0\n"
},
{
"path": ".evergreen/run-mongodb-aws-ecs-test.sh",
"chars": 514,
"preview": "#!/bin/bash\n\nset -o errexit # Exit the script with error if any of the commands fail\n\n#################################"
},
{
"path": ".evergreen/run-task.sh",
"chars": 282,
"preview": "#!/usr/bin/env bash\n#\n# Source the env.sh file and run the given task\nset -eu\n\nSCRIPT_DIR=$( cd -- \"$( dirname -- \"${BAS"
},
{
"path": ".evergreen/setup-system.sh",
"chars": 2906,
"preview": "#!/usr/bin/env bash\n#\n# Set up environment and write env.sh and expansion.yml files.\nset -eu\n\n# Set up default environme"
},
{
"path": ".github/dependabot.yml",
"chars": 361,
"preview": "version: 2\nupdates:\n - package-ecosystem: \"github-actions\"\n directory: \"/\"\n schedule:\n interval: \"weekly\"\n "
},
{
"path": ".github/labeler.yml",
"chars": 267,
"preview": "review-priority-normal:\n - changed-files:\n - any-glob-to-any-file: \"*\"\ndocumentation:\n - changed-files:\n - a"
},
{
"path": ".github/release.yml",
"chars": 486,
"preview": "changelog:\n exclude:\n labels:\n - ignore-for-release\n - github_actions\n - submodules\n authors:\n "
},
{
"path": ".github/workflows/check-labels.yml",
"chars": 548,
"preview": "name: Label Checker\non:\n pull_request:\n types:\n - opened\n - synchronize\n - reopened\n - labeled\n "
},
{
"path": ".github/workflows/codeql.yml",
"chars": 1516,
"preview": "name: \"CodeQL\"\non:\n push:\n branches:\n - \"v1\"\n - \"cloud-*\"\n - \"master\"\n - \"release/*\"\n - \"fe"
},
{
"path": ".github/workflows/create-release-branch.yml",
"chars": 1864,
"preview": "name: Create Release Branch\non:\n workflow_dispatch:\n inputs:\n branch_name:\n description: The name of the"
},
{
"path": ".github/workflows/labeler.yml",
"chars": 286,
"preview": "name: \"Pull Request Labeler\"\non:\n - pull_request_target\npermissions:\n contents: read\njobs:\n labeler:\n permissions:"
},
{
"path": ".github/workflows/merge-up.yml",
"chars": 1088,
"preview": "name: Merge up\non:\n push:\n branches:\n - release/*.*\n - v*\npermissions:\n contents: read\njobs:\n merge-up:\n"
},
{
"path": ".github/workflows/release.yml",
"chars": 2995,
"preview": "name: Release\non:\n workflow_dispatch:\n inputs:\n version:\n description: \"The new version to set\"\n "
},
{
"path": ".github/workflows/scorecard.yml",
"chars": 3436,
"preview": "# This workflow uses actions that are not certified by GitHub. They are provided\n# by a third-party and are governed by "
},
{
"path": ".github/workflows/test.yml",
"chars": 621,
"preview": "name: GoDriver Tests\non:\n push:\n pull_request:\npermissions:\n contents: read\nconcurrency:\n group: test-${{ github.ref"
},
{
"path": ".gitignore",
"chars": 570,
"preview": ".vscode\ndebug\n.idea\n*.iml\n*.ipr\n*.iws\n.idea\n*.sublime-project\n*.sublime-workspace\ndriver-test-data.tar.gz\nperf\nperf.json"
},
{
"path": ".gitmodules",
"chars": 110,
"preview": "[submodule \"specifications\"]\n\tpath = testdata/specifications\n\turl = https://github.com/mongodb/specifications\n"
},
{
"path": ".golangci.yml",
"chars": 5474,
"preview": "version: \"2\"\nlinters:\n default: none\n enable:\n - errcheck\n - gocritic\n # TODO(GODRIVER-3712): Enable gosec in"
},
{
"path": ".pre-commit-config.yaml",
"chars": 2528,
"preview": "repos:\n - repo: https://github.com/pre-commit/pre-commit-hooks\n rev: v6.0.0\n hooks:\n - id: check-case-confli"
},
{
"path": "Dockerfile",
"chars": 1469,
"preview": "# Dockerfile for Go Driver local development.\n# sha found via this command: docker inspect --format='{{index .RepoDigest"
},
{
"path": "LICENSE",
"chars": 11357,
"preview": " Apache License\n Version 2.0, January 2004\n "
},
{
"path": "README.md",
"chars": 7470,
"preview": "<p align=\"center\"><img src=\"etc/assets/mongo-gopher.png\" width=\"250\"></p>\n<p align=\"center\">\n <a href=\"https://goreport"
},
{
"path": "THIRD-PARTY-NOTICES",
"chars": 78904,
"preview": "----------------------------------------------------------------------\nLicense notice for AWS V4 signing code from githu"
},
{
"path": "Taskfile.yml",
"chars": 7051,
"preview": "# See https://taskfile.dev/usage/\nversion: \"3\"\nenv:\n TEST_TIMEOUT: 1800\n LONG_TEST_TIMEOUT: 3600\ndotenv: [\".test.env\"]"
},
{
"path": "bson/array_codec.go",
"chars": 1479,
"preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
},
{
"path": "bson/benchmark_test.go",
"chars": 11343,
"preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
},
{
"path": "bson/bson_binary_vector_spec_test.go",
"chars": 4385,
"preview": "// Copyright (C) MongoDB, Inc. 2024-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
},
{
"path": "bson/bson_corpus_spec_test.go",
"chars": 15617,
"preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
},
{
"path": "bson/bson_test.go",
"chars": 16918,
"preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
},
{
"path": "bson/bsoncodec.go",
"chars": 7221,
"preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
},
{
"path": "bson/bsoncodec_test.go",
"chars": 1787,
"preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
},
{
"path": "bson/bsonrw_test.go",
"chars": 20343,
"preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
},
{
"path": "bson/buffered_byte_src.go",
"chars": 3493,
"preview": "// Copyright (C) MongoDB, Inc. 2025-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
},
{
"path": "bson/buffered_byte_src_test.go",
"chars": 3801,
"preview": "// Copyright (C) MongoDB, Inc. 2025-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
},
{
"path": "bson/byte_slice_codec.go",
"chars": 2780,
"preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
},
{
"path": "bson/codec_cache.go",
"chars": 4395,
"preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
},
{
"path": "bson/codec_cache_test.go",
"chars": 5133,
"preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
},
{
"path": "bson/cond_addr_codec.go",
"chars": 1892,
"preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
},
{
"path": "bson/cond_addr_codec_test.go",
"chars": 2796,
"preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
},
{
"path": "bson/copier.go",
"chars": 9307,
"preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
},
{
"path": "bson/copier_test.go",
"chars": 17007,
"preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
},
{
"path": "bson/decimal.go",
"chars": 8366,
"preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
},
{
"path": "bson/decimal_test.go",
"chars": 10394,
"preview": "// Copyright (C) MongoDB, Inc. 2022-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
},
{
"path": "bson/decode_value_fuzz_test.go",
"chars": 1842,
"preview": "// Copyright (C) MongoDB, Inc. 2025-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
},
{
"path": "bson/decoder.go",
"chars": 4541,
"preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
},
{
"path": "bson/decoder_example_test.go",
"chars": 6625,
"preview": "// Copyright (C) MongoDB, Inc. 2023-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
},
{
"path": "bson/decoder_test.go",
"chars": 19554,
"preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
},
{
"path": "bson/default_value_decoders.go",
"chars": 42041,
"preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
},
{
"path": "bson/default_value_decoders_test.go",
"chars": 106286,
"preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
},
{
"path": "bson/default_value_encoders.go",
"chars": 17583,
"preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
},
{
"path": "bson/default_value_encoders_test.go",
"chars": 46842,
"preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
},
{
"path": "bson/doc.go",
"chars": 8265,
"preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
},
{
"path": "bson/empty_interface_codec.go",
"chars": 3670,
"preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
},
{
"path": "bson/encoder.go",
"chars": 4318,
"preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
},
{
"path": "bson/encoder_example_test.go",
"chars": 6216,
"preview": "// Copyright (C) MongoDB, Inc. 2023-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
},
{
"path": "bson/encoder_test.go",
"chars": 8846,
"preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
},
{
"path": "bson/example_test.go",
"chars": 3132,
"preview": "// Copyright (C) MongoDB, Inc. 2023-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
},
{
"path": "bson/extjson_parser.go",
"chars": 18504,
"preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
},
{
"path": "bson/extjson_parser_test.go",
"chars": 26767,
"preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
},
{
"path": "bson/extjson_prose_test.go",
"chars": 1692,
"preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
},
{
"path": "bson/extjson_reader.go",
"chars": 13298,
"preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
},
{
"path": "bson/extjson_reader_test.go",
"chars": 4331,
"preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
},
{
"path": "bson/extjson_tables.go",
"chars": 4479,
"preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
},
{
"path": "bson/extjson_wrappers.go",
"chars": 11372,
"preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
},
{
"path": "bson/extjson_writer.go",
"chars": 16541,
"preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
},
{
"path": "bson/extjson_writer_test.go",
"chars": 7654,
"preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
},
{
"path": "bson/fuzz_test.go",
"chars": 1164,
"preview": "// Copyright (C) MongoDB, Inc. 2022-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
},
{
"path": "bson/json_scanner.go",
"chars": 12386,
"preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
},
{
"path": "bson/json_scanner_test.go",
"chars": 11881,
"preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
},
{
"path": "bson/map_codec.go",
"chars": 8696,
"preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
},
{
"path": "bson/marshal.go",
"chars": 6054,
"preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
},
{
"path": "bson/marshal_test.go",
"chars": 8439,
"preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
},
{
"path": "bson/marshal_value_cases_test.go",
"chars": 4919,
"preview": "// Copyright (C) MongoDB, Inc. 2023-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
},
{
"path": "bson/marshal_value_test.go",
"chars": 2588,
"preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
},
{
"path": "bson/marshaling_cases_test.go",
"chars": 525,
"preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
},
{
"path": "bson/mgocompat/doc.go",
"chars": 3068,
"preview": "// Copyright (C) MongoDB, Inc. 2022-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
},
{
"path": "bson/mgocompat/registry.go",
"chars": 679,
"preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
},
{
"path": "bson/mgoregistry.go",
"chars": 7048,
"preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
},
{
"path": "bson/mgoregistry_test.go",
"chars": 56309,
"preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
},
{
"path": "bson/mode.go",
"chars": 1792,
"preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
},
{
"path": "bson/objectid.go",
"chars": 5885,
"preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
},
{
"path": "bson/objectid_test.go",
"chars": 6612,
"preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
},
{
"path": "bson/pointer_codec.go",
"chars": 2476,
"preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
},
{
"path": "bson/primitive.go",
"chars": 8623,
"preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
},
{
"path": "bson/primitive_codecs.go",
"chars": 3084,
"preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
},
{
"path": "bson/primitive_codecs_test.go",
"chars": 25966,
"preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
},
{
"path": "bson/raw.go",
"chars": 3573,
"preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
},
{
"path": "bson/raw_array.go",
"chars": 2213,
"preview": "// Copyright (C) MongoDB, Inc. 2024-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
},
{
"path": "bson/raw_array_test.go",
"chars": 10492,
"preview": "// Copyright (C) MongoDB, Inc. 2024-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
},
{
"path": "bson/raw_element.go",
"chars": 2012,
"preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
},
{
"path": "bson/raw_test.go",
"chars": 15163,
"preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
},
{
"path": "bson/raw_value.go",
"chars": 12623,
"preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
},
{
"path": "bson/raw_value_test.go",
"chars": 5418,
"preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
},
{
"path": "bson/reader.go",
"chars": 1644,
"preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
},
{
"path": "bson/registry.go",
"chars": 15226,
"preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
},
{
"path": "bson/registry_examples_test.go",
"chars": 8231,
"preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
},
{
"path": "bson/registry_test.go",
"chars": 17104,
"preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
},
{
"path": "bson/slice_codec.go",
"chars": 4497,
"preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
},
{
"path": "bson/streaming_byte_src.go",
"chars": 3164,
"preview": "// Copyright (C) MongoDB, Inc. 2025-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
},
{
"path": "bson/string_codec.go",
"chars": 2933,
"preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
},
{
"path": "bson/struct_codec.go",
"chars": 18854,
"preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
},
{
"path": "bson/struct_codec_test.go",
"chars": 3795,
"preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
},
{
"path": "bson/struct_tag_parser.go",
"chars": 3710,
"preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
},
{
"path": "bson/struct_tag_parser_test.go",
"chars": 5257,
"preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
},
{
"path": "bson/testdata/fuzz/FuzzDecode/002ae7d43f636100116fede772a03d07726ed75c3c3b83da865fe9b718adf8ae",
"chars": 85,
"preview": "go test fuzz v1\n[]byte(\"\\x10\\x00\\x00\\x00\\v\\x00\\x00\\x00\\b\\x00\\x00\\v\\x00\\x00\\x00\\x00\")\n"
},
{
"path": "bson/testdata/fuzz/FuzzDecode/0de854041b0055ca1e5e6e54a7fb667ed38461db171af267665c21776f9a9ef4",
"chars": 101,
"preview": "go test fuzz v1\n[]byte(\"0\\\\x00\\\\x00\\\\x00\\\\x0f\\\\x00000\\\\x8a00000000000000000000000000000000000000\\n\")\n"
},
{
"path": "bson/testdata/fuzz/FuzzDecode/718592474a0a3626039f3471449b9aa374c746754d4925fcfe4ba747e7101504",
"chars": 453,
"preview": "go test fuzz v1\n[]byte(\"\\\\x80\\\\x00\\\\x00\\\\x00\\\\x03000000\\\\x00s\\\\x00\\\\x00\\\\x00\\\\x0300000\\\\x00g\\\\x00\\\\x00\\\\x00\\\\x100z\\\\x000"
},
{
"path": "bson/testdata/fuzz/FuzzDecode/93c43e3c1cf35c19b7618a618d128cea0ce05cef0711fdd91e403fe3b2f45628",
"chars": 1751,
"preview": "go test fuzz v1\n[]byte(\"\\\\x59\\\\x01\\\\x00\\\\x00\\\\x01\\\\x64\\\\x6f\\\\x75\\\\x62\\\\x6c\\\\x65\\\\x00\\\\x9a\\\\x99\\\\x99\\\\x99\\\\x99\\\\x99\\\\xf1\\"
},
{
"path": "bson/testdata/fuzz/FuzzDecode/c3ffbb42eb85b743ede396f00b7706e6ad0529c32689c63ca663dae37d072627",
"chars": 54,
"preview": "go test fuzz v1\n[]byte(\"\\\\x05\\\\xf0\\\\xff\\\\x00\\\\x7f\\n\")\n"
},
{
"path": "bson/testdata/lorem.txt",
"chars": 10037,
"preview": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc hendrerit nibh eu lorem scelerisque iaculis. Mauris tincid"
},
{
"path": "bson/time_codec.go",
"chars": 2999,
"preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
},
{
"path": "bson/time_codec_test.go",
"chars": 2663,
"preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
},
{
"path": "bson/truncation_test.go",
"chars": 1895,
"preview": "// Copyright (C) MongoDB, Inc. 2022-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
},
{
"path": "bson/type_test.go",
"chars": 1567,
"preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
},
{
"path": "bson/types.go",
"chars": 3989,
"preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
},
{
"path": "bson/uint_codec.go",
"chars": 4456,
"preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
},
{
"path": "bson/unmarshal.go",
"chars": 3377,
"preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
},
{
"path": "bson/unmarshal_test.go",
"chars": 21746,
"preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
},
{
"path": "bson/unmarshal_value_test.go",
"chars": 2578,
"preview": "// Copyright (C) MongoDB, Inc. 2023-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
},
{
"path": "bson/unmarshaling_cases_test.go",
"chars": 10510,
"preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
},
{
"path": "bson/value_reader.go",
"chars": 22790,
"preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
},
{
"path": "bson/value_reader_test.go",
"chars": 66553,
"preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
},
{
"path": "bson/value_reader_writer_test.go",
"chars": 14203,
"preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
},
{
"path": "bson/value_writer.go",
"chars": 13826,
"preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
},
{
"path": "bson/value_writer_test.go",
"chars": 10780,
"preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
},
{
"path": "bson/vector.go",
"chars": 6436,
"preview": "// Copyright (C) MongoDB, Inc. 2024-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
},
{
"path": "bson/writer.go",
"chars": 2048,
"preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
},
{
"path": "docs/CODEOWNERS",
"chars": 18,
"preview": "* @mongodb/dbx-go\n"
},
{
"path": "docs/CONTRIBUTING.md",
"chars": 15381,
"preview": "# Contributing to the MongoDB Go Driver\n\nThank you for your interest in contributing to the MongoDB Go Driver!\n\nWe are b"
},
{
"path": "docs/SECURITY.md",
"chars": 555,
"preview": "# Security Policy\n\n## Supported Versions\n\nWe support the latest released version of the MongoDB Go Driver. Please ensure"
},
{
"path": "docs/common-issues.md",
"chars": 3885,
"preview": "# Frequently Encountered Issues\n\nThese are fixes or information for common issues encountered by Go Driver users. If non"
},
{
"path": "docs/migration-2.0.md",
"chars": 35820,
"preview": "# Migrating from 1.x to 2.0\n\nTo upgrade imports of the Go Driver from v1 to v2, we recommend using [marwan-at-work/mod\n]"
},
{
"path": "docs/pull_request_template.md",
"chars": 218,
"preview": "<!--- If applicable, issue number goes here, e.g. GODRIVER-ABCD -->\n\n## Summary\n\n<!--- A summary of the changes proposed"
},
{
"path": "etc/api_report.sh",
"chars": 862,
"preview": "#!/usr/bin/env bash\n# api-report\n# Generates a report of Go Driver API changes for the current branch.\nset -eux\n\n# Skip "
},
{
"path": "etc/check_fmt.sh",
"chars": 1299,
"preview": "#!/usr/bin/env bash\n# check_fmt\n# Runs gofumpt on all packages in the repo and checks that *_example_test.go files have "
},
{
"path": "etc/check_license.sh",
"chars": 1949,
"preview": "#!/usr/bin/env bash\n\nyear=$(date +\"%Y\")\ncopyright=$\"// Copyright (C) MongoDB, Inc. $year-present.\n//\n// Licensed under t"
},
{
"path": "etc/check_modules.sh",
"chars": 633,
"preview": "#!/usr/bin/env bash\n# check-modules runs \"go mod tidy\" on each module and exits with a non-zero exit code if there\n# are"
},
{
"path": "etc/cherry-picker.sh",
"chars": 1947,
"preview": "#!/bin/bash\nset -e\n\nsha=$1\ntarget=${2:-v1}\ndirname=$(mktemp -d)\nuser=$(git config github.user)\n\nif [ -z \"$user\" ]; then\n"
},
{
"path": "etc/docker_entry.sh",
"chars": 263,
"preview": "#!/usr/bin/env bash\n#\n# Entry point for Dockerfile for running a go test.\n#\nset -eux\n\n# Prep files.\ncd /src\nrm -f test.s"
},
{
"path": "etc/gen-ec-certs/client.ext",
"chars": 106,
"preview": "basicConstraints = CA: FALSE\nsubjectAltName = DNS: localhost, IP: 127.0.0.1\nextendedKeyUsage = clientAuth\n"
},
{
"path": "etc/gen-ec-certs/empty.cnf",
"chars": 176,
"preview": "# A nearly empty OpenSSL CA configuration file.\n# `openssl req` complains without a configuration file.\n[ req ]\ndistingu"
},
{
"path": "etc/gen-ec-certs/gen-ec-certs.sh",
"chars": 2272,
"preview": "#!/usr/bin/env bash\n# This script is used to generate Elliptic Curve (EC) certificates.\n# The EC certificates are used f"
},
{
"path": "etc/gen-ec-certs/server.ext",
"chars": 106,
"preview": "basicConstraints = CA: FALSE\nsubjectAltName = DNS: localhost, IP: 127.0.0.1\nextendedKeyUsage = serverAuth\n"
},
{
"path": "etc/generate_notices.pl",
"chars": 14538,
"preview": "#!/usr/bin/env perl\nuse v5.10;\nuse strict;\nuse warnings;\nuse utf8;\nuse open qw/:std :utf8/;\nuse File::Find qw/find/;\n\nmy"
},
{
"path": "etc/golangci-lint.sh",
"chars": 705,
"preview": "#!/usr/bin/env bash\nset -ex\n\n# Keep this in sync with go version used in static-analysis Evergreen build variant.\nGO_VER"
},
{
"path": "etc/govulncheck.sh",
"chars": 863,
"preview": "#!/usr/bin/env bash\nset -ex\n\n# Use a specific Go version so that local govulncheck results are consistent\n# with CI resu"
},
{
"path": "etc/install-libmongocrypt.sh",
"chars": 1248,
"preview": "#!/usr/bin/env bash\n# install libmongocrypt\n# This script installs libmongocrypt into an \"install\" directory.\nset -eux\n\n"
},
{
"path": "etc/perf-pr-comment.sh",
"chars": 698,
"preview": "#!/usr/bin/env bash\n# perf-pr-comment\n# Generates a report of Go Driver perf changes for the current branch.\n\nset -eux\n\n"
},
{
"path": "etc/pr-task.sh",
"chars": 804,
"preview": "#!/usr/bin/env bash\nset -eu\n\nVARLIST=(\n\tPR_TASK\n\tCOMMIT\n\tDRIVERS_TOOLS\n)\n\n# Ensure that all variables required to run th"
},
{
"path": "etc/profile-test.sh",
"chars": 975,
"preview": "#!/usr/bin/env bash\n# Convenience wrapper for profiling and tracing Go tests.\nset -eu\n\n# Create a temporary file to stor"
},
{
"path": "etc/run-awskms-test.sh",
"chars": 705,
"preview": "#!/usr/bin/env bash\n# run-awskms-test\n# Runs the awskms test.\nset -eu\n\nGO_BUILD_TAGS=\"cse\" task setup-test\ntask build-km"
},
{
"path": "etc/run-azurekms-test.sh",
"chars": 1269,
"preview": "#!/usr/bin/env bash\n# run-gcpkms-test\n# Runs gcpkms tests.\nset -eu\n\nGO_BUILD_TAGS=\"cse\" task setup-test\ntask build-kms-t"
},
{
"path": "etc/run-compile-check-test.sh",
"chars": 250,
"preview": "#!/usr/bin/env bash\n# run-compile-check-test\n# Run compile check tests for all supported Go versions.\nset -eu\nset +x\n\nec"
},
{
"path": "etc/run-fuzz.sh",
"chars": 2660,
"preview": "#!/bin/bash\n\nset -o errexit # Exit the script with error if any of the commands fail\n\n# Default fuzztime to 10m.\nFUZZTI"
},
{
"path": "etc/run-gcpkms-test.sh",
"chars": 1009,
"preview": "#!/usr/bin/env bash\n# run-gcpkms-test\n# Runs gcpkms tests.\nset -eu\n\nGO_BUILD_TAGS=\"cse\" task setup-test\ntask build-kms-t"
},
{
"path": "etc/run-goleak-test.sh",
"chars": 190,
"preview": "#!/usr/bin/env bash\n# run-goleak-test\n# Run goroutine leak tests.\nset -eu\nset +x\n\necho \"Running internal/test/goleak\"\npu"
},
{
"path": "etc/run-mongodb-aws-ecs-test.sh",
"chars": 616,
"preview": "#!/bin/bash\nset -eu\n\nif [ \"${SKIP_ECS_AUTH_TEST:-}\" = \"true\" ]; then\n echo \"This platform does not support the ECS auth"
},
{
"path": "etc/run-mongodb-aws-test.sh",
"chars": 1186,
"preview": "#!/bin/bash\n\nset -eu\n\n############################################\n# Main Program #\n########"
},
{
"path": "etc/run-oidc-remote-test.sh",
"chars": 2026,
"preview": "#!/usr/bin/env bash\n# run-oidc-test\n# Runs oidc auth tests.\nset -eu\n\necho \"Running remote MONGODB-OIDC authentication te"
},
{
"path": "etc/run-oidc-test.sh",
"chars": 1315,
"preview": "#!/usr/bin/env bash\n# run-oidc-test\n# Runs oidc auth tests.\nset -eu\n\necho \"Running MONGODB-OIDC authentication tests\"\n\nO"
},
{
"path": "etc/run_docker.sh",
"chars": 677,
"preview": "#!/usr/bin/env bash\n#\n# Script to run a test suite in docker locally\nset -eux\n\nif [ -z \"$DRIVERS_TOOLS\" ]; then\n echo"
},
{
"path": "etc/setup-encryption.sh",
"chars": 655,
"preview": "#!/usr/bin/env bash\n#\n# Script to set up encryption assets and servers.\nset -eux\n\nif [ -z \"$DRIVERS_TOOLS\" ]; then\n e"
},
{
"path": "etc/setup-test.sh",
"chars": 5604,
"preview": "#!/usr/bin/env bash\n#\n# Set up test environment and write .test.env file.\nset -eu\n\nOS=${OS:-\"\"}\nSSL=${SSL:-nossl}\nGO_BUI"
},
{
"path": "etc/update_spec_tests.sh",
"chars": 824,
"preview": "#!/usr/bin/env bash\n# update_spec_tests spec\n# This script is used to fetch the latest tests for the given spec. It puts"
},
{
"path": "event/description.go",
"chars": 2076,
"preview": "// Copyright (C) MongoDB, Inc. 2024-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
},
{
"path": "event/doc.go",
"chars": 2567,
"preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
},
{
"path": "event/examples_test.go",
"chars": 1796,
"preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
},
{
"path": "event/monitoring.go",
"chars": 7800,
"preview": "// Copyright (C) MongoDB, Inc. 2017-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
},
{
"path": "examples/_example_customdns_test.go",
"chars": 3095,
"preview": "// Copyright (C) MongoDB, Inc. 2022-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
},
{
"path": "examples/_example_overload_error_test.go",
"chars": 3405,
"preview": "// Copyright (C) MongoDB, Inc. 2022-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
},
{
"path": "examples/_logger/logrus/go.mod",
"chars": 732,
"preview": "module go.mongodb.go/mongo-driver/v2/examples/logger/logrus\n\ngo 1.25\n\nreplace go.mongodb.org/mongo-driver/v2 => ../../.."
},
{
"path": "examples/_logger/logrus/go.sum",
"chars": 5915,
"preview": "github.com/bombsimon/logrusr/v4 v4.0.0 h1:Pm0InGphX0wMhPqC02t31onlq9OVyJ98eP/Vh63t1Oo=\ngithub.com/bombsimon/logrusr/v4 v"
},
{
"path": "examples/_logger/logrus/main.go",
"chars": 1463,
"preview": "// Copyright (C) MongoDB, Inc. 2023-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
},
{
"path": "examples/_logger/zap/go.mod",
"chars": 753,
"preview": "module go.mongodb.go/mongo-driver/v2/examples/logger/zap\n\ngo 1.25\n\nreplace go.mongodb.org/mongo-driver/v2 => ../../../\n\n"
},
{
"path": "examples/_logger/zap/go.sum",
"chars": 7901,
"preview": "github.com/benbjohnson/clock v1.1.0 h1:Q92kusRqC1XV2MjkWETPvjJVqKetz1OzxZB7mHJLju8=\ngithub.com/benbjohnson/clock v1.1.0/"
},
{
"path": "examples/_logger/zap/main.go",
"chars": 1390,
"preview": "// Copyright (C) MongoDB, Inc. 2023-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
},
{
"path": "examples/_logger/zerolog/go.mod",
"chars": 824,
"preview": "module go.mongodb.go/mongo-driver/v2/examples/logger/zerolog\n\ngo 1.25\n\nreplace go.mongodb.org/mongo-driver/v2 => ../../."
},
{
"path": "examples/_logger/zerolog/go.sum",
"chars": 5754,
"preview": "github.com/coreos/go-systemd/v22 v22.3.3-0.20220203105225-a9a7ef127534/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2G"
},
{
"path": "examples/_logger/zerolog/main.go",
"chars": 1370,
"preview": "// Copyright (C) MongoDB, Inc. 2023-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
},
{
"path": "go.mod",
"chars": 533,
"preview": "module go.mongodb.org/mongo-driver/v2\n\ngo 1.19\n\nrequire (\n\tgithub.com/davecgh/go-spew v1.1.1\n\tgithub.com/google/go-cmp v"
},
{
"path": "go.sum",
"chars": 4156,
"preview": "github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=\ngithub.com/davecgh/go-spew v1.1.1/go.m"
},
{
"path": "go.work",
"chars": 220,
"preview": "go 1.25.0\n\nuse (\n\t.\n\t./examples/_logger/logrus\n\t./examples/_logger/zap\n\t./examples/_logger/zerolog\n\t./internal/cmd/bench"
},
{
"path": "internal/assert/assertbson/assertbson.go",
"chars": 1492,
"preview": "// Copyright (C) MongoDB, Inc. 2025-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
},
{
"path": "internal/assert/assertbson/assertbson_test.go",
"chars": 5324,
"preview": "// Copyright (C) MongoDB, Inc. 2025-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
},
{
"path": "internal/assert/assertion_compare.go",
"chars": 12213,
"preview": "// Copied from https://github.com/stretchr/testify/blob/1333b5d3bda8cf5aedcf3e1aaa95cac28aaab892/assert/assertion_compar"
},
{
"path": "internal/assert/assertion_compare_can_convert.go",
"chars": 577,
"preview": "// Copied from https://github.com/stretchr/testify/blob/1333b5d3bda8cf5aedcf3e1aaa95cac28aaab892/assert/assertion_compar"
},
{
"path": "internal/assert/assertion_compare_go1.17_test.go",
"chars": 5619,
"preview": "// Copied from https://github.com/stretchr/testify/blob/1333b5d3bda8cf5aedcf3e1aaa95cac28aaab892/assert/assertion_compar"
},
{
"path": "internal/assert/assertion_compare_legacy.go",
"chars": 563,
"preview": "// Copied from https://github.com/stretchr/testify/blob/1333b5d3bda8cf5aedcf3e1aaa95cac28aaab892/assert/assertion_compar"
},
{
"path": "internal/assert/assertion_compare_test.go",
"chars": 15884,
"preview": "// Copied from https://github.com/stretchr/testify/blob/1333b5d3bda8cf5aedcf3e1aaa95cac28aaab892/assert/assertion_compar"
},
{
"path": "internal/assert/assertion_format.go",
"chars": 12642,
"preview": "// Copied from https://github.com/stretchr/testify/blob/1333b5d3bda8cf5aedcf3e1aaa95cac28aaab892/assert/assertion_format"
},
{
"path": "internal/assert/assertion_mongo.go",
"chars": 2683,
"preview": "// Copyright (C) MongoDB, Inc. 2023-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
},
{
"path": "internal/assert/assertion_mongo_test.go",
"chars": 1377,
"preview": "// Copyright (C) MongoDB, Inc. 2023-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
},
{
"path": "internal/assert/assertions.go",
"chars": 29772,
"preview": "// Copied from https://github.com/stretchr/testify/blob/1333b5d3bda8cf5aedcf3e1aaa95cac28aaab892/assert/assertions.go\n//"
},
{
"path": "internal/assert/assertions_test.go",
"chars": 31653,
"preview": "// Copied from https://github.com/stretchr/testify/blob/1333b5d3bda8cf5aedcf3e1aaa95cac28aaab892/assert/assertions_test."
},
{
"path": "internal/assert/difflib.go",
"chars": 22867,
"preview": "// Copied from https://github.com/pmezard/go-difflib/blob/5d4384ee4fb2527b0a1256a821ebfc92f91efefc/difflib/difflib.go\n\n/"
},
{
"path": "internal/assert/difflib_test.go",
"chars": 8917,
"preview": "// Copied from https://github.com/pmezard/go-difflib/blob/5d4384ee4fb2527b0a1256a821ebfc92f91efefc/difflib/difflib_test."
},
{
"path": "internal/aws/awserr/error.go",
"chars": 2076,
"preview": "// Copyright (C) MongoDB, Inc. 2023-present.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you m"
}
]
// ... and 545 more files (download for full content)
About this extraction
This page contains the full source code of the mongodb/mongo-go-driver GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 745 files (6.4 MB), approximately 1.7M tokens, and a symbol index with 7568 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.