IP Library › Granted Patent US 11,474,930
Granted Patent B2
US 11,474,930 · App. 16/719,999 · Granted Oct 18, 2022

Software bug reproduction

Inventors: Wei Guo (Sunnyvale, CA); Deepika Rajendra Kalani (Santa Clara, CA); Yuanjun Yao (Durham, NC); Mihir Patil (Santa Clara, CA); Aravinda Kidambi Srinivasan (Mountain View, CA); Yang Ping (San Jose, CA)
Assignee: VMWARE, INC.
G06F11/3664G06F11/3461G06F11/364G06F11/3636
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,474,930
App. No.
16/719,999
Granted
Oct 18, 2022
Kind
B2
Abstract

Example methods and systems for software bug reproduction. One example method may comprise obtaining log information associated with multiple transactions processed by a control-plane node to configure a set of data-plane nodes and transform an initial network state to a first network state; and configuring a replay environment that is initialized to the initial network state, and includes a mock control-plane node and a set of mock data-plane nodes. The method may also comprise, based on the log information, replaying the multiple transactions using the mock control-plane node to configure the set of mock data-plane nodes and transform the replay environment from the initial network state to a second network state. Based on a comparison between the first network state and the second network state, a determination may be made as to whether a software bug is successfully reproduced in the replay environment.

Claims (62)

1. A method for a computer system to perform software bug reproduction, the method comprising:

obtaining log information associated with multiple transactions atomically processed by a control-plane node to configure a set of data-plane nodes and transform an initial network state to a first network state, wherein each of the transactions is assigned with a unique transaction identifier (ID), and wherein the multiple transactions include management-plane, control-plane, and data-plane configuration transactions that respectively originate from a management-plane node, from the control-plane node, and from at least one of the set of data-plane nodes;

configuring a replay environment that is initialized to the initial network state, and includes a mock control-plane node and a set of mock data-plane nodes to respectively mimic the control-plane node and set of data-plane nodes;

based on the log information, replaying the multiple transactions using the mock control-plane node to configure the set of mock data-plane nodes and transform the replay environment from the initial network state to a second network state, wherein the transaction ID of each transaction is used to track a progress or result of the transaction throughout a processing pipeline of the mock control-plane node;

based on a comparison between the first network state and the second network state, determining whether a software bug is successfully reproduced in the replay environment; and

debugging at least one of a correctness problem or a performance problem, in the configuration of the set of data-plane nodes, that is caused by the software bug.

2. The method of claim 1 , wherein obtaining the log information comprises:

capturing the multiple transactions from the control-plane node operating in a production environment to generate the log information.

3. The method of claim 2 , wherein obtaining the log information comprises:

generating the log information associated with transactions that include one or more of: (a) management-plane transactions associated with the management-plane node, (b) data-plane transactions associated with the set of data-plane nodes, and (c) replication transactions associated with a cluster that includes the control-plane node.

4. The method of claim 1 , wherein replaying the multiple transactions comprises:

processing, each of the multiple transactions, using an application implemented by the mock control-plane node to perform at least one of: distributed firewall configuration, logical network configuration, logical switch configuration, and logical router configuration.

5. The method of claim 1 , wherein replaying the multiple transactions comprises:

analyzing timestamp information associated with the multiple transactions; and

based on the timestamp information, feeding the multiple transactions to the mock control-plane node at a replay speed.

6. The method of claim 1 , wherein determining whether the software bug is successfully reproduced comprises:

identifying the first network state based on first information generated by a publisher component of the control-plane node, wherein the publisher component is capable of pushing configuration changes to the set of data-plane nodes in a production environment; and

identifying the second network state based on second information generated by a mock publisher component of the mock control-plane node, wherein the mock publisher component is capable of pushing configuration changes to the set of mock data-plane nodes in the replay environment.

7. The method of claim 1 , wherein determining whether the software bug is successfully reproduced comprises:

in response to identifying a match between the first network state with the second network state, determining that the software bug is successfully reproduced.

8. A non-transitory computer-readable storage medium that includes a set of instructions which, in response to execution by a processor of a computer system, cause the processor to perform a method of software bug reproduction, wherein the method comprises:

obtaining log information associated with multiple transactions atomically processed by a control-plane node to configure a set of data-plane nodes and transform an initial network state to a first network state, wherein each of the transactions is assigned with a unique transaction identifier (ID), and wherein the multiple transactions include management-plane, control-plane, and data-plane configuration transactions that respectively originate from a management-plane node, from the control-plane node, and from at least one of the set of data-plane nodes;

configuring a replay environment that is initialized to the initial network state, and includes a mock control-plane node and a set of mock data-plane nodes to respectively mimic the control-plane node and set of data-plane nodes;

based on the log information, replaying the multiple transactions using the mock control-plane node to configure the set of mock data-plane nodes and transform the replay environment from the initial network state to a second network state, wherein the transaction ID of each transaction is used to track a progress or result of the transaction throughout a processing pipeline of the mock control-plane node;

based on a comparison between the first network state and the second network state, determining whether a software bug is successfully reproduced in the replay environment; and

debugging at least one of a correctness problem or a performance problem, in the configuration of the set of data-plane nodes, that is caused by the software bug.

9. The non-transitory computer-readable storage medium of claim 8 , wherein obtaining the log information comprises:

capturing the multiple transactions from the control-plane node operating in a production environment to generate the log information.

10. The non-transitory computer-readable storage medium of claim 9 , wherein obtaining the log information comprises:

generating the log information associated with transactions that include one or more of: (a) management-plane transactions associated with the management-plane node, (b) data-plane transactions associated with the set of data-plane nodes, and (c) replication transactions associated with a cluster that includes the control-plane node.

11. The non-transitory computer-readable storage medium of claim 8 , wherein replaying the multiple transactions comprises:

processing, each of the multiple transactions, using an application implemented by the mock control-plane node to perform at least one of: distributed firewall configuration, logical network configuration, logical switch configuration, and logical router configuration.

12. The non-transitory computer-readable storage medium of claim 8 , wherein replaying the multiple transactions comprises:

analyzing timestamp information associated with the multiple transactions; and

based on the timestamp information, feeding the multiple transactions to the mock control-plane node at a replay speed.

13. The non-transitory computer-readable storage medium of claim 8 , wherein determining whether the software bug is successfully reproduced comprises:

identifying the first network state based on first information generated by a publisher component of the control-plane node, wherein the publisher component is capable of pushing configuration changes to the set of data-plane nodes in a production environment; and

identifying the second network state based on second information generated by a mock publisher component of the mock control-plane node, wherein the mock publisher component is capable of pushing configuration changes to the set of mock data-plane nodes in the replay environment.

14. The non-transitory computer-readable storage medium of claim 8 , wherein determining whether the software bug is successfully reproduced comprises:

in response to identifying a match between the first network state with the second network state, determining that the software bug is successfully reproduced.

15. A computer system configured to perform software bug reproduction, the computer system comprising:

a processor; and

a non-transitory computer-readable medium having stored thereon instructions that, in response to execution by the processor, cause the processor to:

obtain log information associated with multiple transactions atomically processed by a control-plane node to configure a set of data-plane nodes and transform an initial network state to a first network state, wherein each of the transactions is assigned with a unique transaction identifier (ID), and wherein the multiple transactions include management-plane, control-plane, and data-plane configuration transactions that respectively originate from a management-plane node, from the control-plane node, and from at least one of the set of data-plane nodes;

configure a replay environment that is initialized to the initial network state, and includes a mock control-plane node and a set of mock data-plane nodes to respectively mimic the control-plane node and set of data-plane nodes;

based on the log information, replay the multiple transactions using the mock control-plane node to configure the set of mock data-plane nodes and transform the replay environment from the initial network state to a second network state, wherein the transaction ID of each transaction is used to track a progress or result of the transaction throughout a processing pipeline of the mock control-plane node;

based on a comparison between the first network state and the second network state, determine whether a software bug is successfully reproduced in the replay environment; and

debug at least one of a correctness problem or a performance problem, in the configuration of the set of data-plane nodes, that is caused by the software bug.

16. The computer system of claim 15 , wherein the instructions that cause the processor to obtain the log information cause the processor to:

capture the multiple transactions from the control-plane node operating in a production environment to generate the log information.

17. The computer system of claim 16 , wherein the instructions that cause the processor to obtain the log information cause the processor to:

generate the log information associated with transactions that include one or more of: (a) management-plane transactions associated with the management-plane node, (b) data-plane transactions associated with the set of data-plane nodes, and (c) replication transactions associated with a cluster that includes control-plane node.

18. The computer system of claim 15 , wherein the instructions that cause the processor to replay the multiple transactions cause the processor to:

process, each of the multiple transactions, using an application implemented by the mock control-plane node to perform at least one of: distributed firewall configuration, logical network configuration, logical switch configuration, and logical router configuration.

19. The computer system of claim 15 , wherein the instructions that cause the processor to replay the multiple transactions cause the processor to:

analyze timestamp information associated with the multiple transactions; and

based on the timestamp information, feed the multiple transactions to the mock control-plane node at a replay speed.

20. The computer system of claim 15 , wherein the instructions that cause the processor to determine whether the software bug is successfully reproduced cause the processor to:

identify the first network state based on first information generated by a publisher component of the control-plane node, wherein the publisher component is capable of pushing configuration changes to the set of data-plane nodes in a production environment; and

identify the second network state based on second information generated by a mock publisher component of the mock control-plane node, wherein the mock publisher component is capable of pushing configuration changes to the set of mock data-plane nodes in the replay environment.

21. The computer system of claim 15 , wherein the instructions that cause the processor to determine whether the software bug is successfully reproduced cause the processor to:

in response to identifying a match between the first network state with the second network state, determine that the software bug is successfully reproduced.

Assignments (2)
CHANGE OF NAME Recorded Apr 15, 2024
From: VMWARE, INC.
To: VMWARE LLC
Reel/Frame 067102/0395 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 19, 2019
From: GUO, WEI; KALANI, DEEPIKA RAJENDRA; YAO, YUANJUN; PATIL, MIHIR; KIDAMBI SRINIVASAN, ARAVINDA; PING, YANG
To: VMWARE, INC.
Reel/Frame 051329/0188 →
Continuity (1)
Related Publication 20210191842A1 · Jun 24, 2021