diff --git a/tests/simulation/shard_rsm.cpp b/tests/simulation/shard_rsm.cpp index b54f7a993..c1ef1079d 100644 --- a/tests/simulation/shard_rsm.cpp +++ b/tests/simulation/shard_rsm.cpp @@ -680,10 +680,12 @@ void AttemptToExpandOneWithUniqueEdges(ShardClient &client, uint64_t src_vertex_ } } -void AttemptToExpandOneLimitAndOrderBy(ShardClient &client, uint64_t src_vertex_val, EdgeTypeId edge_type_id) { +void AttemptToExpandOneLimitAndOrderBy(ShardClient &client, uint64_t src_vertex_val, uint64_t other_src_vertex_val, + EdgeTypeId edge_type_id) { // Source vertex msgs::Label label = {.id = get_primary_label()}; auto src_vertex = std::make_pair(label, GetPrimaryKey(src_vertex_val)); + auto other_src_vertex = std::make_pair(label, GetPrimaryKey(other_src_vertex_val)); // Edge type auto edge_type = msgs::EdgeType{}; @@ -699,8 +701,9 @@ void AttemptToExpandOneLimitAndOrderBy(ShardClient &client, uint64_t src_vertex_ std::optional<std::vector<PropertyId>> edge_properties = {}; std::vector<msgs::OrderBy> order_by = { - {msgs::Expression{"MG_SYMBOL_NODE.prop1"}, msgs::OrderingDirection::DESCENDING}}; - size_t limit = 3; + {msgs::Expression{"MG_SYMBOL_NODE.prop1"}, msgs::OrderingDirection::ASCENDING}, + {msgs::Expression{"MG_SYMBOL_EDGE.prop4"}, msgs::OrderingDirection::DESCENDING}}; + size_t limit = 1; std::vector<std::string> filters = {"MG_SYMBOL_NODE.prop1 != -1"}; msgs::ExpandOneRequest expand_one_req{}; @@ -712,7 +715,7 @@ void AttemptToExpandOneLimitAndOrderBy(ShardClient &client, uint64_t src_vertex_ expand_one_req.limit = limit; expand_one_req.order_by = order_by; expand_one_req.src_vertex_properties = src_vertex_properties; - expand_one_req.src_vertices = {src_vertex}; + expand_one_req.src_vertices = {src_vertex, other_src_vertex}; expand_one_req.transaction_id.logical_id = GetTransactionId(); while (true) { @@ -727,9 +730,14 @@ void AttemptToExpandOneLimitAndOrderBy(ShardClient &client, uint64_t src_vertex_ // We check that we do not have more results than the limit. Based on the data in the graph, we know that we should // receive exactly limit responses. auto expected_number_of_rows = std::min(expand_one_req.src_vertices.size(), limit); - MG_ASSERT(expected_number_of_rows == 1); // We are sending a single vertex to expand + MG_ASSERT(expected_number_of_rows == 1); MG_ASSERT(write_response.result.size() == expected_number_of_rows); - const auto expected_number_of_edges = 10; // We know there are 10 out-going edges from V2->V3 + + // We know there are 1 out-going edges from V1->V2 + // We know there are 10 out-going edges from V2->V3 + // Since we sort on prop1 and limit 1, we will have a single response + // with two edges corresponding to V1->V2 and V1->V3 + const auto expected_number_of_edges = 2; MG_ASSERT(write_response.result[0].out_edges_with_all_properties.size() == expected_number_of_edges); MG_ASSERT(write_response.result[0] .out_edges_with_specific_properties.empty()); // We are not asking for specific properties @@ -1109,7 +1117,7 @@ void TestExpandOneGraphOne(ShardClient &client) { }); AttemptToExpandOneSimple(client, unique_prop_val_1, edge_type_id); - AttemptToExpandOneLimitAndOrderBy(client, unique_prop_val_2, edge_type_id); + AttemptToExpandOneLimitAndOrderBy(client, unique_prop_val_1, unique_prop_val_2, edge_type_id); AttemptToExpandOneWithWrongEdgeType(client, unique_prop_val_1, wrong_edge_type_id); AttemptToExpandOneWithSpecifiedSrcVertexProperties(client, unique_prop_val_1, edge_type_id); AttemptToExpandOneWithSpecifiedEdgeProperties(client, unique_prop_val_1, edge_type_id, edge_prop_id);