Esempio n. 1
0
        public static void TestContractB_2(string CONF_SRC)
        {
            var conf = LaconicConfiguration.CreateFromString(CONF_SRC);

            using (var app = new ServiceBaseApplication(null, conf.Root))
            {
                var cl = new TestContractBClient(App.ConfigRoot.AttrByName("cs").Value);

                var person = new PersonData {
                    ID = 10, FirstName = "Joe", LastName = "Tester"
                };

                cl.SetPersonOfTheDay(person);

                var ret = cl.GetPersonOfTheDay();

                Aver.IsTrue(10 == ret.ID);
                Aver.AreEqual("Joe", ret.FirstName);
                Aver.AreEqual("Tester", ret.LastName);

                var sum = cl.SummarizeAndFinish(); //destructor

                Aver.AreEqual("That is all! for the person Tester", sum);

                cl.ForgetRemoteInstance();

                Aver.AreEqual("Felix", cl.GetName()); //this will allocate the new isntance

                sum = cl.SummarizeAndFinish();        // this will kill the instance again
                Aver.AreEqual("That is all! but no person of the day was set", sum);

                dumpBindingTransports(cl.Binding);
            }
        }
Esempio n. 2
0
        public static void TestContractB_4(string CONF_SRC)
        {
            var conf = LaconicConfiguration.CreateFromString(CONF_SRC);

            using (var app = new ServiceBaseApplication(null, conf.Root))
            {
                var cl = new TestContractBClient(App.ConfigRoot.AttrByName("cs").Value);

                //Testing overloaded calls
                Aver.AreEqual("Felix", cl.GetName());
                Aver.AreEqual("Felix23", cl.GetName(23));
                Aver.AreEqual("Felix42", cl.GetName(42));
                Aver.AreEqual("Felix", cl.GetName());

                dumpBindingTransports(cl.Binding);
            }
        }
Esempio n. 3
0
        public static void TestContractB_4_Parallel_ManyClients(string CONF_SRC, bool threadSafe)
        {
            const int CNT   = 10000;
            const int CLCNT = 157;

            var conf = LaconicConfiguration.CreateFromString(CONF_SRC);

            using (var app = new ServiceBaseApplication(null, conf.Root))
            {
                var rnd      = new Random();
                var rndBound = (int)(CLCNT * 1.3751d);
                var clients  = new List <TestContractBClient>();

                for (var i = 0; i < CLCNT; i++)
                {
                    var cl = new TestContractBClient(App.ConfigRoot.AttrByName(threadSafe?"cs":"cs2").Value);
                    Aver.AreEqual("Felix1223", cl.GetName(1223));//alloc server
                    clients.Add(cl);
                }


                var set   = new HashSet <int>();
                var watch = System.Diagnostics.Stopwatch.StartNew();

                //.....for making many parallel calls
                System.Threading.Tasks.Parallel.For(0, CNT,
                                                    (i, loop) =>
                {
                    var id = System.Threading.Thread.CurrentThread.ManagedThreadId;

                    lock (set)
                        set.Add(id);

                    var idx = rnd.Next(rndBound);
                    if (idx >= clients.Count)
                    {
                        idx = clients.Count - 1;
                    }
                    var cl = clients[idx];

                    //Testing overloaded calls
                    Aver.AreEqual("Felix{0}".Args(i), cl.GetName(i));
                });
                var elps = watch.ElapsedMilliseconds;

                Console.WriteLine("Parallel Many Clients Glue test made {0} calls in {1} ms at {2} call/sec and was done by these threads:".Args(CNT, elps, CNT / (elps / 1000d)));
                dumpBindingTransports(App.Glue.Bindings.First());
                var cnt = 0;
                foreach (var id in set)
                {
                    Console.Write(id + ", ");
                    cnt++;
                }
                Console.WriteLine(cnt + " total");
            }
        }
Esempio n. 4
0
        public static void TestContractB_4_Parallel(string CONF_SRC, bool threadSafe)
        {
            const int CNT = 10000;


            var conf = LaconicConfiguration.CreateFromString(CONF_SRC);

            using (var app = new ServiceBaseApplication(null, conf.Root))
            {
                //Use the same client.....
                var cl = new TestContractBClient(App.ConfigRoot.AttrByName(threadSafe?"cs":"cs2").Value);

                Aver.AreEqual("Felix1223", cl.GetName(1223)); //alloc server

                var set   = new HashSet <int>();
                var watch = System.Diagnostics.Stopwatch.StartNew();

                //.....for making many parallel calls
                System.Threading.Tasks.Parallel.For(0, CNT,
                                                    (i, loop) =>
                {
                    var id = System.Threading.Thread.CurrentThread.ManagedThreadId;

                    lock (set)
                        set.Add(id);

                    //Testing overloaded calls
                    var result = cl.GetName(i);
                    Aver.AreEqual("Felix{0}".Args(i), result);
                });
                var elps = watch.ElapsedMilliseconds;

                Console.WriteLine("Parallel Glue Test made {0} calls in {1} ms at {2} call/sec and was done by these threads:".Args(CNT, elps, CNT / (elps / 1000d)));
                dumpBindingTransports(cl.Binding);
                var cnt = 0;
                foreach (var id in set)
                {
                    Console.Write(id + ", ");
                    cnt++;
                }
                Console.WriteLine(cnt + " total");
            }
        }