US20190286547A1 - Reproduction of testing scenarios in a continuous integration environment - Google Patents
Reproduction of testing scenarios in a continuous integration environment Download PDFInfo
- Publication number
- US20190286547A1 US20190286547A1 US15/920,143 US201815920143A US2019286547A1 US 20190286547 A1 US20190286547 A1 US 20190286547A1 US 201815920143 A US201815920143 A US 201815920143A US 2019286547 A1 US2019286547 A1 US 2019286547A1
- Authority
- US
- United States
- Prior art keywords
- snapshot
- test
- application
- continuous integration
- running
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3604—Software analysis for verifying properties of programs
- G06F11/3612—Software analysis for verifying properties of programs by runtime analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3664—Environments for testing or debugging software
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/366—Software debugging using diagnostics
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/368—Test management for test version control, e.g. updating test cases to a new software version
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3684—Test management for test design, e.g. generating new test cases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3692—Test management for test results analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/84—Using snapshots, i.e. a logical point-in-time copy of the data
Definitions
- the present disclosure generally relates to computing devices, and more particularly to reproduction of testing scenarios in a continuous integration environment.
- Platforms exist for developing, shipping, and running applications. For example, a platform may allow developers to separate their applications from the infrastructure and treat the infrastructure like a managed application. The platform may help a developer ship software code faster, test faster, deploy faster, and shorten the cycle between writing and running the code. Additionally, the platform may combine kernel containerization features with workflows and tooling that help the developer manage and deploy applications.
- Continuous Integration is a development practice that assists in producing applications ready for deployment.
- application developers may integrate small pieces of software into a project.
- different application developers may work on different aspects of the application.
- An example method of reproducing a test case in a continuous integration environment includes detecting a test failure in a continuous integration environment.
- the continuous integration environment includes a plurality of stages for running a test on an application.
- the method also includes in response to detecting the failure, generating a snapshot while the test is running.
- the snapshot specifies a stage of the plurality of stages and a state of the application at which the failure occurred.
- the method further includes uploading the snapshot to a repository.
- the method also includes restoring the snapshot.
- An example system for reproducing a test case in a continuous integration environment includes a monitor that detects a test failure in a continuous integration environment.
- the continuous integration environment includes a plurality of stages for running a test on an application.
- the system also includes a snapshot module that in response to the monitor detecting the failure, generates a snapshot while the test is running.
- the snapshot specifies a stage of the plurality of stages and a state of the application at which the failure occurred.
- the snapshot module uploads the snapshot to a repository and restores the snapshot to a computing device.
- An example machine-readable medium includes a plurality of machine-readable instructions that when executed by one or more processors are adapted to cause the one or more processors to perform a method including: detecting a test failure in a continuous integration environment, the continuous integration environment including a plurality of stages for running a test on an application; in response to detecting the failure, generating a snapshot while the test is running, the snapshot specifying a stage of the plurality of stages and a state of the application at which the failure occurred; uploading the snapshot to a repository; and restoring the snapshot to a computing device.
- FIG. 1 is a diagram illustrating an example system for reproducing a test case in relation to a continuous integration environment.
- FIG. 2 is an example process flow for reproducing a test case in relation to a continuous integration environment.
- FIG. 3 is an example of a pipeline specified in a file including a plurality of stages.
- FIG. 4 is an example of file including three stages.
- FIG. 5 is an example method flow for reproducing a test case in relation to a continuous integration environment.
- FIG. 6 is an example block diagram for reproducing a test case in relation to a continuous integration environment.
- a continuous integration environment may include a pipeline having a plurality of stages.
- the plurality of stages includes a build stage, a unit testing stage, and an integration testing stage.
- a test may help a user detect errors in the code and run at each stage of the plurality of stages. An error may also be referred to as a bug.
- the environment is typically cleaned as part of a cleanup stage. Accordingly, relevant resources (e.g., a physical host, virtual machines, containers, and storage space) are freed.
- a problem may arise when a new error occurs and the environment has already been cleaned. For example, it may be difficult to debug the code because the environment in which the test was running and its associated data has been wiped out. Additionally, log files may not be detailed enough and may be missing crucial information regarding the system state.
- a solution to this problem of debugging the code without sufficient information may include stopping the test when a new error occurs. Doing so, however, may disrupt the continuous integration flow.
- the present disclosure provides techniques to save the system state when a new bug occurs, and to clean the continuous integration environment and reproduce the issue later when desired. For example, a test failure may be detected and the relevant points snapshotted, without blocking the continuous flow of the test.
- FIG. 1 is a diagram illustrating an example system 100 for reproducing a test case in relation to a continuous integration environment.
- System 100 may be used for generating one or more snapshots in response to detecting a test failure and generating the snapshot, while the test is running in the continuous integration environment.
- System 100 includes a computer system 102 and hardware 110 .
- computer system 102 is coupled over a network (not shown).
- the network may be a private network (e.g., local area network (LAN), wide area network (WAN), intranet, etc.), a public network (e.g., the Internet), or a combination thereof.
- LAN local area network
- WAN wide area network
- intranet e.g., the Internet
- the network may include various configurations and use various protocols including virtual private networks, wide area networks, local networks, private networks using communication protocols proprietary to one or more companies, cellular and other wireless networks, Internet relay chat channels (IRC), instant messaging, simple mail transfer protocols (SMTP), Ethernet, Wi-Fi and Hypertext Transfer Protocol (HTTP), and various combinations of the foregoing.
- IRC Internet relay chat channels
- SMTP simple mail transfer protocols
- Ethernet Ethernet
- Wi-Fi Wireless FTP
- HTTP Hypertext Transfer Protocol
- Computer system 102 may be coupled to hardware 110 such as central processor unit (CPU) 112 for executing software (e.g., machine-readable instructions) and using or updating data stored in memory 114 .
- Hardware 110 may include more than one CPU 112 .
- a “CPU” may also be referred to as a “processor” or “physical processor” herein.
- a CPU shall refer to a device capable of executing instructions encoding arithmetic, logical, or I/O operations.
- a CPU may follow the Von Neumann architectural model and may include an arithmetic logic unit (ALU), a control unit, and a plurality of registers.
- ALU arithmetic logic unit
- a CPU may be a single-core CPU that is typically capable of executing one instruction at a time (or processing a single pipeline of instructions), or a multi-core CPU that may simultaneously execute multiple instructions.
- a CPU may be implemented as a single- integrated circuit, two or more integrated circuits, or may be a component of a multi-chip module (e.g., in which individual microprocessor dies are included in a single integrated circuit package and hence share a single socket).
- Memory 114 may be one or more of many different types of memory. “Memory” herein shall refer to volatile or non-volatile memory, such as random access memory (RAM), read-only memory (ROM), electrically erasable ROM (EEPROM), or any other memory capable of storing data. Some types of memory, such as solid state drives typically have relatively larger storage volume but relatively slower performance. Other types of memory, such as those used for RAM, are optimized for speed and may be referred to as “working memory” or “main memory.” The various types of memory may store information in the form of software and data. The software may include an operating system and various other software applications. Additionally, hardware 110 may include other I/O devices 116 .
- RAM random access memory
- ROM read-only memory
- EEPROM electrically erasable ROM
- main memory main memory
- Computer system 102 includes a container 132 , and an application 104 may execute in the container.
- application 104 is executable on CPU 112 and is not downloaded onto computer system 102 .
- a user may desire to build, test, and/or deploy application 104 in a continuous integration environment. Continuous integration is a development practice in which developers may integrate code into a shared code repository several times a day. A developer may also be referred to as a user in the present disclosure. Each check-in is then verified by an automated build, allowing teams to detect problems early. A team of application developers may work together to deploy application 104 by tracking its progress in the code repository, with each additional commit issuing a build of the application.
- a developer may develop on one or more applications and services, and then integrate them into a continuous integration and deployment workflow.
- the developer may write software code locally and share her development stack via the platform with her colleagues.
- the development of the application revolves around many steps, including compiling of source code, resource generation, and packaging of the solution.
- developers may push their software code and the stack they are developing onto a test environment and execute tests on the code. From the testing environment, the developers may then push the images into production and deploy code. Automation may continually integrate any checked-in changes, thus rebuilding the project automatically.
- Computer system 102 includes an automation server 106 and an application platform 108 for developing, shipping, and/or running applications 104 .
- Automation server 106 automates tasks associated with building, testing, and/or deploying software.
- Automation server 106 executes a defined list of steps and may perform continuous integration and build automation.
- automation server 106 is a JENKINS® server.
- automation server 106 may compile JAVA® source code and build a JAVA ARCHIVE® (JAR) from the resulting classes. Trademarks are the property of their respective owners.
- a trigger for automation server 106 to execute the defined list of steps may be time-based (e.g., every 15 minutes) or event-based (e.g., after a new commit in a repository).
- Automation server 106 may perform a build, execute a shell script, archive a build result, and/or run software tests associated with application 104 .
- Automation server 106 includes a monitor 120 that monitors and analyzes debug information about application 104 .
- Monitor 120 may detect a test failure in a continuous integration environment.
- the continuous integration environment may include a plurality of stages for running a test on application 104 .
- automation server 106 processes a file (e.g., JENKINS file) that provides a representation of the continuous integration environment by specifying a plurality of stages for running a test on application 104 .
- Monitor 120 monitors the execution of the steps and may freeze the process, if one of the steps fails.
- Monitor 120 may also send a notification in case of a test success or failure.
- monitor 120 detects a test failure by detecting an exit code having a first value in accordance with running the test.
- Application platform 108 enables separation of applications from the infrastructure so that software may be delivered quickly.
- a user may manage application platform 108 similarly to how the user manages applications.
- application platform 108 is a containers platform.
- Application platform 108 provides the user with the ability to package and run an application in a loosely isolated environment called a container 132 . The isolation and security may allow the user to run many containers simultaneously on a given host. Containers may run directly within the host machine's kernel, without the extra load of a hypervisor.
- Application platform 108 may streamline the development lifecycle by allowing the user to work in standardized environments using local containers that provide applications and services.
- a container may be used for continuous integration and continuous delivery (CI/CD) workflows.
- CI/CD continuous integration and continuous delivery
- Computer system 102 also includes a snapshot module 122 and is coupled to a repository 130 .
- snapshot module 122 In response to detecting the failure, snapshot module 122 generates a snapshot 124 while the test is running. Snapshot 124 specifies a stage of the plurality of stages and a state of the application at which the failure occurred. Snapshot module 122 may communicate with application platform 108 and run namespaces inside container 132 . Snapshot module 122 may be incorporated within or separate from application platform 108 . In an example, snapshot module 122 generates a snapshot of the state of the running application into a collection of files and restores from these files the application from the last point the snapshot was generated.
- the continuous integration environment is encapsulated inside a namespace that may run inside container 132 .
- the namespace may include processes, files, filesystems, and/or packages that determine how the system behaves.
- snapshot module 122 generates snapshot 124 by transforming the namespace into a file.
- transforming the namespace into the file includes serializing the state of the application into the file, where the state provides an indication of the stage at which the failure occurred along with the state of the processes.
- the state of the application includes one or more processes, each process having one or more variables and associated data.
- snapshot module 122 may freeze the one or more processes and generate snapshot 124 specifying a stage of the plurality of stages and a state of the application at which the failure occurred.
- Snapshot module 122 uploads snapshot 124 to repository 130 , while the test is running. For example, snapshot module 122 freezes at least apart of application 104 , generates snapshot 124 , and stores the snapshot to persistent storage as a collection of files. Repository 130 stores snapshots and images. Snapshot module 122 restores the snapshot to a computing device, which may be computing device 102 or another computing device. In an example, snapshot module 122 receives a request to restore the snapshot and in response, deploys a container and runs the container including the namespace. In this example, a user may download the snapshot from the repository and run it from the stage at which the test failure was detected, without any further coding or setup to obtain that state.
- the snapshot may be deployed inside the container and start off at the stage at which the test failure was detected, with the associated state of the application at which the failure occurred. Accordingly, the user is able to create the same space (e.g., namespace) with the same state detected at test failure on computing device 102 or another computing device.
- snapshot module 122 is CRIU® (Checkpoint/Restore in Userspace) and is installed on computing device 102 .
- FIG. 2 is an example process flow 200 for reproducing a test case in relation to a continuous integration environment.
- a repository hosting service 204 provides an indication to automation server 106 to run tests on changes pushed to it.
- repository hosting service 204 is GITHUB®
- automation server 106 is JENKINS®
- a user pushes code of application 104 to a repository (e.g., repository hosting service 204 ) managed by the repository hosting service.
- JENKINS® may be triggered by GITHUB® to run tests on application 104 in response to code being pushed to the repository.
- automation server 106 reads a file 208 stored at repository hosting service 204 to determine where to run the steps, which steps to enable snapshot-mechanism, where to store the snapshot, etc.
- File 208 may be a text file that contains the definition of a pipeline.
- a user may specify the pipeline, which may be the test run on application code.
- file 208 is a JENKINS® file that specifies a pipeline including two stages. A first stage specifies the containers that should be running (e.g., MYSQL® container and abstract programming interface (API) server container), and a second stage specifies a command to run a particular test, provides the test framework (e.g., PYTEST®), and the storage in which to store the snapshots.
- the containers that should be running e.g., MYSQL® container and abstract programming interface (API) server container
- API abstract programming interface
- File 208 may include a command to import a library 210 into the file representing the continuous integration.
- the library may include an API 212 that may be invoked to provide services to a user, such as generating a snapshot or providing notification of a test failure.
- File 208 may represent a continuous integration environment including a pipeline 214 , which includes steps within stages.
- the pipeline includes a plurality of stages for running a test on an application.
- File 208 may include one or more pipelines.
- API 212 may provide various API calls that are invocable by a user to utilize the services offered by the API.
- An API call provides one or more services and may also include one or more parameters.
- a user may invoke an API call offered by API 212 to specify that a test be run on pipeline 214 or a particular stage of the pipeline.
- the API call may receive as a parameter a user input specifying a pipeline and in response, may run the test on at least a portion of the specified pipeline.
- an API call offered by API 212 communicates with snapshot module 122 and generates snapshot 124 .
- invocation of the API call may be a request from the user to generate the snapshot.
- API 212 may generate the snapshot.
- FIG. 3 is an example of a pipeline 300 specified in file 208 including a plurality of stages.
- Pipeline 300 may correspond to file 214 .
- the plurality of stages includes a first stage 302 “Build,” a second stage 304 “Unit Tests,” and a third stage 306 “Integration Tests.”
- the plurality of stages included in pipeline 214 may include more or fewer than the stages provided in FIG. 3 .
- the testing of software code of application 104 may progress through each of these stages in the continuous integration environment.
- FIG. 4 is an example of a file 400 including first stage 302 “Build,” second stage 304 “Unit Tests,” and third stage 306 “Integration Tests.”
- File 400 may correspond to file 208 .
- Automation server 106 may execute file 208 and detect that tests with a snapshot option are being run.
- a snapshot option is an option to generate a snapshot of a state of the application and/or test run.
- Automation server 106 may run an agent that reads input/output (I/O) streams (e.g., stdout or stderr) from the container running the test on application platform 108 .
- I/O input/output
- first stage 302 “Build” may be represented by “stage ('Build project')” and may specify a build of the project. First stage 302 may further specify an image including or referencing compilers and build tools for completion of the first stage.
- automation server 106 may use the image “image1” specified in file 208 in the first stage.
- First stage 302 “Build” may include a command parameter that provides all the commands for implementing the build of the project and may further include an exitCode parameter having a particular value “1”. If a command exits with an exit code equal to the particular value, monitor 120 may determine that a test failure has occurred. In response to monitor 120 detecting the failure, snapshot module 122 may execute a snapshot procedure that generates snapshot 124 while the test is running.
- the snapshot may specify first stage 302 “Build” as being the stage at which the failure occurred and further specify a state of the application at which the failure occurred.
- snapshot module 122 starts a snapshot procedure by sending an API request to application program 108 specifying the container(s) and the directory that will be placed in the storage.
- second stage 304 may be represented by “stage (‘Run unit-tests’)” and may specify that unit tests should be run on the project. Second stage 304 may further specify the image including or referencing compilers and build tools for completion of the second stage. Second stage 304 may include a command parameter that provides all the commands for implementing the testing of the project and may further include a textContains parameter having a particular value “FAIL”. If during the execution of the command in the second stage, a “FAIL:” is present in the output, monitor 120 may determine that a test failure has occurred. In response to monitor 120 detecting the failure, snapshot module 122 may execute a snapshot procedure that generates a snapshot while the test is running. The snapshot may specify second stage 304 “Unit Tests” as being the stage at which the failure occurred and further specify a state of the application at which the failure occurred.
- third stage 306 may be represented by “stage (‘Run integration-tests’)” and may specify that integration tests should be run on the project. Third stage 306 may specify that the integration test should have two components before running the test: monogodb aand nginx. Monitor 120 may detect whether a failure occurs during the third stage. In response to monitor 120 detecting the failure, snapshot module 122 may execute a snapshot procedure that generates a snapshot while the test is running. The snapshot may specify third stage 306 “Integration Tests” as being the stage at which the failure occurred and further specify a state of the application at which the failure occurred. After the test is finished executing, the container may be removed, unless it is used in a next step.
- stage ‘Run integration-tests’
- automation server 106 may send a notification with one or more commands to execute, where execution of the one or more commands causes restoration of the state and the debugging information and additional information (e.g., a location of where the snapshots are stored and the tests that failed).
- additional information e.g., a location of where the snapshots are stored and the tests that failed.
- the example file illustrated in FIG. 4 is not limiting and another file may include additional, fewer, or different commands than that shown in this figure.
- the file may include three commands, but only specifies that a snapshot be generated if the second command fails. In this example, if the first or third command fails, the snapshot is not generated. This may be useful if it is desirable to discard failures of some commands, but not others.
- automation server 106 may request that the plurality of stages specified in file 208 be executed on application platform 108 .
- application platform 108 is a DOCKER® host that can be downloaded from a repository specified in “Library.Agent.Image.ContainerListener” (see FIG. 4 ).
- Automation server 106 may delegate application platform 108 to run container 132 from snapshot 124 . The image and the container configurations allow the container to execute code and to communicate with application platform 108 for generating snapshots.
- the container running that step or monitor 120 may send a notification to snapshot module 122 that causes snapshot module 122 to generate a snapshot while the test is running, where the snapshot specifies a stage of the plurality of stages and a state of the application at which the failure occurred.
- snapshot module 122 may upload the snapshot to a repository that is specified in file 208 .
- snapshot module may restore the snapshot to a computing device.
- FIG. 5 is an example method flow 500 for reproducing a test case in relation to a continuous integration environment.
- Method 500 is not meant to be limiting and may be used in other applications.
- Method 500 may be performed by processing logic that may include hardware (e.g., circuitry, dedicated logic, programmable logic and microcode), software (such as instructions run on a computer system, specialized hardware, dedicated machine, or processing device), firmware, or a combination thereof.
- method 500 is performed by system 100 illustrated in FIG. 1 .
- blocks of method 500 may be performed on computer system 102 , which may be a client or server computer.
- the order of the actions described below may also be performed according to alternative orderings.
- additional actions may be added and actions that are described may be removed.
- a test failure in a continuous integration environment is detected, the continuous integration environment including a plurality of stages for running a test on an application.
- a snapshot is generated while the test is running, the snapshot specifying a stage of the plurality of stages and a state of the application at which the failure occurred.
- the snapshot is uploaded to a repository.
- the snapshot is restored to a computing device. The restored snapshot specifies the stage of the plurality of stages and the state of the application at which the failure occurred.
- FIG. 6 is an example block diagram 600 for reproducing a test case in relation to a continuous integration environment.
- monitor 120 detects a test failure 604 in a continuous integration environment, the continuous integration environment including a plurality of stages for running a test on an application.
- snapshot module 122 in response to monitor 120 ′s detection of the test failure, generates snapshot 124 while the test is running. Snapshot 124 specifies a stage of the plurality of stages and a state of the application at which the failure occurred.
- snapshot module 122 uploads the snapshot to a repository 608 . Snapshot module 122 may receive a request from a user to restore the snapshot.
- snapshot module 122 restores the snapshot to a computing device 612 .
- application platform 108 runs one or more containers, and the continuous integration environment is represented by a file (e.g., file 208 ) that is executed inside a container (e.g., container 132 ) and includes the plurality of stages.
- the snapshot module 122 may receive a first request from the user to restore snapshot 124 .
- snapshot module 122 sends a second request to application platform 108 to add a second container or sends the second request to another application platform executing on a computing device different from computing device 102 .
- the application platform adds the second container.
- Snapshot module 122 retrieves snapshot 124 from the repository (e.g., repository 130 ) and restores the snapshot to a computing device (e.g., computing device 102 ).
- snapshot module 122 deploys the snapshot inside the second container.
- computing device 102 may be a client or server computing device including one or more CPUs 112 .
- the client or server computing device may additionally include one or more storage devices each selected from a group including floppy disk, flexible disk, hard disk, magnetic tape, any other magnetic medium, CD-ROM, any other optical medium, RAM, PROM, EPROM, FLASH-EPROM, any other memory chip or cartridge, and/or any other medium from which a processor or computer is adapted to read.
- the one or more storage devices may include stored information that may be made available to one or more computing devices and/or computer programs (e.g., clients) coupled to the client or server using a computer network (not shown).
- the computer network may be any type of network including a LAN, a WAN, an intranet, the Internet, a cloud, and/or any combination of networks thereof that is capable of interconnecting computing devices and/or computer programs in the system.
- the computing device 102 may include a bus or other communication mechanism for communicating information data, signals, and information between various components of computer system.
- the components may include an input/output (I/O) component that processes a user action, such as selecting keys from a keypad/keyboard, selecting one or more buttons or links, etc., and sends a corresponding signal to the bus.
- I/O input/output
- a user may use the I/O component to invoke API 212 to run a test on application 104 .
- the user may use the I/O component to invoke API 212 to generate a snapshot.
- the I/O component may also include an output component such as a display, and an input control such as a cursor control (such as a keyboard, keypad, mouse, etc.).
- a user may use the I/O component to request that the snapshot be restored to computing device 102 or another computing device.
- An audio I/O component may also be included to allow a user to use voice for inputting information by converting audio signals into information signals. Audio I/O component may allow the user to hear audio.
- a transceiver or network interface may transmit and receive signals between the client or server computing device and other devices via a communications link to a network.
- the transmission is wireless, although other transmission mediums and methods may also be suitable.
- CPU 112 which may be a micro-controller, digital signal processor (DSP), or other processing component, processes these various signals, such as for display on the client device or transmission to other devices via the communications link.
- DSP digital signal processor
- CPU 112 may also control transmission of information, such as cookies or IP addresses, to other devices.
- Components of the client or server computing device may also include a system memory component (e.g., RAM), a static storage component (e.g., ROM), and/or a disk drive.
- Computer system 102 performs specific operations by CPU 112 and other components by executing one or more sequences of instructions contained in the system memory component (e.g., memory 114 ).
- Logic may be encoded in a computer readable medium, which may refer to any medium that participates in providing instructions to CPU 112 for execution. Such a medium may take many forms, including but not limited to, non-volatile media, volatile media, and transmission media.
- non-volatile media includes optical, or magnetic disks, or solid-state drives
- volatile media includes dynamic memory, such as the system memory component
- transmission media includes coaxial cables, copper wire, and fiber optics, including wires that include the bus.
- the logic is encoded in a non-transitory computer readable medium.
- transmission media may take the form of acoustic or light waves, such as those generated during radio wave, optical, and infrared data communications.
- Computer readable media include, for example, floppy disk, flexible disk, hard disk, magnetic tape, any other magnetic medium, CD-ROM, any other optical medium, punch cards, paper tape, any other physical medium with patterns of holes, RAM, PROM, EEPROM, FLASH-EEPROM, any other memory chip or cartridge, or any other medium from which a computer is adapted to read.
- execution of instruction sequences (e.g., method 500 ) to practice the present disclosure may be performed by the client or server computing device.
- a plurality of host machines coupled by the communications link to the network e.g., such as a LAN, WLAN, PTSN, and/or various other wired or wireless networks, including telecommunications, mobile, and cellular phone networks
- the network e.g., such as a LAN, WLAN, PTSN, and/or various other wired or wireless networks, including telecommunications, mobile, and cellular phone networks
- various examples provided by the present disclosure may be implemented using hardware, software, or combinations of hardware and software. Also where applicable, the various hardware components and/or software components set forth herein may be combined into composite components including software, hardware, and/or both without departing from the spirit of the present disclosure. Where applicable, the various hardware components and/or software components set forth herein may be separated into sub-components including software, hardware, or both without departing from the spirit of the present disclosure. In addition, where applicable, it is contemplated that software components may be implemented as hardware components, and vice-versa.
- Application software in accordance with the present disclosure may be stored on one or more computer readable mediums. It is also contemplated that the application software identified herein may be implemented using one or more general purpose or specific purpose computers and/or computer systems, networked and/or otherwise. Where applicable, the ordering of various blocks, actions, or steps described herein may be changed, combined into composite blocks, actions, or steps, and/or separated into sub-blocks, sub-actions, or sub-steps to provide features described herein.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Debugging And Monitoring (AREA)
Abstract
Description
- The present disclosure generally relates to computing devices, and more particularly to reproduction of testing scenarios in a continuous integration environment.
- Platforms exist for developing, shipping, and running applications. For example, a platform may allow developers to separate their applications from the infrastructure and treat the infrastructure like a managed application. The platform may help a developer ship software code faster, test faster, deploy faster, and shorten the cycle between writing and running the code. Additionally, the platform may combine kernel containerization features with workflows and tooling that help the developer manage and deploy applications.
- Continuous Integration (CI) is a development practice that assists in producing applications ready for deployment. During the life cycle of a project, application developers may integrate small pieces of software into a project. As the project grows, different application developers may work on different aspects of the application.
- Methods, systems, and techniques for reproducing a test case in a continuous integration environment are provided.
- An example method of reproducing a test case in a continuous integration environment includes detecting a test failure in a continuous integration environment. The continuous integration environment includes a plurality of stages for running a test on an application. The method also includes in response to detecting the failure, generating a snapshot while the test is running. The snapshot specifies a stage of the plurality of stages and a state of the application at which the failure occurred. The method further includes uploading the snapshot to a repository. The method also includes restoring the snapshot.
- An example system for reproducing a test case in a continuous integration environment includes a monitor that detects a test failure in a continuous integration environment. The continuous integration environment includes a plurality of stages for running a test on an application. The system also includes a snapshot module that in response to the monitor detecting the failure, generates a snapshot while the test is running. The snapshot specifies a stage of the plurality of stages and a state of the application at which the failure occurred. The snapshot module uploads the snapshot to a repository and restores the snapshot to a computing device.
- An example machine-readable medium includes a plurality of machine-readable instructions that when executed by one or more processors are adapted to cause the one or more processors to perform a method including: detecting a test failure in a continuous integration environment, the continuous integration environment including a plurality of stages for running a test on an application; in response to detecting the failure, generating a snapshot while the test is running, the snapshot specifying a stage of the plurality of stages and a state of the application at which the failure occurred; uploading the snapshot to a repository; and restoring the snapshot to a computing device.
- The accompanying drawings, which form a part of the specification, illustrate examples and together with the description, further serve to explain the principles of the disclosure. In the drawings, like reference numbers may indicate identical or functionally similar elements. The drawing in which an element first appears is generally indicated by the left-most digit in the corresponding reference number.
-
FIG. 1 is a diagram illustrating an example system for reproducing a test case in relation to a continuous integration environment. -
FIG. 2 is an example process flow for reproducing a test case in relation to a continuous integration environment. -
FIG. 3 is an example of a pipeline specified in a file including a plurality of stages. -
FIG. 4 is an example of file including three stages. -
FIG. 5 is an example method flow for reproducing a test case in relation to a continuous integration environment. -
FIG. 6 is an example block diagram for reproducing a test case in relation to a continuous integration environment. - It is to be understood that the following disclosure provides many different examples for implementing different features of the present disclosure. Some examples may be practiced without some or all of these specific details. Specific examples of components, modules, and arrangements may be described below to simplify the present disclosure. These are, of course, merely examples and are not intended to be limiting. Additionally, one or more of the examples disclosed below may be combined together.
- Continuous integration is a development practice that assists in producing applications ready for deployment. During the life cycle of a project, application developers may integrate small pieces of software into a project. As the project grows, different application developers may work on different aspects of the application. A continuous integration environment may include a pipeline having a plurality of stages. In an example, the plurality of stages includes a build stage, a unit testing stage, and an integration testing stage. A test may help a user detect errors in the code and run at each stage of the plurality of stages. An error may also be referred to as a bug. After a test is run, the environment is typically cleaned as part of a cleanup stage. Accordingly, relevant resources (e.g., a physical host, virtual machines, containers, and storage space) are freed.
- A problem may arise when a new error occurs and the environment has already been cleaned. For example, it may be difficult to debug the code because the environment in which the test was running and its associated data has been wiped out. Additionally, log files may not be detailed enough and may be missing crucial information regarding the system state.
- A solution to this problem of debugging the code without sufficient information may include stopping the test when a new error occurs. Doing so, however, may disrupt the continuous integration flow. The present disclosure provides techniques to save the system state when a new bug occurs, and to clean the continuous integration environment and reproduce the issue later when desired. For example, a test failure may be detected and the relevant points snapshotted, without blocking the continuous flow of the test.
- The present disclosure provides techniques for reproducing a test case in a continuous integration environment. Unless specifically stated otherwise, as apparent from the following discussion, it is appreciated that throughout the description, discussions utilizing terms such as “determining,” “storing,” “applying,” “receiving,” “sending,” “detecting,” “executing,” “identifying,” “generating,” “providing,” “analyzing,” “uploading,” “restoring,” or the like, refer to the action and processes of a computer system, or similar electronic computing device, that manipulates and transforms data represented as physical (electronic) quantities within the computer system's registers and memories into other data similarly represented as physical quantities within the computer system memories or registers or other such information storage, transmission, or display devices.
-
FIG. 1 is a diagram illustrating anexample system 100 for reproducing a test case in relation to a continuous integration environment.System 100 may be used for generating one or more snapshots in response to detecting a test failure and generating the snapshot, while the test is running in the continuous integration environment.System 100 includes acomputer system 102 andhardware 110. In some examples,computer system 102 is coupled over a network (not shown). The network may be a private network (e.g., local area network (LAN), wide area network (WAN), intranet, etc.), a public network (e.g., the Internet), or a combination thereof. The network may include various configurations and use various protocols including virtual private networks, wide area networks, local networks, private networks using communication protocols proprietary to one or more companies, cellular and other wireless networks, Internet relay chat channels (IRC), instant messaging, simple mail transfer protocols (SMTP), Ethernet, Wi-Fi and Hypertext Transfer Protocol (HTTP), and various combinations of the foregoing. -
Computer system 102 may be coupled tohardware 110 such as central processor unit (CPU) 112 for executing software (e.g., machine-readable instructions) and using or updating data stored inmemory 114.Hardware 110 may include more than oneCPU 112. A “CPU” may also be referred to as a “processor” or “physical processor” herein. A CPU shall refer to a device capable of executing instructions encoding arithmetic, logical, or I/O operations. In an example, a CPU may follow the Von Neumann architectural model and may include an arithmetic logic unit (ALU), a control unit, and a plurality of registers. In a further aspect, a CPU may be a single-core CPU that is typically capable of executing one instruction at a time (or processing a single pipeline of instructions), or a multi-core CPU that may simultaneously execute multiple instructions. In another aspect, a CPU may be implemented as a single- integrated circuit, two or more integrated circuits, or may be a component of a multi-chip module (e.g., in which individual microprocessor dies are included in a single integrated circuit package and hence share a single socket). -
Memory 114 may be one or more of many different types of memory. “Memory” herein shall refer to volatile or non-volatile memory, such as random access memory (RAM), read-only memory (ROM), electrically erasable ROM (EEPROM), or any other memory capable of storing data. Some types of memory, such as solid state drives typically have relatively larger storage volume but relatively slower performance. Other types of memory, such as those used for RAM, are optimized for speed and may be referred to as “working memory” or “main memory.” The various types of memory may store information in the form of software and data. The software may include an operating system and various other software applications. Additionally,hardware 110 may include other I/O devices 116. -
Computer system 102 includes acontainer 132, and anapplication 104 may execute in the container. In an example,application 104 is executable onCPU 112 and is not downloaded ontocomputer system 102. A user may desire to build, test, and/or deployapplication 104 in a continuous integration environment. Continuous integration is a development practice in which developers may integrate code into a shared code repository several times a day. A developer may also be referred to as a user in the present disclosure. Each check-in is then verified by an automated build, allowing teams to detect problems early. A team of application developers may work together to deployapplication 104 by tracking its progress in the code repository, with each additional commit issuing a build of the application. - A developer may develop on one or more applications and services, and then integrate them into a continuous integration and deployment workflow. The developer may write software code locally and share her development stack via the platform with her colleagues. During an application lifecycle build phase, the development of the application revolves around many steps, including compiling of source code, resource generation, and packaging of the solution. When ready, developers may push their software code and the stack they are developing onto a test environment and execute tests on the code. From the testing environment, the developers may then push the images into production and deploy code. Automation may continually integrate any checked-in changes, thus rebuilding the project automatically.
-
Computer system 102 includes anautomation server 106 and anapplication platform 108 for developing, shipping, and/or runningapplications 104.Automation server 106 automates tasks associated with building, testing, and/or deploying software.Automation server 106 executes a defined list of steps and may perform continuous integration and build automation. In an example,automation server 106 is a JENKINS® server. In this example,automation server 106 may compile JAVA® source code and build a JAVA ARCHIVE® (JAR) from the resulting classes. Trademarks are the property of their respective owners. A trigger forautomation server 106 to execute the defined list of steps may be time-based (e.g., every 15 minutes) or event-based (e.g., after a new commit in a repository). -
Automation server 106 may perform a build, execute a shell script, archive a build result, and/or run software tests associated withapplication 104.Automation server 106 includes amonitor 120 that monitors and analyzes debug information aboutapplication 104.Monitor 120 may detect a test failure in a continuous integration environment. The continuous integration environment may include a plurality of stages for running a test onapplication 104. In an example,automation server 106 processes a file (e.g., JENKINS file) that provides a representation of the continuous integration environment by specifying a plurality of stages for running a test onapplication 104.Monitor 120 monitors the execution of the steps and may freeze the process, if one of the steps fails.Monitor 120 may also send a notification in case of a test success or failure. In an example, monitor 120 detects a test failure by detecting an exit code having a first value in accordance with running the test. -
Application platform 108 enables separation of applications from the infrastructure so that software may be delivered quickly. For example, a user may manageapplication platform 108 similarly to how the user manages applications. In an example,application platform 108 is a containers platform.Application platform 108 provides the user with the ability to package and run an application in a loosely isolated environment called acontainer 132. The isolation and security may allow the user to run many containers simultaneously on a given host. Containers may run directly within the host machine's kernel, without the extra load of a hypervisor.Application platform 108 may streamline the development lifecycle by allowing the user to work in standardized environments using local containers that provide applications and services. A container may be used for continuous integration and continuous delivery (CI/CD) workflows. -
Computer system 102 also includes asnapshot module 122 and is coupled to arepository 130. In response to detecting the failure,snapshot module 122 generates asnapshot 124 while the test is running.Snapshot 124 specifies a stage of the plurality of stages and a state of the application at which the failure occurred.Snapshot module 122 may communicate withapplication platform 108 and run namespaces insidecontainer 132.Snapshot module 122 may be incorporated within or separate fromapplication platform 108. In an example,snapshot module 122 generates a snapshot of the state of the running application into a collection of files and restores from these files the application from the last point the snapshot was generated. - In an example, the continuous integration environment is encapsulated inside a namespace that may run inside
container 132. The namespace may include processes, files, filesystems, and/or packages that determine how the system behaves. In an example,snapshot module 122 generatessnapshot 124 by transforming the namespace into a file. In some examples, transforming the namespace into the file includes serializing the state of the application into the file, where the state provides an indication of the stage at which the failure occurred along with the state of the processes. The state of the application includes one or more processes, each process having one or more variables and associated data. To generate the snapshot,snapshot module 122 may freeze the one or more processes and generatesnapshot 124 specifying a stage of the plurality of stages and a state of the application at which the failure occurred. -
Snapshot module 122uploads snapshot 124 torepository 130, while the test is running. For example,snapshot module 122 freezes at least apart ofapplication 104, generatessnapshot 124, and stores the snapshot to persistent storage as a collection of files.Repository 130 stores snapshots and images.Snapshot module 122 restores the snapshot to a computing device, which may be computingdevice 102 or another computing device. In an example,snapshot module 122 receives a request to restore the snapshot and in response, deploys a container and runs the container including the namespace. In this example, a user may download the snapshot from the repository and run it from the stage at which the test failure was detected, without any further coding or setup to obtain that state. The snapshot may be deployed inside the container and start off at the stage at which the test failure was detected, with the associated state of the application at which the failure occurred. Accordingly, the user is able to create the same space (e.g., namespace) with the same state detected at test failure oncomputing device 102 or another computing device. In an example,snapshot module 122 is CRIU® (Checkpoint/Restore in Userspace) and is installed oncomputing device 102. -
FIG. 2 is anexample process flow 200 for reproducing a test case in relation to a continuous integration environment. Ataction 202, arepository hosting service 204 provides an indication toautomation server 106 to run tests on changes pushed to it. In an example,repository hosting service 204 is GITHUB®,automation server 106 is JENKINS®, and a user pushes code ofapplication 104 to a repository (e.g., repository hosting service 204) managed by the repository hosting service. In this example, JENKINS® may be triggered by GITHUB® to run tests onapplication 104 in response to code being pushed to the repository. - At
action 206,automation server 106 reads afile 208 stored atrepository hosting service 204 to determine where to run the steps, which steps to enable snapshot-mechanism, where to store the snapshot, etc.File 208 may be a text file that contains the definition of a pipeline. A user may specify the pipeline, which may be the test run on application code. In an example, file 208 is a JENKINS® file that specifies a pipeline including two stages. A first stage specifies the containers that should be running (e.g., MYSQL® container and abstract programming interface (API) server container), and a second stage specifies a command to run a particular test, provides the test framework (e.g., PYTEST®), and the storage in which to store the snapshots. -
File 208 may include a command to import alibrary 210 into the file representing the continuous integration. The library may include an API 212 that may be invoked to provide services to a user, such as generating a snapshot or providing notification of a test failure.File 208 may represent a continuous integration environment including apipeline 214, which includes steps within stages. The pipeline includes a plurality of stages for running a test on an application.File 208 may include one or more pipelines. - API 212 may provide various API calls that are invocable by a user to utilize the services offered by the API. An API call provides one or more services and may also include one or more parameters. For example, a user may invoke an API call offered by API 212 to specify that a test be run on
pipeline 214 or a particular stage of the pipeline. For example, the API call may receive as a parameter a user input specifying a pipeline and in response, may run the test on at least a portion of the specified pipeline. In another example, an API call offered by API 212 communicates withsnapshot module 122 and generatessnapshot 124. In this example, invocation of the API call may be a request from the user to generate the snapshot. In response to receiving the request, API 212 may generate the snapshot. -
FIG. 3 is an example of apipeline 300 specified infile 208 including a plurality of stages.Pipeline 300 may correspond to file 214. The plurality of stages includes afirst stage 302 “Build,” asecond stage 304 “Unit Tests,” and athird stage 306 “Integration Tests.” The plurality of stages included inpipeline 214 may include more or fewer than the stages provided inFIG. 3 . The testing of software code ofapplication 104 may progress through each of these stages in the continuous integration environment. -
FIG. 4 is an example of afile 400 includingfirst stage 302 “Build,”second stage 304 “Unit Tests,” andthird stage 306 “Integration Tests.”File 400 may correspond to file 208.Automation server 106 may execute file 208 and detect that tests with a snapshot option are being run. A snapshot option is an option to generate a snapshot of a state of the application and/or test run.Automation server 106 may run an agent that reads input/output (I/O) streams (e.g., stdout or stderr) from the container running the test onapplication platform 108. - As shown in
FIG. 4 ,first stage 302 “Build” may be represented by “stage ('Build project')” and may specify a build of the project.First stage 302 may further specify an image including or referencing compilers and build tools for completion of the first stage. To build the project,automation server 106 may use the image “image1” specified infile 208 in the first stage.First stage 302 “Build” may include a command parameter that provides all the commands for implementing the build of the project and may further include an exitCode parameter having a particular value “1”. If a command exits with an exit code equal to the particular value, monitor 120 may determine that a test failure has occurred. In response to monitor 120 detecting the failure,snapshot module 122 may execute a snapshot procedure that generatessnapshot 124 while the test is running. The snapshot may specifyfirst stage 302 “Build” as being the stage at which the failure occurred and further specify a state of the application at which the failure occurred. In an example,snapshot module 122 starts a snapshot procedure by sending an API request toapplication program 108 specifying the container(s) and the directory that will be placed in the storage. - Additionally,
second stage 304 may be represented by “stage (‘Run unit-tests’)” and may specify that unit tests should be run on the project.Second stage 304 may further specify the image including or referencing compilers and build tools for completion of the second stage.Second stage 304 may include a command parameter that provides all the commands for implementing the testing of the project and may further include a textContains parameter having a particular value “FAIL”. If during the execution of the command in the second stage, a “FAIL:” is present in the output, monitor 120 may determine that a test failure has occurred. In response to monitor 120 detecting the failure,snapshot module 122 may execute a snapshot procedure that generates a snapshot while the test is running. The snapshot may specifysecond stage 304 “Unit Tests” as being the stage at which the failure occurred and further specify a state of the application at which the failure occurred. - Moreover,
third stage 306 may be represented by “stage (‘Run integration-tests’)” and may specify that integration tests should be run on the project.Third stage 306 may specify that the integration test should have two components before running the test: monogodb aand nginx.Monitor 120 may detect whether a failure occurs during the third stage. In response to monitor 120 detecting the failure,snapshot module 122 may execute a snapshot procedure that generates a snapshot while the test is running. The snapshot may specifythird stage 306 “Integration Tests” as being the stage at which the failure occurred and further specify a state of the application at which the failure occurred. After the test is finished executing, the container may be removed, unless it is used in a next step. Additionally, after the test is finished executing,automation server 106 may send a notification with one or more commands to execute, where execution of the one or more commands causes restoration of the state and the debugging information and additional information (e.g., a location of where the snapshots are stored and the tests that failed). When the user no longer desires to view this information or is done with the debugging, the user may remove the files (e.g., by selecting a “Delete” button (not shown) in a web user interface provided by automation server 106). - The example file illustrated in
FIG. 4 is not limiting and another file may include additional, fewer, or different commands than that shown in this figure. In another example, the file may include three commands, but only specifies that a snapshot be generated if the second command fails. In this example, if the first or third command fails, the snapshot is not generated. This may be useful if it is desirable to discard failures of some commands, but not others. - Referring back to
FIG. 2 ,automation server 106 may request that the plurality of stages specified infile 208 be executed onapplication platform 108. In an example,application platform 108 is a DOCKER® host that can be downloaded from a repository specified in “Library.Agent.Image.ContainerListener” (seeFIG. 4 ).Automation server 106 may delegateapplication platform 108 to runcontainer 132 fromsnapshot 124. The image and the container configurations allow the container to execute code and to communicate withapplication platform 108 for generating snapshots. If a test failure in the continuous integration environment is detected during execution of a step N, the container running that step or monitor 120 may send a notification tosnapshot module 122 that causessnapshot module 122 to generate a snapshot while the test is running, where the snapshot specifies a stage of the plurality of stages and a state of the application at which the failure occurred. While the test is running,snapshot module 122 may upload the snapshot to a repository that is specified infile 208. At a later point in time, snapshot module may restore the snapshot to a computing device. -
FIG. 5 is anexample method flow 500 for reproducing a test case in relation to a continuous integration environment.Method 500 is not meant to be limiting and may be used in other applications.Method 500 may be performed by processing logic that may include hardware (e.g., circuitry, dedicated logic, programmable logic and microcode), software (such as instructions run on a computer system, specialized hardware, dedicated machine, or processing device), firmware, or a combination thereof. In some examples,method 500 is performed bysystem 100 illustrated inFIG. 1 . For example, blocks ofmethod 500 may be performed oncomputer system 102, which may be a client or server computer. In some examples, the order of the actions described below may also be performed according to alternative orderings. In yet other examples, additional actions may be added and actions that are described may be removed. - At action 502, a test failure in a continuous integration environment is detected, the continuous integration environment including a plurality of stages for running a test on an application. At action 504, in response to detecting the failure, a snapshot is generated while the test is running, the snapshot specifying a stage of the plurality of stages and a state of the application at which the failure occurred. At
action 506, the snapshot is uploaded to a repository. Ataction 508, the snapshot is restored to a computing device. The restored snapshot specifies the stage of the plurality of stages and the state of the application at which the failure occurred. -
FIG. 6 is an example block diagram 600 for reproducing a test case in relation to a continuous integration environment. Ataction 602, monitor 120 detects atest failure 604 in a continuous integration environment, the continuous integration environment including a plurality of stages for running a test on an application. Ataction 604, in response to monitor 120′s detection of the test failure,snapshot module 122 generatessnapshot 124 while the test is running.Snapshot 124 specifies a stage of the plurality of stages and a state of the application at which the failure occurred. Ataction 606,snapshot module 122 uploads the snapshot to arepository 608.Snapshot module 122 may receive a request from a user to restore the snapshot. Ataction 610,snapshot module 122 restores the snapshot to acomputing device 612. - In an example,
application platform 108 runs one or more containers, and the continuous integration environment is represented by a file (e.g., file 208) that is executed inside a container (e.g., container 132) and includes the plurality of stages. Thesnapshot module 122 may receive a first request from the user to restoresnapshot 124. In response to the first request,snapshot module 122 sends a second request toapplication platform 108 to add a second container or sends the second request to another application platform executing on a computing device different fromcomputing device 102. In response to the second request, the application platform adds the second container.Snapshot module 122 retrievessnapshot 124 from the repository (e.g., repository 130) and restores the snapshot to a computing device (e.g., computing device 102). In an example,snapshot module 122 deploys the snapshot inside the second container. - In various implementations,
computing device 102 may be a client or server computing device including one ormore CPUs 112. The client or server computing device may additionally include one or more storage devices each selected from a group including floppy disk, flexible disk, hard disk, magnetic tape, any other magnetic medium, CD-ROM, any other optical medium, RAM, PROM, EPROM, FLASH-EPROM, any other memory chip or cartridge, and/or any other medium from which a processor or computer is adapted to read. The one or more storage devices may include stored information that may be made available to one or more computing devices and/or computer programs (e.g., clients) coupled to the client or server using a computer network (not shown). The computer network may be any type of network including a LAN, a WAN, an intranet, the Internet, a cloud, and/or any combination of networks thereof that is capable of interconnecting computing devices and/or computer programs in the system. - The
computing device 102 may include a bus or other communication mechanism for communicating information data, signals, and information between various components of computer system. The components may include an input/output (I/O) component that processes a user action, such as selecting keys from a keypad/keyboard, selecting one or more buttons or links, etc., and sends a corresponding signal to the bus. For example, a user may use the I/O component to invoke API 212 to run a test onapplication 104. In another example, the user may use the I/O component to invoke API 212 to generate a snapshot. The I/O component may also include an output component such as a display, and an input control such as a cursor control (such as a keyboard, keypad, mouse, etc.). For example, a user may use the I/O component to request that the snapshot be restored tocomputing device 102 or another computing device. An audio I/O component may also be included to allow a user to use voice for inputting information by converting audio signals into information signals. Audio I/O component may allow the user to hear audio. - A transceiver or network interface may transmit and receive signals between the client or server computing device and other devices via a communications link to a network. In an example, the transmission is wireless, although other transmission mediums and methods may also be suitable.
CPU 112, which may be a micro-controller, digital signal processor (DSP), or other processing component, processes these various signals, such as for display on the client device or transmission to other devices via the communications link.CPU 112 may also control transmission of information, such as cookies or IP addresses, to other devices. - Components of the client or server computing device may also include a system memory component (e.g., RAM), a static storage component (e.g., ROM), and/or a disk drive.
Computer system 102 performs specific operations byCPU 112 and other components by executing one or more sequences of instructions contained in the system memory component (e.g., memory 114). Logic may be encoded in a computer readable medium, which may refer to any medium that participates in providing instructions toCPU 112 for execution. Such a medium may take many forms, including but not limited to, non-volatile media, volatile media, and transmission media. In various implementations, non-volatile media includes optical, or magnetic disks, or solid-state drives, volatile media includes dynamic memory, such as the system memory component, and transmission media includes coaxial cables, copper wire, and fiber optics, including wires that include the bus. In an example, the logic is encoded in a non-transitory computer readable medium. In an example, transmission media may take the form of acoustic or light waves, such as those generated during radio wave, optical, and infrared data communications. - Some common forms of computer readable media include, for example, floppy disk, flexible disk, hard disk, magnetic tape, any other magnetic medium, CD-ROM, any other optical medium, punch cards, paper tape, any other physical medium with patterns of holes, RAM, PROM, EEPROM, FLASH-EEPROM, any other memory chip or cartridge, or any other medium from which a computer is adapted to read.
- In some examples, execution of instruction sequences (e.g., method 500) to practice the present disclosure may be performed by the client or server computing device. In various other examples of the present disclosure, a plurality of host machines coupled by the communications link to the network (e.g., such as a LAN, WLAN, PTSN, and/or various other wired or wireless networks, including telecommunications, mobile, and cellular phone networks) may perform instruction sequences to practice the present disclosure in coordination with one another.
- Where applicable, various examples provided by the present disclosure may be implemented using hardware, software, or combinations of hardware and software. Also where applicable, the various hardware components and/or software components set forth herein may be combined into composite components including software, hardware, and/or both without departing from the spirit of the present disclosure. Where applicable, the various hardware components and/or software components set forth herein may be separated into sub-components including software, hardware, or both without departing from the spirit of the present disclosure. In addition, where applicable, it is contemplated that software components may be implemented as hardware components, and vice-versa.
- Application software in accordance with the present disclosure may be stored on one or more computer readable mediums. It is also contemplated that the application software identified herein may be implemented using one or more general purpose or specific purpose computers and/or computer systems, networked and/or otherwise. Where applicable, the ordering of various blocks, actions, or steps described herein may be changed, combined into composite blocks, actions, or steps, and/or separated into sub-blocks, sub-actions, or sub-steps to provide features described herein.
- The foregoing disclosure is not intended to limit the present disclosure to the precise forms or particular fields of use disclosed. As such, it is contemplated that various alternate examples and/or modifications to the present disclosure, whether explicitly described or implied herein, are possible in light of the disclosure. Changes may be made in form and detail without departing from the scope of the present disclosure. Thus, the present disclosure is limited only by the claims.
Claims (20)
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/920,143 US10402302B1 (en) | 2018-03-13 | 2018-03-13 | Reproduction of testing scenarios in a continuous integration environment |
US16/557,629 US10877871B2 (en) | 2018-03-13 | 2019-08-30 | Reproduction of testing scenarios in a continuous integration environment |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/920,143 US10402302B1 (en) | 2018-03-13 | 2018-03-13 | Reproduction of testing scenarios in a continuous integration environment |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US16/557,629 Continuation US10877871B2 (en) | 2018-03-13 | 2019-08-30 | Reproduction of testing scenarios in a continuous integration environment |
Publications (2)
Publication Number | Publication Date |
---|---|
US10402302B1 US10402302B1 (en) | 2019-09-03 |
US20190286547A1 true US20190286547A1 (en) | 2019-09-19 |
Family
ID=67770320
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US15/920,143 Active US10402302B1 (en) | 2018-03-13 | 2018-03-13 | Reproduction of testing scenarios in a continuous integration environment |
US16/557,629 Active US10877871B2 (en) | 2018-03-13 | 2019-08-30 | Reproduction of testing scenarios in a continuous integration environment |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US16/557,629 Active US10877871B2 (en) | 2018-03-13 | 2019-08-30 | Reproduction of testing scenarios in a continuous integration environment |
Country Status (1)
Country | Link |
---|---|
US (2) | US10402302B1 (en) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20190303187A1 (en) * | 2018-03-29 | 2019-10-03 | The United States Of America As Represented By The Secretary Of The Navy | Methods, devices, and systems for distributing software to and deploying software in a target environment |
US11216273B1 (en) * | 2020-09-08 | 2022-01-04 | Stripe, Inc. | Model training using build artifacts |
US11281480B2 (en) | 2020-05-28 | 2022-03-22 | Sap Se | Enhancing parameter-less exit-calls from a command line interface |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10528332B2 (en) * | 2018-03-28 | 2020-01-07 | Capital One Services, Llc | Systems and methods for building generic CI/CD pipelines |
US10884909B1 (en) * | 2018-11-14 | 2021-01-05 | Intuit Inc. | Code release with automatic callback |
US11061808B2 (en) | 2019-10-03 | 2021-07-13 | Red Hat, Inc. | Troubleshooting test failures that occurred during a testing phase of a continuous integration pipeline |
CN111949515B (en) * | 2020-07-23 | 2024-08-09 | 上海硬通网络科技有限公司 | Test scene reproduction method and device and electronic equipment |
US11500661B2 (en) * | 2020-08-26 | 2022-11-15 | International Business Machines Corporation | Performing an application snapshot using process virtual machine resources |
EP3961436A1 (en) | 2020-08-28 | 2022-03-02 | Siemens Aktiengesellschaft | Methods and systems for controlling access to at least one computer program |
CN112379969B (en) * | 2020-11-13 | 2024-04-16 | 中国人寿保险股份有限公司 | Continuous integrated delivery method based on containerized application and related equipment |
CN113704136B (en) * | 2021-11-01 | 2022-01-28 | 深圳市明源云科技有限公司 | Test environment generation method, device, equipment and computer readable storage medium |
US20230168996A1 (en) * | 2021-11-30 | 2023-06-01 | Red Hat, Inc. | Testing continuous integration and continuous deployment (ci/cd) pipeline |
US12038828B2 (en) * | 2022-08-16 | 2024-07-16 | Red Hat, Inc. | Distributed debugging environment for a continuous integration pipeline |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060053139A1 (en) * | 2004-09-03 | 2006-03-09 | Red Hat, Inc. | Methods, systems, and computer program products for implementing single-node and cluster snapshots |
JP4942418B2 (en) * | 2006-08-04 | 2012-05-30 | 株式会社日立製作所 | Computer system and snapshot creation method thereof |
US8112392B1 (en) * | 2009-02-13 | 2012-02-07 | Symantec Corporation | Methods and systems for creating snapshots of virtualized applications |
CN103577907B (en) | 2012-07-24 | 2016-12-07 | 阿里巴巴集团控股有限公司 | A kind of continuous integrating method of testing and system |
US9652326B1 (en) * | 2014-01-24 | 2017-05-16 | Amazon Technologies, Inc. | Instance migration for rapid recovery from correlated failures |
US9792187B2 (en) * | 2014-05-06 | 2017-10-17 | Actifio, Inc. | Facilitating test failover using a thin provisioned virtual machine created from a snapshot |
US10387370B2 (en) | 2016-05-18 | 2019-08-20 | Red Hat Israel, Ltd. | Collecting test results in different formats for storage |
US10185648B2 (en) * | 2016-05-24 | 2019-01-22 | Red Hat, Inc. | Preservation of modifications after overlay removal from a container |
CN106528200A (en) | 2016-10-08 | 2017-03-22 | 广州视睿电子科技有限公司 | Continuous integration method and device based on docker composition |
CN106909386A (en) | 2017-02-27 | 2017-06-30 | 郑州云海信息技术有限公司 | A kind of cloud platform code continuous integrating method and system |
-
2018
- 2018-03-13 US US15/920,143 patent/US10402302B1/en active Active
-
2019
- 2019-08-30 US US16/557,629 patent/US10877871B2/en active Active
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20190303187A1 (en) * | 2018-03-29 | 2019-10-03 | The United States Of America As Represented By The Secretary Of The Navy | Methods, devices, and systems for distributing software to and deploying software in a target environment |
US11281480B2 (en) | 2020-05-28 | 2022-03-22 | Sap Se | Enhancing parameter-less exit-calls from a command line interface |
US12026533B2 (en) | 2020-05-28 | 2024-07-02 | Sap Se | Enhancing parameter-less exit-calls from a command line interface |
US11216273B1 (en) * | 2020-09-08 | 2022-01-04 | Stripe, Inc. | Model training using build artifacts |
US11809863B2 (en) | 2020-09-08 | 2023-11-07 | Stripe, Inc. | Model training using build artifacts |
Also Published As
Publication number | Publication date |
---|---|
US20190384694A1 (en) | 2019-12-19 |
US10402302B1 (en) | 2019-09-03 |
US10877871B2 (en) | 2020-12-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10877871B2 (en) | Reproduction of testing scenarios in a continuous integration environment | |
US10585785B2 (en) | Preservation of modifications after overlay removal from a container | |
US20210117895A1 (en) | Systems and Methods for Cross-Platform Scheduling and Workload Automation | |
Singh et al. | Comparison of different CI/CD tools integrated with cloud platform | |
US20200250070A1 (en) | Techniques for evaluating collected build metrics during a software build process | |
US9223681B2 (en) | Automated debug trace specification | |
US8561024B2 (en) | Developing software components and capability testing procedures for testing coded software component | |
US8140905B2 (en) | Incremental problem determination and resolution in cloud environments | |
US9804952B1 (en) | Application debugging in a restricted container environment | |
US20180113799A1 (en) | Model generation for model-based application testing | |
US20050114854A1 (en) | System and method for dynamic cooperative distributed execution of computer tasks without a centralized controller | |
US10083029B2 (en) | Detect application defects by correlating contracts in application dependencies | |
CN111651352B (en) | Warehouse code merging method and device | |
US20190042233A1 (en) | Application architecture generation | |
CN114297056A (en) | Automatic testing method and system | |
CN115080060A (en) | Application program distribution method, device, equipment, storage medium and program product | |
Oliveira et al. | Delivering software with agility and quality in a cloud environment | |
US20170091076A1 (en) | Debugging remote vertex code on test machine | |
CN117667109A (en) | Environment deployment method and device, electronic equipment and storage medium | |
CN112564979A (en) | Execution method and device for construction task, computer equipment and storage medium | |
CN114895916A (en) | Code deployment method, device, storage medium and electronic equipment | |
Milka et al. | Dfuntest: A testing framework for distributed applications | |
CN111367796A (en) | Application program debugging method and device | |
WO2024089900A1 (en) | System, method, and medium for lifecycle management testing of containerized applications | |
CN114942801B (en) | FSM-based application release task processing method and device and electronic equipment |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
FEPP | Fee payment procedure |
Free format text: ENTITY STATUS SET TO UNDISCOUNTED (ORIGINAL EVENT CODE: BIG.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY |
|
AS | Assignment |
Owner name: RED HAT ISRAEL, LTD., ISRAEL Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:RAMRAZ, ODED;SHUSTER, BOAZ;REEL/FRAME:045200/0923 Effective date: 20180312 |
|
STCF | Information on status: patent grant |
Free format text: PATENTED CASE |
|
MAFP | Maintenance fee payment |
Free format text: PAYMENT OF MAINTENANCE FEE, 4TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1551); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY Year of fee payment: 4 |