UNPKG

sdg-rpc

Version:

pomelo ts rpc

141 lines (124 loc) 4.21 kB
import _ from 'lodash'; import assert from 'assert'; import router from '../../src/client/router'; import { IRpcMsg } from '../../src/interfaces/common'; import RpcClient from '../../src/client/client'; describe('router', () => { const allServers = { 'logic': [ { id: 'logic-server-1', host: 'localhost', port: 1 }, { id: 'logic-server-2', host: 'localhost', port: 2 }, { id: 'logic-server-3', host: 'localhost', port: 3 }, { id: 'logic-server-4', host: 'localhost', port: 4 }, { id: 'logic-server-5', host: 'localhost', port: 5 }, ], 'area': [ { id: 'area-server-1', host: 'localhost', port: 1 }, { id: 'area-server-2', host: 'localhost', port: 2 }, { id: 'area-server-3', host: 'localhost', port: 3 }, { id: 'area-server-4', host: 'localhost', port: 4 }, { id: 'area-server-5', host: 'localhost', port: 5 }, ] }; const uid = [ '100_134_10431', '100_112_220355', '100_101_1005201', '100_114_10430', '100_136_10430', '100_153_10428', '100_164_10428', '100_174_10430', '100_182_10430', '100_203_10430', '100_211_10430', '100_215_10450', '100_220_70714', '100_227_29723', '100_241_10433', '100_250_24152', '100_252_30717', '100_254_13301', '100_132_10430', '100_99_216577' ]; const serversMap = {}; const servers = {}; _.forOwn(allServers, (s, t) => { serversMap[t] = s.map(i => { servers[i.id] = i; return i.id }); }); // const client = { // station: { // serversMap, // servers, // on: () => {}, // }, // opts: { // hashFieldIndex: 0 // } // }; const client = new RpcClient({}); client.station.serversMap = serversMap; client.station.servers = servers; const sessions = uid.map(id => ({ uid: id })); const context = { getServersByType: (t: string) => allServers[t] }; describe('#la', () => { it('分配server', async function () { const origin = {}; sessions.map(session => { // @ts-ignore origin[session.uid] = router.la(client, 'logic'); }); for (let i = 0; i < 100; i++) { sessions.map(session => { // @ts-ignore const res = router.la(client, 'logic'); if (res !== origin[session.uid]) { // assert.strictEqual(res, origin[session.uid]); } }); } return true; }); }); describe('#ch', () => { it('分配server', async function () { const origin = {}; const msg = { args: [] }; sessions.map(session => { // @ts-ignore msg.args[0] = session.uid; // @ts-ignore origin[session.uid] = router.ch(client, 'logic', msg); }); console.log('origin', origin); // assert.strictEqual(1, 1); const s1 = { id: 'logic-server-6', host: 'localhost', port: 6 }; const s2 = { id: 'logic-server-7', host: 'localhost', port: 7 }; allServers.logic.push(s1); allServers.logic.push(s2); client.station.emit('addServer', s1); client.station.emit('addServer', s2); for (let i = 0; i < 100; i++) { sessions.map(session => { // @ts-ignore msg.args[0] = session.uid; // @ts-ignore const res = router.ch(client, 'logic', msg); if (res !== origin[session.uid]) { assert.strictEqual(origin[session.uid], res, 'error: ' + session.uid); } }); } return true; }); }); describe('#df', () => { it('df server', async function () { const origin = {}; sessions.map(session => { origin[session.uid] = router.df(session, { serverType: 'logic' } as IRpcMsg, context); }); allServers.logic.push({ id: 'logic-server-6', host: 'localhost', port: 6 }); // console.log('context', context.getServersByType('logic')); for (let i = 0; i < 100; i++) { sessions.map(session => { const res = router.df(session, { serverType: 'logic' } as IRpcMsg, context); if (res !== origin[session.uid]) { // assert.strictEqual(res, origin[session.uid]); } }) } return true; }); }); });