IP Library Granted Patent US 10,698,798
Granted Patent B2
US 10,698,798 · App. 16/202,901 · Granted Jun 30, 2020

Asynchronous consumer-driven contract testing in micro service architecture

Inventor: Yingqiao Liu (Shanghai, CN)
Assignee: SAP SE
G06F11/3672G06F9/546H04L63/123H04L67/26H04L67/34G06F2209/548
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 10,698,798
App. No.
16/202,901
Granted
Jun 30, 2020
Kind
B2
Abstract

A method of verifying, during a continuous integration (CI) and continuous delivery (CD) process, that an asynchronous message contract between a consumer service and a provider service in a microservice architecture has not been broken by a change to the provider service is disclosed. The asynchronous message contract is retrieved from a central server. A test message queue is created, the test message queue being separate from an existing message queue. Generation of a message based on a precondition specified in the asynchronous message contract is triggered. The message is retrieved from the test queue. The message is verified according to the asynchronous message contract, the verifying based on a build error not being generated during the CI and CD process.

Claims (39)

1. A system comprising:

one or more computer processors;

one or more computer memories; and

a set of instructions incorporated into the one or more computer memories, the set of instructions configuring the one or more computer processors to perform operations for verifying, during a continuous integration (CI) and continuous delivery (CD) process, that an asynchronous message contract between a consumer service and a provider service in a microservice architecture has not been broken by a change to the provider service, the operations comprising:

retrieving the asynchronous message contract from a central server;

creating a test message queue, the test message queue being separate from an existing message queue;

triggering generation of a message based on a precondition specified in the asynchronous message contract;

getting the message from the test message queue; and

verifying the message according to the asynchronous message contract, the verifying based on a build error not being generated during the CI and CD process.

2. The system of claim 1 , wherein the precondition includes calling a standard Application Program Interface (API) of the provider service and the triggering of the generation of the message includes performing the calling of the standard API.

3. The system of claim 1 , wherein the satisfaction of the precondition includes calling a non-standard API of the provider service and the triggering of the generation of the message includes writing the non-standard API on-demand and performing the calling of the non-standard API.

4. The system of claim 1 , wherein the generation of the message includes restoring basic master data from a test tenant template corresponding to the message.

5. The system of claim 1 , wherein the asynchronous message contract is pushed to the central server by the consumer service.

6. The system of claim 5 , the operations further comprising selecting the asynchronous message contract based on a phase of the CI and CD process and a code branch in which the asynchronous message contract is stored on the central server.

7. The system of claim 1 , wherein the asynchronous message contract defines matching rules that are compatible with a third-party verification tool and the verifying of the message includes calling the third-party verification tool.

8. A method comprising:

performing, using one or more computer processors, operations for verifying, during a continuous integration (CI) and continuous delivery (CD) process, that an asynchronous message contract between a consumer service and a provider service in a microservice architecture has not been broken by a change to the provider service, the operations comprising:

retrieving, via a network, the asynchronous message contract from a central server;

creating a test message queue, the test message queue being separate from an existing message queue;

triggering generation of a message based on a precondition specified in the asynchronous message contract;

getting the message from the test message queue; and

verifying the message according to the asynchronous message contract, the verifying based on a build error not being generated during the CI and CD process.

9. The method of claim 8 , wherein the precondition includes calling a standard Application Program Interface (API) of the provider service and the triggering of the generation of the message includes performing the calling of the standard API.

10. The method of claim 8 , wherein the satisfaction of the precondition includes calling a non-standard API of the provider service and the triggering of the generation of the message includes writing the non-standard API on-demand and performing the calling of the non-standard API.

11. The method of claim 8 , wherein the generation of the message includes restoring basic master data from a test tenant template corresponding to the message.

12. The method of claim 8 , wherein the asynchronous message contract is pushed to the central server by the consumer service.

13. The method of claim 12 , the operations further comprising selecting the asynchronous message contract based on a phase of the CI and CD process and a code branch in which the asynchronous message contract is stored on the central server.

14. The method of claim 8 , wherein the asynchronous message contract defines matching rules that are compatible with a third-party verification tool and the verifying of the message includes calling the third-party verification tool.

15. A non-transitory machine-readable medium storing instructions that, when executed by one or more computer processors, cause the one or more computer processors to perform operations for verifying, during a continuous integration (CI) and continuous delivery (CD) process, that an asynchronous message contract between a consumer service and a provider service in a microservice architecture has not been broken by a change to the provider service, the operations comprising:

retrieving the asynchronous message contract from a central server;

creating a test message queue, the test message queue being separate from an existing message queue;

triggering generation of a message based on a precondition specified in the asynchronous message contract;

getting the message from the test message queue; and

verifying the message according to the asynchronous message contract, the verifying based on a build error not being generated during the CI and CD process.

16. The non-transitory machine-readable medium of claim 15 , wherein the precondition includes calling a standard Application Program Interface (API) of the provider service and the triggering of the generation of the message includes performing the calling of the standard API.

17. The non-transitory machine-readable medium of claim 15 , wherein the satisfaction of the precondition includes calling a non-standard API of the provider service and the triggering of the generation of the message includes writing the non-standard API on-demand and performing the calling of the non-standard API.

18. The non-transitory machine-readable medium of claim 15 , wherein the generation of the message includes restoring basic master data from a test tenant template corresponding to the message.

19. The non-transitory machine-readable medium of claim 15 , wherein the asynchronous message contract is pushed to the central server by the consumer service.

20. The non-transitory machine-readable medium of claim 19 , the operations further comprising selecting the asynchronous message contract based on a phase of the CI and CD process and a code branch in which the asynchronous message contract is stored on the central server.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 28, 2018
From: LIU, YINGQIAO
To: SAP SE
Reel/Frame 047610/0147 →
Continuity (1)
Related Publication 20200167267A1 · May 28, 2020