public void PullTest() { ReadResponseMessage readResponse = new ReadResponseMessage(); readResponse.IsPasswordCorrect = true; readResponse.CurrentServerTimeUtc = new DateTime(2012, 1, 23); readResponse.Data = new byte[] { 0xaa, 0xbb }; MockFolderUnpacker folderUnpacker = new MockFolderUnpacker(); using (Stream responseStream = ServerResponseToStream(readResponse)) { FilePuller filePuller = new FilePuller(folderUnpacker, "the_r1ght_passw0rd"); const string destinationFolderExpected = @"c:\pulledfiles\"; filePuller.Pull(responseStream, destinationFolderExpected); Assert.AreEqual(destinationFolderExpected, folderUnpacker.LastDestinationFolder); Assert.AreEqual(readResponse.CurrentServerTimeUtc, filePuller.LastPullTime); Assert.IsTrue(Util.ArraysEqual <byte>(new byte[] { 0xaa, 0xbb }, folderUnpacker.LastPackedData)); } }
private void VerifyPasswordResult(string correctPassword, string suppliedPassword, bool expectPasswordIsCorrect) { ReadRequestMessage readRequest = new ReadRequestMessage(new DateTime(0), suppliedPassword); using (BookmarkableStream clientStream = ClientRequestToStream(readRequest)) { MockNetworkConnection networkConnection = new MockNetworkConnection(clientStream); MockFolderPackager mockFolderPackager = new MockFolderPackager(); MockClock serverClock = new MockClock(new DateTime(2007, 5, 25, 15, 27, 03)); RequestListener folderMonitor = new RequestListener(networkConnection, mockFolderPackager, serverClock, @"c:\fakepath\fakedir", correctPassword); folderMonitor.ProcessNextRequest(); clientStream.ResetToBookmark(); FarmerMessageSerializer deserializer = new FarmerMessageSerializer(); ReadResponseMessage readResponse = (ReadResponseMessage)deserializer.Deserialize(clientStream); Assert.AreEqual(expectPasswordIsCorrect, readResponse.IsPasswordCorrect); if (expectPasswordIsCorrect) { Assert.AreEqual(serverClock.GetCurrentTimeUtc(), readResponse.CurrentServerTimeUtc); Assert.IsNotNull(readResponse.Data); } else { Assert.IsNull(readResponse.Data); } } }
private Stream ServerResponseToStream(ReadResponseMessage responseMessage) { ReadingStream responseStream = new ReadingStream(); FarmerMessageSerializer serializer = new FarmerMessageSerializer(); serializer.Serialize(responseStream, responseMessage); responseStream.Seek(0, SeekOrigin.Begin); responseStream.StopProcessingWrites(); return(responseStream); }
/// <summary> /// Reads the values for one or more attributes. /// </summary> public ReadResponseMessage Read(ReadMessage request) { try { lock (m_lock) { // verify that the session is still valid. VerifySession(request.RequestHeader, false); // process each attribute. ListOfDataValue results = new ListOfDataValue(); ListOfDiagnosticInfo diagnosticInfos = new ListOfDiagnosticInfo(); for (int ii = 0; ii < request.NodesToRead.Count; ii++) { DataValue result = new DataValue(); DiagnosticInfo diagnosticInfo = new DiagnosticInfo(); m_nodeManager.Read( request.NodesToRead[ii], result, diagnosticInfo); results.Add(result); diagnosticInfos.Add(diagnosticInfo); } // return the response. ReadResponseMessage response = new ReadResponseMessage(); response.ResponseHeader = CreateResponseHeader(request.RequestHeader); response.Results = results; response.DiagnosticInfos = diagnosticInfos; return(response); } } catch (Exception e) { throw CreateSoapFault(request.RequestHeader, e); } }
public void InvalidPasswordPullTest() { ReadResponseMessage serverResponseMessage = new ReadResponseMessage(); serverResponseMessage.IsPasswordCorrect = false; using (Stream responseStream = ServerResponseToStream(serverResponseMessage)) { MockFolderUnpacker folderUnpacker = new MockFolderUnpacker(); FilePuller filePuller = new FilePuller(folderUnpacker, "the_wr0ng_passw0rd"); filePuller.Pull(responseStream, @"c:\fakedestination"); // // Verify that client gracefully handles rejected passwords and does not try to download more data // Assert.IsNull(folderUnpacker.LastDestinationFolder); Assert.IsNull(folderUnpacker.LastPackedData); } }
// // Fetch all the messages in the table // public ReadResponseMessage fetchAllMessages() { List <Message> messages = new List <Message>(); ReadResponseMessage response; try { List <BsonDocument> documents = col.Find(m => true).ToList(); foreach (var doc in documents) { Message message = MessageMapper.toMessage(doc); messages.Add(message); } response = new ReadResponseMessage(Status.STATUS.SUCCESS, messages, null); } catch (MongoWriteException err) { response = new ReadResponseMessage(Status.STATUS.ERROR, messages, err); } return(response); }
public void Pull(Stream serverStream, string destinationFolder) { ReadRequestMessage readRequest = new ReadRequestMessage(LastPullTime, _serverPassword); FarmerMessageSerializer messageSerializer = new FarmerMessageSerializer(); messageSerializer.Serialize(serverStream, readRequest); ReadResponseMessage readResponse = (ReadResponseMessage)messageSerializer.Deserialize(serverStream); if (!readResponse.IsPasswordCorrect) { Console.WriteLine("Error: Incorrect password."); return; } Console.WriteLine("Server check time was {0}", readResponse.CurrentServerTimeUtc.ToLocalTime()); Console.WriteLine("Read {0}", FormatByteCount(readResponse.Data.Length)); _folderUnpacker.UnpackFolder(destinationFolder, readResponse.Data); LastPullTime = readResponse.CurrentServerTimeUtc; }
// // Fetch all messages from a user to a user // public ReadResponseMessage fetchMessagesFromUserToUser(String fromUser, String toUser) { List <Message> messages = new List <Message>(); ReadResponseMessage response; try { List <BsonDocument> documents = col.Find(m => m["from"] == fromUser && m["to"] == toUser).ToList(); foreach (var doc in documents) { Message message = MessageMapper.toMessage(doc); messages.Add(message); } response = new ReadResponseMessage(Status.STATUS.SUCCESS, messages, null); } catch (MongoWriteException err) { response = new ReadResponseMessage(Status.STATUS.ERROR, messages, err); } return(response); }
private void VerifyMonitoring(DateTime startTimestampExpected, byte[] folderDataExpected) { MockFolderPackager mockFolderPackager = new MockFolderPackager(); MockClock serverClock = new MockClock(new DateTime(2007, 5, 25, 15, 27, 03)); ReadRequestMessage readRequest = new ReadRequestMessage(startTimestampExpected, CorrectPassword); using (BookmarkableStream clientStream = ClientRequestToStream(readRequest)) { MockNetworkConnection networkConnection = new MockNetworkConnection(clientStream); RequestListener folderMonitor = new RequestListener(networkConnection, mockFolderPackager, serverClock, @"c:\fakepath\fakedir", CorrectPassword); folderMonitor.ProcessNextRequest(); Assert.AreEqual(@"c:\fakepath\fakedir", mockFolderPackager.LastFolderPacked); Assert.AreEqual(startTimestampExpected, mockFolderPackager.LastModifiedMinimumRequested); clientStream.ResetToBookmark(); FarmerMessageSerializer deserializer = new FarmerMessageSerializer(); ReadResponseMessage response = (ReadResponseMessage)deserializer.Deserialize(clientStream); Assert.AreEqual(serverClock.GetCurrentTimeUtc(), response.CurrentServerTimeUtc); Assert.IsTrue(Util.ArraysEqual <byte>(folderDataExpected, response.Data)); } }
protected void ProcessImpl(ReadRequestMessage requestMessage, ReadResponseMessage responseMessage) { responseMessage.CurrentServerTimeUtc = _clock.GetCurrentTimeUtc(); responseMessage.Data = _folderPackager.PackFolder(_folderPath, requestMessage.LastCheckTimeUtc); }
// // Fetch all the messages in the table // public ReadResponseMessage fetchAllMessages() { ReadResponseMessage response = messageDao.fetchAllMessages(); return(response); }
// // Fetch all messages from a user to a user // public ReadResponseMessage fetchMessagesFromUserToUser(String fromUser, String toUser) { ReadResponseMessage response = messageDao.fetchMessagesFromUserToUser(fromUser, toUser); return(response); }
// // Retrieve all messages from a user // public ReadResponseMessage fetchMessagesFromUser(String user) { ReadResponseMessage response = messageDao.fetchMessagesFromUser(user); return(response); }
// // Retrieve all messages belonging to a user // public ReadResponseMessage fetchUserMessages(String user) { ReadResponseMessage response = messageDao.fetchUserMessages(user); return(response); }