diff --git a/lib/fluent/plugin/in_tail/position_file.rb b/lib/fluent/plugin/in_tail/position_file.rb index 88614d2802..faf27e95ee 100644 --- a/lib/fluent/plugin/in_tail/position_file.rb +++ b/lib/fluent/plugin/in_tail/position_file.rb @@ -248,6 +248,20 @@ def read_inode end end - TargetInfo = Struct.new(:path, :ino) + TargetInfo = Struct.new(:path, :ino) do + def ==(other) + return false unless other.is_a?(TargetInfo) + self.path == other.path + end + + def hash + self.path.hash + end + + def eql?(other) + return false unless other.is_a?(TargetInfo) + self.path == other.path + end + end end end diff --git a/test/plugin/in_tail/test_position_file.rb b/test/plugin/in_tail/test_position_file.rb index eb07eeb4b9..844dd2b38c 100644 --- a/test/plugin/in_tail/test_position_file.rb +++ b/test/plugin/in_tail/test_position_file.rb @@ -282,4 +282,29 @@ def build_files(file) assert_equal 2, f.read_inode end end + + sub_test_case "TargetInfo" do + def test_equal + t1 = Fluent::Plugin::TailInput::TargetInfo.new("test", 1234) + t2 = Fluent::Plugin::TailInput::TargetInfo.new("test", 1235) + + assert_equal t1, t2 + end + + def test_eql? + t1 = Fluent::Plugin::TailInput::TargetInfo.new("test", 1234) + t2 = Fluent::Plugin::TailInput::TargetInfo.new("test", 5321) + + assert do + t1.eql? t2 + end + end + + def test_hash + t1 = Fluent::Plugin::TailInput::TargetInfo.new("test", 1234) + t2 = Fluent::Plugin::TailInput::TargetInfo.new("test", 7321) + + assert_equal t1.hash, t2.hash + end + end end