Allow Zoekt search separately from Advanced search
What does this MR do and why?
Related to #432997 (closed)
This MR separates Exact Code (aka Zoekt) search functionality from Advanced search. There are two spots where the scope
is limited for a user:
- code in
navigation.rb
that directs the frontend on which tabs to show the user - in
[group/global]_service.rb
that controls which scopes are allowed on the backend
This MR changes the functionality so either Advanced search or Zoekt can be enabled to show the code tab and allows the blobs
scope.
Note:
- Advanced search supports global (if FF is enabled), group, and project search
- Exact code search supports group and project search
MR acceptance checklist
Please evaluate this MR against the MR acceptance checklist. It helps you analyze changes to reduce risks in quality, performance, reliability, security, and maintainability.
Screenshots or screen recordings
N/A
How to set up and validate locally
Presetup
- setup gdk for zoekt and enable it for a group
- setup gdk for advanced search and index the entire instance
Zoekt enabled only
- disable advanced search
bundle exec rake gitlab:elastic:disable_search_with_elasticsearch
- perform a global code search: http://gdk.test:3000/search?scope=blobs&search=test
- This should land on
Projects
search results, global code search is disabled
- This should land on
- perform a group level code search against Zoekt group: http://gdk.test:3000/search?search=test&group_id=107&scope=blobs
- This should be serviced by Zoekt (confirm in performance bar or by message
Exact code search (powered by Zoekt) is enabled
)
- This should be serviced by Zoekt (confirm in performance bar or by message
- navigate to the project results (group level search)
- the code tab should still be visible
- perform a project level code search against Zoekt project: http://gdk.test:3000/search?search=test&scope=blobs&project_id=39
- This should be serviced by Zoekt (confirm in performance bar or by message
Exact code search (powered by Zoekt) is enabled
)
- This should be serviced by Zoekt (confirm in performance bar or by message
- disable zoekt in the user's preferences
- perform a group level code search against Zoekt group: http://gdk.test:3000/search?search=test&group_id=107&scope=blobs
- This should land on
Projects
search results, code tab is not visible
- This should land on
- perform a project level code search against Zoekt project: http://gdk.test:3000/search?search=test&scope=blobs&project_id=39
- This should be serviced by Postgres (confirm in performance bar, no zkt or es calls)
- repeat group and project searches for an anonymous user
- Both should be be serviced by Zoekt (confirm in performance bar or by message
Exact code search (powered by Zoekt) is enabled
)
- Both should be be serviced by Zoekt (confirm in performance bar or by message
Both Zoekt and Advanced search enabled
Testing advanced search enabled group
- enable advanced search
bundle exec rake gitlab:elastic:enable_search_with_elasticsearch
- perform a global code search: http://gdk.test:3000/search?scope=blobs&search=test
- This should be serviced by Advanced search (confirm in performance bar or by message
Advanced search is enabled
)
- This should be serviced by Advanced search (confirm in performance bar or by message
- perform a group level code search against a non-Zoekt group
- This should be serviced by Advanced search (confirm in performance bar or by message
Advanced search is enabled
)
- This should be serviced by Advanced search (confirm in performance bar or by message
- perform a project level code search against a non-Zoekt project
- This should be serviced by Advanced search (confirm in performance bar or by message
Advanced search is enabled
)
- This should be serviced by Advanced search (confirm in performance bar or by message
- repeat group and project searches for an anonymous user
- Both should be serviced by Advanced search (confirm in performance bar or by message
Advanced search is enabled
)
- Both should be serviced by Advanced search (confirm in performance bar or by message
Testing Zoekt enabled group
- perform a group level code search against Zoekt group: http://gdk.test:3000/search?search=test&group_id=107&scope=blobs
- This should be serviced by Zoekt (confirm in performance bar or by message
Exact code search (powered by Zoekt) is enabled
)
- This should be serviced by Zoekt (confirm in performance bar or by message
- navigate to project results
- the code tab should still be visible
- perform a project level code search against Zoekt project: http://gdk.test:3000/search?search=test&scope=blobs&project_id=39
- This should be serviced by Zoekt (confirm in performance bar or by message
Exact code search (powered by Zoekt) is enabled
)
- This should be serviced by Zoekt (confirm in performance bar or by message
- disable zoekt in the user's preferences
- perform a group level code search against Zoekt group: http://gdk.test:3000/search?search=test&group_id=107&scope=blobs
- This should be serviced by Advanced search (confirm in performance bar or by message
Advanced search is enabled
)
- This should be serviced by Advanced search (confirm in performance bar or by message
- perform a project level code search against Zoekt project: http://gdk.test:3000/search?search=test&scope=blobs&project_id=39
- This should be serviced by Advanced search (confirm in performance bar or by message
Advanced search is enabled
)
- This should be serviced by Advanced search (confirm in performance bar or by message
- repeat group and project searches for an anonymous user
- This should be serviced by Zoekt (confirm in performance bar or by message
Exact code search (powered by Zoekt) is enabled
)
- This should be serviced by Zoekt (confirm in performance bar or by message
Only Advanced search enabled
- disable zoekt code search
::Feature.disable(:search_code_with_zoekt)
- perform a global code search: http://gdk.test:3000/search?scope=blobs&search=test
- This should be serviced by Advanced search (confirm in performance bar or by message
Advanced search is enabled
)
- This should be serviced by Advanced search (confirm in performance bar or by message
- perform a group level code search against Zoekt group: http://gdk.test:3000/search?search=test&group_id=107&scope=blobs
- This should be serviced by Advanced search (confirm in performance bar or by message
Advanced search is enabled
)
- This should be serviced by Advanced search (confirm in performance bar or by message
- navigate to project results
- the code tab should still be visible
- perform a project level code search against Zoekt project: http://gdk.test:3000/search?search=test&scope=blobs&project_id=39
- This should be serviced by Advanced search (confirm in performance bar or by message
Advanced search is enabled
)
- This should be serviced by Advanced search (confirm in performance bar or by message
- repeat global, group and project steps for an anonymous user
- Both should be serviced by Advanced search (confirm in performance bar or by message
Advanced search is enabled
)
- Both should be serviced by Advanced search (confirm in performance bar or by message
Edited by Terri Chu