<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://opensimulator.org/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://opensimulator.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=MW2</id>
		<title>OpenSimulator - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="http://opensimulator.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=MW2"/>
		<link rel="alternate" type="text/html" href="http://opensimulator.org/wiki/Special:Contributions/MW2"/>
		<updated>2026-05-12T05:28:59Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.19.9</generator>

	<entry>
		<id>http://opensimulator.org/wiki/JabberBridge</id>
		<title>JabberBridge</title>
		<link rel="alternate" type="text/html" href="http://opensimulator.org/wiki/JabberBridge"/>
				<updated>2009-02-19T15:39:23Z</updated>
		
		<summary type="html">&lt;p&gt;MW2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The JabberBridge is part of the Parallel Selves Message Bridge Project. [Currently only works properly in standalone mode]&lt;br /&gt;
&lt;br /&gt;
[To use it, you need a account set up on a Jabber compatible server. That will act as the master bridging account]&lt;br /&gt;
&lt;br /&gt;
The code can be checked out from: &lt;br /&gt;
 svn checkout http://forge.opensimulator.org/svn/psimb&lt;br /&gt;
&lt;br /&gt;
Using 'anonymous' as the username and leaving the password blank.&lt;br /&gt;
&lt;br /&gt;
* Once you have compiled that, copy PSMessageBridge.dll and jabber-net.dll to your opensim bin folder.&lt;br /&gt;
* Edit your opensim.ini file so that under the [Messaging] section it has a entry:&lt;br /&gt;
 MessageTransferModule = JabberTransferModule&lt;br /&gt;
* Then add a new section at the bottom of your opensim.ini file like:&lt;br /&gt;
&lt;br /&gt;
 [JabberBridge]&lt;br /&gt;
 enable = true&lt;br /&gt;
 privateAccounts = true&lt;br /&gt;
 account = &amp;lt;Jabber Account Username&amp;gt;&lt;br /&gt;
 server = &amp;lt;Jabber Server Url&amp;gt;&lt;br /&gt;
 password = &amp;lt;Jabber account password&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Replacing the Jabber Account and server details for the real ones.&lt;br /&gt;
&lt;br /&gt;
Then you are ready to start using it. When a user logs in, they will get a IM from the &amp;quot;Jabber Console&amp;quot;, which acts as the control console for all Jabber related commands. So don't close that IM session.&lt;br /&gt;
&lt;br /&gt;
The first mode, is everyone uses the Jabber master bridge account, that was set in the ini file. This allows users to start two way chat sessions with any Jabber user. But as all the messages are routed through the master account, the person you are trying to talk to, will maybe not realise who you are and could block you. This also could be open for abuse, with people sending annoying messages to people using that account. &lt;br /&gt;
&lt;br /&gt;
To open a chat session, using the Master account. Just type in the Jabber Console IM session: 'New session: &amp;lt;jabberName@JabberServerURL&amp;gt;' So for example 'New session: OpenSimTester@Jabber.org'.&lt;br /&gt;
&lt;br /&gt;
The second mode of usage, is where everyone can use their own private account. To start using this, in the Jabber Console IM session, type 'Open Account: &amp;lt;JabberUserName&amp;gt; &amp;lt;JabberServerUrl&amp;gt; &amp;lt;password&amp;gt;' (A space between each of those elements). &lt;br /&gt;
&lt;br /&gt;
Then you can start chat sessions in the same way as above. Also your Jabber friends will be able to see your online and start chat sessions with you.&lt;br /&gt;
&lt;br /&gt;
Once you have finished using the Bridge, remember to close your account/ sign off. By typing in the Jabber Console session: 'Close account:'&lt;/div&gt;</summary>
		<author><name>MW2</name></author>	</entry>

	<entry>
		<id>http://opensimulator.org/wiki/JabberBridge</id>
		<title>JabberBridge</title>
		<link rel="alternate" type="text/html" href="http://opensimulator.org/wiki/JabberBridge"/>
				<updated>2009-02-19T15:38:58Z</updated>
		
		<summary type="html">&lt;p&gt;MW2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The JabberBridge is part of the Parallel Selves Message Bridge Project. [Currently only works properly in standalone mode]&lt;br /&gt;
&lt;br /&gt;
[To use it, you need a account set up on a Jabber compatible server. That will act as the master bridging account]&lt;br /&gt;
&lt;br /&gt;
The code can be checked out from: &lt;br /&gt;
 svn checkout http://forge.opensimulator.org/svn/psimb&lt;br /&gt;
&lt;br /&gt;
Using 'anonymous' as the username and leaving the password blank.&lt;br /&gt;
&lt;br /&gt;
* Once you have compiled that, copy PSMessageBridge.dll and jabber-net.dll to your opensim bin folder.&lt;br /&gt;
* Edit your opensim.ini file so that under the [Messaging] section it has a entry:&lt;br /&gt;
 MessageTransferModule = JabberTransferModule&lt;br /&gt;
* Then add a new section at the bottom of your ini file like:&lt;br /&gt;
&lt;br /&gt;
 [JabberBridge]&lt;br /&gt;
 enable = true&lt;br /&gt;
 privateAccounts = true&lt;br /&gt;
 account = &amp;lt;Jabber Account Username&amp;gt;&lt;br /&gt;
 server = &amp;lt;Jabber Server Url&amp;gt;&lt;br /&gt;
 password = &amp;lt;Jabber account password&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Replacing the Jabber Account and server details for the real ones.&lt;br /&gt;
&lt;br /&gt;
Then you are ready to start using it. When a user logs in, they will get a IM from the &amp;quot;Jabber Console&amp;quot;, which acts as the control console for all Jabber related commands. So don't close that IM session.&lt;br /&gt;
&lt;br /&gt;
The first mode, is everyone uses the Jabber master bridge account, that was set in the ini file. This allows users to start two way chat sessions with any Jabber user. But as all the messages are routed through the master account, the person you are trying to talk to, will maybe not realise who you are and could block you. This also could be open for abuse, with people sending annoying messages to people using that account. &lt;br /&gt;
&lt;br /&gt;
To open a chat session, using the Master account. Just type in the Jabber Console IM session: 'New session: &amp;lt;jabberName@JabberServerURL&amp;gt;' So for example 'New session: OpenSimTester@Jabber.org'.&lt;br /&gt;
&lt;br /&gt;
The second mode of usage, is where everyone can use their own private account. To start using this, in the Jabber Console IM session, type 'Open Account: &amp;lt;JabberUserName&amp;gt; &amp;lt;JabberServerUrl&amp;gt; &amp;lt;password&amp;gt;' (A space between each of those elements). &lt;br /&gt;
&lt;br /&gt;
Then you can start chat sessions in the same way as above. Also your Jabber friends will be able to see your online and start chat sessions with you.&lt;br /&gt;
&lt;br /&gt;
Once you have finished using the Bridge, remember to close your account/ sign off. By typing in the Jabber Console session: 'Close account:'&lt;/div&gt;</summary>
		<author><name>MW2</name></author>	</entry>

	<entry>
		<id>http://opensimulator.org/wiki/JabberBridge</id>
		<title>JabberBridge</title>
		<link rel="alternate" type="text/html" href="http://opensimulator.org/wiki/JabberBridge"/>
				<updated>2009-02-19T15:18:42Z</updated>
		
		<summary type="html">&lt;p&gt;MW2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The JabberBridge is part of the Parallel Selves Message Bridge Project. [Currently only works properly in standalone mode]&lt;br /&gt;
&lt;br /&gt;
[To use it, you need a account set up on a Jabber compatible server. That will act as the master bridging account]&lt;br /&gt;
&lt;br /&gt;
The code can be checked out from: &lt;br /&gt;
 svn checkout http://forge.opensimulator.org/svn/psimb&lt;br /&gt;
&lt;br /&gt;
Using 'anonymous' as the username and leaving the password blank.&lt;br /&gt;
&lt;br /&gt;
* Once you have compiled that, copy PSMessageBridge.dll and jabber-net.dll to your opensim bin folder.&lt;br /&gt;
* Edit your opensim.ini file so that under the [Messaging] section it has a entry: MessageTransferModule = JabberTransferModule&lt;br /&gt;
* Then add a new section at the bottom of your ini file like:&lt;br /&gt;
&lt;br /&gt;
 [JabberBridge]&lt;br /&gt;
 enable = true&lt;br /&gt;
 privateAccounts = true&lt;br /&gt;
 account = &amp;lt;Jabber Account Username&amp;gt;&lt;br /&gt;
 server = &amp;lt;Jabber Server Url&amp;gt;&lt;br /&gt;
 password = &amp;lt;Jabber account password&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Replacing the Jabber Account and server details for the real ones.&lt;br /&gt;
&lt;br /&gt;
Then you are ready to start using it. When a user logs in, they will get a IM from the &amp;quot;Jabber Console&amp;quot;, which acts as the control console for all Jabber related commands. So don't close that IM session.&lt;br /&gt;
&lt;br /&gt;
The first mode, is everyone uses the Jabber master bridge account, that was set in the ini file. This allows users to start two way chat sessions with any Jabber user. But as all the messages are routed through the master account, the person you are trying to talk to, will maybe not realise who you are and could block you. This also could be open for abuse, with people sending annoying messages to people using that account. &lt;br /&gt;
&lt;br /&gt;
To open a chat session, using the Master account. Just type in the Jabber Console IM session: 'New session: &amp;lt;jabberName@JabberServerURL&amp;gt;' So for example 'New session: OpenSimTester@Jabber.org'.&lt;br /&gt;
&lt;br /&gt;
The second mode of usage, is where everyone can use their own private account. To start using this, in the Jabber Console IM session, type 'Open Account: &amp;lt;JabberUserName&amp;gt; &amp;lt;JabberServerUrl&amp;gt; &amp;lt;password&amp;gt;' (A space between each of those elements). &lt;br /&gt;
&lt;br /&gt;
Then you can start chat sessions in the same way as above. Also your Jabber friends will be able to see your online and start chat sessions with you.&lt;br /&gt;
&lt;br /&gt;
Once you have finished using the Bridge, remember to close your account/ sign off. By typing in the Jabber Console session: 'Close account:'&lt;/div&gt;</summary>
		<author><name>MW2</name></author>	</entry>

	<entry>
		<id>http://opensimulator.org/wiki/JabberBridge</id>
		<title>JabberBridge</title>
		<link rel="alternate" type="text/html" href="http://opensimulator.org/wiki/JabberBridge"/>
				<updated>2009-02-19T15:14:37Z</updated>
		
		<summary type="html">&lt;p&gt;MW2: New page: The JabberBridge is part of the Parallel Selves Message Bridge Project. [Currently only works properly in standalone mode]  [To use it, you need a account set up on a Jabber compatible ser...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The JabberBridge is part of the Parallel Selves Message Bridge Project. [Currently only works properly in standalone mode]&lt;br /&gt;
&lt;br /&gt;
[To use it, you need a account set up on a Jabber compatible server. That will act as the master bridging account]&lt;br /&gt;
&lt;br /&gt;
The code can be checked out from: &lt;br /&gt;
 svn checkout http://forge.opensimulator.org/svn/psimb&lt;br /&gt;
&lt;br /&gt;
Using 'anonymous' as the username and leaving the password blank.&lt;br /&gt;
&lt;br /&gt;
* Once you have compiled that, copy PSMessageBridge.dll and jabber-net.dll to your opensim bin folder.&lt;br /&gt;
* Edit your opensim.ini file so that under the [Messaging] section it has a entry: MessageTransferModule = JabberTransferModule&lt;br /&gt;
* Then add a new section at the bottom of your ini file like:&lt;br /&gt;
&lt;br /&gt;
 [JabberBridge]&lt;br /&gt;
 enable = true&lt;br /&gt;
 privateAccounts = true&lt;br /&gt;
 account = &amp;lt;Jabber Account Username&amp;gt;&lt;br /&gt;
 server = &amp;lt;Jabber Server Url&amp;gt;&lt;br /&gt;
 password = &amp;lt;Jabber account password&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Replacing the Jabber Account and server details for the real ones.&lt;br /&gt;
&lt;br /&gt;
Then you are ready to start using it. When a user logs in, they will get a IM from the &amp;quot;Jabber Console&amp;quot;, which acts as the control console for all Jabber related commands. So don't close that IM session.&lt;br /&gt;
&lt;br /&gt;
The first mode, is everyone uses the Jabber master bridge account, that was set in the ini file. This allows users to start two way chat sessions with any Jabber user. But as all the messages are routed through the master account, the person you are trying to talk to, maybe not realise who you are and could block you. This also could be open for abuse, we people sending annoying messages to people using that account. &lt;br /&gt;
&lt;br /&gt;
To open a chat session, using the Master account. Just type in the Jabber Console IM session: 'New session: &amp;lt;jabberName@JabberServerURL&amp;gt;' So for example 'New session: OpenSimTester@Jabber.org'.&lt;br /&gt;
&lt;br /&gt;
The second mode of usage, is where everyone can use their own private account. To start using this, in the Jabber Console IM session, type 'Open Account: &amp;lt;JabberUserName&amp;gt; &amp;lt;JabberServerUrl&amp;gt; &amp;lt;password&amp;gt;' (A space between each of those elements). &lt;br /&gt;
&lt;br /&gt;
Then you can start chat sessions in the same way as above. Also your Jabber friends will be able to see your online and start chat sessions with you.&lt;br /&gt;
&lt;br /&gt;
Once you have finished using the Bridge, remember to close your account/ sign off. By typing in the Jabber Console session: 'Close account:'&lt;/div&gt;</summary>
		<author><name>MW2</name></author>	</entry>

	<entry>
		<id>http://opensimulator.org/wiki/User_Documentation</id>
		<title>User Documentation</title>
		<link rel="alternate" type="text/html" href="http://opensimulator.org/wiki/User_Documentation"/>
				<updated>2009-02-19T14:55:24Z</updated>
		
		<summary type="html">&lt;p&gt;MW2: /* Gforge Projects */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:Quicklinks}}&lt;br /&gt;
&lt;br /&gt;
==Initial Setup==&lt;br /&gt;
* [[Download]] - Download instructions&lt;br /&gt;
* [[Dependencies]] - The other packages you need to install that OpenSim relies upon&lt;br /&gt;
* [[Build Instructions]] - How to build and compile OpenSim from Source&lt;br /&gt;
* [[Configuration]] - How to configure your OpenSim server up and running&lt;br /&gt;
* [[Upgrading]] - How to upgrade your OpenSim version so that you can use your existing data&lt;br /&gt;
* [[Connecting]] - How to connect a compatible viewer to OpenSim&lt;br /&gt;
* [[Troubleshooting]] - How to trouble shoot your OpenSim installation.&lt;br /&gt;
* [[Tips]] - Useful tips from users like you&lt;br /&gt;
* [[FAQ]] - Frequently Asked Questions&lt;br /&gt;
&lt;br /&gt;
==Administrator Guide==&lt;br /&gt;
* [[Server Commands]] - Commands to control OpenSim&lt;br /&gt;
* [[OpenSim Database support]] - Dealing with databases&lt;br /&gt;
* [[Logging]] - Logging in OpenSim&lt;br /&gt;
* [[Custom Libraries]] - Describes how to add custom content to your OpenSim server&lt;br /&gt;
* [[Automating Tasks]] - How to make administrating a walk in the park&lt;br /&gt;
* [[Network Settings]] - NAT, Ports, Services and more...&lt;br /&gt;
* [[Management]] - All about being an effective administrator/moderator&lt;br /&gt;
* [[Performance]] - How to tweak OpenSim's performance&lt;br /&gt;
* [[Console-less OpenSim]] - How to run OpenSim without console&lt;br /&gt;
&lt;br /&gt;
==Core Facilities==&lt;br /&gt;
* [[OpenSim Archives]] - Loading and saving whole region archives with OpenSim&lt;br /&gt;
* [[IRCBridgeModule]] - A core OpenSim module for integrating IRC with a simulator.&lt;br /&gt;
* [[Hypergrid]] - Information about how to configure the experimental hypergrid architecture&lt;br /&gt;
* [[GridInfo]] - how to provide information about your grid to smart clients&lt;br /&gt;
&lt;br /&gt;
==RealXtend==&lt;br /&gt;
* [[ModRex]] - How to setup the RealXtend server module&lt;br /&gt;
* [[RealXtend Viewer Linux]] - This tutorial describes how to use the RealXtend viewer on Linux, using wine&lt;br /&gt;
&lt;br /&gt;
==Scripting==&lt;br /&gt;
* [[Scripting Documentation]] - Everything you need to know about OpenSim scripting&lt;br /&gt;
* [[Scripting Library]] - A list of example scripts&lt;br /&gt;
&lt;br /&gt;
==Tutorials==&lt;br /&gt;
===Platform specific===&lt;br /&gt;
* [[Linux Gridserver, the ubuntu way]] the quick and dirty way to install opensim under ubuntu (Linux)&lt;br /&gt;
* [[Wiimote]] - How to use a wiimote/nunchuk controller with the OpenSim viewer (Linux)&lt;br /&gt;
* [[Cacti]] - Generate Serverstats using the Cacti-Tool and SNMP (Linux)&lt;br /&gt;
* [http://sunredbeach.com/dokuwiki/doku.php?id=opensim:minimal-server Installing an openSUSE 11.1 Minimal server setup for an OpenSim server] - Quick and Dirty setup on an openSUSE 11.1 server&lt;br /&gt;
&lt;br /&gt;
* [http://chapter-and-metaverse.blogspot.com Chapter &amp;amp; Metaverse] - Full suite of tutorials, tips and tricks, for the Windows user (Windows)&lt;br /&gt;
&lt;br /&gt;
===Cross-platform===&lt;br /&gt;
* [[OSGrid Region Registration]] - Describes how to link your region into OS-Grid&lt;br /&gt;
* [[Hints &amp;amp; Tricks]] - A page for Hints and Tricks&lt;br /&gt;
* [[Getting Started with Region Modules]] - The Hello World of OpenSim application development&lt;br /&gt;
* [[Building a bot]] - Getting started with bot design using libomv from the client side.&lt;br /&gt;
* [[pCampBot]] - Physical OpenSim bots&lt;br /&gt;
* [[Using L3DT]] - How to create custom terrains&lt;br /&gt;
* [[Detailed cross-region terrain making]] - A workflow for creating large cross-region custom terrains&lt;br /&gt;
* [http://update.multiverse.net/wiki/index.php/About_Terrain How to make a good Terrain (includes 4 programs to use)]&lt;br /&gt;
&lt;br /&gt;
==Gforge Projects==&lt;br /&gt;
* [[OpenSimSearch]] - Search for your OpenSim&lt;br /&gt;
* [[Linux Gridserver]] - Linux Gridserver using the Moo tool&lt;br /&gt;
* [[Wixtd|WiXTD]] - Setup and usage of the WiXTD metaverse-portal&lt;br /&gt;
* [[ServerStats]] - RRD/Proc serverstats using the OpenSim module for Berlios Serverstats (Linux)&lt;br /&gt;
* [[JabberBridge]] - Jabber/Xmpp bridge for opensim (currently only works properly in Standalone mode)&lt;br /&gt;
&lt;br /&gt;
==Unofficial Hypernauta's Basic Manual==&lt;br /&gt;
* If you are a real beginner it can be for you. Talking about &amp;quot;personal&amp;quot; worlds created using domestic computers. [http://www.dmu.com/opensime LINK]&lt;br /&gt;
&lt;br /&gt;
==Contribution Policy==&lt;br /&gt;
* [[User_Wiki_Conventions|User Wiki Conventions]] - Read this carefully, before adding content to the wiki&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Users]]&lt;br /&gt;
&amp;lt;cleanpage title=hide cats=hide /&amp;gt;&lt;/div&gt;</summary>
		<author><name>MW2</name></author>	</entry>

	<entry>
		<id>http://opensimulator.org/wiki/Prim_Linking_Testing</id>
		<title>Prim Linking Testing</title>
		<link rel="alternate" type="text/html" href="http://opensimulator.org/wiki/Prim_Linking_Testing"/>
				<updated>2009-02-02T19:55:35Z</updated>
		
		<summary type="html">&lt;p&gt;MW2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''#1 Linking prims one by one into a link set, causes rotation issues on child prims'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Test 1.1:&lt;br /&gt;
&lt;br /&gt;
* Create a single box prim, and drag-shift copy it to create 11 prims.&lt;br /&gt;
* Rotate each prim so it has a random rotation.&lt;br /&gt;
* Select one prim to be the root and then one by one link the other 10 prims to it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Test 1.2:&lt;br /&gt;
* Create a single box prim, and drag-shift copy it to create 11 prims.&lt;br /&gt;
* Edit each prim to give each one random properties. [Hollow, twist ,etc]&lt;br /&gt;
* Give each prim a random rotation.&lt;br /&gt;
* Select one prim to be the root and then one by one link the other 10 prims to it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Test 1.3:&lt;br /&gt;
* Create four copies of the linkset from test 2.&lt;br /&gt;
* Give each linkset a random rotation.&lt;br /&gt;
* Link all the linksets together.&lt;br /&gt;
* Check rotations.&lt;br /&gt;
* Turn the whole set physical.&lt;br /&gt;
* Check for artifacts.&lt;br /&gt;
* Unlink the whole set.&lt;br /&gt;
* Check that the prims are still physical&lt;br /&gt;
* And check for any other changes.&lt;br /&gt;
&lt;br /&gt;
Results:&lt;br /&gt;
* [MW] All tests passed without any issues.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''#2 Editing rotations linked parts within linksets causes problems.''' &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Test 2.1:&lt;br /&gt;
&lt;br /&gt;
* Create a single box prim, and drag-shift copy it to create 11 prims.&lt;br /&gt;
* Select one prim to be the root and then link the other 10 prims to it.&lt;br /&gt;
* Enable edit linked parts.&lt;br /&gt;
* Select a child prim and rotate it. [Repeat on 4 other child prims]&lt;br /&gt;
* Select root part and rotate it.&lt;br /&gt;
&lt;br /&gt;
Results:&lt;br /&gt;
* [MW] Passed without any issues.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''#3 When creating or shift-drag copying a link set of 6-8 prims (or larger) [with a distance bewteen each prim of &amp;gt;10], by linking all the child prims in one go.  The child prims will not collide with avatars/other prims.'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Test 3.1:&lt;br /&gt;
* Create a single box prim, and drag-shift copy it to create 8 prims.&lt;br /&gt;
* Move each prim so they are separated by at least 10 units from each on all axis.&lt;br /&gt;
* Pick a prim that will be the root prim.&lt;br /&gt;
* Select all other prims apart from the root prim and link them to the root prim.&lt;br /&gt;
* Try walking through the child pims. &lt;br /&gt;
&lt;br /&gt;
Results:&lt;br /&gt;
* [MW] Passed without any issues.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''#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.'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Test 4.1:&lt;br /&gt;
* Create a single box prim, and drag-shift copy it to create 5 prims..&lt;br /&gt;
* Select one prim to be the root and then link the other 4 prims to it.&lt;br /&gt;
* Enable edit linked parts.&lt;br /&gt;
* Edit the child prims, so that they have random values for twist, hollow, etc.&lt;br /&gt;
* Unselect the prim and exit edit mode.&lt;br /&gt;
* Check the child prims still have the values that were set.&lt;br /&gt;
* Move the linked set and again check values.&lt;br /&gt;
* Unlink the whole linkset, and check values on each prim.&lt;br /&gt;
&lt;br /&gt;
Results:&lt;br /&gt;
* [MW] Passed without any issues.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''#5 Extending a linkset breaks the rotation of child prims.'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Test 5.1:&lt;br /&gt;
* Rezz a cube and a pyramid to the right, rotate the pyramid along the Y axis to 270 degrees (top facing the cube)&lt;br /&gt;
* Build a linkset with the cube as the root prim and rotate it along the Z axis to 60 degrees&lt;br /&gt;
* Rezz another prim and extend the linkset with the new prim as root. &lt;br /&gt;
* Check the rotation of the prims is still correct.&lt;br /&gt;
&lt;br /&gt;
Results:&lt;br /&gt;
* [MW] Passed without any issues.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''#6 Sometimes, linking a linkset to another linkset will cause prims to rotate randomly.'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Test 6.1:&lt;br /&gt;
* Create a single box prim, and drag-shift copy it to create 11 prims.&lt;br /&gt;
* Rotate each prim so it has a random rotation.&lt;br /&gt;
* Select one prim to be the root and then link the other 10 prims to it.&lt;br /&gt;
* Repeat the 3 steps above, to create a second link set.&lt;br /&gt;
* Link the two linksets together, and check rotations don't change&lt;br /&gt;
&lt;br /&gt;
Results:&lt;br /&gt;
* [MW] Passed without any issues.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''#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”.'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Test 7.1:&lt;br /&gt;
* Create a single box prim, and drag-shift copy it to create 11 prims.&lt;br /&gt;
* Rotate each prim so it has a random rotation.&lt;br /&gt;
* Edit each prim to give them random properties for hollow and/or cut.&lt;br /&gt;
* Select one prim to be the root and then link the other 10 prims to it.&lt;br /&gt;
* Repeat the 3 steps above, to create a second link set.&lt;br /&gt;
* Link the two linksets together, and check rotations don't change&lt;br /&gt;
&lt;br /&gt;
Results:&lt;br /&gt;
* [MW] Passed without any issues.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''#8 Rotation of child prims become jumbled after adding a rotated prim or secondary link set to an existing link set.''' &lt;br /&gt;
&lt;br /&gt;
Test 8.1:&lt;br /&gt;
* Create a single box prim, and drag-shift copy it to create 11 prims.&lt;br /&gt;
* Rotate each prim so it has a random rotation.&lt;br /&gt;
* Select one prim to be the root and then link the other 10 prims to it.&lt;br /&gt;
* Create another single prim and give it a random rotation.&lt;br /&gt;
* Link that single prim to the previously created linkset, with the linkset being the parent.&lt;br /&gt;
* Check rotation of child prims.&lt;br /&gt;
* Create a second single prim and again give it a random rotation.&lt;br /&gt;
* Link the previous linkset to that prim, with the prim being the parent.&lt;br /&gt;
* Check rotations of child prims.&lt;br /&gt;
&lt;br /&gt;
Results:&lt;br /&gt;
* [MW] Passed without any problems&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''#9 Unlink from &amp;gt;=~500 linked prims end with avatar freeze and slow to respond region.'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Test 9.1:&lt;br /&gt;
* Create a single box prim, and drag-shift copy it to create 10 prims.&lt;br /&gt;
* Rotate each prim so it has a random rotation.&lt;br /&gt;
* Select all prims and shift-drag copy them and repeat until there are at least 100 prims.&lt;br /&gt;
* Link all prims together.&lt;br /&gt;
* Shift copy the linkset 5 times and then link all linksets into a single set.&lt;br /&gt;
* Enabled edit linked parts and select a group of prims (say 200), and unlink them from the rest.&lt;br /&gt;
* Check avatar can still walk.&lt;br /&gt;
* Link all the prims back into a single linkset.&lt;br /&gt;
* Unlink whole linkset.&lt;br /&gt;
* Check Avatar can still walk.&lt;br /&gt;
&lt;br /&gt;
Results:&lt;br /&gt;
* [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. &lt;br /&gt;
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.] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''#10 After unlinking and deleting parts of a linkset, then logging off and back on, the deleted parts will still be there.'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Test 10.1:&lt;br /&gt;
* Create a single box prim, and drag-shift copy it to create 11 prims.&lt;br /&gt;
* Select one prim to be the root and then link the other 10 prims to it.&lt;br /&gt;
* Select a few prims and unlink them from the link set.&lt;br /&gt;
* Delete the unlinked prims&lt;br /&gt;
* Log off&lt;br /&gt;
* Log back on and see if the deleted prims are still there.&lt;br /&gt;
&lt;br /&gt;
Results:&lt;br /&gt;
* [MW] Passed without any issues. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''#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.'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Test 11.1:&lt;br /&gt;
* Create a single box prim, and drag-shift copy it to create 11 prims.&lt;br /&gt;
* Rotate each prim so it has a random rotation.&lt;br /&gt;
* Select one prim to be the root and then link the other 10 prims to it.&lt;br /&gt;
* Repeat to create a second linkset.&lt;br /&gt;
* Log off, and restart region.&lt;br /&gt;
* Log back on and check the linksets are there as they were.&lt;br /&gt;
* Create a single prim and give it a random rotation and properties.&lt;br /&gt;
* Add that new prim, to linkset #1, with it being a child prim.&lt;br /&gt;
* Unlink and delete a single prim from linkset #2.&lt;br /&gt;
* Log off, and restart region.&lt;br /&gt;
* Log back on and check the changes to the linksets were persisted.&lt;br /&gt;
&lt;br /&gt;
Results:&lt;br /&gt;
* [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. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''#12 Large Scale Link Test.'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Test 12.1:&lt;br /&gt;
* Create a prim, and then shift-drag copy it to make four prims in a square.&lt;br /&gt;
* Give each prim a random rotation and properties.&lt;br /&gt;
* Shift-drag all four prims until there are 64 prims. &lt;br /&gt;
* Shift-drag all 64 prims, until there are 256 prims. &lt;br /&gt;
* Shift-drag all 256 prims until there are 1024 prims.&lt;br /&gt;
* Link all the prims into 4 linksets of 256 prims each.&lt;br /&gt;
* Give each linkset a random rotation.&lt;br /&gt;
* Link all 4 linksets together.&lt;br /&gt;
* Shift-drag copy the whole linkset four times.&lt;br /&gt;
* Give all 4 linksets a random roation, and then link them all together.&lt;br /&gt;
* Check the rotations haven't changed.&lt;br /&gt;
&lt;br /&gt;
Results:&lt;br /&gt;
* [MW] Passed without any issues.&lt;/div&gt;</summary>
		<author><name>MW2</name></author>	</entry>

	<entry>
		<id>http://opensimulator.org/wiki/Prim_Linking_Testing</id>
		<title>Prim Linking Testing</title>
		<link rel="alternate" type="text/html" href="http://opensimulator.org/wiki/Prim_Linking_Testing"/>
				<updated>2009-02-02T11:40:13Z</updated>
		
		<summary type="html">&lt;p&gt;MW2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''#1 Linking prims one by one into a link set, causes rotation issues on child prims'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Test 1.1:&lt;br /&gt;
&lt;br /&gt;
* Create a single box prim, and drag-shift copy it to create 11 prims.&lt;br /&gt;
* Rotate each prim so it has a random rotation.&lt;br /&gt;
* Select one prim to be the root and then one by one link the other 10 prims to it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Test 1.2:&lt;br /&gt;
* Create a single box prim, and drag-shift copy it to create 11 prims.&lt;br /&gt;
* Edit each prim to give each one random properties. [Hollow, twist ,etc]&lt;br /&gt;
* Give each prim a random rotation.&lt;br /&gt;
* Select one prim to be the root and then one by one link the other 10 prims to it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Test 1.3:&lt;br /&gt;
* Create four copies of the linkset from test 2.&lt;br /&gt;
* Give each linkset a random rotation.&lt;br /&gt;
* Link all the linksets together.&lt;br /&gt;
* Check rotations.&lt;br /&gt;
* Turn the whole set physical.&lt;br /&gt;
* Check for artifacts.&lt;br /&gt;
* Unlink the whole set.&lt;br /&gt;
* Check that the prims are still physical&lt;br /&gt;
* And check for any other changes.&lt;br /&gt;
&lt;br /&gt;
Results:&lt;br /&gt;
* [MW] All tests passed without any issues.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''#2 Editing rotations linked parts within linksets causes problems.''' &lt;br /&gt;
&lt;br /&gt;
Test 2.1:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Create a single box prim, and drag-shift copy it to create 11 prims.&lt;br /&gt;
* Select one prim to be the root and then link the other 10 prims to it.&lt;br /&gt;
* Enable edit linked parts.&lt;br /&gt;
* Select a child prim and rotate it. [Repeat on 4 other child prims]&lt;br /&gt;
* Select root part and rotate it.&lt;br /&gt;
&lt;br /&gt;
Results:&lt;br /&gt;
* [MW] Passed without any issues.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''#3 When creating or shift-drag copying a link set of 6-8 prims (or larger) [with a distance bewteen each prim of &amp;gt;10], by linking all the child prims in one go.  The child prims will not collide with avatars/other prims.'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Test 3.1:&lt;br /&gt;
* Create a single box prim, and drag-shift copy it to create 8 prims.&lt;br /&gt;
* Move each prim so they are separated by at least 10 units from each on all axis.&lt;br /&gt;
* Pick a prim that will be the root prim.&lt;br /&gt;
* Select all other prims apart from the root prim and link them to the root prim.&lt;br /&gt;
* Try walking through the child pims. &lt;br /&gt;
&lt;br /&gt;
Results:&lt;br /&gt;
* [MW] Passed without any issues.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''#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.'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Test 4.1:&lt;br /&gt;
* Create a single box prim, and drag-shift copy it to create 5 prims..&lt;br /&gt;
* Select one prim to be the root and then link the other 4 prims to it.&lt;br /&gt;
* Enable edit linked parts.&lt;br /&gt;
* Edit the child prims, so that they have random values for twist, hollow, etc.&lt;br /&gt;
* Unselect the prim and exit edit mode.&lt;br /&gt;
* Check the child prims still have the values that were set.&lt;br /&gt;
* Move the linked set and again check values.&lt;br /&gt;
* Unlink the whole linkset, and check values on each prim.&lt;br /&gt;
&lt;br /&gt;
Results:&lt;br /&gt;
* [MW] Passed without any issues.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''#5 Extending a linkset breaks the rotation of child prims.'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Test 5.1:&lt;br /&gt;
* Rezz a cube and a pyramid to the right, rotate the pyramid along the Y axis to 270 degrees (top facing the cube)&lt;br /&gt;
* Build a linkset with the cube as the root prim and rotate it along the Z axis to 60 degrees&lt;br /&gt;
* Rezz another prim and extend the linkset with the new prim as root. &lt;br /&gt;
* Check the rotation of the prims is still correct.&lt;br /&gt;
&lt;br /&gt;
Results:&lt;br /&gt;
* [MW] Passed without any issues.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''#6 Sometimes, linking a linkset to another linkset will cause prims to rotate randomly.'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Test 6.1:&lt;br /&gt;
* Create a single box prim, and drag-shift copy it to create 11 prims.&lt;br /&gt;
* Rotate each prim so it has a random rotation.&lt;br /&gt;
* Select one prim to be the root and then link the other 10 prims to it.&lt;br /&gt;
* Repeat the 3 steps above, to create a second link set.&lt;br /&gt;
* Link the two linksets together, and check rotations don't change&lt;br /&gt;
&lt;br /&gt;
Results:&lt;br /&gt;
* [MW] Passed without any issues.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''#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”.'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Test 7.1:&lt;br /&gt;
* Create a single box prim, and drag-shift copy it to create 11 prims.&lt;br /&gt;
* Rotate each prim so it has a random rotation.&lt;br /&gt;
* Edit each prim to give them random properties for hollow and/or cut.&lt;br /&gt;
* Select one prim to be the root and then link the other 10 prims to it.&lt;br /&gt;
* Repeat the 3 steps above, to create a second link set.&lt;br /&gt;
* Link the two linksets together, and check rotations don't change&lt;br /&gt;
&lt;br /&gt;
Results:&lt;br /&gt;
* [MW] Passed without any issues.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''#8 Rotation of child prims become jumbled after adding a rotated prim or secondary link set to an existing link set.''' &lt;br /&gt;
&lt;br /&gt;
Test 8.1:&lt;br /&gt;
* Create a single box prim, and drag-shift copy it to create 11 prims.&lt;br /&gt;
* Rotate each prim so it has a random rotation.&lt;br /&gt;
* Select one prim to be the root and then link the other 10 prims to it.&lt;br /&gt;
* Create another single prim and give it a random rotation.&lt;br /&gt;
* Link that single prim to the previously created linkset, with the linkset being the parent.&lt;br /&gt;
* Check rotation of child prims.&lt;br /&gt;
* Create a second single prim and again give it a random rotation.&lt;br /&gt;
* Link the previous linkset to that prim, with the prim being the parent.&lt;br /&gt;
* Check rotations of child prims.&lt;br /&gt;
&lt;br /&gt;
Results:&lt;br /&gt;
* [MW] Passed without any problems&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''#9 Unlink from &amp;gt;=~500 linked prims end with avatar freeze and slow to respond region.'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Test 9.1:&lt;br /&gt;
* Create a single box prim, and drag-shift copy it to create 10 prims.&lt;br /&gt;
* Rotate each prim so it has a random rotation.&lt;br /&gt;
* Select all prims and shift-drag copy them and repeat until there are at least 100 prims.&lt;br /&gt;
* Link all prims together.&lt;br /&gt;
* Shift copy the linkset 5 times and then link all linksets into a single set.&lt;br /&gt;
* Enabled edit linked parts and select a group of prims (say 200), and unlink them from the rest.&lt;br /&gt;
* Check avatar can still walk.&lt;br /&gt;
* Link all the prims back into a single linkset.&lt;br /&gt;
* Unlink whole linkset.&lt;br /&gt;
* Check Avatar can still walk.&lt;br /&gt;
&lt;br /&gt;
Results:&lt;br /&gt;
* [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. &lt;br /&gt;
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.] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''#10 After unlinking and deleting parts of a linkset, then logging off and back on, the deleted parts will still be there.'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Test 10.1:&lt;br /&gt;
* Create a single box prim, and drag-shift copy it to create 11 prims.&lt;br /&gt;
* Select one prim to be the root and then link the other 10 prims to it.&lt;br /&gt;
* Select a few prims and unlink them from the link set.&lt;br /&gt;
* Delete the unlinked prims&lt;br /&gt;
* Log off&lt;br /&gt;
* Log back on and see if the deleted prims are still there.&lt;br /&gt;
&lt;br /&gt;
Results:&lt;br /&gt;
* [MW] Passed without any issues. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''#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.'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Test 11.1:&lt;br /&gt;
* Create a single box prim, and drag-shift copy it to create 11 prims.&lt;br /&gt;
* Rotate each prim so it has a random rotation.&lt;br /&gt;
* Select one prim to be the root and then link the other 10 prims to it.&lt;br /&gt;
* Repeat to create a second linkset.&lt;br /&gt;
* Log off, and restart region.&lt;br /&gt;
* Log back on and check the linksets are there as they were.&lt;br /&gt;
* Create a single prim and give it a random rotation and properties.&lt;br /&gt;
* Add that new prim, to linkset #1, with it being a child prim.&lt;br /&gt;
* Unlink and delete a single prim from linkset #2.&lt;br /&gt;
* Log off, and restart region.&lt;br /&gt;
* Log back on and check the changes to the linksets were persisted.&lt;br /&gt;
&lt;br /&gt;
Results:&lt;br /&gt;
* [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. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''#12 Large Scale Link Test.'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Test 12.1:&lt;br /&gt;
* Create a prim, and then shift-drag copy it to make four prims in a square.&lt;br /&gt;
* Give each prim a random rotation and properties.&lt;br /&gt;
* Shift-drag all four prims until there are 64 prims. &lt;br /&gt;
* Shift-drag all 64 prims, until there are 256 prims. &lt;br /&gt;
* Shift-drag all 256 prims until there are 1024 prims.&lt;br /&gt;
* Link all the prims into 4 linksets of 256 prims each.&lt;br /&gt;
* Give each linkset a random rotation.&lt;br /&gt;
* Link all 4 linksets together.&lt;br /&gt;
* Shift-drag copy the whole linkset four times.&lt;br /&gt;
* Give all 4 linksets a random roation, and then link them all together.&lt;br /&gt;
* Check the rotations haven't changed.&lt;br /&gt;
&lt;br /&gt;
Results:&lt;br /&gt;
* [MW] Passed without any issues.&lt;/div&gt;</summary>
		<author><name>MW2</name></author>	</entry>

	<entry>
		<id>http://opensimulator.org/wiki/Prim_Linking_Testing</id>
		<title>Prim Linking Testing</title>
		<link rel="alternate" type="text/html" href="http://opensimulator.org/wiki/Prim_Linking_Testing"/>
				<updated>2009-02-02T11:38:54Z</updated>
		
		<summary type="html">&lt;p&gt;MW2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Linking and unlinking of prims seems to be one area of 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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''#1 Linking prims one by one into a link set, causes rotation issues on child prims'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Test 1.1:&lt;br /&gt;
&lt;br /&gt;
* Create a single box prim, and drag-shift copy it to create 11 prims.&lt;br /&gt;
* Rotate each prim so it has a random rotation.&lt;br /&gt;
* Select one prim to be the root and then one by one link the other 10 prims to it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Test 1.2:&lt;br /&gt;
* Create a single box prim, and drag-shift copy it to create 11 prims.&lt;br /&gt;
* Edit each prim to give each one random properties. [Hollow, twist ,etc]&lt;br /&gt;
* Give each prim a random rotation.&lt;br /&gt;
* Select one prim to be the root and then one by one link the other 10 prims to it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Test 1.3:&lt;br /&gt;
* Create four copies of the linkset from test 2.&lt;br /&gt;
* Give each linkset a random rotation.&lt;br /&gt;
* Link all the linksets together.&lt;br /&gt;
* Check rotations.&lt;br /&gt;
* Turn the whole set physical.&lt;br /&gt;
* Check for artifacts.&lt;br /&gt;
* Unlink the whole set.&lt;br /&gt;
* Check that the prims are still physical&lt;br /&gt;
* And check for any other changes.&lt;br /&gt;
&lt;br /&gt;
Results:&lt;br /&gt;
* [MW] All tests passed without any issues.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''#2 Editing rotations linked parts within linksets causes problems.''' &lt;br /&gt;
&lt;br /&gt;
Test 2.1:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Create a single box prim, and drag-shift copy it to create 11 prims.&lt;br /&gt;
* Select one prim to be the root and then link the other 10 prims to it.&lt;br /&gt;
* Enable edit linked parts.&lt;br /&gt;
* Select a child prim and rotate it. [Repeat on 4 other child prims]&lt;br /&gt;
* Select root part and rotate it.&lt;br /&gt;
&lt;br /&gt;
Results:&lt;br /&gt;
* [MW] Passed without any issues.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''#3 When creating or shift-drag copying a link set of 6-8 prims (or larger) [with a distance bewteen each prim of &amp;gt;10], by linking all the child prims in one go.  The child prims will not collide with avatars/other prims.'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Test 3.1:&lt;br /&gt;
* Create a single box prim, and drag-shift copy it to create 8 prims.&lt;br /&gt;
* Move each prim so they are separated by at least 10 units from each on all axis.&lt;br /&gt;
* Pick a prim that will be the root prim.&lt;br /&gt;
* Select all other prims apart from the root prim and link them to the root prim.&lt;br /&gt;
* Try walking through the child pims. &lt;br /&gt;
&lt;br /&gt;
Results:&lt;br /&gt;
* [MW] Passed without any issues.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''#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.'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Test 4.1:&lt;br /&gt;
* Create a single box prim, and drag-shift copy it to create 5 prims..&lt;br /&gt;
* Select one prim to be the root and then link the other 4 prims to it.&lt;br /&gt;
* Enable edit linked parts.&lt;br /&gt;
* Edit the child prims, so that they have random values for twist, hollow, etc.&lt;br /&gt;
* Unselect the prim and exit edit mode.&lt;br /&gt;
* Check the child prims still have the values that were set.&lt;br /&gt;
* Move the linked set and again check values.&lt;br /&gt;
* Unlink the whole linkset, and check values on each prim.&lt;br /&gt;
&lt;br /&gt;
Results:&lt;br /&gt;
* [MW] Passed without any issues.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''#5 Extending a linkset breaks the rotation of child prims.'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Test 5.1:&lt;br /&gt;
* Rezz a cube and a pyramid to the right, rotate the pyramid along the Y axis to 270 degrees (top facing the cube)&lt;br /&gt;
* Build a linkset with the cube as the root prim and rotate it along the Z axis to 60 degrees&lt;br /&gt;
* Rezz another prim and extend the linkset with the new prim as root. &lt;br /&gt;
* Check the rotation of the prims is still correct.&lt;br /&gt;
&lt;br /&gt;
Results:&lt;br /&gt;
* [MW] Passed without any issues.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''#6 Sometimes, linking a linkset to another linkset will cause prims to rotate randomly.'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Test 6.1:&lt;br /&gt;
* Create a single box prim, and drag-shift copy it to create 11 prims.&lt;br /&gt;
* Rotate each prim so it has a random rotation.&lt;br /&gt;
* Select one prim to be the root and then link the other 10 prims to it.&lt;br /&gt;
* Repeat the 3 steps above, to create a second link set.&lt;br /&gt;
* Link the two linksets together, and check rotations don't change&lt;br /&gt;
&lt;br /&gt;
Results:&lt;br /&gt;
* [MW] Passed without any issues.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''#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”.'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Test 7.1:&lt;br /&gt;
* Create a single box prim, and drag-shift copy it to create 11 prims.&lt;br /&gt;
* Rotate each prim so it has a random rotation.&lt;br /&gt;
* Edit each prim to give them random properties for hollow and/or cut.&lt;br /&gt;
* Select one prim to be the root and then link the other 10 prims to it.&lt;br /&gt;
* Repeat the 3 steps above, to create a second link set.&lt;br /&gt;
* Link the two linksets together, and check rotations don't change&lt;br /&gt;
&lt;br /&gt;
Results:&lt;br /&gt;
* [MW] Passed without any issues.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''#8 Rotation of child prims become jumbled after adding a rotated prim or secondary link set to an existing link set.''' &lt;br /&gt;
&lt;br /&gt;
Test 8.1:&lt;br /&gt;
* Create a single box prim, and drag-shift copy it to create 11 prims.&lt;br /&gt;
* Rotate each prim so it has a random rotation.&lt;br /&gt;
* Select one prim to be the root and then link the other 10 prims to it.&lt;br /&gt;
* Create another single prim and give it a random rotation.&lt;br /&gt;
* Link that single prim to the previously created linkset, with the linkset being the parent.&lt;br /&gt;
* Check rotation of child prims.&lt;br /&gt;
* Create a second single prim and again give it a random rotation.&lt;br /&gt;
* Link the previous linkset to that prim, with the prim being the parent.&lt;br /&gt;
* Check rotations of child prims.&lt;br /&gt;
&lt;br /&gt;
Results:&lt;br /&gt;
* [MW] Passed without any problems&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''#9 Unlink from &amp;gt;=~500 linked prims end with avatar freeze and slow to respond region.'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Test 9.1:&lt;br /&gt;
* Create a single box prim, and drag-shift copy it to create 10 prims.&lt;br /&gt;
* Rotate each prim so it has a random rotation.&lt;br /&gt;
* Select all prims and shift-drag copy them and repeat until there are at least 100 prims.&lt;br /&gt;
* Link all prims together.&lt;br /&gt;
* Shift copy the linkset 5 times and then link all linksets into a single set.&lt;br /&gt;
* Enabled edit linked parts and select a group of prims (say 200), and unlink them from the rest.&lt;br /&gt;
* Check avatar can still walk.&lt;br /&gt;
* Link all the prims back into a single linkset.&lt;br /&gt;
* Unlink whole linkset.&lt;br /&gt;
* Check Avatar can still walk.&lt;br /&gt;
&lt;br /&gt;
Results:&lt;br /&gt;
* [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. &lt;br /&gt;
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.] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''#10 After unlinking and deleting parts of a linkset, then logging off and back on, the deleted parts will still be there.'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Test 10.1:&lt;br /&gt;
* Create a single box prim, and drag-shift copy it to create 11 prims.&lt;br /&gt;
* Select one prim to be the root and then link the other 10 prims to it.&lt;br /&gt;
* Select a few prims and unlink them from the link set.&lt;br /&gt;
* Delete the unlinked prims&lt;br /&gt;
* Log off&lt;br /&gt;
* Log back on and see if the deleted prims are still there.&lt;br /&gt;
&lt;br /&gt;
Results:&lt;br /&gt;
* [MW] Passed without any issues. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''#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.'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Test 11.1:&lt;br /&gt;
* Create a single box prim, and drag-shift copy it to create 11 prims.&lt;br /&gt;
* Rotate each prim so it has a random rotation.&lt;br /&gt;
* Select one prim to be the root and then link the other 10 prims to it.&lt;br /&gt;
* Repeat to create a second linkset.&lt;br /&gt;
* Log off, and restart region.&lt;br /&gt;
* Log back on and check the linksets are there as they were.&lt;br /&gt;
* Create a single prim and give it a random rotation and properties.&lt;br /&gt;
* Add that new prim, to linkset #1, with it being a child prim.&lt;br /&gt;
* Unlink and delete a single prim from linkset #2.&lt;br /&gt;
* Log off, and restart region.&lt;br /&gt;
* Log back on and check the changes to the linksets were persisted.&lt;br /&gt;
&lt;br /&gt;
Results:&lt;br /&gt;
* [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. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''#12 Large Scale Link Test.'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Test 12.1:&lt;br /&gt;
* Create a prim, and then shift-drag copy it to make four prims in a square.&lt;br /&gt;
* Give each prim a random rotation and properties.&lt;br /&gt;
* Shift-drag all four prims until there are 64 prims. &lt;br /&gt;
* Shift-drag all 64 prims, until there are 256 prims. &lt;br /&gt;
* Shift-drag all 256 prims until there are 1024 prims.&lt;br /&gt;
* Link all the prims into 4 linksets of 256 prims each.&lt;br /&gt;
* Give each linkset a random rotation.&lt;br /&gt;
* Link all 4 linksets together.&lt;br /&gt;
* Shift-drag copy the whole linkset four times.&lt;br /&gt;
* Give all 4 linksets a random roation, and then link them all together.&lt;br /&gt;
* Check the rotations haven't changed.&lt;br /&gt;
&lt;br /&gt;
Results:&lt;br /&gt;
* [MW] Passed without any issues.&lt;/div&gt;</summary>
		<author><name>MW2</name></author>	</entry>

	<entry>
		<id>http://opensimulator.org/wiki/Prim_Linking_Testing</id>
		<title>Prim Linking Testing</title>
		<link rel="alternate" type="text/html" href="http://opensimulator.org/wiki/Prim_Linking_Testing"/>
				<updated>2009-02-02T11:37:13Z</updated>
		
		<summary type="html">&lt;p&gt;MW2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Linking and unlinking of prims seems to be one area of 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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''#1 Linking prims one by one into a link set, causes rotation issues on child prims'''&lt;br /&gt;
&lt;br /&gt;
Test 1.1:&lt;br /&gt;
&lt;br /&gt;
* Create a single box prim, and drag-shift copy it to create 11 prims.&lt;br /&gt;
* Rotate each prim so it has a random rotation.&lt;br /&gt;
* Select one prim to be the root and then one by one link the other 10 prims to it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Test 1.2:&lt;br /&gt;
* Create a single box prim, and drag-shift copy it to create 11 prims.&lt;br /&gt;
* Edit each prim to give each one random properties. [Hollow, twist ,etc]&lt;br /&gt;
* Give each prim a random rotation.&lt;br /&gt;
* Select one prim to be the root and then one by one link the other 10 prims to it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Test 1.3:&lt;br /&gt;
* Create four copies of the linkset from test 2.&lt;br /&gt;
* Give each linkset a random rotation.&lt;br /&gt;
* Link all the linksets together.&lt;br /&gt;
* Check rotations.&lt;br /&gt;
* Turn the whole set physical.&lt;br /&gt;
* Check for artifacts.&lt;br /&gt;
* Unlink the whole set.&lt;br /&gt;
* Check that the prims are still physical&lt;br /&gt;
* And check for any other changes.&lt;br /&gt;
&lt;br /&gt;
Results:&lt;br /&gt;
* [MW] All tests passed without any issues.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''#2 Editing rotations linked parts within linksets causes problems.''' &lt;br /&gt;
&lt;br /&gt;
Test 2.1:&lt;br /&gt;
* Create a single box prim, and drag-shift copy it to create 11 prims.&lt;br /&gt;
* Select one prim to be the root and then link the other 10 prims to it.&lt;br /&gt;
* Enable edit linked parts.&lt;br /&gt;
* Select a child prim and rotate it. [Repeat on 4 other child prims]&lt;br /&gt;
* Select root part and rotate it.&lt;br /&gt;
&lt;br /&gt;
Results:&lt;br /&gt;
* [MW] Passed without any issues.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''#3 When creating or shift-drag copying a link set of 6-8 prims (or larger) [with a distance bewteen each prim of &amp;gt;10], by linking all the child prims in one go.  The child prims will not collide with avatars/other prims.'''&lt;br /&gt;
&lt;br /&gt;
Test 3.1:&lt;br /&gt;
* Create a single box prim, and drag-shift copy it to create 8 prims.&lt;br /&gt;
* Move each prim so they are separated by at least 10 units from each on all axis.&lt;br /&gt;
* Pick a prim that will be the root prim.&lt;br /&gt;
* Select all other prims apart from the root prim and link them to the root prim.&lt;br /&gt;
* Try walking through the child pims. &lt;br /&gt;
&lt;br /&gt;
Results:&lt;br /&gt;
* [MW] Passed without any issues.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''#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.'''&lt;br /&gt;
&lt;br /&gt;
Test 4.1:&lt;br /&gt;
* Create a single box prim, and drag-shift copy it to create 5 prims..&lt;br /&gt;
* Select one prim to be the root and then link the other 4 prims to it.&lt;br /&gt;
* Enable edit linked parts.&lt;br /&gt;
* Edit the child prims, so that they have random values for twist, hollow, etc.&lt;br /&gt;
* Unselect the prim and exit edit mode.&lt;br /&gt;
* Check the child prims still have the values that were set.&lt;br /&gt;
* Move the linked set and again check values.&lt;br /&gt;
* Unlink the whole linkset, and check values on each prim.&lt;br /&gt;
&lt;br /&gt;
Results:&lt;br /&gt;
* [MW] Passed without any issues.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''#5 Extending a linkset breaks the rotation of child prims.'''&lt;br /&gt;
&lt;br /&gt;
Test 5.1:&lt;br /&gt;
* Rezz a cube and a pyramid to the right, rotate the pyramid along the Y axis to 270 degrees (top facing the cube)&lt;br /&gt;
* Build a linkset with the cube as the root prim and rotate it along the Z axis to 60 degrees&lt;br /&gt;
* Rezz another prim and extend the linkset with the new prim as root. &lt;br /&gt;
* Check the rotation of the prims is still correct.&lt;br /&gt;
&lt;br /&gt;
Results:&lt;br /&gt;
* [MW] Passed without any issues.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''#6 Sometimes, linking a linkset to another linkset will cause prims to rotate randomly.'''&lt;br /&gt;
&lt;br /&gt;
Test 6.1:&lt;br /&gt;
* Create a single box prim, and drag-shift copy it to create 11 prims.&lt;br /&gt;
* Rotate each prim so it has a random rotation.&lt;br /&gt;
* Select one prim to be the root and then link the other 10 prims to it.&lt;br /&gt;
* Repeat the 3 steps above, to create a second link set.&lt;br /&gt;
* Link the two linksets together, and check rotations don't change&lt;br /&gt;
&lt;br /&gt;
Results:&lt;br /&gt;
* [MW] Passed without any issues.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''#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”.'''&lt;br /&gt;
&lt;br /&gt;
Test 7.1:&lt;br /&gt;
* Create a single box prim, and drag-shift copy it to create 11 prims.&lt;br /&gt;
* Rotate each prim so it has a random rotation.&lt;br /&gt;
* Edit each prim to give them random properties for hollow and/or cut.&lt;br /&gt;
* Select one prim to be the root and then link the other 10 prims to it.&lt;br /&gt;
* Repeat the 3 steps above, to create a second link set.&lt;br /&gt;
* Link the two linksets together, and check rotations don't change&lt;br /&gt;
&lt;br /&gt;
Results:&lt;br /&gt;
* [MW] Passed without any issues.&lt;br /&gt;
&lt;br /&gt;
#8 Rotation of child prims become jumbled after adding a rotated prim or secondary link set to an existing link set. &lt;br /&gt;
&lt;br /&gt;
Test 8.1:&lt;br /&gt;
* Create a single box prim, and drag-shift copy it to create 11 prims.&lt;br /&gt;
* Rotate each prim so it has a random rotation.&lt;br /&gt;
* Select one prim to be the root and then link the other 10 prims to it.&lt;br /&gt;
* Create another single prim and give it a random rotation.&lt;br /&gt;
* Link that single prim to the previously created linkset, with the linkset being the parent.&lt;br /&gt;
* Check rotation of child prims.&lt;br /&gt;
* Create a second single prim and again give it a random rotation.&lt;br /&gt;
* Link the previous linkset to that prim, with the prim being the parent.&lt;br /&gt;
* Check rotations of child prims.&lt;br /&gt;
&lt;br /&gt;
Results:&lt;br /&gt;
* [MW] Passed without any problems&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''#9 Unlink from &amp;gt;=~500 linked prims end with avatar freeze and slow to respond region.'''&lt;br /&gt;
&lt;br /&gt;
Test 9.1:&lt;br /&gt;
* Create a single box prim, and drag-shift copy it to create 10 prims.&lt;br /&gt;
* Rotate each prim so it has a random rotation.&lt;br /&gt;
* Select all prims and shift-drag copy them and repeat until there are at least 100 prims.&lt;br /&gt;
* Link all prims together.&lt;br /&gt;
* Shift copy the linkset 5 times and then link all linksets into a single set.&lt;br /&gt;
* Enabled edit linked parts and select a group of prims (say 200), and unlink them from the rest.&lt;br /&gt;
* Check avatar can still walk.&lt;br /&gt;
* Link all the prims back into a single linkset.&lt;br /&gt;
* Unlink whole linkset.&lt;br /&gt;
* Check Avatar can still walk.&lt;br /&gt;
&lt;br /&gt;
Results:&lt;br /&gt;
* [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. &lt;br /&gt;
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.] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''#10 After unlinking and deleting parts of a linkset, then logging off and back on, the deleted parts will still be there.'''&lt;br /&gt;
&lt;br /&gt;
Test 10.1:&lt;br /&gt;
* Create a single box prim, and drag-shift copy it to create 11 prims.&lt;br /&gt;
* Select one prim to be the root and then link the other 10 prims to it.&lt;br /&gt;
* Select a few prims and unlink them from the link set.&lt;br /&gt;
* Delete the unlinked prims&lt;br /&gt;
* Log off&lt;br /&gt;
* Log back on and see if the deleted prims are still there.&lt;br /&gt;
&lt;br /&gt;
Results:&lt;br /&gt;
* [MW] Passed without any issues. &lt;br /&gt;
&lt;br /&gt;
'''#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.'''&lt;br /&gt;
&lt;br /&gt;
Test 11.1:&lt;br /&gt;
* Create a single box prim, and drag-shift copy it to create 11 prims.&lt;br /&gt;
* Rotate each prim so it has a random rotation.&lt;br /&gt;
* Select one prim to be the root and then link the other 10 prims to it.&lt;br /&gt;
* Repeat to create a second linkset.&lt;br /&gt;
* Log off, and restart region.&lt;br /&gt;
* Log back on and check the linksets are there as they were.&lt;br /&gt;
* Create a single prim and give it a random rotation and properties.&lt;br /&gt;
* Add that new prim, to linkset #1, with it being a child prim.&lt;br /&gt;
* Unlink and delete a single prim from linkset #2.&lt;br /&gt;
* Log off, and restart region.&lt;br /&gt;
* Log back on and check the changes to the linksets were persisted.&lt;br /&gt;
&lt;br /&gt;
Results:&lt;br /&gt;
* [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. &lt;br /&gt;
&lt;br /&gt;
'''#12 Large Scale Link Test.'''&lt;br /&gt;
&lt;br /&gt;
Test 12.1:&lt;br /&gt;
* Create a prim, and then shift-drag copy it to make four prims in a square.&lt;br /&gt;
* Give each prim a random rotation and properties.&lt;br /&gt;
* Shift-drag all four prims until there are 64 prims. &lt;br /&gt;
* Shift-drag all 64 prims, until there are 256 prims. &lt;br /&gt;
* Shift-drag all 256 prims until there are 1024 prims.&lt;br /&gt;
* Link all the prims into 4 linksets of 256 prims each.&lt;br /&gt;
* Give each linkset a random rotation.&lt;br /&gt;
* Link all 4 linksets together.&lt;br /&gt;
* Shift-drag copy the whole linkset four times.&lt;br /&gt;
* Give all 4 linksets a random roation, and then link them all together.&lt;br /&gt;
* Check the rotations haven't changed.&lt;br /&gt;
&lt;br /&gt;
Results:&lt;br /&gt;
* [MW] Passed without any issues.&lt;/div&gt;</summary>
		<author><name>MW2</name></author>	</entry>

	<entry>
		<id>http://opensimulator.org/wiki/Prim_Linking_Testing</id>
		<title>Prim Linking Testing</title>
		<link rel="alternate" type="text/html" href="http://opensimulator.org/wiki/Prim_Linking_Testing"/>
				<updated>2009-02-02T11:36:03Z</updated>
		
		<summary type="html">&lt;p&gt;MW2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Linking and unlinking of prims seems to be one area of 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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''#1 Linking prims one by one into a link set, causes rotation issues on child prims'''&lt;br /&gt;
&lt;br /&gt;
Test 1.1:&lt;br /&gt;
&lt;br /&gt;
* Create a single box prim, and drag-shift copy it to create 11 prims.&lt;br /&gt;
* Rotate each prim so it has a random rotation.&lt;br /&gt;
* Select one prim to be the root and then one by one link the other 10 prims to it.&lt;br /&gt;
&lt;br /&gt;
Test 1.2:&lt;br /&gt;
* Create a single box prim, and drag-shift copy it to create 11 prims.&lt;br /&gt;
* Edit each prim to give each one random properties. [Hollow, twist ,etc]&lt;br /&gt;
* Give each prim a random rotation.&lt;br /&gt;
* Select one prim to be the root and then one by one link the other 10 prims to it.&lt;br /&gt;
&lt;br /&gt;
Test 1.3:&lt;br /&gt;
* Create four copies of the linkset from test 2.&lt;br /&gt;
* Give each linkset a random rotation.&lt;br /&gt;
* Link all the linksets together.&lt;br /&gt;
* Check rotations.&lt;br /&gt;
* Turn the whole set physical.&lt;br /&gt;
* Check for artifacts.&lt;br /&gt;
* Unlink the whole set.&lt;br /&gt;
* Check that the prims are still physical&lt;br /&gt;
* And check for any other changes.&lt;br /&gt;
&lt;br /&gt;
 Results:&lt;br /&gt;
* [MW] All tests passed without any issues.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''#2 Editing rotations linked parts within linksets causes problems.''' &lt;br /&gt;
&lt;br /&gt;
Test 2.1:&lt;br /&gt;
* Create a single box prim, and drag-shift copy it to create 11 prims.&lt;br /&gt;
* Select one prim to be the root and then link the other 10 prims to it.&lt;br /&gt;
* Enable edit linked parts.&lt;br /&gt;
* Select a child prim and rotate it. [Repeat on 4 other child prims]&lt;br /&gt;
* Select root part and rotate it.&lt;br /&gt;
&lt;br /&gt;
Results:&lt;br /&gt;
* [MW] Passed without any issues.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''#3 When creating or shift-drag copying a link set of 6-8 prims (or larger) [with a distance bewteen each prim of &amp;gt;10], by linking all the child prims in one go.  The child prims will not collide with avatars/other prims.'''&lt;br /&gt;
&lt;br /&gt;
Test 3.1:&lt;br /&gt;
* Create a single box prim, and drag-shift copy it to create 8 prims.&lt;br /&gt;
* Move each prim so they are separated by at least 10 units from each on all axis.&lt;br /&gt;
* Pick a prim that will be the root prim.&lt;br /&gt;
* Select all other prims apart from the root prim and link them to the root prim.&lt;br /&gt;
* Try walking through the child pims. &lt;br /&gt;
&lt;br /&gt;
Results:&lt;br /&gt;
* [MW] Passed without any issues.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''#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.'''&lt;br /&gt;
&lt;br /&gt;
Test 4.1:&lt;br /&gt;
* Create a single box prim, and drag-shift copy it to create 5 prims..&lt;br /&gt;
* Select one prim to be the root and then link the other 4 prims to it.&lt;br /&gt;
* Enable edit linked parts.&lt;br /&gt;
* Edit the child prims, so that they have random values for twist, hollow, etc.&lt;br /&gt;
* Unselect the prim and exit edit mode.&lt;br /&gt;
* Check the child prims still have the values that were set.&lt;br /&gt;
* Move the linked set and again check values.&lt;br /&gt;
* Unlink the whole linkset, and check values on each prim.&lt;br /&gt;
&lt;br /&gt;
Results:&lt;br /&gt;
* [MW] Passed without any issues.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''#5 Extending a linkset breaks the rotation of child prims.'''&lt;br /&gt;
&lt;br /&gt;
Test 5.1:&lt;br /&gt;
* Rezz a cube and a pyramid to the right, rotate the pyramid along the Y axis to 270 degrees (top facing the cube)&lt;br /&gt;
* Build a linkset with the cube as the root prim and rotate it along the Z axis to 60 degrees&lt;br /&gt;
* Rezz another prim and extend the linkset with the new prim as root. &lt;br /&gt;
* Check the rotation of the prims is still correct.&lt;br /&gt;
&lt;br /&gt;
Results:&lt;br /&gt;
* [MW] Passed without any issues.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''#6 Sometimes, linking a linkset to another linkset will cause prims to rotate randomly.'''&lt;br /&gt;
&lt;br /&gt;
Test 6.1:&lt;br /&gt;
* Create a single box prim, and drag-shift copy it to create 11 prims.&lt;br /&gt;
* Rotate each prim so it has a random rotation.&lt;br /&gt;
* Select one prim to be the root and then link the other 10 prims to it.&lt;br /&gt;
* Repeat the 3 steps above, to create a second link set.&lt;br /&gt;
* Link the two linksets together, and check rotations don't change&lt;br /&gt;
&lt;br /&gt;
Results:&lt;br /&gt;
* [MW] Passed without any issues.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''#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”.'''&lt;br /&gt;
&lt;br /&gt;
Test 7.1:&lt;br /&gt;
* Create a single box prim, and drag-shift copy it to create 11 prims.&lt;br /&gt;
* Rotate each prim so it has a random rotation.&lt;br /&gt;
* Edit each prim to give them random properties for hollow and/or cut.&lt;br /&gt;
* Select one prim to be the root and then link the other 10 prims to it.&lt;br /&gt;
* Repeat the 3 steps above, to create a second link set.&lt;br /&gt;
* Link the two linksets together, and check rotations don't change&lt;br /&gt;
&lt;br /&gt;
Results:&lt;br /&gt;
* [MW] Passed without any issues.&lt;br /&gt;
&lt;br /&gt;
#8 Rotation of child prims become jumbled after adding a rotated prim or secondary link set to an existing link set. &lt;br /&gt;
&lt;br /&gt;
Test 8.1:&lt;br /&gt;
* Create a single box prim, and drag-shift copy it to create 11 prims.&lt;br /&gt;
* Rotate each prim so it has a random rotation.&lt;br /&gt;
* Select one prim to be the root and then link the other 10 prims to it.&lt;br /&gt;
* Create another single prim and give it a random rotation.&lt;br /&gt;
* Link that single prim to the previously created linkset, with the linkset being the parent.&lt;br /&gt;
* Check rotation of child prims.&lt;br /&gt;
* Create a second single prim and again give it a random rotation.&lt;br /&gt;
* Link the previous linkset to that prim, with the prim being the parent.&lt;br /&gt;
* Check rotations of child prims.&lt;br /&gt;
&lt;br /&gt;
Results:&lt;br /&gt;
* [MW] Passed without any problems&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''#9 Unlink from &amp;gt;=~500 linked prims end with avatar freeze and slow to respond region.'''&lt;br /&gt;
&lt;br /&gt;
Test 9.1:&lt;br /&gt;
* Create a single box prim, and drag-shift copy it to create 10 prims.&lt;br /&gt;
* Rotate each prim so it has a random rotation.&lt;br /&gt;
* Select all prims and shift-drag copy them and repeat until there are at least 100 prims.&lt;br /&gt;
* Link all prims together.&lt;br /&gt;
* Shift copy the linkset 5 times and then link all linksets into a single set.&lt;br /&gt;
* Enabled edit linked parts and select a group of prims (say 200), and unlink them from the rest.&lt;br /&gt;
* Check avatar can still walk.&lt;br /&gt;
* Link all the prims back into a single linkset.&lt;br /&gt;
* Unlink whole linkset.&lt;br /&gt;
* Check Avatar can still walk.&lt;br /&gt;
&lt;br /&gt;
Results:&lt;br /&gt;
* [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. &lt;br /&gt;
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.] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''#10 After unlinking and deleting parts of a linkset, then logging off and back on, the deleted parts will still be there.'''&lt;br /&gt;
&lt;br /&gt;
Test 10.1:&lt;br /&gt;
* Create a single box prim, and drag-shift copy it to create 11 prims.&lt;br /&gt;
* Select one prim to be the root and then link the other 10 prims to it.&lt;br /&gt;
* Select a few prims and unlink them from the link set.&lt;br /&gt;
* Delete the unlinked prims&lt;br /&gt;
* Log off&lt;br /&gt;
* Log back on and see if the deleted prims are still there.&lt;br /&gt;
&lt;br /&gt;
Results:&lt;br /&gt;
* [MW] Passed without any issues. &lt;br /&gt;
&lt;br /&gt;
'''#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.'''&lt;br /&gt;
&lt;br /&gt;
Test 11.1:&lt;br /&gt;
* Create a single box prim, and drag-shift copy it to create 11 prims.&lt;br /&gt;
* Rotate each prim so it has a random rotation.&lt;br /&gt;
* Select one prim to be the root and then link the other 10 prims to it.&lt;br /&gt;
* Repeat to create a second linkset.&lt;br /&gt;
* Log off, and restart region.&lt;br /&gt;
* Log back on and check the linksets are there as they were.&lt;br /&gt;
* Create a single prim and give it a random rotation and properties.&lt;br /&gt;
* Add that new prim, to linkset #1, with it being a child prim.&lt;br /&gt;
* Unlink and delete a single prim from linkset #2.&lt;br /&gt;
* Log off, and restart region.&lt;br /&gt;
* Log back on and check the changes to the linksets were persisted.&lt;br /&gt;
&lt;br /&gt;
Results:&lt;br /&gt;
* [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. &lt;br /&gt;
&lt;br /&gt;
'''#12 Large Scale Link Test.'''&lt;br /&gt;
&lt;br /&gt;
Test 12.1:&lt;br /&gt;
* Create a prim, and then shift-drag copy it to make four prims in a square.&lt;br /&gt;
* Give each prim a random rotation and properties.&lt;br /&gt;
* Shift-drag all four prims until there are 64 prims. &lt;br /&gt;
* Shift-drag all 64 prims, until there are 256 prims. &lt;br /&gt;
* Shift-drag all 256 prims until there are 1024 prims.&lt;br /&gt;
* Link all the prims into 4 linksets of 256 prims each.&lt;br /&gt;
* Give each linkset a random rotation.&lt;br /&gt;
* Link all 4 linksets together.&lt;br /&gt;
* Shift-drag copy the whole linkset four times.&lt;br /&gt;
* Give all 4 linksets a random roation, and then link them all together.&lt;br /&gt;
* Check the rotations haven't changed.&lt;br /&gt;
&lt;br /&gt;
Results:&lt;br /&gt;
* [MW] Passed without any issues.&lt;/div&gt;</summary>
		<author><name>MW2</name></author>	</entry>

	<entry>
		<id>http://opensimulator.org/wiki/Prim_Linking_Testing</id>
		<title>Prim Linking Testing</title>
		<link rel="alternate" type="text/html" href="http://opensimulator.org/wiki/Prim_Linking_Testing"/>
				<updated>2009-02-02T11:29:22Z</updated>
		
		<summary type="html">&lt;p&gt;MW2: New page: Linking and unlinking of prims seems to be one area of 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 tr...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Linking and unlinking of prims seems to be one area of 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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''#1 Linking prims one by one into a link set, causes rotation issues on child prims'''&lt;br /&gt;
&lt;br /&gt;
Test 1.1:&lt;br /&gt;
Create a single box prim, and drag-shift copy it to create 11 prims.&lt;br /&gt;
Rotate each prim so it has a random rotation.&lt;br /&gt;
Select one prim to be the root and then one by one link the other 10 prims to it.&lt;br /&gt;
&lt;br /&gt;
Test 1.2:&lt;br /&gt;
Create a single box prim, and drag-shift copy it to create 11 prims.&lt;br /&gt;
Edit each prim to give each one random properties. [Hollow, twist ,etc]&lt;br /&gt;
Give each prim a random rotation.&lt;br /&gt;
Select one prim to be the root and then one by one link the other 10 prims to it.&lt;br /&gt;
&lt;br /&gt;
Test 1.3:&lt;br /&gt;
Create four copies of the linkset from test 2.&lt;br /&gt;
Give each linkset a random rotation.&lt;br /&gt;
Link all the linksets together.&lt;br /&gt;
Check rotations.&lt;br /&gt;
Turn the whole set physical.&lt;br /&gt;
Check for artifacts.&lt;br /&gt;
Unlink the whole set.&lt;br /&gt;
Check that the prims are still physical&lt;br /&gt;
And check for any other changes.&lt;br /&gt;
&lt;br /&gt;
 Results:&lt;br /&gt;
[MW] All tests passed without any issues.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''#2 Editing rotations linked parts within linksets causes problems.''' &lt;br /&gt;
&lt;br /&gt;
Test 2.1:&lt;br /&gt;
Create a single box prim, and drag-shift copy it to create 11 prims.&lt;br /&gt;
Select one prim to be the root and then link the other 10 prims to it.&lt;br /&gt;
Enable edit linked parts.&lt;br /&gt;
Select a child prim and rotate it. [Repeat on 4 other child prims]&lt;br /&gt;
Select root part and rotate it.&lt;br /&gt;
&lt;br /&gt;
Results:&lt;br /&gt;
[MW] Passed without any issues.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''#3 When creating or shift-drag copying a link set of 6-8 prims (or larger) [with a distance bewteen each prim of &amp;gt;10], by linking all the child prims in one go.  The child prims will not collide with avatars/other prims.'''&lt;br /&gt;
&lt;br /&gt;
Test 3.1:&lt;br /&gt;
Create a single box prim, and drag-shift copy it to create 8 prims.&lt;br /&gt;
Move each prim so they are separated by at least 10 units from each on all axis.&lt;br /&gt;
Pick a prim that will be the root prim.&lt;br /&gt;
Select all other prims apart from the root prim and link them to the root prim.&lt;br /&gt;
Try walking through the child pims. &lt;br /&gt;
&lt;br /&gt;
Results:&lt;br /&gt;
[MW] Passed without any issues.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''#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.'''&lt;br /&gt;
&lt;br /&gt;
Test 4.1:&lt;br /&gt;
Create a single box prim, and drag-shift copy it to create 5 prims..&lt;br /&gt;
Select one prim to be the root and then link the other 4 prims to it.&lt;br /&gt;
Enable edit linked parts.&lt;br /&gt;
Edit the child prims, so that they have random values for twist, hollow, etc.&lt;br /&gt;
Unselect the prim and exit edit mode.&lt;br /&gt;
Check the child prims still have the values that were set.&lt;br /&gt;
Move the linked set and again check values.&lt;br /&gt;
Unlink the whole linkset, and check values on each prim.&lt;br /&gt;
&lt;br /&gt;
Results:&lt;br /&gt;
[MW] Passed without any issues.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''#5 Extending a linkset breaks the rotation of child prims.'''&lt;br /&gt;
&lt;br /&gt;
Test 5.1:&lt;br /&gt;
1) Rezz a cube and a pyramid to the right, rotate the pyramid along the Y axis to 270 degrees (top facing the cube)&lt;br /&gt;
2) Build a linkset with the cube as the root prim and rotate it along the Z axis to 60 degrees&lt;br /&gt;
3) Rezz another prim and extend the linkset with the new prim as root. &lt;br /&gt;
Check the rotation of the prims is still correct.&lt;br /&gt;
&lt;br /&gt;
Results:&lt;br /&gt;
[MW] Passed without any issues.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''#6 Sometimes, linking a linkset to another linkset will cause prims to rotate randomly.'''&lt;br /&gt;
&lt;br /&gt;
Test 6.1:&lt;br /&gt;
Create a single box prim, and drag-shift copy it to create 11 prims.&lt;br /&gt;
Rotate each prim so it has a random rotation.&lt;br /&gt;
Select one prim to be the root and then link the other 10 prims to it.&lt;br /&gt;
Repeat the 3 steps above, to create a second link set.&lt;br /&gt;
Link the two linksets together, and check rotations don't change&lt;br /&gt;
&lt;br /&gt;
Results:&lt;br /&gt;
Passed without any issues.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''#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”.'''&lt;br /&gt;
&lt;br /&gt;
Test 7.1:&lt;br /&gt;
Create a single box prim, and drag-shift copy it to create 11 prims.&lt;br /&gt;
Rotate each prim so it has a random rotation.&lt;br /&gt;
Edit each prim to give them random properties for hollow and/or cut.&lt;br /&gt;
Select one prim to be the root and then link the other 10 prims to it.&lt;br /&gt;
Repeat the 3 steps above, to create a second link set.&lt;br /&gt;
Link the two linksets together, and check rotations don't change&lt;br /&gt;
&lt;br /&gt;
Results:&lt;br /&gt;
[MW] Passed without any issues.&lt;br /&gt;
&lt;br /&gt;
#8 Rotation of child prims become jumbled after adding a rotated prim or secondary link set to an existing link set. &lt;br /&gt;
&lt;br /&gt;
Test 8.1:&lt;br /&gt;
Create a single box prim, and drag-shift copy it to create 11 prims.&lt;br /&gt;
Rotate each prim so it has a random rotation.&lt;br /&gt;
Select one prim to be the root and then link the other 10 prims to it.&lt;br /&gt;
Create another single prim and give it a random rotation.&lt;br /&gt;
Link that single prim to the previously created linkset, with the linkset being the parent.&lt;br /&gt;
Check rotation of child prims.&lt;br /&gt;
Create a second single prim and again give it a random rotation.&lt;br /&gt;
Link the previous linkset to that prim, with the prim being the parent.&lt;br /&gt;
Check rotations of child prims.&lt;br /&gt;
&lt;br /&gt;
Results:&lt;br /&gt;
[MW] Passed without any problems&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''#9 Unlink from &amp;gt;=~500 linked prims end with avatar freeze and slow to respond region.'''&lt;br /&gt;
&lt;br /&gt;
Test 9.1:&lt;br /&gt;
Create a single box prim, and drag-shift copy it to create 10 prims.&lt;br /&gt;
Rotate each prim so it has a random rotation.&lt;br /&gt;
Select all prims and shift-drag copy them and repeat until there are at least 100 prims.&lt;br /&gt;
Link all prims together.&lt;br /&gt;
Shift copy the linkset 5 times and then link all linksets into a single set.&lt;br /&gt;
Enabled edit linked parts and select a group of prims (say 200), and unlink them from the rest.&lt;br /&gt;
Check avatar can still walk.&lt;br /&gt;
Link all the prims back into a single linkset.&lt;br /&gt;
Unlink whole linkset.&lt;br /&gt;
Check Avatar can still walk.&lt;br /&gt;
&lt;br /&gt;
Results:&lt;br /&gt;
[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. &lt;br /&gt;
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.] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''#10 After unlinking and deleting parts of a linkset, then logging off and back on, the deleted parts will still be there.'''&lt;br /&gt;
&lt;br /&gt;
Test 10.1:&lt;br /&gt;
Create a single box prim, and drag-shift copy it to create 11 prims.&lt;br /&gt;
Select one prim to be the root and then link the other 10 prims to it.&lt;br /&gt;
Select a few prims and unlink them from the link set.&lt;br /&gt;
Delete the unlinked prims&lt;br /&gt;
Log off&lt;br /&gt;
Log back on and see if the deleted prims are still there.&lt;br /&gt;
&lt;br /&gt;
Results:&lt;br /&gt;
[MW] Passed without any issues. &lt;br /&gt;
&lt;br /&gt;
'''#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.'''&lt;br /&gt;
&lt;br /&gt;
Test 11.1:&lt;br /&gt;
Create a single box prim, and drag-shift copy it to create 11 prims.&lt;br /&gt;
Rotate each prim so it has a random rotation.&lt;br /&gt;
Select one prim to be the root and then link the other 10 prims to it.&lt;br /&gt;
Repeat to create a second linkset.&lt;br /&gt;
Log off, and restart region.&lt;br /&gt;
Log back on and check the linksets are there as they were.&lt;br /&gt;
Create a single prim and give it a random rotation and properties.&lt;br /&gt;
Add that new prim, to linkset #1, with it being a child prim.&lt;br /&gt;
Unlink and delete a single prim from linkset #2.&lt;br /&gt;
Log off, and restart region.&lt;br /&gt;
Log back on and check the changes to the linksets were persisted.&lt;br /&gt;
&lt;br /&gt;
Results:&lt;br /&gt;
[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. &lt;br /&gt;
&lt;br /&gt;
'''#12 Large Scale Test.'''&lt;br /&gt;
&lt;br /&gt;
Test 12.1:&lt;br /&gt;
Create a prim, and then shift-drag copy it to make four prims in a square.&lt;br /&gt;
Give each prim a random rotation and properties.&lt;br /&gt;
Shift-drag all four prims until there are 64 prims. &lt;br /&gt;
Shift-drag all 64 prims, until there are 256 prims. &lt;br /&gt;
Shift-drag all 256 prims until there are 1024 prims.&lt;br /&gt;
Link all the prims into 4 linksets of 256 prims each.&lt;br /&gt;
Give each linkset a random rotation.&lt;br /&gt;
Link all 4 linksets together.&lt;br /&gt;
Shift-drag copy the whole linkset four times.&lt;br /&gt;
Give all 4 linksets a random roation, and then link them all together.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Results:&lt;br /&gt;
[MW] Passed without any issues.&lt;/div&gt;</summary>
		<author><name>MW2</name></author>	</entry>

	<entry>
		<id>http://opensimulator.org/wiki/Developer_Documentation</id>
		<title>Developer Documentation</title>
		<link rel="alternate" type="text/html" href="http://opensimulator.org/wiki/Developer_Documentation"/>
				<updated>2009-02-02T11:20:32Z</updated>
		
		<summary type="html">&lt;p&gt;MW2: /* Testing */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:Quicklinks}}&lt;br /&gt;
&lt;br /&gt;
== Developer Documentation ==&lt;br /&gt;
You can view the current [[Top 10 Bugs|top 10 bugs]] blocking forward development.&lt;br /&gt;
&lt;br /&gt;
==== General ====&lt;br /&gt;
* [[OpenSim:Introduction_and_Definitions]] &amp;amp;mdash; A work in progress describing the high level components of OpenSim&lt;br /&gt;
* [[OpenSim: TechRef]] &amp;amp;mdash; A technical description of the simulator operation.&lt;br /&gt;
* [[Grid Architecture Diagram]]&lt;br /&gt;
* [[OpenSim: Screenshots]] &amp;amp;mdash; Various OpenSim screenshots.&lt;br /&gt;
* [http://docs.opensimulator.org/index.html The OpenSim API]&lt;br /&gt;
&lt;br /&gt;
==== Development ====&lt;br /&gt;
* [[Hacking OpenSim for fun and profit]] &amp;amp;mdash; A starters guide for programming OpenSim.&lt;br /&gt;
* [[Coding standards]] &amp;amp;mdash; Coding conventions for developers.&lt;br /&gt;
* [[Automated Testing]] &amp;amp;mdash; How to write tests for OpenSim.&lt;br /&gt;
* [[Branches]] &amp;amp;mdash; An overview of the repository branches and what they are for.&lt;br /&gt;
* [[Monodevelop]] &amp;amp;mdash; How to use the [[monodevelop]] IDE for editing C# solutions.&lt;br /&gt;
* [[Creating New Solution]] &amp;amp;mdash; How to create new solution according to OpenSim conventions.&lt;br /&gt;
&lt;br /&gt;
==== Client Stacks ====&lt;br /&gt;
* [[Sim Throttles]] &amp;amp;mdash; Information on how OpenSim handles throttling of packets to the client.&lt;br /&gt;
&lt;br /&gt;
==== Database ====&lt;br /&gt;
* [[Database Documentation]] &amp;amp;mdash; A map of grid and region instances used in OpenSim&lt;br /&gt;
* [[MonoSqlite]] &amp;amp;mdash; How the database model currently works.&lt;br /&gt;
* [[LSL:PrimitiveParams]] &amp;amp;mdash; Notes on converting SL Edit GUI values and LSL PrimitiveParams to OpenSim PrimitiveBaseShape fields&lt;br /&gt;
* [[NHibernate Performance Testing]] &amp;amp;mdash; SQLite and MySQL performance tests with NHibernate.&lt;br /&gt;
&lt;br /&gt;
==== File formats ====&lt;br /&gt;
* [[OpenSim Region Archive Format]] - Opensim ARchive (OAR) region archive file format.&lt;br /&gt;
&lt;br /&gt;
==== Grid ====&lt;br /&gt;
* [[Asset Server problems]] - list of known problems with the asset server&lt;br /&gt;
* [[Teleports]] - some diagrams about OGP and Hypergrid teleport sequences&lt;br /&gt;
&lt;br /&gt;
==== Integration ====&lt;br /&gt;
* [[Webinterface]] &amp;amp;mdash; How to mashup with the web.&lt;br /&gt;
* [[RemoteAdmin]] &amp;amp;mdash; How to use the remote admin plug-in.&lt;br /&gt;
* [[REST]] &amp;amp;mdash; Information about the REST interface to assets, inventory, etc.&lt;br /&gt;
* [[4D OpenSim Manager]] &amp;amp;mdash; Administration 4D for OpenSim v0.1 beta&lt;br /&gt;
&lt;br /&gt;
==== Modules ====&lt;br /&gt;
* [[RegionModules]] &amp;amp;mdash; The various modules that are used in the RegionServer and how to write new ones.&lt;br /&gt;
* [[How to create a dynamic plugin]] - A tutorial for using PluginLoader&lt;br /&gt;
* [[Getting Started with Region Modules]] - This brief tutorial is intended to get people started with developing applications with/for opensim using region modules and the opensim API.&lt;br /&gt;
* [[Web Statistics Module]] - The web statistics module documentation and counter wish list.&lt;br /&gt;
&lt;br /&gt;
==== Permissions ====&lt;br /&gt;
* [[OpenSim:Permissions(Server)]]   &amp;amp;mdash; Permissions system as implemented on the region server.&lt;br /&gt;
* [[OpenSim: Permissions]] &amp;amp;mdash; Notes on how object permissions are handled on the client.&lt;br /&gt;
&lt;br /&gt;
==== Physics ====&lt;br /&gt;
* [[PhysicsEngines]]   &amp;amp;mdash; Options for physics engines in OpenSim.&lt;br /&gt;
&lt;br /&gt;
==== Regions ====&lt;br /&gt;
* [[OpenSim: Permissions]] &amp;amp;mdash; Notes on object permissions &amp;amp; definition of the ObjectFlags variable.&lt;br /&gt;
* [[OpenSim Load Balancing and Region Splitting]] - Instructions for using load balancing and region splitting features.&lt;br /&gt;
&lt;br /&gt;
==== Threading ====&lt;br /&gt;
* [[OpenSim: Threading strategy]] &amp;amp;mdash; How threading is implemented and handled.&lt;br /&gt;
&lt;br /&gt;
==== Scripting ====&lt;br /&gt;
* [[Scripting_Documentation]] &amp;amp;mdash; How to use scripts and what limitations apply.&lt;br /&gt;
* [[LSL_Status/Functions|LSL Implemented]]   &amp;amp;mdash; A list of LSL-functions that are available in OpenSim.&lt;br /&gt;
* [[OSSL]] &amp;amp;mdash; Some information about the OpenSimulator Scripting Language, and how to implement an OSSL function&lt;br /&gt;
* [[OpenSim.Region.ScriptEngine]] &amp;amp;mdash; How the ScriptEngine looks internally.&lt;br /&gt;
&lt;br /&gt;
==== Search ====&lt;br /&gt;
* [[OpenSim.Region.DataSnapshot]] - Shiny new data gathering/search system&lt;br /&gt;
* [[ImageService]] - Shiny new region module for serving search-related images&lt;br /&gt;
&lt;br /&gt;
==== Testing ====&lt;br /&gt;
* [[Automated_Testing]] &amp;amp;mdash; Writing Automated tests for OpenSim.&lt;br /&gt;
* [[Debugging Unit Tests]] &amp;amp;mdash; Debugging unit tests.&lt;br /&gt;
* [[OpenSim: Debugging - profiler dumps]] &amp;amp;mdash; Dumps of OpenSim profiles to aid in tracking memory leaks.&lt;br /&gt;
* [[Prim_Linking_Testing]] &amp;amp;mdash; Test cases for in world link/unlinking of prims.&lt;br /&gt;
&lt;br /&gt;
==Proposals==&lt;br /&gt;
&lt;br /&gt;
* [[Opensim: 0.5 Release Target Discussion]]&lt;br /&gt;
* [[Opensim: 0.6 Release Target Discussion]]&lt;br /&gt;
* [[Opensim: Future Release Discussion]]&lt;br /&gt;
&lt;br /&gt;
* [[A better SimCrossing]] - A work in progress about implementing a smooth simcrossing&lt;br /&gt;
* [[OpenID]] - Proposal for using OpenID in OpenSim&lt;br /&gt;
* [[AssetServerProposal]] - Proposal for a distributed asset server&lt;br /&gt;
* [[SETPCICP|MXP]] - Proposal for evaluation of Metaverse eXchange Protocol as alternative OpenSim protocol.&lt;br /&gt;
&lt;br /&gt;
==== Proposed projects ====&lt;br /&gt;
&lt;br /&gt;
* [[OpenWiredux: Taking the next step]]&lt;br /&gt;
* [[Using SNMP in OpenSim]]&lt;br /&gt;
&lt;br /&gt;
==Communication==&lt;br /&gt;
&lt;br /&gt;
A good first point of contact is the OpenSim IRC, on irc.freenode.net channels #opensim / #opensim-dev. The OpenSim developers hold [[office hours]] once a week in-world on Tuesdays at &amp;quot;Wright Plaza&amp;quot; on OSGrid. There is a &amp;quot;Test Hour&amp;quot; on Saturdays, also generally on &amp;quot;Wright Plaza&amp;quot;. Both these weekly events are held at 1900UTC. Check on the #opensim IRC channel on Freenode just before each of these events if there is any confusion.&lt;br /&gt;
&lt;br /&gt;
==SVN Access==&lt;br /&gt;
You can browse the source code for OpenSim [http://opensimulator.org/cgi-bin/viewcvs.cgi using a web browser] or via SVN.&lt;br /&gt;
* Anonymous Checkout&lt;br /&gt;
 svn co http://opensimulator.org/svn/opensim/trunk&lt;br /&gt;
* Developer Checkout&lt;br /&gt;
 svn co svn+ssh://USERNAME@opensimulator.org/var/svn/opensim/trunk&lt;br /&gt;
&lt;br /&gt;
==Recent SVN Commits==&lt;br /&gt;
&amp;lt;rss&amp;gt;http://cia.vc/stats/project/opensim/.rss|max=5|title=none&amp;lt;/rss&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Main]]&lt;br /&gt;
[[Category:Getting Started]]&lt;br /&gt;
[[Category:Development]]&lt;br /&gt;
&amp;lt;cleanpage title=hide cats=hide /&amp;gt;&lt;/div&gt;</summary>
		<author><name>MW2</name></author>	</entry>

	<entry>
		<id>http://opensimulator.org/wiki/Hypergrid</id>
		<title>Hypergrid</title>
		<link rel="alternate" type="text/html" href="http://opensimulator.org/wiki/Hypergrid"/>
				<updated>2009-02-02T11:17:38Z</updated>
		
		<summary type="html">&lt;p&gt;MW2: /* Method 2 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==The OpenSim Hypergrid==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== What is the hypergrid? ===&lt;br /&gt;
&amp;lt;!-- [[image:VWV.jpg|250px|thumb|Web of Virtual Worlds]] --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The hypergrid is an extension to opensim that allows you to link your opensim to other opensims on the internet, and that supports seamless agent transfers among those opensims. It can be used both in standalone mode and in grid mode. The hypergrid is effectively supporting the emergence of a Web of virtual worlds. &lt;br /&gt;
&lt;br /&gt;
The basic idea for the hypergrid is that region/grid administrations can place hyperlinks on their map to hypergrided regions run by others. Once those hyperlinks are established, users interact with those regions in exactly the same way as they interact with local regions. Specifically, users can choose to teleport there. Once the user reaches the region behind the hyperlink, she is automatically interacting with a different virtual world without having to logout from the world where she came from, and while still having access to her inventory.&lt;br /&gt;
&lt;br /&gt;
The hypergrid started as a GForge project, but it is now included in the standard distribution of OpenSim. To run your OpenSim instance in hypergrid mode, please see [[Hypergrid#Installing_and_Running_Hypergrid|Installing and Running]].&lt;br /&gt;
&lt;br /&gt;
=== Virtual World Hyperlinks ===&lt;br /&gt;
[[image:hghyperlink.jpg|250px|thumb|A Virtual World Hyperlink]]&lt;br /&gt;
&lt;br /&gt;
We're all familiar with hypertext links on the Web. But what is a virtual world hyperlink?&lt;br /&gt;
&lt;br /&gt;
In the hypergrid model, we consider the 2D map of the virtual world as the equivalent of a web page. As such, a VW hyperlink is simply a region on that map. &lt;br /&gt;
&lt;br /&gt;
The default model of opensim-based virtual worlds already supports this concept of hyperlink, to some extent. When you teleport from one region to another via the map, chances are you are migrating your agent into a different opensim server. This migration is a glorified &amp;quot;agent transfer&amp;quot; that also exists, in rudimentary form, on the web when hypertext links are followed. The default model, however, imposes two very strong constraints on these hyperlinks: &lt;br /&gt;
# The entire map of regions is controlled by a central service known as the grid service, whose job is to provide a uniform view of the world to all of its regions.&lt;br /&gt;
# The only agents that can be transferred are those pertaining to users known to another central service, the user service; if the incoming user is not on that service's database, the agent transfer doesn't go through.&lt;br /&gt;
&lt;br /&gt;
The hypergrid simply removes these two constraints. &lt;br /&gt;
&lt;br /&gt;
First, it allows individual opensim instances to add &amp;quot;neighbors&amp;quot; to their local map, shifting the control of the map down from the grid server to individual opensim instances (although hyperlinks can also be served by grid servers if grid admins so wish). In doing so, the world becomes a lot more interesting and varied. The map that you see in one opensim instance may be completely different from the map that you see after you teleport via an hyperlink. As an opensim administrator, you are free to define what other opensims you want to see on your map.&lt;br /&gt;
&lt;br /&gt;
Second, it allows the transfer of agents pertaining to foreigner users, i.e. users who are registered elsewhere. Instead of assuming one central user service, the hypergrid assumes an arbitrarily large number of such services distributed all over the world. As such, when agents are transferred among hypergrided opensims, a lot more information is passed about the corresponding user. That information includes the collection of servers that the transferring user needs.&lt;br /&gt;
&lt;br /&gt;
=== Usage Scenarios ===&lt;br /&gt;
&lt;br /&gt;
The following are some usage scenarios. There isn't a clear separation between these scenarios, there's a large overlap between them. This is also not an exhaustive list. The purpose of these descriptions is to give you some starting ideas for how to use the hypergrid in practice. Please feel free to add other interesting scenarios to this list.&lt;br /&gt;
&lt;br /&gt;
{| {{Prettytable}}&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
[[image:topoA.jpg|400px|left]]&lt;br /&gt;
|&lt;br /&gt;
'''Personal Worlds'''&lt;br /&gt;
&lt;br /&gt;
This first scenario pertains to standalone opensims. Normally, standalones are completely disconnected from the internet. However, when run in hypergrid mode, standalones become network-able. As such, you can run your own world in your own computer, and link your world to whoever you want. For example, you can link to your friends' hypergrided opensims and to hypergrid gateways in open grids such as OSGrid. &lt;br /&gt;
&lt;br /&gt;
The great thing about this scenario is that all of your assets are stored on your computer, and not on somebody else's server. You can back them up using ordinary backend tools. The not so great thing about this scenario is that all of your assets are stored on your computer! If your disk goes berserk, you loose them. (so make sure you make external backups regularly)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
[[image:topoB.jpg|400px|left]]&lt;br /&gt;
|&lt;br /&gt;
'''Communities'''&lt;br /&gt;
&lt;br /&gt;
This second scenario is about communities, broadly construed. The idea here is that a group of people come together to support a small community grid, i.e. a common world where shared activities take place. But at the same time, the members of the community maintain their own standalone worlds. The standalones link to the community grid, and the community grid may link back to the individual members' worlds and other places of interest.&lt;br /&gt;
&lt;br /&gt;
The members' identities are probably the identities they have on their standalones, and their assets are also probably stored there. The assets present in the community regions, however, are stored on the grid asset server.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
[[image:topoC.jpg|400px|left]]&lt;br /&gt;
|&lt;br /&gt;
'''Grid Public Regions'''&lt;br /&gt;
&lt;br /&gt;
Walled-gardens are here to stay, and they serve many useful purposes. There is a hybrid mode for the hypergrid that some walled-garden grid operators may be interested in supporting. In this hybrid mode, most opensim instances on the grid run in normal, wall-garden mode, so no foreign visitors are allowed there - technically it is impossible to reach them. However, a few opensim instances on that grid can run in hypergrid mode, so that foreign visitors are allowed. This way, there is a gateway for grid-local users and arbitrary visitors to meet. This is also a good strategy for attracting new users to the grid, since random users are able to visit those gateway regions without having to sign up for an account upfront.&lt;br /&gt;
&lt;br /&gt;
This hybrid mode is very similar to what happens on the web. For example, anyone can visit Facebook's public pages without having to sign up for a Facebook account. However, only Facebook users can go further inside.&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
[[image:topoD.jpg|400px|left]]&lt;br /&gt;
|&lt;br /&gt;
'''Level Games'''&lt;br /&gt;
&lt;br /&gt;
The normal version of OpenSim enforces a common map for all the regions on a grid. The hypergrid removes that constraint. As such, it becomes easy to design VW games where the world looks different depending of where the player is. &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Security Concerns ==&lt;br /&gt;
&lt;br /&gt;
There is a wide-spread assumption that open grids such as OSGrid and new forms of grids such as the hypergrid are inherently insecure, and that it will be impossible to develop a &amp;quot;goods-based&amp;quot; economy on top of them; only walled-gardens can be secured. This is both true and false. While it is true with the current state of things, open grids, whatever their form, can be made as secure as the web. The first step towards that is to define exactly what the security threats are, and how they affect (or not) open and closed grids. So, let's spell them out, and face them head-on. This will help put our feet on the ground so that we start developing appropriate solutions.&lt;br /&gt;
&lt;br /&gt;
=== Malicious Clients ===&lt;br /&gt;
&lt;br /&gt;
==== CopyBots ====&lt;br /&gt;
&lt;br /&gt;
Everyone knows about the infamous [http://en.wikipedia.org/wiki/CopyBot CopyBot]. Using libraries such as [http://www.libsecondlife.org/wiki/Main_Page LibSL] (now known as OpenMetaverse) it is possible to develop clients for opensim servers that do unorthodox things such as bypassing the permissions system to copy people's assets. Bots written by griefers can do lots of other nasty things.&lt;br /&gt;
&lt;br /&gt;
Malicious bots are a problem for all opensim administrators, including walled-garden grids. They can be prevented, to a certain extent, by exo-technical solutions such as Terms of Service and real-world lawsuits. Technically speaking, the only way to keep intruders out is to run opensim inside a firewall, pretty much like all other pieces of client/server software out there. If that's an acceptable solution for your case, you should do it.&lt;br /&gt;
&lt;br /&gt;
Unfortunately firewalls also keep the public out, and most opensim operators, even the ones running walled-garden grids, want to reach out to the public. In this case, opensim operators may develop additional technical obstacles for bots, similar to those we see on the Web. For example, make sure agents are being run by real people by giving them a human-challenge during the login/TP process, etc.&lt;br /&gt;
&lt;br /&gt;
Every obstacle to malicious clients lowers the risk of an intruder attack. However keep this in mind: no matter how many obstacles one builds, a sufficiently skilled and motivated attacker will be able to overcome them to penetrate opensims connected to the public internet. This affects hypergrid nodes as much as walled-garden grids. In fact, it's more pervasive than that: it affects '''all''' servers (opensim, web, etc.) connected to the public internet. Fighting malicious intruders is a fact of a connected world. Fortunately, those attacks don't happen very often, or the Web would have been dead by now.&lt;br /&gt;
&lt;br /&gt;
==== Web Clients ====&lt;br /&gt;
&lt;br /&gt;
CopyBots are the most well-known bots for opensim-based virtual worlds, but these virtual worlds are also susceptible to attacks by regular web clients. With the current state of things, it is actually easier to copy assets with a web-based client than with a libsl-based one. The weakness is that asset servers are connected to the public internet, and the protocol for interacting with them is public. &lt;br /&gt;
&lt;br /&gt;
OpenSim has some minimal guards in place to fence against these kinds of attacks. Specifically, when the inventory server receives a request for an item, it checks the session identifier of the requester. Web clients aren't logged in, so they are refused service. I don't want to expand much more on this, so not to make life easy for attackers, but let's just say that opensim has the necessary mechanisms in place to fence off web-based attackers.&lt;br /&gt;
&lt;br /&gt;
=== Malicious Hosts ===&lt;br /&gt;
&lt;br /&gt;
==== Actively Malicious Hosts ====&lt;br /&gt;
&lt;br /&gt;
The new security threat introduced by openness, one that does not exist in closed grids, is the possibility of a user to visit a region that is running malicious code. In the current state of opensim, a malicious host can do serious damage to the user's assets. Let's see how.&lt;br /&gt;
&lt;br /&gt;
Assume you have your assets in your hypergrided-standalone opensim, and you go visit another opensim that happens to be running malicious code. Here is a non-exhaustive list of vulnerabilities that you are exposed to:&lt;br /&gt;
&lt;br /&gt;
* The host has your session id, so it can request your inventory items on your behalf and store copies in its local asset server. To add insult to injury, a malicious host could simply wipe out your inventory after having copied it.&lt;br /&gt;
* Even if the malicious host doesn't access your items by itself, every time you access items in your inventory while you are in that region, those items are cached in the region's local cache, and can be stored persistently by the malicious host.&lt;br /&gt;
&lt;br /&gt;
Malicious hosts can do a lot more damage, but those two are enough to illustrate this new kind of vulnerability affecting open grids. Note that this affects all open grids, i.e. those where arbitrary people can plug-in their opensims, and not just the hypergrid.&lt;br /&gt;
&lt;br /&gt;
Fortunately, there is a family of simple solutions to this problem that can be summarized as &amp;quot;protecting you from yourself.&amp;quot; That proposal is described [[Hypergrid Inventory Access|here]].&lt;br /&gt;
&lt;br /&gt;
==== Piracy ====&lt;br /&gt;
&lt;br /&gt;
A second new security threat affecting open grids is one pertaining to commerce of virtual goods. Suppose you put something out for sale on your hypergrided opensim. A foreign user comes and buys it. What that really means is that that user will physically get a copy of the assets moved to his/her asset server, which is different from your asset server. The permissions will be whatever you define them to be, and using the regular VW client, that user can only do what you defined he/she should could do with the object, as usual. However, if the user has direct backend access to the asset and inventory servers, that person can simply modify the permissions on his/her copy. This is commonly known as '''piracy'''.  (This is also a problem with programmers who have direct access to the cache that their client keeps; in this case, the only thing that needs to be done to enable piracy is for the user to actually see a texture/animation/in-world object.  This does NOT allow scripts to be copied, though, since the script is only interpreted on the server and is never sent for interpretation by the client.)&lt;br /&gt;
&lt;br /&gt;
This situation is the kernel of the belief that open grids are hopeless for a virtual-goods economy. DRM discussion aside, maybe they are hopeless. But then, everyone thought the web was hopeless for selling music, and look at the success of iTunes in spite of all the piracy that still exists out there. Who will be the equivalent of iTunes for virtual hair, skin and clothes?&lt;br /&gt;
&lt;br /&gt;
== Hypergrid Implementation ==&lt;br /&gt;
&lt;br /&gt;
=== Hyperlinks and Agent Transfers ===&lt;br /&gt;
&lt;br /&gt;
When you establish a link between your opensim and another, a message is sent out to that other opensim requesting information about it; the required information includes the network information of that opensim host, and the coordinates of its first region on its local grid in the form of a region handle. For example, suppose you are linking node X.com:9000, placing it in your local map at 900, 900. That opensim runs one or more regions that likely are not in 900, 900 on their own map; suppose the first region of that opensim is at 1100, 1100. From your point of view, it doesn't matter what those other coordinates are, and you don't need to know -- that's the key to being able to decentralize the &amp;quot;world&amp;quot; as given by a 2D map; you want to place it in your map at 900, 900. The &amp;quot;true&amp;quot; position of that simulator only matters for the LL viewer, when there are teleports between your world and that other opensim. This mapping between coordinate systems is the essence of  hyperlinks for opensim; it's one simple but critical thing that the hypergrid implementation does. The mapping happens on the TeleportFinish event; instead of sending the local coordinates to the viewer, the hypergrid teleport wrapper sends the remote coordinates.&lt;br /&gt;
&lt;br /&gt;
When an agent teleports through that hyperlink the following happens. First, before InformRegionOfChildAgent, the local opensim notifies the remote opensim of this foreign user via the &amp;quot;expect_hg_user&amp;quot; method. That message sends along the addresses of all the servers that this user uses, i.e. user, inventory and asset servers. The remote opensim places an entry for that user in its local user profile cache but not in its user database; the foreign user information is non-persistent. After that, the teleport process is exactly the same as the normal teleport process; the only difference is that the region handles are switched between the remote region's hyperlink position on the local grid and its actual position on its grid. &lt;br /&gt;
&lt;br /&gt;
In summary, the two new concepts introduced by the hypergrid are the concept of an hyperlink and the concept of a &amp;quot;local user&amp;quot; vs. &amp;quot;foreign user&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== Inventory Access ===&lt;br /&gt;
&lt;br /&gt;
Inventory access from abroad is done by wrapping the existing scene-inventory interactions with additional code that gets or posts inventory assets from/to the user's asset server. When inventory is accessed, the hypergrid wrapper checks if the user is foreign and, if she is, the wrapper simply brings the necessary assets from the user's asset server to the local asset cache and server; from then on, the wrapper passes the control to the existing inventory access functions. When something is added to inventory, the hypergrid wrapper is notified via an event, and posts the assets to the user's asset server. A cache of the exchanged item identifiers is maintained so that they aren't brought back over and over again.&lt;br /&gt;
&lt;br /&gt;
The result is that hypergrided opensim instances end up interacting with several asset servers, instead of just one. That interaction is implemented in a straightforward manner by instantiating several GridAssetClient objects, instead of just one.&lt;br /&gt;
&lt;br /&gt;
=== The Hypergrid Namespace ===&lt;br /&gt;
&lt;br /&gt;
Currently, the hypergrid is implemented outside of the OpenSim namespace, so that there is complete separation between what already exists and this new behavior. It has its own namespace, HyperGrid. In it, there are 4 sub-namespaces that follow directly the software architecture of OpenSim, namely:&lt;br /&gt;
&lt;br /&gt;
* '''HyperGrid.Framework''' extends OpenSim.Framework in the following manner:&lt;br /&gt;
** HGUserProfileData extends UserProfileData by introducing information about the user's &amp;quot;home&amp;quot;, namely the home address, port and remoting port. The user's home is not that user's user service; it's the opensim that the user has defined to be her home. This is necessary for supporting the home jump (Ctrl-Shift-H).&lt;br /&gt;
** HGNetworkServersInfo follows the spirit of NetworkServersInfo, although it neither extends it nor uses it. For now, it's a utility class whose two main functions are to convert domain names of servers to IP addresses, and to uniformly provide the answer to the question bool IsLocalUser(...).&lt;br /&gt;
&lt;br /&gt;
* '''HyperGrid.Environment''' extends OpenSim.Region.Environment.Scenes in the following manner:&lt;br /&gt;
** HGSceneCommunicationService extends SceneCommunicationService, overriding RequestTeleportToLocation. There are two very small but critical changes to the base method: (a) on the TeleportFinish event, we switch the region handles when the destination region is an hyperlink; (b) the connections at the end are always closed for hyperlink TPs.&lt;br /&gt;
** HGScene extends Scene, overriding TeleportClientHome(...). The only change to the base method is to stay away from the user server, for now, because the user service is still not completely wrapped up for foreign users. Once the user service is properly wrapped up, this class will become unnecessary.&lt;br /&gt;
** HGScene.Inventory is a partial class of HGScene, just like what happens in the OpenSim framework. This part of HGScene overrides some inventory-scene interaction methods, so that assets are fetched/posted from/to the user's asset server. Once that extra fetching/posting is done, these methods simply pass the ball to the base methods.&lt;br /&gt;
** HGAssetMapper: this is a new class specific to the hypergrid that manages the fetching and posting of assets between foreign regions where the user is and the user's asset server.&lt;br /&gt;
&lt;br /&gt;
* '''HyperGrid.Protocol''' is a mashup of OpenSim.Region.Communications.*. This is the place where most of the hypergrid extension lies. One of the reasons for this is that the hypergrid communications part is doing one additional thing: it is making standalones network-able.&lt;br /&gt;
** HGCommunicationsStandalone extends CommuniationsLocal. Just as its base, it is a hub for the several network services available in standalone mode. The main difference is that those services are extensions of what's in OpenSim.&lt;br /&gt;
** HGCommunicationsGridMode extends CommunicationsManager directly. Again, it's a hub for the network services available in grid mode, those services being extensions of OpenSim.&lt;br /&gt;
** The cluster HGGridServices (superclass), HGGridServicesStandalone and HGGridServicesGridMode (subclasses) implements the OpenSim interfaces IGridServices and IInterRegionCommunications. The 2 subclasses are wrappers for LocalBackEndServices and OGS1GridServices, respectively. There is one common pattern throughout these classes: check if the region to talk to is an hyperlink; if it's not, simply delegate the work to LocalBackEndServices/OGS1GridServices; if it is, push the work to the base class HGGridServices. HGGridServices, in turn, does the management of hyperlink regions, and defines two additional pieces of inter-region protocol:&lt;br /&gt;
*** region_uuid: for linking regions&lt;br /&gt;
*** expect_hg_user: similar to the existing expect_user interface, but with a lot more information about the user being passed around, namely all the user's servers (inventory, asset, user, home, etc.)&lt;br /&gt;
** HGInventoryService extends LocalInventoryService and implements ISecureInventoryService. This class is the most obvious mashup of the pack, mixing local service access for standalone users and remote inventory access for when users are out and about. Right now, there is a fair amount of selective copy-and-paste, to stay away from the ugliness coming from OGS1InventoryService and OGS1SecureInventoryService. HGInventoryService is always a ISecureInventoryService. Its methods all follow the same pattern: check if the user is a local standalone user; if it is, pass the work to the base method (in LocalInventoryService); if it's not perform secure remote access.&lt;br /&gt;
** HGUserServices wraps OSG1UserServices, but it's not functional yet.&lt;br /&gt;
&lt;br /&gt;
* '''HyperGrid.Modules''' is a collection of 3 region modules:&lt;br /&gt;
** HGWorldMapModule extends WorldMapModule. It reuses almost everything from the base class. The only small change is in RequestMapBlocks, where it tries to send Offline mapblocks to the client.&lt;br /&gt;
** HGStandaloneInventoryService and HGStandaloneAssetService do what their names say. They are region modules that allow access to inventory and assets for standalones, when the standalone user is out and about. In spirit, there is a lot in common between these modules and the REST inventory/asset plugin. Unfortunately, that plugin could not be used because it defines a completely different interface than that used by existing inventory and asset servers, and the access for the hypergrid must use a consistent interface.&lt;br /&gt;
&lt;br /&gt;
=== Class Diagram ===&lt;br /&gt;
&lt;br /&gt;
[[image:HypergridImplementation.jpg|600px|center|(Click on the image to enlarge)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Installing and Running Hypergrid ==&lt;br /&gt;
&lt;br /&gt;
=== Installing ===&lt;br /&gt;
&lt;br /&gt;
# Checkout OpenSim, prebuild and build as normal.&lt;br /&gt;
# &lt;br /&gt;
#* If you're running your opensim in grid mode with the UGAIM servers on other machines, you're done. If you're running in standalone and you want it to be network-able, or if you have your grid on loopback (127.0.0.1) change all the [Network] server addresses to &amp;lt;nowiki&amp;gt;&amp;quot;http://&amp;lt;external_host_name&amp;gt;:&amp;lt;http_port&amp;gt;&amp;quot;&amp;lt;/nowiki&amp;gt;. See below.&lt;br /&gt;
# Run opensim like this: &amp;lt;nowiki&amp;gt;[mono] OpenSim.exe -hypergrid=true&amp;lt;/nowiki&amp;gt;. To make sure the hypergrid is running type this on your console: '''link-region'''. If you don't hear anything back, the hypergrid is not properly installed.&lt;br /&gt;
'''[mono] OpenSim.exe -hypergrid=true'''&lt;br /&gt;
&lt;br /&gt;
Here is an example of the Network settings for a standalone:&lt;br /&gt;
&lt;br /&gt;
 [Network]&lt;br /&gt;
 http_listener_port = 9300&lt;br /&gt;
 remoting_listener_port = 9895&lt;br /&gt;
 &lt;br /&gt;
 grid_server_url = http://example.com:9300&lt;br /&gt;
 grid_send_key = null&lt;br /&gt;
 grid_recv_key = null&lt;br /&gt;
 &lt;br /&gt;
 user_server_url = http://example.com:9300&lt;br /&gt;
 user_send_key = null&lt;br /&gt;
 user_recv_key = null&lt;br /&gt;
 &lt;br /&gt;
 asset_server_url = http://example.com:9300&lt;br /&gt;
 inventory_server_url = http://example.com:9300&lt;br /&gt;
 messaging_server_url = http://example.com:9300&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Here is an example of the Network settings for a grided opensim:&lt;br /&gt;
&lt;br /&gt;
 [Network]&lt;br /&gt;
 http_listener_port = 9300&lt;br /&gt;
 remoting_listener_port = 9895&lt;br /&gt;
 &lt;br /&gt;
 grid_server_url = http://example.com:8001&lt;br /&gt;
 grid_send_key = null&lt;br /&gt;
 grid_recv_key = null&lt;br /&gt;
 &lt;br /&gt;
 user_server_url = http://example.com:8002&lt;br /&gt;
 user_send_key = null&lt;br /&gt;
 user_recv_key = null&lt;br /&gt;
 &lt;br /&gt;
 asset_server_url = http://example.com:8003&lt;br /&gt;
 inventory_server_url = http://example.com:8004&lt;br /&gt;
 ; Port 8005 reserved&lt;br /&gt;
 messaging_server_url = http://example.com:8006&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Important Note'''&lt;br /&gt;
&lt;br /&gt;
Make sure you have a 'home' set. If your home region doesn't exist, the hyperlink TPs may not work. To set your home, go to one of your local regions and &amp;quot;Set Home&amp;quot; from the viewer.&lt;br /&gt;
&lt;br /&gt;
=== Linking regions ===&lt;br /&gt;
&lt;br /&gt;
==== Method 1 ====&lt;br /&gt;
&lt;br /&gt;
On the console, type for example:&lt;br /&gt;
&lt;br /&gt;
link-region &amp;lt;Xloc&amp;gt; &amp;lt;Yloc&amp;gt; osl2.nac.uci.edu 9006 OSGrid Gateway&lt;br /&gt;
&lt;br /&gt;
* Use Xloc and Yloc that make sense to your world, i.e. close to your regions, but not adjacent.&lt;br /&gt;
* replace osl2.nac.uci.edu and 9006 with the domain name / ip address and the http_listener_port of the simulator where the region is runing you want to link to&lt;br /&gt;
&lt;br /&gt;
==== Method 2 ====&lt;br /&gt;
&lt;br /&gt;
There is also some initial support for reading the links from a xml file.&lt;br /&gt;
&lt;br /&gt;
Use the console command: link-region &amp;lt;URI&amp;gt; [&amp;lt;excludeList&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
The uri can be either the path of a local xml file or a xml document on a http server.&lt;br /&gt;
&lt;br /&gt;
The format of the xml file is:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Nini&amp;gt;&lt;br /&gt;
  &amp;lt;Section Name=&amp;quot;Region1&amp;quot;&amp;gt; &amp;lt;!-- can be any name but each section should have a different name and have no spaces --&amp;gt;&lt;br /&gt;
    &amp;lt;Key Name=&amp;quot;xloc&amp;quot; Value=&amp;quot;1002&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;Key Name=&amp;quot;yloc&amp;quot; Value=&amp;quot;1006&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;Key Name=&amp;quot;externalPort&amp;quot; Value=&amp;quot;9006&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;Key Name=&amp;quot;externalHostName&amp;quot; Value=&amp;quot;osl2.nac.uci.edu&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;Key Name=&amp;quot;localName&amp;quot; Value=&amp;quot;OSGrid-Gateway&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;Key Name=&amp;quot;real-xloc&amp;quot; Value=&amp;quot;10222&amp;quot;/&amp;gt; //optional field that gives the region's real location on its home grid&lt;br /&gt;
    &amp;lt;Key Name=&amp;quot;real-yloc&amp;quot; Value=&amp;quot;10265&amp;quot; /&amp;gt; //optional field that gives the region's real location on its home grid&lt;br /&gt;
  &amp;lt;/Section&amp;gt;&lt;br /&gt;
  &amp;lt;Section Name=&amp;quot;Region2&amp;quot;&amp;gt; &lt;br /&gt;
    ...&lt;br /&gt;
  &amp;lt;/Section&amp;gt;&lt;br /&gt;
  ...&lt;br /&gt;
 &amp;lt;/Nini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[Note] The section names can be anything you want, but they all should be different and have no spaces in the name.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ExcludeList:&lt;br /&gt;
&lt;br /&gt;
The exclude list is a single string paramater with the format: excludeList:&amp;lt;SectionName&amp;gt;[;&amp;lt;SectionName&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
This means that while reading from the xml file any sections that are listed in the excludeList will be ignored and no HyperGrid link created for them.&lt;br /&gt;
&lt;br /&gt;
This could allow, link lists to be created on a webserver that everyone could add their own regions to, and then they just make sure they add their own section name(s) to the exclude list on their own region(s). &lt;br /&gt;
&lt;br /&gt;
So for example, someone might create a editable online list for the up coming OpenSimulator's 2nd birthday. Which might look something like:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Nini&amp;gt;&lt;br /&gt;
  &amp;lt;Section Name=&amp;quot;OSGrid-Party&amp;quot;&amp;gt; &amp;lt;!-- can be any name but each section should have a different name and no spaces --&amp;gt;&lt;br /&gt;
    &amp;lt;Key Name=&amp;quot;xloc&amp;quot; Value=&amp;quot;1002&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;Key Name=&amp;quot;yloc&amp;quot; Value=&amp;quot;1006&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;Key Name=&amp;quot;externalPort&amp;quot; Value=&amp;quot;9006&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;Key Name=&amp;quot;externalHostName&amp;quot; Value=&amp;quot;osl2.nac.uci.edu&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;Key Name=&amp;quot;localName&amp;quot; Value=&amp;quot;OSGrid-Gateway&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/Section&amp;gt;&lt;br /&gt;
  &amp;lt;Section Name=&amp;quot;UCIGrid-Party&amp;quot;&amp;gt; &lt;br /&gt;
    ...&lt;br /&gt;
  &amp;lt;/Section&amp;gt;&lt;br /&gt;
 &amp;lt;/Nini&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I could then add my own region to the list with the section name &amp;quot;MW-Party&amp;quot;. Then when I startup that region that I want to be part of this hypergrid, I use the command: &amp;quot;link-region &amp;lt;URI of xml file&amp;gt; excludeList:MW-Party&amp;quot; &lt;br /&gt;
&lt;br /&gt;
This is so that my region doesn't try to create a hyper link to itself.&lt;br /&gt;
&lt;br /&gt;
==== Method 3 (dynamic) ====&lt;br /&gt;
&lt;br /&gt;
Starting in r8193, if you're in an HG-enabled region, you'll be able &lt;br /&gt;
to dynamically link sims, and TP there, in any one of these ways (and &lt;br /&gt;
probably more). All you need to know is the target adresse, e.g. from the&lt;br /&gt;
list below.&lt;br /&gt;
&lt;br /&gt;
 1) Type for example secondlife://ucigrid04.nacs.uci.edu:9007/ in the &lt;br /&gt;
 chat box, pull up the chat history and click on that link&lt;br /&gt;
&lt;br /&gt;
 2) Pull up the map and search for things like &lt;br /&gt;
 ucigrid04.nacs.uci.edu:9007&lt;br /&gt;
&lt;br /&gt;
 3) Using the embedded browser visit pages that have links like &lt;br /&gt;
 secondlife://ucigrid04.nacs.uci.edu:9007/ (there's one up at&lt;br /&gt;
 http://www.ics.uci.edu/~lopes/hypergrid/test.html)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Important Note'''&lt;br /&gt;
&lt;br /&gt;
Due to a viewer [https://jira.secondlife.com/browse/SVC-2941 bug], you can only TP between regions that are no more than 4096 cells apart in any dimension. What this means in practice is that if you want to link to OSGrid, you must have your own regions reachable from the (10,000; 10,000) point on the map, which is where OSGrid is centered. Place your regions somewhere in the 8,000s or the 12,000s.&lt;br /&gt;
&lt;br /&gt;
== Public Hypergrid Nodes ==&lt;br /&gt;
&lt;br /&gt;
Please see [[Public Hypergrid Nodes]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Hypergrid Lists ==&lt;br /&gt;
Please see [[Hypergrid Lists]].&lt;/div&gt;</summary>
		<author><name>MW2</name></author>	</entry>

	</feed>