Skip to content

Commit 8bf6abf

Browse files
trylovetomflovilmart
authored andcommitted
Patch handleShutdown feature (#4361)
* Add handleShutdown Test of MongoStorageAdapter. * Add `handleShutdown` function in PostgresStorageAdapter, with it's test. * Replace the _pgp to _client * Use `adapter._client.$pool.ending` to ckeck is ending * Add `handleShutdown()` in ParseServer.spec.js * Trigger * Set Server to Default
1 parent de73f37 commit 8bf6abf

File tree

4 files changed

+79
-0
lines changed

4 files changed

+79
-0
lines changed

spec/MongoStorageAdapter.spec.js

+19
Original file line numberDiff line numberDiff line change
@@ -237,4 +237,23 @@ describe_only_db('mongo')('MongoStorageAdapter', () => {
237237
done();
238238
});
239239
});
240+
241+
it('handleShutdown, close connection', (done) => {
242+
const adapter = new MongoStorageAdapter({ uri: databaseURI });
243+
244+
const schema = {
245+
fields: {
246+
array: { type: 'Array' },
247+
object: { type: 'Object' },
248+
date: { type: 'Date' },
249+
}
250+
};
251+
252+
adapter.createObject('MyClass', schema, {}).then(() => {
253+
expect(adapter.database.serverConfig.isConnected()).toEqual(true);
254+
adapter.handleShutdown()
255+
expect(adapter.database.serverConfig.isConnected()).toEqual(false);
256+
done();
257+
});
258+
});
240259
});

spec/ParseServer.spec.js

+31
Original file line numberDiff line numberDiff line change
@@ -33,4 +33,35 @@ describe('Server Url Checks', () => {
3333
done();
3434
});
3535
});
36+
37+
it('handleShutdown, close connection', (done) => {
38+
var MongoStorageAdapter = require('../src/Adapters/Storage/Mongo/MongoStorageAdapter');
39+
const PostgresStorageAdapter = require('../src/Adapters/Storage/Postgres/PostgresStorageAdapter');
40+
const mongoURI = 'mongodb://localhost:27017/parseServerMongoAdapterTestDatabase';
41+
const postgresURI = 'postgres://localhost:5432/parse_server_postgres_adapter_test_database';
42+
let databaseAdapter;
43+
if (process.env.PARSE_SERVER_TEST_DB === 'postgres') {
44+
databaseAdapter = new PostgresStorageAdapter({
45+
uri: process.env.PARSE_SERVER_TEST_DATABASE_URI || postgresURI,
46+
collectionPrefix: 'test_',
47+
});
48+
} else {
49+
databaseAdapter = new MongoStorageAdapter({
50+
uri: mongoURI,
51+
collectionPrefix: 'test_',
52+
});
53+
}
54+
const newConfiguration = Object.assign({}, defaultConfiguration, { databaseAdapter });
55+
const parseServer = ParseServer.start(newConfiguration, () => {
56+
parseServer.handleShutdown();
57+
parseServer.server.close((err) => {
58+
if (err) {
59+
done.fail('Close Server Error')
60+
}
61+
reconfigureServer({}).then(() => {
62+
done();
63+
});
64+
});
65+
});
66+
});
3667
});

spec/PostgresStorageAdapter.spec.js

+22
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
const PostgresStorageAdapter = require('../src/Adapters/Storage/Postgres/PostgresStorageAdapter');
2+
const databaseURI = 'postgres://localhost:5432/parse_server_postgres_adapter_test_database';
3+
4+
describe_only_db('postgres')('PostgresStorageAdapter', () => {
5+
beforeEach(done => {
6+
const adapter = new PostgresStorageAdapter({ uri: databaseURI })
7+
.deleteAllClasses()
8+
.then(() => {
9+
adapter.handleShutdown();
10+
}, fail)
11+
.catch(done);
12+
});
13+
14+
it('handleShutdown, close connection', (done) => {
15+
const adapter = new PostgresStorageAdapter({ uri: databaseURI });
16+
17+
expect(adapter._client.$pool.ending).toEqual(false);
18+
adapter.handleShutdown();
19+
expect(adapter._client.$pool.ending).toEqual(true);
20+
done();
21+
});
22+
});

src/Adapters/Storage/Postgres/PostgresStorageAdapter.js

+7
Original file line numberDiff line numberDiff line change
@@ -574,6 +574,13 @@ export class PostgresStorageAdapter {
574574
this._pgp = pgp;
575575
}
576576

577+
handleShutdown() {
578+
if (!this._client) {
579+
return
580+
}
581+
this._client.$pool.end();
582+
}
583+
577584
_ensureSchemaCollectionExists(conn) {
578585
conn = conn || this._client;
579586
return conn.none('CREATE TABLE IF NOT EXISTS "_SCHEMA" ( "className" varChar(120), "schema" jsonb, "isParseClass" bool, PRIMARY KEY ("className") )')

0 commit comments

Comments
 (0)