memgraph/tests/qa
florijan 76fe8bfadf Variable expansion consolidaton
Summary:
- Removed BreadthFirstAtom, using EdgeAtom only with a Type enum.
- Both variable expansions (breadth and depth first) now have mandatory inner node and edge Identifiers.
- Both variable expansions use inline property filtering and support inline lambdas.
- BFS and variable expansion now have the same planning process.
- Planner modified in the following ways:
	- Variable expansions support inline property filtering (two filters added to all_filters, one for inline, one for post-expand).
	- Asserting against existing_edge since we don't support that anymore.
	- Edge and node symbols bound after variable expansion to disallow post-expand filters to get inlined.
	- Some things simplified due to different handling.
- BreadthFirstExpand logical operator merged into ExpandVariable. Two Cursor classes remain and are dynamically chosen from.

As part of planned planner refactor we should ensure that a filter is applied only once. The current implementation is very suboptimal for property filtering in variable expansions.

@buda: we will start refactoring this these days. This current planner logic is too dense and complex. It is becoming technical debt. Most of the time I spent working on this has been spent figuring the planning out, and I still needed Teon's help at times. Implementing the correct and optimal version of query execution (avoiding multiple potentially expensive filterings) was out of reach also due to tech debt.

Reviewers: buda, teon.banek

Reviewed By: teon.banek

Subscribers: pullbot, buda

Differential Revision: https://phabricator.memgraph.io/D852
2017-10-05 13:12:39 +02:00
..
tck_engine Variable expansion consolidaton 2017-10-05 13:12:39 +02:00
.gitignore .gitignore wasn't updated. 2017-06-20 15:01:11 +02:00
continuous_integration Initial version of macro benchmark summary script. 2017-08-24 15:11:36 +02:00
filter_failing_scenarios .gitignore wasn't updated. 2017-06-20 15:01:11 +02:00
plot_latency Change FILE COPY to configure_file COPYONLY 2017-07-10 16:26:30 +02:00
README.md Change FILE COPY to configure_file COPYONLY 2017-07-10 16:26:30 +02:00
requirements.txt Removed unnecessary dependencies from QA. 2017-08-02 12:06:42 +02:00
run Removed buggy check from QA 2017-09-15 16:24:51 +02:00

Memgraph quality assurance

In order to test dressipi's queries agains memgraph the following commands have to be executed: 1. ./init [Dxyz] # downloads query implementations + memgraph # (the auth is manually for now) + optionally user can # define arcanist diff which will be applied on the # memgraph source code 2. ./run # compiles and runs database instance, also runs the # test queries

TODO: automate further

TCK Engine

Python script used to run tck tests against memgraph. To run script execute:

1. python3 tck_engine/test_executor.py

Script uses Behave to run Cucumber tests.

The following tck tests have been changed:

1. Tests where example injection did not work. Behave stores the first row
   in Cucumber tables as headings and the example injection is not working in
   headings. To correct this behavior, one row was added to tables where
   injection was used.

2. Tests where the results were not always in the same order. Query does not
   specify the result order, but tests specified it. It led to the test failure.
   To correct tests, tag "the result should be" was changed with a
   tag "the result should be (ignoring element order for lists)".

3. Behave can't escape character '|' and it throws parse error. Query was then
   changed and result was returned with different name.

Comparability.feature tests are failing because integers are compared to strings what is not allowed in openCypher.

TCK Engine problems:

1. Comparing tables with ordering.
     ORDER BY x DESC
     | x | y |    | x | y |
     | 3 | 2 |    | 3 | 1 |
     | 3 | 1 |    | 3 | 2 |
     | 1 | 4 |    | 1 | 4 |

2. Properties side effects
     | +properties | 1 |
     | -properties | 1 |

     Database is returning properties_set, not properties_created and properties_deleted.