public void SerializeSolveRequestResponse() { SolveRequestResponse d = new SolveRequestResponse(); string xml = d.SerializeToXML(); Assert.IsNotNull(xml); }
/// <summary> /// main CC loop (I dont see a need to unit test it) /// </summary> public override void Run() { while (true) { //this thing will grow on second stage of project: core.GetProblem(); //could be in another thread: solvingWatch.Reset(); log.Debug("Sending problem"); SolveRequestResponse response = SendProblem(); ulong problemId = response.Id; log.DebugFormat("Response received. Id of the problem in cluster: {0}", problemId); solvingWatch.Start(); SolutionRequest request = new SolutionRequest() { Id = problemId }; SolutionsSolution solution = this.WorkProblem(request); if (solution == null) { log.Debug("Solving timeout. Aborting."); continue; } else { log.DebugFormat("\n*** SOLUTION FOUND ({0}) ***\n", problemId); } core.PrintSolutionResult(solution); } }
public void SendProblemMultipleResponsesExceptionTest() { var mockcore = new Mock <ClientNodeProcessingModule>(); var mockcreator = new Mock <IMessageArrayCreator>(); var solveRequest = new SolveRequest() { ProblemType = "abc" }; Message[] request = new[] { solveRequest }; mockcreator.Setup(u => u.Create(solveRequest)).Returns(request); mockcore.Setup(u => u.GetRequest()).Returns(solveRequest); var mockclient = new Mock <IClusterClient>(); var shouldReturn = new SolveRequestResponse { Id = 222 }; var duplicated = new SolveRequestResponse { Id = 222 }; var responses = new Message[] { shouldReturn, duplicated }; mockclient.Setup(u => u.SendRequests(request)).Returns(responses); var clientNode = new ClientNode(mockclient.Object, mockcore.Object, mockcreator.Object); var ret = clientNode.SendProblem(); }
public void SendProblemGetResponseTest() { var mockcore = new Mock <ClientNodeProcessingModule>(); var mockcreator = new Mock <IMessageArrayCreator>(); var solveRequest = new SolveRequest() { ProblemType = "abc" }; Message[] request = new[] { solveRequest }; mockcreator.Setup(u => u.Create(solveRequest)).Returns(request); mockcore.Setup(u => u.GetRequest()).Returns(solveRequest); var mockclient = new Mock <IClusterClient>(); var shouldReturn = new SolveRequestResponse { Id = 222 }; var responses = new Message[] { new NoOperation(), shouldReturn }; mockclient.Setup(u => u.SendRequests(request)).Returns(responses); var clientNode = new ClientNode(mockclient.Object, mockcore.Object, mockcreator.Object); var ret = clientNode.SendProblem(); Assert.AreEqual(ret, shouldReturn); }
public void DeserializeSolveRequestResponse() { SolveRequestResponse d = new SolveRequestResponse(); string xml = d.SerializeToXML(); d = (SolveRequestResponse)xml.DeserializeXML(); Assert.IsNotNull(d); }
private void ResponseSolveRequest(Socket _socket, ulong _problemId) { SolveRequestResponse solveRequestResponse = new SolveRequestResponse() { Id = _problemId }; Send(SerializeMessage(solveRequestResponse), _socket); }
public void SolveRequestResponseMessageSerializationTest() { SolveRequestResponse response = MessagesFactory.CreateEmptyMessage(MessageType.SolveRequestResponseMessage).Cast <SolveRequestResponse>(); response.Id = 100; string xml = _serializer.ToXmlString(response); SolveRequestResponse responseDeserialized = _serializer.FromXmlString(xml).Cast <SolveRequestResponse>(); Assert.AreEqual(response.Id, responseDeserialized.Id); }
/// <summary> /// Register new problem from client /// </summary> /// <param name="networkAdapter"></param> /// <param name="message"></param> /// <param name="messageType"></param> /// <param name="timeout"></param> public void HandleMessage(ServerNetworkAdapter networkAdapter, string message, MessageType messageType, TimeSpan timeout) { SolveRequest request = MessageSerialization.Deserialize<SolveRequest>(message); if (request == null || request.Data == null)// || !request.ProblemType.ToLower().Contains("dvrp")) return; DvrpProblem.WaitEvent.WaitOne(); ulong id = DvrpProblem.CreateProblemID(); DvrpProblem.ProblemsID.Add(id); DvrpProblem.Problems.Add(id, request); SolveRequestResponse response = new SolveRequestResponse() { Id = id }; networkAdapter.Send(response); DvrpProblem.WaitEvent.Set(); }
protected override string ReceivedSolveRequest(SolveRequest solveRequest) { this.serverQueues.SolveRequests.Enqueue(solveRequest); SolveRequestResponse response = new SolveRequestResponse(); if (solveRequest.IdSpecified) { response.Id = solveRequest.Id; //TaskIDCounter++; } else { response.Id = TaskIDCounter++; } response.IdSpecified = true; if (!this.BackupMode) { Console.WriteLine("Sending SolveRequestResponse"); } return(response.SerializeToXML()); }
/// <summary> /// sends problem to cluster, returns unique problem id /// </summary> /// <returns></returns> public virtual SolveRequestResponse SendProblem() { SolveRequest problemRequest = core.GetRequest(); problemRequest.IdSpecified = false; Message[] requests = creator.Create(problemRequest); Message[] responses = this.SendMessages(clusterClient, requests); SolveRequestResponse solveResponse = null; foreach (var response in responses) { switch (response.MessageType) { case MessageType.SolveRequestResponseMessage: log.Debug("SolveRequestResponse acquired: handling"); if (solveResponse != null) { throw new Exception("Multiple SolveRequestResponse messages in CC"); } solveResponse = response.Cast <SolveRequestResponse>(); break; case MessageType.NoOperationMessage: log.Debug("NoOperation acquired: updating backups"); UpdateBackups(response.Cast <NoOperation>()); break; default: throw new Exception("Invalid message delivered in CC's sendProblem procedure " + response.ToString()); } } if (solveResponse == null) { throw new Exception("No solveRequestResponse in CC"); } return(solveResponse); }
public void SendAndReceiveGenericMethodForCorrectMessage() { // arrange NetworkAdapterConstructor na = new NetworkAdapterConstructor("localhost", 12345); SolveRequestResponse msg, msg_correct; msg_correct = new SolveRequestResponse() { Id = 1 }; // act server.Start(); na.StartConnection(); na.Send<SolveRequest>(sr, false); msg = na.Receive<SolveRequestResponse>(false); na.CloseConnection(); server.Stop(); // assert Assert.IsTrue(true); Assert.Equals(msg, msg_correct); }
public void SendProblemInvalidResponseExceptionTest() { var mockcore = new Mock <ClientNodeProcessingModule>(); var mockcreator = new Mock <IMessageArrayCreator>(); var solveRequest = new SolveRequest() { ProblemType = "abc" }; Message[] request = new[] { solveRequest }; mockcreator.Setup(u => u.Create(solveRequest)).Returns(request); mockcore.Setup(u => u.GetRequest()).Returns(solveRequest); var mockclient = new Mock <IClusterClient>(); var invalidResponse = new DivideProblem(); var properResponse = new SolveRequestResponse(); var responses = new Message[] { invalidResponse, properResponse }; mockclient.Setup(u => u.SendRequests(request)).Returns(responses); var clientNode = new ClientNode(mockclient.Object, mockcore.Object, mockcreator.Object); var ret = clientNode.SendProblem(); }
protected override string ReceivedSolveRequestResponse(SolveRequestResponse solveRequestResponse) { Console.WriteLine("\n"+solveRequestResponse.SerializeToXML()); return null; }
protected override string ReceivedSolveRequestResponse(SolveRequestResponse solveRequestResponse) { Debug.Assert(false, "Should not be here"); return(null); }
protected abstract string ReceivedSolveRequestResponse(SolveRequestResponse solveRequestResponse);
protected override string ReceivedSolveRequest(SolveRequest solveRequest) { this.serverQueues.SolveRequests.Enqueue(solveRequest); SolveRequestResponse response = new SolveRequestResponse(); if(solveRequest.IdSpecified) response.Id = solveRequest.Id; //TaskIDCounter++; else response.Id = TaskIDCounter++; response.IdSpecified = true; if (!this.BackupMode) Console.WriteLine("Sending SolveRequestResponse"); return response.SerializeToXML(); }
protected override string ReceivedSolveRequestResponse(SolveRequestResponse solveRequestResponse) { Debug.Assert(false, "Should not be here"); return null; }
protected override string ReceivedSolveRequestResponse(SolveRequestResponse solveRequestResponse) { Console.WriteLine("\n" + solveRequestResponse.SerializeToXML()); return(null); }