Interest List test

Category:Test Scripts
= Interest List Test Script =
The interest list on the simulator is responsible for transmitting all objects and changes to objects from the simulator to the viewer. This test script has two major objectives:
* Validate correctness.
* Test quality and performance under extreme conditions.
Summaries of the what the test scripts are looking for are immediately below, detailed test scripts for each section are below the summaries.
== Correctness Summary ==
Verify that the interest list correctly transmits all the objects and changes.
There are three different classes of objects that the interest list manages:
* Passive - non-moving, non-scripted
* Active - moving or scripted (this may change)
* Agents - avatars
Non-interactive (user not manipulating objects) tests should be done for passive objects, active objects and agents:
* Verify that objects on other simulators can be seen correctly (cross-sim visiblity)
* Verify that the interest list functions when objects move from simulator to simulator (objects changing sims)
* Verify that the GPW (global perceptual weighting) algorithm works properly
** Verify that you get all nearby objects
** Verify that you get only larger objects that are further away
* Verify that objects properly disappear and reappear (based on size) when you move further and closer
In addition, object modification, creation and deletion are handled differently by the code, correctness for these operations need to be tested independently from the basic interest list algorithm.
Types of object modifications:
* Object creation/rez
* Object linking/unlinking/attach/detach (these are the most likely to be problematic)
* Object deletion
** Single object
** Linked object
* Object property modifications (shape, textures)
These need to be tested to be working if:
* The agent is the one modifying/creating/deleting the object
* The agent is watching someone else modify/create/delete the object
They should also be tested on the following different object types:
* Lone object in world
* Child object in world
* Avatar (clothing/shape modifications)
* Attachment
* Child object of an attachment
Test the interest list in situations with packet loss. There are different types of data transmission where packet loss could cause an issue:
* Passive objects that exist in viewer cache - these are transmitted via a packet containing local ID and CRC
* Passive objects that don't exist in viewer cache - these are transmitted as a result of a NACK from the viewer, then a cache miss packet with data to the viewer
* Active objects - moving and/or scripted objects use LKG-based logic to decide what changes to transmit down to the viewer. Avatars are important to test here because they have their own packets/LKG to handle animation and other things.
== Quality and Performance Summary ==
Verify that the interest behaves in a reasonable manner under various heavy load conditions - in particular lots of objects, lots of changes, and lots of agents.
Performance - The simulator is not spending an excessive amount of time running the interest list. Two primary factors should affect this:
* The number of agents on the simulator
* The number of changing objects on the simulator
The current design of the interest should scale at approximately agents * changes - so lots of agents on a rapidly changing simulator will be particularly bad.
Quality - The simulator is doing a good job of deciding what order new objects and changes should be transmitted to the viewer. Things that could adversely affect quality:
* Too many changing objects resulting in poor bandwidth allocation among objects
* Improper prioritization of cache miss transmission
* Improper balance of bandwidth between changing and sending new objects
* Object caching fails to work, or is not working after simulator restart
Passive object transmission quality
* The quality of passive object transmission is mostly determined by the order of transmission of these objects.
* Cached objects on the viewer can profoundly change the order of object transmission - thus, tests should be done both with and without a full viewer object cache
* Passive object quality can also differ greatly depending on whether the agent is moving or not. In the best case, object transmission should rapidly adapt to the fact that the avatar is moving, and send different objects (those in front of the direction of motion, for example
Changing (active/avatar) object transmission quality
* The quality of changing object tranmission is mostly determined by how well the system behaves in the case of an "overload" situation - i.e. enough objects are changing that the bandwidth necessary to transmit all changes exceeds that allowed by the throttle.
* The worst-case quality problems would involve cases where one or more objects never send updates due to a starvation condition - i.e. a subset of active objects soak up all of the updates.
* The perceived quality worsens as the object is closer to you.
* It would be better not to display an object in many cases than to update it very slowly (not implemented)
* Testing this case is done by having enough changing objects to overflow the bandwidth cap, and watching the results.
Changing/passive object balance
* Another area where quality problems can result is in the balance of changing (active) object updates versus new (unseen) object additions. If too much bandwidth is allocated towards either one of changing or new objects, quality will suffer.
* Test this by creating a simulator with many changing objects, as well as many passive objects. See if the balance between passive and active objects is reasonable.
== Correctness Full Test ==
=== Requirements ===
* Two adjacent simulators
* Two viewers (one to perform actions, one to watch actions)
* Two simstates with KNOWN datasets with a large variety of active and passive objects (I will attempt to build these simstates - Doug)
=== Setting up ===
* Flush the caches of both of the viewers that you will be using for this test.
=== Non-interactive passive object test ===
This test only requires the use of a single viewer.
Unfinished requirements
* simstate files with a variety of objects of known configuration, organized in a way that makes it easy to detect missing objects.
** small objects
** large objects
** linked objects
*** small parent/large children
*** large parent/small children
* specific locations in the simstate file where we can generate screenshots of "correct" behavior?
Validate that the interest list is correctly transmitting passive objects to the viewer
* Use the -purge option to ensure that the viewer-side caches have been flushed during this test
* Set your draw distance to 128 meters
* Enable statistics (Alt-shift-1) so you can check bandwidth
* Log in or teleport to the simulator containing passive objects
* Stand still in a single location, until the bandwidth meter indicates that you are no longer receiving object data. Add specific location, specific objects to look for - Doug
** You should see large objects both nearby and distant
** Small objects should only be visible nearby
* Move to a location where you can see across a nearby region boundary, wait until bandwidth has subsided. Add specific location, specific objects to look for - Doug
** Verify that you can see objects across the boundary
** Verify that there is no significant change in the size of objects that you can see
* Walk and/or fly both forwards and backwards, paying attention to objects that are appearing/disappearing
** When moving forward, do you see objects appearing in front of you?
*** You should see large objects appear further away, and small objects appear nearby
** When moving backwards, do you see objects disappearing in front of you?
*** You should see large objects disappear further away, and small objects disappear nearby
=== Non-interactive active object test ===
This test only requires the use of a single viewer.
Unfinished requirements
* simstate file with a variety of active objects of known shapes and sizes, organized in a way that makes it easy to detect missing objects
** Objects that change properties in a regular pattern that allow you to detect if updates aren't happening
 
Validate that the interest list is correctly transmitting active objects to the viewer
* Use the -purge option to ensure that the viewer-side caches have been flushed during this test
* Set your draw distance to 128 meters
* Enable statistics (Alt-shift-1) so you can check bandwidth
* Log in or teleport to the simulator containing active objects
* Stand still in a single location. Add specific location, specific objects to look for - Doug
** You should see objects both nearby and distant
** Small objects should only be visible nearby
** All objects that you can see should be updating
* Move to a location where you can see across a nearby region boundary. Add specific location, specific objects to look for - Doug
** Verify that you can see objects across the boundary
** Verify that there is no significant change in the size of objects that you can see
* Walk and/or fly both forwards and backwards, paying attention to objects that are appearing/disappearing
** When moving forward, do you see objects appearing in front of you?
*** You should see large objects appear further away, and small objects appear nearby
** When moving backwards, do you see objects disappearing in front of you?
*** You should see large objects disappear further away, and small objects disappear nearby
=== Non-interactive agent test ===
This test will require two viewers:
* A - this viewer is used to watch the actions of B
* B - this viewer is used for movement and actions to be watched by A
* A: Log into a simulator
* B: Log into the same simulator, move so that you are in the field of view of A
* B: Move around, perform gestures in from of A
** A: Verify that you see the actions that B is performing.
* A: Move close to and further away from B
** Verify that B disappears and reappears
* B: Move across a region boundary, within sight of A
** A: Verify that you can still see B moving and performing actions.
=== Object modification test ===
This test will require two viewers:
* A - this viewer is used to modify objects
* B - this viewer is used to watch the actions performed by A
* Object creation
** A - rez an object from inventory in the same region
*** A - should see the object rez in
*** B - should see the object rez in
** A - create an object using the edit pane in the same region
*** A - should see the object rez in selected
*** B - should see the object rez in, selected by A
* Object parenting changes
** A - Create two objects. Link them together
*** A - should see the linked objects properly
*** B - should see the linked objects properly
** A - Unlinke the two objecst.
*** A - should see the unlinked objects properly
*** B - should see the unlinked objects properly
** A - Relink the objects, but with the opposite parent
*** A - should see the linked objects properly
*** B - should see the linked objects properly
** A - Create an object and attach it
*** A - should see the attachment move properly
*** B - should see the attachment move properly
** A - Create a linked object and attach it
*** A - should see the attachment move properly
*** B - should see the attachment move properly
** A - Derez the attachment to inventory
*** A - should see the attachment disappear
*** B - should see the attachment disappear
** A - Wear the attachment to inventory
*** A - should see the attachment appear
*** B - should see the attachment appear
** A - Detach the attachment to the world
*** A - should see the attachment in world
*** B - should see the attachment in world
* Object deletion
** A - create and delete a cube
*** A - verify that the cube disappears
*** B - verify that the cube disappears
** A - create and delete a linked object
*** A - verify that the linked objects disappear
*** B - verify that the linked objects disappear
* Object property modifications
** A - modify various properties of the object - shape, color, texture, position, etc.
*** A - verify that the changes appear
*** B - verify that the changes appear
== Quality and Performance Full Test ==
=== Requirements ===
* One viewer
* Functional drones (and enough hardware to run at least 40 drones)
* At least one simulator which you can load simstates on
=== Performance Test ===
Unfinished requirements
* A test simstate file with many passive and active objects
* Load the test simstate onto a simulator. Make sure that the simulator is running on similar hardware as previous tests.
* Start a viewer
== Comparative Baseline Test ==
=== Overview ===
This test has been designed to verify that any non-agni or preview version of the interest list meets at the very least the same functionality as seen on AGNI. If the non-agni or preview version does not match this comparision of minimum functionality, then the test fails.
=== Requirements ===
* Two adjacent simulators, on both agni and whichever preview grid you are testing on.
* Two viewers (one to perform actions, one to watch actions), on both agni and whichever preview grid you are testing on.
* Two simstates with KNOWN datasets with a large variety of active and passive objects (I will attempt to build these simstates - Doug), on both agni and whichever preview grid you are testing on.
=== Setting up ===
* Flush the caches of both of the viewers that you will be using for this test.
= Old (pre-1.7) script =
people fly away behind you, do they ghost?
people fly away from you, how far until they disappear? your draw distance?
people fly out of your view, put on attachment, and fly back. do you see the changes?
Put on many attachment. Do they look correct to you and others after:
teleport?
relog?
crossing a region boundary?
replacing an attachment by wearing another on the same attach point?
sitting on a vehicle?
crossing a region boundary on a vehicle?
At what distance from your camera does a default box disappear?
a scripted box?
a default box with someone sitting on it?
UserA sit on the ground.
UserB teleport into the area. Can you see UserA?
UserB fly into the area. Can you see UserA?
UserA sit on a box.
UserB teleport into the area. Can you see UserA?
UserB fly into the area. Can you see UserA?
Look at the SW (0,0,0) corner of the sim. Do any objects there, but are not really there?
What distance do gestures still appear at?
Chat with someone far away, can you still see them animate? At what distance?