小编luc*_*ins的帖子

在测试套件上的HTTP不堪重负时,Elasticsearch不同步

我有一个带有Rspec测试套件的Rails应用程序,它具有一些功能/控制器测试,具体取决于ElasticSearch.

当我们测试系统周围的"搜索"功能(以及依赖于ES的其他功能)时,我们使用真正的ES,当我们运行单个spec文件时,它在开发环境中完美运行.

当套件在我们的CI服务器上运行时,它变得很奇怪,因为有时 ES不会保持同步足够快以使测试成功运行.

我已经搜索了一些在"同步模式"下运行ES的方法,或者等到ES准备好但到目前为止还没找到任何东西.我见过一些使用Ruby的变通方法,sleep但我觉得这是不可接受的.

我怎样才能保证ES同步性来运行我的测试?

你如何在测试套件上处理ES?

这是我的一个测试:

      context "given params page or per_page is set", :elasticsearch do

      let(:params) { {query: "Resultados", page: 1, per_page: 2} }

      before(:each) do
        3.times do |n|
          Factory(:company, account: user.account, name: "Resultados Digitais #{n}")
        end
        sync_companies_index # this is a helper method available to all specs
      end

      it "paginates the results properly" do
        get :index, params
        expect(assigns[:companies].length).to eq 2
      end

    end
Run Code Online (Sandbox Code Playgroud)

这是我的RSpec配置块和ES辅助方法:

RSpec.configure do |config|
  config.around :each do |example|
    if example.metadata[:elasticsearch]
      Lead.tire.index.delete …
Run Code Online (Sandbox Code Playgroud)

ruby rspec ruby-on-rails elasticsearch

12
推荐指数
1
解决办法
929
查看次数

标签 统计

elasticsearch ×1

rspec ×1

ruby ×1

ruby-on-rails ×1