capnproto

FORK: Cap'n Proto serialization/RPC system - core tools and C++ library
git clone https://git.neptards.moe/neptards/capnproto.git
Log | Files | Refs | README | LICENSE

ez-rpc-test.c++ (2766B)


      1 // Copyright (c) 2013-2014 Sandstorm Development Group, Inc. and contributors
      2 // Licensed under the MIT License:
      3 //
      4 // Permission is hereby granted, free of charge, to any person obtaining a copy
      5 // of this software and associated documentation files (the "Software"), to deal
      6 // in the Software without restriction, including without limitation the rights
      7 // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
      8 // copies of the Software, and to permit persons to whom the Software is
      9 // furnished to do so, subject to the following conditions:
     10 //
     11 // The above copyright notice and this permission notice shall be included in
     12 // all copies or substantial portions of the Software.
     13 //
     14 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
     15 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
     16 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
     17 // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
     18 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
     19 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
     20 // THE SOFTWARE.
     21 
     22 #define CAPNP_TESTING_CAPNP 1
     23 
     24 #include "ez-rpc.h"
     25 #include "test-util.h"
     26 #include <kj/compat/gtest.h>
     27 
     28 namespace capnp {
     29 namespace _ {
     30 namespace {
     31 
     32 TEST(EzRpc, Basic) {
     33   int callCount = 0;
     34   EzRpcServer server(kj::heap<TestInterfaceImpl>(callCount), "localhost");
     35 
     36   EzRpcClient client("localhost", server.getPort().wait(server.getWaitScope()));
     37 
     38   auto cap = client.getMain<test::TestInterface>();
     39   auto request = cap.fooRequest();
     40   request.setI(123);
     41   request.setJ(true);
     42 
     43   EXPECT_EQ(0, callCount);
     44   auto response = request.send().wait(server.getWaitScope());
     45   EXPECT_EQ("foo", response.getX());
     46   EXPECT_EQ(1, callCount);
     47 }
     48 
     49 TEST(EzRpc, DeprecatedNames) {
     50   EzRpcServer server("localhost");
     51   int callCount = 0;
     52   server.exportCap("cap1", kj::heap<TestInterfaceImpl>(callCount));
     53   server.exportCap("cap2", kj::heap<TestCallOrderImpl>());
     54 
     55   EzRpcClient client("localhost", server.getPort().wait(server.getWaitScope()));
     56 
     57   auto cap = client.importCap<test::TestInterface>("cap1");
     58   auto request = cap.fooRequest();
     59   request.setI(123);
     60   request.setJ(true);
     61 
     62   EXPECT_EQ(0, callCount);
     63   auto response = request.send().wait(server.getWaitScope());
     64   EXPECT_EQ("foo", response.getX());
     65   EXPECT_EQ(1, callCount);
     66 
     67   EXPECT_EQ(0, client.importCap("cap2").castAs<test::TestCallOrder>()
     68       .getCallSequenceRequest().send().wait(server.getWaitScope()).getN());
     69   EXPECT_EQ(1, client.importCap("cap2").castAs<test::TestCallOrder>()
     70       .getCallSequenceRequest().send().wait(server.getWaitScope()).getN());
     71 }
     72 
     73 }  // namespace
     74 }  // namespace _
     75 }  // namespace capnp