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("{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); }
//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); }
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(); }
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(); }
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; }
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(); }
//----< 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(); } } }
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. }
// //----< 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(); }
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. }
public void setTimerFromClient(HiResTimer timerClient) { timerRcvr = timerClient; }
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)); } }