diff --git a/init b/init
index 5888ad228..d4637566b 100755
--- a/init
+++ b/init
@@ -86,4 +86,9 @@ cd tests/qa
 ./init
 cd ../..
 
+# setup macro benchmark
+cd tests/macro_benchmark
+./init
+cd ../..
+
 echo "Done installing dependencies for Memgraph"
diff --git a/tests/benchmark_infra/requirements.txt b/tests/benchmark_infra/requirements.txt
deleted file mode 100644
index 5aae77ad0..000000000
--- a/tests/benchmark_infra/requirements.txt
+++ /dev/null
@@ -1,19 +0,0 @@
-appdirs==1.4.3
-click==6.7
-cycler==0.10.0
-Flask==0.12.1
-itsdangerous==0.24
-Jinja2==2.9.6
-MarkupSafe==1.0
-matplotlib==2.0.1
-neo4j-driver==1.2.1
-numpy==1.12.1
-packaging==16.8
-pkg-resources==0.0.0
-pyparsing==2.2.0
-python-dateutil==2.6.0
-pytz==2017.2
-requests==2.13.0
-scipy==0.19.0
-six==1.10.0
-Werkzeug==0.12.1
diff --git a/tests/benchmark_infra/groups/aggregation/config.json b/tests/macro_benchmark/groups/aggregation/config.json
similarity index 100%
rename from tests/benchmark_infra/groups/aggregation/config.json
rename to tests/macro_benchmark/groups/aggregation/config.json
diff --git a/tests/benchmark_infra/groups/aggregation/count.run.cypher b/tests/macro_benchmark/groups/aggregation/count.run.cypher
similarity index 100%
rename from tests/benchmark_infra/groups/aggregation/count.run.cypher
rename to tests/macro_benchmark/groups/aggregation/count.run.cypher
diff --git a/tests/benchmark_infra/groups/aggregation/min_max_avg.run.cypher b/tests/macro_benchmark/groups/aggregation/min_max_avg.run.cypher
similarity index 100%
rename from tests/benchmark_infra/groups/aggregation/min_max_avg.run.cypher
rename to tests/macro_benchmark/groups/aggregation/min_max_avg.run.cypher
diff --git a/tests/benchmark_infra/groups/aggregation/setup.py b/tests/macro_benchmark/groups/aggregation/setup.py
similarity index 100%
rename from tests/benchmark_infra/groups/aggregation/setup.py
rename to tests/macro_benchmark/groups/aggregation/setup.py
diff --git a/tests/benchmark_infra/groups/aggregation_parallel/config.json b/tests/macro_benchmark/groups/aggregation_parallel/config.json
similarity index 100%
rename from tests/benchmark_infra/groups/aggregation_parallel/config.json
rename to tests/macro_benchmark/groups/aggregation_parallel/config.json
diff --git a/tests/benchmark_infra/groups/aggregation_parallel/count.run.py b/tests/macro_benchmark/groups/aggregation_parallel/count.run.py
similarity index 100%
rename from tests/benchmark_infra/groups/aggregation_parallel/count.run.py
rename to tests/macro_benchmark/groups/aggregation_parallel/count.run.py
diff --git a/tests/benchmark_infra/groups/aggregation_parallel/min_max_avg.run.py b/tests/macro_benchmark/groups/aggregation_parallel/min_max_avg.run.py
similarity index 100%
rename from tests/benchmark_infra/groups/aggregation_parallel/min_max_avg.run.py
rename to tests/macro_benchmark/groups/aggregation_parallel/min_max_avg.run.py
diff --git a/tests/benchmark_infra/groups/aggregation_parallel/setup.py b/tests/macro_benchmark/groups/aggregation_parallel/setup.py
similarity index 100%
rename from tests/benchmark_infra/groups/aggregation_parallel/setup.py
rename to tests/macro_benchmark/groups/aggregation_parallel/setup.py
diff --git a/tests/benchmark_infra/groups/create/config.json b/tests/macro_benchmark/groups/create/config.json
similarity index 100%
rename from tests/benchmark_infra/groups/create/config.json
rename to tests/macro_benchmark/groups/create/config.json
diff --git a/tests/benchmark_infra/groups/create/edge.iterteardown.cypher b/tests/macro_benchmark/groups/create/edge.iterteardown.cypher
similarity index 100%
rename from tests/benchmark_infra/groups/create/edge.iterteardown.cypher
rename to tests/macro_benchmark/groups/create/edge.iterteardown.cypher
diff --git a/tests/benchmark_infra/groups/create/edge.run.py b/tests/macro_benchmark/groups/create/edge.run.py
similarity index 100%
rename from tests/benchmark_infra/groups/create/edge.run.py
rename to tests/macro_benchmark/groups/create/edge.run.py
diff --git a/tests/benchmark_infra/groups/create/edge.setup.cypher b/tests/macro_benchmark/groups/create/edge.setup.cypher
similarity index 100%
rename from tests/benchmark_infra/groups/create/edge.setup.cypher
rename to tests/macro_benchmark/groups/create/edge.setup.cypher
diff --git a/tests/benchmark_infra/groups/create/pattern.iterteardown.cypher b/tests/macro_benchmark/groups/create/pattern.iterteardown.cypher
similarity index 100%
rename from tests/benchmark_infra/groups/create/pattern.iterteardown.cypher
rename to tests/macro_benchmark/groups/create/pattern.iterteardown.cypher
diff --git a/tests/benchmark_infra/groups/create/pattern.run.py b/tests/macro_benchmark/groups/create/pattern.run.py
similarity index 100%
rename from tests/benchmark_infra/groups/create/pattern.run.py
rename to tests/macro_benchmark/groups/create/pattern.run.py
diff --git a/tests/benchmark_infra/groups/create/teardown.cypher b/tests/macro_benchmark/groups/create/teardown.cypher
similarity index 100%
rename from tests/benchmark_infra/groups/create/teardown.cypher
rename to tests/macro_benchmark/groups/create/teardown.cypher
diff --git a/tests/benchmark_infra/groups/create/vertex.iterteardown.cypher b/tests/macro_benchmark/groups/create/vertex.iterteardown.cypher
similarity index 100%
rename from tests/benchmark_infra/groups/create/vertex.iterteardown.cypher
rename to tests/macro_benchmark/groups/create/vertex.iterteardown.cypher
diff --git a/tests/benchmark_infra/groups/create/vertex.run.py b/tests/macro_benchmark/groups/create/vertex.run.py
similarity index 100%
rename from tests/benchmark_infra/groups/create/vertex.run.py
rename to tests/macro_benchmark/groups/create/vertex.run.py
diff --git a/tests/benchmark_infra/groups/create/vertex_big.iterteardown.cypher b/tests/macro_benchmark/groups/create/vertex_big.iterteardown.cypher
similarity index 100%
rename from tests/benchmark_infra/groups/create/vertex_big.iterteardown.cypher
rename to tests/macro_benchmark/groups/create/vertex_big.iterteardown.cypher
diff --git a/tests/benchmark_infra/groups/create/vertex_big.run.py b/tests/macro_benchmark/groups/create/vertex_big.run.py
similarity index 100%
rename from tests/benchmark_infra/groups/create/vertex_big.run.py
rename to tests/macro_benchmark/groups/create/vertex_big.run.py
diff --git a/tests/benchmark_infra/groups/create_parallel/config.json b/tests/macro_benchmark/groups/create_parallel/config.json
similarity index 100%
rename from tests/benchmark_infra/groups/create_parallel/config.json
rename to tests/macro_benchmark/groups/create_parallel/config.json
diff --git a/tests/benchmark_infra/groups/create_parallel/iterteardown.cypher b/tests/macro_benchmark/groups/create_parallel/iterteardown.cypher
similarity index 100%
rename from tests/benchmark_infra/groups/create_parallel/iterteardown.cypher
rename to tests/macro_benchmark/groups/create_parallel/iterteardown.cypher
diff --git a/tests/benchmark_infra/groups/create_parallel/vertex.run.py b/tests/macro_benchmark/groups/create_parallel/vertex.run.py
similarity index 100%
rename from tests/benchmark_infra/groups/create_parallel/vertex.run.py
rename to tests/macro_benchmark/groups/create_parallel/vertex.run.py
diff --git a/tests/benchmark_infra/groups/delete/config.json b/tests/macro_benchmark/groups/delete/config.json
similarity index 100%
rename from tests/benchmark_infra/groups/delete/config.json
rename to tests/macro_benchmark/groups/delete/config.json
diff --git a/tests/benchmark_infra/groups/delete/edge.itersetup.py b/tests/macro_benchmark/groups/delete/edge.itersetup.py
similarity index 100%
rename from tests/benchmark_infra/groups/delete/edge.itersetup.py
rename to tests/macro_benchmark/groups/delete/edge.itersetup.py
diff --git a/tests/benchmark_infra/groups/delete/edge.run.cypher b/tests/macro_benchmark/groups/delete/edge.run.cypher
similarity index 100%
rename from tests/benchmark_infra/groups/delete/edge.run.cypher
rename to tests/macro_benchmark/groups/delete/edge.run.cypher
diff --git a/tests/benchmark_infra/groups/delete/edge.setup.py b/tests/macro_benchmark/groups/delete/edge.setup.py
similarity index 100%
rename from tests/benchmark_infra/groups/delete/edge.setup.py
rename to tests/macro_benchmark/groups/delete/edge.setup.py
diff --git a/tests/benchmark_infra/groups/delete/setup.py b/tests/macro_benchmark/groups/delete/setup.py
similarity index 100%
rename from tests/benchmark_infra/groups/delete/setup.py
rename to tests/macro_benchmark/groups/delete/setup.py
diff --git a/tests/benchmark_infra/groups/delete/vertex.itersetup.py b/tests/macro_benchmark/groups/delete/vertex.itersetup.py
similarity index 100%
rename from tests/benchmark_infra/groups/delete/vertex.itersetup.py
rename to tests/macro_benchmark/groups/delete/vertex.itersetup.py
diff --git a/tests/benchmark_infra/groups/delete/vertex.run.cypher b/tests/macro_benchmark/groups/delete/vertex.run.cypher
similarity index 100%
rename from tests/benchmark_infra/groups/delete/vertex.run.cypher
rename to tests/macro_benchmark/groups/delete/vertex.run.cypher
diff --git a/tests/benchmark_infra/groups/delete/vertex.setup.cypher b/tests/macro_benchmark/groups/delete/vertex.setup.cypher
similarity index 100%
rename from tests/benchmark_infra/groups/delete/vertex.setup.cypher
rename to tests/macro_benchmark/groups/delete/vertex.setup.cypher
diff --git a/tests/benchmark_infra/groups/delete/vertex_detach.itersetup.py b/tests/macro_benchmark/groups/delete/vertex_detach.itersetup.py
similarity index 100%
rename from tests/benchmark_infra/groups/delete/vertex_detach.itersetup.py
rename to tests/macro_benchmark/groups/delete/vertex_detach.itersetup.py
diff --git a/tests/benchmark_infra/groups/delete/vertex_detach.run.cypher b/tests/macro_benchmark/groups/delete/vertex_detach.run.cypher
similarity index 100%
rename from tests/benchmark_infra/groups/delete/vertex_detach.run.cypher
rename to tests/macro_benchmark/groups/delete/vertex_detach.run.cypher
diff --git a/tests/benchmark_infra/groups/delete/vertex_detach.setup.cypher b/tests/macro_benchmark/groups/delete/vertex_detach.setup.cypher
similarity index 100%
rename from tests/benchmark_infra/groups/delete/vertex_detach.setup.cypher
rename to tests/macro_benchmark/groups/delete/vertex_detach.setup.cypher
diff --git a/tests/benchmark_infra/groups/expression/common.py b/tests/macro_benchmark/groups/expression/common.py
similarity index 100%
rename from tests/benchmark_infra/groups/expression/common.py
rename to tests/macro_benchmark/groups/expression/common.py
diff --git a/tests/benchmark_infra/groups/expression/config.json b/tests/macro_benchmark/groups/expression/config.json
similarity index 100%
rename from tests/benchmark_infra/groups/expression/config.json
rename to tests/macro_benchmark/groups/expression/config.json
diff --git a/tests/benchmark_infra/groups/expression/expression.run.py b/tests/macro_benchmark/groups/expression/expression.run.py
similarity index 100%
rename from tests/benchmark_infra/groups/expression/expression.run.py
rename to tests/macro_benchmark/groups/expression/expression.run.py
diff --git a/tests/benchmark_infra/groups/match/config.json b/tests/macro_benchmark/groups/match/config.json
similarity index 100%
rename from tests/benchmark_infra/groups/match/config.json
rename to tests/macro_benchmark/groups/match/config.json
diff --git a/tests/benchmark_infra/groups/match/pattern_cycle.run.py b/tests/macro_benchmark/groups/match/pattern_cycle.run.py
similarity index 100%
rename from tests/benchmark_infra/groups/match/pattern_cycle.run.py
rename to tests/macro_benchmark/groups/match/pattern_cycle.run.py
diff --git a/tests/benchmark_infra/groups/match/pattern_long.run.py b/tests/macro_benchmark/groups/match/pattern_long.run.py
similarity index 100%
rename from tests/benchmark_infra/groups/match/pattern_long.run.py
rename to tests/macro_benchmark/groups/match/pattern_long.run.py
diff --git a/tests/benchmark_infra/groups/match/pattern_short.run.py b/tests/macro_benchmark/groups/match/pattern_short.run.py
similarity index 100%
rename from tests/benchmark_infra/groups/match/pattern_short.run.py
rename to tests/macro_benchmark/groups/match/pattern_short.run.py
diff --git a/tests/benchmark_infra/groups/match/pattern_where.run.py b/tests/macro_benchmark/groups/match/pattern_where.run.py
similarity index 100%
rename from tests/benchmark_infra/groups/match/pattern_where.run.py
rename to tests/macro_benchmark/groups/match/pattern_where.run.py
diff --git a/tests/benchmark_infra/groups/match/setup.py b/tests/macro_benchmark/groups/match/setup.py
similarity index 100%
rename from tests/benchmark_infra/groups/match/setup.py
rename to tests/macro_benchmark/groups/match/setup.py
diff --git a/tests/benchmark_infra/groups/match/teardown.cypher b/tests/macro_benchmark/groups/match/teardown.cypher
similarity index 100%
rename from tests/benchmark_infra/groups/match/teardown.cypher
rename to tests/macro_benchmark/groups/match/teardown.cypher
diff --git a/tests/benchmark_infra/groups/match/vertex_on_label.run.py b/tests/macro_benchmark/groups/match/vertex_on_label.run.py
similarity index 100%
rename from tests/benchmark_infra/groups/match/vertex_on_label.run.py
rename to tests/macro_benchmark/groups/match/vertex_on_label.run.py
diff --git a/tests/benchmark_infra/groups/match/vertex_on_label_property.run.py b/tests/macro_benchmark/groups/match/vertex_on_label_property.run.py
similarity index 100%
rename from tests/benchmark_infra/groups/match/vertex_on_label_property.run.py
rename to tests/macro_benchmark/groups/match/vertex_on_label_property.run.py
diff --git a/tests/benchmark_infra/groups/match/vertex_on_property.run.py b/tests/macro_benchmark/groups/match/vertex_on_property.run.py
similarity index 100%
rename from tests/benchmark_infra/groups/match/vertex_on_property.run.py
rename to tests/macro_benchmark/groups/match/vertex_on_property.run.py
diff --git a/tests/benchmark_infra/groups/return/combo.run.py b/tests/macro_benchmark/groups/return/combo.run.py
similarity index 100%
rename from tests/benchmark_infra/groups/return/combo.run.py
rename to tests/macro_benchmark/groups/return/combo.run.py
diff --git a/tests/benchmark_infra/groups/return/config.json b/tests/macro_benchmark/groups/return/config.json
similarity index 100%
rename from tests/benchmark_infra/groups/return/config.json
rename to tests/macro_benchmark/groups/return/config.json
diff --git a/tests/benchmark_infra/groups/return/distinct.run.cypher b/tests/macro_benchmark/groups/return/distinct.run.cypher
similarity index 100%
rename from tests/benchmark_infra/groups/return/distinct.run.cypher
rename to tests/macro_benchmark/groups/return/distinct.run.cypher
diff --git a/tests/benchmark_infra/groups/return/limit.run.cypher b/tests/macro_benchmark/groups/return/limit.run.cypher
similarity index 100%
rename from tests/benchmark_infra/groups/return/limit.run.cypher
rename to tests/macro_benchmark/groups/return/limit.run.cypher
diff --git a/tests/benchmark_infra/groups/return/order_by.run.cypher b/tests/macro_benchmark/groups/return/order_by.run.cypher
similarity index 100%
rename from tests/benchmark_infra/groups/return/order_by.run.cypher
rename to tests/macro_benchmark/groups/return/order_by.run.cypher
diff --git a/tests/benchmark_infra/groups/return/setup.py b/tests/macro_benchmark/groups/return/setup.py
similarity index 100%
rename from tests/benchmark_infra/groups/return/setup.py
rename to tests/macro_benchmark/groups/return/setup.py
diff --git a/tests/benchmark_infra/groups/return/skip.run.py b/tests/macro_benchmark/groups/return/skip.run.py
similarity index 100%
rename from tests/benchmark_infra/groups/return/skip.run.py
rename to tests/macro_benchmark/groups/return/skip.run.py
diff --git a/tests/benchmark_infra/groups/update/remove_label.itersetup.cypher b/tests/macro_benchmark/groups/update/remove_label.itersetup.cypher
similarity index 100%
rename from tests/benchmark_infra/groups/update/remove_label.itersetup.cypher
rename to tests/macro_benchmark/groups/update/remove_label.itersetup.cypher
diff --git a/tests/benchmark_infra/groups/update/remove_label.run.cypher b/tests/macro_benchmark/groups/update/remove_label.run.cypher
similarity index 100%
rename from tests/benchmark_infra/groups/update/remove_label.run.cypher
rename to tests/macro_benchmark/groups/update/remove_label.run.cypher
diff --git a/tests/benchmark_infra/groups/update/remove_property.itersetup.cypher b/tests/macro_benchmark/groups/update/remove_property.itersetup.cypher
similarity index 100%
rename from tests/benchmark_infra/groups/update/remove_property.itersetup.cypher
rename to tests/macro_benchmark/groups/update/remove_property.itersetup.cypher
diff --git a/tests/benchmark_infra/groups/update/remove_property.run.cypher b/tests/macro_benchmark/groups/update/remove_property.run.cypher
similarity index 100%
rename from tests/benchmark_infra/groups/update/remove_property.run.cypher
rename to tests/macro_benchmark/groups/update/remove_property.run.cypher
diff --git a/tests/benchmark_infra/groups/update/set_label.iterteardown.cypher b/tests/macro_benchmark/groups/update/set_label.iterteardown.cypher
similarity index 100%
rename from tests/benchmark_infra/groups/update/set_label.iterteardown.cypher
rename to tests/macro_benchmark/groups/update/set_label.iterteardown.cypher
diff --git a/tests/benchmark_infra/groups/update/set_label.run.cypher b/tests/macro_benchmark/groups/update/set_label.run.cypher
similarity index 100%
rename from tests/benchmark_infra/groups/update/set_label.run.cypher
rename to tests/macro_benchmark/groups/update/set_label.run.cypher
diff --git a/tests/benchmark_infra/groups/update/set_property.iterteardown.cypher b/tests/macro_benchmark/groups/update/set_property.iterteardown.cypher
similarity index 100%
rename from tests/benchmark_infra/groups/update/set_property.iterteardown.cypher
rename to tests/macro_benchmark/groups/update/set_property.iterteardown.cypher
diff --git a/tests/benchmark_infra/groups/update/set_property.run.cypher b/tests/macro_benchmark/groups/update/set_property.run.cypher
similarity index 100%
rename from tests/benchmark_infra/groups/update/set_property.run.cypher
rename to tests/macro_benchmark/groups/update/set_property.run.cypher
diff --git a/tests/benchmark_infra/groups/update/setup.py b/tests/macro_benchmark/groups/update/setup.py
similarity index 100%
rename from tests/benchmark_infra/groups/update/setup.py
rename to tests/macro_benchmark/groups/update/setup.py
diff --git a/tests/benchmark_infra/harness/.gitignore b/tests/macro_benchmark/harness/.gitignore
similarity index 100%
rename from tests/benchmark_infra/harness/.gitignore
rename to tests/macro_benchmark/harness/.gitignore
diff --git a/tests/benchmark_infra/harness/bolt_client.py b/tests/macro_benchmark/harness/bolt_client.py
similarity index 100%
rename from tests/benchmark_infra/harness/bolt_client.py
rename to tests/macro_benchmark/harness/bolt_client.py
diff --git a/tests/benchmark_infra/harness/harness.py b/tests/macro_benchmark/harness/harness.py
similarity index 100%
rename from tests/benchmark_infra/harness/harness.py
rename to tests/macro_benchmark/harness/harness.py
diff --git a/tests/benchmark_infra/harness/jail_faker.py b/tests/macro_benchmark/harness/jail_faker.py
similarity index 100%
rename from tests/benchmark_infra/harness/jail_faker.py
rename to tests/macro_benchmark/harness/jail_faker.py
diff --git a/tests/benchmark_infra/harness/neo4j_config/neo4j.conf b/tests/macro_benchmark/harness/neo4j_config/neo4j.conf
similarity index 100%
rename from tests/benchmark_infra/harness/neo4j_config/neo4j.conf
rename to tests/macro_benchmark/harness/neo4j_config/neo4j.conf
diff --git a/tests/benchmark_infra/harness/neo4j_home/.gitignore b/tests/macro_benchmark/harness/neo4j_home/.gitignore
similarity index 100%
rename from tests/benchmark_infra/harness/neo4j_home/.gitignore
rename to tests/macro_benchmark/harness/neo4j_home/.gitignore
diff --git a/tests/benchmark_infra/harness/perf.py b/tests/macro_benchmark/harness/perf.py
similarity index 100%
rename from tests/benchmark_infra/harness/perf.py
rename to tests/macro_benchmark/harness/perf.py
diff --git a/tests/benchmark_infra/harness/results/.gitignore b/tests/macro_benchmark/harness/results/.gitignore
similarity index 100%
rename from tests/benchmark_infra/harness/results/.gitignore
rename to tests/macro_benchmark/harness/results/.gitignore
diff --git a/tests/benchmark_infra/init.sh b/tests/macro_benchmark/init
similarity index 63%
rename from tests/benchmark_infra/init.sh
rename to tests/macro_benchmark/init
index 52a967d94..1fa3a7f2e 100755
--- a/tests/benchmark_infra/init.sh
+++ b/tests/macro_benchmark/init
@@ -1,11 +1,8 @@
-#!/bin/bash
+#!/usr/bin/env bash
 
 if [ ! -d ve3 ]; then
     virtualenv -p python3 ve3 || exit 1
     source ve3/bin/activate
     pip install -r requirements.txt || exit 1
-else
-    source ve3/bin/activate
+    deactivate
 fi
-
-# TODO: apt-get install python3-tk
diff --git a/tests/macro_benchmark/requirements.txt b/tests/macro_benchmark/requirements.txt
new file mode 100644
index 000000000..02d33c987
--- /dev/null
+++ b/tests/macro_benchmark/requirements.txt
@@ -0,0 +1 @@
+neo4j-driver==1.2.1