Skip to content

Commit

Permalink
fix: aggregation path (#567)
Browse files Browse the repository at this point in the history
  • Loading branch information
echosoar committed Jul 27, 2020
1 parent c0efdd3 commit 11a6d8a
Show file tree
Hide file tree
Showing 5 changed files with 68 additions and 7 deletions.
7 changes: 5 additions & 2 deletions packages/serverless-spec-builder/src/wrapper.ts
Original file line number Diff line number Diff line change
Expand Up @@ -136,8 +136,11 @@ export function formetAggregationHandlers(handlers) {
};
})
.sort((handlerA, handlerB) => {
if (handlerA.pureRouter === handlerB.pureRouter) {
return handlerA.router.length - handlerB.router.length;
if (handlerA.level === handlerB.level) {
if (handlerB.pureRouter === handlerA.pureRouter) {
return handlerA.router.length - handlerB.router.length;
}
return handlerB.pureRouter.length - handlerA.pureRouter.length;
}
return handlerB.level - handlerA.level;
});
Expand Down
26 changes: 24 additions & 2 deletions packages/serverless-spec-builder/test/fixtures/wrapper/aggre.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,24 +8,42 @@ let starter;
let runtime;
let inited = false;


const initializeMethod = async (initializeContext = {}) => {

runtime = await start({
layers: [],
getHandler: getHandler
});
starter = new FaaSStarter({ baseDir: __dirname, initializeContext, applicationAdapter: runtime, middleware: ["test1","test2"] });
starter = new FaaSStarter({ baseDir: __dirname, initializeContext, applicationAdapter: runtime, middleware: [
"test1",
"test2"
] });


await starter.start();
inited = true;

};

const getHandler = (hanlderName) => {

if (hanlderName === 'handler') {
return async (ctx) => {
const allHandlers = [{"handler":"index.handler","router":"/api/test","pureRouter":"/api/test","level":2},{"handler":"render.handler","router":"/**","pureRouter":"/","level":1}];
const allHandlers = [
{
"handler": "index.handler",
"router": "/api/test",
"pureRouter": "/api/test",
"level": 2
},
{
"handler": "render.handler",
"router": "/**",
"pureRouter": "/",
"level": 1
}
];
let handler = null;
let ctxPath = ctx && ctx.path || '';
if (ctxPath) {
Expand All @@ -46,6 +64,8 @@ const getHandler = (hanlderName) => {
}




exports.initializeUserDefine = asyncWrapper(async (...args) => {
if (!inited) {
await initializeMethod(...args);
Expand All @@ -57,7 +77,9 @@ exports.handler = asyncWrapper(async (...args) => {
if (!inited) {
await initializeMethod();
}


const handler = getHandler('handler');
return runtime.asyncEvent(handler)(...args);
});

11 changes: 10 additions & 1 deletion packages/serverless-spec-builder/test/fixtures/wrapper/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,17 +8,22 @@ let starter;
let runtime;
let inited = false;


const initializeMethod = async (initializeContext = {}) => {

runtime = await start({
layers: [],
getHandler: getHandler
});
starter = new FaaSStarter({ baseDir: __dirname, initializeContext, applicationAdapter: runtime, middleware: ["test1","test2"] });
starter = new FaaSStarter({ baseDir: __dirname, initializeContext, applicationAdapter: runtime, middleware: [
"test1",
"test2"
] });


await starter.start();
inited = true;

};

const getHandler = (hanlderName) => {
Expand All @@ -30,6 +35,8 @@ const getHandler = (hanlderName) => {
}




exports.initializeUserDefine = asyncWrapper(async (...args) => {
if (!inited) {
await initializeMethod(...args);
Expand All @@ -41,7 +48,9 @@ exports.handler = asyncWrapper(async (...args) => {
if (!inited) {
await initializeMethod();
}


const handler = getHandler('handler');
return runtime.asyncEvent(handler)(...args);
});

11 changes: 10 additions & 1 deletion packages/serverless-spec-builder/test/fixtures/wrapper/render.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,17 +8,22 @@ let starter;
let runtime;
let inited = false;


const initializeMethod = async (initializeContext = {}) => {

runtime = await start({
layers: [],
getHandler: getHandler
});
starter = new FaaSStarter({ baseDir: __dirname, initializeContext, applicationAdapter: runtime, middleware: ["test1","test2"] });
starter = new FaaSStarter({ baseDir: __dirname, initializeContext, applicationAdapter: runtime, middleware: [
"test1",
"test2"
] });


await starter.start();
inited = true;

};

const getHandler = (hanlderName) => {
Expand All @@ -30,6 +35,8 @@ const getHandler = (hanlderName) => {
}




exports.initializeUserDefine = asyncWrapper(async (...args) => {
if (!inited) {
await initializeMethod(...args);
Expand All @@ -41,7 +48,9 @@ exports.handler = asyncWrapper(async (...args) => {
if (!inited) {
await initializeMethod();
}


const handler = getHandler('handler');
return runtime.asyncEvent(handler)(...args);
});

20 changes: 19 additions & 1 deletion packages/serverless-spec-builder/test/wrapper.test.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { writeWrapper } from '../src/wrapper';
import { writeWrapper, formetAggregationHandlers } from '../src/wrapper';
import { resolve } from 'path';
import * as assert from 'assert';
import { existsSync, readFileSync, remove } from 'fs-extra';
Expand Down Expand Up @@ -140,4 +140,22 @@ describe('/test/wrapper.test.ts', () => {
);
});
});
it('formetAggregationHandlers', async () => {
const formatResult = formetAggregationHandlers([
{ path: '/api/1' },
{ path: '/api/' },
{ path: '/' },
{ path: '/api/*' },
{ path: '/api2' },
{ path: '/api/2' },
{ path: '/api' },
{ path: '/*' },
]);
assert(formatResult[2].router === '/api/');
assert(formatResult[3].router === '/api/**');
assert(formatResult[4].router === '/api2');
assert(formatResult[5].router === '/api');
assert(formatResult[6].router === '/');
assert(formatResult[7].router === '/**');
});
});

0 comments on commit 11a6d8a

Please sign in to comment.