Kouhei Sutou
null+****@clear*****
Thu Jan 31 14:23:00 JST 2013
Kouhei Sutou 2013-01-31 14:23:00 +0900 (Thu, 31 Jan 2013) New Revision: 8ee0ff9d47273ee86a998068d4c7bd337c8bdb8d https://github.com/groonga/fluent-plugin-kotoumi/commit/8ee0ff9d47273ee86a998068d4c7bd337c8bdb8d Log: Implement count Modified files: lib/kotoumi/worker.rb test/test_worker.rb Modified: lib/kotoumi/worker.rb (+24 -17) =================================================================== --- lib/kotoumi/worker.rb 2013-01-31 14:07:48 +0900 (d071cbe) +++ lib/kotoumi/worker.rb 2013-01-31 14:23:00 +0900 (6c67f0d) @@ -20,30 +20,37 @@ require 'groonga' module Kotoumi class Worker def initialize(database, queue_name) - @database = Groonga::Database.open(database) - @ctx = Groonga::Context.default + @context = Groonga::Context.new + @database =****@conte*****_database(database) @queue_name = queue_name end def shutdown @database.close - @ctx.close - @database = @ctx = nil - Groonga::Context.default = nil + @context.close + @database = @context = nil end - def process_message(record) - return { - "main-search-result" => { - startTime: "2001-08-02T10:45:23.5+09:00", - elapsedTime: 123.456, - count: 123, - attributes: [ - { name: "name", type: "ShortText", vector: false }, - { name: "age", type: "UInt32", vector: false } - ], - records: [ ["a", 10], ["b", 20] ] - } + def process_message(envelope) + case envelope["type"] + when "search" + search(envelope["body"]) + end + end + + private + def search(request) + result = {} + request["queries"].each do |name, query| + result[name] = search_query(query) + end + result + end + + def search_query(query) + source = @context[query["source"]] + { + "count" => source.size, } end end Modified: test/test_worker.rb (+13 -18) =================================================================== --- test/test_worker.rb 2013-01-31 14:07:48 +0900 (c3d6335) +++ test/test_worker.rb 2013-01-31 14:23:00 +0900 (a843f5a) @@ -44,28 +44,23 @@ class WorkerTest < Test::Unit::TestCase private class SearchTest < self def test_minimum - expected = { - "main-search-result" => { - :attributes => [ - { - :name => "name", - :type => "ShortText", - :vector => false - }, - { - :name => "age", - :type => "UInt32", - :vector => false + request = { + "type" => "search", + "body" => { + "queries" => { + "sections" => { + "source" => "Sections", }, - ], - :count => 123, - :elapsedTime => 123.456, - :records => [["a", 10], ["b", 20]], - :startTime => "2001-08-02T10:45:23.5+09:00", + } + }, + } + expected = { + "sections" => { + "count" => 9, } } assert_equal(expected, - @worker.process_message({})) + @worker.process_message(request)) end end end -------------- next part -------------- HTML����������������������������...Download