Skip to content

Commit 4de2262

Browse files
committed
chore: fix unit tests
1 parent 677ed2b commit 4de2262

8 files changed

+31
-36
lines changed

common/lib/database_dialect/database_dialect.ts

-1
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,6 @@ export interface DatabaseDialect {
3333
getServerVersionQuery(): string;
3434
getDialectUpdateCandidates(): string[];
3535
isDialect(targetClient: ClientWrapper): Promise<boolean>;
36-
getAwsPoolClient(props: any): AwsPoolClient;
3736
getHostListProvider(props: Map<string, any>, originalUrl: string, hostListProviderService: HostListProviderService): HostListProvider;
3837
isClientValid(targetClient: ClientWrapper): Promise<boolean>;
3938
getDatabaseType(): DatabaseType;

common/lib/driver_dialect/driver_dialect.ts

+2
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616

1717
import { ClientWrapper } from "../client_wrapper";
1818
import { AwsPoolConfig } from "../aws_pool_config";
19+
import { AwsPoolClient } from "../aws_pool_client";
1920

2021
export interface DriverDialect {
2122
getDialectName(): string;
@@ -24,4 +25,5 @@ export interface DriverDialect {
2425
connect(targetClient: any): Promise<any>;
2526
end(targetClient: ClientWrapper | undefined): Promise<void>;
2627
preparePoolClientProperties(props: Map<string, any>, poolConfig: AwsPoolConfig | undefined): any;
28+
getAwsPoolClient(props: any): AwsPoolClient;
2729
}

common/lib/internal_pooled_connection_provider.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ export class InternalPooledConnectionProvider implements PooledConnectionProvide
104104
}
105105
}
106106

107-
const dialect = pluginService.getDialect();
107+
const dialect = pluginService.getDriverDialect();
108108
const preparedConfig = dialect.preparePoolClientProperties(props, this._poolConfig);
109109

110110
this.internalPool = this.databasePools.computeIfAbsent(

mysql/lib/dialect/mysql2_driver_dialect.ts

+6
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@ import { ClientUtils } from "../../../common/lib/utils/client_utils";
2020
import { createConnection, PoolOptions } from "mysql2/promise";
2121
import { WrapperProperties } from "../../../common/lib/wrapper_property";
2222
import { AwsPoolConfig } from "../../../common/lib/aws_pool_config";
23+
import { AwsPoolClient } from "../../../common/lib/aws_pool_client";
24+
import { AwsMysqlPoolClient } from "../mysql_pool_client";
2325

2426
export class MySQL2DriverDialect implements DriverDialect {
2527
protected dialectName: string = this.constructor.name;
@@ -57,4 +59,8 @@ export class MySQL2DriverDialect implements DriverDialect {
5759
finalPoolConfig.idleTimeout = poolConfig?.idleTimeoutMillis;
5860
return finalPoolConfig;
5961
}
62+
63+
getAwsPoolClient(props: PoolOptions): AwsPoolClient {
64+
return new AwsMysqlPoolClient(props);
65+
}
6066
}

mysql/lib/dialect/mysql_database_dialect.ts

+3-10
Original file line numberDiff line numberDiff line change
@@ -17,18 +17,15 @@
1717
import { DatabaseDialect, DatabaseType } from "../../../common/lib/database_dialect/database_dialect";
1818
import { HostListProviderService } from "../../../common/lib/host_list_provider_service";
1919
import { HostListProvider } from "../../../common/lib/host_list_provider/host_list_provider";
20-
import { ConnectionStringHostListProvider } from "../../../common/lib/host_list_provider/connection_string_host_list_provider";
20+
import {
21+
ConnectionStringHostListProvider
22+
} from "../../../common/lib/host_list_provider/connection_string_host_list_provider";
2123
import { AwsWrapperError } from "../../../common/lib/utils/errors";
2224
import { DatabaseDialectCodes } from "../../../common/lib/database_dialect/database_dialect_codes";
2325
import { TransactionIsolationLevel } from "../../../common/lib/utils/transaction_isolation_level";
2426
import { ClientWrapper } from "../../../common/lib/client_wrapper";
2527
import { ClientUtils } from "../../../common/lib/utils/client_utils";
2628
import { FailoverRestriction } from "../../../common/lib/plugins/failover/failover_restriction";
27-
import { AwsPoolClient } from "../../../common/lib/aws_pool_client";
28-
import { AwsMysqlPoolClient } from "../mysql_pool_client";
29-
import { AwsPoolConfig } from "../../../common/lib/aws_pool_config";
30-
import { WrapperProperties } from "../../../common/lib/wrapper_property";
31-
import { PoolOptions } from "mysql2/promise";
3229

3330
export class MySQLDatabaseDialect implements DatabaseDialect {
3431
protected dialectName: string = this.constructor.name;
@@ -73,10 +70,6 @@ export class MySQLDatabaseDialect implements DatabaseDialect {
7370
});
7471
}
7572

76-
getAwsPoolClient(props: PoolOptions): AwsPoolClient {
77-
return new AwsMysqlPoolClient(props);
78-
}
79-
8073
getHostListProvider(props: Map<string, any>, originalUrl: string, hostListProviderService: HostListProviderService): HostListProvider {
8174
return new ConnectionStringHostListProvider(props, originalUrl, this.getDefaultPort(), hostListProviderService);
8275
}

pg/lib/dialect/node_postgres_driver_dialect.ts

+6
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@ import { ClientWrapper } from "../../../common/lib/client_wrapper";
1919
import { Client, PoolConfig } from "pg";
2020
import { WrapperProperties } from "../../../common/lib/wrapper_property";
2121
import { AwsPoolConfig } from "../../../common/lib/aws_pool_config";
22+
import { AwsPoolClient } from "../../../common/lib/aws_pool_client";
23+
import { AwsPgPoolClient } from "../pg_pool_client";
2224

2325
export class NodePostgresDriverDialect implements DriverDialect {
2426
protected dialectName: string = this.constructor.name;
@@ -58,4 +60,8 @@ export class NodePostgresDriverDialect implements DriverDialect {
5860
finalPoolConfig.allowExitOnIdle = poolConfig?.allowExitOnIdle;
5961
return finalPoolConfig;
6062
}
63+
64+
getAwsPoolClient(props: PoolConfig): AwsPoolClient {
65+
return new AwsPgPoolClient(props);
66+
}
6167
}

pg/lib/dialect/pg_database_dialect.ts

+3-11
Original file line numberDiff line numberDiff line change
@@ -17,18 +17,14 @@
1717
import { DatabaseDialect, DatabaseType } from "../../../common/lib/database_dialect/database_dialect";
1818
import { HostListProviderService } from "../../../common/lib/host_list_provider_service";
1919
import { HostListProvider } from "../../../common/lib/host_list_provider/host_list_provider";
20-
import { ConnectionStringHostListProvider } from "../../../common/lib/host_list_provider/connection_string_host_list_provider";
20+
import {
21+
ConnectionStringHostListProvider
22+
} from "../../../common/lib/host_list_provider/connection_string_host_list_provider";
2123
import { AwsWrapperError } from "../../../common/lib/utils/errors";
2224
import { DatabaseDialectCodes } from "../../../common/lib/database_dialect/database_dialect_codes";
2325
import { TransactionIsolationLevel } from "../../../common/lib/utils/transaction_isolation_level";
2426
import { ClientWrapper } from "../../../common/lib/client_wrapper";
2527
import { FailoverRestriction } from "../../../common/lib/plugins/failover/failover_restriction";
26-
import { AwsPoolClient } from "../../../common/lib/aws_pool_client";
27-
import { AwsMysqlPoolClient } from "../../../mysql/lib/mysql_pool_client";
28-
import { AwsPgPoolClient } from "../pg_pool_client";
29-
import { AwsPoolConfig } from "../../../common/lib/aws_pool_config";
30-
import { PoolClient, PoolConfig } from "pg";
31-
import { WrapperProperties } from "../../../common/lib/wrapper_property";
3228

3329
export class PgDatabaseDialect implements DatabaseDialect {
3430
protected dialectName: string = this.constructor.name;
@@ -72,10 +68,6 @@ export class PgDatabaseDialect implements DatabaseDialect {
7268
});
7369
}
7470

75-
getAwsPoolClient(props: PoolConfig): AwsPoolClient {
76-
return new AwsPgPoolClient(props);
77-
}
78-
7971
getHostListProvider(props: Map<string, any>, originalUrl: string, hostListProviderService: HostListProviderService): HostListProvider {
8072
return new ConnectionStringHostListProvider(props, originalUrl, this.getDefaultPort(), hostListProviderService);
8173
}

tests/unit/internal_pool_connection_provider.test.ts

+10-13
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ import { AwsMysqlPoolClient } from "../../mysql/lib/mysql_pool_client";
3434
import { PoolKey } from "../../common/lib/utils/pool_key";
3535
import { InternalPoolMapping } from "../../common/lib/utils/internal_pool_mapping";
3636
import { SlidingExpirationCache } from "../../common/lib/utils/sliding_expiration_cache";
37+
import { MySQL2DriverDialect } from "../../mysql/lib/dialect/mysql2_driver_dialect";
3738

3839
const internalPoolWithOneConnection = mock(AwsMysqlPoolClient);
3940
const user1 = "user1";
@@ -67,6 +68,7 @@ const mockHostListProvider: HostListProvider = mock<HostListProvider>();
6768
const mockClosedReaderClient: AwsClient = mock(AwsMySQLClient);
6869
const mockClosedWriterClient: AwsClient = mock(AwsMySQLClient);
6970
const mockDialect: MySQLDatabaseDialect = mock(MySQLDatabaseDialect);
71+
const mockDriverDialect: MySQL2DriverDialect = mock(MySQL2DriverDialect);
7072
const mockPoolConnection = mock(AwsMysqlPoolClient);
7173
const mockAwsPoolClient = mock(AwsMysqlPoolClient);
7274
const mockRdsUtils = mock(RdsUtils);
@@ -78,6 +80,9 @@ describe("reader write splitting test", () => {
7880
when(mockPluginService.getHostListProvider()).thenReturn(instance(mockHostListProvider));
7981
when(mockPluginService.getHosts()).thenReturn(defaultHosts);
8082
when(mockPluginService.isInTransaction()).thenReturn(false);
83+
when(mockPluginService.getDialect()).thenReturn(instance(mockDialect));
84+
when(mockPluginService.getDriverDialect()).thenReturn(instance(mockDriverDialect));
85+
when(mockDriverDialect.getAwsPoolClient(anything())).thenReturn(mockAwsPoolClient);
8186
props.clear();
8287
});
8388

@@ -106,14 +111,12 @@ describe("reader write splitting test", () => {
106111
when(mockRdsUtils.isRdsDns(anything())).thenReturn(null);
107112
when(mockRdsUtils.isGreenInstance(anything())).thenReturn(null);
108113
when(mockRdsUtils.isRdsInstance("instance1")).thenReturn(true);
109-
when(mockPluginService.getDialect()).thenReturn(mockDialect);
110-
when(mockDialect.getAwsPoolClient(anything())).thenReturn(mockAwsPoolClient);
111114
const config = {
112115
maxConnection: 10,
113116
idleTimeoutMillis: 10000,
114117
connectionTimeoutMillis: 10000
115118
};
116-
when(mockDialect.preparePoolClientProperties(anything(), anything())).thenReturn(config);
119+
when(mockDriverDialect.preparePoolClientProperties(anything(), anything())).thenReturn(config);
117120
const poolConfig: AwsPoolConfig = new AwsPoolConfig(config);
118121

119122
const provider = spy(new InternalPooledConnectionProvider(poolConfig));
@@ -146,7 +149,6 @@ describe("reader write splitting test", () => {
146149
when(mockRdsUtils.isGreenInstance(anything())).thenReturn(null);
147150
when(mockRdsUtils.isRdsInstance("instance1")).thenReturn(true);
148151
when(mockPluginService.getDialect()).thenReturn(mockDialect);
149-
when(mockDialect.getAwsPoolClient(anything())).thenReturn(mockAwsPoolClient);
150152
const config = {
151153
maxConnection: 10,
152154
idleTimeoutMillis: 10000,
@@ -157,7 +159,7 @@ describe("reader write splitting test", () => {
157159
return hostInfo.url + "someKey";
158160
}
159161
};
160-
when(mockDialect.preparePoolClientProperties(anything(), anything())).thenReturn(config);
162+
when(mockDriverDialect.preparePoolClientProperties(anything(), anything())).thenReturn(config);
161163
const poolConfig: AwsPoolConfig = new AwsPoolConfig(config);
162164

163165
const provider = spy(new InternalPooledConnectionProvider(poolConfig, myKeyFunc));
@@ -197,19 +199,14 @@ describe("reader write splitting test", () => {
197199
when(mockRdsUtils.isRdsDns(anything())).thenReturn(null);
198200
when(mockRdsUtils.isGreenInstance(anything())).thenReturn(null);
199201
when(mockRdsUtils.isRdsInstance("instance1")).thenReturn(true);
200-
when(mockDialect.preparePoolClientProperties(anything(), anything())).thenReturn(props);
201-
when(mockDialect.getAwsPoolClient(anything())).thenThrow(new Error("testError"));
202+
when(mockDriverDialect.preparePoolClientProperties(anything(), anything())).thenReturn(props);
203+
when(mockDriverDialect.getAwsPoolClient(anything())).thenThrow(new Error("testError"));
202204

203205
const provider = spy(new InternalPooledConnectionProvider(poolConfig));
204206
const providerSpy = instance(provider);
205207
when(await provider.getPoolConnection()).thenReturn(mockPoolConnection);
206208

207-
try {
208-
await providerSpy.connect(hostInfo, mockPluginServiceInstance, props);
209-
throw new Error("did not catch error");
210-
} catch (error: any) {
211-
expect(error.message).toEqual("testError");
212-
}
209+
await expect(providerSpy.connect(hostInfo, mockPluginServiceInstance, props)).rejects.toThrow("testError");
213210
await provider.releaseResources();
214211
ConnectionProviderManager.resetProvider();
215212
});

0 commit comments

Comments
 (0)