特定于进程的/ etc / hosts

时间:2012-12-27 16:21:45

标签: macos unix networking testing hosts

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

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

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

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

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

2 个答案:

答案 0 :(得分:1)

/etc/hostsgethostbyname()使用,这是一个实际执行解析的系统调用。

没有简单的方法可以按照你想要的方式去做。

假名/地址的本地DNS服务器怎么样?

答案 1 :(得分:0)

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

你必须把你的过程放在chroot监狱里。 chroot将根/更改为其他位置,例如:/localroot

然后,您可以在/localroot/etc/hosts下创建您的主机版本。它被chrooted过程视为/ etc / hosts

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

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

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