我正在使用 CloudFormation 模板创建Cognito 用户池和测试用户。我这样做是为了自动测试登录、用户管理代码和令牌代码。
但是,似乎没有办法将密码设置为某个已知值,以便测试代码可以继续登录,这将是测试其他所有内容的第一步。
相关问题,但答案是“检查您的电子邮件帐户”,这不适用于自动化测试: Cloud Formation AWS::Cognito::UserPoolUser 临时密码\
我可以使用 API 以管理方式设置密码(至少 CLI 可以),但我希望我的测试代码尽可能是黑盒。我想在 Cloud Formation 模板中指定所有先决条件,就像我为我正在测试的所有其他东西所做的那样。
这个AWS 论坛回答说“使用自定义资源”,但没有提供有关如何操作的帮助:
我正在使用Ansible及其模块docker_container在nodejs中启动磁带单元测试容器。这很好,因为我不必让npm弄乱我的主机,我唯一的dev box依赖项是python和docker。
我需要能够stdout看到测试已经运行。但是,Docker的--attach选项没有公开docker_container,我无法找到任何stdout从容器启动时打印输出的方法。
我可以回到bash脚本来启动docker容器,但我不想...
如何使用Ansible的docker_container模块显示容器的标准?
我正在为一个可以更新文档的博客实施弹性搜索。
我需要在 Elastic Search 中执行无中断重新索引,以避免竞争并保持一致性。(就一致性而言,我的意思是,如果应用程序在执行写入操作后执行查询,则即使在重新索引期间,查询也应该显示更改)。
我能找到的最好的建议是,您使用别名来自动切换应用程序正在使用的索引,并且应用程序在写入时同时写入旧索引(通过 )write_alias和新索引(通过特殊write_next_version别名)在重新索引操作期间,并从旧索引中读取(通过 a read_alias)。只要应用程序首先写入旧索引,然后写入新索引,重新索引和应用程序之间的并发写入中的任何竞争都可以通过文档版本号解决。重建索引完成后,只需原子地将应用程序的读写别名切换到新索引并删除write_next_version别名即可。
然而,仍然存在比赛和表现问题。
我的应用程序不知道正在发生重新索引,reindex并且涉及的别名切换是一个单独的长时间运行的过程。我可以使用HEAD命令来查找是否write_next_version存在特殊别名,并且仅在存在时才写入。然而,这是到 ES 服务器的额外往返。HEAD 命令和上述删除第二write_next_version个别名的重新索引过程之间仍然存在竞争。我可以每次都进行两次写入,然后默默地处理通常不存在的write_next_version别名的错误。如果我的文档很小,我会通过批量API 来完成此操作,但它们是博客条目,它们可能相当大。
那么我应该每次只写两次并在第二次写入时吞下错误吗?或者我应该使用HEADAPI 来确定应用程序是否需要执行第二次写入以保持一致性?或者有更好的方法来做到这一点吗?
本文显示了该策略的总体轮廓。这篇较旧的文章也展示了如何做到这一点,但他们不使用别名,这是不可接受的。Elastic Search github 上有一个相关问题,但他们没有解决需要完成两次写入才能保持一致性的问题。他们也不解决比赛或表现问题。(他们关闭了这个问题......)
我有一个rxjs观察者(真的是一个主题)永远地尾随文件,就像tail -f一样.例如,监控日志文件非常棒.
这种"永远"的行为对我的应用来说非常棒,但对于测试来说却很糟糕.目前我的应用程序工作,但我的测试永远挂起
我想强制观察者更改尽早完成,因为我的测试代码知道文件中应该有多少行.我该怎么做呢?
我尝试在我返回的Subject句柄上调用onCompleted但是在那时它基本上被强制转换为观察者并且你不能强制它关闭,错误是:
对象#没有方法'onCompleted'
这是源代码:
function ObserveTail(filename) {
source = new Rx.Subject();
if (fs.existsSync(filename) == false) {
console.error("file doesn't exist: " + filename);
}
var lineSep = /[\r]{0,1}\n/;
tail = new Tail(filename, lineSep, {}, true);
tail.on("line", function(line) {
source.onNext(line);
});
tail.on('close', function(data) {
console.log("tail closed");
source.onCompleted();
});
tail.on('error', function(error) {
console.error(error);
});
this.source = source;
}
Run Code Online (Sandbox Code Playgroud)
这里的测试代码无法弄清楚如何强制永远结束(磁带样式测试).注意"ILLEGAL"行:
test('tailing a file works correctly', function(tid) {
var lines = 8;
var i = 0;
var filename = 'tape/tail.json';
var handle …Run Code Online (Sandbox Code Playgroud)