public void sendMessages()
        {
            if (messages == null)
            {
                return;
            }
            Stopwatch time = new Stopwatch();

            time.Start();
            int count = (messages.Count()) * numMsgs;

            foreach (Message msg in messages)
            {
                for (int i = 0; i < numMsgs; ++i)
                {
                    if (option == "showMessage")
                    {
                        showMsg(msg);
                    }
                    sndr.sendMessage(msg);
                }
            }
            time.Stop();
            sendTimeInfo(time, count);
        }
Ejemplo n.º 2
0
        public void processEditMsg(XDocument xdoc, Sender sndr, Message msg)
        {
            IEnumerable <string> keys    = db.Keys();
            List <string>        keyList = keys.ToList();
            string keyToEdit             = getKey(xdoc);

            if (!keyList.Contains(keyToEdit))
            {
                Message testMsg = new Message();
                testMsg.toUrl   = msg.fromUrl;
                testMsg.fromUrl = msg.toUrl;
                testMsg.content = "\n********************************\n" + "Key " + keyToEdit + " is not present in the DB\n";
                sndr.sendMessage(testMsg);
            }
            else
            {
                DBElement <string, List <string> > element = new DBElement <string, List <string> >();
                string  key     = createAddDBElement(xdoc, out element);
                Message testMsg = new Message();
                testMsg.toUrl   = msg.fromUrl;
                testMsg.fromUrl = msg.toUrl;
                if (db.edit(key, element))
                {
                    testMsg.content = "\n***********************\n" + "Key= " + key + " is edited Successfully.\n";
                }
                else
                {
                    testMsg.content = "\n**************************\n" + key + " record is not edited.\n";
                }
                sndr.sendMessage(testMsg);
            }
        }
        //----< 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;
                }
            }
            // demonstrate:
            // - sending to listener
            // - attempting to send to nolistener
            // - sending to listener

            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);
        }
Ejemplo n.º 4
0
 // Determine what happens to received messages
 public Action ServiceAction()
 {
     Action serviceAction = () =>
       {
           int count = 0;
           Stopwatch time = new Stopwatch();                  
           Message msg = null;
           time.Start();
           while (true)
           {
               if (numMsg != 0 && numMsg == count)
               {
                   time.Stop();
                   sendTimeInfo(time, count);
               }                          
               msg = rcvr.getMessage();
               if (msg.content == "connection start message")
                   continue;
               if (msg.content == "done")
                   continue;
               if (msg.content == "closeServer")
                   break;
               XDocument xml = new XDocument();
               xml = XDocument.Parse(msg.content);
               string order = xml.Descendants("Msg").ElementAt(0).Descendants("Command").ElementAt(0).Value;
               if (order == "writeClientPerf")
               {
                   numMsg += ClientPerf(msg);
                   sndr.sendMessage(msg);
                   continue;
               }
               if (order == "readClientPerf")
               {
                   numMsg += ClientPerf(msg);
                   sndr.sendMessage(msg);
                   continue;
               }
               string DBName= xml.Descendants("Msg").Descendants("DBName").ElementAt(0).Value;                                         
               string command = DBName + order;                  
               if (acts.ContainsKey(command))
               {
                   acts[command].Invoke(msg);
                   sndr.sendMessage(msg);
               }
               else
                   Write("\n command {0} {1} doesn't exist \n", order, DBName);
               ++count;
           }                  
       };
     return serviceAction;
 }
Ejemplo n.º 5
0
 //send request to query messages for particular search type messages
 private void sendValueSearchTypeMessages(MessageTemplate msgTemplate, Sender sndr)
 {
     for (int i = 0; i < msgTemplate.messageSize; i++)
     {
         XElement   messageNode = new XElement("message");
         XAttribute att         = new XAttribute("commandType", "query1");
         messageNode.Add(att);
         XElement keyTypenode   = new XElement("keyType", "string");
         XElement valueTypeNode = new XElement("valueType", "ListOfString");
         XElement keynode       = new XElement("key", "Key" + i);
         messageNode.Add(keyTypenode);
         messageNode.Add(valueTypeNode);
         messageNode.Add(keynode);
         Message msg = new Message();
         msg.fromUrl = localUrl;
         msg.toUrl   = remoteUrl;
         msg.content = messageNode.ToString();
         Console.WriteLine("Request Sent to Query value for key: " + "Key" + i);
         if (!sndr.sendMessage(msg))
         {
             return;
         }
         Thread.Sleep(10);
     }
 }
Ejemplo n.º 6
0
 //send request to query messages for particular pattern
 private void sendValuePatternMessages(MessageTemplate msgTemplate, Sender sndr)
 {
     for (int i = 0; i < msgTemplate.messageSize; i++)
     {
         XElement   messageNode = new XElement("message");
         XAttribute att         = new XAttribute("commandType", "query4");
         messageNode.Add(att);
         XElement keyTypenode   = new XElement("keyType", "string");
         XElement valueTypeNode = new XElement("valueType", "ListOfString");
         XElement searchParaMeter;
         // the pattern should be different in order to send multiple messages
         if (i == 0)
         {
             searchParaMeter = new XElement("searchParaMeter", "SMA");
             Console.WriteLine("Request Sent to Query key for ValuePattern: SMA");
         }
         else
         {
             searchParaMeter = new XElement("searchParaMeter", i);
             Console.WriteLine("Request Sent to Query key for ValuePattern: " + i);
         }
         messageNode.Add(keyTypenode);
         messageNode.Add(valueTypeNode);
         messageNode.Add(searchParaMeter);
         Message msg = new Message();
         msg.fromUrl = localUrl;
         msg.toUrl   = remoteUrl;
         msg.content = messageNode.ToString();
         if (!sndr.sendMessage(msg))
         {
             return;
         }
         Thread.Sleep(10);
     }
 }
Ejemplo n.º 7
0
        //send request to query messages within particular timestamp
        private void sendTimestampSearchMessages(MessageTemplate msgTemplate, Sender sndr)
        {
            DateTime fromDate = new DateTime(2015, 11, 20);

            for (int i = 0; i < msgTemplate.messageSize; i++)
            {
                DateTime   toDate      = DateTime.Now;
                XElement   messageNode = new XElement("message");
                XAttribute att         = new XAttribute("commandType", "query5");
                messageNode.Add(att);
                XElement keyTypenode   = new XElement("keyType", "string");
                XElement valueTypeNode = new XElement("valueType", "ListOfString");
                XElement startTime     = new XElement("startTime", fromDate);
                XElement endTime       = new XElement("endTime", toDate);
                messageNode.Add(keyTypenode);
                messageNode.Add(valueTypeNode);
                messageNode.Add(startTime);
                messageNode.Add(endTime);
                Message msg = new Message();
                msg.fromUrl = localUrl;
                msg.toUrl   = remoteUrl;
                msg.content = messageNode.ToString();
                Console.WriteLine("Request Sent to Query key for timestamp from: " + fromDate + " to " + toDate);
                if (!sndr.sendMessage(msg))
                {
                    return;
                }
                Thread.Sleep(10);
            }
        }
Ejemplo n.º 8
0
        //Function to send message that writer client operation is done
        public void transportInformation(ulong latency, Sender sndr)
        {
            Message msg = new Message();

            msg.fromUrl = localUrl;
            msg.toUrl   = remoteUrl;
            XElement   root = new XElement("message");
            XAttribute att  = new XAttribute("commandType", "info");

            root.Add(att);
            XElement client   = new XElement("client", "WriterClient");
            XElement port     = new XElement("port", localUrl);
            XElement xLatency = new XElement("latency", latency);
            XElement messages = new XElement("numMsgs", messageProcessed);

            root.Add(client);
            root.Add(port);
            root.Add(xLatency);
            root.Add(messages);
            msg.content = root.ToString();
            if (!sndr.sendMessage(msg))
            {
                return;
            }
            ulong uLongmessageProcessed = Convert.ToUInt64(messageProcessed);

            if (Util.verbose)
            {
                Console.WriteLine("\nTotal time taken to process all requests: " + latency);
                Console.WriteLine("\nTotal requests sent: " + messageProcessed);
                ulong avg = latency / uLongmessageProcessed;
                Console.WriteLine("\nAvg time: " + avg);
            }
        }
Ejemplo n.º 9
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;
     }
 }
Ejemplo n.º 10
0
        public void send_wpf_final(Sender sndr, string localport)
        {
            // Console.WriteLine("Inside send loop");
            Message wpf_message = new Message();

            wpf_message.fromUrl = localUrl;
            wpf_message.toUrl   = "http://localhost:8081/CommService";
            if (!sndr.Connect(wpf_message.toUrl))
            {
                Console.Write("\n  could not connect in {0} attempts", sndr.MaxConnectAttempts);
                return;
            }
            foreach (string k in diction.Keys)
            {
                wpf_message = new Message();
                //string msg2 = "Write Client(" + localport + "): Average latency time for " + k + " operations = " + diction[k].Average() + " milliseconds";
                if (diction[k].Count > 0)
                {
                    string msg2 = "Read Client(" + localport + "): Average latency time for " + diction[k].Count + " " + k + " operations = " + diction[k].Average() + " milliseconds";
                    wpf_message.fromUrl = localUrl;
                    wpf_message.toUrl   = "http://localhost:8081/CommService";
                    wpf_message.content = msg2;
                    sndr.sendMessage(wpf_message);
                }
            }
            //foreach
        }
Ejemplo n.º 11
0
 private void sendMessageToServer(IEnumerable <XElement> results, HiResTimer timer,
                                  MessageMaker msgMaker, Sender sndr, Receiver rcvr)
 {
     timer.Start();
     foreach (var eachInput in results)
     {
         Message msg = new Message();
         msg = msgMaker.makeMessage(this.localUrl, this.remoteUrl, eachInput);
         if (!sndr.Connect(msg.toUrl))
         {
             Console.Write("\n  could not connect in {0} attempts", sndr.MaxConnectAttempts);
             sndr.shutdown();
             rcvr.shutDown();
             return;
         }
         "Message sent".endofTest();
         "Content".title();
         Console.Write("\n\n{0}\n", msg.content);
         "End of message".endofTest();
         while (true)
         {
             if (sndr.sendMessage(msg))
             {
                 Thread.Sleep(200);
                 break;
             }
         }
         sndr.SendReaderLatency(rcvr.totalExecutionTime / rcvr.count);
         sndr.SendWriterLatency(rcvr.totalExecutionTime / rcvr.count);
     }
 }
 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;
     }
 }
Ejemplo n.º 13
0
        private void CallQuery5(MessageParameterState msgState, MessageTemplate msgTemplate, Sender sndr)
        {
            DateTime toDate   = new DateTime();
            DateTime fromDate = new DateTime(2015, 10, 1);

            for (int i = 0; i < msgTemplate.messageSize; i++)
            {
                XElement   messageNode = new XElement("message");
                XAttribute att         = new XAttribute("commandType", "query5");
                messageNode.Add(att);
                XElement keyTypenode   = new XElement("keyType", "string");
                XElement valueTypeNode = new XElement("valueType", "ListOfString");
                XElement startTime     = new XElement("startTime", fromDate);
                XElement endTime       = new XElement("endTime", toDate);
                messageNode.Add(keyTypenode);
                messageNode.Add(valueTypeNode);
                messageNode.Add(startTime);
                messageNode.Add(endTime);
                Message msg = new Message();
                msg.fromUrl = localUrl;
                msg.toUrl   = remoteUrl;
                msg.content = messageNode.ToString();
                //Console.WriteLine("msg : " + msg.content);
                if (!sndr.sendMessage(msg))
                {
                    return;
                }
            }
        }
Ejemplo n.º 14
0
 public void sendMessages()
 {
     if (messages == null)
     {
         return;
     }
     time = new Stopwatch();
     time.Start();
     foreach (Message msg in messages)
     {
         for (int i = 0; i < numMsgs; ++i)
         {
             sndr.sendMessage(msg);
         }
     }
 }
Ejemplo n.º 15
0
        public void processQuery5(XDocument xdoc, Sender sndr, Message msg)
        {
            DateTime fromDate = getFromDate(xdoc);
            DateTime toDate   = getToDate(xdoc);
            DBElement <string, List <string> > element = new DBElement <string, List <string> >();
            QueryEngine <string, string>       QE1     = new QueryEngine <string, string>();
            Message testMsg = new Message();

            testMsg.toUrl   = msg.fromUrl;
            testMsg.fromUrl = msg.toUrl;
            List <string> values = new List <string>();

            values = QE1.dateTimeSearch(fromDate, toDate, db);
            if (values.Count() > 0)
            {
                StringBuilder sb = new StringBuilder();
                foreach (string str in values)
                {
                    sb.Append(str);
                    sb.Append("\n");
                }
                testMsg.content = "\n**********************" + "\nResult of Query5" + "\nKeys within Date pattern are:\n" + sb + "\n";
            }
            else
            {
                testMsg.content = "\n*************************\n" + "\nKeys within Date pattern not found\n";
            }
            sndr.sendMessage(testMsg);
        }
Ejemplo n.º 16
0
        public void processQuery3(XDocument xdoc, Sender sndr, Message msg)
        {
            string pattern = getPattern(xdoc);
            DBElement <string, List <string> > element = new DBElement <string, List <string> >();
            QueryEngine <string, string>       QE1     = new QueryEngine <string, string>();
            Message testMsg = new Message();

            testMsg.toUrl   = msg.fromUrl;
            testMsg.fromUrl = msg.toUrl;
            List <string> values = new List <string>();

            values = QE1.keyPattern(pattern, db);
            if (values.Count() > 0)
            {
                StringBuilder sb = new StringBuilder();
                foreach (string str in values)
                {
                    sb.Append(str);
                    sb.Append("\n");
                }
                testMsg.content = "\n*************************\n" + "\nResult of Query3\n" + "Keys with pattern like " + pattern + " are :\n" + sb + "\n";
            }
            else
            {
                testMsg.content = "\n*************************\n" + "\nKeys with pattern like  " + pattern + " not found\n";
            }
            sndr.sendMessage(testMsg);
        }
Ejemplo n.º 17
0
        public void processDelMsg(XDocument xdoc, Sender sndr, Message msg)
        {
            IEnumerable <string> keys = db.Keys();
            int numKeys = Convert.ToInt32(getNumberOfKeys(xdoc));

            if (numKeys > keys.Count())
            {
                numKeys = keys.Count() - 1;
            }
            List <string> keyList = keys.ToList();

            for (int i = 0; i < numKeys; i++)
            {
                string keyToDeleted = keyList.ElementAt(i);
                if (db.delete(keyToDeleted))
                {
                    msg.content = "\n\n***************************\n" + keyToDeleted + " record is deleted.\n";
                }
                else
                {
                    msg.content = "\n*********************\n" + keyToDeleted + " record is  not deleted.";
                }
                Message testMsg = new Message();
                testMsg.toUrl   = msg.fromUrl;
                testMsg.fromUrl = msg.toUrl;
                testMsg.content = msg.content;
                sndr.sendMessage(testMsg);
            }
        }
Ejemplo n.º 18
0
        //Function that send request to persist data to XML
        private void sendPersistMessage(MessageTemplate msgTemplate, Sender sndr)
        {
            Random     random      = new Random();
            XElement   messageNode = new XElement("message");
            XAttribute att         = new XAttribute("commandType", "persist");

            messageNode.Add(att);
            XElement numKeys = new XElement("size");

            numKeys.Add(msgTemplate.messageSize);
            messageNode.Add(numKeys);
            Message msg = new Message();

            msg.fromUrl = localUrl;
            msg.toUrl   = remoteUrl;
            msg.content = messageNode.ToString();
            if (!sndr.sendMessage(msg))
            {
                return;
            }
            if (Util.verbose)
            {
                Console.WriteLine("For Persistance, Request Sent to persist " + msgTemplate.messageSize + " messages");
            }
        }
Ejemplo n.º 19
0
        //Function that sends request to delete data
        private void sendDeleteMessage(MessageTemplate msgTemplate, Sender sndr)
        {
            XElement   messageNode = new XElement("message");
            XAttribute att         = new XAttribute("commandType", "delete");

            messageNode.Add(att);
            XElement keyTypenode   = new XElement("keyType", "string");
            XElement valueTypeNode = new XElement("valueType", "ListOfString");
            XElement numKeys       = new XElement("size", msgTemplate.messageSize.ToString());

            messageNode.Add(keyTypenode);
            messageNode.Add(valueTypeNode);
            messageNode.Add(numKeys);
            Message msg = new Message();

            msg.fromUrl = localUrl;
            msg.toUrl   = remoteUrl;
            msg.content = messageNode.ToString();
            if (Util.verbose)
            {
                Console.WriteLine("For Deletion, Request sent to delete " + msgTemplate.messageSize.ToString() + " messages");
            }
            if (!sndr.sendMessage(msg))
            {
                return;
            }
        }
Ejemplo n.º 20
0
        static void Main(string[] args)
        {
            Console.WriteLine("  The intent of the write client is to stress the database with write operations.");
            Console.WriteLine("  Write operations - Insert, Delete, Edit name, Edit Description and Add Children.");
            Console.WriteLine("\n  If log option is enabled, messsages are logged to this console window as they are sent.");
            Console.WriteLine("  If log is enabled result of response is displayed as responses are received from server.");
            Console.WriteLine("  If log option is disabled, only latency time for each operation is disaplyed on the console window.");
            Client clnt = new Client();

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

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

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

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

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

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

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

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

            clnt.travelLatency(latency, sndr);
            msg.content = "done";
            sndr.sendMessage(msg);
            // Wait for user to press a key to quit.
            // Ensures that client has gotten all server replies.
            Util.waitForUser();
            // shut down this client's Receiver and Sender by sending close messages
            rcvr.shutDown();
            sndr.shutdown();
            Console.Write("\n\n");
        }
Ejemplo n.º 22
0
        //Function that sends request to add large data
        private void sendLargeAddMessage(MessageTemplate msgTemplate, Sender sndr)
        {
            Random random = new Random();

            for (int i = 0; i < msgTemplate.messageSize; i++)
            {
                XElement   messageNode = new XElement("message");
                XAttribute att         = new XAttribute("commandType", "add");
                messageNode.Add(att);
                int rndKey = random.Next(1, 10000);
                //Console.WriteLine("key : " + rndKey);
                XElement keyTypenode   = new XElement("keyType", "string");
                XElement valueTypeNode = new XElement("valueType", "ListOfString");
                XElement keynode       = new XElement("key", rndKey.ToString());
                listOfKeys.Add(rndKey.ToString());
                XElement valueNode   = new XElement("value");
                XElement name        = new XElement("name", "name : " + i.ToString());
                XElement desc        = new XElement("desc", "desc : " + i.ToString());
                XElement timestamp   = new XElement("time", DateTime.Now);
                XElement payload     = new XElement("payload");
                XElement payloadItem = new XElement("item", "SMA of " + rndKey);
                payload.Add(payloadItem);
                payloadItem = new XElement("item", "OOD of " + rndKey);
                payload.Add(payloadItem);
                XElement children     = new XElement("children");
                int      childrenSize = random.Next(13, 15);
                for (int j = 1; j < childrenSize; j++)
                {
                    XElement item = new XElement("item", j.ToString());
                    children.Add(item);
                }
                valueNode.Add(name);
                valueNode.Add(desc);
                valueNode.Add(timestamp);
                valueNode.Add(payload);
                valueNode.Add(children);
                messageNode.Add(keyTypenode);
                messageNode.Add(valueTypeNode);
                messageNode.Add(keynode);
                messageNode.Add(valueNode);
                Message msg = new Message();
                msg.fromUrl = localUrl;
                msg.toUrl   = remoteUrl;
                msg.content = messageNode.ToString();
                if (Util.verbose)
                {
                    Console.WriteLine("For Addition, Msg Sent with key= " + rndKey.ToString());
                }
                if (!sndr.sendMessage(msg))
                {
                    return;
                }
                Thread.Sleep(10);
            }
        }
Ejemplo n.º 23
0
        static void Main(string[] args)
        {
            Console.WriteLine("  The intent of the demo client is to demonstarte that all the operations of Project-2 can be executed remotely.");
            Console.WriteLine("  All the request messages stored in /SavedXMLFiles/Demo_Client_XML.xml are sent to server sequentially.");
            Console.WriteLine("  The Demo_Client_XML.xml file consists of Write operations, Read operations and Persist operations.");
            Console.WriteLine("  Write operations - Insert, Delete, Edit Name, Edit Description and Add Children");
            Console.WriteLine("  Read operations - Get Value, Get Children, Get Keys with string pattern in metadata");
            Console.WriteLine("  PErsist operations - Persist database, Load Database");
            Console.WriteLine("\n  The DB contents are displayed on the server only in case of demo client to show the successful operations on DB.");
            Console.WriteLine("  These are displayed to show to user that operations are successfully performed on the database.");
            Console.WriteLine("\n  ******************\n  To launch the readers and writers enter any key on the TestExecutive window.");
            Console.WriteLine("  You can verify all types of operations done and displayed on server window, before launching readers and writers.");
            Console.Write("\n  Starting CommService for demo client");
            Console.Write("\n ================================\n");
            Thread.Sleep(1000);
            bool   log_message = true;
            Client clnt        = new Client();

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

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

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

            msg.fromUrl = clnt.localUrl;
            msg.toUrl   = clnt.remoteUrl;
            Console.Write("\n  Demo client local url is {0}", msg.fromUrl);
            Console.Write("\n  Attempting to connect to server on {0}\n", msg.toUrl);
            if (!sndr.Connect(msg.toUrl))
            {
                Console.Write("\n  could not connect in {0} attempts", sndr.MaxConnectAttempts);
                sndr.shutdown();
                rcvr.shutDown();
                return;
            }
            clnt.send_messages(sndr, msg, "./../../../../SavedXMLFiles/Demo_Client_XML.xml", log_message);
            Thread.Sleep(100);
            msg.content = "done";
            sndr.sendMessage(msg);
            // Wait for user to press a key to quit. Ensures that client has gotten all server replies.
            Util.waitForUser();
            // shut down this client's Receiver and Sender by sending close messages
            rcvr.shutDown();
            sndr.shutdown();
            Console.Write("\n\n");
        }
        //----< send message for performance to server >--------
        public void sendPerformanceMessage(ulong latency, Sender sndr)
        {
            Message msg = new Message();

            msg.fromUrl = localUrl;
            msg.toUrl   = remoteUrl;
            msg.content = createPerformanceMessage(latency.ToString());
            if (!sndr.sendMessage(msg))
            {
                return;
            }
        }
Ejemplo n.º 25
0
        public void travelLatency(ulong latency, Sender sndr)
        {
            Message msg = new Message();

            msg.fromUrl = localUrl;
            msg.toUrl   = remoteUrl;
            msg.content = "Writer Client latency" + " = " + latency.ToString();
            if (!sndr.sendMessage(msg))
            {
                return;
            }
        }
Ejemplo n.º 26
0
        //Function that sends request to edit data
        private void sendEditMessage(MessageTemplate msgTemplate, Sender sndr)
        {
            Random random = new Random(); //generated data as well as XML to send request to edit data one by one

            for (int i = 0; i < msgTemplate.messageSize; i++)
            {
                XElement   messageNode = new XElement("message");
                XAttribute att         = new XAttribute("commandType", "edit");
                messageNode.Add(att);
                string   rndKey        = listOfKeys[random.Next(listOfKeys.Count)];
                XElement keyTypenode   = new XElement("keyType", "string");
                XElement valueTypeNode = new XElement("valueType", "ListOfString");
                XElement keynode       = new XElement("key", rndKey.ToString());
                XElement valueNode     = new XElement("value");
                XElement name          = new XElement("name", "Updated-name : " + i.ToString());
                XElement desc          = new XElement("desc", "Updated-desc : " + i.ToString());
                XElement timestamp     = new XElement("time", DateTime.Now);
                XElement payload       = new XElement("payload");
                XElement payloadItem   = new XElement("item", "Updated SMA of " + rndKey);
                payload.Add(payloadItem);
                payloadItem = new XElement("item", "Updated OOD of " + rndKey);
                payload.Add(payloadItem);
                XElement children     = new XElement("children");
                int      childrenSize = random.Next(3, 5);
                for (int j = 1; j < childrenSize; j++)
                {
                    XElement item = new XElement("item", "updated-child" + j.ToString());
                    children.Add(item);
                }
                valueNode.Add(name);
                valueNode.Add(desc);
                valueNode.Add(timestamp);
                valueNode.Add(payload);
                valueNode.Add(children);
                messageNode.Add(keyTypenode);
                messageNode.Add(valueTypeNode);
                messageNode.Add(keynode);
                messageNode.Add(valueNode);
                Message msg = new Message();
                msg.fromUrl = localUrl;
                msg.toUrl   = remoteUrl;
                msg.content = messageNode.ToString();
                if (Util.verbose)
                {
                    Console.WriteLine("For Edition, Msg Sent with key= " + rndKey.ToString());
                }
                if (!sndr.sendMessage(msg))
                {
                    return;
                }
                Thread.Sleep(10);
            }
        }
Ejemplo n.º 27
0
        public void send_wpf_latency(double latency, string query_type, Sender sndr, string localport)
        {
            Message wpf_message = new Message();

            wpf_message.fromUrl = localUrl;
            wpf_message.toUrl   = "http://localhost:8081/CommService";

            string msg = "Write Client(" + localport + ") Latency time for request of type " + query_type + " = " + latency + " milliseconds";

            wpf_message.content = msg;
            sndr.sendMessage(wpf_message);
            Thread.Sleep(150);
            //wpf_message = new Message();
        }
Ejemplo n.º 28
0
        public void send_wpf_average(string query_type, Sender sndr, string localport)
        {
            Message wpf_message = new Message();

            wpf_message.fromUrl = "http://localhost:8080/CommService";
            wpf_message.toUrl   = "http://localhost:8081/CommService";

            string msg = "Server(" + localport + "): Average processing time for " + diction[query_type].Count + " operations of type " + query_type + " = " + diction[query_type].Average() + " microseconds";

            wpf_message.content = msg;
            sndr.sendMessage(wpf_message);
            Thread.Sleep(150);
            //wpf_message = new Message();
        }
Ejemplo n.º 29
0
        public void send_wpf_processing(ulong proc_time, string query_type, Sender sndr, string localport)
        {
            Message wpf_message = new Message();

            wpf_message.fromUrl = "http://localhost:8080/CommService";
            wpf_message.toUrl   = "http://localhost:8081/CommService";

            string msg = "Server(" + localport + "): Processing time for request of type " + query_type + " = " + proc_time + " microseconds";

            wpf_message.content = msg;
            sndr.sendMessage(wpf_message);
            Thread.Sleep(150);
            //wpf_message = new Message();
        }
Ejemplo n.º 30
0
        private void sendAddMsg(MessageTemplate msgTemplate, Sender sndr)
        {
            Random random = new Random();

            for (int i = 0; i < msgTemplate.messageSize; i++)
            {
                XElement   messageNode = new XElement("message");
                XAttribute att         = new XAttribute("commandType", "add");
                messageNode.Add(att);
                int      rndKey = random.Next(1, 10000); XElement keyTypenode = new XElement("keyType", "string");
                XElement valueTypeNode = new XElement("valueType", "ListOfString");
                XElement keynode       = new XElement("key", rndKey.ToString());
                listOfKeys.Add(rndKey.ToString());
                XElement valueNode      = new XElement("value");
                XElement name           = new XElement("name", "name : " + i.ToString());
                XElement desc           = new XElement("desc", "desc : " + i.ToString());
                XElement timestamp      = new XElement("time", DateTime.Now);
                XElement payload        = new XElement("payload");
                int      rndPayloadSize = random.Next(2, 10);
                for (int j = 0; j < rndPayloadSize; j++)
                {
                    XElement item = new XElement("item", "item" + j + " of " + rndKey);
                    payload.Add(item);
                }
                XElement children     = new XElement("children");
                int      childrenSize = random.Next(3, 5);
                for (int j = 1; j < childrenSize; j++)
                {
                    XElement item = new XElement("item", j.ToString());
                    children.Add(item);
                }
                valueNode.Add(name);
                valueNode.Add(desc);
                valueNode.Add(timestamp);
                valueNode.Add(payload);
                valueNode.Add(children);
                messageNode.Add(keyTypenode);
                messageNode.Add(valueTypeNode);
                messageNode.Add(keynode);
                messageNode.Add(valueNode);
                Message msg = new Message();
                msg.fromUrl = localUrl;
                msg.toUrl   = remoteUrl;
                msg.content = messageNode.ToString();
                if (!sndr.sendMessage(msg))
                {
                    return;
                }
            }
        }
Ejemplo n.º 31
0
        static void Main(string[] args)
        {
            MessageMaker msgMaker = new MessageMaker();

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

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

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

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

            writeClient.sendMessageToServer(results, timer, msgMaker, sndr, rcvr);
            Console.Write("\n  sender's url is {0}", writeClient.localUrl);
            Console.Write("\n  attempting to connect to {0}\n", writeClient.remoteUrl);
            //Wait until all messages from server are received.
            while (rcvr.count < writeClient.numMsg)
            {
                sndr.SendWriterLatency(rcvr.totalExecutionTime / rcvr.count);
            }
            msg.content = "done";
            msg.fromUrl = writeClient.localUrl;
            msg.toUrl   = writeClient.remoteUrl;
            sndr.sendMessage(msg);
            Util.waitForUser();
            sndr.SendWriterLatency(rcvr.totalExecutionTime / rcvr.count);
            rcvr.shutDown();
            sndr.shutdown();
        }
        /// <summary>
        /// Requirement 7 for showing how the query read operation for getting elements having specific pattern in metadata
        /// <param name="msg"></param>
        /// <param name="sndr"></param>
        void TestR7D(ref Message msg, Sender sndr)
        {
            try
            {
                XmlTextReader textReader = new XmlTextReader("Input.xml");
                BasicRequirementTest te = new BasicRequirementTest();
                if (File.Exists("Input.xml"))
                {

                    "Demonstrating Requirement #7 - Querying for getting elements having specific pattern in metadata".title('=');
                    WriteLine();
                    XDocument doc = XDocument.Load("Input.xml");
                    string msgid = "";
                    msgid = intRand.Next(1, 2000).ToString();
                    XElement k = null;
                    RemoveOtherReads(ref doc, "GetByMetadataCriteria");
                    RemoveOtherWrites(ref doc, "GetByMetadataCriteria");
                    k = doc.Descendants("OperationMessage").Where(d => d.Element("QueryType").Value == "GetByMetadataCriteria").Select(i => i).Single();
                    k.Elements("MessageID").Single().Value = msgid;
                    msg.content = doc.ToString();
                    Console.Write("\nSending Message..Message is \n {0} \n", msg.content);
                    if (sndr.sendMessage(msg))
                    {
                        Console.Write("\nMessage(MessageID:{0}) to retrieve db elements with metatadata matching pattern sent successfully \n", msgid);
                        Thread.Sleep(50);
                    }
                }
            }
            catch (Exception ex)
            {
                throw new CustomException("Error occured while getting key details", ex);
            }
        }
Ejemplo n.º 33
0
 static void Main(string[] args) { 
     Console.Write("\n  starting CommService client");
     Console.Write("\n =============================\n");
     HiResTimer timerReader = new HiResTimer();
     Client clnt = new Client();
     clnt.processCommandLine(args);
     string localPort = args[0];
     clnt.localUrl = "http://localhost:" + localPort + "/CommService";
     string localAddr = Util.urlAddress(clnt.localUrl);
     Receiver rcvr = new Receiver(localPort, localAddr);
     rcvr.setTimerFromClient(timerReader);
     clnt.startRcvrService(rcvr);
     Sender sndr = new Sender(clnt.localUrl);  // Sender needs localUrl for start message
     MessageMaker readerInput = new MessageMaker();
     string fileName = ".\\ReaderClientInput.xml";
     Message msg = new Message();
     int numRequests = Convert.ToInt32(args[1]);
     XDocument xmldoc = XDocument.Load(fileName);
     var requests = xmldoc.Descendants("Request");
     int requestCount = 0, i = 0; List<XElement> totalrequest = new List<XElement>();
     while (i < numRequests) {    //set the specified number of requests to send
         totalrequest.Add(requests.ElementAt(i)); i++;}
     timerReader.Start();
     foreach (var request in totalrequest) {   //send each request to the message maker to create a message
         msg = new Message();
         msg = readerInput.makeMessage(clnt.localUrl, clnt.remoteUrl, request);
         Console.Title = "Reader Client to query the NoSQl database: Querying " + (++requestCount) + " requests";
         if (!sndr.Connect(msg.toUrl)) {      //send url of the destination to the sender
             Console.Write("\n  could not connect in {0} attempts", sndr.MaxConnectAttempts);
             sndr.shutdown();
             rcvr.shutDown();
             return;
         }
         Thread.Sleep(700);
         while (true) {
                 clnt.printMessage(msg);         //print the message contents
                 if (!sndr.sendMessage(msg))     // send the message to the sender
                     return;
                 Thread.Sleep(100);
                 break;}
     sndr.sendLatencyReader(rcvr.avgLatency);}
     Console.Write("\n  Sender's url is {0}", msg.fromUrl);
     Console.Write("\n  Attempting to connect to {0}\n", msg.toUrl);
     msg.content = "done";
     sndr.sendMessage(msg);
     Util.waitForUser();
     rcvr.shutDown();
     sndr.shutdown();
 } } }
        /// <summary>
        /// Requirement 7 for showing how the query read operation for getting packages for Repository
        /// <param name="msg"></param>
        /// <param name="sndr"></param>
        void TestR10(ref Message msg, Sender sndr)
        {
            try
            {
                XmlTextReader textReader = new XmlTextReader("Input.xml");
                BasicRequirementTest te = new BasicRequirementTest();
                if (File.Exists("Input.xml"))
                {

                    "Demonstrating Requirement #7 - Querying Children package details based on Repository Key".title('=');
                    WriteLine();
                    XDocument doc = XDocument.Load("Input.xml");
                    string msgid = "";
                    msgid = intRand.Next(1, 2000).ToString();
                    XElement k = null;
                    RemoveOtherReads(ref doc, "GetChildren");
                    RemoveOtherWrites(ref doc, "GetChildren");
                    k = doc.Descendants("OperationMessage").Where(d => d.Element("QueryType").Value == "GetChildren").Select(i => i).Single();
                    k.Elements("MessageID").Single().Value = msgid;
                    k.Elements("Key").Single().Value = KeyLs.Get()[0].ToString();
                    msg.content = doc.ToString();
                    Console.Write("\n Sending Message..Message is \n {0} \n", msg.content);
                    if (sndr.sendMessage(msg))
                    {
                        Console.Write("\nMessage(MessageID:{0}) to retrieve values for children sent successfully \n", msgid);
                        Thread.Sleep(50);
                    }
                }
            }
            catch (Exception ex)
            {
                throw new CustomException("Error occured while getting key details", ex);
            }
        }
 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");
 }
Ejemplo n.º 36
0
 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 (!sndr.sendMessage(msg))
     return;
       Thread.Sleep(100);
 }
Ejemplo n.º 37
0
 //---------< 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);
 }
Ejemplo n.º 38
0
 //-----------< 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;
   }
 }
Ejemplo n.º 39
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;
 }
Ejemplo n.º 40
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);
         }
     }
 }
Ejemplo n.º 41
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;
        }
Ejemplo n.º 42
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;
        }
 /// <summary>
 /// Requirement 5 for Persisting,Restoring,Augmentation of DB
 /// </summary>
 void TestR5(ref Message msg, Sender sndr)
 {
     try
     {
         XmlTextReader textReader = new XmlTextReader("Input.xml");
         BasicRequirementTest te = new BasicRequirementTest();
         if (File.Exists("Input.xml"))
         {
             "Demonstrating Requirement #5".title('='); Write("Persisting of XML file\n");
             XDocument doc = XDocument.Load("Input.xml");
             string msgid = "", status = "No";
             msgid = intRand.Next(1, 2000).ToString(); XElement k = null;
             k = doc.Descendants("OperationMessage").Where(d => d.Element("Operation").Value == "ManualPersist").Select(i => i).Single();
             RemoveOtherWrites(ref doc, "ManualPersist"); RemoveOtherReads(ref doc, "ManualPersist");
             k.Elements("MessageID").Single().Value = msgid; status = k.Elements("Status").Single().Value;
             if (status == "Yes")
             {
                 msg.content = doc.ToString(); Console.Write("\n Sending Message..Message is \n {0} \n", msg.content);
                 if (sndr.sendMessage(msg))
                 {
                     Console.Write("\nMessage(MessageID:{0}) to Persist DB successfully sent to Database\n", msgid);
                     Thread.Sleep(50);
                 }
             }
             Write("\nRestoring & Augmenting of DB\n");
             doc = XDocument.Load("Input.xml"); msgid = intRand.Next(1, 2000).ToString();
             k = doc.Descendants("OperationMessage").Where(d => d.Element("Operation").Value == "RestoreDB").Select(i => i).Single();
             RemoveOtherWrites(ref doc, "RestoreDB");
             RemoveOtherReads(ref doc, "RestoreDB");
             k.Elements("MessageID").Single().Value = msgid;
             status = k.Elements("Status").Single().Value;
             if (status == "Yes")
             {
                 msg.content = doc.ToString(); Console.Write("\n Sending Message..Message is \n {0} \n", msg.content);
                 if (sndr.sendMessage(msg))
                 {
                     Console.Write("\nMessage(MessageID:{0}) sent to Restore the DB successfully..\n", msgid);
                     Thread.Sleep(50);
                 }
             }
         }
         Thread.Sleep(3000);
     }
     catch (Exception ex)
     {
         throw new CustomException("Error occured while modifying the item", ex);
     }
 }
Ejemplo n.º 44
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);
         }
     }
 }
Ejemplo n.º 45
0
 //--------< 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;
 }
Ejemplo n.º 46
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;
 }
Ejemplo n.º 47
0
 private static void pattern_matching(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 + ",pattern," + x.Current.Element("Pattern").Value.ToString() + ",";
     if (x.Current.Element("Pattern").Value.ToString() != "")
     {
       str = str + counter;
     }
     msg.content += str;
     Console.Write("\n  sending {0}", msg.content + "\n");
     if (!sndr.sendMessage(msg))
       return;
     Thread.Sleep(100);
     msg.content = message.ToString();
       }
 }
Ejemplo n.º 48
0
 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);
 }
Ejemplo n.º 49
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.
        }
Ejemplo n.º 50
0
 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);
 }
        /// <summary>
        /// Requirement 9 for loading package structure into Db
        /// </summary>
        /// <param name="msg"></param>
        /// <param name="sndr"></param>
        void TestR9(ref Message msg, Sender sndr)
        {
            try
            {
                XmlTextReader textReader = new XmlTextReader("Input.xml");
                BasicRequirementTest te = new BasicRequirementTest();
                if (File.Exists("Input.xml"))
                {

                    "Demonstrating Requirement #9 - Loading Package structure".title('=');
                    WriteLine();
                    XDocument doc = XDocument.Load("Input.xml");
                    string msgid = "";
                    msgid = intRand.Next(1, 2000).ToString();
                    XElement k = null;
                    k = doc.Descendants("OperationMessage").Where(d => d.Element("Operation").Value == "LoadPackageStructure").Select(i => i).Single();
                    RemoveOtherReads(ref doc, "LoadPackageStructure");
                    RemoveOtherWrites(ref doc, "LoadPackageStructure");
                    k.Elements("MessageID").Single().Value = msgid;
                    msg.content = doc.ToString();
                    Console.Write("\nSending Message..Message is \n {0} \n", msg.content);
                    if (sndr.sendMessage(msg))
                    {
                        Console.Write("\nMessage(MessageID:{0}) to retrieve db elements created within specified time interval sent successfully \n", msgid);
                        Thread.Sleep(50);
                    }
                }
            }
            catch (Exception ex)
            {
                throw new CustomException("Error occured while getting key details", ex);
            }
        }
Ejemplo n.º 52
0
 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();
       }
 }
 /// <summary>
 ///  Requirement 8 for showing results have been stored in a Immutable DB
 /// </summary>
 /// <param name="msg"></param>
 /// <param name="sndr"></param>
 void TestR8(ref Message msg, Sender sndr)
 {
     try
     {
         XDocument doc = XDocument.Load("Input.xml");
         string msgid = "";
         XElement k = null;
         Console.ForegroundColor = ConsoleColor.Green;
         "Demonstrating Requirement #8 - Immutable DB".title('=');
         WriteLine("The results have been stored in a Immutable DB can be verified in Line 404 of RequestHandler");
         WriteLine("The DB cannot be edited or will not change over time");
         WriteLine("DB is immutable since there are no insert or edit methods");
         WriteLine("The results are now being retreived from Immutable DB");
         k = doc.Descendants("OperationMessage").Where(d => d.Element("Operation").Value == "ImmutableDB").Select(i => i).Single();
         RemoveOtherReads(ref doc, "ImmutableDB");
         RemoveOtherWrites(ref doc, "ImmutableDB");
         k.Elements("MessageID").Single().Value = msgid;
         k.Elements("Key").Single().Value = KeyLs.Get()[0].ToString();
         msg.content = doc.ToString();
         Console.Write("\n Sending Message..Message is \n {0} \n", msg.content);
         if (sndr.sendMessage(msg))
         {
             Console.Write("\nMessage sent successfully, Message ID: {0} \n\n", msgid);
             Thread.Sleep(50);
         }
     }
     catch (Exception ex)
     {
         throw new CustomException("Error occured while getting key details", ex);
     }
 }
Ejemplo n.º 54
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);
 }
Ejemplo n.º 55
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);
        }
Ejemplo n.º 56
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;
 }
        /// <summary>
        /// Requirement 6 for scheduled save process based on time interval provided by the user
        /// </summary>
        void TestR6(ref Message msg, Sender sndr)
        {
            try
            {
                XmlTextReader textReader = new XmlTextReader("Input.xml");
                BasicRequirementTest te = new BasicRequirementTest();
                if (File.Exists("Input.xml"))
                {

                    "Demonstrating Requirement #6".title('=');
                    Write("Scheduling of XML file\n");
                    WriteLine();
                    XDocument doc = XDocument.Load("Input.xml");
                    string msgid = "", status = "No";
                    msgid = intRand.Next(1, 2000).ToString();
                    XElement k = null;
                    k = doc.Descendants("OperationMessage").Where(d => d.Element("Operation").Value == "ScheduledPersist").Select(i => i).Single();
                    RemoveOtherWrites(ref doc, "ScheduledPersist");
                    RemoveOtherReads(ref doc, "ScheduledPersist");
                    k.Elements("MessageID").Single().Value = msgid;
                    status = k.Elements("Status").Single().Value;
                    if (status == "Yes")
                    {
                        msg.content = doc.ToString();
                        Console.Write("\n Sending Message..Message is \n {0} \n", msg.content);
                        if (sndr.sendMessage(msg))
                        {
                            Console.Write("\nMessage(MessageID:{0}) Schedule Save Process after every {1} microsecs executed twice\n", msgid, k.Elements("TimeInterval").Single().Value);
                            Thread.Sleep(50);
                        }
                    }
                }
                Thread.Sleep(3000);
            }
            catch (Exception ex)
            {
                throw new CustomException("Error occured while modifying the item", ex);
            }
        }
Ejemplo n.º 58
0
 private static void time_date_interval(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 = "";
     DateTime date = new DateTime();
     if (DateTime.TryParse(x.Current.Element("SDateTime").Value.ToString(), out date))
     {
       str = str + ",sdate-time," + x.Current.Element("SDateTime").Value.ToString();
     }
     else
     {
       return;
     }
     if (x.Current.Element("EDateTime").Value.ToString() == "" || DateTime.TryParse(x.Current.Element("SDateTime").Value.ToString(), out date))
     {
       str = str + ",edate-time," + x.Current.Element("EDateTime").Value.ToString() + ",";
     }
     else
     {
       return;
     }
     msg.content += str;
     Console.Write("\n  sending {0}", msg.content + "\n");
     if (!sndr.sendMessage(msg))
       return;
     Thread.Sleep(100);
     msg.content = message.ToString();
       }
 }
Ejemplo n.º 59
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);
     }
 }
Ejemplo n.º 60
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;
 }