public void NecessaryFilesToUpgradeTest() { string[] lines1 = { "First line", "Second line", "Third line" }; string[] lines2 = { "First line", "Second line", "NO" }; System.IO.Directory.CreateDirectory("asd"); System.IO.Directory.CreateDirectory(@"asd\ciao"); DirectoryInfo rinfo = new DirectoryInfo("asd"); System.IO.File.WriteAllLines(@"asd\uno.txt", lines1); System.IO.File.WriteAllLines(@"asd\ciao\due.txt", lines1); System.IO.File.WriteAllLines(@"asd\ciao\tre.txt", lines1); System.IO.File.WriteAllLines(@"asd\ciao\quattro.txt", lines1); FBVersionBuilder vb = new FBVersionBuilder(rinfo.FullName); FolderBackup.Shared.FBVersion vold = (FolderBackup.Shared.FBVersion)vb.generate(); System.IO.File.WriteAllLines(@"asd\ciao\cinque.txt", lines2); System.IO.File.WriteAllLines(@"asd\sei.txt", lines2); System.IO.File.WriteAllLines(@"asd\sette.txt", lines1); FolderBackup.Shared.FBVersion vnew = (FolderBackup.Shared.FBVersion)vb.generate(); FBVersion diff = vnew - vold; List<FBFile> fl = FBVersion.getNecessaryFilesToUpgrade(vnew, vold.fileList); Assert.AreEqual(fl.Count, 1); FBFileBuilder fb = new FBFileBuilder(@"asd\ciao\cinque.txt"); FBFile necessary = (FBFile) fb.generate(); Assert.AreEqual(fl[0], necessary); System.IO.Directory.Delete("asd", true); }
public void RevertWithFileCopy() { this.TestInitialize(); string[] lines = { "First line", "Second line", "Third line" }; System.IO.File.WriteAllLines(@"asd\ciao\tre.txt", lines); FBVersionBuilder vb = new FBVersionBuilder(rinfo.FullName); FolderBackup.Shared.FBVersion v = (FolderBackup.Shared.FBVersion)vb.generate(); SerializedVersion serV = new SerializedVersion(v.serialize()); server.newTransaction(serV); server.commit(); System.IO.File.Delete(@"asd\ciao\tre.txt"); vb = new FBVersionBuilder(rinfo.FullName); v = (FolderBackup.Shared.FBVersion)vb.generate(); serV = new SerializedVersion(v.serialize()); server.newTransaction(serV); server.commit(); UploadData ud = server.resetToPreviousVersion(1); UsefullMethods.ReceiveFile(ud.ip, ud.port, ud.token, @"asd\asd.zip"); String ignore; List<Instruction> instructionList = UsefullMethods.ExtractInstructions(@"asd\asd.zip", out ignore); Assert.IsTrue(instructionList.Count == 1); Assert.IsTrue(instructionList[0].cmd == InstructionType.COPY); Assert.IsTrue(instructionList[0].dst == @"ciao\tre.txt"); }
public void PersistAndDeserialize() { string[] lines = { "First line", "Second line", "Third line" }; System.IO.Directory.CreateDirectory("asd"); System.IO.Directory.CreateDirectory(@"asd\ciao"); DirectoryInfo rinfo = new DirectoryInfo("asd"); System.IO.File.WriteAllLines(@"asd\uno.txt", lines); System.IO.File.WriteAllLines(@"asd\ciao\due.txt", lines); FileInfo finfo = new FileInfo(@"asd\ciao\due.txt"); FBVersionBuilder vb = new FBVersionBuilder(rinfo.FullName); FolderBackup.Shared.FBVersion v = (FolderBackup.Shared.FBVersion)vb.generate(); Stream TestFileStream = File.Create("version.bin"); BinaryFormatter serializer = new BinaryFormatter(); serializer.Serialize(TestFileStream, v); TestFileStream.Close(); TestFileStream = File.OpenRead("version.bin"); BinaryFormatter deserializer = new BinaryFormatter(); FBVersion v2 = (FBVersion)deserializer.Deserialize(TestFileStream); TestFileStream.Close(); File.Delete("version.bin"); System.IO.Directory.Delete("asd", true); Assert.AreEqual(v2, v); }
public bool commit() { this.checkAuthentication(); this.checkTransactionIsEnabled(); FBVersionBuilder fvb = new FBVersionBuilder(this.ptransactDir.FullName); FBVersion actualVersion = (FBVersion)fvb.generate(); actualVersion.timestamp = inSyncVersion.timestamp; if (this.necessaryFiles.Count == 0) { Stream FileStream = File.Create(this.transactDir.FullName + @"\version.bin"); BinaryFormatter serializer = new BinaryFormatter(); serializer.Serialize(FileStream, this.inSyncVersion); FileStream.Close(); realFiles.add(this.uploadedFiles); FileStream = File.OpenWrite(this.user.rootDirectory + @"\files.bin"); serializer.Serialize(FileStream, realFiles); FileStream.Close(); this.uploadedFiles = null; this.transactDir = null; this.inSyncVersion = null; this.transactionEnabled = false; return true; } else throw new FaultException<ServiceErrorMessage>(new ServiceErrorMessage(ServiceErrorMessage.SYNCNOTTERMINATED)); }
public void TwoVersionsAreEquals() { string[] lines = { "First line", "Second line", "Third line" }; System.IO.Directory.CreateDirectory("asd"); System.IO.Directory.CreateDirectory(@"asd\ciao"); DirectoryInfo rinfo = new DirectoryInfo("asd"); System.IO.File.WriteAllLines(@"asd\uno.txt", lines); System.IO.File.WriteAllLines(@"asd\ciao\due.txt", lines); FileInfo finfo = new FileInfo(@"asd\ciao\due.txt"); FBVersionBuilder vb = new FBVersionBuilder(rinfo.FullName); FolderBackup.Shared.FBVersion v1 = (FolderBackup.Shared.FBVersion)vb.generate(); FolderBackup.Shared.FBVersion v2 = (FolderBackup.Shared.FBVersion)vb.generate(); Assert.AreEqual(v1, v2); System.IO.Directory.Delete("asd", true); }
public void DetectEqualVersionTest() { doTransaction(); server.commit(); FBVersionBuilder vb = new FBVersionBuilder(rinfo.FullName); FolderBackup.Shared.FBVersion v = (FolderBackup.Shared.FBVersion)vb.generate(); SerializedVersion serV = new SerializedVersion(v.serialize()); Assert.IsFalse(server.newTransaction(serV)); }
public void PersistenceTest() { TransactionCommitTest(); server = null; server = new Server.Server(); AuthenticationData ad = server.authStep1("test1"); token = server.authStep2(ad.token, "test1", AuthenticationPrimitives.hashPassword("test1", ad.salt, ad.token)); FBVersionBuilder vb = new FBVersionBuilder(rinfo.FullName); FolderBackup.Shared.FBVersion v = (FolderBackup.Shared.FBVersion)vb.generate(); SerializedVersion serV = new SerializedVersion(); serV.encodedVersion = v.serialize(); Assert.IsTrue(server.newTransaction(token, serV)); }
public void SyncFolder() { SyncEngine sync = SyncEngine.Instance(); sync.StartSync(); sync.WaitSync(); SerializedVersion[] sversions = server.getOldVersions(); Assert.IsTrue(sversions.Length == 1); FBVersion version = FBVersion.deserialize(sversions[0].encodedVersion); FBVersionBuilder vb = new FBVersionBuilder(path); FBVersion actVersion = (FBVersion) vb.generate(); Assert.IsTrue(actVersion.Equals(version)); sync.StartSync(); sync.WaitSync(); Assert.IsTrue(sversions.Length == 1); CleanUp(); }
public void RollbackTest() { FBVersionBuilder vb = new FBVersionBuilder(rinfo.FullName); FolderBackup.Shared.FBVersion v = (FolderBackup.Shared.FBVersion)vb.generate(); SerializedVersion serV = new SerializedVersion(); serV.encodedVersion = v.serialize(); Assert.IsTrue(server.newTransaction(token, serV)); byte[][] bfiles = server.getFilesToUpload(token); foreach (byte[] bf in bfiles) { FBFile f = FBFile.deserialize(bf); Assert.IsTrue(v.fileList.Contains(f)); } FBFile file = (FBFile)new FBFileBuilder(@"asd\uno.txt").generate(); string[] lines = { token + "First line", "Second line", "Third line" }; System.IO.File.WriteAllLines(@"asd\uno.txt", lines); FileStream fstream = new FileStream(@"asd\uno.txt", FileMode.Open, FileAccess.Read); Assert.AreEqual(server.uploadFile(fstream), file.hash); fstream.Close(); file = (FBFile)new FBFileBuilder(@"asd\due.txt").generate(); string[] lines1 = { token + "First line", "Second line", "Third lines" }; System.IO.File.WriteAllLines(@"asd\due.txt", lines1); fstream = new FileStream(@"asd\due.txt", FileMode.Open, FileAccess.Read); Assert.AreEqual(server.uploadFile(fstream), file.hash); fstream.Close(); Assert.IsTrue(server.rollback(token)); Assert.IsTrue(server.newTransaction(token, serV)); bfiles = server.getFilesToUpload(token); foreach (byte[] bf in bfiles) { FBFile f = FBFile.deserialize(bf); Assert.IsTrue(v.fileList.Contains(f)); } }
public void VersionBuilderGenerate() { string[] lines = { "First line", "Second line", "Third line" }; System.IO.Directory.CreateDirectory("asd"); System.IO.Directory.CreateDirectory(@"asd\ciao"); DirectoryInfo rinfo = new DirectoryInfo("asd"); System.IO.File.WriteAllLines(@"asd\uno.txt", lines); System.IO.File.WriteAllLines(@"asd\ciao\due.txt", lines); FileInfo finfo = new FileInfo(@"asd\ciao\due.txt"); FBVersionBuilder vb = new FBVersionBuilder(rinfo.FullName); FolderBackup.Shared.FBVersion v = (FolderBackup.Shared.FBVersion)vb.generate(); Assert.AreEqual(v.root.content.Count, (int)2); Assert.IsInstanceOfType(v.root.content["ciao"], v.root.GetType()); Assert.AreEqual(((FolderBackup.Shared.FBDirectory)v.root.content["ciao"]).content.Count, 1); Assert.AreEqual(((FolderBackup.Shared.FBFile)((FolderBackup.Shared.FBDirectory)v.root.content["ciao"]).content["due.txt"]).dimension, finfo.Length); Assert.AreEqual(((FolderBackup.Shared.FBDirectory)v.root.content["ciao"]).content["due.txt"].isEqualTo(v.root.content["uno.txt"]), true); System.IO.Directory.Delete("asd", true); }
private void doTransaction() { FBVersionBuilder vb = new FBVersionBuilder(rinfo.FullName); FolderBackup.Shared.FBVersion v = (FolderBackup.Shared.FBVersion)vb.generate(); SerializedVersion serV = new SerializedVersion(v.serialize()); Assert.IsTrue(server.newTransaction(serV)); byte[][] bfiles = server.getFilesToUpload(); foreach (byte[] bf in bfiles) { FBFile f = FBFile.deserialize(bf); Assert.IsTrue(v.fileList.Contains(f)); } FBFile file = (FBFile)new FBFileBuilder(@"asd\uno.txt").generate(); string[] lines = { "First line", "Second line", "Third line" }; System.IO.File.WriteAllLines(@"asd\uno.txt", lines); FileStream fstream = new FileStream(@"asd\uno.txt", FileMode.Open, FileAccess.Read); UploadData credential = server.uploadFile(); UsefullMethods.SendFile(credential.ip, credential.port, credential.token, fstream); //Assert.AreEqual(server.uploadFile(fstream), file.hash); //fstream.Close(); file = (FBFile)new FBFileBuilder(@"asd\due.txt").generate(); string[] lines1 = { "First line", "Second line", "Third lines" }; System.IO.File.WriteAllLines(@"asd\due.txt", lines1); fstream = new FileStream(@"asd\due.txt", FileMode.Open, FileAccess.Read); credential = server.uploadFile(); UsefullMethods.SendFile(credential.ip, credential.port, credential.token, fstream); }
private void TestInitialize() { server = new Server.Server(); AuthenticationData ad = server.authStep1("test1"); token = server.authStep2(ad.token, "test1", AuthenticationPrimitives.hashPassword("test1", ad.salt, ad.token)); CleanUp(); server = new Server.Server(); ad = server.authStep1("test1"); token = server.authStep2(ad.token, "test1", AuthenticationPrimitives.hashPassword("test1", ad.salt, ad.token)); string[] lines = { "First line", "Second line", "Third line" }; string[] lines1 = { "First line", "Second line", "Third lines" }; System.IO.Directory.CreateDirectory("asd"); System.IO.Directory.CreateDirectory(@"asd\ciao"); rinfo = new DirectoryInfo("asd"); System.IO.File.WriteAllLines(@"asd\uno.txt", lines); System.IO.File.WriteAllLines(@"asd\due.txt", lines1); System.IO.File.WriteAllLines(@"asd\ciao\due.txt", lines); FBVersionBuilder vb = new FBVersionBuilder(rinfo.FullName); FolderBackup.Shared.FBVersion v = (FolderBackup.Shared.FBVersion)vb.generate(); SerializedVersion serV = new SerializedVersion(v.serialize()); server.newTransaction(serV); byte[][] bfiles = server.getFilesToUpload(); FBFile file = (FBFile)new FBFileBuilder(@"asd\uno.txt").generate(); FileStream fstream = new FileStream(@"asd\uno.txt", FileMode.Open, FileAccess.Read); UploadData credential = server.uploadFile(); UsefullMethods.SendFile(credential.ip, credential.port, credential.token, fstream); fstream.Close(); file = (FBFile)new FBFileBuilder(@"asd\due.txt").generate(); fstream = new FileStream(@"asd\due.txt", FileMode.Open, FileAccess.Read); credential = server.uploadFile(); UsefullMethods.SendFile(credential.ip, credential.port, credential.token, fstream); Assert.IsTrue(server.commit()); }
private void initializeUser() { if (!File.Exists(this.user.rootDirectory + @"\files.bin")) //primo accesso { this.realFiles = new PhysicFilesList(); Stream FilesStream = File.OpenWrite(this.user.rootDirectory + @"\files.bin"); BinaryFormatter serializer = new BinaryFormatter(); serializer.Serialize(FilesStream, realFiles); FilesStream.Close(); this.user.rootDirectory.CreateSubdirectory(firstDirectory); FBVersionBuilder vb = new FBVersionBuilder(user.rootDirectory.FullName + @"\" + firstDirectory); FBVersion v = (FBVersion)vb.generate(); FilesStream = File.OpenWrite(this.user.rootDirectory.FullName + @"\" + firstDirectory + @"\version.bin"); serializer.Serialize(FilesStream, v); FilesStream.Close(); } else { Stream FilesStream1 = File.OpenRead(this.user.rootDirectory + @"\files.bin"); BinaryFormatter deserializer = new BinaryFormatter(); this.realFiles = (PhysicFilesList)deserializer.Deserialize(FilesStream1); FilesStream1.Close(); } }