如何让测试厨房多次运行相同的厨师食谱?

时间:2015-05-22 00:36:51

标签: chef test-kitchen

我有一个厨师食谱,我用它来部署一个应用程序。每次配方运行时,它都会创建一个新的"发布" (使用当前时间戳)目录并删除旧版"发布"目录只留下最近的5个"发布"目录。 (类似于Capistrano&keep_releases的工作方式)。

要测试该功能,我需要运行我的" deploy"配方6次并确认只有5"释放"目录。似乎我不能在run_list中多次使用相同的配方。

有什么想法吗?

谢谢!

3 个答案:

答案 0 :(得分:3)

您可以使用重复的套件名称将节点聚合两次(或更多次)。

e.g。在你的.kitchen.yml中运行两次“默认”套件:

$("#login-btn").on("click", function (evt) {
    $("#login-error-message").hide();
    $.ajax({
        method: "post",
        url: "auth.php",
        data: {
            "username": $("#username").val(),
                "password": $("#password").val()
        }
    }).done(function (data, statusText, xhr) {
        if (xhr.status === 200 || xhr.status === 204) {
            setTimeout(function () {
                location.href = "index.php";
            }, 5000);
        }
    });
    $("#login-error-message").show();
});

但是,您可能希望使用ChefSpec来测试它,而不必每次都聚合一个节点。

Tested with test-kitchen 1.4.0 + kitchen-vagrant 0.18.0

答案 1 :(得分:2)

现在,Test Kitchen中的预配器中有一个选项,允许您运行多个融合。

以下预配器配置将告诉Chef收敛3次:

 //I would like to try this below
foreach(var file in files)
{
string filename = file.Name;
bool does_it_exist = File.Exists(C:\\,filename);
Console.WriteLine(does_it_exist);
}

答案 2 :(得分:0)

如果您使用Kitchen Dokken来测试您的菜谱,则在节点融合后,只需简单地再次进行“厨房融合”即可。在聚合节点上再次运行Chef-client很像。