如何测试依赖于标签的测试厨房中的烹饪书?

时间:2016-08-09 15:55:56

标签: chef chef-recipe test-kitchen

我有一本取决于标签的食谱。它搜索具有给定标记的节点,并使用search(:node, 'tag:MyTag')获取其名称和IP。我怎么会在测试厨房里嘲笑这个?

我可以使用模拟节点对象吗?它不必与我想测试search()成功提取正确信息的其他节点进行通信。

2 个答案:

答案 0 :(得分:4)

使用serverspec时,chef-zero将使用目录test/integration/作为默认仓库位置。您可以在此处放置一些节点文件来模拟连接到同一主厨服务器的其他节点。

├── Berksfile
├── chefignore
├── metadata.rb
├── README.md
├── recipes
│   └── default.rb
└── test
    └── integration
        ├── default
        │   └── serverspec
        │       └── default_spec.rb
        ├── helpers
        │   └── serverspec
        │       └── spec_helper.rb
        └── nodes
            ├── demo1.json
            └── demo2.json

demo1.json

{
  "name": "demo1",
  "normal": {
    "tags": [
      "DEMO=1"
    ]
  }
}

demo2.json

{
  "name": "demo2",
  "normal": {
    "tags": [
      "DEMO=1"
    ]
  }
}

更新

我有一本食谱,使用这种技术测试詹金斯大师和奴隶

答案 1 :(得分:0)

或者,您可以编辑节点的test kitchen.yml文件的suite部分。属性部分管理您的普通属性,即标签的存储位置:

- name: sand01
provisioner:
  name: chef_zero
attributes:
  tags:
    - MyTag