예제 #1
0
        static void Main(string[] args)
        {
            Console.WriteLine("  The intent of the write client is to stress the database with write operations.");
            Console.WriteLine("  Write operations - Insert, Delete, Edit name, Edit Description and Add Children.");
            Console.WriteLine("\n  If log option is enabled, messsages are logged to this console window as they are sent.");
            Console.WriteLine("  If log is enabled result of response is displayed as responses are received from server.");
            Console.WriteLine("  If log option is disabled, only latency time for each operation is disaplyed on the console window.");
            Client clnt = new Client();

            clnt.processCommandLine(args);
            bool log_message = clnt.processCommandLineForWriteLog(args);

            if (log_message)
            {
                Console.WriteLine("  (Log option is Enabled for this client)");
            }
            else
            {
                Console.WriteLine("  (Log option is Disabled for this client)");
            }
            string   localPort = Util.urlPort(clnt.localUrl);
            string   localAddr = Util.urlAddress(clnt.localUrl);
            Receiver rcvr      = new Receiver(localPort, localAddr);
            string   win_title = "Write Client - " + localPort;

            Console.Title = win_title;
            Sender sndr = new Sender(clnt.localUrl);  // Sender needs localUrl for start message
            Action client_receive_action = clnt.define_receive_action(rcvr, sndr, log_message, localPort);

            if (rcvr.StartService())
            {
                rcvr.doService(client_receive_action);
            }
            Message msg = new Message();

            msg.fromUrl = clnt.localUrl;
            msg.toUrl   = clnt.remoteUrl;
            Console.WriteLine("\n\n  Starting CommService  Write client");
            Console.Write("  =============================");
            Console.Write("\n  Write client local url is {0}", msg.fromUrl);
            Console.Write("\n  Attempting to connect to server on {0}\n", msg.toUrl);
            if (!sndr.Connect(msg.toUrl))
            {
                Console.Write("\n  Could not connect to server in {0} attempts, closing application.", sndr.MaxConnectAttempts);
                sndr.shutdown();
                rcvr.shutDown();
                return;
            }
            Console.WriteLine("\n  *****************************\n  Going to read messages present in XML file - Write_Client_XML.xml and send them sequentially to server.\n  *****************************");
            clnt.send_messages(sndr, msg, "./../../../../SavedXMLFiles/Write_Client_XML.xml", log_message);
            Thread.Sleep(100);
            msg.content = "done";
            sndr.sendMessage(msg);
            Util.waitForUser();
            // shut down this client's Receiver and Sender by sending close messages
            rcvr.shutDown();
            sndr.shutdown();
            Console.Write("\n\n");
        }
예제 #2
0
        static void Main(string[] args)
        {
            Thread.Sleep(2000);
            Console.Write("\n  starting CommService client");
            Console.Write("\n =============================\n");
            Console.Title = "Reader Client";
            Client clnt = new Client();

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

            if (rcvr.StartService())
            {
                rcvr.doService(rcvr.defaultServiceAction());
            }
            Sender  sndr = new Sender(clnt.localUrl); // Sender needs localUrl for start message
            Message msg  = new Message();

            msg.fromUrl = clnt.localUrl;
            msg.toUrl   = clnt.remoteUrl;
            Console.Write("\n  sender's url is {0}", msg.fromUrl);
            Console.Write("\n  attempting to connect to {0}\n", msg.toUrl);
            if (!sndr.Connect(msg.toUrl))
            {
                Console.Write("\n  could not connect in {0} attempts", sndr.MaxConnectAttempts);
                sndr.shutdown();
                rcvr.shutDown();
                return;
            }
            clnt.hrt.Start();
            rcvr.setTotalMessageSize(clnt.getMsgLen("XMLReader.xml"));
            clnt.readMsgTemplate("XMLReader.xml", sndr);
            while (true)
            {
                if (rcvr.getLastFlag())
                {
                    clnt.hrt.Stop();
                    break;
                }
            }
            ulong latency = clnt.hrt.ElapsedMicroseconds;

            clnt.travelLatency(latency, sndr);
            msg.content = "done";
            sndr.sendMessage(msg);
            // Wait for user to press a key to quit.
            // Ensures that client has gotten all server replies.
            Util.waitForUser();
            // shut down this client's Receiver and Sender by sending close messages
            rcvr.shutDown();
            sndr.shutdown();
            Console.Write("\n\n");
        }
예제 #3
0
        static void Main(string[] args)
        {
            Console.WriteLine("  The intent of the demo client is to demonstarte that all the operations of Project-2 can be executed remotely.");
            Console.WriteLine("  All the request messages stored in /SavedXMLFiles/Demo_Client_XML.xml are sent to server sequentially.");
            Console.WriteLine("  The Demo_Client_XML.xml file consists of Write operations, Read operations and Persist operations.");
            Console.WriteLine("  Write operations - Insert, Delete, Edit Name, Edit Description and Add Children");
            Console.WriteLine("  Read operations - Get Value, Get Children, Get Keys with string pattern in metadata");
            Console.WriteLine("  PErsist operations - Persist database, Load Database");
            Console.WriteLine("\n  The DB contents are displayed on the server only in case of demo client to show the successful operations on DB.");
            Console.WriteLine("  These are displayed to show to user that operations are successfully performed on the database.");
            Console.WriteLine("\n  ******************\n  To launch the readers and writers enter any key on the TestExecutive window.");
            Console.WriteLine("  You can verify all types of operations done and displayed on server window, before launching readers and writers.");
            Console.Write("\n  Starting CommService for demo client");
            Console.Write("\n ================================\n");
            Thread.Sleep(1000);
            bool   log_message = true;
            Client clnt        = new Client();

            clnt.processCommandLine(args);
            Receiver rcvr      = new Receiver(Util.urlPort(clnt.localUrl), Util.urlAddress(clnt.localUrl));
            string   win_title = "Demo Client - " + Util.urlPort(clnt.localUrl);

            Console.Title = win_title;
            Action client_receive_action = clnt.define_receive_action(rcvr, log_message);

            if (rcvr.StartService())
            {
                rcvr.doService(client_receive_action);
            }
            Sender  sndr = new Sender(clnt.localUrl); // Sender needs localUrl for start message
            Message msg  = new Message();

            msg.fromUrl = clnt.localUrl;
            msg.toUrl   = clnt.remoteUrl;
            Console.Write("\n  Demo client local url is {0}", msg.fromUrl);
            Console.Write("\n  Attempting to connect to server on {0}\n", msg.toUrl);
            if (!sndr.Connect(msg.toUrl))
            {
                Console.Write("\n  could not connect in {0} attempts", sndr.MaxConnectAttempts);
                sndr.shutdown();
                rcvr.shutDown();
                return;
            }
            clnt.send_messages(sndr, msg, "./../../../../SavedXMLFiles/Demo_Client_XML.xml", log_message);
            Thread.Sleep(100);
            msg.content = "done";
            sndr.sendMessage(msg);
            // Wait for user to press a key to quit. Ensures that client has gotten all server replies.
            Util.waitForUser();
            // shut down this client's Receiver and Sender by sending close messages
            rcvr.shutDown();
            sndr.shutdown();
            Console.Write("\n\n");
        }
예제 #4
0
 public void sendEachRequest(XElement request,TestExec clnt, Message msg, Sender sndr, Receiver rcvr, MessageMaker testExecInput)
 {//send each request to construct xml request message and send it to the server
     msg = new Message();
     msg = testExecInput.makeMessage(clnt.localUrl, clnt.remoteUrl, request);
     if (!sndr.Connect(msg.toUrl))
     {
         Console.Write("\n  could not connect in {0} attempts", sndr.MaxConnectAttempts);
         sndr.shutdown();
         rcvr.shutDown();
         return;
     }
     while (true)
     {
         //msg.content = "Message #" + (++counter).ToString();
         Console.Write("\n============Start of the Message==========\n");
         Console.Write("\n  Sending Message:");
         Console.Write("\n==========================\n");
         Console.WriteLine(msg.content);
         Console.WriteLine("==================End of Message===============");
         if (!sndr.sendMessage(msg))
             return;
         Thread.Sleep(100);
         break;
     }
 }
 public void sendEachRequest(XElement request, TestExec clnt, Message msg, Sender sndr, Receiver rcvr, MessageMaker testExecInput)
 {//send each request to construct xml request message and send it to the server
     msg = new Message();
     msg = testExecInput.makeMessage(clnt.localUrl, clnt.remoteUrl, request);
     if (!sndr.Connect(msg.toUrl))
     {
         Console.Write("\n  could not connect in {0} attempts", sndr.MaxConnectAttempts);
         sndr.shutdown();
         rcvr.shutDown();
         return;
     }
     while (true)
     {
         //msg.content = "Message #" + (++counter).ToString();
         Console.Write("\n============Start of the Message==========\n");
         Console.Write("\n  Sending Message:");
         Console.Write("\n==========================\n");
         Console.WriteLine(msg.content);
         Console.WriteLine("==================End of Message===============");
         if (!sndr.sendMessage(msg))
         {
             return;
         }
         Thread.Sleep(100);
         break;
     }
 }
예제 #6
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);
     }
 }
        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));
            }
        }
예제 #8
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();
        }
예제 #9
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();
        }
예제 #10
0
        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();
        }
예제 #11
0
        static void Main(string[] args)
        {
            Console.Write("\n  starting CommService client");
            Console.Write("\n =============================\n");

            Console.Title = "Client #2";

            Client clnt = new Client();

            clnt.processCommandLine(args);

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

            if (rcvr.StartService())
            {
                rcvr.doService(rcvr.defaultServiceAction());
            }

            Sender sndr = new Sender(clnt.localUrl); // Sender needs localUrl for start message

            Message msg = new Message();

            msg.fromUrl = clnt.localUrl;
            msg.toUrl   = clnt.remoteUrl;

            Console.Write("\n  sender's url is {0}", msg.fromUrl);
            Console.Write("\n  attempting to connect to {0}\n", msg.toUrl);

            if (!sndr.Connect(msg.toUrl))
            {
                Console.Write("\n  could not connect in {0} attempts", sndr.MaxConnectAttempts);
                sndr.shutdown();
                rcvr.shutDown();
                return;
            }

            int numMsgs = 5;
            int counter = 0;

            while (true)
            {
                msg         = new Message();
                msg.fromUrl = clnt.localUrl;
                msg.toUrl   = clnt.remoteUrl;
                msg.content = "Message #" + (++counter).ToString();
                Console.Write("\n  sending {0}", msg.content);
                if (!sndr.sendMessage(msg))
                {
                    return;
                }
                /////////////////////////////////////////////////////////////////
                // The delay, below, can now be removed without changing the
                // sending behavior except that it becomes faster.  However
                // We want to simulate a "normal" minimum delay between messages
                // to measure latency and server throughput.  Without the delay
                // the server's queue will very quickly contain a large number
                // of messages and we won't be accurately representing the system
                // behavior for a single client and server.
                //
                // Instead, we stress the server by running multiple clients
                // concurrently.
                //
                Thread.Sleep(100);
                if (counter >= numMsgs)
                {
                    break;
                }
            }
            msg         = new Message();
            msg.fromUrl = clnt.localUrl;
            msg.toUrl   = clnt.remoteUrl;
            msg.content = "done";
            sndr.sendMessage(msg);

            // Wait for user to press a key to quit.
            // Ensures that client has gotten all server replies.
            Util.waitForUser();

            // shut down this client's Receiver and Sender by sending close messages
            rcvr.shutDown();
            sndr.shutdown();

            Console.Write("\n\n");
        }
예제 #12
0
 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();
 } } }
예제 #13
0
 /// <summary>
 ///  Performance testing by inserting items
 /// </summary>
 /// <param name="hres"></param>
 /// <param name="msg"></param>
 /// <param name="clnt"></param>
 /// <param name="rcvr"></param>
 /// <param name="sndr"></param>
 private static void PerformanceTesting(HiResTimer hres, Message msg, WriterClient clnt, Receiver rcvr, Sender sndr)
 {
     try
     {
         XmlTextReader textReader = new XmlTextReader("Input.xml");
         string xmlStr = "";
         HiResTimer t = new HiResTimer();
         t.Start();
         if (File.Exists("Input.xml"))
         {
             XDocument docTemp;
             string key, msgid;
             xmlStr = InsertPerformance(hres, msg, clnt, sndr, xmlStr, out docTemp, out key, out msgid);
             string keyUp;
             XElement l;
             UpdatePerformance(msg, clnt, sndr, ref xmlStr, out docTemp, key, ref msgid, out keyUp, out l);
             //Delete entries
             docTemp = DeletePerformance(msg, clnt, sndr, ref xmlStr, key, ref msgid, ref keyUp, l);
         }
         t.Stop();
         clnt.WriteClientTime = t.ElapsedMicroseconds;
         msg = new Message();
         msg.fromUrl = clnt.localUrl;
         msg.toUrl = clnt.remoteUrl;
         msg.content = "done";
         sndr.sendMessage(msg);
         // Wait for user to press a key to quit.
         Util.waitForUser();
         // shut down this client's Receiver and Sender by sending close messages
         rcvr.shutDown();
         sndr.shutdown();
         Console.Write("\n\n");
     }
     catch (CustomException ex)
     {
         throw new CustomException("Error in main of peformance testing", ex);
     }
 }
 //--------< shutdown receiver and sender >---------------------------
 private static void shutdown(Receiver rcvr, Sender sndr)
 {
   sndr.shutdown();
   rcvr.shutDown();
 }
 public void shutDown()
 {
     rcvr.shutDown();
     sndr.shutdown();
 }
예제 #16
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));
     }
 }
예제 #17
0
        static void Main(string[] args)
        {
            //Thread.Sleep(1500);
            Console.Write("\n  starting CommService writer client");
            Console.Write("\n =======================================\n");
            Console.Write("\n XML for Reading template is XMLWriter.xml");
            Console.Write("\n =======================================\n");
            Console.Write("\n If Verbose switch is off, then all logs are logged into WPF Client/GUI.");
            Console.Write("\n =====================================================================\n");
            Console.Write("\n Demonstrating Requirement #4 by sending add/delete/edit/persist/augment messages from writer client to server.");
            Console.Write("\n Demonstrating Requirement #5 by taking format of request from XML and showing performance on GUI as well as on Console(If logging switch is on).");
            Console.Title = "Client #1";

            Client clnt = new Client();

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

            if (rcvr.StartService())
            {
                rcvr.doService(rcvr.defaultServiceAction());
            }
            Sender  sndr = new Sender(clnt.localUrl); // Sender needs localUrl for start message
            Message msg  = new Message();

            msg.fromUrl = clnt.localUrl;
            msg.toUrl   = clnt.remoteUrl;

            Console.Write("\n  sender's url is {0}", msg.fromUrl);
            Console.Write("\n  attempting to connect to {0}\n", msg.toUrl);

            if (!sndr.Connect(msg.toUrl))
            {
                Console.Write("\n  could not connect in {0} attempts", sndr.MaxConnectAttempts);
                sndr.shutdown();
                rcvr.shutDown();
                return;
            }

            clnt.hrt.Start();
            rcvr.setTotalMessageSize(clnt.getMessageSize("XMLWriter.xml"));
            clnt.readMessageTemplates("XMLWriter.xml", sndr);
            while (true)
            {
                if (rcvr.getLastFlag())
                {
                    clnt.hrt.Stop();
                    break;
                }
            }
            ulong latency = clnt.hrt.ElapsedMicroseconds;
            int   lat     = Convert.ToInt32(latency);

            clnt.transportInformation(latency, sndr);
            msg.content = "done";
            sndr.sendMessage(msg);
            // Wait for user to press a key to quit.
            // Ensures that client has gotten all server replies.
            Util.waitForUser();
            // shut down this client's Receiver and Sender by sending close messages
            rcvr.shutDown();
            sndr.shutdown();
            Console.Write("\n\n");
        }
예제 #18
0
        static void Main(string[] args)
        {
            Console.Write("\n  Starting Writer client");
            Console.Write("\n =============================\n");
            Console.Title = "Writer";
            Client clnt = new Client();

            try
            {
                clnt.processCommandLine(args);
                string   localPort = Util.urlPort(clnt.localUrl);
                string   localAddr = Util.urlAddress(clnt.localUrl);
                Receiver rcvr      = new Receiver(localPort, localAddr);
                Sender   sndr      = new Sender(clnt.localUrl); // Sender needs localUrl for start message

                if (rcvr.StartService())
                {
                    rcvr.doService(rcvr.defaultServiceAction());
                }

                Message msg = new Message();
                msg.fromUrl = clnt.localUrl;
                msg.toUrl   = clnt.remoteUrl;

                Console.Write("\n  sender's url is {0}", msg.fromUrl);
                Console.Write("\n  attempting to connect to {0}\n", msg.toUrl);

                if (!sndr.Connect(msg.toUrl))
                {
                    Console.Write("\n  could not connect in {0} attempts", sndr.MaxConnectAttempts);
                    sndr.shutdown();
                    rcvr.shutDown();
                    return;
                }

                clnt.timer.Start();
                clnt.readMessageTemplates("XMLWriter.xml");
                if (clnt.listOfMsgs.Count() > 0)
                {
                    rcvr.setTotalMessageSize(clnt.getTotalNumberOfMessages(clnt.listOfMsgs));
                    clnt.processMessages(clnt.listOfMsgs, sndr);
                    while (true)
                    {
                        if (rcvr.getLastFlag())
                        {
                            clnt.timer.Stop();
                            break;
                        }
                    }
                }
                ulong latency = clnt.timer.ElapsedMicroseconds;
                clnt.sendPerformanceMessage(latency, sndr);
                msg.content = "done";
                sndr.sendMessage(msg);
                // Wait for user to press a key to quit.
                // Ensures that client has gotten all server replies.
                Util.waitForUser();
                // shut down this client's Receiver and Sender by sending close messages
                rcvr.shutDown();
                sndr.shutdown();
                Console.Write("\n\n");
            }
            catch (Exception e)
            {
                Console.Write("Invalid XMl file or some exception occured.");
                Console.Write("Exception : " + e.StackTrace);
                throw;
            }
        }
예제 #19
0
    static void Main(string[] args)
    {
try
        {
            HiResTimer hres = new HiResTimer(); //High Resolution Timer
            Console.Write("\nStarting CommService write client");
            Console.Write("\n =============================\n");
            Console.Title = "Write Client";
            Message msg = new Message();
            WriterClient clnt = new WriterClient();
            clnt.processCommandLine(args);
            string localPort = Util.urlPort(clnt.localUrl);
            string localAddr = Util.urlAddress(clnt.localUrl);
            Receiver rcvr = new Receiver(localPort, localAddr);
            Action serviceAction = DefineServiceAction(hres, clnt, rcvr);
            if (rcvr.StartService())
                rcvr.doService(serviceAction);
            Sender sndr = new Sender(clnt.localUrl);  // Sender needs localUrl for start message         
            msg.fromUrl = clnt.localUrl;
            msg.toUrl = clnt.remoteUrl;
            Console.Write("Sender's url is {0}", msg.fromUrl);
            Console.Write("Attempting to connect to {0}\n", msg.toUrl);
            if (!sndr.Connect(msg.toUrl))
            {
                Console.Write("Could not connect in {0} attempts\n", sndr.MaxConnectAttempts);
                sndr.shutdown();
                rcvr.shutDown();
                return;
            }
            PerformanceTesting(hres, msg, clnt, rcvr, sndr);
        }
        catch (CustomException ex)
        {
            throw new CustomException("Error in main of writer client", ex);
        }
    }
예제 #20
0
        static void Main(string[] args)
        {
            Console.WriteLine("  The intent of the read client is to stress the database with read operations.\n  Read operations - Get DBElement with key, Get children of DBElement, Get keys of DBElements with particular pattern.");
            Console.WriteLine("\n  If partial log option is enabled, only a partial part of the response messsage is logged to this console window.(latency and part of result)\n  If Partial log option is not enabled, entire result is displayed on the GUI.");
            Console.WriteLine("  For all requests, latency time for each message is displayed on this window and WPF GUI.");
            Console.WriteLine("  Once all request messages are received, average latency times are updated in WPF GUI.");
            Client clnt = new Client();

            clnt.processCommandLine(args);
            bool log_message = true;

            if (clnt.processCommandLineForPartialLog(args))
            {
                log_message = false;
            }
            if (!log_message)
            {
                Console.WriteLine("  (Partial log option is enabled for this client)");
            }
            else
            {
                Console.WriteLine(" (Partial log option is not enabled for this client.)");
            }

            Console.Write("\n  Starting CommService Read client");
            Console.Write("\n  =============================\n");
            string   localPort = Util.urlPort(clnt.localUrl);
            string   localAddr = Util.urlAddress(clnt.localUrl);
            Receiver rcvr      = new Receiver(localPort, localAddr);
            string   win_title = "Read Client - " + localPort;

            Console.Title = win_title;

            Sender sndr = new Sender(clnt.localUrl);  // Sender needs localUrl for start message
            Action client_receive_action = clnt.define_receive_action(rcvr, log_message, sndr, localPort);

            if (rcvr.StartService())
            {
                rcvr.doService(client_receive_action);
            }
            Message msg = new Message();

            msg.fromUrl = clnt.localUrl;
            msg.toUrl   = clnt.remoteUrl;
            Console.Write("\n  sender's url is {0}", msg.fromUrl);
            Console.Write("\n  attempting to connect to {0}\n", msg.toUrl);
            if (!sndr.Connect(msg.toUrl))
            {
                Console.Write("\n  could not connect in {0} attempts", sndr.MaxConnectAttempts);
                sndr.shutdown();
                rcvr.shutDown();
                return;
            }
            Console.WriteLine("\n  *****************************\n  Going to read messages present in XML file - Read_Client_XML.xml and send them sequentially to server.\n  *****************************");
            clnt.send_messages(sndr, msg, "./../../../../SavedXMLFiles/Read_Client_XML.xml", log_message);
            Thread.Sleep(100);
            msg.content = "done";
            sndr.sendMessage(msg);
            Util.waitForUser();
            rcvr.shutDown();
            sndr.shutdown();
            Console.Write("\n\n");
        }
 /// <summary>
 /// Main program entry
 /// </summary>
 /// <param name="args"></param>
 static void Main(string[] args)
 {
     Console.Write("\nStarting CommService write client");
     Console.Write("\n =============================\n");
     Console.Title = "Project 2 Requirements Testing";
     BasicRequirementTest clnt = new BasicRequirementTest();
     clnt.processCommandLine(args);
     string localPort = Util.urlPort(clnt.localUrl);
     string localAddr = Util.urlAddress(clnt.localUrl);
     Receiver rcvr = new Receiver(localPort, localAddr);
     if (rcvr.StartService())
         rcvr.doService(rcvr.defaultServiceAction());
     Sender sndr = new Sender(clnt.localUrl);  // Sender needs localUrl for start message
     Message msg = new Message();
     msg.fromUrl = clnt.localUrl;
     msg.toUrl = clnt.remoteUrl;
     Console.Write("\nSender's url is {0} \n", msg.fromUrl);
     Console.Write("\nAttempting to connect to {0}\n", msg.toUrl);
     if (!sndr.Connect(msg.toUrl))
     {
         Console.Write("\n  could not connect in {0} attempts", sndr.MaxConnectAttempts);
         sndr.shutdown();
         rcvr.shutDown();
         return;
     }
     string key = "";
     clnt.TestR2(ref msg, sndr, ref key);
     clnt.TestR3(ref msg, sndr);
     clnt.TestR4(ref msg, sndr, key);
     clnt.TestR5(ref msg, sndr);
     clnt.TestR6(ref msg, sndr);
     clnt.TestR7A(ref msg, sndr);
     clnt.TestR7B(ref msg, sndr);
     clnt.TestR7C(ref msg, sndr);
     clnt.TestR7D(ref msg, sndr);
     clnt.TestR7E(ref msg, sndr);
     clnt.TestR8(ref msg, sndr);
     clnt.TestR9(ref msg, sndr);
     Util.waitForUser();            // Wait for user to press a key to quit.
     rcvr.shutDown();               // shut down this client's Receiver and Sender by sending close messages
     sndr.shutdown();
     Console.Write("\n\n");
 }
예제 #22
0
 static void Main(string[] args)
 {
        HiResTimer hres = new HiResTimer(); //High Resolution Timer
     Console.Write("\nStarting CommService Read client");
     Console.Write("\n =============================\n");
     Console.Title = "Read Client";
     Message msg = new Message();
     ReadClient clnt = new ReadClient();
     clnt.processCommandLine(args);
     string localPort = Util.urlPort(clnt.localUrl);
     string localAddr = Util.urlAddress(clnt.localUrl);
     Receiver rcvr = new Receiver(localPort, localAddr);
     Action serviceAction = DefineServiceAction(hres, clnt, rcvr);
     if (rcvr.StartService())
         rcvr.doService(serviceAction);
     Sender sndr = new Sender(clnt.localUrl);  // Sender needs localUrl for start message         
     msg.fromUrl = clnt.localUrl;
     msg.toUrl = clnt.remoteUrl;
     Console.Write("Sender's url is {0}", msg.fromUrl);
     Console.Write("Attempting to connect to {0}\n", msg.toUrl);
     if (!sndr.Connect(msg.toUrl))
     {
         Console.Write("Could not connect in {0} attempts\n", sndr.MaxConnectAttempts);
         sndr.shutdown();
         rcvr.shutDown();
         return;
     }
     msg = PerformanceTest(hres, msg, clnt, sndr);
     // Wait for user to press a key to quit.
     Util.waitForUser();
     // shut down this client's Receiver and Sender by sending close messages
     rcvr.shutDown();
     sndr.shutdown();
     Console.Write("\n\n");
 }