-
Notifications
You must be signed in to change notification settings - Fork 7
Expand file tree
/
Copy pathaws_dev_mysql_example.ts
More file actions
88 lines (70 loc) · 2.57 KB
/
aws_dev_mysql_example.ts
File metadata and controls
88 lines (70 loc) · 2.57 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
/*
Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
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.
*/
import { ErrorSimulatorManager, DeveloperConnectionPlugin, ErrorSimulator, ErrorSimulatorMethodCallback } from "../../index";
import { AwsMySQLClient } from "../../mysql";
const mySqlHost = "db-identifier.XYZ.us-east-2.rds.amazonaws.com";
const username = "john_smith";
const password = "password";
const database = "employees";
const port = 3306;
const errorToRaise = new Error("test");
const client = new AwsMySQLClient({
// Configure connection parameters.
host: mySqlHost,
port: port,
user: username,
password: password,
database: database,
plugins: "dev"
});
// Simulate an error while opening a new connection.
ErrorSimulatorManager.raiseErrorOnNextConnect(errorToRaise);
// Attempt connection. Throws errorToRaise.
try {
await client.connect();
} catch {
// Handle errorToRaise.
}
// Another connection. Goes normal with no error.
await client.connect();
// Simulate an error with already opened connection.
const simulator: ErrorSimulator = client.getPluginInstance<ErrorSimulator>(DeveloperConnectionPlugin);
simulator.raiseErrorOnNextCall(errorToRaise, "query");
// Query throws errorToRaise.
try {
const result = await client.query({ sql: "select 1" });
} catch {
// Handle errorToRaise.
}
// Query executes normally without error.
const anotherResult = await client.query({ sql: "select 1" });
// Check call parameters to decide whether to return an error or not.
class TestErrorCallback implements ErrorSimulatorMethodCallback {
getErrorToRaise<T>(methodName: string, methodArgs: any): Error | null {
if (methodName == "query" && methodArgs == "select 1") {
return errorToRaise;
}
return null;
}
}
simulator.setCallback(new TestErrorCallback());
// Queries that do not match the parameters will execute normally.
const mismatch = await client.query({ sql: "select 2" });
// Query throws errorToRaise.
try {
const match = await client.query({ sql: "select 1" });
} catch {
// Handle errorToRaise.
}
// Close connection.
await client.end();