问题标签 [serverspec]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
941 浏览

ruby - 针对 Docker 容器的 Rspec 测试失败

免责声明:我是 ruby​​、rspec 等的新手。我正在尝试为我的 docker 容器找到一个测试框架

我有一个运行 aws cli 的 docker 容器。我已经手动测试了它并且它可以工作,作为我测试的一部分,我想获取 AWS 版本并检查它。

我创建了这个测试

当我运行它时,我得到它显示预期为空白,看起来它没有运行并返回任何东西

我的所有其他测试都正确地针对容器运行。我在下面包含了我的 dockerfile 和 test_spec

Dockerfile:

test_spec.rb:

0 投票
1 回答
111 浏览

chef-infra - Chef Serverspec should not listen

From this link I could see http://serverspec.org/resource_types.html#port

I wanted to test the negative of it. Say I disabled a port and I don't want anything listening to that port.

What should be the correct test case?

Just starting out with kitchen serverspec test

0 投票
0 回答
112 浏览

ruby - 从 RSpec 脚本中删除 Docker 映像

TL;DR:我无法从我的 RSpec 脚本中删除我的 Docker 映像,因为 RSpec 仍然有一个依赖容器


我正在使用 RSpec 来测试我的 Dockerfile。即测试 Dockerfile 生成的镜像是否正确。我的测试脚本通过从 Dockerfile 构建一个映像来完成此操作,然后让 RSpec 测试容器(基于该映像)是否具有正确的内容。

执行流程如下:

  1. 我的 RSpec 脚本构建 Docker 映像(在其before(:all)块中)
  2. Serverspec 创建一个 Docker 容器(基于 Docker 镜像)
  3. RSpec / Serverspec 在 Docker 容器内执行测试
  4. RSpec / Serverspec 调用我的 RSpec 脚本after(:all)
  5. RSpec / Serverspec 删除 Docker 容器

我试图从after(:all)块(或after(:context)块,但有同样的问题)内部删除图像,因为这是 RSpec 提供给我的最后一个钩子。只有我不能,因为 Docker 容器还没有被删除。

强制删除不是解决方案,因为 Docker 会保留一个未命名的、未标记的映像版本。

有没有(惯用的)方法可以做到这一点?


示例 RSpec 脚本:


(我并不完全清楚 RSpec 的职责在哪里结束而 Serverspec 的开始;因此上面的RSpec / Serverspec 。)

0 投票
1 回答
137 浏览

rspec - 如何让 rspec 向我显示完整的故障跟踪

当我使用厨房验证运行以下失败测试时

我得到以下失败跟踪:

如何让 rspec 向我显示我的文件 example.txt 的全部内容,而不仅仅是文件的第一行和最后一行以“...”分隔,就像它目前所做的那样?

0 投票
2 回答
233 浏览

nginx - 使用 serverspec 测试重定向

我希望在 serverspec 中为 nginx 重写调用创建一个测试,如下所示(它将对 ^/folder/file.json URL 的请求重定向到 @redirect_url 变量):

对于我正在更新的厨师食谱。不幸的是,从我在互联网上找到的信息来看,它要么强调了我对 nginx 和 serverspec 术语完全缺乏理解,要么就是你无法做到这一点。有没有人可以帮忙?

0 投票
1 回答
67 浏览

chef-infra - serverspec 在一个且只有一个文件上一直失败

我有一本设置 Splunk Forwarder 的食谱。我为配置文件创建了许多集成 - serverspec 测试。特别是一个,/opt/splunkforwarder/etc/apps/search/local/inputs.conf不断失败其他文件正在通过的所有测试。我的代码如下所示:

此规范文件中的每个文件和目录都通过,除了/opt/splunkforwarder/etc/apps/search/local/inputs.conf. 我正在使用 Docker 实例和测试厨房,所以当我登录时,我发现:

  1. 文件存在
  2. 该文件归“nobody”所有
  3. 该文件有600个权限

与其他几个文件完全一样。此外,我可以从我的 Chef 融合的标准中看到,创建的文件具有正确的权限和所有权以及内容。

我已经检查过其中一个父目录是否没有正确拥有或具有与传递的其他文件不同的权限,但事实并非如此。

我不知道为什么这没有通过。

0 投票
2 回答
183 浏览

ruby - Timeout.timeout(0) 在厨师服务器规范(Ruby)中是什么意思

我正在尝试为某些服务编写服务器规范代码。我想添加超时,以便如果在给定时间内,命令没有响应,则测试用例应该失败。

尝试时timeout(0),测试通过了。这是否意味着没有超时?

代码:

一般timeout(0)timeout(-1)会表示没有超时。是否也与 serverspec 相同。请帮忙。

0 投票
1 回答
256 浏览

rspec - 无法在 GCP 打包程序实例上运行 serverspec 测试

我正在努力从本地机器上对 GCP 打包程序实例运行 serverspec 测试。我创建了一个打包器 json 配置文件,如下所示在 GCP 上创建一个图像:

}

我正在执行rake spec TARGET_HOST=(ip of packer instance)从本地机器运行 serverspec 测试,并且 spec_helper.rb 配置了 ssh 登录,如下所示:

并且 Rakefile 配置为从特定文件夹运行测试。

运行打包程序构建命令后packer build -var-file=variables.json sftp.json| tee build.log

它失败了

打包程序构建日志

由于此错误,我无法在远程打包程序实例上使用 ssh 从本地计算机运行 serverspec 测试。

任何答案将不胜感激。非常感谢。

0 投票
1 回答
1051 浏览

integration-testing - Use of InSpec with Puppet

I had been using ServerSpec for my integration testing with Chef.

Since ServerSpec is "deprecated" and InSpec is supported by Chef, I've change to use only InSpec, which is also supported in Puppet.

However I'm not 100% sure is InSpec is the best tool for integration testing with Puppet. Is there a better or more recommended solution?

How can I use inspec with Puppet?

0 投票
1 回答
196 浏览

ruby - 使用 Serverspec 进行 Docker 映像构建测试检查空 gem 缓存失败

我目前在通过 Serverspec 测试 Docker 映像构建时遇到问题。简而言之,我想做的是确保在图像构建期间 Ruby gems 构建缓存被明确清除,例如通过rm -rf /usr/lib/ruby/gems/*/cache/*.gem在 Dockerfile 中发出。

我正在使用的 Dockerfile 骨架如下所示:

在添加 gem 缓存删除命令之前,我实现了以下 Serverspec 测试,以便能够从失败的测试开始:

假设上面的 Dockerfile,测试运行绿色:

但是,情况并非如此,因为 gem 缓存尚未被清除,因此不是空的,即我希望相应的断言在测试执行期间失败。

这可以通过从新构建的映像启动容器并检查 gems 缓存目录来轻松验证:

反过来测试并期望一个非空目录,执行失败并显示错误消息:

很明显,该Dir.glob()命令不会返回 gems 缓存目录中正确数量的文件。

有趣的是,Dir.glob()在容器内手动运行命令会返回预期的结果:

首先,这让我认为测试没有在容器内正确执行,而是在主机上执行,但进一步的实验无法证实这一点。

你有什么想法吗?这可能是 Serverspec/Rspec 问题吗?

谢谢!

编辑

首先,这让我认为测试没有在容器内正确执行,而是在主机上执行,但进一步的实验无法证实这一点。

我终于发现这个假设是错误的。实际上,Dir.glob()无论出于何种原因,调用都是在容器外部执行的。