Esempio n. 1
0
        public void SolutionsMessageSerialization()
        {
            string testData   = System.IO.File.ReadAllText(@"XMLTestData\SolutionsMessage.xml");
            var    serializer = new ComputationSerializer <SolutionsMessage>();

            Solution s = new Solution()
            {
                TaskId           = 20,
                TaskIdSpecified  = true,
                TimeoutOccured   = true,
                Type             = SolutionType.Final,
                ComputationsTime = 10,
                Data             = new byte[] { 0, 0, 10 }
            };

            var solutionsMessage = new SolutionsMessage()
            {
                ProblemType = "TSP",
                Id          = 1,
                CommonData  = new byte[] { 0, 0, 25 },
                Solutions   = new Solution[] { s }
            };
            var result = serializer.Serialize(solutionsMessage);

            Assert.AreEqual(result, testData);
        }
Esempio n. 2
0
        public string SendSolveRequest(SolveRequestMessage solveRequestMessage)
        {
            try
            {
                clientSocket = communicationModule.SetupClient();
                communicationModule.Connect(clientSocket);

                var serializer = new ComputationSerializer <SolveRequestMessage>();
                var message    = serializer.Serialize(solveRequestMessage);

                communicationModule.SendData(message, clientSocket);

                var response = communicationModule.ReceiveData(clientSocket);
                communicationModule.CloseSocket(clientSocket);

                return(response);
            }
            catch (Exception ex)
            {
                Trace.WriteLine(ex.ToString());
                //TODO logowanie
            }

            return(String.Empty);
        }
Esempio n. 3
0
        public void SolveRequestResponseMessageSerialization()
        {
            string testData   = System.IO.File.ReadAllText(@"XMLTestData\SolveRequestResponseMessage.xml");
            var    serializer = new ComputationSerializer <SolveRequestResponseMessage>();
            var    solveRequestResponseMessage = new SolveRequestResponseMessage()
            {
                Id = 1
            };
            var result = serializer.Serialize(solveRequestResponseMessage);

            Assert.AreEqual(result, testData);
        }
Esempio n. 4
0
        private void ButtonSendSolveRequest_Click(object sender, RoutedEventArgs e)
        {
            var message = this.computationalClient.SendSolveRequest(this.solveRequestMessage);

            this.potwierdzenie.Text += "\nReceived form CC" + message;

            var serializer = new ComputationSerializer <SolveRequestResponseMessage>();
            SolveRequestResponseMessage srrm = serializer.Deserialize(message);

            this.problemId           = srrm.Id;
            this.potwierdzenie.Text += "\n\nAssigned problem ID = " + this.problemId;
        }
Esempio n. 5
0
        public void RegisterResponseMessageSerialization()
        {
            string testData   = System.IO.File.ReadAllText(@"XMLTestData\RegisterResponseMessage.xml");
            var    serializer = new ComputationSerializer <RegisterResponseMessage>();
            var    registerResponseMessage = new RegisterResponseMessage()
            {
                Id      = 1,
                Timeout = "01:00:00",
            };
            var result = serializer.Serialize(registerResponseMessage);

            Assert.AreEqual(result, testData);
        }
Esempio n. 6
0
        public void RegisterMessageSerialization()
        {
            string testData        = System.IO.File.ReadAllText(@"XMLTestData\RegisterMessage.xml");
            var    serializer      = new ComputationSerializer <RegisterMessage>();
            var    registerMessage = new RegisterMessage()
            {
                Type             = RegisterType.ComputationalNode,
                SolvableProblems = new string[] { "ab", "ba" },
                ParallelThreads  = 15
            };
            var result = serializer.Serialize(registerMessage);

            Assert.AreEqual(result, testData);
        }
Esempio n. 7
0
        public void SolveRequestMessageSerialization()
        {
            string testData            = System.IO.File.ReadAllText(@"XMLTestData\SolveRequestMessage.xml");
            var    serializer          = new ComputationSerializer <SolveRequestMessage>();
            var    solveRequestMessage = new SolveRequestMessage()
            {
                Data           = new byte[] { 0, 0, 25 },
                ProblemType    = "TSP",
                SolvingTimeout = 15
            };
            var result = serializer.Serialize(solveRequestMessage);

            Assert.AreEqual(result, testData);
        }
Esempio n. 8
0
        public void DivideProblemMessageSerialization()
        {
            string testData             = System.IO.File.ReadAllText(@"XMLTestData\DivideProblemMessage.xml");
            var    serializer           = new ComputationSerializer <DivideProblemMessage>();
            var    divideProblemMessage = new DivideProblemMessage()
            {
                ProblemType        = "TSP",
                Id                 = 1,
                Data               = new byte[] { 0, 0, 25 },
                ComputationalNodes = 5
            };
            var result = serializer.Serialize(divideProblemMessage);

            Assert.AreEqual(result, testData);
        }
Esempio n. 9
0
        public void StatusMessageSerialization()
        {
            string testData   = System.IO.File.ReadAllText(@"XMLTestData\StatusMessage.xml");
            var    serializer = new ComputationSerializer <StatusMessage>();

            StatusThread st = new StatusThread()
            {
                State             = StatusThreadState.Idle,
                HowLong           = 1,
                ProblemInstanceId = 1,
                TaskId            = 5,
                TaskIdSpecified   = true,
                ProblemType       = "TSP"
            };

            var statusMessage = new StatusMessage()
            {
                Id      = 1,
                Threads = new StatusThread[] { st }
            };
            var result = serializer.Serialize(statusMessage);

            Assert.AreEqual(result, testData);
        }
Esempio n. 10
0
        public void PartialProblemsMessageSerialization()
        {
            string testData   = System.IO.File.ReadAllText(@"XMLTestData\PartialProblemsMessage.xml");
            var    serializer = new ComputationSerializer <PartialProblemsMessage>();

            SolvePartialProblemsPartialProblem pp = new SolvePartialProblemsPartialProblem()
            {
                TaskId = 20,
                Data   = new byte[] { 0, 0, 10 }
            };

            var partialProblemsMessage = new PartialProblemsMessage()
            {
                ProblemType             = "TSP",
                Id                      = 1,
                CommonData              = new byte[] { 0, 0, 25 },
                SolvingTimeout          = 50,
                SolvingTimeoutSpecified = true,
                PartialProblems         = new SolvePartialProblemsPartialProblem[] { pp }
            };
            var result = serializer.Serialize(partialProblemsMessage);

            Assert.AreEqual(result, testData);
        }
Esempio n. 11
0
        private void ThreadBackgroundWork()
        {
            SolutionRequestMessage srm = new SolutionRequestMessage()
            {
                Id = this.problemId
            };

            SolutionsMessage sm      = null;
            String           message = String.Empty;
            double           len     = 0;
            string           ttt;

            while (sm == null)
            {
                //this.potwierdzenie.Text += "\n\nAsking for Final solution... ";
                string str = "\nAsking for Final solution... ";
                this.potwierdzenie.Dispatcher.Invoke(new UpdateTextCallback(this.UpdateText), new object[] { str });
                message = this.computationalClient.SendSolutionRequest(srm);
                if (message != String.Empty)
                {
                    switch (bn.GetMessageName(message))
                    {
                    case "Solutions":
                        var serializer = new ComputationSerializer <SolutionsMessage>();
                        sm = serializer.Deserialize(message);
                        foreach (var solution in sm.Solutions)
                        {
                            if (solution.Type == SolutionType.Final)
                            {
                                //str = "\n\nFinal solution: " + System.Text.Encoding.UTF8.GetString(solution.Data);
                                //len = DynamicVehicleRoutingProblem.DVRPPartialSolution.Parse2FinalSolLenght(System.Text.Encoding.UTF8.GetString(solution.Data));

                                DVRP.Solutions.FinalSolution finalSolution
                                    = (DVRP.Solutions.Solution.ToSolution(solution.Data)).ToFinalSolution();

                                ttt = finalSolution.ToString();

                                this.potwierdzenie.Dispatcher.Invoke(new UpdateTextCallback(this.UpdateText), new object[] { "\n\n Path lenght: " + ttt });
                                this.potwierdzenie.Dispatcher.Invoke(new UpdateTextCallback(this.UpdateText), new object[] { "\n SOLVED!!! \n SOLVED!!!" });
                                break;
                            }
                        }

                        sm = null;
                        break;

                    case "Other...?":
                        break;

                    default:
                        break;
                    }
                    if (len != 0)
                    {
                        break;
                    }
                }
                else
                {
                    //str = "\n\n Message empty";
                    //this.potwierdzenie.Dispatcher.Invoke(new UpdateTextCallback(this.UpdateText), new object[] { str });
                }
                str = " Computing...";
                this.potwierdzenie.Dispatcher.Invoke(new UpdateTextCallback(this.UpdateText), new object[] { str });
                Thread.Sleep(10000);
            }
        }