Skip to content

ci: Fix flaky test invalid server state: initialized #2183

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 10 commits into from
Jun 25, 2024
8 changes: 5 additions & 3 deletions integration/test/ParseEventuallyQueueTest.js
Original file line number Diff line number Diff line change
Expand Up @@ -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();

Expand Down Expand Up @@ -224,15 +225,15 @@ 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();

const length = await Parse.EventuallyQueue.length();
assert(Parse.EventuallyQueue.isPolling());
assert.strictEqual(length, 1);

await reconfigureServer({});
await reconfigureServer();

while (Parse.EventuallyQueue.isPolling()) {
await sleep(100);
Expand All @@ -250,14 +251,15 @@ 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();

assert(Parse.EventuallyQueue.isPolling());
assert.strictEqual(length, 1);

await reconfigureServer({});
await reconfigureServer();
while (Parse.EventuallyQueue.isPolling()) {
await sleep(100);
}
Expand Down
1 change: 1 addition & 0 deletions integration/test/ParseServerTest.js
Original file line number Diff line number Diff line change
Expand Up @@ -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();
});
Expand Down
13 changes: 7 additions & 6 deletions integration/test/helper.js
Original file line number Diff line number Diff line change
Expand Up @@ -93,14 +93,12 @@ const defaultConfiguration = {

const openConnections = {};
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);
}

Expand All @@ -110,6 +108,10 @@ const reconfigureServer = async (changedConfiguration = {}) => {
port,
});
parseServer = await ParseServer.startApp(newConfiguration);
if (parseServer.config.state === 'initialized') {
console.error('Failed to initialize Parse Server');
return 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();
Expand All @@ -136,8 +138,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', () => {
Expand Down
Loading