User:Log Linden/Socks5Viewer/TestPlan

From Second Life Wiki
Jump to navigation Jump to search

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

  • Second Life account that is able to upload mesh assets on the grid being tested.
  • 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 botha
  • Sandbox, or other area where building is allowed.
  • Enable advanced mode. The proxy options are not available in basic mode.
  • 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 | https://collada.org/owl/download.php?sess=0&parent=126&expand=1&order=name&curview=0&binary=1&id=698/ ].
  • 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_dup 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.
    1. Change these settings before logging into Second Life.
    2. Open the Proxy settings floater. Me->Preferences->Setup->"Adjust Proxy Settings"
    3. Check "Use HTTP Proxy for Web pages" and enter the address and port number.
    4. Check "Use SOCKS 5 Proxy for UDP traffic" and enter the address and port number.
    5. Under other HTTP traffic proxy, select "Use HTTP Proxy".
    6. Click OK.
  • Enable proxy connection with HTTP traffic sent through SOCKS 5 proxy.
    1. Change these settings before logging into Second Life.
    2. Open the Proxy settings floater. Me->Preferences->Setup->"Adjust Proxy Settings"
    3. Check "Use HTTP Proxy for Web pages" and enter the address and port number.
    4. Check "Use SOCKS 5 Proxy for UDP traffic" and enter the address and port number.
    5. Under other HTTP traffic proxy, select "Use SOCKS 5 Proxy".
    6. Click OK.
  • Disable all proxies
    1. Change these settings before logging into Second Life.
    2. Open the Proxy settings floater. Me->Preferences->Setup->"Adjust Proxy Settings"
    3. Uncheck "Use HTTP Proxy for Web pages".
    4. Uncheck "Use SOCKS 5 Proxy for UDP traffic".
    5. Click OK.
  • Clear Viewer Caches
    1. Click the "Clear Cache" button on the advanced tab of the preferences floater.
    2. Confirm that you want to clear the cache.
    3. Restart the Viewer.

Test Steps

Configuration Consistency Checks

  1. Expected Defaults Check the default configuration.
    1. Install a version of the viewer that supports LLProxy communication.
    2. Start the viewer that was installed, but do not log in.
    3. Navigate to the proxy control floater (Me->Preferences->Setup->Adjust proxy Settings.
    4. Inspect the settings.
    5. Verify that both proxies are disabled.
    6. Leave this floater open for the next test.
  2. Invalid HTTP Proxy Configuration Error-Handling
    1. Enable both proxies, type in valid information for both proxies.
    2. Change the "Other HTTP traffic proxy" option to "Use SOCKS 5 proxy".
    3. Quit the viewer.
    4. 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.).
    5. Change the value of Socks5ProxyEnabled to be "0". The block should look like the following.

<xml>

   <key>Socks5ProxyEnabled</key>
   <map>
     <key>Comment</key>
     <string>Use Socks5 Proxy</string>
     <key>Persist</key>
     <integer>1</integer>
     <key>Type</key>
     <string>Boolean</string>
     <key>Value</key>
     <integer>0</integer>
   </map>

</xml>

    1. Restart the viewer.
    2. Verify that the viewer doesn't crash
    3. Open the proxy preferences floater.
    4. Verify' that the "Other HTTP traffic" proxy option is now set to Do not proxy.'
    5. Quit the viewer.
    6. Verify that Secondlife.log contains the following warning:
"Invalid other HTTP proxy configuration."
  1. Invalid authentication configuration error-handling. Test that an unexpected authentication method will not crash the viewer.
    1. Before starting the viewer, replace the block controlling the Socks5AuthType in settings.xml with another with a fake value. The following block should work.

<xml>

   <key>Socks5AuthType</key>
   <map>
     <key>Comment</key>
     <string>Selected Auth mechanism for Socks5</string>
     <key>Persist</key>
     <integer>1</integer>
     <key>Type</key>
     <string>String</string>
     <key>Value</key>
     <string>FakeAuth</string>
   </map>

</xml>

    1. Start the viewer, but do not log in.
    2. Verify that the viewer doesn't crash.
    3. Verify that in the settings proxy floater, that authentication is disabled.
    4. Close the viewer.
    5. Verify that Secondlife.log contains the following warning:
"Invalid SOCKS 5 authentication type."

Proxy Enabled, other HTTP through Web Proxy

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

Viewer Initialization

  1. HTTP Tables Loading Verify that the viewer is able to fetch the GPU table and feature table via the proxy.
    1. The proxy should be enabled before starting this test.
    2. Close the viewer.
    3. 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.
    4. Start the viewer but do not log in.
    5. 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.
    6. 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.
    7. Close the viewer.
    8. Inspect the Secondlife.log file.
    9. 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'
  1. Login Screen Renders Correctly The logon screen should be able to load content from the web using the configured proxy.
    1. Start the viewer, but do not log in.
    2. Verify that the contents of the login screen are displayed.

Avatar Navigation and Movement

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

Avatar Communication

  1. Local Chat
    1. Try sending messages to others avatars standing nearby.
    2. Verify that the other people receive your messages and that you can receive messages from them.
  2. Group Chat
    1. Try sending messages to a group chat channel.
    2. Verify that you can send messages and receive other messages.
  3. IM
    1. Try sending private IM messages to another avatar.
    2. Verify that the other avatar receives your messages, and that you are able to receive their response.
  4. Display Names
    1. Verify that custom display names are visible for avatars that have them set.

Asset Download Tests

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

Asset Creation Tests

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

Integrated Web Browser

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


Media on a Prim

  1. Web Media
    1. Verify that web media is visible.
  2. Video Media
    1. Verify that video media is visible.

Proxy Enabled, other HTTP through SOCKS 5 Proxy

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

No Proxy Enabled

  1. Repeat Connectivity Tests Verify that users that are not using the proxy will not be negatively impacted by the change.
    1. 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.
    2. Disable the proxy as described above.
    3. Rerun the following list of test cases, which are described in the section above.
      1. Viewer Initialization
      2. Avatar Navigation and Movement
      3. Avatar Communication
      4. Asset Download Tests
      5. Asset Upload Tests
      6. Integrated Web Browser
      7. Media On a Prim
    4. Verify that all tests pass.
    5. Verify that overall viewer performance is approximately the same as usual for the machine you are testing on.
    6. Re-enable the firewall if you disabled it before further testing.

SOCKS 5 with Username/Password Authentication

  1. Successful Login with SOCKS Authentication Test that the viewer can connect when the SOCKS 5 host requires a password.
    1. Enable both proxies, with "other" traffic going through SOCKS 5.
    2. Also in the proxy settings floater, select Username/Password as the SOCKS Authentication method.
    3. 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.
    4. Select OK.
    5. Try to log in to Second Life.
    6. Verify that login is successful.
    7. Leave authentication enabled for the next test.
    8. 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.
  2. SOCKS 5 Password Security The SOCKS 5 password should not be stored in cleartext.
    1. Leave SOCKS 5 authentication enabled in the viewer from the previous test.
    2. Close all running instances of the viewer.
    3. Navigate to the user's Second Life settings directory.
    4. 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).
    5. Verify that the username and password do not appear in the settings files.
    6. Start the viewer and disable authentication.

Pass/Fail Criteria

  1. Passes if
    1. No unexpected behaviors are observed
  2. Fails if
    1. Deviation from expected behavior is observed
    2. A bug is detected that was not accounted for by this test plan
    3. Performance degradation is observed when the proxy is disabled.
  3. Known Issues
    1. 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.