memgraph/tests/unit
Teon Banek e0474a8e92 Replace boost with capnp in RPC
Summary:
Converts the RPC stack to use Cap'n Proto for serialization instead of
boost. There are still some traces of boost in other places in the code,
but most of it is removed. A future diff should cleanup boost for good.

The RPC API is now changed to be more flexible with regards to how
serialize data. This makes the simplest cases a bit more verbose, but
allows complex serialization code to be correctly written instead of
relying on hacks. (For reference, look for the old serialization of
`PullRpc` which had a nasty pointer hacks to inject accessors in
`TypedValue`.)

Since RPC messages were uselessly modeled via inheritance of Message
base class, that class is now removed. Furthermore, that approach
doesn't really work with Cap'n Proto. Instead, each message type is
required to have some type information. This can be automated, so
`define-rpc` has been added to LCP, which hopefully simplifies defining
new RPC request and response messages.

Specify Cap'n Proto schema ID in cmake

This preserves Cap'n Proto generated typeIds across multiple generations
of capnp schemas through LCP. It is imperative that typeId stays the
same to ensure that different compilations of Memgraph may communicate
via RPC in a distributed cluster.

Use CLOS for meta information on C++ types in LCP

Since some structure slots and functions have started to repeat
themselves, it makes sense to model C++ meta information via Common Lisp
Object System.

Depends on D1391

Reviewers: buda, dgleich, mferencevic, mtomic, mculinovic, msantl

Reviewed By: msantl

Subscribers: pullbot

Differential Revision: https://phabricator.memgraph.io/D1407
2018-06-04 10:45:12 +02:00
..
bolt_chunked_decoder_buffer.cpp Remove obsolete network buffers 2018-04-06 16:26:46 +02:00
bolt_chunked_encoder_buffer.cpp Refactor network layer to use streams 2018-03-27 15:05:45 +02:00
bolt_common.hpp Clean utils folder (namespaces, function names) 2018-04-22 09:44:32 +02:00
bolt_decoder.cpp First version of bolt cpp client. 2017-08-24 17:44:44 +02:00
bolt_encoder.cpp Refactor network layer to use streams 2018-03-27 15:05:45 +02:00
bolt_result_stream.cpp Refactor network layer to use streams 2018-03-27 15:05:45 +02:00
bolt_session.cpp Clean utils folder (namespaces, function names) 2018-04-22 09:44:32 +02:00
bolt_testdata.hpp Removed large bolt encoder test to reduce runtime. 2017-05-03 14:50:02 +02:00
CMakeLists.txt Extract io/network into mg-io library 2018-05-30 14:58:41 +02:00
communication_buffer.cpp Remove obsolete network buffers 2018-04-06 16:26:46 +02:00
concurrent_id_mapper_distributed.cpp Use the same ClientPools in distributed 2018-03-01 17:14:59 +01:00
concurrent_id_mapper_single_node.cpp Add initial version of properties on disk 2018-05-10 17:58:38 +02:00
concurrent_map_access.cpp Const map/set iteration. 2017-10-12 16:35:39 +02:00
concurrent_map.cpp Clean SkipList up 2018-04-11 10:08:20 +02:00
counters.cpp Use the same ClientPools in distributed 2018-03-01 17:14:59 +01:00
cypher_main_visitor.cpp Add generating Capnp schema in LCP 2018-05-30 16:14:54 +02:00
database_key_index.cpp Migrate db::types to storage:: 2018-01-17 10:35:12 +01:00
database_label_property_index.cpp Support distributed (label, property) indexes 2018-01-25 18:08:04 +01:00
database_master.cpp Add database master test 2018-01-19 14:52:05 +01:00
database_transaction_timeout.cpp Invalidate distributed plan caches 2018-03-13 14:59:51 +01:00
datastructure_union_find.cpp Add parallel customers/Otto test 2017-11-23 09:20:53 +01:00
deferred_deleter.cpp Make gc more aggressive and optimise is_not_visible function 2017-10-06 10:07:55 +02:00
distributed_bfs.cpp Distributed BFS 2018-05-15 17:38:51 +02:00
distributed_common.hpp Distributed BFS 2018-05-15 17:38:51 +02:00
distributed_coordination.cpp Notify master of worker recovery 2018-05-10 11:09:34 +02:00
distributed_data_exchange.cpp Create Dynamic Graph Partitioner, 2018-05-29 11:32:39 +02:00
distributed_durability.cpp Ensure workers recover appropriate snapshot 2018-04-16 16:58:54 +02:00
distributed_dynamic_graph_partitioner.cpp Create Dynamic Graph Partitioner, 2018-05-29 11:32:39 +02:00
distributed_gc.cpp Commit log gc 2018-04-04 10:25:25 +02:00
distributed_graph_db.cpp Tidyup distributed stuff naming 2018-03-23 16:32:29 +01:00
distributed_interpretation.cpp Add command id to remote produce 2018-05-16 10:20:39 +02:00
distributed_query_plan.cpp Add command id to remote produce 2018-05-16 10:20:39 +02:00
distributed_serialization.cpp Migrate db::types to storage:: 2018-01-17 10:35:12 +01:00
distributed_token_sharing.cpp Create Dynamic Graph Partitioner, 2018-05-29 11:32:39 +02:00
distributed_updates.cpp Revert "Remote vertex with gid creation" 2018-05-30 14:44:50 +02:00
distributed_vertex_migrator.cpp Create Dynamic Graph Partitioner, 2018-05-29 11:32:39 +02:00
durability.cpp Extract io/network into mg-io library 2018-05-30 14:58:41 +02:00
dynamic_bitset.cpp Commit log gc 2018-04-04 10:25:25 +02:00
gid.cpp Change gid bit size 2017-12-28 11:04:52 +01:00
graph_db_accessor_index_api.cpp Migrate db::types to storage:: 2018-01-17 10:35:12 +01:00
graph_db_accessor.cpp Migrate db::types to storage:: 2018-01-17 10:35:12 +01:00
graph_db.cpp Migrate db::types to storage:: 2018-01-17 10:35:12 +01:00
interpreter.cpp Invalidate distributed plan caches 2018-03-13 14:59:51 +01:00
metrics.cpp Add some metric types and basic RPC server stats 2018-02-16 08:33:15 +01:00
mvcc_find_update_common.hpp Extract io/network into mg-io library 2018-05-30 14:58:41 +02:00
mvcc_find.cpp GC bugfixes, MVCC and transaction refactoring 2017-06-12 10:46:12 +02:00
mvcc_gc_common.hpp Extract tx::SingleNodeEngine from tx::MasterEngine 2018-01-11 15:44:42 +01:00
mvcc_gc.cpp Extract tx::SingleNodeEngine from tx::MasterEngine 2018-01-11 15:44:42 +01:00
mvcc_one_transaction.cpp Fix mvcc tests 2017-10-19 12:58:23 +02:00
mvcc_parallel_update.cpp Fix mvcc tests 2017-10-19 12:58:23 +02:00
mvcc.cpp Extract io/network into mg-io library 2018-05-30 14:58:41 +02:00
network_endpoint.cpp Rename NetworkEndpoint 2018-01-15 15:47:37 +01:00
network_timeouts.cpp Fix network test not setting null 2018-03-28 15:16:42 +02:00
network_utils.cpp Extract utils into mg-utils static library and explicitly list tests 2018-05-30 09:41:56 +02:00
property_value_store.cpp Add initial version of properties on disk 2018-05-10 17:58:38 +02:00
query_common.hpp Add SINGLE function to openCypher 2018-02-13 17:30:44 +01:00
query_cost_estimator.cpp Remove AS_IS from GraphView 2018-05-15 13:10:19 +02:00
query_expression_evaluator.cpp Auto generate vertex/edge ids 2018-05-25 16:03:12 +02:00
query_plan_accumulate_aggregate.cpp Remove AS_IS from GraphView 2018-05-15 13:10:19 +02:00
query_plan_bag_semantics.cpp Use RemoteCreateVertex in CreateNode operator 2018-02-21 12:17:43 +01:00
query_plan_common.hpp Remove AS_IS from GraphView 2018-05-15 13:10:19 +02:00
query_plan_create_set_remove_delete.cpp Remove AS_IS from GraphView 2018-05-15 13:10:19 +02:00
query_plan_edge_cases.cpp Invalidate distributed plan caches 2018-03-13 14:59:51 +01:00
query_plan_match_filter_return.cpp Distributed BFS 2018-05-15 17:38:51 +02:00
query_planner.cpp Add generating Capnp schema in LCP 2018-05-30 16:14:54 +02:00
query_semantic.cpp Add SINGLE function to openCypher 2018-02-13 17:30:44 +01:00
query_variable_start_planner.cpp Add wShortest expansion to openCypher 2018-02-09 11:02:41 +01:00
queue.cpp Add first version of message passing and rpc 2017-12-05 14:51:18 +01:00
raft_storage.cpp Cleanup utils::File API 2018-01-16 15:38:12 +01:00
raft.cpp RPC refactor 2018-01-24 15:27:40 +01:00
record_edge_vertex_accessor.cpp Refactor state deltas call 2018-02-26 15:44:50 +01:00
ring_buffer.cpp Extract io/network into mg-io library 2018-05-30 14:58:41 +02:00
rpc_worker_clients.cpp Replace boost with capnp in RPC 2018-06-04 10:45:12 +02:00
rpc.cpp Replace boost with capnp in RPC 2018-06-04 10:45:12 +02:00
serialization.cpp Replace boost with capnp in RPC 2018-06-04 10:45:12 +02:00
skiplist_access.cpp Const map/set iteration. 2017-10-12 16:35:39 +02:00
skiplist_gc.cpp Remove executor not run option 2017-12-18 14:36:15 +01:00
skiplist_position_and_count.cpp Replace debug_assert, permanent_assert with DCHECK/CHECK 2017-10-11 14:43:32 +02:00
skiplist_reverse_iteration.cpp Logger in this test somehow breaks code coverage. Argh... 2017-04-07 09:44:12 +02:00
skiplist_suffix.cpp Refactor GraphDb 2018-01-12 16:47:24 +01:00
state_delta.cpp Rename Find[Vertex|Edge][Checked] 2018-03-21 11:15:59 +01:00
static_bitset.cpp Fix tests that expect debug_assert to fail 2017-08-07 16:38:15 +02:00
storage_address.cpp Support snapshot creation and recovery in distributed 2018-01-29 19:16:13 +01:00
stripped.cpp Fix semicolon in column name 2017-12-14 09:44:21 +01:00
transaction_engine_distributed.cpp Replace command_id_t with CommandId and transaction_id_t with TransactionId. 2018-04-20 13:55:14 +02:00
transaction_engine_single_node.cpp Replace command_id_t with CommandId and transaction_id_t with TransactionId. 2018-04-20 13:55:14 +02:00
typed_value.cpp Refactor GraphDb 2018-01-12 16:47:24 +01:00
utils_demangle.cpp Extract utils into mg-utils static library and explicitly list tests 2018-05-30 09:41:56 +02:00
utils_exceptions.cpp Extract utils into mg-utils static library and explicitly list tests 2018-05-30 09:41:56 +02:00
utils_executor.cpp Extract utils into mg-utils static library and explicitly list tests 2018-05-30 09:41:56 +02:00
utils_on_scope_exit.cpp utils::auto_scope refactor 2017-08-11 09:43:10 +02:00
utils_rwlock.cpp Extract io/network into mg-io library 2018-05-30 14:58:41 +02:00
utils_scheduler.cpp Extract utils into mg-utils static library and explicitly list tests 2018-05-30 09:41:56 +02:00
utils_signals.cpp Extract utils into mg-utils static library and explicitly list tests 2018-05-30 09:41:56 +02:00
utils_string.cpp Fix durability test flakyness 2017-12-04 13:46:56 +01:00
utils_thread_pool.cpp Extract io/network into mg-io library 2018-05-30 14:58:41 +02:00
utils_timestamp.cpp Extract utils into mg-utils static library and explicitly list tests 2018-05-30 09:41:56 +02:00
utils_watchdog.cpp Extract utils into mg-utils static library and explicitly list tests 2018-05-30 09:41:56 +02:00