fluent-plugin-proxysql-query-log 0.3.3 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Gemfile.lock +1 -1
- data/fluent-plugin-proxysql-query-log.gemspec +1 -1
- data/lib/fluent/plugin/in_proxysql_query_log.rb +1 -0
- data/lib/fluent/plugin/in_proxysql_query_log/watcher.rb +9 -1
- data/test/helper.rb +2 -1
- data/test/plugin/test_in_proxysql_query_log.rb +52 -11
- metadata +1 -1
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 5d836beefa6469c2f7a65fc75cc41b13c818efaf046ded993934e498a10f50e6
         | 
| 4 | 
            +
              data.tar.gz: bf976b24cbdf7e70c0ebbac8d875eb13c8b496358df21ab4a01194d5f8b54b02
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: dcea999d33046f2fe258f3c71a3bd811c544a45980c47c6dd70a7cbde8bcac5589fc3995bf32f717f060f33eeb50db437476a4c07a5a1e465e8edb11b0031a87
         | 
| 7 | 
            +
              data.tar.gz: 5ba73945f431bfcf4d48c58781f4f1d48647052105098a05a30ba7f0784806b805c41d82435749130677fbfd1a7f1da4b58e3209b1797674350c1922436c0524
         | 
    
        data/Gemfile.lock
    CHANGED
    
    
| @@ -3,7 +3,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib) | |
| 3 3 |  | 
| 4 4 | 
             
            Gem::Specification.new do |spec|
         | 
| 5 5 | 
             
              spec.name    = "fluent-plugin-proxysql-query-log"
         | 
| 6 | 
            -
              spec.version = "0. | 
| 6 | 
            +
              spec.version = "0.4.0"
         | 
| 7 7 | 
             
              spec.authors = ["r_takaishi"]
         | 
| 8 8 | 
             
              spec.email   = ["ryo.takaishi.0@gmail.com"]
         | 
| 9 9 |  | 
| @@ -33,6 +33,7 @@ module Fluent | |
| 33 33 | 
             
                      seek(@path)
         | 
| 34 34 |  | 
| 35 35 | 
             
                      while true
         | 
| 36 | 
            +
                        @pos = @io.pos
         | 
| 36 37 | 
             
                        raw_total_bytes = @io.read(8)
         | 
| 37 38 | 
             
                        return unless raw_total_bytes
         | 
| 38 39 |  | 
| @@ -57,7 +58,10 @@ module Fluent | |
| 57 58 | 
             
                          'end_time' => convert_time(query.end_time),
         | 
| 58 59 | 
             
                          'duration' => query.end_time - query.start_time,
         | 
| 59 60 | 
             
                          'digest' => query.digest,
         | 
| 60 | 
            -
                          'query' => query.query
         | 
| 61 | 
            +
                          'query' => query.query,
         | 
| 62 | 
            +
                          'hostname' => hostname,
         | 
| 63 | 
            +
                          'filename' => @path,
         | 
| 64 | 
            +
                          'pos' => @pos
         | 
| 61 65 | 
             
                      }
         | 
| 62 66 | 
             
                    end
         | 
| 63 67 |  | 
| @@ -78,6 +82,10 @@ module Fluent | |
| 78 82 | 
             
                    def attached?
         | 
| 79 83 | 
             
                      @attached
         | 
| 80 84 | 
             
                    end
         | 
| 85 | 
            +
             | 
| 86 | 
            +
                    def hostname
         | 
| 87 | 
            +
                      @hostname ||= Socket.gethostname
         | 
| 88 | 
            +
                    end
         | 
| 81 89 | 
             
                  end
         | 
| 82 90 | 
             
                end
         | 
| 83 91 | 
             
              end
         | 
    
        data/test/helper.rb
    CHANGED
    
    
| @@ -7,6 +7,7 @@ class ProxysqlQueryLogInputTest < Test::Unit::TestCase | |
| 7 7 | 
             
                Pathname.glob("#{TMP_DIR}/*").each{|p| File.delete(p)}
         | 
| 8 8 | 
             
              end
         | 
| 9 9 |  | 
| 10 | 
            +
              HOSTNAME = Socket.gethostname
         | 
| 10 11 | 
             
              TMP_DIR = File.dirname(__FILE__) + '/../tmp/proxysql_query_log'
         | 
| 11 12 | 
             
              CONFIG = config_element('ROOT', '', {
         | 
| 12 13 | 
             
                  'path' => "#{TMP_DIR}/query_log.00000001",
         | 
| @@ -47,14 +48,16 @@ class ProxysqlQueryLogInputTest < Test::Unit::TestCase | |
| 47 48 | 
             
              }
         | 
| 48 49 |  | 
| 49 50 | 
             
              test 'singlefile' do
         | 
| 50 | 
            -
                 | 
| 51 | 
            +
                query_log_path_00000001 = "#{TMP_DIR}/query_log.00000001"
         | 
| 52 | 
            +
             | 
| 53 | 
            +
                File.open(query_log_path_00000001, 'wb') {|f|
         | 
| 51 54 | 
             
                  write_record(f, QUERY_1)
         | 
| 52 55 | 
             
                }
         | 
| 53 56 | 
             
                config = CONFIG
         | 
| 54 57 | 
             
                d = create_driver(config)
         | 
| 55 | 
            -
                d.run(expect_emits:  | 
| 56 | 
            -
                  File.open( | 
| 57 | 
            -
                    write_record(f,  | 
| 58 | 
            +
                d.run(expect_emits: 2) do
         | 
| 59 | 
            +
                  File.open(query_log_path_00000001, "ab") {|f|
         | 
| 60 | 
            +
                    write_record(f, QUERY_2)
         | 
| 58 61 | 
             
                  }
         | 
| 59 62 | 
             
                end
         | 
| 60 63 |  | 
| @@ -72,23 +75,46 @@ class ProxysqlQueryLogInputTest < Test::Unit::TestCase | |
| 72 75 | 
             
                assert_equal('2018-05-10 09:24:16', events[0][2]['end_time'])
         | 
| 73 76 | 
             
                assert_equal('0xD69C6B36F32D2EAE', events[0][2]['digest'])
         | 
| 74 77 | 
             
                assert_equal('SELECT * FROM test', events[0][2]['query'])
         | 
| 78 | 
            +
                assert_equal(0, events[0][2]['pos'])
         | 
| 79 | 
            +
                assert_equal(HOSTNAME, events[0][2]['hostname'])
         | 
| 80 | 
            +
                assert_equal(query_log_path_00000001, events[0][2]['filename'])
         | 
| 81 | 
            +
             | 
| 82 | 
            +
                assert_equal(1, d.instance.instance_variable_get('@watchers').size)
         | 
| 83 | 
            +
                assert_equal(true, events.length > 0)
         | 
| 84 | 
            +
                assert_equal(1, 1)
         | 
| 85 | 
            +
                assert_equal(9, events[1][2]['thread_id'])
         | 
| 86 | 
            +
                assert_equal('root', events[1][2]['username'])
         | 
| 87 | 
            +
                assert_equal('alpaca', events[1][2]['schema_name'])
         | 
| 88 | 
            +
                assert_equal('127.0.0.1:34612', events[1][2]['client'])
         | 
| 89 | 
            +
                assert_equal(0, events[1][2]['HID'])
         | 
| 90 | 
            +
                assert_equal('127.0.0.1:3306', events[1][2]['server'])
         | 
| 91 | 
            +
                assert_equal('2018-05-10 09:24:16', events[1][2]['start_time'])
         | 
| 92 | 
            +
                assert_equal('2018-05-10 09:24:16', events[1][2]['end_time'])
         | 
| 93 | 
            +
                assert_equal('0xD69C6B36F32D2EAE', events[1][2]['digest'])
         | 
| 94 | 
            +
                assert_equal('show databases', events[1][2]['query'])
         | 
| 95 | 
            +
                assert_equal(100, events[1][2]['pos'])
         | 
| 96 | 
            +
                assert_equal(HOSTNAME, events[1][2]['hostname'])
         | 
| 97 | 
            +
                assert_equal(query_log_path_00000001, events[1][2]['filename'])
         | 
| 75 98 | 
             
              end
         | 
| 76 99 |  | 
| 77 100 | 
             
              test 'multifile' do
         | 
| 78 | 
            -
                 | 
| 101 | 
            +
                query_log_path_00000001 = "#{TMP_DIR}/query_log.00000001"
         | 
| 102 | 
            +
                query_log_path_00000002 = "#{TMP_DIR}/query_log.00000002"
         | 
| 103 | 
            +
             | 
| 104 | 
            +
                File.open(query_log_path_00000001, 'wb') {|f|
         | 
| 79 105 | 
             
                  write_record(f, QUERY_1)
         | 
| 80 106 | 
             
                }
         | 
| 81 | 
            -
                File.open( | 
| 107 | 
            +
                File.open(query_log_path_00000002, 'wb') {|f|
         | 
| 82 108 | 
             
                  write_record(f, QUERY_2)
         | 
| 83 109 | 
             
                }
         | 
| 84 110 |  | 
| 85 111 | 
             
                config = MULTI_FILE_CONFIG
         | 
| 86 112 | 
             
                d = create_driver(config)
         | 
| 87 113 | 
             
                d.run(expect_emits: 2) do
         | 
| 88 | 
            -
                  File.open( | 
| 114 | 
            +
                  File.open(query_log_path_00000001, "ab") {|f|
         | 
| 89 115 | 
             
                    write_record(f, QUERY_1)
         | 
| 90 116 | 
             
                  }
         | 
| 91 | 
            -
                  File.open( | 
| 117 | 
            +
                  File.open(query_log_path_00000002, "ab") {|f|
         | 
| 92 118 | 
             
                    write_record(f, QUERY_2)
         | 
| 93 119 | 
             
                  }
         | 
| 94 120 | 
             
                end
         | 
| @@ -107,6 +133,9 @@ class ProxysqlQueryLogInputTest < Test::Unit::TestCase | |
| 107 133 | 
             
                assert_equal('2018-05-10 09:24:16', events[0][2]['end_time'])
         | 
| 108 134 | 
             
                assert_equal('0xD69C6B36F32D2EAE', events[0][2]['digest'])
         | 
| 109 135 | 
             
                assert_equal('SELECT * FROM test', events[0][2]['query'])
         | 
| 136 | 
            +
                assert_equal(0, events[0][2]['pos'])
         | 
| 137 | 
            +
                assert_equal(HOSTNAME, events[0][2]['hostname'])
         | 
| 138 | 
            +
                assert_equal(query_log_path_00000001, events[0][2]['filename'])
         | 
| 110 139 |  | 
| 111 140 | 
             
                assert_equal(2, d.instance.instance_variable_get('@watchers').size)
         | 
| 112 141 | 
             
                assert_equal(true, events.length > 0)
         | 
| @@ -121,22 +150,28 @@ class ProxysqlQueryLogInputTest < Test::Unit::TestCase | |
| 121 150 | 
             
                assert_equal('2018-05-10 09:24:16', events[1][2]['end_time'])
         | 
| 122 151 | 
             
                assert_equal('0xD69C6B36F32D2EAE', events[1][2]['digest'])
         | 
| 123 152 | 
             
                assert_equal('show databases', events[1][2]['query'])
         | 
| 153 | 
            +
                assert_equal(0, events[1][2]['pos'])
         | 
| 154 | 
            +
                assert_equal(HOSTNAME, events[1][2]['hostname'])
         | 
| 155 | 
            +
                assert_equal(query_log_path_00000002, events[1][2]['filename'])
         | 
| 124 156 | 
             
              end
         | 
| 125 157 |  | 
| 126 158 | 
             
              test 'rotate_file' do
         | 
| 127 | 
            -
                 | 
| 159 | 
            +
                query_log_path_00000001 = "#{TMP_DIR}/query_log.00000001"
         | 
| 160 | 
            +
                query_log_path_00000002 = "#{TMP_DIR}/query_log.00000002"
         | 
| 161 | 
            +
             | 
| 162 | 
            +
                File.open(query_log_path_00000001, 'wb') {|f|
         | 
| 128 163 | 
             
                  write_record(f, QUERY_1)
         | 
| 129 164 | 
             
                }
         | 
| 130 165 |  | 
| 131 166 | 
             
                config = MULTI_FILE_CONFIG
         | 
| 132 167 | 
             
                d = create_driver(config)
         | 
| 133 168 | 
             
                d.run(expect_emits: 2) do
         | 
| 134 | 
            -
                  File.open( | 
| 169 | 
            +
                  File.open(query_log_path_00000002, "ab") {|f|
         | 
| 135 170 | 
             
                    write_record(f, QUERY_2)
         | 
| 136 171 | 
             
                  }
         | 
| 137 172 | 
             
                  sleep 5
         | 
| 138 173 |  | 
| 139 | 
            -
                  File.open( | 
| 174 | 
            +
                  File.open(query_log_path_00000002, "ab") {|f|
         | 
| 140 175 | 
             
                    write_record(f, QUERY_2)
         | 
| 141 176 | 
             
                  }
         | 
| 142 177 | 
             
                end
         | 
| @@ -156,6 +191,9 @@ class ProxysqlQueryLogInputTest < Test::Unit::TestCase | |
| 156 191 | 
             
                assert_equal('2018-05-10 09:24:16', events[0][2]['end_time'])
         | 
| 157 192 | 
             
                assert_equal('0xD69C6B36F32D2EAE', events[0][2]['digest'])
         | 
| 158 193 | 
             
                assert_equal('SELECT * FROM test', events[0][2]['query'])
         | 
| 194 | 
            +
                assert_equal(0, events[1][2]['pos'])
         | 
| 195 | 
            +
                assert_equal(HOSTNAME, events[1][2]['hostname'])
         | 
| 196 | 
            +
                assert_equal(query_log_path_00000002, events[1][2]['filename'])
         | 
| 159 197 |  | 
| 160 198 | 
             
                assert_equal(9, events[1][2]['thread_id'])
         | 
| 161 199 | 
             
                assert_equal('root', events[1][2]['username'])
         | 
| @@ -167,6 +205,9 @@ class ProxysqlQueryLogInputTest < Test::Unit::TestCase | |
| 167 205 | 
             
                assert_equal('2018-05-10 09:24:16', events[1][2]['end_time'])
         | 
| 168 206 | 
             
                assert_equal('0xD69C6B36F32D2EAE', events[1][2]['digest'])
         | 
| 169 207 | 
             
                assert_equal('show databases', events[1][2]['query'])
         | 
| 208 | 
            +
                assert_equal(0, events[1][2]['pos'])
         | 
| 209 | 
            +
                assert_equal(HOSTNAME, events[1][2]['hostname'])
         | 
| 210 | 
            +
                assert_equal(query_log_path_00000002, events[1][2]['filename'])
         | 
| 170 211 |  | 
| 171 212 | 
             
              end
         | 
| 172 213 |  |