Skip to content

Commit f88f6c3

Browse files
committed
chore(affinity): add support for custom affinity key bind and unbind via calloptions
1 parent 5820318 commit f88f6c3

12 files changed

Lines changed: 249 additions & 148 deletions

.eslintignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,3 +3,4 @@ test/google
33
test/googleapis
44
src/generated
55
build/
6+
cloudprober/

cloudprober/grpc_gcp_prober/firestore_probes.js

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77

88
const firestore = require('../google/firestore/v1beta1/firestore_pb.js');
99
const _PARENT_RESOURCE =
10-
'projects/grpc-prober-testing/databases/(default)/documents';
10+
'projects/grpc-prober-testing/databases/(default)/documents';
1111

1212
/**
1313
* Probes to test session related grpc calls from Spanner client.
@@ -17,28 +17,28 @@ const _PARENT_RESOURCE =
1717
*/
1818
function documents(client, metrics) {
1919
return new Promise((resolve, reject) => {
20-
var listDocsRequest = new firestore.ListDocumentsRequest();
20+
const listDocsRequest = new firestore.ListDocumentsRequest();
2121
listDocsRequest.setParent(_PARENT_RESOURCE);
22-
var start = new Date();
22+
const start = new Date();
2323
client.listDocuments(listDocsRequest, (error, response) => {
2424
if (error) {
2525
reject(error);
2626
} else {
27-
var latency = (new Date() - start);
27+
const latency = new Date() - start;
2828
metrics['list_documents_latency_ms'] = latency;
29-
var docArray = response.getDocumentsList();
29+
const docArray = response.getDocumentsList();
3030
if (!docArray || !docArray.length) {
31-
reject(new Error(
32-
'ListDocumentsResponse should have more than 1 document'));
31+
reject(
32+
new Error('ListDocumentsResponse should have more than 1 document')
33+
);
3334
}
3435
resolve();
3536
}
3637
});
3738
});
3839
}
3940

40-
4141
// exports.documents = documents;
4242
exports.probeFunctions = {
43-
'documents': documents
43+
documents: documents,
4444
};

cloudprober/grpc_gcp_prober/prober.js

Lines changed: 35 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,7 @@
22
* @fileoverview Main entrypoint to execute probes for different cloud APIs.
33
*/
44

5-
const firestore_grpc =
6-
require('../google/firestore/v1beta1/firestore_grpc_pb.js');
5+
const firestore_grpc = require('../google/firestore/v1beta1/firestore_grpc_pb.js');
76
const spanner_grpc = require('../google/spanner/v1/spanner_grpc_pb.js');
87
const {GoogleAuth} = require('google-auth-library');
98
const grpc = require('grpc');
@@ -16,16 +15,15 @@ const _OAUTH_SCOPE = 'https://www.googleapis.com/auth/cloud-platform';
1615
const _FIRESTORE_TARGET = 'firestore.googleapis.com:443';
1716
const _SPANNER_TARGET = 'spanner.googleapis.com:443';
1817

19-
2018
/**
2119
* Retrieves arguments before executing probes.
2220
* @return {Object} An object containing all the args parsed in.
2321
*/
2422
function getArgs() {
25-
var parser = new argparse.ArgumentParser({
23+
const parser = new argparse.ArgumentParser({
2624
version: '0.0.1',
2725
addHelp: true,
28-
description: 'Argument parser for grpc gcp prober.'
26+
description: 'Argument parser for grpc gcp prober.',
2927
});
3028
parser.addArgument('--api', {help: 'foo bar'});
3129
return parser.parseArgs();
@@ -36,57 +34,63 @@ function getArgs() {
3634
* @param {string} api The name of the api provider, e.g. "spanner", "firestore".
3735
*/
3836
function executeProbes(api) {
39-
var authFactory = new GoogleAuth();
40-
var util = new stackdriver_util.StackdriverUtil(api);
37+
const authFactory = new GoogleAuth();
38+
const util = new stackdriver_util.StackdriverUtil(api);
4139

4240
authFactory.getApplicationDefault((err, auth) => {
4341
if (err) {
4442
console.log('Authentication failed because of ', err);
4543
return;
4644
}
4745
if (auth.createScopedRequired && auth.createScopedRequired()) {
48-
var scopes = [_OAUTH_SCOPE];
46+
const scopes = [_OAUTH_SCOPE];
4947
auth = auth.createScoped(scopes);
5048
}
51-
var sslCreds = grpc.credentials.createSsl();
52-
var callCreds = grpc.credentials.createFromGoogleCredential(auth);
53-
var channelCreds =
54-
grpc.credentials.combineChannelCredentials(sslCreds, callCreds);
49+
const sslCreds = grpc.credentials.createSsl();
50+
const callCreds = grpc.credentials.createFromGoogleCredential(auth);
51+
const channelCreds = grpc.credentials.combineChannelCredentials(
52+
sslCreds,
53+
callCreds
54+
);
5555
if (api === 'firestore') {
56-
var client =
57-
new firestore_grpc.FirestoreClient(_FIRESTORE_TARGET, channelCreds);
56+
var client = new firestore_grpc.FirestoreClient(
57+
_FIRESTORE_TARGET,
58+
channelCreds
59+
);
5860
var probeFunctions = firestore_probes.probeFunctions;
5961
} else if (api === 'spanner') {
60-
var client =
61-
new spanner_grpc.SpannerClient(_SPANNER_TARGET, channelCreds);
62+
var client = new spanner_grpc.SpannerClient(
63+
_SPANNER_TARGET,
64+
channelCreds
65+
);
6266
var probeFunctions = spanner_probes.probeFunctions;
6367
} else {
6468
throw new Error('gRPC prober is not implemented for ' + api + ' !');
6569
}
6670

67-
var metrics = {};
68-
var probeNames = Object.keys(probeFunctions);
69-
var promises = probeNames.map((probeName) => {
71+
const metrics = {};
72+
const probeNames = Object.keys(probeFunctions);
73+
const promises = probeNames.map(probeName => {
7074
probe_function = probeFunctions[probeName];
7175
return probe_function(client, metrics);
7276
});
7377

7478
Promise.all(promises)
75-
.then(() => {
76-
util.setSuccess(true);
77-
})
78-
.catch((err) => {
79-
util.setSuccess(false);
80-
util.reportError(err);
81-
})
82-
.then(() => {
83-
util.addMetrics(metrics);
84-
util.outputMetrics();
85-
});
79+
.then(() => {
80+
util.setSuccess(true);
81+
})
82+
.catch(err => {
83+
util.setSuccess(false);
84+
util.reportError(err);
85+
})
86+
.then(() => {
87+
util.addMetrics(metrics);
88+
util.outputMetrics();
89+
});
8690

8791
// TODO: if fail, exit probe.
8892
});
8993
}
9094

91-
var args = getArgs();
95+
const args = getArgs();
9296
executeProbes(args.api);

cloudprober/grpc_gcp_prober/spanner_probes.js

Lines changed: 27 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77

88
const spanner = require('../google/spanner/v1/spanner_pb.js');
99
const _DATABASE =
10-
'projects/grpc-prober-testing/instances/weiranf-instance/databases/test-db';
10+
'projects/grpc-prober-testing/instances/weiranf-instance/databases/test-db';
1111
const _TEST_USERNAME = 'test_username';
1212
const Promise = require('bluebird');
1313

@@ -18,18 +18,18 @@ const Promise = require('bluebird');
1818
* @return {Promise} A promise after a sequence of client calls.
1919
*/
2020
function sessionManagement(client, metrics) {
21-
var sessionName;
21+
let sessionName;
2222

23-
let createSession = () => {
23+
const createSession = () => {
2424
return new Promise((resolve, reject) => {
25-
var createSessionRequest = new spanner.CreateSessionRequest();
25+
const createSessionRequest = new spanner.CreateSessionRequest();
2626
createSessionRequest.setDatabase(_DATABASE);
27-
var start = new Date();
27+
const start = new Date();
2828
client.createSession(createSessionRequest, (error, session) => {
2929
if (error) {
3030
reject(error);
3131
} else {
32-
var latency = (new Date() - start);
32+
const latency = new Date() - start;
3333
metrics['create_session_latency_ms'] = latency;
3434
sessionName = session.getName();
3535
resolve();
@@ -38,38 +38,41 @@ function sessionManagement(client, metrics) {
3838
});
3939
};
4040

41-
let getSession = () => {
41+
const getSession = () => {
4242
return new Promise((resolve, reject) => {
43-
var getSessionRequest = new spanner.GetSessionRequest();
43+
const getSessionRequest = new spanner.GetSessionRequest();
4444
getSessionRequest.setName(sessionName);
4545
start = new Date();
4646
client.getSession(getSessionRequest, (error, sessionResult) => {
4747
if (error) {
4848
reject(error);
4949
} else {
50-
var latency = (new Date() - start);
50+
const latency = new Date() - start;
5151
metrics['get_session_latency_ms'] = latency;
5252
if (sessionResult.getName() != sessionName) {
53-
reject(new Error(
53+
reject(
54+
new Error(
5455
'client.getSession has incorrect result: ' +
55-
sessionResult.getName()));
56+
sessionResult.getName()
57+
)
58+
);
5659
}
5760
resolve();
5861
}
5962
});
6063
});
6164
};
6265

63-
let deleteSession = () => {
66+
const deleteSession = () => {
6467
return new Promise((resolve, reject) => {
65-
var deleteSessionRequest = new spanner.DeleteSessionRequest();
68+
const deleteSessionRequest = new spanner.DeleteSessionRequest();
6669
deleteSessionRequest.setName(sessionName);
6770
start = new Date();
68-
client.deleteSession(deleteSessionRequest, (error) => {
71+
client.deleteSession(deleteSessionRequest, error => {
6972
if (error) {
7073
reject(error);
7174
} else {
72-
var latency = (new Date() - start);
75+
const latency = new Date() - start;
7376
metrics['delete_session_latency_ms'] = latency;
7477
resolve();
7578
}
@@ -78,16 +81,16 @@ function sessionManagement(client, metrics) {
7881
};
7982

8083
return createSession()
81-
.then(() => {
82-
return getSession();
83-
})
84-
.finally(() => {
85-
if (sessionName) {
86-
return deleteSession();
87-
}
88-
});
84+
.then(() => {
85+
return getSession();
86+
})
87+
.finally(() => {
88+
if (sessionName) {
89+
return deleteSession();
90+
}
91+
});
8992
}
9093

9194
exports.probeFunctions = {
92-
'sessionManagement': sessionManagement
95+
sessionManagement: sessionManagement,
9396
};

cloudprober/grpc_gcp_prober/stackdriver_util.js

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ class StackdriverUtil {
4242
console.log(this.api_ + '_success 0');
4343
}
4444

45-
for (var metric_name in this.metrics_) {
45+
for (const metric_name in this.metrics_) {
4646
console.log(metric_name + ' ' + this.metrics_[metric_name]);
4747
}
4848
}
@@ -53,8 +53,11 @@ class StackdriverUtil {
5353
reportError(err) {
5454
console.error(err);
5555
this.errClient_.report(
56-
'NodeProberFailure: gRPC(v=x.x.x) fails on ' + this.api_ +
57-
' API. Details: ' + err.toString());
56+
'NodeProberFailure: gRPC(v=x.x.x) fails on ' +
57+
this.api_ +
58+
' API. Details: ' +
59+
err.toString()
60+
);
5861
}
5962
}
6063

package.json

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
"build": "tsc && cp -r src/generated build/src/",
88
"system-test": "c8 mocha test/integration/*.js --reporter spec --timeout 10000 --grpclib grpc && c8 mocha test/integration/*.js --reporter spec --timeout 10000 --grpclib @grpc/grpc-js",
99
"test": "c8 mocha test/unit/*.js --reporter spec",
10-
"lint": "gts check src/**/*.ts",
10+
"lint": "gts check \"src/**/*.ts\"",
1111
"fix": "gts fix",
1212
"prepare": "npm run build"
1313
},
@@ -36,14 +36,16 @@
3636
"protobufjs": "7.4.0"
3737
},
3838
"devDependencies": {
39-
"@grpc/proto-loader": "^0.7.0",
4039
"@google-cloud/spanner": "^6.0.0",
40+
"@grpc/proto-loader": "^0.7.0",
41+
"@types/glob": "8.1.0",
42+
"@types/node": "^18.19.130",
4143
"c8": "^7.7.2",
4244
"google-auth-library": "^8.0.0",
4345
"google-gax": "^3.0.0",
4446
"google-protobuf": "^3.17.1",
4547
"grpc": "^1.24.10",
46-
"grpc-tools": "^1.11.1",
48+
"grpc-tools": "1.12.0",
4749
"gts": "^3.1.0",
4850
"mocha": "^9.2.2",
4951
"typescript": "^4.3.2"

0 commit comments

Comments
 (0)