feat: Upgrade Redis 3 to 4 for LiveQuery (#8333)
This commit is contained in:
@@ -432,7 +432,7 @@ describe('ParseGraphQLServer', () => {
|
||||
const expressApp = express();
|
||||
httpServer = http.createServer(expressApp);
|
||||
expressApp.use('/parse', parseServer.app);
|
||||
parseLiveQueryServer = ParseServer.createLiveQueryServer(httpServer, {
|
||||
parseLiveQueryServer = await ParseServer.createLiveQueryServer(httpServer, {
|
||||
port: 1338,
|
||||
});
|
||||
parseGraphQLServer.applyGraphQL(expressApp);
|
||||
|
||||
56
spec/ParseLiveQueryRedis.spec.js
Normal file
56
spec/ParseLiveQueryRedis.spec.js
Normal file
@@ -0,0 +1,56 @@
|
||||
if (process.env.PARSE_SERVER_TEST_CACHE === 'redis') {
|
||||
describe('ParseLiveQuery redis', () => {
|
||||
afterEach(async () => {
|
||||
const client = await Parse.CoreManager.getLiveQueryController().getDefaultLiveQueryClient();
|
||||
client.close();
|
||||
});
|
||||
it('can connect', async () => {
|
||||
await reconfigureServer({
|
||||
startLiveQueryServer: true,
|
||||
liveQuery: {
|
||||
classNames: ['TestObject'],
|
||||
redisURL: 'redis://localhost:6379',
|
||||
},
|
||||
liveQueryServerOptions: {
|
||||
redisURL: 'redis://localhost:6379',
|
||||
},
|
||||
});
|
||||
const subscription = await new Parse.Query('TestObject').subscribe();
|
||||
const [object] = await Promise.all([
|
||||
new Parse.Object('TestObject').save(),
|
||||
new Promise(resolve =>
|
||||
subscription.on('create', () => {
|
||||
resolve();
|
||||
})
|
||||
),
|
||||
]);
|
||||
await Promise.all([
|
||||
new Promise(resolve =>
|
||||
subscription.on('delete', () => {
|
||||
resolve();
|
||||
})
|
||||
),
|
||||
object.destroy(),
|
||||
]);
|
||||
});
|
||||
|
||||
it('can call connect twice', async () => {
|
||||
const server = await reconfigureServer({
|
||||
startLiveQueryServer: true,
|
||||
liveQuery: {
|
||||
classNames: ['TestObject'],
|
||||
redisURL: 'redis://localhost:6379',
|
||||
},
|
||||
liveQueryServerOptions: {
|
||||
redisURL: 'redis://localhost:6379',
|
||||
},
|
||||
});
|
||||
expect(server.config.liveQueryController.liveQueryPublisher.parsePublisher.isOpen).toBeTrue();
|
||||
await server.config.liveQueryController.connect();
|
||||
expect(server.config.liveQueryController.liveQueryPublisher.parsePublisher.isOpen).toBeTrue();
|
||||
expect(server.liveQueryServer.subscriber.isOpen).toBe(true);
|
||||
await server.liveQueryServer.connect();
|
||||
expect(server.liveQueryServer.subscriber.isOpen).toBe(true);
|
||||
});
|
||||
});
|
||||
}
|
||||
@@ -94,29 +94,29 @@ describe('ParseLiveQueryServer', function () {
|
||||
expect(parseLiveQueryServer.subscriptions.size).toBe(0);
|
||||
});
|
||||
|
||||
it('can be initialized from ParseServer', function () {
|
||||
it('can be initialized from ParseServer', async () => {
|
||||
const httpServer = {};
|
||||
const parseLiveQueryServer = ParseServer.createLiveQueryServer(httpServer, {});
|
||||
const parseLiveQueryServer = await ParseServer.createLiveQueryServer(httpServer, {});
|
||||
|
||||
expect(parseLiveQueryServer.clientId).toBeUndefined();
|
||||
expect(parseLiveQueryServer.clients.size).toBe(0);
|
||||
expect(parseLiveQueryServer.subscriptions.size).toBe(0);
|
||||
});
|
||||
|
||||
it('can be initialized from ParseServer without httpServer', function (done) {
|
||||
const parseLiveQueryServer = ParseServer.createLiveQueryServer(undefined, {
|
||||
it('can be initialized from ParseServer without httpServer', async () => {
|
||||
const parseLiveQueryServer = await ParseServer.createLiveQueryServer(undefined, {
|
||||
port: 22345,
|
||||
});
|
||||
|
||||
expect(parseLiveQueryServer.clientId).toBeUndefined();
|
||||
expect(parseLiveQueryServer.clients.size).toBe(0);
|
||||
expect(parseLiveQueryServer.subscriptions.size).toBe(0);
|
||||
parseLiveQueryServer.server.close(done);
|
||||
await new Promise(resolve => parseLiveQueryServer.server.close(resolve));
|
||||
});
|
||||
|
||||
describe_only_db('mongo')('initialization', () => {
|
||||
it('can be initialized through ParseServer without liveQueryServerOptions', function (done) {
|
||||
const parseServer = ParseServer.start({
|
||||
it('can be initialized through ParseServer without liveQueryServerOptions', async function (done) {
|
||||
const parseServer = await ParseServer.start({
|
||||
appId: 'hello',
|
||||
masterKey: 'world',
|
||||
port: 22345,
|
||||
@@ -137,8 +137,8 @@ describe('ParseLiveQueryServer', function () {
|
||||
});
|
||||
});
|
||||
|
||||
it('can be initialized through ParseServer with liveQueryServerOptions', function (done) {
|
||||
const parseServer = ParseServer.start({
|
||||
it('can be initialized through ParseServer with liveQueryServerOptions', async function (done) {
|
||||
const parseServer = await ParseServer.start({
|
||||
appId: 'hello',
|
||||
masterKey: 'world',
|
||||
port: 22346,
|
||||
|
||||
@@ -15,7 +15,8 @@ describe('RedisPubSub', function () {
|
||||
});
|
||||
|
||||
const redis = require('redis');
|
||||
expect(redis.createClient).toHaveBeenCalledWith('redisAddress', {
|
||||
expect(redis.createClient).toHaveBeenCalledWith({
|
||||
url: 'redisAddress',
|
||||
socket_keepalive: true,
|
||||
no_ready_check: true,
|
||||
});
|
||||
@@ -28,7 +29,8 @@ describe('RedisPubSub', function () {
|
||||
});
|
||||
|
||||
const redis = require('redis');
|
||||
expect(redis.createClient).toHaveBeenCalledWith('redisAddress', {
|
||||
expect(redis.createClient).toHaveBeenCalledWith({
|
||||
url: 'redisAddress',
|
||||
socket_keepalive: true,
|
||||
no_ready_check: true,
|
||||
});
|
||||
|
||||
@@ -173,17 +173,19 @@ const reconfigureServer = (changedConfiguration = {}) => {
|
||||
port,
|
||||
});
|
||||
cache.clear();
|
||||
parseServer = ParseServer.start(newConfiguration);
|
||||
parseServer.expressApp.use('/1', err => {
|
||||
console.error(err);
|
||||
fail('should not call next');
|
||||
});
|
||||
server = parseServer.server;
|
||||
server.on('connection', connection => {
|
||||
const key = `${connection.remoteAddress}:${connection.remotePort}`;
|
||||
openConnections[key] = connection;
|
||||
connection.on('close', () => {
|
||||
delete openConnections[key];
|
||||
ParseServer.start(newConfiguration).then(_parseServer => {
|
||||
parseServer = _parseServer;
|
||||
parseServer.expressApp.use('/1', err => {
|
||||
console.error(err);
|
||||
fail('should not call next');
|
||||
});
|
||||
server = parseServer.server;
|
||||
server.on('connection', connection => {
|
||||
const key = `${connection.remoteAddress}:${connection.remotePort}`;
|
||||
openConnections[key] = connection;
|
||||
connection.on('close', () => {
|
||||
delete openConnections[key];
|
||||
});
|
||||
});
|
||||
});
|
||||
} catch (error) {
|
||||
|
||||
Reference in New Issue
Block a user