searchindex_helper.rb 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. # Copyright (C) 2012-2022 Zammad Foundation, https://zammad-foundation.org/
  2. require 'rake'
  3. # if you make changes, then please also change this file 'spec/support/searchindex_backend.rb'
  4. # this is required as long as our test suite is made of RSpec and MiniTest
  5. module SearchindexHelper
  6. def self.included(base)
  7. base.teardown do
  8. next if ENV['ES_URL'].blank?
  9. Rake::Task['searchindex:drop'].execute
  10. end
  11. end
  12. =begin
  13. prepares elasticsearch
  14. @param required [Boolean] raises error if ES is not configured. Recommended to avoid mysterious errors in CI.
  15. @param rebuild [Boolean] rebuilds indexes and sleeps for 1 second after given yield block is executed
  16. @yield given block run after ES is setup, but before index rebuilding
  17. =end
  18. def configure_elasticsearch(required: false, rebuild: false)
  19. if ENV['ES_URL'].blank?
  20. return if !required
  21. raise "ERROR: Need ES_URL - hint ES_URL='http://127.0.0.1:9200'"
  22. end
  23. Setting.set('es_url', ENV['ES_URL'])
  24. # Setting.set('es_url', 'http://127.0.0.1:9200')
  25. # Setting.set('es_index', 'estest.local_zammad')
  26. # Setting.set('es_user', 'elasticsearch')
  27. # Setting.set('es_password', 'zammad')
  28. if ENV['ES_INDEX_RAND'].present?
  29. rand_id = ENV.fetch('CI_JOB_ID', "r#{SecureRandom.uuid}")
  30. test_method_name = method_name.gsub(%r{[^\w]}, '_')
  31. ENV['ES_INDEX'] = "es_index_#{test_method_name.downcase}_#{rand_id.downcase}"
  32. end
  33. if ENV['ES_INDEX'].blank?
  34. raise "ERROR: Need ES_INDEX - hint ES_INDEX='estest.local_zammad'"
  35. end
  36. Setting.set('es_index', ENV['ES_INDEX'])
  37. # set max attachment size in mb
  38. Setting.set('es_attachment_max_size_in_mb', 1)
  39. yield if block_given?
  40. return if !rebuild
  41. rebuild_searchindex
  42. end
  43. def rebuild_searchindex
  44. Rake::Task.clear
  45. Zammad::Application.load_tasks
  46. Rake::Task['searchindex:rebuild'].execute
  47. Rake::Task['searchindex:refresh'].execute
  48. end
  49. end