mirror of
https://github.com/FabInfra/capnproto-dotnetcore_Runtime.git
synced 2025-03-12 23:01:44 +01:00
test & fix
This commit is contained in:
parent
69cb5010c5
commit
aac32335b6
@ -1282,5 +1282,70 @@ namespace Capnp.Net.Runtime.Tests
|
|||||||
Assert.IsTrue(proxy.WhenResolved.IsFaulted);
|
Assert.IsTrue(proxy.WhenResolved.IsFaulted);
|
||||||
tester.ExpectAbort();
|
tester.ExpectAbort();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[TestMethod]
|
||||||
|
public void ReturnToWrongSide2()
|
||||||
|
{
|
||||||
|
var tester = new RpcEngineTester();
|
||||||
|
|
||||||
|
tester.Engine.Main = new TestTailCallerImpl(new Counters());
|
||||||
|
|
||||||
|
tester.Send(_ => {
|
||||||
|
_.which = Message.WHICH.Bootstrap;
|
||||||
|
_.Bootstrap.QuestionId = 0;
|
||||||
|
});
|
||||||
|
uint bootstrapId = 0;
|
||||||
|
tester.Recv(_ => {
|
||||||
|
Assert.AreEqual(Message.WHICH.Return, _.which);
|
||||||
|
Assert.AreEqual(Return.WHICH.Results, _.Return.which);
|
||||||
|
Assert.AreEqual(CapDescriptor.WHICH.SenderHosted, _.Return.Results.CapTable[0].which);
|
||||||
|
bootstrapId = _.Return.Results.CapTable[0].SenderHosted;
|
||||||
|
});
|
||||||
|
tester.Send(_ =>
|
||||||
|
{
|
||||||
|
_.which = Message.WHICH.Call;
|
||||||
|
_.Call.Target.which = MessageTarget.WHICH.ImportedCap;
|
||||||
|
_.Call.Target.ImportedCap = 0;
|
||||||
|
_.Call.SendResultsTo.which = Call.sendResultsTo.WHICH.Caller;
|
||||||
|
_.Call.InterfaceId = new TestTailCaller_Skeleton().InterfaceId;
|
||||||
|
_.Call.MethodId = 0;
|
||||||
|
_.Call.QuestionId = 1;
|
||||||
|
var a = _.Call.Params.Content.Rewrap<TestTailCaller.Params_Foo.WRITER>();
|
||||||
|
a.Callee = new TestTailCalleeImpl(new Counters());
|
||||||
|
_.Call.Params.CapTable.Init(1);
|
||||||
|
_.Call.Params.CapTable[0].which = CapDescriptor.WHICH.SenderHosted;
|
||||||
|
_.Call.Params.CapTable[0].SenderHosted = 0;
|
||||||
|
});
|
||||||
|
uint q = 0;
|
||||||
|
tester.Recv(_ => {
|
||||||
|
Assert.AreEqual(Message.WHICH.Call, _.which);
|
||||||
|
Assert.AreEqual(Call.sendResultsTo.WHICH.Yourself, _.Call.SendResultsTo.which);
|
||||||
|
q = _.Call.QuestionId;
|
||||||
|
});
|
||||||
|
tester.Recv(_ => {
|
||||||
|
Assert.AreEqual(Message.WHICH.Release, _.which);
|
||||||
|
});
|
||||||
|
tester.Recv(_ => {
|
||||||
|
Assert.AreEqual(Message.WHICH.Return, _.which);
|
||||||
|
Assert.AreEqual(Return.WHICH.TakeFromOtherQuestion, _.Return.which);
|
||||||
|
});
|
||||||
|
tester.Send(_ =>
|
||||||
|
{
|
||||||
|
_.which = Message.WHICH.Return;
|
||||||
|
_.Return.which = Return.WHICH.Results;
|
||||||
|
_.Return.AnswerId = q;
|
||||||
|
var wr = _.Return.Results.Content.Rewrap<TestTailCallee.TailResult.WRITER>();
|
||||||
|
wr.C = new TestCallOrderImpl();
|
||||||
|
wr.I = 0;
|
||||||
|
wr.T = "test";
|
||||||
|
_.Return.Results.CapTable.Init(1);
|
||||||
|
_.Return.Results.CapTable[0].which = CapDescriptor.WHICH.SenderHosted;
|
||||||
|
_.Return.Results.CapTable[0].SenderHosted = 1;
|
||||||
|
});
|
||||||
|
tester.Recv(_ => {
|
||||||
|
Assert.AreEqual(Message.WHICH.Finish, _.which);
|
||||||
|
});
|
||||||
|
tester.ExpectAbort();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -400,7 +400,7 @@ namespace Capnp.Net.Runtime.Tests
|
|||||||
{
|
{
|
||||||
var policy = new MyPolicy("a");
|
var policy = new MyPolicy("a");
|
||||||
|
|
||||||
(var server, var client) = SetupClientServerPair();
|
(var server, var client) = SetupClientServerPair(true);
|
||||||
|
|
||||||
using (server)
|
using (server)
|
||||||
using (client)
|
using (client)
|
||||||
|
@ -345,10 +345,12 @@ namespace Capnp.Net.Runtime.Tests
|
|||||||
|
|
||||||
protected ILogger Logger { get; set; }
|
protected ILogger Logger { get; set; }
|
||||||
|
|
||||||
protected static TcpRpcClient SetupClient()
|
protected static TcpRpcClient SetupClient(bool withTracer = false)
|
||||||
{
|
{
|
||||||
var client = new TcpRpcClient();
|
var client = new TcpRpcClient();
|
||||||
client.AddBuffering();
|
client.AddBuffering();
|
||||||
|
if (withTracer)
|
||||||
|
client.AttachTracer(new FrameTracing.RpcFrameTracer(Console.Out, false));
|
||||||
client.Connect("localhost", TcpPort);
|
client.Connect("localhost", TcpPort);
|
||||||
return client;
|
return client;
|
||||||
}
|
}
|
||||||
@ -379,10 +381,10 @@ namespace Capnp.Net.Runtime.Tests
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected static (TcpRpcServer, TcpRpcClient) SetupClientServerPair()
|
protected static (TcpRpcServer, TcpRpcClient) SetupClientServerPair(bool withClientTracer = false)
|
||||||
{
|
{
|
||||||
var server = SetupServer();
|
var server = SetupServer();
|
||||||
var client = SetupClient();
|
var client = SetupClient(withClientTracer);
|
||||||
return (server, client);
|
return (server, client);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user