Skip to content

Commit 41ed62c

Browse files
committed
fixed invocation error
1 parent 3b44457 commit 41ed62c

File tree

2 files changed

+62
-52
lines changed

2 files changed

+62
-52
lines changed

index.js

Lines changed: 24 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -274,7 +274,25 @@ class ServerlessStepFunctions {
274274
.then(this.parseInputdate)
275275
.then(this.getStateMachineArn)
276276
.then(this.startExecution)
277-
.then(this.describeExecution);
277+
.then(this.describeExecution)
278+
.then((result) => {
279+
this.serverless.cli.consoleLog('');
280+
this.serverless.cli.consoleLog(chalk.yellow.underline('Execution Result'));
281+
this.serverless.cli.consoleLog('');
282+
this.serverless.cli.consoleLog(result);
283+
284+
if (result.status === 'FAILED') {
285+
return this.getExecutionHistory()
286+
.then((error) => {
287+
this.serverless.cli.consoleLog('');
288+
this.serverless.cli.consoleLog(chalk.yellow.underline('Error Log'));
289+
this.serverless.cli.consoleLog('');
290+
this.serverless.cli.consoleLog(error.events[error.events.length - 1]
291+
.executionFailedEventDetails);
292+
});
293+
}
294+
return BbPromise.resolve();
295+
});
278296
}
279297

280298
tasksDeploy() {
@@ -549,11 +567,10 @@ class ServerlessStepFunctions {
549567
}
550568

551569
startExecution() {
552-
this.serverless.cli.log(`Start function ${this.options.state}...`);
553570
return this.provider.request('StepFunctions',
554571
'startExecution',
555572
{
556-
stateMachineArn: this.stateMachineArn,
573+
stateMachineArn: this.stateMachineArns[this.options.state],
557574
input: this.options.data,
558575
},
559576
this.options.stage,
@@ -577,20 +594,10 @@ class ServerlessStepFunctions {
577594
.then((result) => {
578595
if (result.status === 'RUNNING') {
579596
this.serverless.cli.printDot();
580-
setTimeout(this.describeExecution.bind(this), 5000);
581-
} else {
582-
this.serverless.cli.consoleLog('');
583-
this.serverless.cli.consoleLog('');
584-
const msg = 'Execution Result -----------------------------------------';
585-
this.serverless.cli.consoleLog(chalk.yellow(msg));
586-
this.serverless.cli.consoleLog('');
587-
this.serverless.cli.consoleLog(result);
588-
589-
if (result.status === 'FAILED') {
590-
return this.getExecutionHistory();
591-
}
597+
return this.setTimeout()
598+
.then(() => this.describeExecution());
592599
}
593-
return BbPromise.resolve();
600+
return BbPromise.resolve(result);
594601
});
595602
}
596603

@@ -602,15 +609,7 @@ class ServerlessStepFunctions {
602609
},
603610
this.options.stage,
604611
this.options.region)
605-
.then((result) => {
606-
this.serverless.cli.consoleLog('');
607-
const msg = 'Error Log ------------------------------------------------';
608-
this.serverless.cli.consoleLog(chalk.yellow(msg));
609-
this.serverless.cli.consoleLog('');
610-
this.serverless.cli.consoleLog(result.events[result.events.length - 1]
611-
.executionFailedEventDetails);
612-
return BbPromise.resolve();
613-
});
612+
.then((result) => BbPromise.resolve(result));
614613
}
615614

616615
yamlParse() {

index.test.js

Lines changed: 38 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -169,24 +169,60 @@ describe('ServerlessStepFunctions', () => {
169169

170170
describe('#stateMachineInvoke()', () => {
171171
it('should run promise chain in order', () => {
172+
const parseInputdateStub = sinon
173+
.stub(serverlessStepFunctions, 'parseInputdate').returns(BbPromise.resolve());
172174
const getStateMachineArnStub = sinon
173175
.stub(serverlessStepFunctions, 'getStateMachineArn').returns(BbPromise.resolve());
174176
const startExecutionStub = sinon
175177
.stub(serverlessStepFunctions, 'startExecution').returns(BbPromise.resolve());
176178
const describeExecutionStub = sinon
177-
.stub(serverlessStepFunctions, 'describeExecution').returns(BbPromise.resolve());
179+
.stub(serverlessStepFunctions, 'describeExecution').returns(BbPromise.resolve({ status: 'SUCCEED' }));
178180

179181
return serverlessStepFunctions.stateMachineInvoke()
180182
.then(() => {
181-
expect(getStateMachineArnStub.calledOnce).to.be.equal(true);
183+
expect(parseInputdateStub.calledOnce).to.be.equal(true);
184+
expect(getStateMachineArnStub.calledAfter(parseInputdateStub)).to.be.equal(true);
182185
expect(startExecutionStub.calledAfter(getStateMachineArnStub)).to.be.equal(true);
183186
expect(describeExecutionStub.calledAfter(startExecutionStub)).to.be.equal(true);
184187

188+
serverlessStepFunctions.parseInputdate.restore();
185189
serverlessStepFunctions.getStateMachineArn.restore();
186190
serverlessStepFunctions.startExecution.restore();
187191
serverlessStepFunctions.describeExecution.restore();
188192
});
189193
});
194+
195+
it('should run promise chain in order when invocation error occurs', () => {
196+
const parseInputdateStub = sinon
197+
.stub(serverlessStepFunctions, 'parseInputdate').returns(BbPromise.resolve());
198+
const getStateMachineArnStub = sinon
199+
.stub(serverlessStepFunctions, 'getStateMachineArn').returns(BbPromise.resolve());
200+
const startExecutionStub = sinon
201+
.stub(serverlessStepFunctions, 'startExecution').returns(BbPromise.resolve());
202+
const describeExecutionStub = sinon
203+
.stub(serverlessStepFunctions, 'describeExecution').returns(BbPromise.resolve({ status: 'FAILED' }));
204+
const getExecutionHistoryStub = sinon
205+
.stub(serverlessStepFunctions, 'getExecutionHistory').returns(BbPromise.resolve({
206+
events: [{
207+
executionFailedEventDetails: '',
208+
}],
209+
}));
210+
211+
return serverlessStepFunctions.stateMachineInvoke()
212+
.then(() => {
213+
expect(parseInputdateStub.calledOnce).to.be.equal(true);
214+
expect(getStateMachineArnStub.calledAfter(parseInputdateStub)).to.be.equal(true);
215+
expect(startExecutionStub.calledAfter(getStateMachineArnStub)).to.be.equal(true);
216+
expect(describeExecutionStub.calledAfter(startExecutionStub)).to.be.equal(true);
217+
expect(getExecutionHistoryStub.calledAfter(describeExecutionStub)).to.be.equal(true);
218+
219+
serverlessStepFunctions.parseInputdate.restore();
220+
serverlessStepFunctions.getStateMachineArn.restore();
221+
serverlessStepFunctions.startExecution.restore();
222+
serverlessStepFunctions.describeExecution.restore();
223+
serverlessStepFunctions.getExecutionHistory.restore();
224+
});
225+
});
190226
});
191227

192228
describe('#getIamRoleName', () => {
@@ -490,31 +526,6 @@ describe('ServerlessStepFunctions', () => {
490526
serverlessStepFunctions.provider.request.restore();
491527
});
492528
});
493-
494-
it('should describeExecution with status FAILED', () => {
495-
describeExecutionStub = sinon.stub(serverlessStepFunctions.provider, 'request')
496-
.returns(BbPromise.resolve({ status: 'FAILED' }));
497-
const getExecutionHistoryStub = sinon
498-
.stub(serverlessStepFunctions, 'getExecutionHistory')
499-
.returns(BbPromise.resolve({ events: [{ executionFailedEventDetails: 'error' }] }));
500-
501-
serverlessStepFunctions.describeExecution()
502-
.then(() => {
503-
expect(describeExecutionStub.calledOnce).to.be.equal(true);
504-
expect(describeExecutionStub.calledWithExactly(
505-
'StepFunctions',
506-
'describeExecution',
507-
{
508-
executionArn: serverlessStepFunctions.executionArn,
509-
},
510-
serverlessStepFunctions.options.stage,
511-
serverlessStepFunctions.options.region
512-
)).to.be.equal(true);
513-
expect(getExecutionHistoryStub.calledOnce).to.be.equal(true);
514-
serverlessStepFunctions.provider.request.restore();
515-
serverlessStepFunctions.getExecutionHistory.restore();
516-
});
517-
});
518529
});
519530

520531
describe('#getExecutionHistory()', () => {

0 commit comments

Comments
 (0)