[Groonga-commit] groonga/fluent-plugin-droonga [master] test: receive response by fluentd protocol

Back to archive index

Kouhei Sutou null+****@clear*****
Thu Apr 4 16:16:03 JST 2013


Kouhei Sutou	2013-04-04 16:16:03 +0900 (Thu, 04 Apr 2013)

  New Revision: 81bf7a2ea5bee62a787a12e03893c1ac798e50b7
  https://github.com/groonga/fluent-plugin-droonga/commit/81bf7a2ea5bee62a787a12e03893c1ac798e50b7

  Message:
    test: receive response by fluentd protocol

  Modified files:
    test/test_worker.rb

  Modified: test/test_worker.rb (+33 -2)
===================================================================
--- test/test_worker.rb    2013-04-04 15:46:59 +0900 (6246336)
+++ test/test_worker.rb    2013-04-04 16:16:03 +0900 (36a079b)
@@ -22,10 +22,12 @@ class WorkerTest < Test::Unit::TestCase
     setup_database
     setup_handlers
     setup_worker
+    setup_output_receiver
   end
 
   def teardown
     teardown_worker
+    teardown_output_receiver
   end
 
   private
@@ -50,11 +52,24 @@ class WorkerTest < Test::Unit::TestCase
     @worker = nil
   end
 
+  def setup_output_receiver
+    @output_receiver_host = "127.0.0.1"
+    @output_receiver_port = 2929
+    @output_receiver = TCPServer.new(@output_receiver_host,
+                                     @output_receiver_port)
+  end
+
+  def teardown_output_receiver
+    @output_receiver.close
+    @output_receiver = nil
+  end
+
   private
   class SearchTest < self
     def test_minimum
       request = {
         "type" => "search",
+        "replyTo" => reply_to,
         "body" => {
           "queries" => {
             "sections" => {
@@ -112,7 +127,8 @@ class WorkerTest < Test::Unit::TestCase
           ],
         },
       }
-      actual =****@worke*****_message(request)
+      @worker.process_message(request)
+      actual = receive_response
       assert_equal(expected, normalize_result_set(actual))
     end
 
@@ -125,15 +141,30 @@ class WorkerTest < Test::Unit::TestCase
       0.01
     end
 
+    def reply_to
+      "#{@output_receiver_host}:#{@output_receiver_port}/droonga.message"
+    end
+
     def normalize_result_set(result_set)
       normalized_result_set = copy_deeply(result_set)
-      normalized_result_set.each do |name, result|
+      normalized_result_set["body"].each do |name, result|
         result["startTime"] = start_time if result["startTime"]
         result["elapsedTime"] = elapsed_time if result["elapsedTime"]
       end
       normalized_result_set
     end
 
+    ENOUGH_RESPONSE_DATA_SIZE = 4096 * 4
+    def receive_response
+      readables, = IO.select([@output_receiver], [], [], 0)
+      assert_not_empty(readables, "not replied")
+
+      response_socket = @output_receiver.accept
+      response_data = response_socket.read_nonblock(ENOUGH_RESPONSE_DATA_SIZE)
+      tag, time, response = MessagePack.unpack(response_data)
+      response
+    end
+
     def copy_deeply(object)
       Marshal.load(Marshal.dump(object))
     end
-------------- next part --------------
HTML����������������������������...
Download 



More information about the Groonga-commit mailing list
Back to archive index