Prim Linking Testing

''Parts of these tests are now carried out in Automated Testing. Extensions to automated testing to cover the other cases described here are welcome, as is manual testing. -- Justincc 12:07, 2 May 2012 (PDT)''

Linking and unlinking of prims seems to be one area where there are quite a few problems and bugs in OpenSimulator. So to help us track down the issues, we are creating a set of test cases so we can try to see what works and what doesn't work.

The following initial set of test cases has been created to try to test most of the issues (on linking/unlinking) that have been reported in mantis. It will help greatly if as many people as possible try them out and report back their findings. And also add any new test cases they can think of to the list.

#1 Linking prims one by one into a link set, causes rotation issues on child prims

Test 1.1:


 * Create a single box prim, and drag-shift copy it to create 11 prims.
 * Rotate each prim so it has a random rotation.
 * Select one prim to be the root and then one by one link the other 10 prims to it.

Test 1.2:
 * Create a single box prim, and drag-shift copy it to create 11 prims.
 * Edit each prim to give each one random properties. [Hollow, twist ,etc]
 * Give each prim a random rotation.
 * Select one prim to be the root and then one by one link the other 10 prims to it.

Test 1.3:
 * Create four copies of the linkset from test 2.
 * Give each linkset a random rotation.
 * Link all the linksets together.
 * Check rotations.
 * Turn the whole set physical.
 * Check for artifacts.
 * Unlink the whole set.
 * Check that the prims are still physical
 * And check for any other changes.

Results:
 * [MW] All tests passed without any issues.

#2 Editing rotations linked parts within linksets causes problems.

Test 2.1:


 * Create a single box prim, and drag-shift copy it to create 11 prims.
 * Select one prim to be the root and then link the other 10 prims to it.
 * Enable edit linked parts.
 * Select a child prim and rotate it. [Repeat on 4 other child prims]
 * Select root part and rotate it.

Results:
 * [MW] Passed without any issues.

'''#3 When creating or shift-drag copying a link set of 6-8 prims (or larger) [with a distance bewteen each prim of >10], by linking all the child prims in one go. The child prims will not collide with avatars/other prims.'''

Test 3.1:
 * Create a single box prim, and drag-shift copy it to create 8 prims.
 * Move each prim so they are separated by at least 10 units from each on all axis.
 * Pick a prim that will be the root prim.
 * Select all other prims apart from the root prim and link them to the root prim.
 * Try walking through the child pims.

Results:
 * [MW] Passed without any issues.

'''#4 Changes to hollow, twist and other prim settings, on child prims in a linkset, don't stick once the linkset is moved or unlinked. The prims revert back to old values.'''

Test 4.1:
 * Create a single box prim, and drag-shift copy it to create 5 prims..
 * Select one prim to be the root and then link the other 4 prims to it.
 * Enable edit linked parts.
 * Edit the child prims, so that they have random values for twist, hollow, etc.
 * Unselect the prim and exit edit mode.
 * Check the child prims still have the values that were set.
 * Move the linked set and again check values.
 * Unlink the whole linkset, and check values on each prim.

Results:
 * [MW] Passed without any issues.

#5 Extending a linkset breaks the rotation of child prims.

Test 5.1:
 * Rezz a cube and a pyramid to the right, rotate the pyramid along the Y axis to 270 degrees (top facing the cube)
 * Build a linkset with the cube as the root prim and rotate it along the Z axis to 60 degrees
 * Rezz another prim and extend the linkset with the new prim as root.
 * Check the rotation of the prims is still correct.

Results:
 * [MW] Passed without any issues.

#6 Sometimes, linking a linkset to another linkset will cause prims to rotate randomly.

Test 6.1:
 * Create a single box prim, and drag-shift copy it to create 11 prims.
 * Rotate each prim so it has a random rotation.
 * Select one prim to be the root and then link the other 10 prims to it.
 * Repeat the 3 steps above, to create a second link set.
 * Link the two linksets together, and check rotations don't change

Results:
 * [MW] Passed without any issues.

'''#7 When linking two or more linked sets together and at least one of the linked sets contains hollowed and/or cut cylinders. Prims rotation will “explode”.'''

Test 7.1:
 * Create a single box prim, and drag-shift copy it to create 11 prims.
 * Rotate each prim so it has a random rotation.
 * Edit each prim to give them random properties for hollow and/or cut.
 * Select one prim to be the root and then link the other 10 prims to it.
 * Repeat the 3 steps above, to create a second link set.
 * Link the two linksets together, and check rotations don't change

Results:
 * [MW] Passed without any issues.

#8 Rotation of child prims become jumbled after adding a rotated prim or secondary link set to an existing link set.

Test 8.1:
 * Create a single box prim, and drag-shift copy it to create 11 prims.
 * Rotate each prim so it has a random rotation.
 * Select one prim to be the root and then link the other 10 prims to it.
 * Create another single prim and give it a random rotation.
 * Link that single prim to the previously created linkset, with the linkset being the parent.
 * Check rotation of child prims.
 * Create a second single prim and again give it a random rotation.
 * Link the previous linkset to that prim, with the prim being the parent.
 * Check rotations of child prims.

Results:
 * [MW] Passed without any problems

#9 Unlink from >=~500 linked prims end with avatar freeze and slow to respond region.

Test 9.1:
 * Create a single box prim, and drag-shift copy it to create 10 prims.
 * Rotate each prim so it has a random rotation.
 * Select all prims and shift-drag copy them and repeat until there are at least 100 prims.
 * Link all prims together.
 * Shift copy the linkset 5 times and then link all linksets into a single set.
 * Enabled edit linked parts and select a group of prims (say 200), and unlink them from the rest.
 * Check avatar can still walk.
 * Link all the prims back into a single linkset.
 * Unlink whole linkset.
 * Check Avatar can still walk.

Results: Plus once the user who unlinked the set, moves to the edge of the region, the region server starts to lag very badly, with repeated console messages. [This was done on a region with no direct neighbours.]
 * [MW] For the user who unlinked the set, he doesn't see the region responding to his movements or commands, but other users on the same region can see him moving around. Also for those other users the region can be slow to respond to any commands.

#10 After unlinking and deleting parts of a linkset, then logging off and back on, the deleted parts will still be there.

Test 10.1:
 * Create a single box prim, and drag-shift copy it to create 11 prims.
 * Select one prim to be the root and then link the other 10 prims to it.
 * Select a few prims and unlink them from the link set.
 * Delete the unlinked prims
 * Log off
 * Log back on and see if the deleted prims are still there.

Results:
 * [MW] Passed without any issues.

#11 After unlinking and deleting parts (or taking them into inventory) of a linkset, then restarting the region, the deleted parts will still be there.

Test 11.1:
 * Create a single box prim, and drag-shift copy it to create 11 prims.
 * Rotate each prim so it has a random rotation.
 * Select one prim to be the root and then link the other 10 prims to it.
 * Repeat to create a second linkset.
 * Log off, and restart region.
 * Log back on and check the linksets are there as they were.
 * Create a single prim and give it a random rotation and properties.
 * Add that new prim, to linkset #1, with it being a child prim.
 * Unlink and delete a single prim from linkset #2.
 * Log off, and restart region.
 * Log back on and check the changes to the linksets were persisted.

Results:
 * [MW] Restarting the region after unlinking and then deleting a prim or taking it into inventory, will result in the prim being back as part of the linkset, after the restart.

#12 Large Scale Link Test.

Test 12.1:
 * Create a prim, and then shift-drag copy it to make four prims in a square.
 * Give each prim a random rotation and properties.
 * Shift-drag all four prims until there are 64 prims.
 * Shift-drag all 64 prims, until there are 256 prims.
 * Shift-drag all 256 prims until there are 1024 prims.
 * Link all the prims into 4 linksets of 256 prims each.
 * Give each linkset a random rotation.
 * Link all 4 linksets together.
 * Shift-drag copy the whole linkset four times.
 * Give all 4 linksets a random roation, and then link them all together.
 * Check the rotations haven't changed.

Results:
 * [MW] Passed without any issues.