IP Library Granted Patent US 7,703,103
Granted Patent B2
US 7,703,103 · App. 10/678,734 · Granted Apr 20, 2010

Serving concurrent TCP/IP connections of multiple virtual internet users with a single thread

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 7,703,103
App. No.
10/678,734
Granted
Apr 20, 2010
Kind
B2
Abstract

A method for facilitating network communications from one or more independent execution threads by a dedicated worker thread. Because an operating system is not designed for use with a large number of threads, such a system requires the use of multiple computers for simulating a large number of virtual users. This increases complexity, as well as cost. The present invention reduces the number of threads needed, which reduces resource needs, and in turn increases the number of virtual users that can be simulated. According to the present invention, a worker thread uses non-blocking function calls to efficiently handle requests for network operations.

Claims (40)

1. A method for facilitating network communications from one or more virtual user threads, comprising steps of:

storing a request object generated by one or more virtual user threads in a data structure, each of the one or more virtual user threads simulating a computer that is communicating with a server and configured to generate and then insert request objects into the data structure, the request object describing a request for an outgoing network operation and having state information;

retrieving the request object from the data structure by a dedicated worker thread, the dedicated worker thread being different from the one or more virtual user threads and configured to process the outgoing network operation described by the request object;

modifying the request object by the dedicated worker thread to indicate a change of state;

sending a non-blocking function call from the dedicated worker thread to a networking module;

sending the request object from the dedicated worker thread to the networking module;

executing the non-blocking function call to the networking module; and

storing a notification of completion in the data structure by the networking module, wherein the notification of completion corresponds to the request object.

2. The method of claim 1 further including the step of retrieving the notification of completion by the dedicated worker thread from the data structure.

3. The method of claim 2 further comprising the steps of:

retrieving the request object corresponding to the notification of completion by the dedicated worker thread;

determining by the dedicated worker thread whether the request described in the request object is complete; and

upon determination that the request is complete, sending a message from the dedicated worker thread to least one of the one or more virtual user threads indicating that the request is complete.

4. The method of claim 2 further comprising the steps of:

retrieving the request object corresponding to the notification of completion by the worker thread;

determining by the dedicated worker thread whether the request described in the request object is complete; and

upon determination that the request is not complete, sending a second non-blocking function call from the dedicated worker thread to the networking module.

5. The method of claim 1 wherein the request object further includes information identifying the one or more virtual user threads.

6. The method of claim 1 wherein the data structure is a queue.

7. A computer implemented system for facilitating network communications from one or more virtual user threads, comprising:

a computer having a processor, a memory device, and a network device; and

a computer-readable storage medium encoded with a computer program, the computer program comprising:

a network module configured to execute non-blocking networking function calls through the network device;

one or more request objects, each of the one or more request objects storing information describing a request for an outgoing network operation and state information;

a data structure configured to store the one or more request objects;

one or more virtual user threads, each of the one or more virtual user threads simulating a computer that is communicating with a server and being configured to generate and then insert the one or more request objects into the data structure; and

a worker thread, different from the one or more virtual user threads, configured to retrieve a request object from the data structure, modify the state of the request object and send a non-blocking function call to the networking module, wherein the networking module is configured to store a notification of completion in a data structure configured to store the request object, the notification of completion being associated with the request object.

8. The system of claim 7 , wherein the data structure is a queue.

9. The system of claim 7 , wherein the worker thread is further configured to send the request object to the networking module.

10. The system of claim 7 , wherein the data structure is further configured to receive the notification of completion from the networking module and store the notification of completion.

11. A computer implemented system for testing a server comprising:

a computer having a processor, a memory device, and a network device; and

a computer-readable storage medium encoded with a computer program, the computer program comprising:

a networking module connected to the server over a computer network through the network device;

one or more request objects, each of the one or more request objects storing information describing a request for an outgoing network operation and state information;

one or more virtual user threads, each virtual user thread simulating a computer that is communicating with the server and configured to generate and then insert at least one of the one or more request objects into the data structure;

a worker thread, different from the one or more virtual user threads, configured to retrieve a request object from the data structure, modify the state of the request object and send a non-blocking function call to the networking module, wherein the networking module is configured to store a notification of completion in a data structure configured to store the request object, the notification of completion being associated with the request object.

12. The system of claim 11 , wherein the data structure is a queue.

13. The system of claim 11 , wherein the worker thread is further configured to retrieve the notification of completion from the data structure and to retrieve the request object associated with the notification of completion.

14. The system of claim 13 , wherein the worker thread is further configured to determine whether the request for the outgoing network operation is completed, based on the request object and the notification of completion.

Assignments (9)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 3, 2024
From: BORLAND SOFTWARE CORPORATION
To: MICRO FOCUS IP DEVELOPMENT, LIMITED
Reel/Frame 069464/0990 →
RELEASE OF SECURITY INTEREST REEL/FRAME 044183/0718 Recorded Feb 2, 2023
From: JPMORGAN CHASE BANK, N.A.
To: MICRO FOCUS LLC (F/K/A ENTIT SOFTWARE LLC); BORLAND SOFTWARE CORPORATION; MICRO FOCUS (US), INC.; SERENA SOFTWARE, INC; ATTACHMATE CORPORATION; MICRO FOCUS SOFTWARE INC. (F/K/A NOVELL, INC.); NETIQ CORPORATION
Reel/Frame 062746/0399 →
RELEASE OF SECURITY INTEREST REEL/FRAME 035656/0251 Recorded Feb 2, 2023
From: JPMORGAN CHASE BANK, N.A.
To: BORLAND SOFTWARE CORPORATION; ATTACHMATE CORPORATION; NETIQ CORPORATION; MICRO FOCUS (US), INC.; MICRO FOCUS SOFTWARE INC. (F/K/A NOVELL, INC.)
Reel/Frame 062623/0009 →
CORRECTIVE ASSIGNMENT TO CORRECT THE TO CORRECT TYPO IN APPLICATION NUMBER 10708121 WHICH SHOULD BE 10708021 PREVIOUSLY RECORDED ON REEL 042388 FRAME 0386. ASSIGNOR(S) HEREBY CONFIRMS THE NOTICE OF SUCCESSION OF AGENCY. Recorded Jul 26, 2018
From: BANK OF AMERICA, N.A., AS PRIOR AGENT
To: JPMORGAN CHASE BANK, N.A., AS SUCCESSOR AGENT
Reel/Frame 048793/0832 →
SECURITY INTEREST Recorded Oct 11, 2017
From: ATTACHMATE CORPORATION; BORLAND SOFTWARE CORPORATION; NETIQ CORPORATION; MICRO FOCUS (US), INC.; MICRO FOCUS SOFTWARE, INC.; ENTIT SOFTWARE LLC; ARCSIGHT, LLC; SERENA SOFTWARE, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 044183/0718 →
NOTICE OF SUCCESSION OF AGENCY Recorded May 2, 2017
From: BANK OF AMERICA, N.A., AS PRIOR AGENT
To: JPMORGAN CHASE BANK, N.A., AS SUCCESSOR AGENT
Reel/Frame 042388/0386 →
SECURITY INTEREST Recorded May 13, 2015
From: MICRO FOCUS (US), INC.; BORLAND SOFTWARE CORPORATION; ATTACHMATE CORPORATION; NETIQ CORPORATION; NOVELL, INC.
To: BANK OF AMERICA, N.A.
Reel/Frame 035656/0251 →
MERGER Recorded Nov 3, 2008
From: SEGUE SOFTWARE, INC.
To: BORLAND SOFTWARE CORPORATION
Reel/Frame 021777/0067 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 14, 2004
From: SPIEGL, HELMUT; AMBICHL, ERNST; GREIFENEDER, BERND
To: SEGUE SOFTWARE, INC.
Reel/Frame 015337/0729 →