Difference between revisions of "User:Log Linden/Socks5Viewer/TestPlan"

From Second Life Wiki
Jump to navigation Jump to search
(Added more test steps skeleton.)
 
(14 intermediate revisions by the same user not shown)
Line 1: Line 1:
[[Category:Test Scripts]]
[[Category:Test Scripts]]
{| cellspacing="0" cellpadding="0" style="clear: {{{clear|right}}}; margin-bottom: .5em; float: right; padding: .5em 0 .8em 1.4em; background: none; width: {{{width|{{{1|auto}}}}}};" {{#if:{{{limit|}}}|class="toclimit-{{{limit}}}"}}
{| cellspacing="0" cellpadding="0" style="clear: {{{clear|right}}}; margin-bottom: .5em; float: right; padding: .5em 0 .8em 1.4em; background: none; width: {{{width|{{{1|auto}}}}}};" {{*if:{{{limit|}}}|class="toclimit-{{{limit}}}"}}
| __TOC__
| __TOC__
|}
|}
== Scope ==
= Scope =
* This test is to verify that newly added proxy support in the viewer works as expected.
* This test is to verify that newly added proxy support in the viewer works as expected.
* The user story that prompted the changes is [https://jira.secondlife.com/browse/STORM-1112 STORM-1112 ].
* The user story that prompted the changes is [https://jira.secondlife.com/browse/STORM-1112 STORM-1112 ].
* This test will only be meaningful if performed in a network environment that does not have access to second life.
* This test will only be meaningful if performed in a network environment that does not have access to second life.
* The test also requires a working web proxy host and SOCKS 5 proxy host.  
* The test also requires a working web proxy host and SOCKS 5 proxy host.  
* Estimated running time: 2 hours/platform after securing the appropriate test environment
* Estimated running time: 3 hours/platform after securing the appropriate test environment.


== Set-up ==
= Set-up =
=== Environment ===  
== Environment ==
* Viewer: This test requires a build of the viewer that contains the Proxy code. Grab the latest for your platform from the link below:
* Viewer: This test requires a build of the viewer that contains the LLProxy code. Grab the latest for your platform from the link below:
{{ViewerInstallers|{{JiraIssue|STORM-1112|Implement SOCKS 5 proxy}}| Allow the Second Life Viewer to connect through a SOCKS 5 proxy. |task=log_viewer-socks5|repo=https://bitbucket.org/log_linden/viewer_socks5}}
{{ViewerInstallers|{{JiraIssue|STORM-1112|Implement SOCKS 5 proxy}}| Allow the Second Life Viewer to connect through a SOCKS 5 proxy. |task=log_viewer-socks5|repo=https://bitbucket.org/log_linden/viewer_socks5}}
* Server: The test requires testing of mesh upload and download functionality, so access to a region with mesh support is required.  Agni or Aditi are each fine. Region crossing will also be tested, so adjacent regions to test in will also be required.
* Server: The test requires testing of mesh upload and download functionality, so access to a region with mesh support is required.  Agni or Aditi are each fine. Region crossing will also be tested, so adjacent regions to test in will also be required.
Line 20: Line 20:
* While 3rd party testers are welcome to set up a duplicate of our reference gateway server, we are also interested in results you might get in your organization's specific network setup, rather than using our reference setup. Since you might not be allowed to reconfigure your organization's firewall or proxy host, feel free to only test in the proxy configuration your organization supports and report on results you observe.
* While 3rd party testers are welcome to set up a duplicate of our reference gateway server, we are also interested in results you might get in your organization's specific network setup, rather than using our reference setup. Since you might not be allowed to reconfigure your organization's firewall or proxy host, feel free to only test in the proxy configuration your organization supports and report on results you observe.


=== Other ===  
== Other ==
* Second Life Account that is able to upload mesh assets on the grid being tested.
* You need a Second Life account that is able to upload mesh assets on the grid being tested. This will require you to have payment information on file and to pass a brief test on intellectual property rights. A tutorial to help you get set up is available in the [http://community.secondlife.com/t5/English-Knowledge-Base/Uploading-a-mesh-model/ta-p/974185 Second Life Knowledge Base].
* At least one notecard, sound, and animation in your avatar's inventory.
* Your avatar should be a member of a group and be allowed to send messages in that group for testing.
* Your avatar should be a member of a group and be allowed to send messages in that group.
* Part of the test is making sure land parcel media is functional. Find somewhere in world that has both web parcel media and video parcel media.
* Sandbox, or other area where building is allowed.
* Sandbox, or other area where building is allowed.
* Have a test image file, sound file, and collada model available to test upload functionality. A sample collada model is available from the [https://collada.org/owl/download.php?sess=0&parent=126&expand=1&order=name&curview=0&binary=1&id=698/ collada.org website].
* To test the gpu table and feature table download functionality of the viewer, a packet capture tool on the proxy host such as wireshark or tcp_dump is necessary to verify that the request tool is making use of the proxy. This might not be possible if you do not have access to your organization's proxy host.


== Common Procedures ==
= Common Procedures =
Refer to this section when asked to do one of the following in a test step.
Refer to this section when asked to do one of the following in a test step.
# '''Enable proxy connection with HTTP traffic sent through web proxy.'''
* '''Enable proxy connection with HTTP traffic sent through web proxy.'''
## Change these settings before logging into Second Life.
** Change these settings before logging into Second Life.
## Open the Proxy settings floater. Me->Preferences->Setup->"Adjust Proxy Settings"
** Open the Proxy settings floater. Me->Preferences->Setup->"Adjust Proxy Settings"
## Check "Use HTTP Proxy for Web pages" and enter the address and port number.
** Check "Use HTTP Proxy for Web pages" and enter the address and port number.
## Check "Use SOCKS 5 Proxy for UDP traffic" and enter the address and port number.
** Check "Use SOCKS 5 Proxy for UDP traffic" and enter the address and port number.
## Under other HTTP traffic proxy, select "Use HTTP Proxy".
** Under other HTTP traffic proxy, select "Use HTTP Proxy".
## Click OK.
** Click OK.


# '''Enable proxy connection with HTTP traffic sent through SOCKS 5 proxy.'''
* '''Enable proxy connection with HTTP traffic sent through SOCKS 5 proxy.'''
## Change these settings before logging into Second Life.
** Change these settings before logging into Second Life.
## Open the Proxy settings floater. Me->Preferences->Setup->"Adjust Proxy Settings"
** Open the Proxy settings floater. Me->Preferences->Setup->"Adjust Proxy Settings"
## Check "Use HTTP Proxy for Web pages" and enter the address and port number.
** Check "Use HTTP Proxy for Web pages" and enter the address and port number.
## Check "Use SOCKS 5 Proxy for UDP traffic" and enter the address and port number.
** Check "Use SOCKS 5 Proxy for UDP traffic" and enter the address and port number.
## Under other HTTP traffic proxy, select "Use SOCKS 5 Proxy".
** Under other HTTP traffic proxy, select "Use SOCKS 5 Proxy".
## Click OK.
** Click OK.


# '''Disable all proxies'''
* '''Disable all proxies'''
## Change these settings before logging into Second Life.
** Change these settings before logging into Second Life.
## Open the Proxy settings floater. Me->Preferences->Setup->"Adjust Proxy Settings"
** Open the Proxy settings floater. Me->Preferences->Setup->"Adjust Proxy Settings"
## Uncheck "Use HTTP Proxy for Web pages".
** Uncheck "Use HTTP Proxy for Web pages".
## Uncheck "Use SOCKS 5 Proxy for UDP traffic".
** Uncheck "Use SOCKS 5 Proxy for UDP traffic".
## Click OK.
** Click OK.


# '''Clear Viewer Caches'''
* '''Clear Viewer Caches'''
## Click the "Clear Cache" button on the advanced tab of the preferences floater.
** Click the "Clear Cache" button on the advanced tab of the preferences floater.
## Confirm that you want to clear the cache.
** Confirm that you want to clear the cache.
## Restart the Viewer.
** Restart the Viewer.


== Test Steps ==
= Test Steps =
=== Configuration Consistency Checks ===
== Configuration Consistency Checks ==
# '''Expected Defaults''' Check the default configuration.
* '''Expected Defaults''' Check the default configuration.
## step 1
** Install a version of the viewer that supports LLProxy communication.
## step 2
** Start the viewer that was installed, but do not log in. If you are in Basic mode, change to Advanced and restart.
## '''Verify''' against expected behavior
** Navigate to the proxy control floater (Me->Preferences->Setup->Adjust proxy Settings.)
** Inspect the settings.
** '''Verify''' that both proxies are disabled.
** Leave this floater open for the next test.
* '''Reset "Other HTTP traffic proxy" radio button when configuration is not possible.'''
** Enable HTTP Proxy.
** Select HTTP proxy as the "other HTTP traffic proxy".
** Disable HTTP Proxy.
** '''Verify''' that "Do not proxy." is now selected as the Other HTTP traffic Proxy.
** Enable SOCKS 5 Proxy.
** Select SOCKS 5 proxy as the "other HTTP traffic proxy".
** Disable SOCKS 5 Proxy.
** '''Verify''' that "Do not proxy." is now selected as the Other HTTP traffic Proxy.
* '''Invalid HTTP Proxy Configuration Error-Handling''' Test a configuration that asks for HTTP via SOCKS 5 when SOCKS 5 is disabled.
** Enable both proxies, enter valid information for both proxies.
** Change the "Other HTTP traffic proxy" option to "Use SOCKS 5 proxy".
** Quit the viewer.
** Edit the settings.xml file that corresponds to the channel of the viewer you are using to test with (e.g. settings_developer.xml, settings.xml, settings_beta.xml, etc.).
** Change the value of Socks5ProxyEnabled to "0".
** Restart the viewer.
** '''Verify''' that the viewer doesn't crash
** Open the proxy preferences floater.
** '''Verify''' that the "Other HTTP traffic" proxy option is now set to "Do not proxy".
** Enable the SOCKS 5 proxy, and authentication. Make other http traffic use SOCKS 5.
** Click OK and quit the viewer.
** '''Verify''' that Secondlife.log contains the following warning:
2011-08-23T01:33:25Z WARNING: LLStartUp::startLLProxy: Invalid other HTTP proxy configuration.
* '''Invalid Authentication Configuration Error-Handling.''' Test that an unexpected authentication method will not crash the viewer.
** Before starting the viewer, change the value of Socks5AuthType to "FakeAuth", a fake value.
** Start the viewer, but do not log in.
** '''Verify''' that the viewer doesn't crash.
** '''Verify''' that in the settings proxy floater, that authentication is disabled.
** Close the viewer.
** '''Verify''' that Secondlife.log contains the following warning:
2011-08-23T01:30:38Z WARNING: LLStartUp::startLLProxy: Invalid SOCKS 5 authentication type.


=== Proxy Enabled, other HTTP through Web Proxy ===
== Proxy Enabled, other HTTP through Web Proxy ==
Before starting this section, follow the instructions above to enabled the proxy and send HTTP traffic through the web proxy.
* Follow the instructions above to enable the proxy and send HTTP traffic through the web proxy.
* This should be run with the firewall fully enabled to ensure the only traffic is being sent through the proxy.
* '''Verify''' that you are able to successfully log into Second Life.


==== Viewer Intialization ====
=== Viewer Initialization ===
# '''HTTP Tables Loading'''  
* '''HTTP Tables Loading''' Verify that the viewer is able to fetch the GPU table and feature table via the proxy.
# '''Login Screen Renders Correctly
** The proxy should be enabled before starting this test.
==== Avatar Navigation and Movement ====
** Close the viewer.
# '''Walking'''
** Start a packet capture on the proxy host that captures on all interfaces. Note: Even if you are unable to use packet filtering software, complete the test and verify that the error strings below are not in the log file.
# '''Sitting'''
** Start the viewer but do not log in.
# '''Flying'''
** Inspect the capture for an HTTP request for an HTTP GET for a file of the form gpu_table.X.Y.Z.txt and for featuretable.X.Y.Z.txt. 
# '''Map'''
** '''Verify''' that there was a request originating from the test machine for each of these files, and a subsequent request from the proxy host for the same files.  It is normal for each of these requests to receive a 404 response.
# '''Minimap'''
** Close the viewer.
# '''Region Crossing'''
** Inspect the Secondlife.log file.
# '''Intra-region teleport'''
** '''Verify''' that there are no logs matching the following in Secondlife.log.
# '''Inter-region teleport'''
2011-08-18T21:42:07Z WARNING: LLURLRequest::process_impl: URLRequest Error: 56, Failure when receiving data from the peer, http://viewer-settings.secondlife.com/featuretable_xp.3.0.1.238013.txt
==== Avatar Communication ====
2011-08-18T21:42:07Z INFO: LLPumpIO::processChain: Pump generated pipe err: 'STATUS_ERROR'
# '''Local Chat'''
2011-08-18T21:42:07Z WARNING: LLURLRequest::process_impl: URLRequest Error: 56, Failure when receiving data from the peer, http://viewer-settings.secondlife.com/gpu_table.3.0.1.238013.txt
# '''Group Chat'''
2011-08-18T21:42:07Z INFO: LLPumpIO::processChain: Pump generated pipe err: 'STATUS_ERROR'
# '''IM'''
* '''Login Screen Renders Correctly''' The logon screen should be able to load content from the web using the configured proxy.
==== Asset Download Tests ====
** Start the viewer, but do not log in.
**'''Verify''' that the contents of the login screen are displayed.


# '''Texture'''
=== Avatar Navigation and Movement ===
# '''Sounds'''
* '''Walking'''
# '''Notecard'''
** '''Verify''' that your avatar can move around the world.
# '''Animation'''
* '''Sitting'''
# '''Mesh'''
** '''Verify''' that your avatar can sit on objects.
* '''Flying'''
** '''Verify''' that you can fly around the region.
* '''World Map'''
** Open the World Map Floater (World->World Map).
** '''Verify''' that map tiles load and display the layout of the surrounding regions.
** '''Verify''' that green dots representing avatars are displayed.
** Close the World Map.
* '''Minimap'''
** Open the Mini-Map Floater (World->Mini-Map).
** '''Verify''' that map tiles are displayed.
* '''Region Crossing'''
** Fly or walk across a region boundary.
** '''Verify''' that you successfully arrive in the other region.
* '''Intra-region teleport'''
** Teleport by double clicking in the World Map floater, within the current region.
** '''Verify''' that you arrive in the place you clicked.
* '''Inter-region teleport'''
** Teleport by double clicking in the World Map floater, somewhere other than the current region.
** '''Verify''' that you arrive in the new region.


# '''Legacy Fetch Methods'''
=== Avatar Communication ===
## Disable HTTP Inventory and HTTP Textures
* '''Local Chat'''
** Try sending messages to others avatars standing nearby. 
** '''Verify''' that the other people receive your messages
** '''Verify''' that you can receive messages from other people.
* '''Group Chat'''
** Try sending messages to a group chat channel.
** '''Verify''' that you can send messages
** '''Verify''' that you are receiving group chat messages.
* '''IM'''
** Try sending private IM messages to another avatar.
** '''Verify''' that the other avatar receives your messages
** '''Verify''' that you are able to receive their response.
* '''Display Names'''
** '''Verify''' that custom display names are visible for avatars that have them set.
** '''Verify''' that the display names of avatars are visible in your friends list.
 
=== Asset Download Tests ===
* Before starting this test, clear your viewer cache and relog.
* '''Texture'''
** '''Verify''' that textures load onto surfaces in your view.
* '''Sounds'''
** Locate the Button_click_down asset in your inventory.  Double click the sound to play it.
** '''Verify''' that the sound plays.
* '''Notecard'''
** Locate the Community Standards notecard in the Library of your inventory.
** '''Verify''' that the notecard loads and is readable.
* '''Gestures'''
** Select a gesture from the "Gesture" menu at the bottom of the window.
** '''Verify''' that the gesture plays.
* '''Mesh'''
** Travel to a region with mesh assets available.
** '''Verify''' that the mesh assets rez and are visible.
* '''Legacy Fetch Methods'''
** Enable the Develop menu if you haven't already. (Me->Preferences->Advanced->Show Developer Menu)
** Disable HTTP Inventory and HTTP Textures in the Develop menu.
** Clear the viewer cache.
** Log back into Second Life.
** '''Verify''' that textures load onto surfaces in your view.
** '''Verify''' that your inventory loads.
** Re-enable HTTP Textures and HTTP inventory.
** Log out and back in for the next test.
 
=== Asset Creation Tests ===
* Move to a region where you have permission to build.
 
* '''Sound'''
** Upload a test sound using the upload tool (Build->Upload->Sound)
** When the upload is complete, double click the sound in your inventory to play it back.
** '''Verify''' that the sound plays.
* '''Notecard'''
** In the inventory sidebar, click the "plus sign" (+) button at the bottom of the list of assets.
** In the menu that appears, select "New Notecard".
** Add some text in the body of the notecard and click save.
** Close the notecard
** Reopen the notecard from your inventory.
** '''Verify''' that the notecard text loads.
* '''Mesh'''
** Move to a mesh-enabled region.
** Select Build->Upload->Model to start the mesh upload process.
** In the file selection dialog, select the mesh object you prepared while setting up.  The example file is named duck.dae.
** Select "Calculate weights & fee" at the bottom of the Upload Model dialog.
** After the upload fee has been calculated, select the "Upload" button.
** '''Verify''' that the mesh object is added to your inventory.
** Drag the mesh object out of your inventory onto the ground to rez it.
** '''Verify''' that the mesh object is rezzed.
* '''Object Creation'''
** Create a simple object using the build tools.
** '''Verify''' that the object is created
** '''Verify''' that you can take a copy of the created object into your inventory.
** Drop the object back into the world for the next test.
* '''Texture'''
** Upload a test image using the upload tool (Build->Upload->Image).
** When the upload is complete, apply that texture to the object you created.
** '''Verify''' that the image uploaded successfully.
* '''Scripting'''
** Right click the object you created in the previous test and select edit.
** Select the content tab of the build floater.
** Click the New Script button.
** Double click the new script to edit.
** Edit the string "Hello, Avatar!" to be "Hi, Avatar!"
** Click save
** '''Verify''' that the script compiles.
** '''Verify''' that the object has sent the message "Hi, Avatar!".


==== Asset Upload Tests ====
# '''Texture'''
# '''Sound'''
# '''Mesh'''
# '''Object Creation'''
# '''Scripting'''
=== Integrated Web Browser ===
=== Integrated Web Browser ===
* '''Browsing Test''' The integrated webkit browser should be able to browse while accessing the internet through a proxy.
** Enable the built-in browser. (Me->Preferences->Setup->"Use built-in browser", under "Web:").
** Enter a full url, like http://secondlife.com into text chat and send.
** Click the link in the text chat window.
** '''Verify''' that the built-in browser is able to access web content.


==== Media Textures ====
=== Media on a Prim ===
* '''Web Media'''
** '''Verify''' that web media is visible.
* '''Video Media'''
** '''Verify''' that video media is visible.


== Proxy Enabled, other HTTP through SOCKS 5 Proxy ==
== Proxy Enabled, other HTTP through SOCKS 5 Proxy ==
* '''Repeat Connectivity Tests''' Verify that sending other HTTP traffic through the SOCKS 5 proxy works correctly.
** Configure the viewer as described in the '''Enable proxy connection with HTTP traffic sent through SOCKS 5 proxy.''' section above.
** '''Verify'' that you are able to successfully log into Second Life.
** Rerun the following list of test cases, which are described in the section above.
*** Viewer Initialization
*** Avatar Navigation and Movement
*** Avatar Communication
*** Asset Download Tests
*** Asset Upload Tests
*** Integrated Web Browser
*** Media On a Prim
** '''Verify''' that all tests pass.


== No Proxy Enabled ==
== No Proxy Enabled ==
* '''Repeat Connectivity Tests''' Verify that users that are not using the proxy will not be negatively impacted by the change.
** Either test on another computer that is not firewalled, or relax the firewall restrictions on the testing network. If using the reference gateway configuration, run the ''nat_forward_all.sh'' script to allow traffic through without going through a proxy.
** Disable the proxy as described above.
** Rerun the following list of test cases, which are described in the section above.
*** Viewer Initialization
*** Avatar Navigation and Movement
*** Avatar Communication
*** Asset Download Tests
*** Asset Upload Tests
*** Integrated Web Browser
*** Media On a Prim
** '''Verify''' that all tests pass.
** '''Verify''' that overall viewer performance is approximately the same as usual for the machine you are testing on.
** Re-enable the firewall if you disabled it before further testing.


== SOCKS Authentication Test ==
== SOCKS 5 with Username/Password Authentication ==
* '''Successful Login with SOCKS Authentication''' Test that the viewer can connect when the SOCKS 5 host requires a password.
** Enable both proxies, with "other" traffic going through SOCKS 5. 
** Also in the proxy settings floater, select Username/Password as the SOCKS Authentication method.
** Enter your SOCKS 5 username and password in the appropriate fields.  If you followed the reference gateway instructions, your linux username and password should work for the socks credentials.
** Select OK.
** Try to log in to Second Life.
** '''Verify''' that login is successful.
** Leave authentication enabled for the next test.
** Optional: The previous set of connectivity tests could be run in this mode as well to verify that the Username/Password authentication method works as well. This is a lower priority than the other three modes because this configuration is behaviorally very similar to the no authentication test, and should either connect or not connect.
* '''SOCKS 5 Password Security''' The SOCKS 5 password should not be stored in cleartext.
** Leave SOCKS 5 authentication enabled in the viewer from the previous test.
** Close all running instances of the viewer.
** Navigate to the user's Second Life settings directory. 
** Search, using grep or ctrl-f in notepad depending on the platform, for the username and password you used to connect to the SOCKS 5 server in the previous step in the settings.xml that corresponds to the viewer version you are testing with (settings.xml if using a release version, settings_development.xml if using a development build, etc).
** '''Verify''' that the username and password do not appear in the settings files.
** Start the viewer and disable authentication.


----
----
Line 114: Line 299:
(Optional) - as new failures are observed, new test cases can be added here to supplement the functional tests in the section above.
(Optional) - as new failures are observed, new test cases can be added here to supplement the functional tests in the section above.


# '''Test for bug VWR-xxxx'''
* '''Test for bug VWR-xxxx'''
## step 1
** step 1
## step 2
** step 2
## '''Verify''' against expected behavior
** '''Verify''' against expected behavior


----
----
-->
-->


== Pass/Fail Criteria ==
= Pass/Fail Criteria =
# Passes if
* '''Passes''' if
## No unexpected behaviors are observed
** No unexpected behaviors are observed
# Fails if
* '''Fails''' if
## Deviation from expected behavior is observed
** Deviation from expected behavior is observed
## A bug is detected that was not accounted for by this test plan
** A bug is detected that was not accounted for by this test plan
## Performance degradation is observed when the proxy is disabled.
** Performance degradation is observed when the proxy is disabled.
# Known Issues
* '''Known Issues'''
## SLVoice does not support proxies, therefore voice is not expected to work when running the viewer behind a strict firewall.
** SLVoice does not support proxies, therefore voice is not expected to work when running the viewer behind a strict firewall that blocks the ports used for voice communication. If voice is enabled, an error message will appear when the viewer fails to connect to the voice server.


== Tear Down ==
= Tear Down =
* Disable all proxies in the viewer configuration.
* Disable all proxies in the viewer configuration.
* Disable the built-in browser.

Latest revision as of 13:13, 26 August 2011

Scope

  • This test is to verify that newly added proxy support in the viewer works as expected.
  • The user story that prompted the changes is STORM-1112 .
  • This test will only be meaningful if performed in a network environment that does not have access to second life.
  • The test also requires a working web proxy host and SOCKS 5 proxy host.
  • Estimated running time: 3 hours/platform after securing the appropriate test environment.

Set-up

Environment

  • Viewer: This test requires a build of the viewer that contains the LLProxy code. Grab the latest for your platform from the link below:
STORM-1112 Implement SOCKS 5 proxy
Allow the Second Life Viewer to connect through a SOCKS 5 proxy.
Windows | Macintosh | Linux

Source: https://bitbucket.org/log_linden/viewer_socks5
Details for these builds (build logs, included changesets)



  • Server: The test requires testing of mesh upload and download functionality, so access to a region with mesh support is required. Agni or Aditi are each fine. Region crossing will also be tested, so adjacent regions to test in will also be required.
  • A restrictive, firewalled network to connect the testing machine to is required to obtain valid test results.
  • A working web proxy host and a working SOCKS 5 host are required to complete the test.
  • Instructions to set up a reference Ubuntu Linux server that will act as a firewall and proxy gateway are available.
  • While 3rd party testers are welcome to set up a duplicate of our reference gateway server, we are also interested in results you might get in your organization's specific network setup, rather than using our reference setup. Since you might not be allowed to reconfigure your organization's firewall or proxy host, feel free to only test in the proxy configuration your organization supports and report on results you observe.

Other

  • You need a Second Life account that is able to upload mesh assets on the grid being tested. This will require you to have payment information on file and to pass a brief test on intellectual property rights. A tutorial to help you get set up is available in the Second Life Knowledge Base.
  • Your avatar should be a member of a group and be allowed to send messages in that group for testing.
  • Part of the test is making sure land parcel media is functional. Find somewhere in world that has both web parcel media and video parcel media.
  • Sandbox, or other area where building is allowed.
  • Have a test image file, sound file, and collada model available to test upload functionality. A sample collada model is available from the collada.org website.
  • To test the gpu table and feature table download functionality of the viewer, a packet capture tool on the proxy host such as wireshark or tcp_dump is necessary to verify that the request tool is making use of the proxy. This might not be possible if you do not have access to your organization's proxy host.

Common Procedures

Refer to this section when asked to do one of the following in a test step.

  • Enable proxy connection with HTTP traffic sent through web proxy.
    • Change these settings before logging into Second Life.
    • Open the Proxy settings floater. Me->Preferences->Setup->"Adjust Proxy Settings"
    • Check "Use HTTP Proxy for Web pages" and enter the address and port number.
    • Check "Use SOCKS 5 Proxy for UDP traffic" and enter the address and port number.
    • Under other HTTP traffic proxy, select "Use HTTP Proxy".
    • Click OK.
  • Enable proxy connection with HTTP traffic sent through SOCKS 5 proxy.
    • Change these settings before logging into Second Life.
    • Open the Proxy settings floater. Me->Preferences->Setup->"Adjust Proxy Settings"
    • Check "Use HTTP Proxy for Web pages" and enter the address and port number.
    • Check "Use SOCKS 5 Proxy for UDP traffic" and enter the address and port number.
    • Under other HTTP traffic proxy, select "Use SOCKS 5 Proxy".
    • Click OK.
  • Disable all proxies
    • Change these settings before logging into Second Life.
    • Open the Proxy settings floater. Me->Preferences->Setup->"Adjust Proxy Settings"
    • Uncheck "Use HTTP Proxy for Web pages".
    • Uncheck "Use SOCKS 5 Proxy for UDP traffic".
    • Click OK.
  • Clear Viewer Caches
    • Click the "Clear Cache" button on the advanced tab of the preferences floater.
    • Confirm that you want to clear the cache.
    • Restart the Viewer.

Test Steps

Configuration Consistency Checks

  • Expected Defaults Check the default configuration.
    • Install a version of the viewer that supports LLProxy communication.
    • Start the viewer that was installed, but do not log in. If you are in Basic mode, change to Advanced and restart.
    • Navigate to the proxy control floater (Me->Preferences->Setup->Adjust proxy Settings.)
    • Inspect the settings.
    • Verify that both proxies are disabled.
    • Leave this floater open for the next test.
  • Reset "Other HTTP traffic proxy" radio button when configuration is not possible.
    • Enable HTTP Proxy.
    • Select HTTP proxy as the "other HTTP traffic proxy".
    • Disable HTTP Proxy.
    • Verify that "Do not proxy." is now selected as the Other HTTP traffic Proxy.
    • Enable SOCKS 5 Proxy.
    • Select SOCKS 5 proxy as the "other HTTP traffic proxy".
    • Disable SOCKS 5 Proxy.
    • Verify that "Do not proxy." is now selected as the Other HTTP traffic Proxy.
  • Invalid HTTP Proxy Configuration Error-Handling Test a configuration that asks for HTTP via SOCKS 5 when SOCKS 5 is disabled.
    • Enable both proxies, enter valid information for both proxies.
    • Change the "Other HTTP traffic proxy" option to "Use SOCKS 5 proxy".
    • Quit the viewer.
    • Edit the settings.xml file that corresponds to the channel of the viewer you are using to test with (e.g. settings_developer.xml, settings.xml, settings_beta.xml, etc.).
    • Change the value of Socks5ProxyEnabled to "0".
    • Restart the viewer.
    • Verify that the viewer doesn't crash
    • Open the proxy preferences floater.
    • Verify that the "Other HTTP traffic" proxy option is now set to "Do not proxy".
    • Enable the SOCKS 5 proxy, and authentication. Make other http traffic use SOCKS 5.
    • Click OK and quit the viewer.
    • Verify that Secondlife.log contains the following warning:
2011-08-23T01:33:25Z WARNING: LLStartUp::startLLProxy: Invalid other HTTP proxy configuration.
  • Invalid Authentication Configuration Error-Handling. Test that an unexpected authentication method will not crash the viewer.
    • Before starting the viewer, change the value of Socks5AuthType to "FakeAuth", a fake value.
    • Start the viewer, but do not log in.
    • Verify that the viewer doesn't crash.
    • Verify that in the settings proxy floater, that authentication is disabled.
    • Close the viewer.
    • Verify that Secondlife.log contains the following warning:
2011-08-23T01:30:38Z WARNING: LLStartUp::startLLProxy: Invalid SOCKS 5 authentication type.

Proxy Enabled, other HTTP through Web Proxy

  • Follow the instructions above to enable the proxy and send HTTP traffic through the web proxy.
  • This should be run with the firewall fully enabled to ensure the only traffic is being sent through the proxy.
  • Verify that you are able to successfully log into Second Life.

Viewer Initialization

  • HTTP Tables Loading Verify that the viewer is able to fetch the GPU table and feature table via the proxy.
    • The proxy should be enabled before starting this test.
    • Close the viewer.
    • Start a packet capture on the proxy host that captures on all interfaces. Note: Even if you are unable to use packet filtering software, complete the test and verify that the error strings below are not in the log file.
    • Start the viewer but do not log in.
    • Inspect the capture for an HTTP request for an HTTP GET for a file of the form gpu_table.X.Y.Z.txt and for featuretable.X.Y.Z.txt.
    • Verify that there was a request originating from the test machine for each of these files, and a subsequent request from the proxy host for the same files. It is normal for each of these requests to receive a 404 response.
    • Close the viewer.
    • Inspect the Secondlife.log file.
    • Verify that there are no logs matching the following in Secondlife.log.
2011-08-18T21:42:07Z WARNING: LLURLRequest::process_impl: URLRequest Error: 56, Failure when receiving data from the peer, http://viewer-settings.secondlife.com/featuretable_xp.3.0.1.238013.txt
2011-08-18T21:42:07Z INFO: LLPumpIO::processChain: Pump generated pipe err: 'STATUS_ERROR'
2011-08-18T21:42:07Z WARNING: LLURLRequest::process_impl: URLRequest Error: 56, Failure when receiving data from the peer, http://viewer-settings.secondlife.com/gpu_table.3.0.1.238013.txt
2011-08-18T21:42:07Z INFO: LLPumpIO::processChain: Pump generated pipe err: 'STATUS_ERROR'
  • Login Screen Renders Correctly The logon screen should be able to load content from the web using the configured proxy.
    • Start the viewer, but do not log in.
    • Verify that the contents of the login screen are displayed.

Avatar Navigation and Movement

  • Walking
    • Verify that your avatar can move around the world.
  • Sitting
    • Verify that your avatar can sit on objects.
  • Flying
    • Verify that you can fly around the region.
  • World Map
    • Open the World Map Floater (World->World Map).
    • Verify that map tiles load and display the layout of the surrounding regions.
    • Verify that green dots representing avatars are displayed.
    • Close the World Map.
  • Minimap
    • Open the Mini-Map Floater (World->Mini-Map).
    • Verify that map tiles are displayed.
  • Region Crossing
    • Fly or walk across a region boundary.
    • Verify that you successfully arrive in the other region.
  • Intra-region teleport
    • Teleport by double clicking in the World Map floater, within the current region.
    • Verify that you arrive in the place you clicked.
  • Inter-region teleport
    • Teleport by double clicking in the World Map floater, somewhere other than the current region.
    • Verify that you arrive in the new region.

Avatar Communication

  • Local Chat
    • Try sending messages to others avatars standing nearby.
    • Verify that the other people receive your messages
    • Verify that you can receive messages from other people.
  • Group Chat
    • Try sending messages to a group chat channel.
    • Verify that you can send messages
    • Verify that you are receiving group chat messages.
  • IM
    • Try sending private IM messages to another avatar.
    • Verify that the other avatar receives your messages
    • Verify that you are able to receive their response.
  • Display Names
    • Verify that custom display names are visible for avatars that have them set.
    • Verify that the display names of avatars are visible in your friends list.

Asset Download Tests

  • Before starting this test, clear your viewer cache and relog.
  • Texture
    • Verify that textures load onto surfaces in your view.
  • Sounds
    • Locate the Button_click_down asset in your inventory. Double click the sound to play it.
    • Verify that the sound plays.
  • Notecard
    • Locate the Community Standards notecard in the Library of your inventory.
    • Verify that the notecard loads and is readable.
  • Gestures
    • Select a gesture from the "Gesture" menu at the bottom of the window.
    • Verify that the gesture plays.
  • Mesh
    • Travel to a region with mesh assets available.
    • Verify that the mesh assets rez and are visible.
  • Legacy Fetch Methods
    • Enable the Develop menu if you haven't already. (Me->Preferences->Advanced->Show Developer Menu)
    • Disable HTTP Inventory and HTTP Textures in the Develop menu.
    • Clear the viewer cache.
    • Log back into Second Life.
    • Verify that textures load onto surfaces in your view.
    • Verify that your inventory loads.
    • Re-enable HTTP Textures and HTTP inventory.
    • Log out and back in for the next test.

Asset Creation Tests

  • Move to a region where you have permission to build.
  • Sound
    • Upload a test sound using the upload tool (Build->Upload->Sound)
    • When the upload is complete, double click the sound in your inventory to play it back.
    • Verify that the sound plays.
  • Notecard
    • In the inventory sidebar, click the "plus sign" (+) button at the bottom of the list of assets.
    • In the menu that appears, select "New Notecard".
    • Add some text in the body of the notecard and click save.
    • Close the notecard
    • Reopen the notecard from your inventory.
    • Verify that the notecard text loads.
  • Mesh
    • Move to a mesh-enabled region.
    • Select Build->Upload->Model to start the mesh upload process.
    • In the file selection dialog, select the mesh object you prepared while setting up. The example file is named duck.dae.
    • Select "Calculate weights & fee" at the bottom of the Upload Model dialog.
    • After the upload fee has been calculated, select the "Upload" button.
    • Verify that the mesh object is added to your inventory.
    • Drag the mesh object out of your inventory onto the ground to rez it.
    • Verify that the mesh object is rezzed.
  • Object Creation
    • Create a simple object using the build tools.
    • Verify that the object is created
    • Verify that you can take a copy of the created object into your inventory.
    • Drop the object back into the world for the next test.
  • Texture
    • Upload a test image using the upload tool (Build->Upload->Image).
    • When the upload is complete, apply that texture to the object you created.
    • Verify that the image uploaded successfully.
  • Scripting
    • Right click the object you created in the previous test and select edit.
    • Select the content tab of the build floater.
    • Click the New Script button.
    • Double click the new script to edit.
    • Edit the string "Hello, Avatar!" to be "Hi, Avatar!"
    • Click save
    • Verify that the script compiles.
    • Verify that the object has sent the message "Hi, Avatar!".

Integrated Web Browser

  • Browsing Test The integrated webkit browser should be able to browse while accessing the internet through a proxy.
    • Enable the built-in browser. (Me->Preferences->Setup->"Use built-in browser", under "Web:").
    • Enter a full url, like http://secondlife.com into text chat and send.
    • Click the link in the text chat window.
    • Verify that the built-in browser is able to access web content.

Media on a Prim

  • Web Media
    • Verify that web media is visible.
  • Video Media
    • Verify that video media is visible.

Proxy Enabled, other HTTP through SOCKS 5 Proxy

  • Repeat Connectivity Tests Verify that sending other HTTP traffic through the SOCKS 5 proxy works correctly.
    • Configure the viewer as described in the Enable proxy connection with HTTP traffic sent through SOCKS 5 proxy. section above.
    • 'Verify that you are able to successfully log into Second Life.
    • Rerun the following list of test cases, which are described in the section above.
      • Viewer Initialization
      • Avatar Navigation and Movement
      • Avatar Communication
      • Asset Download Tests
      • Asset Upload Tests
      • Integrated Web Browser
      • Media On a Prim
    • Verify that all tests pass.

No Proxy Enabled

  • Repeat Connectivity Tests Verify that users that are not using the proxy will not be negatively impacted by the change.
    • Either test on another computer that is not firewalled, or relax the firewall restrictions on the testing network. If using the reference gateway configuration, run the nat_forward_all.sh script to allow traffic through without going through a proxy.
    • Disable the proxy as described above.
    • Rerun the following list of test cases, which are described in the section above.
      • Viewer Initialization
      • Avatar Navigation and Movement
      • Avatar Communication
      • Asset Download Tests
      • Asset Upload Tests
      • Integrated Web Browser
      • Media On a Prim
    • Verify that all tests pass.
    • Verify that overall viewer performance is approximately the same as usual for the machine you are testing on.
    • Re-enable the firewall if you disabled it before further testing.

SOCKS 5 with Username/Password Authentication

  • Successful Login with SOCKS Authentication Test that the viewer can connect when the SOCKS 5 host requires a password.
    • Enable both proxies, with "other" traffic going through SOCKS 5.
    • Also in the proxy settings floater, select Username/Password as the SOCKS Authentication method.
    • Enter your SOCKS 5 username and password in the appropriate fields. If you followed the reference gateway instructions, your linux username and password should work for the socks credentials.
    • Select OK.
    • Try to log in to Second Life.
    • Verify that login is successful.
    • Leave authentication enabled for the next test.
    • Optional: The previous set of connectivity tests could be run in this mode as well to verify that the Username/Password authentication method works as well. This is a lower priority than the other three modes because this configuration is behaviorally very similar to the no authentication test, and should either connect or not connect.
  • SOCKS 5 Password Security The SOCKS 5 password should not be stored in cleartext.
    • Leave SOCKS 5 authentication enabled in the viewer from the previous test.
    • Close all running instances of the viewer.
    • Navigate to the user's Second Life settings directory.
    • Search, using grep or ctrl-f in notepad depending on the platform, for the username and password you used to connect to the SOCKS 5 server in the previous step in the settings.xml that corresponds to the viewer version you are testing with (settings.xml if using a release version, settings_development.xml if using a development build, etc).
    • Verify that the username and password do not appear in the settings files.
    • Start the viewer and disable authentication.

Pass/Fail Criteria

  • Passes if
    • No unexpected behaviors are observed
  • Fails if
    • Deviation from expected behavior is observed
    • A bug is detected that was not accounted for by this test plan
    • Performance degradation is observed when the proxy is disabled.
  • Known Issues
    • SLVoice does not support proxies, therefore voice is not expected to work when running the viewer behind a strict firewall that blocks the ports used for voice communication. If voice is enabled, an error message will appear when the viewer fails to connect to the voice server.

Tear Down

  • Disable all proxies in the viewer configuration.
  • Disable the built-in browser.