ruby-changes:36300
From: akr <ko1@a...>
Date: Tue, 11 Nov 2014 22:51:53 +0900 (JST)
Subject: [ruby-changes:36300] akr:r48381 (trunk): * test/resolv/test_dns.rb: Use assert_join_threads.
akr 2014-11-11 22:51:39 +0900 (Tue, 11 Nov 2014) New Revision: 48381 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=revision&revision=48381 Log: * test/resolv/test_dns.rb: Use assert_join_threads. Modified files: trunk/ChangeLog trunk/test/resolv/test_dns.rb Index: ChangeLog =================================================================== --- ChangeLog (revision 48380) +++ ChangeLog (revision 48381) @@ -1,3 +1,7 @@ https://github.com/ruby/ruby/blob/trunk/ChangeLog#L1 +Tue Nov 11 22:51:14 2014 Tanaka Akira <akr@f...> + + * test/resolv/test_dns.rb: Use assert_join_threads. + Tue Nov 11 22:33:08 2014 Tanaka Akira <akr@f...> * test/net/pop/test_pop.rb: Use assert_join_threads. Index: test/resolv/test_dns.rb =================================================================== --- test/resolv/test_dns.rb (revision 48380) +++ test/resolv/test_dns.rb (revision 48381) @@ -33,72 +33,74 @@ class TestResolvDNS < Test::Unit::TestCa https://github.com/ruby/ruby/blob/trunk/test/resolv/test_dns.rb#L33 with_udp('127.0.0.1', 0) {|u| _, server_port, _, server_address = u.addr begin - th = Thread.new { + client_thread = Thread.new { Resolv::DNS.open(:nameserver_port => [[server_address, server_port]]) {|dns| dns.getresources("foo.example.org", Resolv::DNS::Resource::IN::A) } } - msg, (_, client_port, _, client_address) = u.recvfrom(4096) - id, word2, qdcount, ancount, nscount, arcount = msg.unpack("nnnnnn") - qr = (word2 & 0x8000) >> 15 - opcode = (word2 & 0x7800) >> 11 - aa = (word2 & 0x0400) >> 10 - tc = (word2 & 0x0200) >> 9 - rd = (word2 & 0x0100) >> 8 - ra = (word2 & 0x0080) >> 7 - z = (word2 & 0x0070) >> 4 - rcode = word2 & 0x000f - rest = msg[12..-1] - assert_equal(0, qr) # 0:query 1:response - assert_equal(0, opcode) # 0:QUERY 1:IQUERY 2:STATUS - assert_equal(0, aa) # Authoritative Answer - assert_equal(0, tc) # TrunCation - assert_equal(1, rd) # Recursion Desired - assert_equal(0, ra) # Recursion Available - assert_equal(0, z) # Reserved for future use - assert_equal(0, rcode) # 0:No-error 1:Format-error 2:Server-failure 3:Name-Error 4:Not-Implemented 5:Refused - assert_equal(1, qdcount) # number of entries in the question section. - assert_equal(0, ancount) # number of entries in the answer section. - assert_equal(0, nscount) # number of entries in the authority records section. - assert_equal(0, arcount) # number of entries in the additional records section. - name = [3, "foo", 7, "example", 3, "org", 0].pack("Ca*Ca*Ca*C") - assert_operator(rest, :start_with?, name) - rest = rest[name.length..-1] - assert_equal(4, rest.length) - qtype, _ = rest.unpack("nn") - assert_equal(1, qtype) # A - assert_equal(1, qtype) # IN - id = id - qr = 1 - opcode = opcode - aa = 0 - tc = 0 - rd = rd - ra = 1 - z = 0 - rcode = 0 - qdcount = 0 - ancount = 1 - nscount = 0 - arcount = 0 - word2 = (qr << 15) | - (opcode << 11) | - (aa << 10) | - (tc << 9) | - (rd << 8) | - (ra << 7) | - (z << 4) | - rcode - msg = [id, word2, qdcount, ancount, nscount, arcount].pack("nnnnnn") - type = 1 - klass = 1 - ttl = 3600 - rdlength = 4 - rdata = [192,0,2,1].pack("CCCC") # 192.0.2.1 (TEST-NET address) RFC 3330 - rr = [name, type, klass, ttl, rdlength, rdata].pack("a*nnNna*") - msg << rr - u.send(msg, 0, client_address, client_port) - result = th.value + server_thread = Thread.new { + msg, (_, client_port, _, client_address) = u.recvfrom(4096) + id, word2, qdcount, ancount, nscount, arcount = msg.unpack("nnnnnn") + qr = (word2 & 0x8000) >> 15 + opcode = (word2 & 0x7800) >> 11 + aa = (word2 & 0x0400) >> 10 + tc = (word2 & 0x0200) >> 9 + rd = (word2 & 0x0100) >> 8 + ra = (word2 & 0x0080) >> 7 + z = (word2 & 0x0070) >> 4 + rcode = word2 & 0x000f + rest = msg[12..-1] + assert_equal(0, qr) # 0:query 1:response + assert_equal(0, opcode) # 0:QUERY 1:IQUERY 2:STATUS + assert_equal(0, aa) # Authoritative Answer + assert_equal(0, tc) # TrunCation + assert_equal(1, rd) # Recursion Desired + assert_equal(0, ra) # Recursion Available + assert_equal(0, z) # Reserved for future use + assert_equal(0, rcode) # 0:No-error 1:Format-error 2:Server-failure 3:Name-Error 4:Not-Implemented 5:Refused + assert_equal(1, qdcount) # number of entries in the question section. + assert_equal(0, ancount) # number of entries in the answer section. + assert_equal(0, nscount) # number of entries in the authority records section. + assert_equal(0, arcount) # number of entries in the additional records section. + name = [3, "foo", 7, "example", 3, "org", 0].pack("Ca*Ca*Ca*C") + assert_operator(rest, :start_with?, name) + rest = rest[name.length..-1] + assert_equal(4, rest.length) + qtype, _ = rest.unpack("nn") + assert_equal(1, qtype) # A + assert_equal(1, qtype) # IN + id = id + qr = 1 + opcode = opcode + aa = 0 + tc = 0 + rd = rd + ra = 1 + z = 0 + rcode = 0 + qdcount = 0 + ancount = 1 + nscount = 0 + arcount = 0 + word2 = (qr << 15) | + (opcode << 11) | + (aa << 10) | + (tc << 9) | + (rd << 8) | + (ra << 7) | + (z << 4) | + rcode + msg = [id, word2, qdcount, ancount, nscount, arcount].pack("nnnnnn") + type = 1 + klass = 1 + ttl = 3600 + rdlength = 4 + rdata = [192,0,2,1].pack("CCCC") # 192.0.2.1 (TEST-NET address) RFC 3330 + rr = [name, type, klass, ttl, rdlength, rdata].pack("a*nnNna*") + msg << rr + u.send(msg, 0, client_address, client_port) + } + result, _ = assert_join_threads([client_thread, server_thread]) assert_instance_of(Array, result) assert_equal(1, result.length) rr = result[0] @@ -106,8 +108,6 @@ class TestResolvDNS < Test::Unit::TestCa https://github.com/ruby/ruby/blob/trunk/test/resolv/test_dns.rb#L108 assert_instance_of(Resolv::IPv4, rr.address) assert_equal("192.0.2.1", rr.address.to_s) assert_equal(3600, rr.ttl) - ensure - th.join end } end -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/