static void Main(string[] args)
    {
      Util.verbose = false;
      Server srvr = new Server();
      srvr.ProcessCommandLine(args);
      
      Console.Title = "Server: " + srvr.port.ToString();
      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.
      
      if (rcvr.StartService())
      {
        rcvr.doService(doserviceAction(sndr, rcvr, srvr)); // This serviceAction is asynchronous,
      }
      // so the call doesn't block.
      Util.waitForUser(); 
    }
 public void parse(XDocument newDoc, ref Message msg, Sender sndr)
 {
     Console.WriteLine(newDoc.ToString());
       Console.WriteLine();
       var root = newDoc.Root.Elements("DB");
       foreach (XElement Root in root)
       {
     string keytype, payloadtype = "";
     keytype = Root.Element("KeyType").Value.ToString();
     payloadtype = Root.Element("PayloadType").Value.ToString();
     msg.content = "keytype," + keytype + ",payloadtype," + payloadtype;
     Console.WriteLine("\n" + msg.content);
     var query = Root.Elements("Query");
     IEnumerator<XElement> x = query.GetEnumerator();
     string message = new String(msg.content.ToCharArray());
     while (x.MoveNext())
     {
       msg.content += ",query,";
       string querytype = "";
       querytype = x.Current.Element("QueryType").Value.ToString();
       msg.content += "querytype," + querytype;
       parseQuery(querytype, x, ref msg, sndr);
       msg.content = message;
     }
       }
 }
 private static void parseQuery(string querytype, IEnumerator<XElement> x, ref Message msg1, Sender sndr)
 {
     Message msg = new Message();
       msg.fromUrl = msg1.fromUrl;
       msg.toUrl = msg1.toUrl;
       msg.content = msg1.content.ToString();
       switch (querytype)
       {
     case "Search Key-Value":
       search_key_value(x, ref msg, sndr);
       break;
     case "Search Children":
       search_children(x, ref msg, sndr);
       break;
     case "Pattern Matching":
       pattern_matching(x, ref msg, sndr);
       break;
     case "String in Metadata":
       string_metadata(x, ref msg, sndr);
       break;
     case "Time-Date Interval":
       time_date_interval(x, ref msg, sndr);
       break;
     case "Restore":
       restore_database(x, ref msg, sndr);
       break;
       }
 }
Example #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;
     }
 }
 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)
 {
   Console.Write("\n  starting CommService client");
   Console.Write("\n =============================\n");
   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);
   Console.Title = "Write Client: " + localPort;
   if (rcvr.StartService())
     rcvr.doService(doserviceAction(rcvr));
   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);
     shutdown(rcvr, sndr);
     return;
   }
   "Reading write1.xml file".title();
   string path = Path.GetFullPath("../../../Write Client/bin/Debug/write1.xml");
   XDocument newDoc = XDocument.Load(path);
   clnt.write_clinet_parse.Start();
   Parser p = new Parser(logger_flag);
   p.parse(newDoc, ref msg, sndr);
   Message msg1 = new Message();
   msg1.fromUrl = clnt.localUrl;
   msg1.toUrl = clnt.remoteUrl;
   msg1.content = "done";
   sndr.sendMessage(msg1);
   clnt.write_clinet_parse.Stop();
   Message msg2 = new Message();
   msg2.fromUrl = clnt.localUrl;
   msg2.toUrl = clnt.remoteUrl;
   msg2.content = "write-client," + clnt.write_clinet_parse.ElapsedMicroseconds;
   sndr.sendMessage(msg2);
   Console.WriteLine("\n\nWrite-Client Processing Time: " + clnt.write_clinet_parse.ElapsedMicroseconds + " microseconds\n");
   // 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
   shutdown(rcvr, sndr);
   Console.Write("\n\n");
 }
Example #7
0
 /// <summary>
 /// Proces wheh the response has been received
 /// </summary>
 /// <param name="srvr"></param>
 /// <param name="sndr"></param>
 /// <param name="msg"></param>
 /// <param name="msgid"></param>
 private static void ProcessResponse(Server srvr, Sender sndr, ref Message msg, ref string msgid)
 {
     HiResTimer hres = new HiResTimer(); //High Resolution Timer
     hres.Start();
     XDocument doc = XDocument.Load(new StringReader(msg.content));
     string op = doc.Descendants("Operation").Select(i => i).Single().Value;
     if (op == "Read")
         srvr.ProcessReadMessage(ref msg, ref msgid);
     else
         srvr.ProcessMessage(ref msg, ref msgid);
     hres.Stop();
     Console.WriteLine("Server execution time for processing message(MsgID:{0}) is {1} microseconds \n", msgid, hres.ElapsedMicroseconds);
     Util.swapUrls(ref msg);  // swap urls for outgoing message
     if (srvr.tot.ContainsKey(msg.toUrl))
     {
         ulong x = ulong.Parse(srvr.tot[msg.toUrl].ToString());
         x += hres.ElapsedMicroseconds;
         srvr.tot[msg.toUrl] = x.ToString();
     }
     else
         srvr.tot[msg.toUrl] = hres.ElapsedMicroseconds;
     sndr.sendMessage(msg);
 }
 //---------< send test performance data to WPF client >-------
 private static void send_test_result(ref Message msg, ref ulong read_clnt_latency_time, ulong write_clnt_process_time, ulong server_throughput_time, int counter_read, int counter_write, Sender sndr)
 {
   msg.content = "test-result";
   if (counter_write > 0)
     msg.content += ", average write-client processing time is: " + (write_clnt_process_time / Convert.ToUInt64(counter_write)) + "microseconds";
   if (counter_read > 0)
     msg.content += ", average read-client latency time is: " + (read_clnt_latency_time / Convert.ToUInt64(counter_read)) + "microseconds";
   if (counter_read > 0 || counter_write > 0)
     msg.content += ", average Server Query Processing/Throughput Time is: " + (server_throughput_time / Convert.ToUInt64((counter_read + counter_write)) + "microseconds");
   else
     msg.content += ", performance tests yet to finish";
   Util.swapUrls(ref msg);
   Console.WriteLine("\n\n Sending Message: " + msg.content + "\n\n");
   sndr.sendMessage(msg);
 }
    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);
        }
    }
Example #10
0
 /// <summary>
 /// UpdatePerformance for the client
 /// </summary>
 /// <param name="msg"></param>
 /// <param name="clnt"></param>
 /// <param name="sndr"></param>
 /// <param name="xmlStr"></param>
 /// <param name="docTemp"></param>
 /// <param name="key"></param>
 /// <param name="msgid"></param>
 /// <param name="keyUp"></param>
 /// <param name="l"></param>
 private static void UpdatePerformance(Message msg, WriterClient clnt, Sender sndr, ref string xmlStr, out XDocument docTemp, string key, ref string msgid, out string keyUp, out XElement l)
 {
     //Update performance testing
     docTemp = XDocument.Load("Input.xml");
     keyUp = "";
     l = docTemp.Descendants("OperationMessage").Where(d => d.Element("Operation").Value == "Update").Select(i => i).Single();
     clnt.numMsgs = int.Parse(l.Elements("Count").Single().Value);
     clnt.total += clnt.numMsgs;
     for (int i = 0; i < clnt.numMsgs; i++)
     {
         if (key == "")
             keyUp = "2";
         else
             keyUp = key;
         xmlStr = clnt.UpdateGenerator(docTemp, ref msgid, ref keyUp, "");    //Generate data using the xml structure
         msg.content = xmlStr;
         if (clnt.loggingCheck == true)
             Console.Write("Sending Message..Message is \n {0} \n", msg.content);
         else
             Console.Write("Sending Message..Message(Message ID:{0})\n", msgid);
         if (sndr.sendMessage(msg))
         {
             Console.Write("\nUpdated entries in DB - Key:{0} ,MessageID: {1} successfully\n", key, msgid);
             Thread.Sleep(50);
         }
     }
 }
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();
        }
 private static void restore_database(IEnumerator<XElement> x, ref Message msg, Sender sndr)
 {
     string source_path = x.Current.Element("Source").Value;
       msg.content += ",Source," + source_path;
       if (Client.logger_flag)
     Console.Write("\n  sending {0}", msg.content + "\n");
       if (!sndr.sendMessage(msg))
     return;
       Thread.Sleep(100);
 }
 private static void persist_database(IEnumerator<XElement> x, ref Message msg, Sender sndr)
 {
     string destination_path = x.Current.Element("Destination").Value;
       msg.content += ",Destination," + destination_path;
       if (logger_flag) Console.Write("\n  sending {0}", msg.content + "\n");
       if (!sndr.sendMessage(msg))
     return;
       Thread.Sleep(100);
 }
 private static void parseQuery(string querytype, IEnumerator<XElement> x, ref Message msg1, Sender sndr)
 {
     Message msg = new Message();
       msg.fromUrl = msg1.fromUrl;
       msg.toUrl = msg1.toUrl;
       msg.content = msg1.content.ToString();
       switch (querytype)
       {
     case "Insert Element":
       insert_element(x, ref msg, sndr);
       break;
     case "Delete Element":
       delete_element(x, ref msg, sndr);
       break;
     case "Edit Element Metadata":
       edit_element_metadata(x, ref msg, sndr);
       break;
     case "Edit Element Metadata and Add Children":
       edit_element_metadata(x, ref msg, sndr);
       break;
     case "Edit Element Metadata and Remove Children":
       edit_element_metadata(x, ref msg, sndr);
       break;
     case "Edit Element Metadata and Edit Payload":
       edit_element_metadata(x, ref msg, sndr);
       break;
     case "Persist Database":
       persist_database(x, ref msg, sndr);
       break;
     case "Restore Database":
       restore_database(x, ref msg, sndr);
       break;
       }
 }
 private static void insert_element(IEnumerator<XElement> x, ref Message msg, Sender sndr)
 {
     int numQueries = int.Parse(x.Current.Element("NumberOfQueries").Value.ToString());
       int counter = 0;
       string message = new String(msg.content.ToCharArray());
       while (counter++ < numQueries)
       {
     string str = "";
     str = str + ",key," + x.Current.Element("Key").Value.ToString() + counter;
     ParseMetadata(ref str, x.Current.Element("Element"));
     msg.content += str;
     if (logger_flag) Console.Write("\n  sending {0}", msg.content + "\n");
     if (!sndr.sendMessage(msg))
       return;
     Thread.Sleep(100);
     msg.content = message.ToString();
       }
 }
Example #16
0
 static void Main(string[] args)
 {
  try
     {
         Util.verbose = false;
         Server srvr = new Server();
         srvr.ProcessCommandLine(args);
         Console.Title = "Server";
         Console.Write(String.Format("\nStarting CommService server listening on port {0}", srvr.port));
         Console.WriteLine("\nServer Address is {0}", Util.makeUrl(srvr.address, 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 = DefineServiceAction(srvr, sndr, rcvr);
         if (rcvr.StartService())
         {
             rcvr.doService(serviceAction); // This serviceAction is asynchronous, // so the call doesn't block.
         }
         Util.waitForUser();
     }
     catch (CustomException ex)
     {
         Console.WriteLine("Error occured in Server.cs{0}", ex);
     }
 }
Example #17
0
        static void Main(string[] args)
        {
            Console.Write("\n  starting CommService client");
            Console.Write("\n =============================\n");

            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;
            }

            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");
        }
Example #18
0
        /// <summary>
        /// DeletePerformance for the client
        /// </summary>
        /// <param name="msg"></param>
        /// <param name="clnt"></param>
        /// <param name="sndr"></param>
        /// <param name="xmlStr"></param>
        /// <param name="key"></param>
        /// <param name="msgid"></param>
        /// <param name="keyUp"></param>
        /// <param name="l"></param>
        /// <returns></returns>
        private static XDocument DeletePerformance(Message msg, WriterClient clnt, Sender sndr, ref string xmlStr, string key, ref string msgid, ref string keyUp, XElement l)
        {
            XDocument docTemp = XDocument.Load("Input.xml");
            XElement m = docTemp.Descendants("OperationMessage").Where(d => d.Element("Operation").Value == "Delete").Select(i => i).Single();
            clnt.numMsgs = int.Parse(l.Elements("Count").Single().Value);
            clnt.total += clnt.numMsgs;
            for (int i = 0; i < clnt.numMsgs; i++)
            {
                if (KeyLs.Get() != null)
                {
                    keyUp = KeyLs.LastElement().ToString();
                    //keyUp = KeyLs.Get()[0].ToString();
                    KeyLs.Remove(int.Parse(keyUp));
                }
                else
                    keyUp = 2.ToString();
                //Construct DB Delete
                xmlStr = clnt.WriteDataForDelete(docTemp, ref msgid, ref keyUp);    //Generate data using the xml structure
                msg.content = xmlStr;
                if (clnt.loggingCheck == true)
                    Console.Write("Sending Message..Message is \n {0} \n", msg.content);
                else
                    Console.Write("Sending Message..Message(Message ID:{0})\n", msgid);
                if (sndr.sendMessage(msg))
                {
                    Console.Write("Message(MessageID {1},Key {0}) sent for deletion successfully\n", key, msgid);
                    Thread.Sleep(50);
                }
            }

            return docTemp;
        }
Example #19
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();
        }
Example #20
0
 private static Action ServiceActionMake(HiResTimer hres, WriterClient clnt, Receiver rcvr)
 {
     Action serviceAction = () =>
     {
         Message msg1 = null;
         while (true)
         {
             msg1 = rcvr.getMessage();   // note use of non-service method to deQ messages                           
             if (msg1.content == "done")
             {
                 hres.Stop(); ulong lookUpTime = hres.ElapsedMicroseconds;
                 Message msg2 = new Message();
                 msg2.fromUrl = clnt.localUrl;
                 msg2.toUrl = clnt.wpfClientURL;
                 msg2.content = "LookupTime;" + lookUpTime + ";" + "CntMsg;" + (ulong)clnt.total + ";";
                 Sender wpfSender = new Sender(clnt.localUrl);
                 wpfSender.sendMessage(msg2);
                 Console.WriteLine("\n----------------------Overall Performance Statistics for Write Client-----------------------------\n");
                 Console.WriteLine("Number of messages processed is {0}", clnt.total);
                 Console.WriteLine("\nTotal Execution time for the messages to be processed at Client Side is {0} microsecs", clnt.WriteClientTime);
                 Console.WriteLine("\nAverage Execution time for the messages to be processed at Client Side is {0} microsecs", clnt.WriteClientTime / (ulong)clnt.total);
                 Console.WriteLine("\nTotal Execution time for the messages from Client-Server-Client {0} microsecs", lookUpTime);
                 Console.WriteLine("\nAverage Execution time for the messages from Client-Server-Client is {0} microsecs", lookUpTime / (ulong)clnt.total);
                 Console.WriteLine("\n----------------------Overall Performance Statistics for Write Client-----------------------------\n");
                 break;
             }
             else if (msg1.content == "connection start message")
                 Console.WriteLine("Connection start message receieved at client side");
             else
             {
                 XDocument docTemp = XDocument.Load(new StringReader(msg1.content));
                 string mid = docTemp.Descendants("OperationMessage").Elements("MessageID").Single().Value;
                 string op = docTemp.Descendants("OperationMessage").Elements("Operation").Single().Value;
                 string resp = docTemp.Descendants("OperationMessage").Elements("Response").Single().Value;
                 Console.Write("\nMessage - MessageID:{0} received at the client", mid);
                 Console.Write("\nSender:{0}", msg1.fromUrl); Console.Write("\nOperation :{0}", op);
                 Console.Write("\nResponse :{0}", resp);
                 string oldDt = docTemp.Descendants("InsertTime").Select(i => i).Single().Value.ToString();
                 long microseconds = (DateTime.Now.Ticks - long.Parse(oldDt)) / 10;
                 Console.Write("\nExecution time for message(MessageID:{1}) is {0} microseconds\n", microseconds, mid);
             }
         }
         Util.waitForUser();
     };
     return serviceAction;
 }
 //--------< Define action to be performed on receiving message >------
 private static Action doserviceAction(Sender sndr, Receiver rcvr, Server srvr)
 {
   int counter_write = 0;
   int counter_read = 0;
   ulong write_clnt_process_time = 0;
   ulong read_clnt_latency_time = 0;
   ulong server_throughput_time = 0;
   Action serviceAction = () =>
   {
     Message msg = null;
     while (true)
     {
       msg = rcvr.getMessage();   // note use of non-service method to deQ messages          
       Console.Write("\n  Received message:\n");
       Console.Write("\n  sender is {0}\n", msg.fromUrl);
       Console.Write("\n  content is {0}\n", msg.content);
       if (specialMessage(ref msg, srvr, sndr, rcvr, ref read_clnt_latency_time, ref write_clnt_process_time, ref server_throughput_time, ref counter_write, ref counter_read))
       {
         continue;
       }
       else if (msg.content == "closeServer")
       {
         Console.Write("\n\nreceived closeServer\n\n");
         break;
       }
       else
       {
         WriteLine();
         List<string> msg_list = msg.content.Split(',').ToList<string>();
         IEnumerator<string> msg_enumerator = msg_list.GetEnumerator();
         ServerParser sp = new ServerParser();
         string str = "";
         while (msg_enumerator.MoveNext())
         {
           getDatabase(ref sp, ref msg_enumerator, ref str);
         };
         // swap urls for outgoing message
         msg.content = str;
         Util.swapUrls(ref msg);
         /////////////////////////////////////////////////
         // Use the statement below for normal operation
         Console.WriteLine("\n\n Sending Message: " + msg.content + "\n\n");
         sndr.sendMessage(msg);
       }
     }
   };
   return serviceAction;
 }
 //-----------< action for received special messages >------------
 private static bool specialMessage(ref Message msg, Server srvr, Sender sndr, Receiver rcvr, ref ulong read_clnt_latency_time, ref ulong write_clnt_process_time, ref ulong server_throughput_time, ref int counter_write, ref int counter_read)
 {
   if (msg.content == "connection start message")
   {
     srvr.server_throuput.Start();
     return true; // don't send back start message
   }
   else if (msg.content == "done")
   {
     //---------< maitain test performance data for server throughput >----
     srvr.server_throuput.Stop();
     server_throughput_time += srvr.server_throuput.ElapsedMicroseconds;
     Console.Write("\n  client has finished\n");
     Console.WriteLine("\nServer throughput: " + server_throughput_time + " microseconds\n");
     Util.swapUrls(ref msg);
     Console.WriteLine("\n\n Sending Message: " + msg.content + "\n\n");
     sndr.sendMessage(msg);
     return true;
   }
   else
        if (msg.content.Contains("write-client"))
   {
     write_client_processing(ref counter_write, ref write_clnt_process_time, ref msg);
     return true;
   }
   else if (msg.content.Contains("read-client"))
   {
     read_client_latency(ref counter_read, ref read_clnt_latency_time, ref msg);
     return true;
   }
   else if (msg.content == ("test-result"))
   {
     send_test_result(ref msg, ref read_clnt_latency_time, write_clnt_process_time, server_throughput_time, counter_read, counter_write, sndr);
     return true;
   }
   else
   {
     return false;
   }
 }
Example #23
0
        static void Main(string[] args)
        {
            Console.Write("\n  starting CommService client");
            Console.Write("\n =============================\n");

            Console.Title = "Writer 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.getMsgLength("XMLWriter.xml"));
            clnt.readMsgTemplate("XMLWriter.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");
        }
Example #24
0
 /// <summary>
 /// Performance testing by inserting queries
 /// </summary>
 /// <param name="hres"></param>
 /// <param name="msg"></param>
 /// <param name="clnt"></param>
 /// <param name="sndr"></param>
 /// <returns></returns>
 private static Message PerformanceTest(HiResTimer hres, Message msg, ReadClient clnt, Sender sndr)
 {
     XmlTextReader textReader = new XmlTextReader("Input.xml");
     HiResTimer timerH = new HiResTimer();
     if (File.Exists("Input.xml"))
     {
         XDocument docTemp;
         string msgid;
         //GetKeyCriteria
         GetByKeyCriteria(hres, msg, clnt, sndr, timerH, out docTemp, out msgid);
         //GetByMetadataCriteria
         docTemp = GetByMetadataCriteria(msg, clnt, sndr, ref msgid);
         //GetByTimeStampCriteria
         docTemp = GetByTimeStampCriteria(msg, clnt, sndr, ref msgid);
         docTemp = GetByKey(msg, clnt, sndr, ref msgid);                //GetByKey
         docTemp = GetChildren(msg, clnt, sndr, ref msgid);                //GetChildren
     }
     timerH.Stop();
     clnt.ReadClientTime = timerH.ElapsedMicroseconds;
     msg = new Message();
     msg.fromUrl = clnt.localUrl;
     msg.toUrl = clnt.remoteUrl;
     msg.content = "done";
     sndr.sendMessage(msg);
     return msg;
 }
Example #25
0
 private static Message FinalMessageServe(Server srvr, Sender sndr, Message msg)
 {
     Console.WriteLine("Displaying DB entries");
     srvr.showDB(true, "int");
     Console.Write("\nClient has finished\n");
     Util.swapUrls(ref msg);
     string totalTime = srvr.tot[msg.toUrl].ToString();
     //call the wpf to send message 
     Sender wpfSender = new Sender(Util.makeUrl(srvr.address, srvr.port));
     Message wpfMsg = new Message(); //WPF sender 
     wpfMsg.fromUrl = msg.fromUrl;
     wpfMsg.toUrl = Util.makeUrl(srvr.address, srvr.Wpfport);
     wpfMsg.content = "ServerTime;" + totalTime + ";" + "ClientURL;" + msg.toUrl;
     srvr.tot.Remove(msg.toUrl);
     wpfSender.sendMessage(wpfMsg);
     sndr.sendMessage(msg);       //call the wpf to send message 
     return msg;
 }
Example #26
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");
        }
Example #27
0
 /// <summary>
 /// GetByMetadataCriteria criteria for the query type
 /// </summary>
 /// <param name="msg"></param>
 /// <param name="clnt"></param>
 /// <param name="sndr"></param>
 /// <param name="msgid"></param>
 /// <returns></returns>
 private static XDocument GetByMetadataCriteria(Message msg, ReadClient clnt, Sender sndr, ref string msgid)
 {
     XDocument docTemp = XDocument.Load("Input.xml");
     clnt.RemoveOtherReads(ref docTemp, "GetByMetadataCriteria");
     clnt.RemoveOtherWrites(ref docTemp, "GetByMetadataCriteria");
     XElement l = docTemp.Descendants("OperationMessage").Where(d => d.Element("QueryType").Value == "GetByMetadataCriteria").Select(j => j).Single();
     clnt.numMsgs = int.Parse(l.Elements("Count").Single().Value);
     clnt.total += clnt.numMsgs;
     for (int i = 0; i < clnt.numMsgs; i++)
     {
         docTemp = XDocument.Load("Input.xml");
         clnt.RemoveOtherReads(ref docTemp, "GetByMetadataCriteria");
         clnt.RemoveOtherWrites(ref docTemp, "GetByMetadataCriteria");
         msgid = clnt.msgRand++.ToString();
         XElement y = null;//GetByMetadataCriteria query carried out     
         y = docTemp.Descendants("OperationMessage").Where(d => d.Element("QueryType").Value == "GetByMetadataCriteria").Select(j => j).Single();
         y.Elements("MessageID").Single().Value = msgid;
         y.Elements("InsertTime").Single().Value = DateTime.Now.Ticks.ToString();
         msg.content = docTemp.ToString();
         msg.fromUrl = clnt.localUrl;
         msg.toUrl = clnt.remoteUrl;
         if (sndr.sendMessage(msg))
         {
             Console.Write("Sent message(Message ID {0}) to GetByMetadataCriteria from key\n", msgid);
             Thread.Sleep(50);
         }
     }
     return docTemp;
 }
Example #28
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 #29
0
 /// <summary>
 ///  GetByKeyCriteria criteria for the query type 
 /// </summary>
 /// <param name="hres"></param>
 /// <param name="msg"></param>
 /// <param name="clnt"></param>
 /// <param name="sndr"></param>
 /// <param name="timerH"></param>
 /// <param name="docTemp"></param>
 /// <param name="msgid"></param>
 private static void GetByKeyCriteria(HiResTimer hres, Message msg, ReadClient clnt, Sender sndr, HiResTimer timerH, out XDocument docTemp, out string msgid)
 {
     docTemp = XDocument.Load("Input.xml");
     clnt.RemoveOtherReads(ref docTemp, "GetKeyCriteria");
     clnt.RemoveOtherWrites(ref docTemp, "GetKeyCriteria");
     XElement k = docTemp.Descendants("OperationMessage").Where(d => d.Element("QueryType").Value == "GetKeyCriteria").Select(j => j).Single();
     clnt.numMsgs = int.Parse(k.Elements("Count").Single().Value);
     clnt.total += clnt.numMsgs;
     hres.Start();
     timerH.Start();//High resolution timer started       
     msgid = "";
     for (int i = 0; i < clnt.numMsgs; i++)
     {
         docTemp = XDocument.Load("Input.xml");
         clnt.RemoveOtherReads(ref docTemp, "GetKeyCriteria");
         clnt.RemoveOtherWrites(ref docTemp, "GetKeyCriteria");
         msgid = clnt.msgRand++.ToString();
         XElement y = null;
         y = docTemp.Descendants("OperationMessage").Where(d => d.Element("QueryType").Value == "GetKeyCriteria").Select(j => j).Single();
         y.Elements("MessageID").Single().Value = msgid;
         y.Elements("InsertTime").Single().Value = DateTime.Now.Ticks.ToString();
         msg.content = docTemp.ToString();
         msg.fromUrl = clnt.localUrl;
         msg.toUrl = clnt.remoteUrl;
         if (sndr.sendMessage(msg))
         {
             Console.Write("Sent message(Message ID {0}) to GetCriteria from key\n", msgid);
             Thread.Sleep(50);
         }
     }
 }
 //--------< shutdown receiver and sender >---------------------------
 private static void shutdown(Receiver rcvr, Sender sndr)
 {
   sndr.shutdown();
   rcvr.shutDown();
 }
Example #31
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");
 }
Example #32
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 #33
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);
     }
 }
Example #34
0
        //----< Test Stub >--------------------------------------------------

#if (TEST_SENDER)
        static void Main(string[] args)
        {
            Util.verbose = false;
            Console.Write("\n  starting CommService Sender");
            Console.Write("\n =============================\n");
            Console.Title = "CommService Sender";
            Sender sndr = new Sender("http://localhost:8081/CommService");
            sndr.processCommandLine(args);
            int numMsgs = 5;
            int counter = 0;
            Message msg = null;
            while (true)
            {
                msg = new Message();
                msg.fromUrl = sndr.localUrl;
                msg.toUrl = sndr.remoteUrl;
                msg.content = "Message #" + (++counter).ToString();
                Console.Write("\n  Sending {0}", msg.content);
                sndr.sendMessage(msg);
                Thread.Sleep(30);
                if (counter >= numMsgs)
                    break;
            }
            msg = new Message();
            msg.fromUrl = sndr.localUrl;
            msg.toUrl = "http://localhost:9999/CommService";
            msg.content = "no listener for this message";
            Console.Write("\n  sending {0}", msg.content);
            sndr.sendMessage(msg);
            msg = new Message();
            msg.fromUrl = sndr.localUrl;
            msg.toUrl = sndr.remoteUrl;
            msg.content = "Message #" + (++counter).ToString();
            Console.Write("\n  sending {0}", msg.content);
            sndr.sendMessage(msg);
            msg = new Message();
            msg.fromUrl = sndr.localUrl;
            msg.toUrl = sndr.remoteUrl;
            msg.content = "closeSender";  // message for self and Receiver
            Console.Write("\n  sending {0}", msg.content);
            sndr.sendMessage(msg);
        }
Example #35
0
        /// <summary>
        /// Insert performance results writer client
        /// </summary>
        /// <param name="hres"></param>
        /// <param name="msg"></param>
        /// <param name="clnt"></param>
        /// <param name="sndr"></param>
        /// <param name="xmlStr"></param>
        /// <param name="docTemp"></param>
        /// <param name="key"></param>
        /// <param name="msgid"></param>
        /// <returns></returns>
        private static string InsertPerformance(HiResTimer hres, Message msg, WriterClient clnt, Sender sndr, string xmlStr, out XDocument docTemp, out string key, out string msgid)
        {
            docTemp = XDocument.Load("Input.xml");
            XElement k = docTemp.Descendants("OperationMessage").Where(d => d.Element("Operation").Value == "Insert").Select(i => i).Single();
            if (k.Elements("Count").Single().Value != "")
                clnt.numMsgs = int.Parse(k.Elements("Count").Single().Value);
            clnt.total += clnt.numMsgs;
            hres.Start();     //High resolution timer started     
            key = "";
            msgid = "";
            for (int i = 0; i < clnt.numMsgs; i++)
            {
                docTemp = XDocument.Load("Input.xml");
                xmlStr = clnt.InsertGenerator(docTemp, ref msgid, ref key, "int");    //Generate data using the xml structure
                msg.content = xmlStr;
                msg.fromUrl = clnt.localUrl;
                msg.toUrl = clnt.remoteUrl;
                if (sndr.sendMessage(msg))
                {
                    Console.Write("Sent message(Message ID {0}) to insert into DB successfully\n", msgid);
                    Thread.Sleep(50);
                }
            }

            return xmlStr;
        }