Skip to content

Commit bb60aee

Browse files
committed
Add list endpoint unit tests
1 parent 50759b5 commit bb60aee

File tree

1 file changed

+58
-0
lines changed

1 file changed

+58
-0
lines changed

packages/grpc-health-check/test/test-health.ts

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -149,4 +149,62 @@ describe('Health checking', () => {
149149
});
150150
})
151151
});
152+
describe.only('list', () => {
153+
it('Should return all registered service statuses', done => {
154+
healthClient.list({}, (error, response) => {
155+
assert.ifError(error);
156+
assert(response);
157+
assert.deepStrictEqual(response.statuses, {
158+
'': { status: 'SERVING' },
159+
'grpc.test.TestServiceNotServing': { status: 'NOT_SERVING' },
160+
'grpc.test.TestServiceServing': { status: 'SERVING' }
161+
});
162+
done();
163+
});
164+
});
165+
166+
it('Should return an empty list when no services are registered', done => {
167+
// Create a new server with no services registered
168+
const emptyServer = new grpc.Server();
169+
const emptyImpl = new HealthImplementation({});
170+
emptyImpl.addToServer(emptyServer);
171+
emptyServer.bindAsync('localhost:0', grpc.ServerCredentials.createInsecure(), (error, port) => {
172+
assert.ifError(error);
173+
const HealthClientConstructor = grpc.makeClientConstructor(healthServiceDefinition, 'grpc.health.v1.HealthService');
174+
const emptyClient = new HealthClientConstructor(`localhost:${port}`, grpc.credentials.createInsecure()) as unknown as HealthClient;
175+
emptyServer.start();
176+
emptyClient.list({}, (error, response) => {
177+
assert.ifError(error);
178+
assert(response);
179+
assert.deepStrictEqual(response.statuses, {});
180+
emptyClient.close();
181+
emptyServer.tryShutdown(done);
182+
});
183+
});
184+
});
185+
186+
it('Should return RESOURCE_EXHAUSTED when too many services are registered', done => {
187+
const largeStatusMap: ServingStatusMap = {};
188+
for (let i = 0; i < 101; i++) {
189+
largeStatusMap[`service-${i}`] = 'SERVING';
190+
}
191+
const largeServer = new grpc.Server();
192+
const largeImpl = new HealthImplementation(largeStatusMap);
193+
largeImpl.addToServer(largeServer);
194+
largeServer.bindAsync('localhost:0', grpc.ServerCredentials.createInsecure(), (error, port) => {
195+
assert.ifError(error);
196+
const HealthClientConstructor = grpc.makeClientConstructor(healthServiceDefinition, 'grpc.health.v1.HealthService');
197+
const largeClient = new HealthClientConstructor(`localhost:${port}`, grpc.credentials.createInsecure()) as unknown as HealthClient;
198+
largeServer.start();
199+
largeClient.list({}, (error, response) => {
200+
assert(error);
201+
assert.strictEqual(error.code, grpc.status.RESOURCE_EXHAUSTED);
202+
assert.strictEqual(response, undefined);
203+
largeClient.close();
204+
largeServer.tryShutdown(done);
205+
});
206+
});
207+
});
208+
});
209+
152210
});

0 commit comments

Comments
 (0)