gpt4 book ai didi

ruby - rspec 与不同的 DNS 服务器

转载 作者:行者123 更新时间:2023-11-28 20:42:12 24 4
gpt4 key购买 nike

我有一堆使用外部数据库的 rspec 测试(我知道,这不是一个好主意,但有很多原因,这是这种情况下的最佳解决方案)。我已经设置了一个带有测试环境的不同 vlan,以便在隔离环境中运行测试。现在我想定义所有 rspec 测试都使用不同的 DNS 服务器来解析主机名(以与开发环境一起工作)。有什么我可以使用的吗?

最佳答案

RubyDNS 可能适合您。这个例子几乎是从他们的 GH 页面上逐字记录的:

#!/usr/bin/env ruby
require 'rubydns'

INTERFACES = [
[:udp, "0.0.0.0", 5300],
[:tcp, "0.0.0.0", 5300]
]
Name = Resolv::DNS::Name
IN = Resolv::DNS::Resource::IN

# Use upstream DNS for name resolution.
UPSTREAM = RubyDNS::Resolver.new([[:udp, "8.8.8.8", 53], [:tcp, "8.8.8.8", 53]])

# start the RubyDNS server
RubyDNS::run_server(:listen => INTERFACES) do
match(/database\.testing\.com/, IN::A) do |transaction|
transaction.respond!("10.0.0.80")
end

# Default DNS handler
otherwise do |transaction|
transaction.passthrough!(UPSTREAM)
end
end

然后查询:

➜  ruby_dns_example  dig @localhost -p 5300 database.testing.com

; <<>> DiG 9.8.3-P1 <<>> @localhost -p 5300 database.testing.com
; (3 servers found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 34286
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
;; WARNING: recursion requested but not available

;; QUESTION SECTION:
;database.testing.com. IN A

;; ANSWER SECTION:
database.testing.com. 86400 IN A 10.0.0.80

;; Query time: 2 msec
;; SERVER: 127.0.0.1#5300(127.0.0.1)
;; WHEN: Sat Jan 31 13:14:14 2015
;; MSG SIZE rcvd: 54

这里有很多例子:

https://github.com/ioquatix/rubydns/tree/master/examples

关于ruby - rspec 与不同的 DNS 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28216369/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com