0

我正在开发一种与其他服务对话的服务。为了测试这些交互,我有一个假的 http 服务器。我正在使用 node.js 并通过 http 请求进行测试。测试在进程外部运行,所以我不能(也不想)模拟请求/响应。

到目前为止,我有一个环境变量允许我在服务本身内切换主机。但是,我不能将虚假请求/响应基于主机名。

我还运行与真实外部服务交互的服务的开发版本。我可以在测试运行期间以编程方式更改 /etc/hosts,因为我可能不会在运行测试时“使用”开发服务,但我宁愿保持测试沙箱的纯度。

理想情况下,我希望 /etc/hosts 的一个版本仅适用于该进程。这将允许伪造的 http 服务器也收集请求的预期主机。

我也对实现测试主机名沙箱的不同方法持开放态度。

4

2 回答 2

1

这适用于很多实现,但对您来说可能不可行。你有一个 UNIX/OSX 标签,所以:

你必须把你的进程放在相当于 chroot 监狱的地方。chroot 将根更改为/其他位置,例如:/localroot.

然后,您可以在/localroot/etc/hosts. chroot 进程将其视为 /etc/hosts

有很多关于如何在网络上设置的信息。您创建的任何用户帐户都被“锁定”在那里。

我找不到基本的 OSX chroot 信息,这是更高级的,主要用于 sftp 用户。:

http://www.macresearch.org/restricted-sftp-mac-os-x-leopard

于 2012-12-28T00:29:25.820 回答
1

/etc/hostsgethostbyname()实际执行解析的系统调用使用。

没有简单的方法可以按照您想要的方式进行操作。

使用虚假名称/地址的本地 DNS 服务器怎么样?

于 2012-12-27T16:29:32.443 回答