Skip to content

Commit

Permalink
Temp commit EOD, added in extendedMetadata client vars
Browse files Browse the repository at this point in the history
  • Loading branch information
aditi-khare-mongoDB committed Mar 5, 2024
1 parent a9ce7a8 commit bd37136
Show file tree
Hide file tree
Showing 10 changed files with 46 additions and 18 deletions.
3 changes: 1 addition & 2 deletions src/cmap/connect.ts
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,6 @@ import {
type ConnectionOptions,
CryptoConnection
} from './connection';
import { addContainerMetadata } from './handshake/client_metadata';
import {
MAX_SUPPORTED_SERVER_VERSION,
MAX_SUPPORTED_WIRE_VERSION,
Expand Down Expand Up @@ -200,7 +199,7 @@ export async function prepareHandshakeDocument(
const options = authContext.options;
const compressors = options.compressors ? options.compressors : [];
const { serverApi } = authContext.connection;
const clientMetadata = await addContainerMetadata(options.metadata);
const clientMetadata = await options.extendedMetadata;

const handshakeDoc: HandshakeDocument = {
[serverApi?.version || options.loadBalanced === true ? 'hello' : LEGACY_HELLO_COMMAND]: 1,
Expand Down
2 changes: 2 additions & 0 deletions src/cmap/connection.ts
Original file line number Diff line number Diff line change
Expand Up @@ -119,6 +119,8 @@ export interface ConnectionOptions
cancellationToken?: CancellationToken;
metadata: ClientMetadata;
/** @internal */
extendedMetadata: Promise<Document>;
/** @internal */
mongoLogger?: MongoLogger | undefined;
}

Expand Down
3 changes: 2 additions & 1 deletion src/cmap/connection_pool.ts
Original file line number Diff line number Diff line change
Expand Up @@ -234,7 +234,8 @@ export class ConnectionPool extends TypedEventEmitter<ConnectionPoolEvents> {
waitQueueTimeoutMS: options.waitQueueTimeoutMS ?? 0,
minPoolSizeCheckFrequencyMS: options.minPoolSizeCheckFrequencyMS ?? 100,
autoEncrypter: options.autoEncrypter,
metadata: options.metadata
metadata: options.metadata,
extendedMetadata: options.extendedMetadata
});

if (this.options.minPoolSize > this.options.maxPoolSize) {
Expand Down
3 changes: 2 additions & 1 deletion src/connection_string.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import { URLSearchParams } from 'url';
import type { Document } from './bson';
import { MongoCredentials } from './cmap/auth/mongo_credentials';
import { AUTH_MECHS_AUTH_SRC_EXTERNAL, AuthMechanism } from './cmap/auth/providers';
import { makeClientMetadata } from './cmap/handshake/client_metadata';
import { addContainerMetadata, makeClientMetadata } from './cmap/handshake/client_metadata';
import { Compressor, type CompressorName } from './cmap/wire_protocol/compression';
import { Encrypter } from './encrypter';
import {
Expand Down Expand Up @@ -544,6 +544,7 @@ export function parseOptions(
);

mongoOptions.metadata = makeClientMetadata(mongoOptions);
mongoOptions.extendedMetadata = addContainerMetadata(mongoOptions.metadata);

return mongoOptions;
}
Expand Down
2 changes: 2 additions & 0 deletions src/mongo_client.ts
Original file line number Diff line number Diff line change
Expand Up @@ -827,6 +827,8 @@ export interface MongoOptions
dbName: string;
metadata: ClientMetadata;
/** @internal */
extendedMetadata: Promise<Document>;
/** @internal */
autoEncrypter?: AutoEncrypter;
proxyHost?: string;
proxyPort?: number;
Expand Down
2 changes: 2 additions & 0 deletions src/sdam/topology.ts
Original file line number Diff line number Diff line change
Expand Up @@ -158,6 +158,8 @@ export interface TopologyOptions extends BSONSerializeOptions, ServerOptions {
directConnection: boolean;
loadBalanced: boolean;
metadata: ClientMetadata;
/** @internal */
extendedMetadata: Promise<Document>;
serverMonitoringMode: ServerMonitoringMode;
/** MongoDB server API version */
serverApi?: ServerApi;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import { expect } from 'chai';

import {
addContainerMetadata,
connect,
Connection,
type ConnectionOptions,
Expand Down Expand Up @@ -50,7 +51,8 @@ describe('Connection', function () {
...commonConnectOptions,
connectionType: Connection,
...this.configuration.options,
metadata: makeClientMetadata({ driverInfo: {} })
metadata: makeClientMetadata({ driverInfo: {} }),
extendedClientMetadata: addContainerMetadata(makeClientMetadata({ driverInfo: {} }))
};

let conn;
Expand All @@ -72,7 +74,8 @@ describe('Connection', function () {
connectionType: Connection,
...this.configuration.options,
monitorCommands: true,
metadata: makeClientMetadata({ driverInfo: {} })
metadata: makeClientMetadata({ driverInfo: {} }),
extendedClientMetadata: addContainerMetadata(makeClientMetadata({ driverInfo: {} }))
};

let conn;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ const INTERRUPT_IN_USE_SKIPPED_TESTS: SkipDescription[] = [
}
];

describe('Connection Monitoring and Pooling Spec Tests (Integration) - cmap-format', function () {
describe.only('Connection Monitoring and Pooling Spec Tests (Integration) - cmap-format', function () {
const tests: CmapTest[] = loadSpecTests('connection-monitoring-and-pooling', 'cmap-format');

runCmapTestSuite(tests, {
Expand Down
37 changes: 26 additions & 11 deletions test/unit/cmap/connect.test.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import { expect } from 'chai';

import {
addContainerMetadata,
CancellationToken,
type ClientMetadata,
connect,
Expand All @@ -23,6 +24,7 @@ const CONNECT_DEFAULTS = {
generation: 1,
monitorCommands: false,
metadata: {} as ClientMetadata,
extendedClientMetadata: addContainerMetadata({} as ClientMetadata),
loadBalanced: false
};

Expand Down Expand Up @@ -190,13 +192,17 @@ describe('Connect Tests', function () {
const cachedEnv = process.env;

context('when only kubernetes is present', () => {
const authContext = {
connection: {},
options: { ...CONNECT_DEFAULTS }
};
let authContext;

beforeEach(() => {
process.env.KUBERNETES_SERVICE_HOST = 'I exist';
authContext = {
connection: {},
options: {
...CONNECT_DEFAULTS,
extendedClientMetadata: addContainerMetadata({} as ClientMetadata)
}
};
});

afterEach(() => {
Expand All @@ -205,6 +211,7 @@ describe('Connect Tests', function () {
} else {
delete process.env.KUBERNETES_SERVICE_HOST;
}
authContext = {};
});

it(`should include { orchestrator: 'kubernetes'} in client.env.container`, async () => {
Expand All @@ -223,7 +230,10 @@ describe('Connect Tests', function () {
const longAppName = 's'.repeat(493);
const longAuthContext = {
connection: {},
options: { ...CONNECT_DEFAULTS, metadata: { appName: longAppName } }
options: {
...CONNECT_DEFAULTS,
extendedClientMetadata: addContainerMetadata({ appName: longAppName })
}
};
const handshakeDocument = await prepareHandshakeDocument(longAuthContext);
expect(handshakeDocument.client).to.not.have.property('env');
Expand All @@ -232,13 +242,17 @@ describe('Connect Tests', function () {
});

context('when kubernetes and FAAS are both present', () => {
const authContext = {
connection: {},
options: { ...CONNECT_DEFAULTS, metadata: { env: { name: 'aws.lambda' } } }
};
let authContext;

beforeEach(() => {
process.env.KUBERNETES_SERVICE_HOST = 'I exist';
authContext = {
connection: {},
options: {
...CONNECT_DEFAULTS,
extendedClientMetadata: addContainerMetadata({ env: { name: 'aws.lambda' } })
}
};
});

afterEach(() => {
Expand All @@ -247,6 +261,7 @@ describe('Connect Tests', function () {
} else {
delete process.env.KUBERNETES_SERVICE_HOST;
}
authContext = {};
});

it(`should include { orchestrator: 'kubernetes'} in client.env.container`, async () => {
Expand All @@ -267,10 +282,10 @@ describe('Connect Tests', function () {
connection: {},
options: {
...CONNECT_DEFAULTS,
metadata: {
extendedClientMetadata: {
appName: longAppName,
env: { name: 'aws.lambda' }
}
} as unknown as Promise<Document>
}
};
const handshakeDocument = await prepareHandshakeDocument(longAuthContext);
Expand Down
3 changes: 3 additions & 0 deletions test/unit/cmap/connection_pool.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,9 @@ describe('Connection Pool', function () {
},
s: {
authProviders: new MongoClientAuthProviders()
},
options: {
extendedClientMetadata: {}
}
}
}
Expand Down

0 comments on commit bd37136

Please sign in to comment.