US9916225B1 - Computer implemented system and method and computer program product for testing a software component by simulating a computing component using captured network packet information - Google Patents

Computer implemented system and method and computer program product for testing a software component by simulating a computing component using captured network packet information Download PDF

Info

Publication number
US9916225B1
US9916225B1 US15/191,087 US201615191087A US9916225B1 US 9916225 B1 US9916225 B1 US 9916225B1 US 201615191087 A US201615191087 A US 201615191087A US 9916225 B1 US9916225 B1 US 9916225B1
Authority
US
United States
Prior art keywords
network
software component
component
packet information
service request
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.)
Active, expires
Application number
US15/191,087
Inventor
Joshua L Bonczkowski
Nicholas A Hansen
Steven R Hart
Pierre Ancelot
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
EMC Corp
Original Assignee
VCE IP Holding Co LLC
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by VCE IP Holding Co LLC filed Critical VCE IP Holding Co LLC
Priority to US15/191,087 priority Critical patent/US9916225B1/en
Assigned to VCE COMPANY, LLC reassignment VCE COMPANY, LLC ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: BONCZKOWSKI, JOSHUA, HART, STEVEN R, ANCELOT, PIERRE, HANSEN, NICHOLAS
Assigned to VCE IP Holding Company LLC reassignment VCE IP Holding Company LLC ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: VCE COMPANY, LLC
Application granted granted Critical
Publication of US9916225B1 publication Critical patent/US9916225B1/en
Assigned to EMC IP Holding Company LLC reassignment EMC IP Holding Company LLC MERGER (SEE DOCUMENT FOR DETAILS). Assignors: VCE IP Holding Company LLC
Assigned to THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A. reassignment THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A. SECURITY AGREEMENT Assignors: CREDANT TECHNOLOGIES INC., DELL INTERNATIONAL L.L.C., DELL MARKETING L.P., DELL PRODUCTS L.P., DELL USA L.P., EMC CORPORATION, EMC IP Holding Company LLC, FORCE10 NETWORKS, INC., WYSE TECHNOLOGY L.L.C.
Active legal-status Critical Current
Adjusted expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3664Environments for testing or debugging software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3696Methods or tools to render software testable
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/14Network analysis or design
    • H04L41/145Network analysis or design involving simulating, designing, planning or modelling of a network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/02Capturing of monitoring data
    • H04L43/028Capturing of monitoring data by filtering
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/04Processing captured monitoring data, e.g. for logfile generation

Definitions

  • aspects of the disclosure relate to computing technology and, more particularly, to a computer implemented system and method, and computer program product, for testing a software component by simulating a computing component using captured network packet information.
  • prior art systems and methods allow for the capture and replay of network packet information sent by a software component to a computing component and received by the software component from the computing component.
  • Such known “capture and replay” systems and methods allow for replaying only the exact network packet sequence that was captured and does not permit asynchronous API access based on the captured network packet information.
  • a system, method, and computer program product for testing a software component by simulating a computing component interface using captured network packet information may include receiving a service request from a first software component, which is comprised of one or more network packets.
  • the first software component may be a software component to be tested.
  • the method may access a data store of captured network packet information and determine that a matching service request is stored in the accessed data store of captured network packet information.
  • the matching service request may be comprised of one or more network packets that match the service request received from the first software component.
  • the method may identify an associated response that is stored in the accessed data store of captured network packet information.
  • the associated response may be one or more network packets that are stored in association with the matching service request.
  • the method then sends the associated response to the first software component.
  • the method also may include generating the data store of network packet information.
  • Generating the data store of network packet information may include capturing network packet information.
  • the captured network packet information may be a plurality of service requests and a plurality of associated responses.
  • Each of the plurality of service requests may be one or more network packets sent by a second software component to an interface of a computing component to be simulated.
  • Each the plurality of associated responses may be one or more network packets sent by the interface of the computing component to be simulated to the second software component, which is in response to receiving each of the plurality of service requests from the second software component.
  • the method also may store the plurality of service requests and the plurality of associated responses in the data store of captured network packet information.
  • FIG. 1 is a diagram of a system for testing a software component by simulating a computing component interface using captured network packet information, in accordance with some example embodiments.
  • FIG. 2A is a sequence diagram of a network packet information capture subsystem, in accordance with some example embodiments.
  • FIG. 2B is a sequence diagram of a simulated computing component interface, in accordance with some example embodiments.
  • FIG. 3 is a diagram of a converged infrastructure environment, a computing component interface of which may be simulated for testing a software component using captured network packet information, in accordance with some example embodiments.
  • FIG. 4 is a flow diagram of a process for testing a software component by simulating a computing component interface using captured network packet information, in accordance with some example embodiments.
  • FIG. 5 is a diagram of a computing system that may be used to implement a system for testing a software component by simulating a computing component interface using captured network packet information, in accordance with some example embodiments.
  • FIG. 1 is a diagram of a system 100 for testing a software component by simulating a computing component using captured network packet information, in accordance with some example embodiments.
  • the computing component to be simulated may be a component of a converged infrastructure, such as, compute component, a storage component or a network component.
  • Network packet information may be comprised of one or more network packets, which are formatted units of data carried by a packet-switched network.
  • a network packet may include control information and a payload.
  • the control information may include source and destination network addresses, error detection codes, and sequencing information, is typically found in packet headers and trailers.
  • the network packet payload is the message or data, such as user data, that is being transmitted back and forth between the software component and the computing component.
  • System 100 uses existing network packet capture and replay systems and methods. Such existing systems and methods, however, only allow for replay of the network packets in the exact order they were captured. As set forth in more detail below, system 100 captures and interprets network packet information so that each network request and each network response to each network request can be analyzed independently. This allows for a software component to communicate with the simulated computing component and execute any API in any order after the initial capture of transport layer information.
  • system 100 includes a software component 110 and transport network packet capture subsystem 120 and a computing component interface 130 .
  • software component 110 makes various requests, via a network, to computing component interface 130 .
  • Computing component interface 130 is configured to allow connections with software component 110 using transport layer protocols, such as Transmission Control Protocol (TCP) or User Datagram Protocol (UDP).
  • TCP Transmission Control Protocol
  • UDP User Datagram Protocol
  • TCP provides reliable, ordered, and error-checked delivery of a stream of octets between applications running on hosts communicating over an Internet Protocol (IP) network.
  • IP Internet Protocol
  • UDP uses a connectionless transmission model with a minimum of protocol mechanism. It has no handshaking dialogues, and thus exposes the user's program to any unreliability of the underlying network protocol.
  • UDP provides checksums for data integrity, and port numbers for addressing different functions at the source and destination of the datagram.
  • computer applications can send messages, that is, datagrams, to other hosts on an Internet Protocol (IP) network without prior communications to set up special transmission channels or data paths.
  • IP Internet Protocol
  • UDP is suitable where error checking and correction is either not necessary or is performed in the application, avoiding the overhead of such processing at the network interface level.
  • the invention is not limited to the use of any particular transport layer protocol.
  • Transport layer protocols such as the TCP and UDP, specify a source and destination port number in their segment headers.
  • Applications implementing common services often use specifically reserved well-known port numbers for receiving service requests from clients. This process is known as listening, and involves the receipt of a request on the well-known port and establishing a one-to-one server-client dialog, using the same local port number.
  • Software component 110 uses an application layer protocol for transmission of the request to computing component 130 via a network.
  • exemplary application layer protocols include Domain Naming System (DNS), Hypertext Transport Protocol (HTTP), Telnet, Secure Shell (SSH), File Transfer Protocol (FTP), Trivial File Transfer Protocol (TFTP), Simple Network Management Protocol (SNMP), Simple Mail Transfer Protocol (SMTP), Dynamic Host Configuration Protocol (DHCP), X Windows, Remote Desktop Protocol (RDP), etc.
  • DNS Domain Naming System
  • HTTP Hypertext Transport Protocol
  • Telnet Telnet
  • SSH Secure Shell
  • FTP File Transfer Protocol
  • TFTP Trivial File Transfer Protocol
  • SNMP Simple Network Management Protocol
  • SMTP Simple Mail Transfer Protocol
  • DHCP Dynamic Host Configuration Protocol
  • X Windows X Windows
  • RDP Remote Desktop Protocol
  • Network packet information capture subsystem 120 captures each request sent by software component 110 to computing component interface 130 and each response sent by computing component interface 130 to software component 110 .
  • Suitable transport layer information capture and/or replay systems include Wireshark®, which is available from Wireshark Foundation at www.wireshark.org, PlayCap, which is available from Signal 11 Software at www.signal11.us, or Colasoft® Packet Player, which is available from Colasoft LLC of Tulsa, Okla. at www.colasoft.com.
  • Other suitable techniques and/or applications for capturing and analyzing transport layer information include switch port or network tap, tcpdump, and proxy server.
  • a network tap is a hardware device that provides access to data flowing across a computer network.
  • Tcpdump is packet analyzer that allows a user to capture and display network packets, and is available at www.tcpdump.org.
  • a proxy server is a server that acts as an intermediary for requests from clients seeking resources from other servers.
  • network packet information capture subsystem 120 processes the captured network data in order to separate the captured data into one or more network streams.
  • a network stream is one or more network requests made by the software component to the computing component and each of the network responses made by the computing component to the software component to each network request.
  • a network stream may be as simple as a single network request and a single network response.
  • a network stream also may be a series of network requests and network responses to those requests.
  • a network stream may be encrypted using Transport Layer Security (TLS) or HTTP Secure (HTTPS), in which case the data will need to be decrypted in order to access the application data.
  • TLS Transport Layer Security
  • HTTPS HTTP Secure
  • each of the network streams may be stored in a captured network packet information data store 140 .
  • the captured network packet information data store 140 may be, in some exemplary embodiments, a relational database, such as a structured query language (SQL) database.
  • SQL structured query language
  • each network request of a network stream may be stored in association with corresponding network response.
  • simulated computing component interface 160 may be configured to allow TCP and UDP connections to the same ports that were originally used to allowed TCP and UDP connections to computing component 130 . This ensures there is no change to the client.
  • Test software component 150 uses the same application layer protocols for transmission of a service request to simulated computing component interface 160 as used by software component 110 for transmission of service requests to computing component interface 130 .
  • Simulated computing component interface 160 may be configured to listen for the same ports and protocols as computing component interface 130 . While computing component interface 130 and Simulated computing component interface 160 are shown in FIG.
  • computing component interface 130 and simulated computing component interface 160 may be implemented as single logical component.
  • the single logical component may be selectively operated in a “capture” mode, during which network packet information between software component 110 and computing component interface 130 are captured, or a “listening” mode, during which the single logical component listens for network packet information that is sent by test software component 150 .
  • simulated computing component interface 160 determines whether a matching service request is stored in captured network information data store 140 . If a matching service request is found, then simulated computing component 160 identifies the response that was captured via transport layer information capture subsystem 120 and stored in captured transport layer information data store 140 in association with the matching service request. If simulated computing component 160 identifies a response stored in captured transport layer information data store 140 in association with the matching service request, simulated computing component 160 responds to the service request from test software component 150 with the identified response.
  • certain elements of the service request sent by test software component 150 to simulated computing component 160 may be discarded or anonymized because they are irrelevant to the process of testing software component 150 or may prevent simulated computing component 160 from determining whether a matching service request is stored in captured transport layer information data store 140 .
  • a non-limiting example of such an element of a service request is a session identifier in an HTTPS API call.
  • System 100 illustrated in FIG. 1 therefore, captures service requests by software component 110 , and the responses to the captured service requests by computing component 130 , at the transport layer, as opposed to the application layer, of the Open Systems Interconnection (OSI) Model.
  • OSI Open Systems Interconnection
  • This allows for capturing and replaying communications between software component 110 and computing component 130 at the TCP and UDP packet level. Therefore, it is unnecessary to rely on individual higher (application) level protocol daemons, and allows for consolidation of the captured service requests and responses thereto, yielding a multithreaded, asynchronous transport layer simulation of computing component 130 .
  • FIG. 2A is a sequence diagram of a network packet information capture subsystem, in accordance with some example embodiments.
  • Software Component sends a message comprising one or more network packets comprising a Service Request to Capture Subsystem.
  • Capture Subsystem In response to receiving the Service Request, Capture Subsystem sends the Service Request to Data Store for storage, and sends the Service Request to Computing Component, which is the computing component to be simulated.
  • Computing Component Responsive to receiving the Service Request, Computing Component sends a message to Capture Subsystem comprising one or more network packets comprising a Response to the Service Request.
  • Capture Subsystem Responsive to receiving the Response, Capture Subsystem sends the Response to Data Store for storage in association with the Service Request, and also sends the response to the Software Component that initiated the Service Request. While FIG. 2A illustrates the capture and storage of a single service request and a single response thereto, the Capture Subsystem may be configured to capture and store a series of service requests and responses thereto.
  • the Capture Subsystem may include a Data Store Filter.
  • the Data Store Filter may be used to filter the information comprising the Response received by the Capture Subsystem from the Computing Component, prior to storing the Response in the Data Store.
  • Such information filtered by the Capture Subsystem's Data Store Filter may include variable information, such as timestamp information that is included in the Response received from the Computing Component.
  • the Data Store Filter may substitute a place holder value for the actual timestamp value, which is then stored in the Data Store instead of the actual timestamp value.
  • FIG. 2B is a sequence diagram of a simulated computing component interface, in accordance with some example embodiments.
  • Test Software Component sends a message comprising one or more network packets comprising a Service Request to the Simulated Component.
  • the Simulated Component sends the Service Request to the Data Store.
  • Data Store sends a message to the Simulated Component comprising one or more network packets comprising a Response to the Service Request.
  • Responsive to receiving the Response the Simulated Component sends the Response to the Test Software Component that initiated the Service Request.
  • FIG. 2A illustrates the sending and receiving a single service request and a single response thereto, the Simulated Component may be configured to send and receive a series of service requests and responses thereto.
  • the Simulated Component may include a Response Filter.
  • the Response Filter may be used to filter the information comprising the Response received by the Simulated Component from the Data Store prior to sending the Response to the Test Software Component.
  • Such information filtered by the Simulated Component's Response Filter may include data values, such as the chassis temperature of the Simulated Component.
  • the Response Filter may allow for testing various scenarios by providing a variety of different values representing the chassis temperature of the Simulated Component.
  • a Data Store Filter and a Response Filter each may include one or more sets of variables to identify the circumstances under which the respective filters should be applied and how the filter operates.
  • An exemplary set of variables may include the following: a filter identifier, a filter type identifier, a protocol identifier, a component identifier, a match identifier and modification information.
  • a Data Store Filter may have the following values:
  • a Response Filter may have the following values:
  • the Capture Subsystem may include a Response Filter and the Simulated Component may include a Data Store Filter.
  • the Software Component may provide a unique client identifier to the Computing Component.
  • the second client upon which the Test Software Component is running, initiates a connection with the Simulated Component, and the second client provides a unique client identifier to the Simulated Component. In that case, the first client identifier stored in the Data Store will not match the second client identifier.
  • a Data Store Filter included in the Capture Subsystem can be configured to anonymize the first client identifier by, for example, by substituting place holder values, such as a set of zeros, for the first client identifier.
  • a Data Store Filter included in the Simulated Component can be configured to anonymize the second client identifier by substituting the same place holder values, e.g., a set of zeros.
  • the second client identifier will match the first client identifier.
  • FIG. 3 is a diagram of a converged infrastructure environment 300 , a computing component interface of which may be simulated for testing a software component using captured network information, in accordance with some example embodiments.
  • the converged infrastructure 302 may include a plurality of components, such as servers, data storage devices, network equipment, and associated software, which may be represented a single object or logical entity.
  • the converged infrastructure is implemented by a Vblock® System available from the VCE Company, LLC of Richardson, Tex.
  • the converged infrastructure may be a hyper-converged infrastructure.
  • a hyper-converged infrastructure is characterized by a software-centric architecture that tightly integrates servers, data storage devices, network equipment, and associated software and virtualization resources, in a commodity hardware box supported by a single vendor.
  • Hyper-convergence is related to the concept of converged infrastructure, which is an infrastructure approach where a single vendor provides a pre-configured bundle of hardware and software in a single chassis, which is represented as a single object or logical entity, with the goal of minimizing compatibility issues and simplifying management.
  • the hardware components of a converged infrastructure can be separated and used independently.
  • the hardware components in a hyper-converged infrastructure are so integrated that they typically cannot be separated.
  • the hyper-converged infrastructure is implemented by a VxRackTM System, available from the VCE Company, LLC of Richardson, Tex.
  • the converged infrastructure 302 of some embodiments may include one or more compute layer 330 components, such as one or more servers (e.g., blade servers, rack servers, and/or other servers), one or more fabric extenders, one or more fabric interconnects, a chassis, and/or other compute layer components that may be implemented on a converged infrastructure to provide computing and processing resources of the converged infrastructure.
  • the converged infrastructure 302 may further include one or more storage layer 332 components, such as one or more storage arrays and/or other mass storage devices that may be implemented on a converged infrastructure.
  • the converged infrastructure 302 may additionally include one or more network layer 334 components, such as one or more switches and/or other network layer components that may be implemented on a converged infrastructure.
  • the network layer 334 may include components that provide switching and routing between the compute layer 330 and storage layer 332 within the converged infrastructure 302 .
  • the network layer 334 may additionally or alternatively include components that provide switching and routing between the converged infrastructure 302 and a network so as to support network communication between a component(s) of the converged infrastructure 302 and a computing platform(s) independent of the converged infrastructure 302 .
  • the components of the compute layer 330 , storage layer 332 , and network layer 334 may collectively provide a physical infrastructure of the converged infrastructure 302 .
  • the converged infrastructure 302 may additionally include a virtualization layer 336 , which may include one or more virtualization components configured to support one or more virtualized computing environments.
  • the components of the virtualization layer 336 may include components embodied in software, hardware, firmware, and/or some combination thereof.
  • the virtualization layer 336 may include a hypervisor and/or other virtualization components that may be configured to create and run virtual machines and/or to otherwise virtually simulate a computing environment.
  • the virtualization layer 336 may include and/or may be communicatively coupled with one or more management components configured to support management of the converged infrastructure 302 .
  • the virtualization layer 336 may include a management infrastructure, which may provide management resources for managing the converged infrastructure 302 .
  • the management infrastructure may be a separate system from the converged infrastructure, but may be connected to the converged infrastructure to allow management of the entire converged infrastructure 302 .
  • the virtualization layer 336 may utilize physical hardware resources of the compute layer 330 , storage layer 332 , and/or network layer 334 to support operation of one or more components of the virtualization layer 336 .
  • the virtualization layer 336 may include dedicated physical resources (e.g., physical hardware components) that may provide computing, storage, and/or network communication resources to one or more components of the virtualization layer 336 .
  • the compute layer 330 , storage layer 332 , network layer 334 , and virtualization layer 336 as illustrated in FIG. 3 and described above are provided by way of example, and not by way of limitation.
  • aspects of the compute layer 330 , storage layer 332 , network layer 334 , and virtualization layer 336 as described above may not be mandatory and thus some may be omitted in certain embodiments.
  • the converged infrastructure 302 of some embodiments may include further or different layers and/or components beyond those illustrated in and described with respect to FIG. 3 .
  • Physical components of the converged infrastructure 302 may be communicatively coupled with each other to support operation of the converged infrastructure 302 via direct connection and/or network communication.
  • the network layer 334 may provide switching and routing between physical components of the converged infrastructure.
  • At least a portion of the components of the converged infrastructure 302 may be assigned addresses, such as Internet Protocol (IP) addresses and/or other network layer addresses, via which the components may be accessed by another component internal to the converged infrastructure 302 and/or via a computing device external to the converged infrastructure 302 .
  • IP Internet Protocol
  • the converged infrastructure 302 and/or one or more network addressable components thereof may be accessed by an external computing device over a network to which the converged infrastructure 302 of some embodiments may be connected.
  • FIG. 3 also shows a software component testing system 304 , which may be used to test a computing component interface of environment 300 , in accordance with some example embodiments.
  • a sample embodiment of software component testing system 304 is illustrated in more detail in FIG. 1 and is discussed in more detail in the discussion of FIG. 1 above.
  • FIG. 4 is a flow diagram of a process 400 for testing a software component by simulating a computing component interface using captured network packet information, in accordance with some example embodiments.
  • One or more of the operations illustrated in FIG. 4 may be performed by a computer processor.
  • Process 400 may begin by generating a store of network packet information. Generating the data store of network packet information may include operation 402 , in which process 400 captures network packet information.
  • the captured network packet information may include a plurality of service requests and a plurality of associated responses.
  • Each of the plurality of service requests may be one or more network packets sent by a software component to an interface of a computing component to be simulated.
  • Each of the plurality of associated responses may be one or more network packets sent by the interface of the computing component to be simulated to the component in response to receiving each of the plurality of service requests from the software component. Processing may continue with operation 404 .
  • process 400 may store the captured network information, which is comprised of the plurality of service requests and the plurality of associated responses, in a data store. Processing may continue with operation 406 .
  • the network packet information sent between the software component and the computing component interface to be simulated may already have been captured and stored, in which case, processing may begin with operation 406 .
  • process 400 receives a service request from a software component to be tested.
  • the service request may be one or more network packets. Processing may continue with operation 408 .
  • process 400 accesses the data store of captured network packet information. Processing may continue with operation 410 .
  • process 400 determines whether a matching service request is stored in the accessed data store of captured network packet information.
  • a matching service request may be one or more network packets that match the service request received from the software component to be tested. If a matching service request is stored in the accessed data store, processing may continue with operation 412 .
  • process 400 identifies an associated response that is stored in the accessed data store of captured network packet information.
  • the associated response may be one or more network packets that are stored in association with the matching service request. Processing may continue with operation 414 .
  • process 400 sends the associated response to the software component to be tested, and the software component to be tested then processes the associated response.
  • FIG. 5 is a diagram of an example computing system 500 that may be used to implement some example embodiments of a software component testing system.
  • the computing system 500 may be implemented on any computing device or plurality of computing devices that may be configured to implement one or more example embodiments.
  • the computing system 500 may be implemented on a user terminal and/or a computing platform(s) of a converged infrastructure.
  • the computing system may include a plurality of elements, such as processing circuitry 510 , mass storage 518 , communication interface 520 , and user interface 522 , which may be interfaced via a system bus 516 . It will be appreciated that the components, devices or elements illustrated in and described with respect to FIG. 5 below may not be mandatory and thus some may be omitted in certain embodiments. Additionally, the computing system 500 of some embodiments may include further or different components, devices or elements beyond those illustrated in and described with respect to FIG. 5 .
  • FIG. 5 illustrates an architecture including elements interfaced via the system bus 516
  • elements of the computing system 500 may be implemented in a distributed computing environment in which elements may be distributed across a plurality of computing devices, which may be in communication with each other, such as via a network, to provide functionality of the computing system 500 .
  • elements of the computing system 500 may be communicatively coupled via a network in addition to or in lieu of the system bus 516 .
  • the computing system 500 of some example embodiments may implement an operating system(s), such as MICROSOFT WINDOWSTM, UNIXTM, LINUXTM, IBM z/OSTM, CISCOTM INTERNETWORK OPERATING SYSTEM (IOS), CISCOTM CATALYSTTM OPERATING SYSTEM (CatOS), CISCO NX-OS, EMCTM ISILON OneFSTM OPERATING SYSTEM, NETAPPTM DATA ONTAPTM, or other known operating systems.
  • an operating system(s) such as MICROSOFT WINDOWSTM, UNIXTM, LINUXTM, IBM z/OSTM, CISCOTM INTERNETWORK OPERATING SYSTEM (IOS), CISCOTM CATALYSTTM OPERATING SYSTEM (CatOS), CISCO NX-OS, EMCTM ISILON OneFSTM OPERATING SYSTEM, NETAPPTM DATA ONTAPTM, or other known operating systems.
  • IOS CISCO
  • the computing system 500 may include processing circuitry 510 that is configurable to perform actions in accordance with one or more example embodiments disclosed herein.
  • the processing circuitry 510 may be configured to perform and/or control performance of one or more functionalities for testing a computing component interface of a converged infrastructure, such as converged infrastructure 302 , in accordance with various example embodiments.
  • the processing circuitry 510 may be configured to perform data processing, application execution and/or other processing and management services according to one or more example embodiments.
  • the processing circuitry 510 may include a processor 512 and, in some embodiments, such as that illustrated in FIG. 5 , may further include memory 514 .
  • the processing circuitry 510 may be in communication with (e.g., via system bus 516 ) and/or otherwise control mass storage 518 , communication interface 520 , and/or user interface 522 .
  • the processor 512 may be embodied in a variety of forms.
  • the processor 512 may be embodied as various hardware processing means such as a microprocessor, a coprocessor, a general purpose processor, a controller or various other computing or processing devices including integrated circuits (e.g., a logic device), such as an ASIC (application specific integrated circuit), an FPGA (field programmable gate array), some combination thereof, or the like.
  • integrated circuits e.g., a logic device
  • ASIC application specific integrated circuit
  • FPGA field programmable gate array
  • the plurality of processors may be in operative communication with each other and may be collectively configured to perform one or more functionalities to support testing a software component by simulating a computing component interface of a converged infrastructure in accordance with various embodiments.
  • a plurality of processors which may collectively form the processor 512 , may be distributed across a plurality of computing devices that may be in operative communication with each other directly and/or via a network.
  • the processor 512 may be configured to execute instructions that may be stored in a memory, such as the memory 514 and/or the mass storage 518 and/or that may be otherwise accessible to the processor 512 .
  • the processor 512 may be capable of performing operations according to various embodiments while configured accordingly.
  • the memory 514 may include read only memory (ROM), random access memory (RAM), and/or the like.
  • the mass storage 518 may include one or more memory and/or other storage devices, which may include fixed (e.g., a fixed hard disc drive, storage array, fixed flash memory device, and/or the like) and/or removable memory devices (e.g., a removable flash memory device, an optical disc drive, and/or other removable memory device).
  • the mass storage 518 may provide a persistent data storage device.
  • the mass storage 518 may be configured to provide a backup storage.
  • the mass storage 518 may include a memory device implemented locally to the computing system 500 and/or a memory device remote to the computing system 500 , which may be communicatively coupled with the computing system 500 , such as via a network.
  • the memory 514 and/or mass storage 518 may include a plurality of memory devices, which may be distributed across a plurality of computing devices that may be in operative communication with each other directly and/or via a network to form the computing system 500 .
  • the memory 514 and/or the mass storage 518 may provide a non-transitory computer-readable storage medium that may store computer program instructions that may be executed by the processor 512 .
  • the memory 514 and/or mass storage 518 may be configured to store information, data, applications, instructions and/or the like for enabling the computing system 500 to carry out various functions in accordance with one or more example embodiments.
  • Applications that may be executed by the processor 512 may also be in the form of modulated electronic signals that may be accessed via a network modem or other network interface of the computing system 500 .
  • the computing system 500 may further include a communication interface 520 .
  • the communication interface 520 may enable the computing system 500 to communicate (e.g., over a network or other communication interface) with another computing device or system, such as the converged infrastructure 302 .
  • the communication interface 520 may include one or more interface mechanisms for enabling communication with other devices and/or networks.
  • the communication interface 520 may include, for example, an antenna (or multiple antennas) and supporting hardware and/or software for enabling communications with a wireless communication network (e.g., a cellular network, wireless local area network, and/or the like) and/or a communication modem or other hardware/software for supporting communication via cable, digital subscriber line (DSL), USB, FireWire, Ethernet, one or more optical transmission technologies, and/or other wireline networking methods.
  • a wireless communication network e.g., a cellular network, wireless local area network, and/or the like
  • a communication modem or other hardware/software for supporting communication via cable, digital subscriber line (DSL), USB, FireWire, Ethernet, one or more optical transmission technologies, and/or other wireline networking methods.
  • the computing system 500 may include the user interface 522 . It will be appreciated, however, that in some example embodiments, one or more aspects of the user interface 522 may be omitted, and in some embodiments, the user interface 522 may be omitted entirely.
  • the user interface 522 may be in communication with the processing circuitry 510 to receive an indication of a user input and/or to provide an audible, visual, mechanical, or other output to a user.
  • the user interface 522 may include, for example, a keyboard, a mouse, a joystick, a display, a touch screen display, a microphone, a speaker, one or more biometric input devices, and/or other input/output mechanisms.
  • a software component testing system 540 interfaces with computing system 500 .
  • the software component testing system 540 may be configured to test a software component on a simulated computing component.
  • Embodiments described herein may be practiced with various computer system configurations including blade devices, cloud systems, converged infrastructure systems, rack mounted servers, switches, storage environments, hand-held devices, tablets, microprocessor systems, microprocessor-based or programmable consumer electronics, mini computers, mainframe computers and the like. Some embodiments may also be practiced in distributed computing environments where tasks are performed by remote processing devices that are linked through one or more networks, such as one or more wireline networks and/or one or more wireless networks.
  • a computer program product may be used to implement a software component testing system, in some example embodiments.
  • a computer program product embodiment may include a machine-readable, non-transitory (non-volatile) storage medium (media) having instructions stored thereon/in, which can be used to program a computer to perform any of the processes of the embodiments described herein.
  • Computer code for operating and configuring a software component testing system is preferably downloaded and stored on a hard disk, although the entire program code, or portions thereof, may also be stored in any other volatile or non-volatile memory medium or device as is well known, such as a read only memory (ROM) or random access memory (RAM), or provided on any media capable of storing program code, such as any type of rotating or solid state media, or any type of media or device suitable for storing instructions and/or data.
  • ROM read only memory
  • RAM random access memory
  • the entire program code, or portions thereof may be transmitted and downloaded from a software source over a transmission medium, e.g., over the Internet, or from another server, as is well known, or transmitted over any other conventional network connection as is well known (e.g., extranet, virtual private network (VPN), local area network (LAN), etc.) using any communication medium and protocols (e.g., transmission control protocol/internet protocol (TCP/IP), hypertext transport protocol (HTTP), HTTP secure (HTTPS), Ethernet, etc.) as are well known.
  • a transmission medium e.g., over the Internet, or from another server, as is well known, or transmitted over any other conventional network connection as is well known (e.g., extranet, virtual private network (VPN), local area network (LAN), etc.) using any communication medium and protocols (e.g., transmission control protocol/internet protocol (TCP/IP), hypertext transport protocol (HTTP), HTTP secure (HTTPS), Ethernet, etc.) as are well known.
  • TCP/IP transmission control protocol/
  • computer code for implementing embodiments of the present invention can be implemented in any programming language that can be executed on a client system and/or server or server system such as, for example, C, C++, hypertext markup language (HTML), any other markup language, JavaTM, JavaScript, ActiveX, any other scripting language, such as VBScript, and many other programming languages as are well known may be used.
  • C C
  • C++ hypertext markup language
  • JavaTM JavaTM
  • JavaScript ActiveX
  • scripting language such as VBScript
  • many other programming languages as are well known may be used.
  • first, second, etc. may be used herein to describe various steps or calculations, these steps or calculations should not be limited by these terms. These terms are only used to distinguish one operation or calculation from another. For example, a first calculation may be termed a second calculation, and, similarly, a second step may be termed a first step, without departing from the scope of this disclosure.
  • the term “and/or” and the “/” symbol includes any and all combinations of one or more of the associated listed items.

Abstract

A system, method, and computer program product for testing a software component by simulating a computing component interface using captured network packet information. A method may include receiving a service request comprised of one or more network packets from a software component to be tested. Responsive to receiving the service request, the method may access a data store of captured network packet information and determine that a matching service request is stored in the accessed data store. The matching service request may be comprised of one or more network packets that match the service request. The method may identify an associated response that is stored in the accessed data store. The associated response may be one or more network packets that are stored in association with the matching service request. The method then sends the associated response to the first software component.

Description

FIELD OF THE DISCLOSURE
Aspects of the disclosure relate to computing technology and, more particularly, to a computer implemented system and method, and computer program product, for testing a software component by simulating a computing component using captured network packet information.
BACKGROUND
In the field of software development, newly developed software components need to be tested on various hardware configurations before becoming generally available. Given the expense associated with purchasing and maintaining hardware for purposes of testing software components, prior art systems and methods exist for simulating a computing component for purposes of testing a software component. Such simulators, however, require a software development team to re-implement the application programming interfaces (API's)s and/or protocols used by the computing component to be simulated, which is time consuming and expensive. These APIs and/or protocols are then built so that they can return a known set of data to a calling software component that is being tested.
Additionally, prior art systems and methods allow for the capture and replay of network packet information sent by a software component to a computing component and received by the software component from the computing component. Such known “capture and replay” systems and methods, however, allow for replaying only the exact network packet sequence that was captured and does not permit asynchronous API access based on the captured network packet information. What is needed, therefore, is a system and method for simulating a computing component, such as a computing component of a converged infrastructure, for purposes of testing a software component that overcomes one or more of the disadvantages associated with known systems and method for doing so.
SUMMARY
A system, method, and computer program product for testing a software component by simulating a computing component interface using captured network packet information. For example, a method in accordance with some embodiments may include receiving a service request from a first software component, which is comprised of one or more network packets. The first software component may be a software component to be tested. Responsive to receiving the service request from the first software component, the method may access a data store of captured network packet information and determine that a matching service request is stored in the accessed data store of captured network packet information. The matching service request may be comprised of one or more network packets that match the service request received from the first software component. The method may identify an associated response that is stored in the accessed data store of captured network packet information. The associated response may be one or more network packets that are stored in association with the matching service request. The method then sends the associated response to the first software component.
The method also may include generating the data store of network packet information. Generating the data store of network packet information may include capturing network packet information. The captured network packet information may be a plurality of service requests and a plurality of associated responses. Each of the plurality of service requests may be one or more network packets sent by a second software component to an interface of a computing component to be simulated. Each the plurality of associated responses may be one or more network packets sent by the interface of the computing component to be simulated to the second software component, which is in response to receiving each of the plurality of service requests from the second software component. The method also may store the plurality of service requests and the plurality of associated responses in the data store of captured network packet information.
It will be appreciated that the above summary is provided merely for purposes of summarizing some example embodiments so as to provide a basic understanding of some aspects of the disclosure. As such, it will be appreciated that the above described example embodiments are merely examples of some embodiments and should not be construed to narrow the scope or spirit of the disclosure in any way. It will be appreciated that the scope of the disclosure encompasses many potential embodiments, some of which will be further described below, in addition to those herein summarized. Further, other aspects and advantages of embodiments disclosed herein will become apparent from the following detailed description taken in conjunction with the accompanying drawings which illustrate, by way of example, the principles of the described embodiments.
BRIEF DESCRIPTION OF THE DRAWINGS
Having thus described the disclosure in general terms, reference will now be made to the accompanying drawings, which are not necessarily drawn to scale, and wherein:
FIG. 1 is a diagram of a system for testing a software component by simulating a computing component interface using captured network packet information, in accordance with some example embodiments.
FIG. 2A is a sequence diagram of a network packet information capture subsystem, in accordance with some example embodiments.
FIG. 2B is a sequence diagram of a simulated computing component interface, in accordance with some example embodiments.
FIG. 3 is a diagram of a converged infrastructure environment, a computing component interface of which may be simulated for testing a software component using captured network packet information, in accordance with some example embodiments.
FIG. 4 is a flow diagram of a process for testing a software component by simulating a computing component interface using captured network packet information, in accordance with some example embodiments.
FIG. 5 is a diagram of a computing system that may be used to implement a system for testing a software component by simulating a computing component interface using captured network packet information, in accordance with some example embodiments.
DETAILED DESCRIPTION
The present disclosure now will be described more fully hereinafter with reference to the accompanying drawings, in which some, but not all aspects of the disclosure are shown. Indeed, the disclosure may be embodied in many different forms and should not be construed as limited to the aspects set forth herein; rather, these aspects are provided so that this disclosure will satisfy applicable legal requirements. Like numbers refer to like elements throughout.
FIG. 1 is a diagram of a system 100 for testing a software component by simulating a computing component using captured network packet information, in accordance with some example embodiments. The computing component to be simulated may be a component of a converged infrastructure, such as, compute component, a storage component or a network component.
Network packet information may be comprised of one or more network packets, which are formatted units of data carried by a packet-switched network. A network packet may include control information and a payload. The control information may include source and destination network addresses, error detection codes, and sequencing information, is typically found in packet headers and trailers. The network packet payload is the message or data, such as user data, that is being transmitted back and forth between the software component and the computing component.
System 100 uses existing network packet capture and replay systems and methods. Such existing systems and methods, however, only allow for replay of the network packets in the exact order they were captured. As set forth in more detail below, system 100 captures and interprets network packet information so that each network request and each network response to each network request can be analyzed independently. This allows for a software component to communicate with the simulated computing component and execute any API in any order after the initial capture of transport layer information.
As shown in FIG. 1, system 100 includes a software component 110 and transport network packet capture subsystem 120 and a computing component interface 130. In some example embodiments, software component 110 makes various requests, via a network, to computing component interface 130. Computing component interface 130 is configured to allow connections with software component 110 using transport layer protocols, such as Transmission Control Protocol (TCP) or User Datagram Protocol (UDP). As may be appreciated, TCP provides reliable, ordered, and error-checked delivery of a stream of octets between applications running on hosts communicating over an Internet Protocol (IP) network. UDP uses a connectionless transmission model with a minimum of protocol mechanism. It has no handshaking dialogues, and thus exposes the user's program to any unreliability of the underlying network protocol. There is no guarantee of delivery, ordering, or duplicate protection. UDP provides checksums for data integrity, and port numbers for addressing different functions at the source and destination of the datagram. With UDP, computer applications can send messages, that is, datagrams, to other hosts on an Internet Protocol (IP) network without prior communications to set up special transmission channels or data paths. UDP is suitable where error checking and correction is either not necessary or is performed in the application, avoiding the overhead of such processing at the network interface level. The invention, however, is not limited to the use of any particular transport layer protocol.
Transport layer protocols, such as the TCP and UDP, specify a source and destination port number in their segment headers. Applications implementing common services often use specifically reserved well-known port numbers for receiving service requests from clients. This process is known as listening, and involves the receipt of a request on the well-known port and establishing a one-to-one server-client dialog, using the same local port number.
Software component 110 uses an application layer protocol for transmission of the request to computing component 130 via a network. Exemplary application layer protocols that may be used include Domain Naming System (DNS), Hypertext Transport Protocol (HTTP), Telnet, Secure Shell (SSH), File Transfer Protocol (FTP), Trivial File Transfer Protocol (TFTP), Simple Network Management Protocol (SNMP), Simple Mail Transfer Protocol (SMTP), Dynamic Host Configuration Protocol (DHCP), X Windows, Remote Desktop Protocol (RDP), etc. The invention, however, is not limited to the use of any particular application layer protocol.
Network packet information capture subsystem 120 captures each request sent by software component 110 to computing component interface 130 and each response sent by computing component interface 130 to software component 110. Suitable transport layer information capture and/or replay systems, which are known to those skilled in the art, include Wireshark®, which is available from Wireshark Foundation at www.wireshark.org, PlayCap, which is available from Signal 11 Software at www.signal11.us, or Colasoft® Packet Player, which is available from Colasoft LLC of Tulsa, Okla. at www.colasoft.com. Other suitable techniques and/or applications for capturing and analyzing transport layer information include switch port or network tap, tcpdump, and proxy server. A network tap is a hardware device that provides access to data flowing across a computer network. Tcpdump is packet analyzer that allows a user to capture and display network packets, and is available at www.tcpdump.org. A proxy server is a server that acts as an intermediary for requests from clients seeking resources from other servers.
After network packet information is captured, network packet information capture subsystem 120 processes the captured network data in order to separate the captured data into one or more network streams. A network stream is one or more network requests made by the software component to the computing component and each of the network responses made by the computing component to the software component to each network request. A network stream may be as simple as a single network request and a single network response. As may be appreciated, a network stream also may be a series of network requests and network responses to those requests. In some example embodiments, a network stream may be encrypted using Transport Layer Security (TLS) or HTTP Secure (HTTPS), in which case the data will need to be decrypted in order to access the application data.
After the captured network requests and responses are separated into one or more network streams, each of the network streams may be stored in a captured network packet information data store 140. The captured network packet information data store 140 may be, in some exemplary embodiments, a relational database, such as a structured query language (SQL) database. As may be appreciated, each network request of a network stream may be stored in association with corresponding network response.
Continuing with FIG. 1, software component 150 can be tested using simulated computing component interface 160. In order to do so, simulated computing component interface 160 may be configured to allow TCP and UDP connections to the same ports that were originally used to allowed TCP and UDP connections to computing component 130. This ensures there is no change to the client. Test software component 150 uses the same application layer protocols for transmission of a service request to simulated computing component interface 160 as used by software component 110 for transmission of service requests to computing component interface 130. Simulated computing component interface 160 may be configured to listen for the same ports and protocols as computing component interface 130. While computing component interface 130 and Simulated computing component interface 160 are shown in FIG. 1 as two separate logical components, in some exemplary embodiments, computing component interface 130 and simulated computing component interface 160 may be implemented as single logical component. In such an implementation, the single logical component may be selectively operated in a “capture” mode, during which network packet information between software component 110 and computing component interface 130 are captured, or a “listening” mode, during which the single logical component listens for network packet information that is sent by test software component 150.
When a service request is sent from test software component 150 to simulated computing component interface 160, simulated computing component interface 160 determines whether a matching service request is stored in captured network information data store 140. If a matching service request is found, then simulated computing component 160 identifies the response that was captured via transport layer information capture subsystem 120 and stored in captured transport layer information data store 140 in association with the matching service request. If simulated computing component 160 identifies a response stored in captured transport layer information data store 140 in association with the matching service request, simulated computing component 160 responds to the service request from test software component 150 with the identified response.
In some exemplary embodiments, certain elements of the service request sent by test software component 150 to simulated computing component 160 may be discarded or anonymized because they are irrelevant to the process of testing software component 150 or may prevent simulated computing component 160 from determining whether a matching service request is stored in captured transport layer information data store 140. A non-limiting example of such an element of a service request is a session identifier in an HTTPS API call.
System 100 illustrated in FIG. 1, therefore, captures service requests by software component 110, and the responses to the captured service requests by computing component 130, at the transport layer, as opposed to the application layer, of the Open Systems Interconnection (OSI) Model. This allows for capturing and replaying communications between software component 110 and computing component 130 at the TCP and UDP packet level. Therefore, it is unnecessary to rely on individual higher (application) level protocol daemons, and allows for consolidation of the captured service requests and responses thereto, yielding a multithreaded, asynchronous transport layer simulation of computing component 130.
FIG. 2A is a sequence diagram of a network packet information capture subsystem, in accordance with some example embodiments. As shown in FIG. 2A, Software Component sends a message comprising one or more network packets comprising a Service Request to Capture Subsystem. In response to receiving the Service Request, Capture Subsystem sends the Service Request to Data Store for storage, and sends the Service Request to Computing Component, which is the computing component to be simulated. Responsive to receiving the Service Request, Computing Component sends a message to Capture Subsystem comprising one or more network packets comprising a Response to the Service Request. Responsive to receiving the Response, Capture Subsystem sends the Response to Data Store for storage in association with the Service Request, and also sends the response to the Software Component that initiated the Service Request. While FIG. 2A illustrates the capture and storage of a single service request and a single response thereto, the Capture Subsystem may be configured to capture and store a series of service requests and responses thereto.
Continuing with FIG. 2A, the Capture Subsystem may include a Data Store Filter. The Data Store Filter may be used to filter the information comprising the Response received by the Capture Subsystem from the Computing Component, prior to storing the Response in the Data Store. Such information filtered by the Capture Subsystem's Data Store Filter may include variable information, such as timestamp information that is included in the Response received from the Computing Component. In other words, rather than storing a specific timestamp value received from the Computing Component, the Data Store Filter may substitute a place holder value for the actual timestamp value, which is then stored in the Data Store instead of the actual timestamp value.
FIG. 2B is a sequence diagram of a simulated computing component interface, in accordance with some example embodiments. As shown in if FIG. 2B, Test Software Component sends a message comprising one or more network packets comprising a Service Request to the Simulated Component. In response to receiving the Service Request, the Simulated Component sends the Service Request to the Data Store. Responsive to receiving the Service Request, Data Store sends a message to the Simulated Component comprising one or more network packets comprising a Response to the Service Request. Responsive to receiving the Response, the Simulated Component sends the Response to the Test Software Component that initiated the Service Request. While FIG. 2A illustrates the sending and receiving a single service request and a single response thereto, the Simulated Component may be configured to send and receive a series of service requests and responses thereto.
Continuing with FIG. 2B, the Simulated Component may include a Response Filter. The Response Filter may be used to filter the information comprising the Response received by the Simulated Component from the Data Store prior to sending the Response to the Test Software Component. Such information filtered by the Simulated Component's Response Filter may include data values, such as the chassis temperature of the Simulated Component. Rather than providing a Response comprising the chassis temperature of the Computing Component illustrated in FIG. 2A, the Response Filter may allow for testing various scenarios by providing a variety of different values representing the chassis temperature of the Simulated Component.
A Data Store Filter and a Response Filter each may include one or more sets of variables to identify the circumstances under which the respective filters should be applied and how the filter operates. An exemplary set of variables may include the following: a filter identifier, a filter type identifier, a protocol identifier, a component identifier, a match identifier and modification information. For example, a Data Store Filter may have the following values:
    • Filter=Timestamp;
    • Filter type=data store filter;
    • Protocol=HTTP;
    • Component=hybrid flash storage device;
    • Match=“request includes timestamp value”; and
    • Modification=“substitute placeholder values for actual values.”
Similarly, a Response Filter may have the following values:
    • Filter=Chassis Temperature;
    • Filter type=response filter;
    • Protocol=SNMP;
    • Component=network-attached storage device;
    • Match=“response includes chassis temperature value”; and
    • Modification=“set chassis temperature value to 50, 100, and 150.”
Although not shown in FIG. 2A or 2B, the Capture Subsystem may include a Response Filter and the Simulated Component may include a Data Store Filter. For example, referring to FIG. 2A, if a first client, upon which the Software Component is running, initiates a connection with the Computing Component, the Software Component may provide a unique client identifier to the Computing Component. Referring to FIG. 2B, if a second client, upon which the Test Software Component is running, initiates a connection with the Simulated Component, and the second client provides a unique client identifier to the Simulated Component. In that case, the first client identifier stored in the Data Store will not match the second client identifier. However, this issue can be addressed by including Data Store Filters in both the Capture Subsystem and the Simulated Component. So, when the first client provides an identifier to the Computing Component, a Data Store Filter included in the Capture Subsystem can be configured to anonymize the first client identifier by, for example, by substituting place holder values, such as a set of zeros, for the first client identifier. Likewise, when the second client provides an identifier to the Simulated Component, a Data Store Filter included in the Simulated Component can be configured to anonymize the second client identifier by substituting the same place holder values, e.g., a set of zeros. Thus, the second client identifier will match the first client identifier.
FIG. 3 is a diagram of a converged infrastructure environment 300, a computing component interface of which may be simulated for testing a software component using captured network information, in accordance with some example embodiments. The converged infrastructure 302 may include a plurality of components, such as servers, data storage devices, network equipment, and associated software, which may be represented a single object or logical entity. In some example embodiments, the converged infrastructure is implemented by a Vblock® System available from the VCE Company, LLC of Richardson, Tex.
By way of non-limiting example, in some embodiments, the converged infrastructure may be a hyper-converged infrastructure. A hyper-converged infrastructure is characterized by a software-centric architecture that tightly integrates servers, data storage devices, network equipment, and associated software and virtualization resources, in a commodity hardware box supported by a single vendor. Hyper-convergence is related to the concept of converged infrastructure, which is an infrastructure approach where a single vendor provides a pre-configured bundle of hardware and software in a single chassis, which is represented as a single object or logical entity, with the goal of minimizing compatibility issues and simplifying management. If required, however, the hardware components of a converged infrastructure can be separated and used independently. The hardware components in a hyper-converged infrastructure, however, are so integrated that they typically cannot be separated. In some example embodiments the hyper-converged infrastructure is implemented by a VxRack™ System, available from the VCE Company, LLC of Richardson, Tex.
The converged infrastructure 302 of some embodiments may include one or more compute layer 330 components, such as one or more servers (e.g., blade servers, rack servers, and/or other servers), one or more fabric extenders, one or more fabric interconnects, a chassis, and/or other compute layer components that may be implemented on a converged infrastructure to provide computing and processing resources of the converged infrastructure. The converged infrastructure 302 may further include one or more storage layer 332 components, such as one or more storage arrays and/or other mass storage devices that may be implemented on a converged infrastructure. In some embodiments, the converged infrastructure 302 may additionally include one or more network layer 334 components, such as one or more switches and/or other network layer components that may be implemented on a converged infrastructure. For example, the network layer 334 may include components that provide switching and routing between the compute layer 330 and storage layer 332 within the converged infrastructure 302. The network layer 334 may additionally or alternatively include components that provide switching and routing between the converged infrastructure 302 and a network so as to support network communication between a component(s) of the converged infrastructure 302 and a computing platform(s) independent of the converged infrastructure 302. The components of the compute layer 330, storage layer 332, and network layer 334 may collectively provide a physical infrastructure of the converged infrastructure 302.
The converged infrastructure 302 may additionally include a virtualization layer 336, which may include one or more virtualization components configured to support one or more virtualized computing environments. The components of the virtualization layer 336 may include components embodied in software, hardware, firmware, and/or some combination thereof. For example, the virtualization layer 336 may include a hypervisor and/or other virtualization components that may be configured to create and run virtual machines and/or to otherwise virtually simulate a computing environment. In some example embodiments, the virtualization layer 336 may include and/or may be communicatively coupled with one or more management components configured to support management of the converged infrastructure 302. For example, in some embodiments, the virtualization layer 336 may include a management infrastructure, which may provide management resources for managing the converged infrastructure 302. In some such embodiments, the management infrastructure may be a separate system from the converged infrastructure, but may be connected to the converged infrastructure to allow management of the entire converged infrastructure 302. In some example embodiments, the virtualization layer 336 may utilize physical hardware resources of the compute layer 330, storage layer 332, and/or network layer 334 to support operation of one or more components of the virtualization layer 336. Additionally or alternatively, in some example embodiments, the virtualization layer 336 may include dedicated physical resources (e.g., physical hardware components) that may provide computing, storage, and/or network communication resources to one or more components of the virtualization layer 336.
It will be appreciated that the compute layer 330, storage layer 332, network layer 334, and virtualization layer 336 as illustrated in FIG. 3 and described above are provided by way of example, and not by way of limitation. In this regard, in some embodiments, aspects of the compute layer 330, storage layer 332, network layer 334, and virtualization layer 336 as described above may not be mandatory and thus some may be omitted in certain embodiments. Additionally, the converged infrastructure 302 of some embodiments may include further or different layers and/or components beyond those illustrated in and described with respect to FIG. 3.
Physical components of the converged infrastructure 302 may be communicatively coupled with each other to support operation of the converged infrastructure 302 via direct connection and/or network communication. For example, as discussed above, in some example embodiments, the network layer 334 may provide switching and routing between physical components of the converged infrastructure.
In some embodiments at least a portion of the components of the converged infrastructure 302 may be assigned addresses, such as Internet Protocol (IP) addresses and/or other network layer addresses, via which the components may be accessed by another component internal to the converged infrastructure 302 and/or via a computing device external to the converged infrastructure 302. For example, in some example embodiments, the converged infrastructure 302 and/or one or more network addressable components thereof may be accessed by an external computing device over a network to which the converged infrastructure 302 of some embodiments may be connected.
FIG. 3 also shows a software component testing system 304, which may be used to test a computing component interface of environment 300, in accordance with some example embodiments. A sample embodiment of software component testing system 304 is illustrated in more detail in FIG. 1 and is discussed in more detail in the discussion of FIG. 1 above.
FIG. 4 is a flow diagram of a process 400 for testing a software component by simulating a computing component interface using captured network packet information, in accordance with some example embodiments. One or more of the operations illustrated in FIG. 4 may be performed by a computer processor.
Process 400 may begin by generating a store of network packet information. Generating the data store of network packet information may include operation 402, in which process 400 captures network packet information. The captured network packet information may include a plurality of service requests and a plurality of associated responses. Each of the plurality of service requests may be one or more network packets sent by a software component to an interface of a computing component to be simulated. Each of the plurality of associated responses may be one or more network packets sent by the interface of the computing component to be simulated to the component in response to receiving each of the plurality of service requests from the software component. Processing may continue with operation 404.
In operation 404, process 400 may store the captured network information, which is comprised of the plurality of service requests and the plurality of associated responses, in a data store. Processing may continue with operation 406.
In some exemplary embodiments, the network packet information sent between the software component and the computing component interface to be simulated may already have been captured and stored, in which case, processing may begin with operation 406.
In operation 406, process 400 receives a service request from a software component to be tested. The service request may be one or more network packets. Processing may continue with operation 408.
In operation 408, responsive to receiving the service request from the software component to be tested, process 400 accesses the data store of captured network packet information. Processing may continue with operation 410.
In operation 410, process 400 determines whether a matching service request is stored in the accessed data store of captured network packet information. A matching service request may be one or more network packets that match the service request received from the software component to be tested. If a matching service request is stored in the accessed data store, processing may continue with operation 412.
In operation 412, process 400 identifies an associated response that is stored in the accessed data store of captured network packet information. The associated response may be one or more network packets that are stored in association with the matching service request. Processing may continue with operation 414.
In operation 414, process 400 sends the associated response to the software component to be tested, and the software component to be tested then processes the associated response.
FIG. 5 is a diagram of an example computing system 500 that may be used to implement some example embodiments of a software component testing system. The computing system 500 may be implemented on any computing device or plurality of computing devices that may be configured to implement one or more example embodiments. By way of non-limiting example, in some embodiments, the computing system 500 may be implemented on a user terminal and/or a computing platform(s) of a converged infrastructure.
The computing system may include a plurality of elements, such as processing circuitry 510, mass storage 518, communication interface 520, and user interface 522, which may be interfaced via a system bus 516. It will be appreciated that the components, devices or elements illustrated in and described with respect to FIG. 5 below may not be mandatory and thus some may be omitted in certain embodiments. Additionally, the computing system 500 of some embodiments may include further or different components, devices or elements beyond those illustrated in and described with respect to FIG. 5.
Further, while FIG. 5 illustrates an architecture including elements interfaced via the system bus 516, it will be appreciated that in some example embodiments, elements of the computing system 500 may be implemented in a distributed computing environment in which elements may be distributed across a plurality of computing devices, which may be in communication with each other, such as via a network, to provide functionality of the computing system 500. As such, in some example embodiments, elements of the computing system 500 may be communicatively coupled via a network in addition to or in lieu of the system bus 516.
The computing system 500 of some example embodiments may implement an operating system(s), such as MICROSOFT WINDOWS™, UNIX™, LINUX™, IBM z/OS™, CISCO™ INTERNETWORK OPERATING SYSTEM (IOS), CISCO™ CATALYST™ OPERATING SYSTEM (CatOS), CISCO NX-OS, EMC™ ISILON OneFS™ OPERATING SYSTEM, NETAPP™ DATA ONTAP™, or other known operating systems. It should be appreciated; however, that in some embodiments, one or more aspects of the computing system 500 may be implemented on and/or integrated with a virtualized computing system, such as may be provided by a converged infrastructure.
In some example embodiments, the computing system 500 may include processing circuitry 510 that is configurable to perform actions in accordance with one or more example embodiments disclosed herein. In this regard, the processing circuitry 510 may be configured to perform and/or control performance of one or more functionalities for testing a computing component interface of a converged infrastructure, such as converged infrastructure 302, in accordance with various example embodiments. Thus, the processing circuitry 510 may be configured to perform data processing, application execution and/or other processing and management services according to one or more example embodiments.
In some example embodiments, the processing circuitry 510 may include a processor 512 and, in some embodiments, such as that illustrated in FIG. 5, may further include memory 514. The processing circuitry 510 may be in communication with (e.g., via system bus 516) and/or otherwise control mass storage 518, communication interface 520, and/or user interface 522.
The processor 512 may be embodied in a variety of forms. For example, the processor 512 may be embodied as various hardware processing means such as a microprocessor, a coprocessor, a general purpose processor, a controller or various other computing or processing devices including integrated circuits (e.g., a logic device), such as an ASIC (application specific integrated circuit), an FPGA (field programmable gate array), some combination thereof, or the like. Although illustrated as a single processor, it will be appreciated that the processor 512 may comprise a plurality of processors. The plurality of processors may be in operative communication with each other and may be collectively configured to perform one or more functionalities to support testing a software component by simulating a computing component interface of a converged infrastructure in accordance with various embodiments. In some embodiments in which the computing system 500 is embodied as a plurality of computing devices, a plurality of processors, which may collectively form the processor 512, may be distributed across a plurality of computing devices that may be in operative communication with each other directly and/or via a network. In some example embodiments, the processor 512 may be configured to execute instructions that may be stored in a memory, such as the memory 514 and/or the mass storage 518 and/or that may be otherwise accessible to the processor 512. As such, whether configured by hardware or by a combination of hardware and software, the processor 512 may be capable of performing operations according to various embodiments while configured accordingly.
In embodiments including the memory 514, the memory 514 may include read only memory (ROM), random access memory (RAM), and/or the like. The mass storage 518 may include one or more memory and/or other storage devices, which may include fixed (e.g., a fixed hard disc drive, storage array, fixed flash memory device, and/or the like) and/or removable memory devices (e.g., a removable flash memory device, an optical disc drive, and/or other removable memory device). The mass storage 518 may provide a persistent data storage device. In some example embodiments, the mass storage 518 may be configured to provide a backup storage. The mass storage 518 may include a memory device implemented locally to the computing system 500 and/or a memory device remote to the computing system 500, which may be communicatively coupled with the computing system 500, such as via a network. In some embodiments in which the computing system 500 is embodied as a plurality of computing devices, the memory 514 and/or mass storage 518 may include a plurality of memory devices, which may be distributed across a plurality of computing devices that may be in operative communication with each other directly and/or via a network to form the computing system 500.
In some embodiments, the memory 514 and/or the mass storage 518 may provide a non-transitory computer-readable storage medium that may store computer program instructions that may be executed by the processor 512. In this regard, the memory 514 and/or mass storage 518 may be configured to store information, data, applications, instructions and/or the like for enabling the computing system 500 to carry out various functions in accordance with one or more example embodiments. Applications that may be executed by the processor 512 may also be in the form of modulated electronic signals that may be accessed via a network modem or other network interface of the computing system 500.
The computing system 500 may further include a communication interface 520. The communication interface 520 may enable the computing system 500 to communicate (e.g., over a network or other communication interface) with another computing device or system, such as the converged infrastructure 302. In this regard, the communication interface 520 may include one or more interface mechanisms for enabling communication with other devices and/or networks. As such, the communication interface 520 may include, for example, an antenna (or multiple antennas) and supporting hardware and/or software for enabling communications with a wireless communication network (e.g., a cellular network, wireless local area network, and/or the like) and/or a communication modem or other hardware/software for supporting communication via cable, digital subscriber line (DSL), USB, FireWire, Ethernet, one or more optical transmission technologies, and/or other wireline networking methods.
In some example embodiments, the computing system 500 may include the user interface 522. It will be appreciated, however, that in some example embodiments, one or more aspects of the user interface 522 may be omitted, and in some embodiments, the user interface 522 may be omitted entirely. The user interface 522 may be in communication with the processing circuitry 510 to receive an indication of a user input and/or to provide an audible, visual, mechanical, or other output to a user. As such, the user interface 522 may include, for example, a keyboard, a mouse, a joystick, a display, a touch screen display, a microphone, a speaker, one or more biometric input devices, and/or other input/output mechanisms.
As shown in FIG. 5, in some example embodiments, a software component testing system 540 interfaces with computing system 500. As discussed above in connection with FIG. 1, the software component testing system 540 may be configured to test a software component on a simulated computing component.
Embodiments described herein may be practiced with various computer system configurations including blade devices, cloud systems, converged infrastructure systems, rack mounted servers, switches, storage environments, hand-held devices, tablets, microprocessor systems, microprocessor-based or programmable consumer electronics, mini computers, mainframe computers and the like. Some embodiments may also be practiced in distributed computing environments where tasks are performed by remote processing devices that are linked through one or more networks, such as one or more wireline networks and/or one or more wireless networks.
A computer program product may be used to implement a software component testing system, in some example embodiments. A computer program product embodiment may include a machine-readable, non-transitory (non-volatile) storage medium (media) having instructions stored thereon/in, which can be used to program a computer to perform any of the processes of the embodiments described herein. Computer code for operating and configuring a software component testing system is preferably downloaded and stored on a hard disk, although the entire program code, or portions thereof, may also be stored in any other volatile or non-volatile memory medium or device as is well known, such as a read only memory (ROM) or random access memory (RAM), or provided on any media capable of storing program code, such as any type of rotating or solid state media, or any type of media or device suitable for storing instructions and/or data. Additionally, the entire program code, or portions thereof, may be transmitted and downloaded from a software source over a transmission medium, e.g., over the Internet, or from another server, as is well known, or transmitted over any other conventional network connection as is well known (e.g., extranet, virtual private network (VPN), local area network (LAN), etc.) using any communication medium and protocols (e.g., transmission control protocol/internet protocol (TCP/IP), hypertext transport protocol (HTTP), HTTP secure (HTTPS), Ethernet, etc.) as are well known. It may be appreciated that computer code for implementing embodiments of the present invention can be implemented in any programming language that can be executed on a client system and/or server or server system such as, for example, C, C++, hypertext markup language (HTML), any other markup language, Java™, JavaScript, ActiveX, any other scripting language, such as VBScript, and many other programming languages as are well known may be used.
Many modifications and other embodiments of the inventions set forth herein will come to mind to one skilled in the art to which these disclosed embodiments pertain having the benefit of the teachings presented in the foregoing descriptions and the associated drawings. Therefore, it is to be understood that embodiments of the invention are not to be limited to the specific embodiments disclosed and that modifications and other embodiments are intended to be included within the scope of the invention. Moreover, although the foregoing descriptions and the associated drawings describe example embodiments in the context of certain example combinations of elements and/or functions, it should be appreciated that different combinations of elements and/or functions may be provided by alternative embodiments without departing from the scope of the disclosure. In this regard, for example, different combinations of elements and/or functions than those explicitly described above are also contemplated within the scope of the disclosure. Although specific terms are employed herein, they are used in a generic and descriptive sense only and not for purposes of limitation.
It should be understood that although the terms first, second, etc. may be used herein to describe various steps or calculations, these steps or calculations should not be limited by these terms. These terms are only used to distinguish one operation or calculation from another. For example, a first calculation may be termed a second calculation, and, similarly, a second step may be termed a first step, without departing from the scope of this disclosure. As used herein, the term “and/or” and the “/” symbol includes any and all combinations of one or more of the associated listed items.
As used herein, the singular forms “a,” “an,” and “the” are intended to include the plural forms as well, unless the context clearly indicates otherwise. It will be further understood that the terms “comprises,” “comprising,” “includes,” and/or “including,” when used herein, specify the presence of stated features, integers, steps, operations, elements, and/or components, but do not preclude the presence or addition of one or more other features, integers, steps, operations, elements, components, and/or groups thereof. Therefore, the terminology used herein is for the purpose of describing particular embodiments only and is not intended to be limiting.

Claims (17)

What is claimed is:
1. A computer-implemented method for testing a software component by simulating an interface to a computing component interface using captured network packet information, the method comprising:
receiving a service request from a first software component, the service request comprising one or more network packets;
responsive to receiving the service request from the first software component, accessing a data store of captured network packet information; wherein the data store is generated by capturing network packet information, wherein the captured network packet information is comprised of a plurality of service requests and a plurality of associated responses, wherein each of the plurality of service requests is comprised of one or more network packets sent by a second software component to an interface of a computing component to be simulated, and wherein each of the plurality of associated responses is comprised of one or more network packets sent by the interface of the computing component to be simulated to the second software component in response to receiving each of the plurality of service requests from the second software component; and storing the plurality of service requests and the plurality of associated responses in the data store of captured network packet information;
determining that a matching service request is stored in the accessed data store of captured network packet information, wherein the matching service request is comprised of one or more network packets that match the service request received from the first software component;
identifying an associated response that is stored in the accessed data store of captured network packet information, the associated response being comprised of one or more network packets that are stored in association with the matching service request;
sending the associated response to the first software component; and
testing the first software component by simulation.
2. The method of claim 1, further comprising:
processing the captured network packet information by separating the captured network packet information into one or more network information streams, wherein a network information stream is comprised of one or more service requests and the associated responses; and
storing the one or more network information streams in the data store.
3. The method of claim 1, wherein the captured network information is encrypted by at least one of the software component and the interface of the computing component to be simulated.
4. The method of claim 1, wherein the network packet information is captured independent of a network protocol.
5. The method of claim 1, wherein the service request is unauthenticated and the associated response is a request for authentication information from the second software component.
6. The method of claim 1, wherein the interface of the computing component to be simulated is a component of a converged infrastructure environment.
7. A computer implemented system for testing a software component by simulating a computing component interface using captured network packet information, the system comprising:
at least one processor; and
at least one memory storing computer program code, wherein the at least one memory and stored computer program code are configured, with the at least one processor, to cause the system to at least:
receive a service request from a first software component, the service request comprising one or more network packets;
responsive to receiving the service request from the first software component, access a data store of captured network packet information; wherein the data store is generated by:
capturing network packet information, wherein the captured network packet information is comprised of a plurality of service requests and a plurality of associated responses, wherein each of the plurality of service requests is comprised of one or more network packets sent by a second software component to an interface of a computing component to be simulated, and wherein each of the plurality of associated responses is comprised of one or more network packets sent by the interface of the computing component to be simulated to the second software component in response to receiving each of the plurality of service requests from the second software component; and
store the plurality of service requests and the plurality of associated responses in the data store of captured network packet information;
determine that a matching service request is stored in the accessed data store of captured network packet information, wherein the matching service request is comprised of one or more network packets that match the service request received from the first software component;
identify an associated response that is stored in the accessed data store of captured network packet information, the associated response being comprised of one or more network packets that are stored in association with the matching service request;
send the associated response to the first software component; and
test the first software component by simulation.
8. The computer implemented system of claim 7, wherein the at least one memory and stored computer program code are configured, with the at least one processor, to further cause the system to:
process the captured network packet information by separating the captured network packet information into one or more network information streams, wherein a network information stream is comprised of one or more service requests and the associated responses; and
store the one or more network information streams in the data store.
9. The computer implemented system of claim 7, wherein the captured network information is encrypted by at least one of the software component and the interface of the computing component to be simulated.
10. The computer implemented system of claim 7, wherein the network packet information is captured independent of a network protocol.
11. The computer implemented system of claim 7, wherein the service request is unauthenticated and the associated response is a request for authentication information from the second software component.
12. The computer implemented system of claim 7, wherein the interface of the computing component to be simulated is a component of a converged infrastructure environment.
13. A computer program product for testing a software component by simulating a computing component using captured network information, the computer program product comprising at least one non-transitory computer-readable storage medium having program instructions stored thereon, which when executed by at least one processor, cause the at least one processor to perform a method comprising:
receiving a service request from a first software component, the service request comprising one or more network packets;
responsive to receiving the service request from the first software component, accessing a data store of captured network packet information; wherein the data store is generated by:
capturing network packet information, wherein the captured network packet information is comprised of a plurality of service requests and a plurality of associated responses, wherein each of the plurality of service requests is comprised of one or more network packets sent by a second software component to an interface of a computing component to be simulated, and wherein each of the plurality of associated responses is comprised of one or more network packets sent by the interface of the computing component to be simulated to the second software component in response to receiving each of the plurality of service requests from the second software component; and
storing the plurality of service requests and the plurality of associated responses in the data store of captured network packet information;
determining that a matching service request is stored in the accessed data store of captured network packet information, wherein the matching service request is comprised of one or more network packets that match the service request received from the first software component;
identifying an associated response that is stored in the accessed data store of captured network packet information, the associated response being comprised of one or more network packets that are stored in association with the matching service request;
sending the associated response to the first software component; and
testing the first software component by simulation.
14. The computer program product of claim 13, wherein the least one non-transitory computer-readable storage medium having program instructions stored thereon, which when executed by the at least one processor, cause the at least one processor to perform a method further comprising:
processing the captured network packet information by separating the captured network packet information into one or more network information streams, wherein a network information stream is comprised of one or more service requests and the associated responses;
and storing the one or more network information streams in the data store.
15. The computer program product of claim 13, wherein the captured network information is encrypted by at least one of the software component and the interface of the computing component to be simulated.
16. The computer program product of claim 13, wherein the network packet information is captured independent of a network protocol.
17. The computer program product of claim 13, wherein the interface of the computing component to be simulated is a component of a converged infrastructure environment.
US15/191,087 2016-06-23 2016-06-23 Computer implemented system and method and computer program product for testing a software component by simulating a computing component using captured network packet information Active 2036-09-15 US9916225B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US15/191,087 US9916225B1 (en) 2016-06-23 2016-06-23 Computer implemented system and method and computer program product for testing a software component by simulating a computing component using captured network packet information

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US15/191,087 US9916225B1 (en) 2016-06-23 2016-06-23 Computer implemented system and method and computer program product for testing a software component by simulating a computing component using captured network packet information

Publications (1)

Publication Number Publication Date
US9916225B1 true US9916225B1 (en) 2018-03-13

Family

ID=61525571

Family Applications (1)

Application Number Title Priority Date Filing Date
US15/191,087 Active 2036-09-15 US9916225B1 (en) 2016-06-23 2016-06-23 Computer implemented system and method and computer program product for testing a software component by simulating a computing component using captured network packet information

Country Status (1)

Country Link
US (1) US9916225B1 (en)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3609132A1 (en) * 2018-08-08 2020-02-12 Servicenow, Inc. Capturing and encoding of network transactions for playback in a simulation environment
US10678676B2 (en) 2018-08-08 2020-06-09 Servicenow, Inc. Playback of captured network transactions in a simulation environment
US11068846B1 (en) * 2017-04-26 2021-07-20 EMC IP Holding Company LLC Workgroup management system and method for individual sub-systems of an integrated computing system
CN113765868A (en) * 2020-08-17 2021-12-07 北京沃东天骏信息技术有限公司 Service processing method and device

Citations (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050081166A1 (en) * 2003-10-14 2005-04-14 Stokke Michael A. System and method facilitating automated navigation for user interface(s)
US20060117055A1 (en) * 2004-11-29 2006-06-01 John Doyle Client-based web server application verification and testing system
US20060253762A1 (en) * 2005-03-16 2006-11-09 Schalick Christopher A FPGA emulation system
US7213113B2 (en) * 2001-02-26 2007-05-01 Emc Corporation System and method for preparation of workload data for replaying in a data storage environment
US7613599B2 (en) * 2000-06-02 2009-11-03 Synopsys, Inc. Method and system for virtual prototyping
US7693974B2 (en) * 1998-12-18 2010-04-06 Sprint Communications Company L.P. System and method for providing a graphical user interface to, for building, and/or for monitoring a telecommunication network
US20100114549A1 (en) * 2008-11-06 2010-05-06 Honeywell International Inc. Systems and methods for providing a simulation environment having a simulation user interface
US20100138688A1 (en) * 2006-08-19 2010-06-03 Sykes Edward A Managing service levels on a shared network
US20110282642A1 (en) * 2010-05-15 2011-11-17 Microsoft Corporation Network emulation in manual and automated testing tools
US20110320880A1 (en) * 2010-06-23 2011-12-29 Tealeaf Technology, Inc. System identifying and inferring web session events
US8335848B2 (en) * 2006-06-30 2012-12-18 Tealeaf Technology, Inc. Method and apparatus for monitoring and synchronizing user interface events with network data
US8352240B2 (en) * 2008-06-20 2013-01-08 Vmware, Inc. Decoupling dynamic program analysis from execution across heterogeneous systems
US20130346639A1 (en) * 2012-06-21 2013-12-26 Jonathan Stroud Systems and methods for programming configurable logic devices via usb
US8856600B2 (en) * 2012-06-21 2014-10-07 Breakingpoint Systems, Inc. JTAG-based programming and debug
US9003305B2 (en) * 2012-02-01 2015-04-07 Facebook, Inc. Folding and unfolding images in a user interface
US20150195182A1 (en) * 2014-01-09 2015-07-09 Citrix Systems, Inc Systems and methods for cloud-based probing and diagnostics
US20150206245A1 (en) * 2014-01-20 2015-07-23 Fmr Llc Dynamic Portfolio Simulator Tool Apparatuses, Methods and Systems
US20150326455A1 (en) * 2014-05-06 2015-11-12 T-Mobile Usa, Inc. Quality of Experience Diagnosis and Analysis in Wireless Communications
US9753844B2 (en) * 2012-12-27 2017-09-05 Micron Technology, Inc. Automatic identification of storage requirements, such as for use in selling data storage management solutions

Patent Citations (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7693974B2 (en) * 1998-12-18 2010-04-06 Sprint Communications Company L.P. System and method for providing a graphical user interface to, for building, and/or for monitoring a telecommunication network
US7613599B2 (en) * 2000-06-02 2009-11-03 Synopsys, Inc. Method and system for virtual prototyping
US7213113B2 (en) * 2001-02-26 2007-05-01 Emc Corporation System and method for preparation of workload data for replaying in a data storage environment
US20050081166A1 (en) * 2003-10-14 2005-04-14 Stokke Michael A. System and method facilitating automated navigation for user interface(s)
US20060117055A1 (en) * 2004-11-29 2006-06-01 John Doyle Client-based web server application verification and testing system
US20060253762A1 (en) * 2005-03-16 2006-11-09 Schalick Christopher A FPGA emulation system
US8335848B2 (en) * 2006-06-30 2012-12-18 Tealeaf Technology, Inc. Method and apparatus for monitoring and synchronizing user interface events with network data
US20100138688A1 (en) * 2006-08-19 2010-06-03 Sykes Edward A Managing service levels on a shared network
US8352240B2 (en) * 2008-06-20 2013-01-08 Vmware, Inc. Decoupling dynamic program analysis from execution across heterogeneous systems
US9058420B2 (en) * 2008-06-20 2015-06-16 Vmware, Inc. Synchronous decoupled program analysis in virtual environments
US20100114549A1 (en) * 2008-11-06 2010-05-06 Honeywell International Inc. Systems and methods for providing a simulation environment having a simulation user interface
US20110282642A1 (en) * 2010-05-15 2011-11-17 Microsoft Corporation Network emulation in manual and automated testing tools
US20110320880A1 (en) * 2010-06-23 2011-12-29 Tealeaf Technology, Inc. System identifying and inferring web session events
US9003305B2 (en) * 2012-02-01 2015-04-07 Facebook, Inc. Folding and unfolding images in a user interface
US8856600B2 (en) * 2012-06-21 2014-10-07 Breakingpoint Systems, Inc. JTAG-based programming and debug
US20130346639A1 (en) * 2012-06-21 2013-12-26 Jonathan Stroud Systems and methods for programming configurable logic devices via usb
US9753844B2 (en) * 2012-12-27 2017-09-05 Micron Technology, Inc. Automatic identification of storage requirements, such as for use in selling data storage management solutions
US20150195182A1 (en) * 2014-01-09 2015-07-09 Citrix Systems, Inc Systems and methods for cloud-based probing and diagnostics
US20150206245A1 (en) * 2014-01-20 2015-07-23 Fmr Llc Dynamic Portfolio Simulator Tool Apparatuses, Methods and Systems
US20150326455A1 (en) * 2014-05-06 2015-11-12 T-Mobile Usa, Inc. Quality of Experience Diagnosis and Analysis in Wireless Communications

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Using Discrete Event Simulation for Programming Model Exploration at Extreme-Scale: Macroscale Components for the Structural Simulation Toolkit (SST); Jeremiah J. Wilke and Joseph P. Kenny, Sandia National Laboratories, Livermore, CA, USA-Feb. 1, 2015. *
Using Discrete Event Simulation for Programming Model Exploration at Extreme-Scale: Macroscale Components for the Structural Simulation Toolkit (SST); Jeremiah J. Wilke and Joseph P. Kenny, Sandia National Laboratories, Livermore, CA, USA—Feb. 1, 2015. *

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11068846B1 (en) * 2017-04-26 2021-07-20 EMC IP Holding Company LLC Workgroup management system and method for individual sub-systems of an integrated computing system
EP3609132A1 (en) * 2018-08-08 2020-02-12 Servicenow, Inc. Capturing and encoding of network transactions for playback in a simulation environment
US10678676B2 (en) 2018-08-08 2020-06-09 Servicenow, Inc. Playback of captured network transactions in a simulation environment
US11068380B2 (en) 2018-08-08 2021-07-20 Servicenow, Inc. Capturing and encoding of network transactions for playback in a simulation environment
CN113765868A (en) * 2020-08-17 2021-12-07 北京沃东天骏信息技术有限公司 Service processing method and device
CN113765868B (en) * 2020-08-17 2023-08-08 北京沃东天骏信息技术有限公司 Service processing method and device

Similar Documents

Publication Publication Date Title
US10133591B2 (en) Network traffic data in virtualized environments
US11330044B2 (en) Method and system for processing load balancing using virtual switch in virtual network environment
US10091238B2 (en) Deception using distributed threat detection
EP4026297B1 (en) Honeypots for infrastructure-as-a-service security
US11075981B2 (en) Method and system for processing direct server return load balancing using loopback interface in virtual network environment
US10057234B1 (en) Systems and methods for providing network security monitoring
US10116625B2 (en) Systems and methods for secure containerization
US10686568B2 (en) Active flow diagnostics for cloud-hosted networks
US9240976B1 (en) Systems and methods for providing network security monitoring
US8949399B2 (en) Dynamic configuration of virtual machines
US8782796B2 (en) Data exfiltration attack simulation technology
US20180191779A1 (en) Flexible Deception Architecture
US20160098340A1 (en) Method and system for comparing different versions of a cloud based application in a production environment using segregated backend systems
US20140101724A1 (en) Network attack detection and prevention based on emulation of server response and virtual server cloning
US9916225B1 (en) Computer implemented system and method and computer program product for testing a software component by simulating a computing component using captured network packet information
KR100910426B1 (en) Method for mapping an iscsi target name to a storage resource based on an initiator hardware class identifier
US20150067399A1 (en) Analysis, recovery and repair of devices attached to remote computing systems
US11245589B2 (en) IoT topology analyzer defining an IoT topology and associated methods
Bullock et al. Wireshark for Security Professionals: Using Wireshark and the Metasploit Framework
WO2019204293A1 (en) Network data control method, system and security protection device
US9893968B1 (en) Troubleshooting network paths in a distributed computing environment
JP6962374B2 (en) Log analyzer, log analysis method and program
CN106648838B (en) Resource pool management configuration method and device
US10055336B1 (en) Computer implemented system and method and computer program product for testing a software component by simulating an interface to a computing component using randomized network packet information
US9678772B2 (en) System, method, and computer-readable medium

Legal Events

Date Code Title Description
AS Assignment

Owner name: VCE COMPANY, LLC, TEXAS

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:BONCZKOWSKI, JOSHUA;HANSEN, NICHOLAS;HART, STEVEN R;AND OTHERS;SIGNING DATES FROM 20160511 TO 20160621;REEL/FRAME:039026/0778

AS Assignment

Owner name: VCE IP HOLDING COMPANY LLC, TEXAS

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:VCE COMPANY, LLC;REEL/FRAME:040576/0161

Effective date: 20160906

STCF Information on status: patent grant

Free format text: PATENTED CASE

AS Assignment

Owner name: EMC IP HOLDING COMPANY LLC, TEXAS

Free format text: MERGER;ASSIGNOR:VCE IP HOLDING COMPANY LLC;REEL/FRAME:052224/0314

Effective date: 20200128

AS Assignment

Owner name: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., TEXAS

Free format text: SECURITY AGREEMENT;ASSIGNORS:CREDANT TECHNOLOGIES INC.;DELL INTERNATIONAL L.L.C.;DELL MARKETING L.P.;AND OTHERS;REEL/FRAME:053546/0001

Effective date: 20200409

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