[前][次][番号順一覧][スレッド一覧]

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/

[前][次][番号順一覧][スレッド一覧]