在 rspec 测试用例中启动弹性搜索集群时权限被拒绝

Posted

技术标签:

【中文标题】在 rspec 测试用例中启动弹性搜索集群时权限被拒绝【英文标题】:Permission denied when starting elasticserach cluster in rspec test cases 【发布时间】:2021-03-29 07:37:58 【问题描述】:

我在运行于 Ruby on Rails 6 上的 API 应用程序中使用了 elasticsearch-ruby gem。在开发环境中一切都运行良好,但为了进行测试,我想使用 elasticsearch-extensions gem 创建测试集群。运行 rspec 并尝试启动服务器时出现以下错误。我使用的是 Ubuntu 18.04。

Starting 2 Elasticsearch nodes../usr/share/elasticsearch/bin/elasticsearch-env: line 81: /etc/default/elasticsearch: Permission denied
/usr/share/elasticsearch/bin/elasticsearch-env: line 81: /etc/default/elasticsearch: Permission denied

【问题讨论】:

【参考方案1】:

什么 Elasticsearch 版本? Elasticsearch 是如何安装的?ls -l /etc/default/elasticsearch的输出?

如果所有权设置错误,这应该可以解决您的问题:

sudo chown -R elasticsearch:elasticsearch /etc/default/elasticsearch

每https://discuss.elastic.co/t/permission-denied-starting-elasticsearch-7-0/179336

【讨论】:

上述命令的输出如下。我可以正常启动服务器,但是当我运行 rspec 并尝试在新端口 4250 上运行新集群时,它会给出上述错误。 -rw-rw---- 1 elasticsearch elasticsearch 1673 Oct 16 16:13 /etc/default/elasticsearch 您可以尝试将DEBUG=true 导出到您的环境,然后在此处重新运行并发布输出吗?它应该打印更多信息。【参考方案2】:

像这样设置环境变量TEST_CLUSTER_COMMAND

TEST_CLUSTER_COMMAND=/usr/share/elasticsearch/bin/elasticsearch

(假设这是您的情况下的路径)

在我的情况下,这是因为我将 TEST_CLUSTER_COMMAND 配置为 /usr/share/elasticsearch,缺少 /bin/elasticsearch

【讨论】:

以上是关于在 rspec 测试用例中启动弹性搜索集群时权限被拒绝的主要内容,如果未能解决你的问题,请参考以下文章

在编写rspec测试用例时如何覆盖ruby方法的局部变量?

RSpec2 错误代码测试

如何使用rspec编写测试用例来发送通知消息

无法在 rspec 中执行任何测试用例

Swift 包资源颜色在 CI 测试用例中返回为零。但是在本地测试用例中返回正常

测试用例中的细节