Troubleshooting

Design

1. When I record an Oracle Forms scenario, I get the following message: Java Oracle Forms library missing.
2. NeoLoad has not identified the Oracle Forms requests. The Oracle Forms requests in the recording look like standard POST binary requests.
3. The non-decoded requests in the recording still aren't decoded, even after correcting the HTTP headers in the Oracle Forms general settings.
4. When recording an Oracle Forms scenario, some recorded requests aren't properly decoded. Most of the requests have been decoded normally.
5. When recording an Oracle Forms scenario using WebUtil, the Oracle Forms applet freezes.
1.

When I record an Oracle Forms scenario, I get the following message: Java Oracle Forms library missing.

For NeoLoad to function properly, a Java library from the Oracle Forms application server must be copied in NeoLoad. The library must be placed in the folder specified in the message.

[Note]Note

Once the library has been copied into NeoLoad, you must re-start NeoLoad (you don't need to re-start the machine itself) for the changes to take effect.

2.

NeoLoad has not identified the Oracle Forms requests. The Oracle Forms requests in the recording look like standard POST binary requests.

Check the following:

  1. Make sure NeoLoad contains the Oracle Forms library. A pop-up window should have notified you that the Oracle Forms library was missing. See the Oracle Forms module's general documentation for information on adding the library to NeoLoad.

    At the end of recording, if the Oracle Forms library is missing but NeoLoad has correctly identified the requests, you should see requests that have the Oracle Forms icon, but which haven't been decoded.

  2. The Oracle Forms library has been added, but NeoLoad hasn't identified the Oracle Forms requests. The Oracle Forms requests do not have the Oracle Forms icon and look like standard POST binary requests.

    Procedure 11.2. Resolving the problem

    1. Make a recording with the Oracle Forms application.

    2. Manually search the recording and locate the Oracle Forms requests.

      A non-identified Oracle Forms request shows up as a POST binary request whose binary content is unreadable.

    3. Click on the "Advanced..." button, then select the Recorded request tab.

    4. Copy the contents of the text field into a text file for future reference.

    5. Select the Recorded response tab.

    6. Copy the contents of the text field into another text file, again for future reference.

    7. Exit the request's advanced parameters window.

    8. Click on Edit > Preferences > General settings > Oracle Forms.

    9. Compare the request's Content-type and User-Agent headers with the regular expressions configured.

    10. Compare the response's Content-type and Server headers with the regular expressions configured.

    11. If necessary, add new regular expressions by checking the headers in the recording.

    12. Repeat the recording run and check to make sure the recorded requests have been decoded into XML format..

    [Note]Note

    For further information on compiling regular expressions, see the appendix dedicated to regular expressions.

3.

The non-decoded requests in the recording still aren't decoded, even after correcting the HTTP headers in the Oracle Forms general settings.

The changes are not retroactive, so you need to make further recording. It may require several recordings until you find a functioning regular expression and the recorded requests are correctly decoded.

4.

When recording an Oracle Forms scenario, some recorded requests aren't properly decoded. Most of the requests have been decoded normally.

Before starting a new recording, make sure you have closed all browser instances, especially if some are still open and connected to Oracle Forms applets. Such non-decoded requests captured during recording usually come from Oracle Forms applets open in other browser instances.

5.

When recording an Oracle Forms scenario using WebUtil, the Oracle Forms applet freezes.

NeoLoad does support the WebUtil technology. If WebUtil is used to communicate with dll's, there may be a conflict between the browser that is automatically launched by NeoLoad for the recording and the loading of these dll's. The best way to solve this is to launch the browser manually as follows:

Procedure 11.3. Oracle Forms applet freeze workaround

  1. In the NeoLoad menu, click "Record > Start recording".

  2. Un-check the "Launch browser" option.

  3. Manually launch the Internet browser, then manually set the proxy to the NeoLoad proxy (default: localhost:8090). See the the section called “Manually configuring the recording proxy settings” for more details.

  4. Record the Oracle Forms scenario.

  5. Log out of the Oracle Forms application.

  6. Restore the original proxy settings in the browser, then close the browser.

  7. In the NeoLoad menu, click "Record > Stop recording".

Runtime

1. When I validate a virtual user, it stops on an NL-PLUGIN-ENGINE-03 error.
2. I have recorded a simple Oracle Forms scenario. I've not modified the recording and have played it back "as is", using virtual user validation. The "Automatically delete invalid components during recording" option is disabled. The virtual user fails to execute and an NL-OF-PLUGIN-ENGINE-03 error is returned.
3. I've recorded a simple Oracle Forms scenario and created a virtual user that loops a number of Oracle Forms requests over n iterations. The virtual user fails to execute and returns an NL-OF-PLUGIN-ENGINE-03 error. I noticed that the virtual user stopped on this error during the 2nd iteration of the loop. The "Automatically remove invalid components during recording" option is enabled.
4. When I validate a virtual user, it stops on an NL-OF-PLUGIN-ENGINE-01 error. The details reveal an ifError error.
5. The troubleshooting guide has been helpful, but I still need to know more about the way NeoLoad works during recording and runtime.
6. When a virtual user executes, I get the following error:
7. After an Oracle Forms load test, several frmweb.exe processes remain on the server.
1.

When I validate a virtual user, it stops on an NL-PLUGIN-ENGINE-03 error.

Oracle Forms requests that have not been decoded correctly cannot be played back; nor can they be repaired. See the other questions and answers in this section of the documentation and try to identify the problem you are experiencing.

[Note]Note

Once a problem has been solved, we recommend you delete the previous recordings that did not play back correctly.

2.

I have recorded a simple Oracle Forms scenario. I've not modified the recording and have played it back "as is", using virtual user validation. The "Automatically delete invalid components during recording" option is disabled. The virtual user fails to execute and an NL-OF-PLUGIN-ENGINE-03 error is returned.

The Oracle Forms applet can sometimes send requests that contain components that are invalid at the time of recording. The problem can be solved in two ways.

  1. Manually delete the request DataMessages that reference invalid components.

  2. Enable the "Automatically delete remove invalid components" option for the Oracle Forms project and make a new recording.

Procedure 11.4. Manually deleting invalid components

  1. Carry out a validation on the virtual user containing the error in question.

  2. Select the request that includes the error. In the "Details" pane, click on the Response button.

  3. Note the handlerId's that are shown between square brackets [ ] and labeled as unknown.

  4. Click on the blue "Request" link to automatically open the request ion the library.

  5. In the XML content, delete the DataMessages whose handlerId's are reported as being unknown.

  6. Re-run the virtual user validation. Repeat steps 1 to 5 for each request showing the same error.

Procedure 11.5. Automatically deleting invalid components

  1. Go to Edit > Preferences > Project settings > Oracle Forms.

  2. Check the Automatically remove invalid components check box, then click OK.

  3. Repeat the recording of the Oracle Forms application.

  4. Run a virtual user validation and make sure there are no more NL-OF-PLUGIN-ENGINE-03 errors.

[Note]Note

The changes are not retroactive, so the previous recordings are not affected. Consequently, if you wish to replay the previous recordings, they will need to be cleaned up by carrying out the procedure for manually deleting invalid components.

3.

I've recorded a simple Oracle Forms scenario and created a virtual user that loops a number of Oracle Forms requests over n iterations. The virtual user fails to execute and returns an NL-OF-PLUGIN-ENGINE-03 error. I noticed that the virtual user stopped on this error during the 2nd iteration of the loop. The "Automatically remove invalid components during recording" option is enabled.

The problem is in the virtual user design. This indicates that the virtual user was not in the same graphical state in the Oracle Forms applet in the 2nd iteration as it was in the 1st. At the start of each iteration of the loop, the virtual user must be in the same graphical state, to the nearest click.

The graphical state of an Oracle Forms applet is defined as a set of graphical components existing at any one time. This example shows a component created in a server response:

<DataMessage>
  <actionCode>CREATE</actionCode>
  <handlerId>8</handlerId>
  <handlerClassId>259</handlerClassId>
  <properties>
    <Property>
      <id>DRAWN_CANVASUSAGE</id>
      <type>BYTE</type>
      <value objectClass="byte">3</value>
    </Property>
  </properties>
</DataMessage>
This creates a component with the handlerId 8. The handlerId 8 can now be used in DataMessage in all subsequent requests. When the following message is encountered in a server response

<DataMessage>
  <actionCode>DESTROY</actionCode>
  <handlerId>8</handlerId>
  <properties/>
</DataMessage>

The component with the handlerId 8 is destroyed. Requests sent after this response can no longer contain DataMessages that reference the component with the handlerId 8.
[Note]Note

It is possible for a handlerId value to be re-used by a completely different type of graphical component later in the recording. These numerical identifiers are uniquely assigned by the server to concurrently occurring components, but may be used by several different components whose life cycles are disjoint.

4.

When I validate a virtual user, it stops on an NL-OF-PLUGIN-ENGINE-01 error. The details reveal an ifError error.

There are several types of ifError, of which the most common are:

  • ifError:3

    The server indicates that the client does not handle cookies. Enable cookie handling for that virtual user.

  • ifError:4

    The server could not create the Oracle Forms process. There is a problem server-side.

  • ifError:5

    The server could not start the Oracle Forms process. There is a problem server-side.

  • ifError:6

    The server process used to manage the current Oracle Forms session no longer exists. This can happen when the server is subjected to a heavy load or if there is a design flaw in the virtual user being played back. In the latter case, please read through the section entitled Best Practices.

  • ifError:7

    The server process is currently busy. Re-try the request later. This error indicates that NeoLoad tried sending the request 5 times but did not receive a valid response from the server.

  • ifError:11/xxx

    The server is busy, re-try the request in xxx milliseconds. This type of error is handled automatically by NeoLoad and should not appear during the test.

5.

The troubleshooting guide has been helpful, but I still need to know more about the way NeoLoad works during recording and runtime.

The Oracle Forms module may be used in DEBUG mode, which writes even more data to the log files. It can be turned on for debugging a specific use case, but never in a real test runtime.

During recording, data is written to log files named plugins.log.xxxxx.

During runtime, data is written to log files named loadgenerator.log.xxxxx.

You may quickly access the NeoLoad directory containing the log files by clicking on Help > Open logs folder.

Procedure 11.6. Using the Oracle Forms module in DEBUG mode

  1. Close NeoLoad.

  2. Open the <neoload>/conf directory, then open the files logs.xconfig and lglogs.xconfig.

  3. Replace the following line

    <category name="neoload.plugins" log-level="ERROR">

    with this line

    <category name="neoload.plugins" log-level="DEBUG">
  4. Re-start NeoLoad. The module is in DEBUG mode for both recording and runtime.

6.

When a virtual user executes, I get the following error:

Message: An error occurred while reading the encrypted Oracle Forms response.

Details: Oracle Forms request max retry count reached (5)

When the server responds with ifError:7/500, NeoLoad reproduces the Oracle Forms applet's behavior: by default, it makes a maximum of 5 attempts to send the request to the server and receive a valid response, with a 1000 milliseconds interval between attempts. NeoLoad's behavior may be modified by editing the controller.properties configuration file.

Procedure 11.7. Re-configuring Oracle Forms settings in NeoLoad

  1. Close NeoLoad.

  2. Open the <neoload>/conf/controller.properties file.

  3. If the [OracleForms] settings category does not exist, create it.

  4. Underneath the category, create the oracle.forms.session.migration.max.retry key. Here's an example:

    oracle.forms.session.migration.max.retry=5

    This key sets the maximum number of attempts before returning an error at 5. By default, NeoLoad makes a maximum of 5 attempts. The key's value must be an integer more than or equal to 1.

  5. Create the oracle.forms.session.migration.retry.delay key. Here's an example:

    oracle.forms.session.migration.retry.delay=1000

    This key sets the interval between attempts, in milliseconds. By default, NeoLoad applies an interval of 1000 milliseconds. The value must be an integer more than or equal to 1000.

  6. Save the configuration file.

  7. Re-start NeoLoad.

7.

After an Oracle Forms load test, several frmweb.exe processes remain on the server.

Check the following:

  1. Make sure each virtual user quits the Oracle Forms application correctly. If this is the case, the last Oracle Forms request will be named something like session_close and its HTTP header should contain ifSession: close.

  2. Make sure the stop policy for each population is set to "Indeterminate: allow all virtual users to end their actions".