Пример #1
0
        public void DetachWrongUse()
        {
            var impl = new TestInterfaceImpl2();

            Assert.ThrowsException <ArgumentNullException>(() => default(IInterceptionPolicy).Detach(impl));
            Assert.ThrowsException <ArgumentNullException>(() => new MyPolicy("x").Detach(default(ITestInterface)));
        }
Пример #2
0
        public void DisposedProxy()
        {
            var b = new BareProxy();

            Assert.ThrowsException <ArgumentNullException>(() => b.Bind(null));
            var impl  = new TestInterfaceImpl2();
            var proxy = Proxy.Share <ITestInterface>(impl);
            var p     = (Proxy)proxy;

            Assert.ThrowsException <InvalidOperationException>(() => p.Bind(p.ConsumedCap));
            Assert.IsFalse(p.IsDisposed);
            proxy.Dispose();
            Assert.IsTrue(p.IsDisposed);
            Assert.ThrowsException <ObjectDisposedException>(() => p.ConsumedCap);
            var t = proxy.Foo(123, true);

            Assert.IsTrue(Assert.ThrowsExceptionAsync <ObjectDisposedException>(() => t).Wait(MediumNonDbgTimeout));
        }
Пример #3
0
        public async Task Unwrap()
        {
            var impl = new TestInterfaceImpl2();

            Assert.AreEqual(impl, await impl.Unwrap <ITestInterface>());
            using (var proxy = Proxy.Share <ITestInterface>(impl))
                using (var reso = ((Proxy)proxy).GetResolvedCapability <ITestInterface>())
                {
                    Assert.AreEqual(((Proxy)proxy).ConsumedCap, ((Proxy)reso).ConsumedCap);
                }
            Assert.IsNull(await default(ITestInterface).Unwrap());
            var tcs = new TaskCompletionSource <ITestInterface>();

            tcs.SetResult(null);
            Assert.IsNull(await tcs.Task.Eager(true).Unwrap());
            var excepted = Task.FromException <ITestInterface>(new InvalidTimeZoneException("So annoying"));
            await Assert.ThrowsExceptionAsync <RpcException>(async() => await excepted.Eager(true).Unwrap());
        }
Пример #4
0
        public void ReadCapList()
        {
            var mb = MessageBuilder.Create();

            mb.InitCapTable();
            var dss = mb.CreateObject <DynamicSerializerState>();

            dss.SetStruct(0, 1);
            var loc = mb.CreateObject <ListOfCapsSerializer <ITestInterface> >();

            loc.Init(1);
            loc[0] = new TestInterfaceImpl2();
            dss.LinkObject(0, loc);
            var d  = (DeserializerState)dss;
            var cl = d.ReadCapList <ITestInterface>(0);

            Assert.AreEqual(1, cl.Count);
            Assert.IsNotNull(cl[0]);
        }
Пример #5
0
        public void InterceptServerSideRedirectCall()
        {
            var policy = new MyPolicy("a");

            (var server, var client) = SetupClientServerPair();

            using (server)
                using (client)
                {
                    //client.WhenConnected.Wait();

                    var counters = new Counters();
                    server.Main = policy.Attach <ITestInterface>(new TestInterfaceImpl(counters));
                    var redirTarget = new TestInterfaceImpl2();
                    using (var main = client.GetMain <ITestInterface>())
                        using (redirTarget)
                        {
                            var request1 = main.Foo(123, true, default);
                            var fcc      = policy.Calls.ReceiveAsync();
                            Assert.IsTrue(fcc.Wait(MediumNonDbgTimeout));
                            var cc = fcc.Result;

                            Assert.ThrowsException <ArgumentNullException>(() => cc.Bob = null);
                            cc.Bob = redirTarget;
                            cc.ForwardToBob();

                            Assert.IsTrue(policy.Returns.ReceiveAsync().Wait(MediumNonDbgTimeout));

                            cc.ReturnToAlice();

                            Assert.IsTrue(request1.Wait(MediumNonDbgTimeout));

                            Assert.AreEqual("bar", request1.Result);
                        }
                    Assert.IsTrue(redirTarget.IsDisposed);
                    Assert.AreEqual(0, counters.CallCount);
                }
        }