From 87ae587bd2097cf74d5ed6aa52aca9ca3dadd213 Mon Sep 17 00:00:00 2001 From: Diamond Lewis Date: Sun, 23 Jun 2024 12:06:12 -0500 Subject: [PATCH 1/3] ci: Fix flaky test `invalid server state: initialized` --- integration/test/ParseEventuallyQueueTest.js | 8 +++++--- integration/test/helper.js | 13 +++++++------ 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/integration/test/ParseEventuallyQueueTest.js b/integration/test/ParseEventuallyQueueTest.js index 1e200c1e3..e05ffe182 100644 --- a/integration/test/ParseEventuallyQueueTest.js +++ b/integration/test/ParseEventuallyQueueTest.js @@ -193,6 +193,7 @@ describe('Parse EventuallyQueue', () => { it('can saveEventually', async () => { const parseServer = await reconfigureServer(); const object = new TestObject({ hash: 'saveSecret' }); + await parseServer.handleShutdown(); await new Promise(resolve => parseServer.server.close(resolve)); await object.saveEventually(); @@ -224,7 +225,7 @@ describe('Parse EventuallyQueue', () => { const acl = new Parse.ACL(user); const object = new TestObject({ hash: 'saveSecret' }); object.setACL(acl); - + await parseServer.handleShutdown(); await new Promise(resolve => parseServer.server.close(resolve)); await object.saveEventually(); @@ -232,7 +233,7 @@ describe('Parse EventuallyQueue', () => { assert(Parse.EventuallyQueue.isPolling()); assert.strictEqual(length, 1); - await reconfigureServer({}); + await reconfigureServer(); while (Parse.EventuallyQueue.isPolling()) { await sleep(100); @@ -250,6 +251,7 @@ describe('Parse EventuallyQueue', () => { const parseServer = await reconfigureServer(); const object = new TestObject({ hash: 'deleteSecret' }); await object.save(); + await parseServer.handleShutdown(); await new Promise(resolve => parseServer.server.close(resolve)); await object.destroyEventually(); const length = await Parse.EventuallyQueue.length(); @@ -257,7 +259,7 @@ describe('Parse EventuallyQueue', () => { assert(Parse.EventuallyQueue.isPolling()); assert.strictEqual(length, 1); - await reconfigureServer({}); + await reconfigureServer(); while (Parse.EventuallyQueue.isPolling()) { await sleep(100); } diff --git a/integration/test/helper.js b/integration/test/helper.js index ee22aa42a..a41a925e5 100644 --- a/integration/test/helper.js +++ b/integration/test/helper.js @@ -104,14 +104,12 @@ const destroyAliveConnections = function () { } }; let parseServer; -let server; const reconfigureServer = async (changedConfiguration = {}) => { - if (server) { + if (parseServer) { await parseServer.handleShutdown(); - await new Promise(resolve => server.close(resolve)); + await new Promise(resolve => parseServer.server.close(resolve)); parseServer = undefined; - server = undefined; return reconfigureServer(changedConfiguration); } @@ -121,6 +119,10 @@ const reconfigureServer = async (changedConfiguration = {}) => { port, }); parseServer = await ParseServer.startApp(newConfiguration); + if (parseServer.config.state === 'initialized') { + console.error('Failed to initialize Parse Server'); + await reconfigureServer(newConfiguration); + } const app = parseServer.expressApp; for (const fileName of ['parse.js', 'parse.min.js']) { const file = fs.readFileSync(path.resolve(__dirname, `./../../dist/${fileName}`)).toString(); @@ -147,8 +149,7 @@ const reconfigureServer = async (changedConfiguration = {}) => { res.send('{}'); }); }); - server = parseServer.server; - server.on('connection', connection => { + parseServer.server.on('connection', connection => { const key = `${connection.remoteAddress}:${connection.remotePort}`; openConnections[key] = connection; connection.on('close', () => { From b37aa8808c763214e91ffb21ef3c2e7c8af94c56 Mon Sep 17 00:00:00 2001 From: Diamond Lewis Date: Sun, 23 Jun 2024 12:14:45 -0500 Subject: [PATCH 2/3] another flaky test --- integration/test/ParseServerTest.js | 1 + 1 file changed, 1 insertion(+) diff --git a/integration/test/ParseServerTest.js b/integration/test/ParseServerTest.js index 01aa285d7..1ae23a7b4 100644 --- a/integration/test/ParseServerTest.js +++ b/integration/test/ParseServerTest.js @@ -6,6 +6,7 @@ describe('ParseServer', () => { it('can reconfigure server', async () => { const parseServer = await reconfigureServer({ serverURL: 'www.google.com' }); assert.strictEqual(parseServer.config.serverURL, 'www.google.com'); + await parseServer.handleShutdown(); await new Promise(resolve => parseServer.server.close(resolve)); await reconfigureServer(); }); From 66683b8a5f71889482b1adcc51376bb56a28b310 Mon Sep 17 00:00:00 2001 From: Diamond Lewis Date: Mon, 24 Jun 2024 15:02:09 -0500 Subject: [PATCH 3/3] prevent multiple mounting on initialized error --- integration/test/helper.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/integration/test/helper.js b/integration/test/helper.js index a41a925e5..ada7701e9 100644 --- a/integration/test/helper.js +++ b/integration/test/helper.js @@ -121,7 +121,7 @@ const reconfigureServer = async (changedConfiguration = {}) => { parseServer = await ParseServer.startApp(newConfiguration); if (parseServer.config.state === 'initialized') { console.error('Failed to initialize Parse Server'); - await reconfigureServer(newConfiguration); + return reconfigureServer(newConfiguration); } const app = parseServer.expressApp; for (const fileName of ['parse.js', 'parse.min.js']) {