* Write a simple archive loading test which doesn't actually do any testing yet apart from not blow up

0.6.3-post-fixes
Justin Clarke Casey 2009-01-23 20:38:44 +00:00
parent bd2c345e56
commit dbd2b45233
5 changed files with 43 additions and 12 deletions

View File

@ -41,16 +41,12 @@ namespace OpenSim.Framework.Communications.Cache
/// <summary> /// <summary>
/// Manages local cache of assets and their sending to viewers. /// Manages local cache of assets and their sending to viewers.
/// </summary>
/// ///
/// This class actually encapsulates two largely separate mechanisms. One mechanism fetches assets either /// This class actually encapsulates two largely separate mechanisms. One mechanism fetches assets either
/// synchronously or async and passes the data back to the requester. The second mechanism fetches assets and /// synchronously or async and passes the data back to the requester. The second mechanism fetches assets and
/// sends packetised data directly back to the client. The only point where they meet is AssetReceived() and /// sends packetised data directly back to the client. The only point where they meet is AssetReceived() and
/// AssetNotFound(), which means they do share the same asset and texture caches. /// AssetNotFound(), which means they do share the same asset and texture caches.I agr
///
/// TODO: Assets in this cache are effectively immortal (they are never disposed of through old age).
/// This is not a huge problem at the moment since other memory use usually dwarfs that used by assets
/// but it's something to bear in mind.
/// </summary>
public class AssetCache : IAssetReceiver public class AssetCache : IAssetReceiver
{ {
protected ICache m_memcache = new SimpleMemoryCache(); protected ICache m_memcache = new SimpleMemoryCache();

View File

@ -277,6 +277,17 @@ namespace OpenSim.Region.Environment.Modules.World.Archiver
m_scene.AssetCache.AddAsset(asset); m_scene.AssetCache.AddAsset(asset);
/**
* Create layers on decode for image assets. This is likely to significantly increase the time to load archives so
* it might be best done when dearchive takes place on a separate thread
if (asset.Type=AssetType.Texture)
{
IJ2KDecoder cacheLayerDecode = scene.RequestModuleInterface<IJ2KDecoder>();
if (cacheLayerDecode != null)
cacheLayerDecode.syncdecode(asset.FullID, asset.Data);
}
*/
return true; return true;
} }
else else

View File

@ -88,7 +88,7 @@ namespace OpenSim.Region.Environment.Modules.World.Archiver
TarArchiveWriter archive = new TarArchiveWriter(); TarArchiveWriter archive = new TarArchiveWriter();
// Write out control file // Write out control file
archive.AddFile(ArchiveConstants.CONTROL_FILE_PATH, CreateControlFile()); archive.AddFile(ArchiveConstants.CONTROL_FILE_PATH, Create0p2ControlFile());
// Write out region settings // Write out region settings
string settingsPath = String.Format("{0}{1}.xml", ArchiveConstants.SETTINGS_PATH, m_regionInfo.RegionName); string settingsPath = String.Format("{0}{1}.xml", ArchiveConstants.SETTINGS_PATH, m_regionInfo.RegionName);
@ -129,10 +129,10 @@ namespace OpenSim.Region.Environment.Modules.World.Archiver
} }
/// <summary> /// <summary>
/// Create the control file for this archive /// Create the control file for a 0.2 version archive
/// </summary> /// </summary>
/// <returns></returns> /// <returns></returns>
protected string CreateControlFile() public static string Create0p2ControlFile()
{ {
StringWriter sw = new StringWriter(); StringWriter sw = new StringWriter();
XmlTextWriter xtw = new XmlTextWriter(sw); XmlTextWriter xtw = new XmlTextWriter(sw);

View File

@ -32,7 +32,7 @@ using System.Text;
//using System.Reflection; //using System.Reflection;
//using log4net; //using log4net;
namespace OpenSim.Region.Environment namespace OpenSim.Region.Environment.Modules.World.Archiver
{ {
/// <summary> /// <summary>
/// Temporary code to produce a tar archive in tar v7 format /// Temporary code to produce a tar archive in tar v7 format

View File

@ -40,7 +40,7 @@ namespace OpenSim.Region.Environment.Modules.World.Archiver.Tests
public class ArchiverTests public class ArchiverTests
{ {
/// <summary> /// <summary>
/// Test saving a V0.2 OpenSim Region Archive. Does not yet do what it says on the tin /// Test saving a V0.2 OpenSim Region Archive.
/// </summary> /// </summary>
[Test] [Test]
public void TestSaveOarV0p2() public void TestSaveOarV0p2()
@ -76,5 +76,29 @@ namespace OpenSim.Region.Environment.Modules.World.Archiver.Tests
// TODO: Test presence of more files and contents of files. // TODO: Test presence of more files and contents of files.
} }
/// <summary>
/// Test loading a V0.2 OpenSim Region Archive. Does not yet do what it says on the tin.
/// </summary>
[Test]
public void TestLoadOarV0p2()
{
MemoryStream archiveWriteStream = new MemoryStream();
TarArchiveWriter tar = new TarArchiveWriter();
tar.AddFile(ArchiveConstants.CONTROL_FILE_PATH, ArchiveWriteRequestExecution.Create0p2ControlFile());
tar.WriteTar(archiveWriteStream);
MemoryStream archiveReadStream = new MemoryStream(archiveWriteStream.ToArray());
ArchiverModule archiverModule = new ArchiverModule();
Scene scene = SceneSetupHelpers.SetupScene();
SceneSetupHelpers.SetupSceneModules(scene, archiverModule);
archiverModule.DearchiveRegion(archiveReadStream);
// TODO: Okay, so nothing is tested yet apart from the fact that it doesn't blow up
}
} }
} }