Merge branch 'master' of ssh://melanie@opensimulator.org/var/git/opensim

remotes/origin/0.6.7-post-fixes
Melanie 2009-09-03 21:04:06 +01:00
commit 5c2bf97bf2
16 changed files with 114 additions and 55 deletions

View File

@ -34,51 +34,55 @@
<setenv name="MONO_THREADS_PER_CPU" value="100" /> <setenv name="MONO_THREADS_PER_CPU" value="100" />
<!-- Unit Test Assembly --> <!-- Unit Test Assembly -->
<!-- if you want to add more unit tests it's important that you add
the assembly here as an exec, and you add the fail clause later.
This lets all the unit tests run and tells you if they fail at the
end, instead of stopping short -->
<exec program="${nunitcmd}" failonerror="false" resultproperty="testresult.opensim.framework.tests"> <exec program="${nunitcmd}" failonerror="false" resultproperty="testresult.opensim.framework.tests">
<arg value="./bin/OpenSim.Framework.Tests.dll" /> <arg value="./bin/OpenSim.Framework.Tests.dll" />
</exec> </exec>
<exec program="${nunitcmd}" failonerror="false" resultproperty="testresult.opensim.framework.communications.tests"> <exec program="${nunitcmd}" failonerror="false" resultproperty="testresult.opensim.framework.communications.tests">
<arg value="./bin/OpenSim.Framework.Communications.Tests.dll" /> <arg value="./bin/OpenSim.Framework.Communications.Tests.dll" />
</exec> </exec>
<exec program="${nunitcmd}" failonerror="false" resultproperty="testresult.opensim.framework.servers.tests"> <exec program="${nunitcmd}" failonerror="false" resultproperty="testresult.opensim.framework.servers.tests">
<arg value="./bin/OpenSim.Framework.Servers.Tests.dll" /> <arg value="./bin/OpenSim.Framework.Servers.Tests.dll" />
</exec> </exec>
<exec program="${nunitcmd}" failonerror="false" resultproperty="testresult.opensim.region.clientstack.lindenudp.tests"> <exec program="${nunitcmd}" failonerror="false" resultproperty="testresult.opensim.region.clientstack.lindenudp.tests">
<arg value="./bin/OpenSim.Region.ClientStack.LindenUDP.Tests.dll" /> <arg value="./bin/OpenSim.Region.ClientStack.LindenUDP.Tests.dll" />
</exec> </exec>
<exec program="${nunitcmd}" failonerror="false" resultproperty="testresult.opensim.region.scriptengine.tests"> <exec program="${nunitcmd}" failonerror="false" resultproperty="testresult.opensim.region.scriptengine.tests">
<arg value="./bin/OpenSim.Region.ScriptEngine.Tests.dll" /> <arg value="./bin/OpenSim.Region.ScriptEngine.Tests.dll" />
</exec> </exec>
<exec program="${nunitcmd}" failonerror="false" resultproperty="testresult.opensim.region.coremodules.tests"> <exec program="${nunitcmd}" failonerror="false" resultproperty="testresult.opensim.region.coremodules.tests">
<arg value="./bin/OpenSim.Region.CoreModules.Tests.dll" /> <arg value="./bin/OpenSim.Region.CoreModules.Tests.dll" />
</exec> </exec>
<exec program="${nunitcmd}" failonerror="false" resultproperty="testresult.opensim.region.framework.tests"> <exec program="${nunitcmd}" failonerror="false" resultproperty="testresult.opensim.region.framework.tests">
<arg value="./bin/OpenSim.Region.Framework.Tests.dll" /> <arg value="./bin/OpenSim.Region.Framework.Tests.dll" />
</exec> </exec>
<exec program="${nunitcmd}" failonerror="false" resultproperty="testresult.opensim.data.sqlite.tests"> <exec program="${nunitcmd}" failonerror="false" resultproperty="testresult.opensim.data.sqlite.tests">
<arg value="./bin/OpenSim.Data.SQLite.Tests.dll" /> <arg value="./bin/OpenSim.Data.SQLite.Tests.dll" />
</exec> </exec>
<exec program="${nunitcmd}" failonerror="false" resultproperty="testresult.opensim.data.mysql.tests"> <exec program="${nunitcmd}" failonerror="false" resultproperty="testresult.opensim.data.mysql.tests">
<arg value="./bin/OpenSim.Data.MySQL.Tests.dll" /> <arg value="./bin/OpenSim.Data.MySQL.Tests.dll" />
</exec> </exec>
<fail message="Failures reported in unit tests." unless="${int::parse(testresult.opensim.framework.tests)==0}" /> <fail message="Failures reported in unit tests." unless="${int::parse(testresult.opensim.framework.communications.tests)==0}" />
<fail message="Failures reported in unit tests." unless="${int::parse(testresult.opensim.framework.communications.tests)==0}" /> <fail message="Failures reported in unit tests." unless="${int::parse(testresult.opensim.framework.tests)==0}" />
<fail message="Failures reported in unit tests." unless="${int::parse(testresult.opensim.framework.servers.tests)==0}" /> <fail message="Failures reported in unit tests." unless="${int::parse(testresult.opensim.data.sqlite.tests)==0}" />
<fail message="Failures reported in unit tests." unless="${int::parse(testresult.opensim.region.clientstack.lindenudp.tests)==0}" /> <fail message="Failures reported in unit tests." unless="${int::parse(testresult.opensim.data.mysql.tests)==0}" />
<fail message="Failures reported in unit tests." unless="${int::parse(testresult.opensim.region.scriptengine.tests)==0}" /> <fail message="Failures reported in unit tests." unless="${int::parse(testresult.opensim.region.framework.tests)==0}" />
<fail message="Failures reported in unit tests." unless="${int::parse(testresult.opensim.region.coremodules.tests)==0}" /> <fail message="Failures reported in unit tests." unless="${int::parse(testresult.opensim.region.coremodules.tests)==0}" />
<fail message="Failures reported in unit tests." unless="${int::parse(testresult.opensim.region.framework.tests)==0}" /> <fail message="Failures reported in unit tests." unless="${int::parse(testresult.opensim.region.clientstack.lindenudp.tests)==0}" />
<fail message="Failures reported in unit tests." unless="${int::parse(testresult.opensim.data.sqlite.tests)==0}" /> <fail message="Failures reported in unit tests." unless="${int::parse(testresult.opensim.region.scriptengine.tests)==0}" />
<fail message="Failures reported in unit tests." unless="${int::parse(testresult.opensim.data.mysql.tests)==0}" /> <fail message="Failures reported in unit tests." unless="${int::parse(testresult.opensim.framework.servers.tests)==0}" />
</target> </target>

View File

@ -1,4 +1,14 @@
NANT = $(shell if test "$$EMACS" = "t" ; then echo "nant"; else echo "./nant-color"; fi) # hey, emacs! this is a -*- makefile -*-
#
# OpenSim makefile
#
RUBY = $(strip $(shell which ruby 2>/dev/null))
ifeq ($(RUBY),)
NANT = nant
else
NANT = $(shell if test "$$EMACS" = "t" ; then echo "nant"; else echo "./nant-color"; fi)
endif
all: prebuild all: prebuild
# @export PATH=/usr/local/bin:$(PATH) # @export PATH=/usr/local/bin:$(PATH)
@ -14,7 +24,7 @@ prebuild:
clean: clean:
# @export PATH=/usr/local/bin:$(PATH) # @export PATH=/usr/local/bin:$(PATH)
${NANT} clean -${NANT} clean
test: prebuild test: prebuild
${NANT} test ${NANT} test

View File

@ -210,6 +210,7 @@ namespace OpenSim.Data.MSSQL
{ {
foreach (SceneObjectPart objectPart in allPrimsWithInventory) foreach (SceneObjectPart objectPart in allPrimsWithInventory)
{ {
command.Parameters.Clear();
command.Parameters.Add(_Database.CreateParameter("@PrimID", objectPart.UUID)); command.Parameters.Add(_Database.CreateParameter("@PrimID", objectPart.UUID));
List<TaskInventoryItem> inventory = new List<TaskInventoryItem>(); List<TaskInventoryItem> inventory = new List<TaskInventoryItem>();

View File

@ -1169,5 +1169,27 @@ namespace OpenSim.Framework
return found.ToArray(); return found.ToArray();
} }
#region FireAndForget Threading Pattern
public static void FireAndForget(System.Threading.WaitCallback callback)
{
callback.BeginInvoke(null, EndFireAndForget, callback);
}
public static void FireAndForget(System.Threading.WaitCallback callback, object obj)
{
callback.BeginInvoke(obj, EndFireAndForget, callback);
}
private static void EndFireAndForget(IAsyncResult ar)
{
System.Threading.WaitCallback callback = (System.Threading.WaitCallback)ar.AsyncState;
callback.EndInvoke(ar);
ar.AsyncWaitHandle.Close();
}
#endregion FireAndForget Threading Pattern
} }
} }

View File

@ -199,6 +199,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver
InventoryFolderImpl inventoryFolder = null; InventoryFolderImpl inventoryFolder = null;
InventoryItemBase inventoryItem = null; InventoryItemBase inventoryItem = null;
/*
if (!m_userInfo.HasReceivedInventory) if (!m_userInfo.HasReceivedInventory)
{ {
// If the region server has access to the user admin service (by which users are created), // If the region server has access to the user admin service (by which users are created),
@ -220,13 +221,15 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver
m_userInfo.FetchInventory(); m_userInfo.FetchInventory();
} }
} }
*/
bool foundStar = false; bool foundStar = false;
// Eliminate double slashes and any leading / on the path. This might be better done within InventoryFolderImpl // Eliminate double slashes and any leading / on the path. This might be better done within InventoryFolderImpl
// itself (possibly at a small loss in efficiency). // itself (possibly at a small loss in efficiency).
string[] components string[] components
= m_invPath.Split(new string[] { InventoryFolderImpl.PATH_DELIMITER }, StringSplitOptions.RemoveEmptyEntries); = m_invPath.Split(
new string[] { InventoryFolderImpl.PATH_DELIMITER }, StringSplitOptions.RemoveEmptyEntries);
int maxComponentIndex = components.Length - 1; int maxComponentIndex = components.Length - 1;

View File

@ -64,6 +64,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver
/// </value> /// </value>
private Dictionary<UUID, Scene> m_scenes = new Dictionary<UUID, Scene>(); private Dictionary<UUID, Scene> m_scenes = new Dictionary<UUID, Scene>();
private Scene m_aScene; private Scene m_aScene;
/// <value> /// <value>
/// The comms manager we will use for all comms requests /// The comms manager we will use for all comms requests
/// </value> /// </value>
@ -110,8 +111,30 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver
InventoryArchiveSaved handlerInventoryArchiveSaved = OnInventoryArchiveSaved; InventoryArchiveSaved handlerInventoryArchiveSaved = OnInventoryArchiveSaved;
if (handlerInventoryArchiveSaved != null) if (handlerInventoryArchiveSaved != null)
handlerInventoryArchiveSaved(succeeded, userInfo, invPath, saveStream, reportedException); handlerInventoryArchiveSaved(succeeded, userInfo, invPath, saveStream, reportedException);
}
public void ArchiveInventory(string firstName, string lastName, string invPath, Stream saveStream)
{
if (m_scenes.Count > 0)
{
CachedUserInfo userInfo = GetUserInfo(firstName, lastName);
if (userInfo != null)
new InventoryArchiveWriteRequest(this, userInfo, invPath, saveStream).Execute();
}
} }
public void ArchiveInventory(string firstName, string lastName, string invPath, string savePath)
{
if (m_scenes.Count > 0)
{
CachedUserInfo userInfo = GetUserInfo(firstName, lastName);
if (userInfo != null)
new InventoryArchiveWriteRequest(this, userInfo, invPath, savePath).Execute();
}
}
public void DearchiveInventory(string firstName, string lastName, string invPath, Stream loadStream) public void DearchiveInventory(string firstName, string lastName, string invPath, Stream loadStream)
{ {
if (m_scenes.Count > 0) if (m_scenes.Count > 0)
@ -125,18 +148,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver
UpdateClientWithLoadedNodes(userInfo, request.Execute()); UpdateClientWithLoadedNodes(userInfo, request.Execute());
} }
} }
} }
public void ArchiveInventory(string firstName, string lastName, string invPath, Stream saveStream)
{
if (m_scenes.Count > 0)
{
CachedUserInfo userInfo = GetUserInfo(firstName, lastName);
if (userInfo != null)
new InventoryArchiveWriteRequest(this, userInfo, invPath, saveStream).Execute();
}
}
public void DearchiveInventory(string firstName, string lastName, string invPath, string loadPath) public void DearchiveInventory(string firstName, string lastName, string invPath, string loadPath)
{ {
@ -151,18 +163,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver
UpdateClientWithLoadedNodes(userInfo, request.Execute()); UpdateClientWithLoadedNodes(userInfo, request.Execute());
} }
} }
} }
public void ArchiveInventory(string firstName, string lastName, string invPath, string savePath)
{
if (m_scenes.Count > 0)
{
CachedUserInfo userInfo = GetUserInfo(firstName, lastName);
if (userInfo != null)
new InventoryArchiveWriteRequest(this, userInfo, invPath, savePath).Execute();
}
}
/// <summary> /// <summary>
/// Load inventory from an inventory file archive /// Load inventory from an inventory file archive

View File

@ -272,7 +272,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Asset
if (asset != null) if (asset != null)
{ {
handler.BeginInvoke(id, sender, asset, null, null); Util.FireAndForget(delegate { handler(id, sender, asset); });
return true; return true;
} }

View File

@ -211,7 +211,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Asset
if (asset != null) if (asset != null)
{ {
handler.BeginInvoke(id, sender, asset, null, null); Util.FireAndForget(delegate { handler(id, sender, asset); });
return true; return true;
} }
@ -219,8 +219,8 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Asset
{ {
if ((a != null) && (m_Cache != null)) if ((a != null) && (m_Cache != null))
m_Cache.Cache(a); m_Cache.Cache(a);
handler.BeginInvoke(assetID, s, a, null, null); Util.FireAndForget(delegate { handler(assetID, s, a); });
}); });
} }

View File

@ -457,6 +457,8 @@ namespace OpenSim.Region.Framework.Scenes
void SendInventoryComplete(IAsyncResult iar) void SendInventoryComplete(IAsyncResult iar)
{ {
SendInventoryDelegate d = (SendInventoryDelegate)iar.AsyncState;
d.EndInvoke(iar);
} }
/// <summary> /// <summary>
@ -622,6 +624,8 @@ namespace OpenSim.Region.Framework.Scenes
private void PurgeFolderCompleted(IAsyncResult iar) private void PurgeFolderCompleted(IAsyncResult iar)
{ {
PurgeFolderDelegate d = (PurgeFolderDelegate)iar.AsyncState;
d.EndInvoke(iar);
} }
} }
} }

View File

@ -177,7 +177,7 @@ namespace OpenSim.Services.Connectors
} }
else else
{ {
handler.BeginInvoke(id, sender, asset, null, null); Util.FireAndForget(delegate { handler(id, sender, asset); });
} }
return true; return true;

View File

@ -461,6 +461,8 @@ namespace OpenSim.Services.Connectors
private void MoveItemsCompleted(IAsyncResult iar) private void MoveItemsCompleted(IAsyncResult iar)
{ {
MoveItemsDelegate d = (MoveItemsDelegate)iar.AsyncState;
d.EndInvoke(iar);
} }
public bool MoveItems(string userID, List<InventoryItemBase> items, UUID sessionID) public bool MoveItems(string userID, List<InventoryItemBase> items, UUID sessionID)

View File

@ -232,7 +232,7 @@ namespace OpenSim.Services.InventoryService
m_log.WarnFormat("[INVENTORY SERVICE]: User {0} inventory not available", userID); m_log.WarnFormat("[INVENTORY SERVICE]: User {0} inventory not available", userID);
} }
callback.BeginInvoke(folders, items, null, null); Util.FireAndForget(delegate { callback(folders, items); });
} }
public InventoryCollection GetFolderContent(UUID userID, UUID folderID) public InventoryCollection GetFolderContent(UUID userID, UUID folderID)

View File

@ -1,7 +1,7 @@
Welcome to OpenSim! Welcome to OpenSim!
Version 0.6.x Version 0.6.x
== OVERVIEW == == OVERVIEW ==
OpenSim is a BSD Licensed Open Source project to develop a functioning OpenSim is a BSD Licensed Open Source project to develop a functioning
@ -90,4 +90,3 @@ project can always be found at http://opensimulator.org.
Thanks for trying OpenSim, we hope it is a pleasant experience. Thanks for trying OpenSim, we hope it is a pleasant experience.

View File

@ -135,3 +135,4 @@ nunit-console2 OpenSim.Framework.Tests.dll (on linux)
nunit-console OpenSim.Framework.Tests.dll (on windows) nunit-console OpenSim.Framework.Tests.dll (on windows)
For more information on testing contact the autor of this testing readme: Daedius Moskvitch ( daedius @@@@ daedius com) For more information on testing contact the autor of this testing readme: Daedius Moskvitch ( daedius @@@@ daedius com)

View File

@ -1 +1,14 @@
[Startup] [Startup]
; Set here or use the -user command-line switch
;user = Test
; Set here or use the -host command-line switch
;host = localhost
; Set here or use the -port command-line switch
;port = 8003
; Set here or use the -pass command-line switch
; Please be aware that this is not secure since the password is in the clear
; we recommend the use of -pass wherever possible
;pass = secret

View File

@ -1,5 +1,4 @@
#!/usr/bin/ruby #!/usr/bin/env ruby
def main def main
IO.popen("nant #{ARGV.join(' ')}") { |pipe| IO.popen("nant #{ARGV.join(' ')}") { |pipe|