Example #1
0
 private void sendMessageToServer(IEnumerable <XElement> results, HiResTimer timer,
                                  MessageMaker msgMaker, Sender sndr, Receiver rcvr)
 {
     timer.Start();
     foreach (var eachInput in results)
     {
         Message msg = new Message();
         msg = msgMaker.makeMessage(this.localUrl, this.remoteUrl, eachInput);
         if (!sndr.Connect(msg.toUrl))
         {
             Console.Write("\n  could not connect in {0} attempts", sndr.MaxConnectAttempts);
             sndr.shutdown();
             rcvr.shutDown();
             return;
         }
         "Message sent".endofTest();
         "Content".title();
         Console.Write("\n\n{0}\n", msg.content);
         "End of message".endofTest();
         while (true)
         {
             if (sndr.sendMessage(msg))
             {
                 Thread.Sleep(200);
                 break;
             }
         }
         sndr.SendReaderLatency(rcvr.totalExecutionTime / rcvr.count);
         sndr.SendWriterLatency(rcvr.totalExecutionTime / rcvr.count);
     }
 }
Example #2
0
        static void Main(string[] args)
        {
            Console.Write("{0}{1}",
                          "\n  Time Parsing Operations ",
                          "\n =========================\n"
                          );

            OpTimer ot = new OpTimer();

            ot.Verbose = false;
            string fileName = "../../Test.cs";

            ot.ParseFile(fileName);

            HiResTimer hrt = new HiResTimer();

            hrt.Start();
            int N = 1000;

            for (int i = 0; i < N; ++i)
            {
                ot.HashLookUp("class");
            }
            hrt.Stop();
            ulong lookUpTime = hrt.ElapsedMicroseconds;

            Console.Write("\n   {0} lookups took {1} microseconds", N, lookUpTime);
            Console.Write("\n\n");
            ot.showTable();
            Console.Write("\n\n");
        }
        /// <summary>
        /// Calculates the throughput.
        /// </summary>
        /// <param name="timer">The timer.</param>
        /// <param name="totalTime">The total time.</param>
        /// <param name="count">The count.</param>
        /// <returns></returns>
        private double calculateThroughput(HiResTimer timer, ref double totalTime, int count)
        {
            totalTime += timer.ElapsedTimeSpan.TotalSeconds;
            double avgTime = totalTime / count;

            Console.Title = "Server: Avg process time =" + avgTime + " secs ; Throughput =" + 1 / avgTime + " req/sec Total Responses =" + count;
            return(1 / avgTime);
        }
Example #4
0
        //Test stub for the High resolution timer

        static void Main(string[] args)
        {
            HiResTimer timerHiRes = new HiResTimer();

            timerHiRes.Start();
            Thread.Sleep(1000);
            timerHiRes.Stop();
            double elpasedTime = timerHiRes.ElapsedTimeSpan.TotalSeconds;

            Console.WriteLine("\n The elpased time from starting of the timer till the timer is stopped is: {0} sec", elpasedTime);
        }
        static void Main(string[] args)
        {
            Console.Write("\n  starting CommService client");
            Console.Write("\n =============================\n");
            Console.Title = "Test Executive Client to display the results of remote NoSQL database operations";
            TestExec clnt = new TestExec();

            clnt.processCommandLine(args);
            HiResTimer timerTestExec = new HiResTimer();
            string     localPort     = Util.urlPort(clnt.localUrl);
            string     localAddr     = Util.urlAddress(clnt.localUrl);
            Receiver   rcvr          = new Receiver(localPort, localAddr);

            rcvr.setTimerFromClient(timerTestExec);
            clnt.startRcvrService(rcvr);
            Console.WriteLine("\n The Message request is");
            Console.Write("\n =================================\n");
            Sender       sndr = new Sender(clnt.localUrl); // Sender needs localUrl for start message
            MessageMaker testExecInput = new MessageMaker();
            Message      msg = new Message();
            string       fileName = ".\\TestExecInput.xml";
            XDocument    xmldoc = XDocument.Load(fileName);
            var          requests = xmldoc.Descendants("Request");
            int          requestCount = 0, readers = 0, writers = 0, portReader = 0, portWriter = 0, numberOfRequests = 0, numberOfRequestsWriters = 0;
            string       readerDisplay = "", writerDisplay = "";

            clnt.getReadersWritersCount(xmldoc, ref readers, ref writers, ref portReader, ref portWriter, ref numberOfRequests, ref readerDisplay, ref writerDisplay, ref numberOfRequestsWriters);
            timerTestExec.Start();
            foreach (var request in requests)
            {   //send each request to construct message and send it to the server
                clnt.sendEachRequest(request, clnt, msg, sndr, rcvr, testExecInput);
                Console.Title = "TestExec Client to display the NoSQl database operations: Operations " + (++requestCount) + " are Sent";
            }
            msg.content = "done";
            Util.waitForUser();
            rcvr.shutDown();
            sndr.shutdown();
            Console.Write("\n\n");
            if (args.Count() != 0)
            {
                readers                 = Convert.ToInt32(args[0]);
                writers                 = Convert.ToInt32(args[1]);
                numberOfRequests        = Convert.ToInt32(args[2]);
                numberOfRequestsWriters = Convert.ToInt32(args[3]);
            }
            for (int i = 1; i <= writers; i++)
            {
                System.Diagnostics.Process.Start(".\\Client\\bin\\Debug\\Client.exe", "" + (portWriter++) + " " + numberOfRequestsWriters + " " + writerDisplay);
            }
            for (int j = 1; j <= readers; j++)
            {
                System.Diagnostics.Process.Start(".\\Client2\\bin\\Debug\\Client2.exe", ("" + (portReader++) + " " + numberOfRequests + " " + readerDisplay));
            }
        }
        public static void Main()
        {
            HiResTimer timer = new HiResTimer();

            timer.Start();
            Thread.Sleep(2000);
            timer.Stop();
            Console.WriteLine(timer.ElapsedTimeSpan.TotalSeconds);
            Thread.Sleep(4000);
            timer.Stop();
            Console.WriteLine(timer.ElapsedTimeSpan.TotalSeconds);
        }
Example #7
0
        static void Main(string[] args)
        {
            MessageMaker msgMaker = new MessageMaker();

            Console.Write("\nStarting Test Executive");
            Console.Write("\n=============================\n");
            Message    msg   = new Message();
            HiResTimer timer = new HiResTimer();

            Console.Title = "Write Client";
            WriteClient writeClient = new WriteClient();

            if (args.Length == 2)
            {
                writeClient.numMsg = Convert.ToInt32(args[1]);
            }
            writeClient.processCommandLine(args);
            string   localPort = Util.urlPort(writeClient.localUrl);
            string   localAddr = Util.urlAddress(writeClient.localUrl);
            Receiver rcvr      = new Receiver(localPort, localAddr, timer);

            if (rcvr.StartService())
            {
                rcvr.doService(rcvr.defaultServiceAction());
            }
            Sender    sndr     = new Sender(writeClient.localUrl); // Sender needs localUrl for start message
            XDocument xmlInput = writeClient.GetInputFromXml();
            var       results  = xmlInput.Descendants("element");

            writeClient.sendMessageToServer(results, timer, msgMaker, sndr, rcvr);
            Console.Write("\n  sender's url is {0}", writeClient.localUrl);
            Console.Write("\n  attempting to connect to {0}\n", writeClient.remoteUrl);
            //Wait until all messages from server are received.
            while (rcvr.count < writeClient.numMsg)
            {
                sndr.SendWriterLatency(rcvr.totalExecutionTime / rcvr.count);
            }
            msg.content = "done";
            msg.fromUrl = writeClient.localUrl;
            msg.toUrl   = writeClient.remoteUrl;
            sndr.sendMessage(msg);
            Util.waitForUser();
            sndr.SendWriterLatency(rcvr.totalExecutionTime / rcvr.count);
            rcvr.shutDown();
            sndr.shutdown();
        }
Example #8
0
        static void Main(string[] args)
        {
            TestExecutive test = new TestExecutive();

            if (args.Count() == 4)
            {
                test.readers           = Convert.ToInt32(args[0]);
                test.writers           = Convert.ToInt32(args[1]);
                test.numReaderMessages = Convert.ToInt32(args[2]);
                test.numWriterMessages = Convert.ToInt32(args[3]);
            }
            MessageMaker msgMaker = new MessageMaker();
            HiResTimer   timer    = new HiResTimer();
            Message      msg      = new Message();

            Console.Write("\nStarting Test Executive");
            Console.Write("\n=============================\n");
            Console.Title = "Test Executive";
            string   localPort = Util.urlPort(test.localUrl);
            string   localAddr = Util.urlAddress(test.localUrl);
            Receiver rcvr      = new Receiver(localPort, localAddr, timer);

            if (rcvr.StartService())
            {
                rcvr.doService(rcvr.defaultServiceAction());
            }
            Sender    sndr     = new Sender(test.localUrl); // Sender needs localUrl for start message
            XDocument xmlInput = test.GetInputFromXml();
            var       results  = xmlInput.Descendants("element");

            Console.Write("\n  sender's url is {0}", test.localUrl);
            Console.Write("\n  attempting to connect to {0}\n", test.remoteUrl);
            timer.Start();
            test.sendMessageToServer(results, timer, msgMaker, sndr, rcvr);
            msg.content = "done";
            msg.fromUrl = test.localUrl;
            msg.toUrl   = test.remoteUrl;
            sndr.sendMessage(msg);
            Console.WriteLine("\n\nPress any key to start performance testing...");
            Util.waitForUser();
            test.LaunchReadersAndWriters();
            rcvr.shutDown();
            sndr.shutdown();
        }
Example #9
0
        public Action define_server_receiveaction(Receiver rcvr, Sender sndr, bool log_messages)
        {
            HiResTimer hTimer = new HiResTimer();
            DBEngine <int, DBElement <int, string> > db = new DBEngine <int, DBElement <int, string> >();
            Action serviceAction = () =>
            {
                Message     msg        = new Message();
                DBProcessor db_process = new DBProcessor();
                while (true)
                {
                    msg = rcvr.getMessage();   // note use of non-service method to deQ messages
                    if (msg.content == "connection start message" || msg.content == "done" || msg.content == "closeServer")
                    {
                        Console.Write("\n  Received message:");
                        Console.Write("\n  Sender is {0}", msg.fromUrl);
                        Console.Write("\n  content is {0}\n", msg.content);
                    }
                    if (msg.content == "connection start message")
                    {
                        continue; // don't send back start message
                    }
                    if (msg.content == "done")
                    {
                        Console.Write("\n  client has finished\n");
                        Util.swapUrls(ref msg);
                        sndr.sendMessage(msg);
                        continue;
                    }
                    if (msg.content == "closeServer")
                    {
                        Console.Write("received closeServer");
                        break;
                    }
                    hTimer.Start();
                    XElement result = db_process.process_msg <int, DBElement <int, string>, string>(msg.content, db);
                    hTimer.Stop();
                    if (log_messages)
                    {
                        Console.WriteLine("  Time taken to process this request = {0} microseconds", hTimer.ElapsedMicroseconds);
                    }
                    double   tm           = (double)hTimer.ElapsedMicroseconds;
                    XElement request_mesg = XElement.Parse(msg.content);
                    XElement request_id   = request_mesg.Element("Request_ID");
                    XElement request_time = request_mesg.Element("Request_Time_Stamp");
                    string   method       = request_mesg.Element("Request_Type").Value;
                    send_wpf_processing(hTimer.ElapsedMicroseconds, method, sndr, port);
                    diction[method].Add(tm);
                    if (diction[method].Count % 10 == 0)
                    {
                        send_wpf_average(method, sndr, port);
                    }
                    XElement response_server = new XElement("Response_Message");
                    response_server.Add(request_id);
                    response_server.Add(request_time);
                    response_server.Add(result);
                    msg.content = response_server.ToString();
                    Util.swapUrls(ref msg);
                    sndr.sendMessage(msg);
                }
            };

            return(serviceAction);
        }
 public Receiver(string Port, string Address, HiResTimer timer)
 {
     address    = Address;
     port       = Port;
     this.timer = timer;
 }
Example #11
0
        static void Main(string[] args)
        {
            Util.verbose = false;
            Server srvr = new Server();

            srvr.ProcessCommandLine(args);
            Console.Title = "Server";
            Console.Write(String.Format("\n  Starting CommService server listening on port {0}", srvr.port));
            Console.Write("\n ====================================================\n");

            Sender sndr = new Sender(Util.makeUrl(srvr.address, srvr.port));

            Receiver rcvr = new Receiver(srvr.port, srvr.address);

            // - serviceAction defines what the server does with received messages
            // - This serviceAction just announces incoming messages and echos them
            //   back to the sender.
            // - Note that demonstrates sender routing works if you run more than
            //   one client.

            Action serviceAction = () =>
            {
                Message msg = null;
                while (true)
                {
                    msg = rcvr.getMessage();   // note use of non-service method to deQ messages
                    Console.Write("\n  Received message:");
                    Console.Write("\n  sender is {0}", msg.fromUrl);
                    //Console.Write("\n  content is {0}\n", msg.content);

                    if (msg.content == "connection start message")
                    {
                        continue; // don't send back start message
                    }
                    if (msg.content == "done")
                    {
                        Console.Write("\n  client has finished\n");
                        continue;
                    }
                    if (msg.content == "closeServer")
                    {
                        Console.Write("received closeServer");
                        break;
                    }
                    if (msg.content.Contains("Writer"))
                    {
                        int     avg      = srvr.Ttime.Sum() / srvr.Ttime.Count();
                        string  lat      = string.Join(null, System.Text.RegularExpressions.Regex.Split(msg.content, "[^\\d]"));
                        Message msgToWpf = new Message();
                        msgToWpf.fromUrl = Util.makeUrl(srvr.address, srvr.port);
                        msgToWpf.toUrl   = Util.makeUrl("localhost", "8089");
                        msgToWpf.content = msg.content + " microseconds for Client: " + msg.fromUrl.ToString();
                        sndr.sendMessage(msgToWpf);
                        Message msgToWpf1 = new Message();
                        msgToWpf1.fromUrl = Util.makeUrl(srvr.address, srvr.port);
                        msgToWpf1.toUrl   = Util.makeUrl("localhost", "8089");
                        msgToWpf1.content = "Server ThroughPut(Avg Time) for " + srvr.Ttime.Count().ToString() + " Write Operations = " + avg.ToString() + " microseconds";
                        sndr.sendMessage(msgToWpf1);
                        continue;
                    }
                    if (msg.content.Contains("Reader"))
                    {
                        int     avg1     = srvr.Ttime1.Sum() / srvr.Ttime1.Count();
                        string  lat      = string.Join(null, System.Text.RegularExpressions.Regex.Split(msg.content, "[^\\d]"));
                        Message msgToWpf = new Message();
                        msgToWpf.fromUrl = Util.makeUrl(srvr.address, srvr.port);
                        msgToWpf.toUrl   = Util.makeUrl("localhost", "8089");
                        msgToWpf.content = msg.content + " microseconds for Client: " + msg.fromUrl.ToString();
                        sndr.sendMessage(msgToWpf);
                        Message msgToWpf1 = new Message();
                        msgToWpf1.fromUrl = Util.makeUrl(srvr.address, srvr.port);
                        msgToWpf1.toUrl   = Util.makeUrl("localhost", "8089");
                        msgToWpf1.content = "Server ThroughPut(Avg Time) for " + srvr.Ttime1.Count().ToString() + " Read Operations = " + avg1.ToString() + " microseconds";
                        sndr.sendMessage(msgToWpf1);
                        continue;
                    }
                    try
                    {
                        XDocument xdoc            = XDocument.Parse(msg.content);
                        string    operationCalled = getOperationType(xdoc);
                        if (operationCalled == "add")
                        {
                            Console.WriteLine("\nAdd Operation Called");
                            HiResTimer hrt = new HiResTimer();
                            hrt.Start();
                            srvr.processAddMsg(xdoc, sndr, msg);
                            hrt.Stop();
                            srvr.Ttime.Add(Convert.ToInt32(hrt.ElapsedMicroseconds));
                        }
                        else if (operationCalled == "delete")
                        {
                            Console.WriteLine("\nDelete Operation Called");
                            HiResTimer hrt = new HiResTimer();
                            hrt.Start();
                            srvr.processDelMsg(xdoc, sndr, msg);
                            hrt.Stop();
                            srvr.Ttime.Add(Convert.ToInt32(hrt.ElapsedMicroseconds));
                        }

                        else if (operationCalled == "edit")
                        {
                            Console.WriteLine("\nEdit Operation Called");
                            HiResTimer hrt = new HiResTimer();
                            hrt.Start();
                            srvr.processEditMsg(xdoc, sndr, msg);
                            hrt.Stop();
                            srvr.Ttime.Add(Convert.ToInt32(hrt.ElapsedMicroseconds));
                        }

                        else if (operationCalled == "query1")
                        {
                            Console.WriteLine("\nQuery1 Operation Called\n");
                            HiResTimer hrt = new HiResTimer();
                            hrt.Start();
                            srvr.processQuery1(xdoc, sndr, msg);
                            hrt.Stop();
                            srvr.Ttime1.Add(Convert.ToInt32(hrt.ElapsedMicroseconds));
                        }
                        else if (operationCalled == "query2")
                        {
                            Console.WriteLine("\nQuery2 Operation Called\n");
                            HiResTimer hrt = new HiResTimer();
                            hrt.Start();
                            srvr.processQuery2(xdoc, sndr, msg);
                            hrt.Stop();
                            srvr.Ttime1.Add(Convert.ToInt32(hrt.ElapsedMicroseconds));
                            Util.swapUrls(ref msg);
                            msg.content = "-----Query2 operation performed-----";
                            sndr.sendMessage(msg);
                        }
                        else if (operationCalled == "query3")
                        {
                            Console.WriteLine("\nQuery3 Operation Called\n");
                            HiResTimer hrt = new HiResTimer();
                            hrt.Start();
                            srvr.processQuery3(xdoc, sndr, msg);
                            hrt.Stop();
                            srvr.Ttime1.Add(Convert.ToInt32(hrt.ElapsedMicroseconds));
                            Util.swapUrls(ref msg);
                            msg.content = "-----Query3 operation performed-----";
                            sndr.sendMessage(msg);
                        }
                        else if (operationCalled == "query4")
                        {
                            Console.WriteLine("\nQuery4 Operation Called\n");
                            HiResTimer hrt = new HiResTimer();
                            hrt.Start();
                            srvr.processQuery4(xdoc, sndr, msg);
                            hrt.Stop();
                            srvr.Ttime1.Add(Convert.ToInt32(hrt.ElapsedMicroseconds));
                        }
                        else if (operationCalled == "query5")
                        {
                            Console.WriteLine("\nQuery5 Operation Called\n");
                            HiResTimer hrt = new HiResTimer();
                            hrt.Start();
                            srvr.processQuery5(xdoc, sndr, msg);
                            hrt.Stop();
                            srvr.Ttime1.Add(Convert.ToInt32(hrt.ElapsedMicroseconds));
                            Util.swapUrls(ref msg);
                            msg.content = "-----Query5 operation performed-----";
                            sndr.sendMessage(msg);
                        }
                        else if (operationCalled == "persist")
                        {
                            Console.WriteLine("\nPersist Operation Called");
                            HiResTimer hrt = new HiResTimer();
                            hrt.Start();
                            srvr.processPersistMsg(xdoc, sndr, msg);
                            hrt.Stop();
                            srvr.Ttime.Add(Convert.ToInt32(hrt.ElapsedMicroseconds));
                        }
                        else if (operationCalled == "augment")
                        {
                            Console.WriteLine("\nAugment Operation Called\n");
                            HiResTimer hrt = new HiResTimer();
                            hrt.Start();
                            srvr.processAugmentedMsg(xdoc, sndr, msg, srvr);
                            hrt.Stop();
                            srvr.Ttime.Add(Convert.ToInt32(hrt.ElapsedMicroseconds));
                        }
                    }

                    catch { }



#if (TEST_WPFCLIENT)
                    /////////////////////////////////////////////////
                    // The statements below support testing the
                    // WpfClient as it receives a stream of messages
                    // - for each message received the Server
                    //   sends back 1000 messages
                    //
                    int count = 0;
                    for (int i = 0; i < 2; ++i)
                    {
                        Message testMsg = new Message();
                        testMsg.toUrl   = msg.toUrl;
                        testMsg.fromUrl = msg.fromUrl;
                        testMsg.content = String.Format("test message #{0}", ++count);
                        Console.Write("\n  sending testMsg: {0}", testMsg.content);
                        sndr.sendMessage(testMsg);
                    }
#else
                    /////////////////////////////////////////////////
                    // Use the statement below for normal operation
#endif
                }
            };

            if (rcvr.StartService())
            {
                rcvr.doService(serviceAction); // This serviceAction is asynchronous,
            }                                  // so the call doesn't block.
            Util.waitForUser();
        }
        static void Main(string[] args)
        {
            Console.Write("\n  starting CommService client");
            Console.Write("\n =============================\n");
            HiResTimer timerReader = new HiResTimer();
            Client     clnt        = new Client();

            clnt.processCommandLine(args);
            string localPort = args[0];

            clnt.localUrl = "http://localhost:" + localPort + "/CommService";
            string   localAddr = Util.urlAddress(clnt.localUrl);
            Receiver rcvr      = new Receiver(localPort, localAddr);

            rcvr.setTimerFromClient(timerReader);
            clnt.startRcvrService(rcvr);
            Sender       sndr = new Sender(clnt.localUrl); // Sender needs localUrl for start message
            MessageMaker readerInput = new MessageMaker();
            string       fileName = ".\\ReaderClientInput.xml";
            Message      msg = new Message();
            int          numRequests = Convert.ToInt32(args[1]);
            XDocument    xmldoc = XDocument.Load(fileName);
            var          requests = xmldoc.Descendants("Request");
            int          requestCount = 0, i = 0; List <XElement> totalrequest = new List <XElement>();

            while (i < numRequests)      //set the specified number of requests to send
            {
                totalrequest.Add(requests.ElementAt(i)); i++;
            }
            timerReader.Start();
            foreach (var request in totalrequest)     //send each request to the message maker to create a message
            {
                msg           = new Message();
                msg           = readerInput.makeMessage(clnt.localUrl, clnt.remoteUrl, request);
                Console.Title = "Reader Client to query the NoSQl database: Querying " + (++requestCount) + " requests";
                if (!sndr.Connect(msg.toUrl))        //send url of the destination to the sender
                {
                    Console.Write("\n  could not connect in {0} attempts", sndr.MaxConnectAttempts);
                    sndr.shutdown();
                    rcvr.shutDown();
                    return;
                }
                Thread.Sleep(700);
                while (true)
                {
                    clnt.printMessage(msg);             //print the message contents
                    if (!sndr.sendMessage(msg))         // send the message to the sender
                    {
                        return;
                    }
                    Thread.Sleep(100);
                    break;
                }
                sndr.sendLatencyReader(rcvr.avgLatency);
            }
            Console.Write("\n  Sender's url is {0}", msg.fromUrl);
            Console.Write("\n  Attempting to connect to {0}\n", msg.toUrl);
            msg.content = "done";
            sndr.sendMessage(msg);
            Util.waitForUser();
            rcvr.shutDown();
            sndr.shutdown();
        }
Example #13
0
        //----< Main method. >-----
        static void Main(string[] args)
        {
            Util.verbose    = false;
            Util.verboseApp = true;
            Server srvr = new Server();

            srvr.ProcessCommandLine(args);
            srvr.preLoadData();

            Console.Title = "Server";
            Console.Write(String.Format("\n  Starting CommService server listening on port {0}", srvr.port));
            Console.Write("\n ====================================================\n");

            Sender sndr = new Sender(Util.makeUrl(srvr.address, srvr.port));
            //Sender sndr = new Sender();
            Receiver rcvr = new Receiver(srvr.port, srvr.address);

            // - serviceAction defines what the server does with received messages
            // - This serviceAction just announces incoming messages and echos them
            //   back to the sender.
            // - Note that demonstrates sender routing works if you run more than
            //   one client.

            Action serviceAction = () =>
            {
                Message    msg = null;
                HiResTimer hrt = new HiResTimer();
                while (true)
                {
                    msg = rcvr.getMessage();   // note use of non-service method to deQ messages
                    if (Util.verbose)
                    {
                        Console.Write("\n  Received message:");
                        Console.Write("\n  sender is {0}", msg.fromUrl);
                        Console.Write("\n  content is {0}\n", msg.content);
                    }
                    if (msg.content == "connection start message")
                    {
                        continue; // don't send back start message
                    }
                    if (msg.content == "done")
                    {
                        continue;
                    }
                    if (msg.content == "closeServer")
                    {
                        Console.Write("received closeServer");
                        break;
                    }
                    try
                    {
                        XDocument xdoc = XDocument.Parse(msg.content);

                        string operationCalled = identifyOperation(xdoc);
                        // swap urls for outgoing message
                        if (operationCalled == "add")
                        {
                            if (Util.verboseApp)
                            {
                                Console.WriteLine("add Operation Called");
                            }
                            hrt.Start();
                            msg.content = srvr.processAddMessage(xdoc);
                            hrt.Stop();
                            Server.numMessages++;
                            Server.totalTime += hrt.ElapsedMicroseconds;
                            Server.avgTime    = srvr.getAvgTime(Server.totalTime, Server.numMessages);
                            Util.swapUrls(ref msg);
                            sndr.sendMessage(msg);
                        }
                        else if (operationCalled == "delete")
                        {
                            if (Util.verboseApp)
                            {
                                Console.WriteLine("delete Operation Called");
                            }
                            hrt.Start();
                            msg.content = srvr.processDeleteMessage(xdoc);
                            hrt.Stop();
                            Server.numMessages++;
                            Server.totalTime += hrt.ElapsedMicroseconds;
                            Server.avgTime    = srvr.getAvgTime(Server.totalTime, Server.numMessages);
                            Util.swapUrls(ref msg);
                            sndr.sendMessage(msg);
                        }

                        else if (operationCalled == "edit")
                        {
                            if (Util.verboseApp)
                            {
                                Console.WriteLine("Edit Operation Called");
                            }
                            hrt.Start();
                            msg.content = srvr.processEditMessage(xdoc);
                            hrt.Stop();
                            Server.numMessages++;
                            Server.totalTime += hrt.ElapsedMicroseconds;
                            Server.avgTime    = srvr.getAvgTime(Server.totalTime, Server.numMessages);
                            Util.swapUrls(ref msg);
                            sndr.sendMessage(msg);
                        }

                        else if (operationCalled == "query1")
                        {
                            if (Util.verboseApp)
                            {
                                Console.WriteLine("query1 Operation Called");
                            }
                            hrt.Start();
                            msg.content = srvr.processQuery1Message(xdoc);
                            hrt.Stop();
                            Server.numMessages++;
                            Server.totalTime += hrt.ElapsedMicroseconds;
                            Server.avgTime    = srvr.getAvgTime(Server.totalTime, Server.numMessages);
                            Util.swapUrls(ref msg);
                            sndr.sendMessage(msg);
                        }
                        else if (operationCalled == "query2")
                        {
                            if (Util.verboseApp)
                            {
                                Console.WriteLine("query2 Operation Called");
                            }
                            hrt.Start();
                            msg.content = srvr.processQuery2Message(xdoc);
                            hrt.Stop();
                            Server.numMessages++;
                            Server.totalTime += hrt.ElapsedMicroseconds;
                            Server.avgTime    = srvr.getAvgTime(Server.totalTime, Server.numMessages);
                            Util.swapUrls(ref msg);
                            sndr.sendMessage(msg);
                        }
                        else if (operationCalled == "query3")
                        {
                            if (Util.verboseApp)
                            {
                                Console.WriteLine("query3 Operation Called");
                            }
                            hrt.Start();
                            msg.content = srvr.processQuery3Message(xdoc);
                            hrt.Stop();
                            Server.numMessages++;
                            Server.totalTime += hrt.ElapsedMicroseconds;
                            Server.avgTime    = srvr.getAvgTime(Server.totalTime, Server.numMessages);
                            Util.swapUrls(ref msg);
                            sndr.sendMessage(msg);
                        }
                        else if (operationCalled == "query4")
                        {
                            if (Util.verboseApp)
                            {
                                Console.WriteLine("query4 Operation Called");
                            }
                            hrt.Start();
                            msg.content = srvr.processQuery4Message(xdoc);
                            hrt.Stop();
                            Server.numMessages++;
                            Server.totalTime += hrt.ElapsedMicroseconds;
                            Server.avgTime    = srvr.getAvgTime(Server.totalTime, Server.numMessages);
                            Util.swapUrls(ref msg);
                            sndr.sendMessage(msg);
                        }
                        else if (operationCalled == "query5")
                        {
                            if (Util.verboseApp)
                            {
                                Console.WriteLine("query5 Operation Called");
                            }
                            hrt.Start();
                            msg.content = srvr.processQuery5Message(xdoc);
                            hrt.Stop();
                            Server.numMessages++;
                            Server.totalTime += hrt.ElapsedMicroseconds;
                            Server.avgTime    = srvr.getAvgTime(Server.totalTime, Server.numMessages);
                            Util.swapUrls(ref msg);
                            sndr.sendMessage(msg);
                        }
                        else if (operationCalled == "persist")
                        {
                            if (Util.verboseApp)
                            {
                                Console.WriteLine("persist Operation Called");
                            }
                            hrt.Start();
                            srvr.persistDatatToFile();
                            hrt.Stop();
                            Server.numMessages++;
                            Server.totalTime += hrt.ElapsedMicroseconds;
                            Server.avgTime    = srvr.getAvgTime(Server.totalTime, Server.numMessages);
                            Util.swapUrls(ref msg);
                            msg.content = "Persist operation performed.";
                            sndr.sendMessage(msg);
                        }
                        else if (operationCalled == "restore")
                        {
                            if (Util.verboseApp)
                            {
                                Console.WriteLine("Restore Operation Called");
                            }
                            hrt.Start();
                            msg.content = srvr.processDataRestoreMessageRequest();
                            hrt.Stop();
                            Server.numMessages++;
                            Server.totalTime += hrt.ElapsedMicroseconds;
                            Server.avgTime    = srvr.getAvgTime(Server.totalTime, Server.numMessages);
                            Util.swapUrls(ref msg);
                            sndr.sendMessage(msg);
                            continue;
                        }
                        else if (operationCalled == "performance")
                        {
                            if (Util.verboseApp)
                            {
                                Console.WriteLine("performance Operation Called");
                            }
                            Message msgToWpf1 = new Message();
                            msgToWpf1.fromUrl = Util.makeUrl(srvr.address, srvr.port);
                            msgToWpf1.toUrl   = "http://localhost:8089/CommService";
                            msgToWpf1.content = srvr.createPerformanceMessageForWPF(xdoc, avgTime.ToString());
                            sndr.sendMessage(msgToWpf1);
                            continue;
                        }
                    }

                    catch (Exception e)
                    {
                        Console.WriteLine("Catch " + e.StackTrace + "\n");
                    }


#if (TEST_WPFCLIENT)
                    /////////////////////////////////////////////////
                    // The statements below support testing the
                    // WpfClient as it receives a stream of messages
                    // - for each message received the Server
                    //   sends back 1000 messages
                    //
                    int count = 0;
                    for (int i = 0; i < 2; ++i)
                    {
                        Message testMsg = new Message();
                        testMsg.toUrl   = msg.toUrl;
                        testMsg.fromUrl = msg.fromUrl;
                        testMsg.content = String.Format("test message #{0}", ++count);
                        Console.Write("\n  sending testMsg: {0}", testMsg.content);
                        sndr.sendMessage(testMsg);
                    }
#else
                    /////////////////////////////////////////////////
                    // Use the statement below for normal operation
                    // sndr.sendMessage(msg);
#endif
                }
            };

            if (rcvr.StartService())
            {
                rcvr.doService(serviceAction); // This serviceAction is asynchronous,
            }                                  // so the call doesn't block.
            Util.waitForUser();
        }
 static void Main(string[] args) { 
     Console.Write("\n  starting CommService client");
     Console.Write("\n =============================\n");
     HiResTimer timerReader = new HiResTimer();
     Client clnt = new Client();
     clnt.processCommandLine(args);
     string localPort = args[0];
     clnt.localUrl = "http://localhost:" + localPort + "/CommService";
     string localAddr = Util.urlAddress(clnt.localUrl);
     Receiver rcvr = new Receiver(localPort, localAddr);
     rcvr.setTimerFromClient(timerReader);
     clnt.startRcvrService(rcvr);
     Sender sndr = new Sender(clnt.localUrl);  // Sender needs localUrl for start message
     MessageMaker readerInput = new MessageMaker();
     string fileName = ".\\ReaderClientInput.xml";
     Message msg = new Message();
     int numRequests = Convert.ToInt32(args[1]);
     XDocument xmldoc = XDocument.Load(fileName);
     var requests = xmldoc.Descendants("Request");
     int requestCount = 0, i = 0; List<XElement> totalrequest = new List<XElement>();
     while (i < numRequests) {    //set the specified number of requests to send
         totalrequest.Add(requests.ElementAt(i)); i++;}
     timerReader.Start();
     foreach (var request in totalrequest) {   //send each request to the message maker to create a message
         msg = new Message();
         msg = readerInput.makeMessage(clnt.localUrl, clnt.remoteUrl, request);
         Console.Title = "Reader Client to query the NoSQl database: Querying " + (++requestCount) + " requests";
         if (!sndr.Connect(msg.toUrl)) {      //send url of the destination to the sender
             Console.Write("\n  could not connect in {0} attempts", sndr.MaxConnectAttempts);
             sndr.shutdown();
             rcvr.shutDown();
             return;
         }
         Thread.Sleep(700);
         while (true) {
                 clnt.printMessage(msg);         //print the message contents
                 if (!sndr.sendMessage(msg))     // send the message to the sender
                     return;
                 Thread.Sleep(100);
                 break;}
     sndr.sendLatencyReader(rcvr.avgLatency);}
     Console.Write("\n  Sender's url is {0}", msg.fromUrl);
     Console.Write("\n  Attempting to connect to {0}\n", msg.toUrl);
     msg.content = "done";
     sndr.sendMessage(msg);
     Util.waitForUser();
     rcvr.shutDown();
     sndr.shutdown();
 } } }
Example #15
0
        static void Main(string[] args)
        {
            Util.verbose = false;
            Server srvr = new Server();
            DBEngine <string, DBElement <string, List <string> > > testDict = new DBEngine <string, DBElement <string, List <string> > >();

            srvr.ProcessCommandLine(args);
            double timeTaken = 0, totalTime = 0, insCount = 0;

            srvr.printMessage(srvr);
            Sender        sndr          = new Sender(Util.makeUrl(srvr.address, srvr.port));
            Receiver      rcvr          = new Receiver(srvr.port, srvr.address);
            StringBuilder sb            = new StringBuilder();
            Action        serviceAction = () =>
            {
                Message msg = null;
                while (true)
                {
                    HiResTimer hiResTimer = new HiResTimer();
                    hiResTimer.Start();
                    msg = rcvr.getMessage();   // note use of non-service method to deQ messages
                    srvr.printMessage(msg);
                    if (msg.content == "connection start message")
                    {
                        continue;                                            // don't send back start message
                    }
                    if (msg.fromUrl == "http://localhost:8080/CommService")
                    {
                        continue;
                    }
                    if (msg.content == "done")
                    {
                        Console.Write("\n  client has {0} finished\n", msg.fromUrl); continue;
                    }
                    if (msg.content == "closeServer")
                    {
                        Console.Write("received closeServer"); break;
                    }
                    msg.content = srvr.readOperations(testDict, msg);
                    Util.swapUrls(ref msg);                     // swap urls for outgoing message
#if (TEST_WPFCLIENT)
                    Message testMsg = new Message();
                    testMsg.toUrl   = msg.toUrl;
                    testMsg.fromUrl = msg.fromUrl;
                    testMsg.content = msg.content;
                    sndr.sendMessage(testMsg);
                    hiResTimer.Stop();
                    double diffTime = hiResTimer.ElapsedTimeSpan.TotalSeconds;
                    totalTime     = totalTime + diffTime;
                    timeTaken     = totalTime / (++insCount);
                    Console.Title = "Server client handling " + (insCount) + " requests";
                    srvr.printServerThroughput(timeTaken);
                    sndr.sendServerThroughput((1 / timeTaken));
#else
                    sndr.sendMessage(msg);
#endif
                }
            };

            if (rcvr.StartService())
            {
                rcvr.doService(serviceAction); // This serviceAction is asynchronous,
            }
            Util.waitForUser();                // so the call doesn't block.
        }
Example #16
0
        //
        //----< parse file into identifiers and store in Hashtable >-------

        public void ParseFile(string fileName)
        {
            HiResTimer total = new HiResTimer();
            HiResTimer open  = new HiResTimer();
            HiResTimer parse = new HiResTimer();

            try
            {
                total.Start();
                open.Start();
                StreamReader fs = new StreamReader(fileName);
                open.Stop();
                openTime = open.ElapsedMicroseconds;
                parse.Start();
                int    size = 0;
                string line;
                while ((line = fs.ReadLine()) != null)
                {
                    string[] tokens = line.Split();
                    foreach (string token in tokens)
                    {
                        if (token == "\n" | token.Length == 0)
                        {
                            continue;
                        }
                        if (Verbose)
                        {
                            Console.Write("\n    {0}", token);
                        }
                        string tok, compositeToken = token;
                        while (compositeToken != "")
                        {
                            tok = extractIdent(ref compositeToken);
                            if (tok == "")
                            {
                                continue;
                            }
                            if (Verbose)
                            {
                                Console.Write("\n      {0}", tok);
                            }
                            if (table.Contains(tok))
                            {
                                table[tok] = 1 + (int)table[tok];
                            }
                            else
                            {
                                table[tok] = 1;
                                size      += tok.Length;
                            }
                        }
                    }
                }
                parse.Stop();
                parseTime = parse.ElapsedMicroseconds;
                total.Stop();
                totalTime = total.ElapsedMicroseconds;
                Console.Write("\n   Open time: {0} microsec", openTime);
                Console.Write("\n  Parse time: {0} microsec", parseTime);
                Console.Write("\n  total time: {0} microsec", totalTime);
                Console.Write("\n   Hash size: {0} bytes", size);
            }
            catch
            {
                Console.Write("\n  Could not open file \"{0}\"\n\n", fileName);
            }
        }
        /// <summary>
        /// Mains the specified arguments.
        /// </summary>
        /// <param name="args">The arguments.</param>
        static void Main(string[] args)
        {
            DatabaseController dbController = new DatabaseController();

            Util.verbose = false;
            Server srvr = new Server();

            srvr.ProcessCommandLine(args);
            double totalTime = 0;
            int    count     = 0;

            Console.Title = "Server";
            Console.Write(String.Format("\n  Starting CommService server listening on port {0}", srvr.port));
            Console.Write("\n ====================================================\n");
            Sender   sndr          = new Sender(Util.makeUrl(srvr.address, srvr.port));
            Receiver rcvr          = new Receiver(srvr.port, srvr.address);
            Action   serviceAction = () =>
            {
                Message msg = null;
                while (true)
                {
                    HiResTimer timer = new HiResTimer();
                    timer.Start();
                    msg = rcvr.getMessage();   // note use of non-service method to deQ messages
                    srvr.displayReceivedMsg(msg);
                    if (msg.content == "connection start message")
                    {
                        continue; // don't send back start message
                    }
                    if (msg.content == "done")
                    {
                        Console.Write("\n  client {0} has finished\n", msg.fromUrl);
                        continue;
                    }
                    if (msg.content == "closeServer")
                    {
                        Console.Write("received closeServer");
                        break;
                    }
                    if (msg.fromUrl == "http://localhost:8080/CommService")
                    {
                        continue;
                    }
                    var result = dbController.QueryDatabase(msg.content);
                    msg.content = "received " + msg.content + " from " + msg.fromUrl;
                    Util.swapUrls(ref msg);
                    Message testMsg = new Message {
                        content = result, fromUrl = msg.fromUrl, toUrl = msg.toUrl
                    };
                    srvr.displaySentMsg(msg, result);
                    sndr.sendMessage(testMsg);
                    timer.Stop();
                    sndr.SendServerThroughput(srvr.calculateThroughput(timer, ref totalTime, ++count));
                }
            };

            if (rcvr.StartService())
            {
                rcvr.doService(serviceAction); // so the call doesn't block.
            }
            Util.waitForUser();
        }
Example #18
0
        static void Main(string[] args)
        {
            Util.verbose = false;
            Server srvr = new Server();
            DBEngine<string, DBElement<string, List<string>>> testDict = new DBEngine<string, DBElement<string, List<string>>>();
            srvr.ProcessCommandLine(args);
            double timeTaken = 0, totalTime = 0, insCount = 0;
            srvr.printMessage(srvr);
            Sender sndr = new Sender(Util.makeUrl(srvr.address, srvr.port));
            Receiver rcvr = new Receiver(srvr.port, srvr.address);
            StringBuilder sb = new StringBuilder();
            Action serviceAction = () =>
            {
                Message msg = null;
                while (true)
                {
                    HiResTimer hiResTimer = new HiResTimer();
                    hiResTimer.Start();
                    msg = rcvr.getMessage();   // note use of non-service method to deQ messages            
                    srvr.printMessage(msg);
                    if (msg.content == "connection start message") continue; // don't send back start message
                    if (msg.fromUrl == "http://localhost:8080/CommService") continue;
                    if (msg.content == "done")
                    { Console.Write("\n  client has {0} finished\n",msg.fromUrl); continue; }
                    if (msg.content == "closeServer")
                    { Console.Write("received closeServer"); break; }
                    msg.content = srvr.readOperations(testDict, msg);
                    Util.swapUrls(ref msg);                     // swap urls for outgoing message
#if (TEST_WPFCLIENT)
                    Message testMsg = new Message();
                    testMsg.toUrl = msg.toUrl;
                    testMsg.fromUrl = msg.fromUrl;
                    testMsg.content = msg.content;
                    sndr.sendMessage(testMsg);
                    hiResTimer.Stop();
                    double diffTime = hiResTimer.ElapsedTimeSpan.TotalSeconds;
                    totalTime = totalTime + diffTime;
                    timeTaken = totalTime / (++insCount);
                    Console.Title = "Server client handling " + (insCount) + " requests";
                    srvr.printServerThroughput(timeTaken);
                    sndr.sendServerThroughput((1 / timeTaken));
#else
                              sndr.sendMessage(msg);
#endif
                }
            };
            if (rcvr.StartService())
                rcvr.doService(serviceAction); // This serviceAction is asynchronous,
            Util.waitForUser(); // so the call doesn't block.
        }
Example #19
0
 public void setTimerFromClient(HiResTimer timerClient)
 {
     timerRcvr = timerClient;
 }
Example #20
0
        //Test stub for the High resolution timer

        static void Main(string[] args)
        {
            HiResTimer timerHiRes =  new HiResTimer();
            timerHiRes.Start();
            Thread.Sleep(1000);
            timerHiRes.Stop();
            double elpasedTime = timerHiRes.ElapsedTimeSpan.TotalSeconds;
            Console.WriteLine("\n The elpased time from starting of the timer till the timer is stopped is: {0} sec", elpasedTime);
        }
Example #21
0
 static void Main(string[] args)
 {
     Console.Write("\n  starting CommService client");
     Console.Write("\n =============================\n");
     Console.Title = "Test Executive Client to display the results of remote NoSQL database operations";
     TestExec clnt = new TestExec();
     clnt.processCommandLine(args);
     HiResTimer timerTestExec = new HiResTimer();
     string localPort = Util.urlPort(clnt.localUrl);
     string localAddr = Util.urlAddress(clnt.localUrl);
     Receiver rcvr = new Receiver(localPort, localAddr);
     rcvr.setTimerFromClient(timerTestExec);
     clnt.startRcvrService(rcvr);
     Console.WriteLine("\n The Message request is");
     Console.Write("\n =================================\n");
     Sender sndr = new Sender(clnt.localUrl);  // Sender needs localUrl for start message
     MessageMaker testExecInput = new MessageMaker(); 
     Message msg = new Message();
     string fileName = ".\\TestExecInput.xml"; 
     XDocument xmldoc = XDocument.Load(fileName);
     var requests = xmldoc.Descendants("Request");
     int requestCount = 0, readers = 0, writers = 0, portReader = 0, portWriter = 0, numberOfRequests = 0, numberOfRequestsWriters = 0;
     string readerDisplay = "", writerDisplay = "";
     clnt.getReadersWritersCount(xmldoc, ref readers, ref writers, ref portReader, ref portWriter, ref numberOfRequests, ref readerDisplay, ref writerDisplay, ref numberOfRequestsWriters);
     timerTestExec.Start();
     foreach (var request in requests)
     {   //send each request to construct message and send it to the server
         clnt.sendEachRequest(request,clnt,msg,sndr,rcvr,testExecInput);
         Console.Title = "TestExec Client to display the NoSQl database operations: Operations " + (++requestCount) + " are Sent";
     }
     msg.content = "done";
     Util.waitForUser();
     rcvr.shutDown();
     sndr.shutdown();
     Console.Write("\n\n");
     if(args.Count() != 0)
     {
         readers = Convert.ToInt32(args[0]);
         writers = Convert.ToInt32(args[1]);
         numberOfRequests = Convert.ToInt32(args[2]);
         numberOfRequestsWriters = Convert.ToInt32(args[3]);
     }
     for(int i = 1; i <= writers; i++)
     {
         System.Diagnostics.Process.Start(".\\Client\\bin\\Debug\\Client.exe",""+(portWriter++) + " " + numberOfRequestsWriters + " "+writerDisplay);
     }
     for(int j = 1; j <= readers; j++)
     {
         System.Diagnostics.Process.Start(".\\Client2\\bin\\Debug\\Client2.exe",(""+(portReader++)+" "+numberOfRequests+" "+readerDisplay));
     }
 }
Example #22
0
 public void setTimerFromClient(HiResTimer timerClient)
 {
     timerRcvr = timerClient;
 }