Skip to content

Commit 002c931

Browse files
antonio2368Antonio Andelic
andauthored
Small fixes for Bolt v4 (#15)
* Correct marker for pull message * Pull correct decoding marker and reset expects response message * Disable SSL in tests * Add transactions to integration tests * Change the version of Memgraph server for integration tests * Cleanup the database before c integration test * Cache key fix Co-authored-by: Antonio Andelic <antonio.andelic@memgraph.io>
1 parent 2b7c199 commit 002c931

File tree

9 files changed

+39
-27
lines changed

9 files changed

+39
-27
lines changed

.github/workflows/ci.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ jobs:
3636
platform: [ubuntu-18.04]
3737
runs-on: ${{ matrix.platform }}
3838
env:
39-
MG_VERSION: "1.1.0"
39+
MG_VERSION: "1.2.0"
4040
steps:
4141
- name: Set-up repository
4242
uses: actions/checkout@v1
@@ -46,7 +46,7 @@ jobs:
4646
uses: actions/cache@v1
4747
with:
4848
path: ~/memgraph
49-
key: cache-memgraph-v${MG_VERSION}-docker-image
49+
key: cache-memgraph-v${{ env.MG_VERSION }}-docker-image
5050

5151
- name: Download Memgraph Docker image
5252
if: steps.cache-memgraph-docker.outputs.cache-hit != 'true'

examples/basic.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ int main(int argc, char *argv[]) {
1616
}
1717
mg_session_params_set_host(params, argv[1]);
1818
mg_session_params_set_port(params, (uint16_t)atoi(argv[2]));
19-
mg_session_params_set_sslmode(params, MG_SSLMODE_REQUIRE);
19+
mg_session_params_set_sslmode(params, MG_SSLMODE_DISABLE);
2020

2121
mg_session *session = NULL;
2222
int status = mg_connect(params, &session);

examples/basic.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ int main(int argc, char *argv[]) {
1212
mg::Client::Params params;
1313
params.host = argv[1];
1414
params.port = static_cast<uint16_t>(atoi(argv[2]));
15-
params.use_ssl = true;
15+
params.use_ssl = false;
1616
const auto client = mg::Client::Connect(params);
1717

1818
if (!client) {

src/mgclient.c

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -648,9 +648,10 @@ int mg_connect(const mg_session_params *params, mg_session **session) {
648648
return mg_connect_ca(params, session, &mg_system_allocator);
649649
}
650650

651-
int handle_failure_v1(mg_session *session) {
651+
int handle_failure(mg_session *session) {
652652
int status = 0;
653-
status = mg_session_send_ack_failure_message(session);
653+
status = session->version == 1 ? mg_session_send_ack_failure_message(session)
654+
: mg_session_send_reset_message(session);
654655
if (status != 0) {
655656
return status;
656657
}
@@ -778,8 +779,7 @@ int mg_session_run(mg_session *session, const char *query, const mg_map *params,
778779
if (response->type == MG_MESSAGE_TYPE_FAILURE) {
779780
int failure_status = handle_failure_message(session, response->failure_v);
780781

781-
status = session->version == 1 ? handle_failure_v1(session)
782-
: mg_session_send_reset_message(session);
782+
status = handle_failure(session);
783783
if (status != 0) {
784784
goto fatal_failure;
785785
}
@@ -905,8 +905,7 @@ int mg_session_fetch(mg_session *session, mg_result **result) {
905905
int failure_status = handle_failure_message(session, message->failure_v);
906906
mg_message_destroy_ca(message, session->decoder_allocator);
907907

908-
status = session->version == 1 ? handle_failure_v1(session)
909-
: mg_session_send_reset_message(session);
908+
status = handle_failure(session);
910909
if (status != 0) {
911910
goto fatal_failure;
912911
}
@@ -985,7 +984,7 @@ int mg_session_begin_transaction(mg_session *session,
985984
if (response->type == MG_MESSAGE_TYPE_FAILURE) {
986985
int failure_status = handle_failure_message(session, response->failure_v);
987986

988-
status = mg_session_send_reset_message(session);
987+
status = handle_failure(session);
989988
if (status != 0) {
990989
goto fatal_failure;
991990
}
@@ -1063,7 +1062,7 @@ int mg_session_end_transaction(mg_session *session, int commit_transaction,
10631062
if (response->type == MG_MESSAGE_TYPE_FAILURE) {
10641063
int failure_status = handle_failure_message(session, response->failure_v);
10651064

1066-
status = mg_session_send_reset_message(session);
1065+
status = handle_failure(session);
10671066
if (status != 0) {
10681067
goto fatal_failure;
10691068
}

src/mgsession-decoder.c

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1378,8 +1378,9 @@ int mg_session_read_bolt_message(mg_session *session, mg_message **message) {
13781378
}
13791379
tmessage->type = MG_MESSAGE_TYPE_RESET;
13801380
break;
1381-
case MG_SIGNATURE_MESSAGE_PULL:
1382-
if (marker != MG_MARKER_TINY_STRUCT) {
1381+
case MG_SIGNATURE_MESSAGE_PULL: {
1382+
uint8_t expected_marker = MG_MARKER_TINY_STRUCT + (session->version == 4);
1383+
if (marker != expected_marker) {
13831384
goto wrong_marker;
13841385
}
13851386
tmessage->type = MG_MESSAGE_TYPE_PULL;
@@ -1388,6 +1389,7 @@ int mg_session_read_bolt_message(mg_session *session, mg_message **message) {
13881389
goto cleanup;
13891390
}
13901391
break;
1392+
}
13911393
default:
13921394
mg_session_set_error(session, "unknown message type");
13931395
status = MG_ERROR_PROTOCOL_VIOLATION;

src/mgsession-encoder.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -245,7 +245,8 @@ int mg_session_send_run_message(mg_session *session, const char *statement,
245245
}
246246

247247
int mg_session_send_pull_message(mg_session *session, const mg_map *extra) {
248-
MG_RETURN_IF_FAILED(mg_session_write_uint8(session, MG_MARKER_TINY_STRUCT));
248+
uint8_t marker = MG_MARKER_TINY_STRUCT + (session->version == 4);
249+
MG_RETURN_IF_FAILED(mg_session_write_uint8(session, marker));
249250
MG_RETURN_IF_FAILED(
250251
mg_session_write_uint8(session, MG_SIGNATURE_MESSAGE_PULL));
251252

tests/client.cpp

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -851,8 +851,6 @@ void RunTest::InvalidStatement(int version) {
851851
ASSERT_EQ(message->type, MG_MESSAGE_TYPE_ACK_FAILURE);
852852
mg_message_destroy_ca(message, session->decoder_allocator);
853853

854-
// Server responds with SUCCESS.
855-
{ ASSERT_EQ(mg_session_send_success_message(session, &mg_empty_map), 0); }
856854
} else {
857855
mg_message *message;
858856
ASSERT_EQ(mg_session_receive_message(session), 0);
@@ -861,6 +859,9 @@ void RunTest::InvalidStatement(int version) {
861859
mg_message_destroy_ca(message, session->decoder_allocator);
862860
}
863861

862+
// Server responds with SUCCESS.
863+
{ ASSERT_EQ(mg_session_send_success_message(session, &mg_empty_map), 0); }
864+
864865
mg_session_destroy(session);
865866
});
866867
session->version = version;
@@ -1280,7 +1281,6 @@ void RunTest::QueryRuntimeError(int version) {
12801281
mg_message_destroy_ca(message, session->decoder_allocator);
12811282

12821283
// Server responds with SUCCESS.
1283-
{ ASSERT_EQ(mg_session_send_success_message(session, &mg_empty_map), 0); }
12841284
} else {
12851285
mg_message *message;
12861286
ASSERT_EQ(mg_session_receive_message(session), 0);
@@ -1289,6 +1289,7 @@ void RunTest::QueryRuntimeError(int version) {
12891289
mg_message_destroy_ca(message, session->decoder_allocator);
12901290
}
12911291

1292+
{ ASSERT_EQ(mg_session_send_success_message(session, &mg_empty_map), 0); }
12921293
mg_session_destroy(session);
12931294
});
12941295

tests/integration/basic_c.cpp

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -68,16 +68,28 @@ class MemgraphConnection : public ::testing::Test {
6868
std::string memgraph_host =
6969
GetEnvOrDefault<std::string>("MEMGRAPH_HOST", "127.0.0.1");
7070
int memgraph_port = GetEnvOrDefault<int>("MEMGRAPH_PORT", 7687);
71-
bool memgraph_ssl = GetEnvOrDefault<bool>("MEMGRAPH_SSLMODE", true);
71+
bool memgraph_ssl = GetEnvOrDefault<bool>("MEMGRAPH_SSLMODE", false);
7272

7373
mg_session_params_set_host(params, memgraph_host.c_str());
7474
mg_session_params_set_port(params, memgraph_port);
7575
mg_session_params_set_sslmode(
7676
params, memgraph_ssl ? MG_SSLMODE_REQUIRE : MG_SSLMODE_DISABLE);
7777
ASSERT_EQ(mg_connect(params, &session), 0);
78+
DatabaseCleanup();
7879
}
7980

8081
virtual void TearDown() override {
82+
DatabaseCleanup();
83+
mg_session_params_destroy(params);
84+
if (session) {
85+
mg_session_destroy(session);
86+
}
87+
}
88+
89+
mg_session_params *params;
90+
mg_session *session;
91+
92+
void DatabaseCleanup() {
8193
mg_result *result;
8294
const char *delete_all_query = "MATCH (n) DETACH DELETE n";
8395

@@ -86,17 +98,11 @@ class MemgraphConnection : public ::testing::Test {
8698
ASSERT_EQ(mg_session_pull(session, NULL), 0);
8799
ASSERT_EQ(mg_session_fetch(session, &result), 0);
88100
ASSERT_EQ(mg_session_fetch(session, &result), MG_ERROR_BAD_CALL);
89-
mg_session_params_destroy(params);
90-
if (session) {
91-
mg_session_destroy(session);
92-
}
93101
}
94-
95-
mg_session_params *params;
96-
mg_session *session;
97102
};
98103

99104
TEST_F(MemgraphConnection, InsertAndRetriveFromMemegraph) {
105+
ASSERT_EQ(mg_session_begin_transaction(session, NULL), 0);
100106
mg_result *result;
101107
int status = 0, rows = 0;
102108
const char *create_query =
@@ -157,4 +163,5 @@ TEST_F(MemgraphConnection, InsertAndRetriveFromMemegraph) {
157163
}
158164
ASSERT_EQ(rows, 1);
159165
ASSERT_EQ(status, 0);
166+
ASSERT_EQ(mg_session_commit_transaction(session, &result), 0);
160167
}

tests/integration/basic_cpp.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ class MemgraphConnection : public ::testing::Test {
3333
client = mg::Client::Connect(
3434
{GetEnvOrDefault<std::string>("MEMGRAPH_HOST", "127.0.0.1"),
3535
GetEnvOrDefault<uint16_t>("MEMGRAPH_PORT", 7687), "", "",
36-
GetEnvOrDefault<bool>("MEMGRAPH_SSLMODE", true), ""});
36+
GetEnvOrDefault<bool>("MEMGRAPH_SSLMODE", false), ""});
3737

3838
ASSERT_TRUE(client);
3939

@@ -56,6 +56,7 @@ class MemgraphConnection : public ::testing::Test {
5656

5757
TEST_F(MemgraphConnection, InsertAndRetrieveFromMemgraph) {
5858
ASSERT_NE(client, nullptr);
59+
ASSERT_TRUE(client->BeginTransaction());
5960

6061
const auto create_query =
6162
"CREATE (n: TestLabel{id: 1, name: 'test1', is_deleted: true}) "
@@ -111,4 +112,5 @@ TEST_F(MemgraphConnection, InsertAndRetrieveFromMemgraph) {
111112
++result_counter;
112113
}
113114
ASSERT_EQ(result_counter, 1);
115+
ASSERT_TRUE(client->CommitTransaction());
114116
}

0 commit comments

Comments
 (0)