public void WhenFileModificationMessages_ModeRemoved_AreSentByClient_TheyShouldBeFullyReceivedByServer() { _serverMessage = null; FileDescriptor[] descriptors = null; string originId = "Not Set"; using (ServerInstance server = new ServerInstance(_settings)) { server.MessageReceived += new EventHandler<ObviousCode.Interlace.BitTunnelLibrary.Events.MessageEventArgs>(server_MessageReceived); server.Connect(); while (!server.IsConnected) ; using (ClientInstance client = new ClientInstance(_settings)) { client.Connect(); originId = client.ConnectionDetails.InstanceId; descriptors = new List<FileDescriptor>() { FileDescriptor.Create(_existingFile1, true), FileDescriptor.Create(_existingFile2, true), FileDescriptor.Create(_existingFile3, true) }.ToArray(); _serverModificationMessage = null; client.RemoveFiles(descriptors); DateTime then = DateTime.Now; while (_serverModificationMessage == null && (DateTime.Now - then).TotalSeconds < 1) ; Assert.IsNotNull(_serverModificationMessage); Assert.AreEqual(descriptors[0].FileFullName, _serverModificationMessage.Modifications[0].FileFullName); Assert.AreEqual(descriptors[1].FileFullName, _serverModificationMessage.Modifications[1].FileFullName); Assert.AreEqual(descriptors[2].FileFullName, _serverModificationMessage.Modifications[2].FileFullName); //Assert.AreEqual(descriptors[0].FileId, _serverModificationMessage.Modifications[0].FileId); //Assert.AreEqual(descriptors[1].FileId, _serverModificationMessage.Modifications[1].FileId); //Assert.AreEqual(descriptors[2].FileId, _serverModificationMessage.Modifications[2].FileId); Assert.AreEqual(originId, _serverModificationMessage.Modifications[0].OriginId); Assert.AreEqual(originId, _serverModificationMessage.Modifications[1].OriginId); Assert.AreEqual(originId, _serverModificationMessage.Modifications[2].OriginId); Assert.AreEqual(FileModificationMode.Remove, _serverModificationMessage.Modifications[0].Mode); Assert.AreEqual(FileModificationMode.Remove, _serverModificationMessage.Modifications[1].Mode); Assert.AreEqual(FileModificationMode.Remove, _serverModificationMessage.Modifications[2].Mode); } } }
public void WhenFilesAddedLocally_AndRemovedLocally_ShouldBeRemovedFromLocalFiles() { using (ServerInstance server = new ServerInstance(_settings)) { server.Connect(); using (ClientInstance client = new ClientInstance(_settings)) { client.Connect(); client.AddFiles(_existingFiles); client.RemoveFiles(_existingFiles); Assert.AreEqual(0, client.LocalFiles.UniqueFileCount); Assert.AreEqual(0, client.LocalFiles.FileInstanceCount); } } }
public void WhenFirstClientConnectsToServer_AddsFiles_SecondClientAddsSameFiles_FirstClientRemovesOneFile_ClientsShouldHaveOneInstanceOfAllFiles() { using(ServerInstance server = new ServerInstance(_settings)) { server.Connect(); using(ClientInstance client = new ClientInstance(_settings, "Client 1")) { client.Connect(); client.FileListUpdateReceived+=new EventHandler<FileListModificationEventArgs>(client_FileListUpdated); client.AddFiles(_existingFiles); DateTime then = DateTime.Now; while (!_fileListUpdateReceived && (DateTime.Now - then).TotalSeconds < 1) ; Assert.IsTrue(_fileListUpdateReceived); client.FileListUpdateReceived -= new EventHandler<FileListModificationEventArgs>(client_FileListUpdated); _fileListUpdateReceived = false; using (ClientInstance client2 = new ClientInstance(_settings, "Client 2")) { client2.Connect(); client2.FileListUpdateReceived += new EventHandler<FileListModificationEventArgs>(client_FileListUpdated); client2.AddFiles(_existingFiles); then = DateTime.Now; while (!_fileListUpdateReceived && (DateTime.Now - then).TotalSeconds < 1) ; Assert.IsTrue(_fileListUpdateReceived); _fileListUpdateReceived = false; client.RemoveFiles( new FileDescriptor[] { _existingFiles[1] } ); then = DateTime.Now; while (!_fileListUpdateReceived && (DateTime.Now - then).TotalSeconds < 1) ; Assert.IsTrue(_fileListUpdateReceived); Assert.AreEqual(3, client2.AvailableFiles.UniqueFileCount); Assert.AreEqual(3, client2.AvailableFiles.FileInstanceCount); Assert.AreEqual(1, client2.AvailableFiles.CountOf(FileDescriptor.Create(_existingFile1))); Assert.AreEqual(1, client2.AvailableFiles.CountOf(FileDescriptor.Create(_existingFile2))); Assert.AreEqual(1, client2.AvailableFiles.CountOf(FileDescriptor.Create(_existingFile3))); //These should have been set by now, as client2 is sent file updates after client, however if race conditions still exist //add a second event handler for the file received on the first client and a second boolean to check Assert.AreEqual(3, client.AvailableFiles.UniqueFileCount); Assert.AreEqual(3, client.AvailableFiles.FileInstanceCount); Assert.AreEqual(1, client.AvailableFiles.CountOf(FileDescriptor.Create(_existingFile1))); Assert.AreEqual(1, client.AvailableFiles.CountOf(FileDescriptor.Create(_existingFile2))); Assert.AreEqual(1, client.AvailableFiles.CountOf(FileDescriptor.Create(_existingFile3))); } } } }
public void WhenSecondClientTriesToRemoveFirstClientFiles_ShouldHaveNoEffect() { using (ServerInstance server = new ServerInstance(_settings)) { server.Connect(); using (ClientInstance client = new ClientInstance(_settings, "Test Client 1")) { client.FileListUpdateReceived += new EventHandler<FileListModificationEventArgs>(client_FileListUpdated); client.Connect(); client.AddFiles(_existingFiles); DateTime then = DateTime.Now; while (!_fileListUpdateReceived && (DateTime.Now - then).TotalSeconds < 1) ; Assert.IsTrue(_fileListUpdateReceived); Assert.AreEqual(3, client.AvailableFiles.UniqueFileCount); _fileListUpdateReceived = false; client.FileListUpdateReceived -= new EventHandler<FileListModificationEventArgs>(client_FileListUpdated); using (ClientInstance client2 = new ClientInstance(_settings, "Test Client 2")) { client2.FullFileListReceived +=new EventHandler<FileListEventArgs>(client_FullFileListReceived); client2.FileListUpdateReceived +=new EventHandler<FileListModificationEventArgs>(client_FileListUpdated); client2.Connect(); then = DateTime.Now; while (!_fileListReceived && (DateTime.Now - then).TotalSeconds < 1) ; Assert.IsTrue(_fileListReceived); Assert.AreEqual(3, client2.AvailableFiles.UniqueFileCount); _fileListReceived = false; client2.RemoveFiles(_existingFiles); then = DateTime.Now; while (!_fileListUpdateReceived && (DateTime.Now - then).TotalSeconds < 1) ; Assert.IsTrue(_fileListUpdateReceived); Assert.AreEqual(3, client2.AvailableFiles.UniqueFileCount); Assert.IsTrue(client2.AvailableFiles.Contains(_existingFiles)); } } } }
public void WhenFilesAddedLocally_AndSomeRemovedLocally_OnlyRemovedFilesShouldBeRemovedFromLocalFiles() { using (ServerInstance server = new ServerInstance(_settings)) { server.Connect(); using (ClientInstance client = new ClientInstance(_settings)) { client.Connect(); client.AddFiles(_existingFiles); client.RemoveFiles(new FileDescriptor[]{_existingFiles[0], _existingFiles[2]} ); Assert.AreEqual(1, client.LocalFiles.UniqueFileCount); Assert.AreEqual(1, client.LocalFiles.FileInstanceCount); Assert.IsTrue(client.LocalFiles.Contains(_existingFiles[1])); } } }