diff --git a/modules/menu_bench/config/install/system.menu.menu_bench.yml b/modules/menu_bench/config/install/system.menu.menu_bench.yml new file mode 100644 index 0000000..02450df --- /dev/null +++ b/modules/menu_bench/config/install/system.menu.menu_bench.yml @@ -0,0 +1,5 @@ +id: menu_bench +label: 'Menu for benchmarking' +description: '' +langcode: en +locked: false diff --git a/modules/menu_bench/menu_bench.info.yml b/modules/menu_bench/menu_bench.info.yml new file mode 100644 index 0000000..af109d0 --- /dev/null +++ b/modules/menu_bench/menu_bench.info.yml @@ -0,0 +1,5 @@ +name: 'Menu Bench' +type: module +description: 'Renders a menu with a lot of custom links. Used for benchmarking.' +package: Testing +core: 8.x diff --git a/modules/menu_bench/menu_bench.install b/modules/menu_bench/menu_bench.install new file mode 100644 index 0000000..4a1447f --- /dev/null +++ b/modules/menu_bench/menu_bench.install @@ -0,0 +1,24 @@ +hasDefinition('menu_link')) { + for ($i=0; $i<100; $i++) { + entity_create('menu_link', array( + 'link_title' => 'Link ' . ($i+1), + 'menu_name' => 'menu_bench', + 'route_name' => 'menu_bench.decoy', + ))->save(); + } + } + else { + for ($i=0; $i<100; $i++) { + entity_create('menu_link_content', array( + 'title' => 'Link ' . ($i+1), + 'bundle' => 'menu_link_content', + 'menu_name' => 'menu_bench', + 'route_name' => 'menu_bench.decoy', + ))->save(); + } + } +} diff --git a/modules/menu_bench/menu_bench.routing.yml b/modules/menu_bench/menu_bench.routing.yml new file mode 100644 index 0000000..fde2c13 --- /dev/null +++ b/modules/menu_bench/menu_bench.routing.yml @@ -0,0 +1,15 @@ +menu_bench.display: + path: '/menu-bench' + defaults: + _content: '\Drupal\menu_bench\MenuBenchController::display' + _title: 'Menu Bench' + requirements: + _access: 'TRUE' + +menu_bench.decoy: + path: '/menu-bench/decoy' + defaults: + _content: '\Drupal\menu_bench\MenuBenchController::decoy' + _title: 'Menu Bench' + requirements: + _access: 'TRUE' diff --git a/modules/menu_bench/src/MenuBenchController.php b/modules/menu_bench/src/MenuBenchController.php new file mode 100644 index 0000000..75595f6 --- /dev/null +++ b/modules/menu_bench/src/MenuBenchController.php @@ -0,0 +1,26 @@ +renderMenu($menu_name); + } + else { + $tree_service = \Drupal::service('menu.link_tree'); + $parameters = $tree_service->getCurrentRouteMenuTreeParameters($menu_name); + $tree = $tree_service->load($menu_name, $parameters); + $manipulators = array( + array('callable' => 'menu.default_tree_manipulators:checkAccess'), + array('callable' => 'menu.default_tree_manipulators:generateIndexAndSort'), + ); + $tree = $tree_service->transform($tree, $manipulators); + return $tree_service->build($tree); + } + } + function decoy() { + return 'Nothing to see here.'; + } +}