IP Library Granted Patent US 11,093,378
Granted Patent B2
US 11,093,378 · App. 16/454,601 · Granted Aug 17, 2021

Testing agent for application dependency discovery, reporting, and management tool

Inventors: Muralidharan Balasubramanian (Gaithersburg, MD); Eric K. Barnum (Midlothian, VA); Julie Dallen (Vienna, VA); David Watson (Arlington, VA)
Assignee: Capital One Services, LLC
G06F11/3692G06F9/546G06F11/302G06F11/3495G06F11/3684G06F11/3688
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 11,093,378
App. No.
16/454,601
Granted
Aug 17, 2021
Kind
B2
Abstract

Techniques for monitoring operating statuses of an application and its dependencies are provided. A monitoring application may collect and report the operating status of the monitored application and each dependency. Through use of existing monitoring interfaces, the monitoring application can collect operating status without requiring modification of the underlying monitored application or dependencies. The monitoring application may determine a problem service that is a root cause of an unhealthy state of the monitored application. Dependency analyzer and discovery crawler techniques may automatically configure and update the monitoring application. Machine learning techniques may be used to determine patterns of performance based on system state information associated with performance events and provide health reports relative to a baseline status of the monitored application. Also provided are techniques for testing a response of the monitored application through modifications to API calls. Such tests may be used to train the machine learning model.

Claims (164)

1. A computer-implemented method comprising:

receiving a user command indicating a start of a testing period;

intercepting, by a testing agent, a first call in a computing system from a first application to a first Application Programming Interface (API) during the testing period;

modifying, by the testing agent, the first call by mutating at least one attribute of the first call, wherein the mutation to the at least one attribute is configured to simulate an artificial unhealthy operating status of the first API by causing the first call to fail;

causing the computing system to process the modified first call and return a result to the first application based on the mutation to the at least one attribute; and

determining an impact of the modified first call on the operating status of the first application,

wherein a second call to the first API is unaffected by mutating the at least one attribute of the first call.

2. The method of claim 1 , wherein the mutation to the at least one attribute comprises a change to a function name associated with the first API.

3. The method of claim 1 , wherein the mutation to the at least one attribute comprises a change to a parameter included in the first call.

4. The method of claim 1 , wherein the mutation to the at least one attribute comprises a change to a destination, container, or scope associated with the first API.

5. The method of claim 1 , wherein determining the impact of the modified first call on the operating status of the first application comprises:

determining, by a monitoring application, the operating status of the first application using one or more monitoring interfaces; and

determining that the first application has an unhealthy operating status based on at least one metric provided by a first monitoring interface associated with the first application satisfying at least one unhealthy operating status threshold.

6. The method of claim 1 , further comprising:

caching, by the testing agent, the unmodified first call;

determining, by a monitoring application, whether the first application was able to recover from the modified first call returning a failed result; and

based on determining that the first application was not able to recover, causing the computing system to process the cached unmodified first call and return a result to the first application based on the at least one attribute.

7. The method of claim 6 , wherein the first application is determined to have been able to recover when the monitoring application determines that the first application was able to retrieve information associated with the first API from another source.

8. The method of claim 6 , wherein the first application is determined to have been able to recover when the monitoring application determines that the first application was able to partially complete processing despite not receiving the information requested from the first API.

9. The method of claim 1 , wherein intercepting the first call to the first API is based on determining that the first API is a dependency of the first application.

10. The method of claim 1 , wherein the testing agent is part of a monitoring application configured to monitor the first application using a plurality of monitoring interfaces,

wherein intercepting the first call to the first API is based on determining that the monitoring application is configured to monitor the first API.

11. A computer-implemented method comprising:

receiving a user command indicating a start of a testing period;

intercepting, by a testing agent, a first call in a computing system from a first application to a first Application Programming Interface (API) during the testing period;

causing the computing system to process the intercepted first call and return a modified result to the first application, wherein the modified result simulates an artificial unhealthy operating status of the first API; and

determining an impact of the modified result to the first call on the operating status of the first application,

wherein a second call to the first API is unaffected by modifying the result of the first call.

12. The method of claim 11 , wherein the modified result simulates an artificial unhealthy operating status of the first API by simulating a result with an artificially high response latency.

13. The method of claim 11 , wherein the modified result simulates an artificial unhealthy operating status of the first API by simulating a result with an artificially high error rate.

14. The method of claim 11 , wherein the modified result simulates an artificial unhealthy operating status of the first API by simulating a result with an artificially high likelihood of non-response.

15. The method of claim 11 , wherein determining the impact of the modified result on the operating status of the first application comprises:

determining, by a monitoring application, the operating status of the first application using one or more monitoring interfaces; and

determining that the first application has an unhealthy operating status based on at least one metric provided by a first monitoring interface associated with the first application satisfying at least one unhealthy operating status threshold.

16. The method of claim 11 , further comprising:

caching, by the testing agent, the first call;

determining, by a monitoring application, whether the first application was able to recover from the modified result to the first call; and

based on determining that the first application was not able to recover, causing the computing system to process the cached first call and return an unmodified result to the first application.

17. The method of claim 16 , wherein the first application is determined to have been able to recover when the monitoring application determines that the first application was able to retrieve information associated with the first API from another source.

18. The method of claim 16 , wherein the first application is determined to have been able to recover when the monitoring application determines that the first application was able to partially complete processing despite not receiving the information requested from the first API.

19. A computer-implemented method comprising:

receiving a user command indicating a start of a testing period;

intercepting, by a testing agent, a first call in a computing system from a first application to a first Application Programming Interface (API) during the testing period;

caching, by the testing agent, the unmodified first call;

modifying, by the testing agent, the first call by mutating at least one attribute of the first call, wherein the mutation to the at least one attribute causes the first call to fail;

causing the computing system to process the modified first call and return a result to the first application based on the mutation to the at least one attribute; and

determining, by a monitoring application and using one or more monitoring interfaces, whether the first application was able to recover from the modified first call returning a failed result; and

based on determining that the first application was not able to recover, causing the computing system to process the cached unmodified first call and return a result to the first application based on the at least one attribute,

wherein a second call to the first API is unaffected by mutating the at least one attribute of the first call.

20. The method of claim 19 , wherein the mutation to the at least one attribute comprises at least one of:

a change to a function name associated with the first API;

a change to a parameter included in the first call; or

a change to a destination, container, or scope associated with the first API.

21. A computer-implemented method comprising:

receiving a user command indicating a start of a testing period;

intercepting, by a testing agent, a first call in a computing system from a first application to a first Application Programming Interface (API) during the testing period;

caching, by the testing agent, the unmodified first call;

modifying, by the testing agent, the first call by mutating at least one attribute of the first call, wherein the mutation to the at least one attribute causes the first call to fail;

causing the computing system to process the modified first call and return a result to the first application based on the mutation to the at least one attribute;

determining an impact of the modified first call on the operating status of the first application;

determining, by a monitoring application, whether the first application was able to recover from the modified first call returning a failed result; and

based on determining that the first application was not able to recover, causing the computing system to process the cached unmodified first call and return a result to the first application based on the at least one attribute,

wherein a second call to the first API is unaffected by mutating the at least one attribute of the first call.

22. A computer-implemented method comprising:

receiving a user command indicating a start of a testing period;

intercepting, by a testing agent, a first call in a computing system from a first application to a first Application Programming Interface (API) during the testing period;

caching, by the testing agent, the first call;

causing the computing system to process the intercepted first call and return a modified result to the first application, wherein the modified result simulates an unhealthy operating status of the first API;

determining an impact of the modified result to the first call on the operating status of the first application;

determining, by a monitoring application, whether the first application was able to recover from the modified result to the first call; and

based on determining that the first application was not able to recover, causing the computing system to process the cached first call and return an unmodified result to the first application,

wherein a second call to the first API is unaffected by modifying the result of the first call.

23. An apparatus, comprising:

one or more processors; and

memory storing instructions that, when executed by the one or more processors, cause the apparatus to:

receive a user command indicating a start of a testing period;

intercept, by a testing agent, a first call in a computing system from a first application to a first Application Programming Interface (API) during the testing period;

modify, by the testing agent, the first call by mutating at least one attribute of the first call, wherein the mutation to the at least one attribute is configured to simulate an artificial unhealthy operating status of the first API by causing the first call to fail;

cause the computing system to process the modified first call and return a result to the first application based on the mutation to the at least one attribute; and

determine an impact of the modified first call on the operating status of the first application,

wherein a second call to the first API is unaffected by mutating the at least one attribute of the first call.

24. The apparatus of claim 23 , wherein the mutation to the at least one attribute comprises a change to a function name associated with the first API.

25. The apparatus of claim 23 , wherein the mutation to the at least one attribute comprises a change to a parameter included in the first call.

26. The apparatus of claim 23 , wherein the mutation to the at least one attribute comprises a change to a destination, container, or scope associated with the first API.

27. The apparatus of claim 23 , wherein the instructions cause the apparatus to determine the impact of the modified first call on the operating status of the first application by causing the apparatus to:

determine, by a monitoring application, the operating status of the first application using one or more monitoring interfaces; and

determine that the first application has an unhealthy operating status based on at least one metric provided by a first monitoring interface associated with the first application satisfying at least one unhealthy operating status threshold.

28. The apparatus of claim 23 , wherein the instructions further cause the apparatus to:

cache, by the testing agent, the unmodified first call;

determine, by a monitoring application, whether the first application was able to recover from the modified first call returning a failed result; and

based on determining that the first application was not able to recover, cause the computing system to process the cached unmodified first call and return a result to the first application based on the at least one attribute.

29. An apparatus, comprising:

one or more processors; and

memory storing instructions that, when executed by the one or more processors, cause the apparatus to:

receive a user command indicating a start of a testing period;

intercept, by a testing agent, a first call in a computing system from a first application to a first Application Programming Interface (API) during the testing period;

cause the computing system to process the intercepted first call and return a modified result to the first application, wherein the modified result simulates an artificial unhealthy operating status of the first API; and

determine an impact of the modified result to the first call on the operating status of the first application,

wherein a second call to the first API is unaffected by modifying the result of the first call.

30. The apparatus of claim 29 , wherein the modified result simulates an artificial unhealthy operating status of the first API by simulating a result with an artificially high response latency.

31. The apparatus of claim 29 , wherein the modified result simulates an artificial unhealthy operating status of the first API by simulating a result with an artificially high error rate.

32. The apparatus of claim 29 , wherein the modified result simulates an artificial unhealthy operating status of the first API by simulating a result with an artificially high likelihood of non-response.

33. The apparatus of claim 29 , wherein the instructions further cause the apparatus to:

cache, by the testing agent, the first call;

determine, by a monitoring application, whether the first application was able to recover from the modified result to the first call; and

based on determining that the first application was not able to recover, cause the computing system to process the cached first call and return an unmodified result to the first application.

34. An apparatus, comprising:

one or more processors; and

memory storing instructions that, when executed by the one or more processors, cause the apparatus to:

receive a user command indicating a start of a testing period;

intercept, by a testing agent, a first call in a computing system from a first application to a first Application Programming Interface (API) during the testing period;

cache, by the testing agent, the unmodified first call;

modify, by the testing agent, the first call by mutating at least one attribute of the first call, wherein the mutation to the at least one attribute causes the first call to fail;

cause the computing system to process the modified first call and return a result to the first application based on the mutation to the at least one attribute; and

determine, by a monitoring application and using one or more monitoring interfaces, whether the first application was able to recover from the modified first call returning a failed result; and

based on determining that the first application was not able to recover, cause the computing system to process the cached unmodified first call and return a result to the first application based on the at least one attribute,

wherein a second call to the first API is unaffected by mutating the at least one attribute of the first call.

35. The apparatus of claim 34 , wherein the mutation to the at least one attribute comprises at least one of:

a change to a function name associated with the first API;

a change to a parameter included in the first call; or

a change to a destination, container, or scope associated with the first API.

36. A non-transitory computer-readable medium storing instructions that, when executed by one or more processors, cause a computing device to perform steps comprising:

receiving a user command indicating a start of a testing period;

intercepting, by a testing agent, a first call in a computing system from a first application to a first Application Programming Interface (API) during the testing period;

modifying, by the testing agent, the first call by mutating at least one attribute of the first call, wherein the mutation to the at least one attribute is configured to simulate an artificial unhealthy operating status of the first API by causing the first call to fail;

causing the computing system to process the modified first call and return a result to the first application based on the mutation to the at least one attribute; and

determining an impact of the modified first call on the operating status of the first application,

wherein a second call to the first API is unaffected by mutating the at least one attribute of the first call.

37. The computer-readable medium of claim 36 , wherein the mutation to the at least one attribute comprises a change to a function name associated with the first API.

38. The computer-readable medium of claim 36 , wherein the mutation to the at least one attribute comprises a change to a parameter included in the first call.

39. The computer-readable medium of claim 36 , wherein the mutation to the at least one attribute comprises a change to a destination, container, or scope associated with the first API.

40. The computer-readable medium of claim 36 , wherein determining the impact of the modified first call on the operating status of the first application comprises:

determining, by a monitoring application, the operating status of the first application using one or more monitoring interfaces; and

determining that the first application has an unhealthy operating status based on at least one metric provided by a first monitoring interface associated with the first application satisfying at least one unhealthy operating status threshold.

41. The computer-readable medium of claim 36 , wherein the instructions cause the apparatus to perform further steps comprising:

caching, by the testing agent, the unmodified first call;

determining, by a monitoring application, whether the first application was able to recover from the modified first call returning a failed result; and

based on determining that the first application was not able to recover, causing the computing system to process the cached unmodified first call and return a result to the first application based on the at least one attribute.

42. A non-transitory computer-readable medium storing instructions that, when executed by one or more processors, cause a computing device to perform steps comprising:

receiving a user command indicating a start of a testing period;

intercepting, by a testing agent, a first call in a computing system from a first application to a first Application Programming Interface (API) during the testing period;

causing the computing system to process the intercepted first call and return a modified result to the first application, wherein the modified result simulates an artificial unhealthy operating status of the first API; and

determining an impact of the modified result to the first call on the operating status of the first application,

wherein a second call to the first API is unaffected by modifying the result of the first call.

43. The computer-readable medium of claim 42 , wherein the modified result simulates an artificial unhealthy operating status of the first API by simulating a result with an artificially high response latency.

44. The computer-readable medium of claim 42 , wherein the modified result simulates an artificial unhealthy operating status of the first API by simulating a result with an artificially high error rate.

45. The computer-readable medium of claim 42 , wherein the modified result simulates an artificial unhealthy operating status of the first API by simulating a result with an artificially high likelihood of non-response.

46. The computer-readable medium of claim 42 , wherein the instructions cause the apparatus to perform further steps comprising:

caching, by the testing agent, the first call;

determining, by a monitoring application, whether the first application was able to recover from the modified result to the first call; and

based on determining that the first application was not able to recover, causing the computing system to process the cached first call and return an unmodified result to the first application.

47. A non-transitory computer-readable medium storing instructions that, when executed by one or more processors, cause a computing device to perform steps comprising:

receiving a user command indicating a start of a testing period;

intercepting, by a testing agent, a first call in a computing system from a first application to a first Application Programming Interface (API) during the testing period;

caching, by the testing agent, the unmodified first call;

modifying, by the testing agent, the first call by mutating at least one attribute of the first call, wherein the mutation to the at least one attribute causes the first call to fail;

causing the computing system to process the modified first call and return a result to the first application based on the mutation to the at least one attribute; and

determining, by a monitoring application and using one or more monitoring interfaces, whether the first application was able to recover from the modified first call returning a failed result; and

based on determining that the first application was not able to recover, causing the computing system to process the cached unmodified first call and return a result to the first application based on the at least one attribute,

wherein a second call to the first API is unaffected by mutating the at least one attribute of the first call.

48. The computer-readable medium of claim 47 , wherein the mutation to the at least one attribute comprises at least one of:

a change to a function name associated with the first API;

a change to a parameter included in the first call; or

a change to a destination, container, or scope associated with the first API.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 2, 2019
From: BALASUBRAMANIAN, MURALIDHARAN; BARNUM, ERIC K.; DALLEN, JULIE; WATSON, DAVID
To: CAPITAL ONE SERVICES, LLC
Reel/Frame 049649/0806 →
Continuity (1)
Related Publication 20200409831A1 · Dec 31, 2020
Cited By (3)
US 12,477,364 US 12,495,319 US 12,591,506