Esempio n. 1
0
TEST(ReplicatedNodeSetTest, testSetMinusUpdatesReplicatedEndpointDetails)
{
    auto endpoints = dafs::ReplicatedEndpoints
    {
        dafs::Endpoint
        {
            dafs::Address{"1.0.0.0", 1000},
            dafs::Address{"1.0.0.1", 1001},
            dafs::Identity("10000000-0000-0000-0000-000000000000")
        },
        dafs::Endpoint
        {
            dafs::Address{"2.0.0.0", 2000},
            dafs::Address{"2.0.0.1", 2001},
            dafs::Identity("20000000-0000-0000-0000-000000000000")
        },
        dafs::Endpoint
        {
            dafs::Address{"3.0.0.0", 3000},
            dafs::Address{"3.0.0.1", 3001},
            dafs::Identity("30000000-0000-0000-0000-000000000000")
        }
    };
    MockReplication replication;

    dafs::ReplicatedNodeSet nodeset(replication);
    auto result = nodeset.SetMinus(
        dafs::Address{"1.1.0.0", 1100},
        dafs::Address{"1.1.0.1", 1101},
        dafs::Identity("11111111-1111-1111-1111-111111111111"),
        "a_fault_domain",
        "a_location",
        endpoints
    );

    ASSERT_EQ("1.1.0.0", result.minus.management.ip);
    ASSERT_EQ(1100, result.minus.management.port);
    ASSERT_EQ("1.1.0.1", result.minus.replication.ip);
    ASSERT_EQ(1101, result.minus.replication.port);
    ASSERT_EQ("11111111-1111-1111-1111-111111111111", result.minus.identity.id);
}
Esempio n. 2
0
XPathValue
ExpressionPath::evaluate(const XPathEvaluationContext &context) const {
  Nodeset result = _start_point->evaluate(context).nodeset();

  for (auto &step : _steps) {
    Nodeset step_result;

    auto sub_context = context.new_context_for(result.size());

    for (auto &current_node : result) {
      sub_context->next(current_node);
      auto selected = step->evaluate(*sub_context);
      // TODO: What if it is not a nodeset?
      step_result.add_nodeset(selected.nodeset());
    }

    result = step_result;
  }

  return XPathValue(result);
}