ruby - rspec 与不同的 DNS 服务器

标签 ruby testing rspec infrastructure

我有一堆使用外部数据库的 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/

相关文章:

ruby-on-rails - 为什么使用 OpenSSL::SSL::SSLError Stripe 事务会得到 "bad ecpoint"?

spring - @Qualifier 和 @Resource 在 Spring 测试框架下运行测试用例时不起作用

iphone - 在 iCloud 同步设备上测试 iOS Ad-hoc IPA

ruby-on-rails - Rspec 测试在命名空间中失败

jquery - 如何使用 Capybara 模拟点击 jQuery-UI 模式对话框按钮?

Ruby - 混合命名参数和位置参数,为什么顺序很重要?

ruby - 如何在 Ruby 中使用 Net::SSH 复制文件?

ruby-on-rails - (Ruby,Rails) 基于角色的身份验证和用户管理...?

java - 测试图表渲染

ruby-on-rails - 如何在 RSpec 中测试更新用户密码