/// <summary> /// Run the automated tests /// </summary> public override void ExecuteBuild() { // Get all the shared directories DirectoryReference RootDir = new DirectoryReference(CommandUtils.CmdEnv.LocalRoot); DirectoryReference LocalDir = DirectoryReference.Combine(RootDir, "Engine", "Saved", "TestTempStorage-Local"); CommandUtils.CreateDirectory_NoExceptions(LocalDir.FullName); CommandUtils.DeleteDirectoryContents(LocalDir.FullName); DirectoryReference SharedDir = DirectoryReference.Combine(RootDir, "Engine", "Saved", "TestTempStorage-Shared"); CommandUtils.CreateDirectory_NoExceptions(SharedDir.FullName); CommandUtils.DeleteDirectoryContents(SharedDir.FullName); DirectoryReference WorkingDir = DirectoryReference.Combine(RootDir, "Engine", "Saved", "TestTempStorage-Working"); CommandUtils.CreateDirectory_NoExceptions(WorkingDir.FullName); CommandUtils.DeleteDirectoryContents(WorkingDir.FullName); // Create the temp storage object TempStorage TempStore = new TempStorage(WorkingDir, LocalDir, SharedDir, true); // Create a working directory, and copy some source files into it DirectoryReference SourceDir = DirectoryReference.Combine(RootDir, "Engine", "Source", "Runtime"); if (!CommandUtils.CopyDirectory_NoExceptions(SourceDir.FullName, WorkingDir.FullName, true)) { throw new AutomationException("Couldn't copy {0} to {1}", SourceDir.FullName, WorkingDir.FullName); } // Save the default output Dictionary <FileReference, DateTime> DefaultOutput = SelectFiles(WorkingDir, 'a', 'f'); TempStore.Archive("TestNode", null, DefaultOutput.Keys.ToArray(), false); Dictionary <FileReference, DateTime> NamedOutput = SelectFiles(WorkingDir, 'g', 'i'); TempStore.Archive("TestNode", "NamedOutput", NamedOutput.Keys.ToArray(), true); // Check both outputs are still ok TempStorageManifest DefaultManifest = TempStore.Retreive("TestNode", null); CheckManifest(WorkingDir, DefaultManifest, DefaultOutput); TempStorageManifest NamedManifest = TempStore.Retreive("TestNode", "NamedOutput"); CheckManifest(WorkingDir, NamedManifest, NamedOutput); // Delete local temp storage and the working directory and try again CommandUtils.Log("Clearing local folders..."); CommandUtils.DeleteDirectoryContents(WorkingDir.FullName); CommandUtils.DeleteDirectoryContents(LocalDir.FullName); // First output should fail CommandUtils.Log("Checking default manifest is now unavailable..."); bool bGotManifest = false; try { TempStore.Retreive("TestNode", null); } catch { bGotManifest = false; } if (bGotManifest) { throw new AutomationException("Did not expect shared temp storage manifest to exist"); } // Second one should be fine TempStorageManifest NamedManifestFromShared = TempStore.Retreive("TestNode", "NamedOutput"); CheckManifest(WorkingDir, NamedManifestFromShared, NamedOutput); }