...

Source file src/go.mongodb.org/mongo-driver/x/mongo/driver/integration/compressor_test.go

Documentation: go.mongodb.org/mongo-driver/x/mongo/driver/integration

     1  // Copyright (C) MongoDB, Inc. 2022-present.
     2  //
     3  // Licensed under the Apache License, Version 2.0 (the "License"); you may
     4  // not use this file except in compliance with the License. You may obtain
     5  // a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
     6  
     7  package integration
     8  
     9  import (
    10  	"context"
    11  	"os"
    12  	"testing"
    13  
    14  	"go.mongodb.org/mongo-driver/bson"
    15  	"go.mongodb.org/mongo-driver/internal/integtest"
    16  	"go.mongodb.org/mongo-driver/internal/require"
    17  	"go.mongodb.org/mongo-driver/mongo/writeconcern"
    18  	"go.mongodb.org/mongo-driver/x/bsonx/bsoncore"
    19  	"go.mongodb.org/mongo-driver/x/mongo/driver/operation"
    20  )
    21  
    22  func TestCompression(t *testing.T) {
    23  	comp := os.Getenv("MONGO_GO_DRIVER_COMPRESSOR")
    24  	if len(comp) == 0 {
    25  		t.Skip("Skipping because no compressor specified")
    26  	}
    27  
    28  	wc := writeconcern.New(writeconcern.WMajority())
    29  	collOne := integtest.ColName(t)
    30  
    31  	dropCollection(t, integtest.DBName(t), collOne)
    32  	insertDocs(t, integtest.DBName(t), collOne, wc,
    33  		bsoncore.BuildDocument(nil, bsoncore.AppendStringElement(nil, "name", "compression_test")),
    34  	)
    35  
    36  	cmd := operation.NewCommand(bsoncore.BuildDocument(nil, bsoncore.AppendInt32Element(nil, "serverStatus", 1))).
    37  		Deployment(integtest.Topology(t)).
    38  		Database(integtest.DBName(t))
    39  
    40  	ctx := context.Background()
    41  	err := cmd.Execute(ctx)
    42  	noerr(t, err)
    43  	result := cmd.Result()
    44  
    45  	serverVersion, err := result.LookupErr("version")
    46  	noerr(t, err)
    47  
    48  	if integtest.CompareVersions(t, serverVersion.StringValue(), "3.4") < 0 {
    49  		t.Skip("skipping compression test for version < 3.4")
    50  	}
    51  
    52  	networkVal, err := result.LookupErr("network")
    53  	noerr(t, err)
    54  
    55  	require.Equal(t, networkVal.Type, bson.TypeEmbeddedDocument)
    56  
    57  	compressionVal, err := networkVal.Document().LookupErr("compression")
    58  	noerr(t, err)
    59  
    60  	compressorDoc, err := compressionVal.Document().LookupErr(comp)
    61  	noerr(t, err)
    62  
    63  	compressorKey := "compressor"
    64  	compareTo36 := integtest.CompareVersions(t, serverVersion.StringValue(), "3.6")
    65  	if compareTo36 < 0 {
    66  		compressorKey = "compressed"
    67  	}
    68  	compressor, err := compressorDoc.Document().LookupErr(compressorKey)
    69  	noerr(t, err)
    70  
    71  	bytesIn, err := compressor.Document().LookupErr("bytesIn")
    72  	noerr(t, err)
    73  
    74  	require.True(t, bytesIn.IsNumber())
    75  	require.True(t, bytesIn.Int64() > 0)
    76  }
    77  

View as plain text