68        using namespace test::jtx;
 
   72            auto const serverinfo = env.
rpc(
"server_info");
 
   73            BEAST_EXPECT(serverinfo.isMember(jss::result));
 
   74            auto const& result = serverinfo[jss::result];
 
   75            BEAST_EXPECT(!result.isMember(jss::error));
 
   76            BEAST_EXPECT(result[jss::status] == 
"success");
 
   77            BEAST_EXPECT(result.isMember(jss::info));
 
   78            auto const& info = result[jss::info];
 
   79            BEAST_EXPECT(info.isMember(jss::build_version));
 
   81            if (info.isMember(jss::git))
 
   83                auto const& git = info[jss::git];
 
   85                    git.isMember(jss::hash) || git.isMember(jss::branch));
 
   87                    !git.isMember(jss::hash) ||
 
   88                    (git[jss::hash].isString() &&
 
   89                     git[jss::hash].asString().size() == 40));
 
   91                    !git.isMember(jss::branch) ||
 
   92                    (git[jss::branch].isString() &&
 
   93                     git[jss::branch].asString().size() != 0));
 
  104            auto const& ports = result[jss::ports];
 
  105            BEAST_EXPECT(ports.isArray() && ports.size() == 0);
 
  107            BEAST_EXPECT(!result.isMember(jss::git));
 
  114            auto const rpc_port = config[
"port_rpc"].get<
unsigned int>(
"port");
 
  115            auto const grpc_port =
 
  116                config[SECTION_PORT_GRPC].get<
unsigned int>(
"port");
 
  117            auto const ws_port = config[
"port_ws"].get<
unsigned int>(
"port");
 
  118            BEAST_EXPECT(grpc_port);
 
  119            BEAST_EXPECT(rpc_port);
 
  120            BEAST_EXPECT(ws_port);
 
  122            auto const result = env.
rpc(
"server_info");
 
  123            BEAST_EXPECT(!result[jss::result].isMember(jss::error));
 
  124            BEAST_EXPECT(result[jss::result][jss::status] == 
"success");
 
  125            BEAST_EXPECT(result[jss::result].isMember(jss::info));
 
  127                result[jss::result][jss::info][jss::pubkey_validator] ==
 
  130            auto const& ports = result[jss::result][jss::info][jss::ports];
 
  131            BEAST_EXPECT(ports.isArray() && ports.size() == 3);
 
  132            for (
auto const& port : ports)
 
  134                auto const& proto = port[jss::protocol];
 
  135                BEAST_EXPECT(proto.isArray());
 
  136                auto const p = port[jss::port].asUInt();
 
  137                BEAST_EXPECT(p == rpc_port || p == ws_port || p == grpc_port);
 
  140                    BEAST_EXPECT(proto.size() == 1);
 
  141                    BEAST_EXPECT(proto[0u].asString() == 
"grpc");
 
  145                    BEAST_EXPECT(proto.size() == 2);
 
  146                    BEAST_EXPECT(proto[0u].asString() == 
"http");
 
  147                    BEAST_EXPECT(proto[1u].asString() == 
"ws2");
 
  151                    BEAST_EXPECT(proto.size() == 1);
 
  152                    BEAST_EXPECT(proto[0u].asString() == 
"ws");