groonga-query-log 1.5.1 → 1.5.2

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e343f6fe86cf4117900b88baee314e9b4ef2570c15e0257f257d4315fbaecb84
4
- data.tar.gz: 4ef1a78600e75017755da500403667143c80e253cc6f5703856c03fd5d82ec2c
3
+ metadata.gz: 7c4745d088436d712bbc9d1b010c0219008baac00d05f5c5ebb59423912353ab
4
+ data.tar.gz: 3d663956a09c081278a1f6a06534dfcd08e7a46c5ee270d06469be274817f8d7
5
5
  SHA512:
6
- metadata.gz: 561a1599048cab3d12ebc6808ae2c2296ee94cc8612dc10b9aee67d4ddef17a2125bfa15f00b8ab379aa5d675bca4c71d375fde189e6ce003ba779bc4d0e027d
7
- data.tar.gz: 5cc75c283ee307b4951646808a14db37b69e85f73178d4d9e0e425e505a24fc5fe1fdebb5b2f9e5666b7f5c25fd5f973d73341478dad0c1685406f89ca54a753
6
+ metadata.gz: 705cfcf529854898bd27884a714ac123776f8e560e088ebacc5860049061de29c3454bcfafd45ab3655d812492659ced950d9fa66727d831fb4d7b3961cf779c
7
+ data.tar.gz: eccf8a59cb0f6faba614bf9e4beae35228c4b3634a04e3d2a1af0fa50d7da60750e53a6ef891a3295c301bb47301c38685ece802b001b5a2e12ef4df1c384916
@@ -1,5 +1,16 @@
1
1
  # News
2
2
 
3
+
4
+ ## 1.5.2: 2019-09-26
5
+
6
+ ### Improvements
7
+
8
+ * `check-performance-regression`:
9
+
10
+ * Added support that the case which different operations exist.
11
+
12
+ * Added support for multiple operation sets.
13
+
3
14
  ## 1.5.1: 2019-09-13
4
15
 
5
16
  ### Improvements
@@ -1,5 +1,6 @@
1
1
  # Copyright (C) 2019 Kentaro Hayashi <hayashi@clear-code.com>
2
2
  # Copyright (C) 2019 Sutou Kouhei <kou@clear-code.com>
3
+ # Copyright (C) 2019 Horimoto Yasuhiro <horimoto@clear-code.com>
3
4
  #
4
5
  # This library is free software; you can redistribute it and/or
5
6
  # modify it under the terms of the GNU Lesser General Public
@@ -278,6 +279,15 @@ module GroongaQueryLog
278
279
  end
279
280
  end
280
281
 
282
+ class OperationSet
283
+ attr_reader :names
284
+ attr_reader :statistics
285
+ def initialize(names, statistics)
286
+ @names = names
287
+ @statistics = statistics
288
+ end
289
+ end
290
+
281
291
  class QueryStatistic < Statistic
282
292
  attr_reader :query
283
293
  def initialize(query, old, new, threshold)
@@ -289,22 +299,44 @@ module GroongaQueryLog
289
299
  @threshold.slow_query?(diff_elapsed_time, ratio)
290
300
  end
291
301
 
292
- def each_operation_statistic
293
- @old.first.operations.each_with_index do |operation, i|
294
- old_operations = @old.collect do |statistic|
295
- statistic.operations[i]
302
+ def operation_sets
303
+ old_operation_name_sets = @old.group_by do |statistic|
304
+ statistic.operations.collect do |operation|
305
+ operation[:name]
306
+ end
307
+ end
308
+ new_operation_name_sets = @new.group_by do |statistic|
309
+ statistic.operations.collect do |operation|
310
+ operation[:name]
296
311
  end
297
- # TODO: old and new may use different index
298
- new_operations = @new.collect do |statistic|
299
- statistic.operations[i]
312
+ end
313
+
314
+ operation_sets = []
315
+ operation_name_sets =
316
+ (old_operation_name_sets.keys & new_operation_name_sets.keys)
317
+ operation_name_sets.each do |operation_names|
318
+ old = old_operation_name_sets[operation_names]
319
+ next if old.nil?
320
+ new = new_operation_name_sets[operation_names]
321
+ next if new.nil?
322
+ statistics = operation_names.size.times.collect do |i|
323
+ old_operations = old.collect do |statistic|
324
+ statistic.operations[i]
325
+ end
326
+ new_operations = new.collect do |statistic|
327
+ statistic.operations[i]
328
+ end
329
+ operation = old_operations[0]
330
+ OperationStatistic.new(operation,
331
+ i,
332
+ old_operations,
333
+ new_operations,
334
+ @threshold)
300
335
  end
301
- operation_statistic = OperationStatistic.new(operation,
302
- i,
303
- old_operations,
304
- new_operations,
305
- @threshold)
306
- yield(operation_statistic)
336
+ operation_set = OperationSet.new(operation_names, statistics)
337
+ operation_sets << operation_set
307
338
  end
339
+ operation_sets
308
340
  end
309
341
 
310
342
  private
@@ -355,25 +387,31 @@ Query: #{query_statistic.query}
355
387
  Mean (old): #{format_elapsed_time(query_statistic.old_elapsed_time)}
356
388
  Mean (new): #{format_elapsed_time(query_statistic.new_elapsed_time)}
357
389
  Diff: #{format_diff(query_statistic)}
358
- Operations:
359
390
  REPORT
360
- query_statistic.each_operation_statistic do |operation_statistic|
361
- n_target_operations += 1
362
- next unless operation_statistic.slow?
363
-
364
- n_slow_operations += 1
365
- index = operation_statistic.index
366
- name = operation_statistic.name
367
- context = operation_statistic.context
368
- label = [name, context].compact.join(" ")
369
- old_elapsed_time = operation_statistic.old_elapsed_time
370
- new_elapsed_time = operation_statistic.new_elapsed_time
391
+
392
+ operation_sets = query_statistic.operation_sets
393
+ operation_sets.each_with_index do |operation_set, nth_operation_set|
371
394
  @output.puts(<<-REPORT)
395
+ Operation set[#{nth_operation_set}]:
396
+ REPORT
397
+ operation_set.statistics.each do |operation_statistic|
398
+ n_target_operations += 1
399
+ next unless operation_statistic.slow?
400
+
401
+ n_slow_operations += 1
402
+ index = operation_statistic.index
403
+ name = operation_statistic.name
404
+ context = operation_statistic.context
405
+ label = [name, context].compact.join(" ")
406
+ old_elapsed_time = operation_statistic.old_elapsed_time
407
+ new_elapsed_time = operation_statistic.new_elapsed_time
408
+ @output.puts(<<-REPORT)
372
409
  Operation[#{index}]: #{label}
373
410
  Mean (old): #{format_elapsed_time(old_elapsed_time)}
374
411
  Mean (new): #{format_elapsed_time(new_elapsed_time)}
375
412
  Diff: #{format_diff(operation_statistic)}
376
- REPORT
413
+ REPORT
414
+ end
377
415
  end
378
416
  end
379
417
 
@@ -15,5 +15,5 @@
15
15
  # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
16
16
 
17
17
  module GroongaQueryLog
18
- VERSION = "1.5.1"
18
+ VERSION = "1.5.2"
19
19
  end
@@ -1,4 +1,5 @@
1
1
  # Copyright (C) 2019 Kentaro Hayashi <hayashi@clear-code.com>
2
+ # Copyright (C) 2019 Horimoto Yasuhiro <horimoto@clear-code.com>
2
3
  #
3
4
  # This library is free software; you can redistribute it and/or
4
5
  # modify it under the terms of the GNU Lesser General Public
@@ -118,7 +119,7 @@ Query: select --table Site --limit 0
118
119
  Mean (old): 12.0msec
119
120
  Mean (new): 14.0msec
120
121
  Diff: +2.0msec/+1.17
121
- Operations:
122
+ Operation set[0]:
122
123
  Operation[0]: select
123
124
  Mean (old): 5.0msec
124
125
  Mean (new): 6.0msec
@@ -146,7 +147,7 @@ Query: select --table Site --filter "_id >= 4 && _id <= 6"
146
147
  Mean (old): 70.0msec
147
148
  Mean (new): 90.0msec
148
149
  Diff: +20.0msec/+1.29
149
- Operations:
150
+ Operation set[0]:
150
151
  Operation[0]: filter #<accessor _id(Site)> greater_equal 4
151
152
  Mean (old): 40.0msec
152
153
  Mean (new): 80.0msec
@@ -186,7 +187,7 @@ Query: select --table Site --limit 0
186
187
  Mean (old): 12.0msec
187
188
  Mean (new): 14.0msec
188
189
  Diff: +2.0msec/+1.17
189
- Operations:
190
+ Operation set[0]:
190
191
  Operation[0]: select
191
192
  Mean (old): 5.0msec
192
193
  Mean (new): 6.0msec
@@ -233,7 +234,7 @@ Query: select --table Site --limit 0
233
234
  Mean (old): 12.0msec
234
235
  Mean (new): 14.0msec
235
236
  Diff: +2.0msec/+1.17
236
- Operations:
237
+ Operation set[0]:
237
238
  Summary:
238
239
  Slow queries: 1/1(100.00%)
239
240
  Slow operations: 0/2( 0.00%)
@@ -276,7 +277,7 @@ Query: select --table Site --limit 0
276
277
  Mean (old): 12.0msec
277
278
  Mean (new): 14.0msec
278
279
  Diff: +2.0msec/+1.17
279
- Operations:
280
+ Operation set[0]:
280
281
  Operation[0]: select
281
282
  Mean (old): 5.0msec
282
283
  Mean (new): 6.0msec
@@ -308,4 +309,25 @@ Summary:
308
309
  assert_equal(expected, actual)
309
310
  end
310
311
  end
312
+
313
+ def test_different_operations
314
+ actual = run_command("--slow-query-ratio=0.0",
315
+ "--slow-query-second=0.0",
316
+ "--slow-operation-ratio=0.0",
317
+ "--slow-operation-second=0.0",
318
+ fixture_path("different_operations1.log"),
319
+ fixture_path("different_operations2.log"))
320
+ expected = <<-OUTPUT
321
+ Query: select Memos --output_columns _key,tag --filter 'all_records() && (tag == \"groonga\" || tag == \"mroonga\" || tag == \"droonga\")' --sortby _id
322
+ Mean (old): 7.1msec
323
+ Mean (new): 82.8msec
324
+ Diff: +75.7msec/+11.64
325
+ Summary:
326
+ Slow queries: 1/1(100.00%)
327
+ Slow operations: 0/0( 0.00%)
328
+ Caches (old): 0/1( 0.00%)
329
+ Caches (new): 0/1( 0.00%)
330
+ OUTPUT
331
+ assert_equal(expected, actual)
332
+ end
311
333
  end
@@ -0,0 +1,9 @@
1
+ 2019-09-24 11:26:52.247684|0x7ffd3772d330|>select Memos --output_columns _key,tag --filter 'all_records() && (tag == "groonga" || tag == "mroonga" || tag == "droonga")' --sortby _id
2
+ 2019-09-24 11:26:52.254556|0x7ffd3772d330|:000000006876176 filter(2): Memos.tag equal #<record:pat:Tags id:1 key:"groonga">
3
+ 2019-09-24 11:26:52.254577|0x7ffd3772d330|:000000006896105 filter(3): Memos.tag equal #<record:pat:Tags id:2 key:"mroonga">
4
+ 2019-09-24 11:26:52.254589|0x7ffd3772d330|:000000006907737 filter(4): Memos.tag equal #<record:pat:Tags id:4 key:"droonga">
5
+ 2019-09-24 11:26:52.254601|0x7ffd3772d330|:000000006919999 filter(4): all_records()
6
+ 2019-09-24 11:26:52.254608|0x7ffd3772d330|:000000006926366 select(4)
7
+ 2019-09-24 11:26:52.254649|0x7ffd3772d330|:000000006968407 sort(4): _id
8
+ 2019-09-24 11:26:52.254696|0x7ffd3772d330|:000000007015885 output(4)
9
+ 2019-09-24 11:26:52.254795|0x7ffd3772d330|<000000007115023 rc=0
@@ -0,0 +1,7 @@
1
+ 2019-09-24 11:28:16.384410|0x7ffcd86f6b40|>select Memos --output_columns _key,tag --filter 'all_records() && (tag == "groonga" || tag == "mroonga" || tag == "droonga")' --sortby _id
2
+ 2019-09-24 11:28:16.467000|0x7ffcd86f6b40|:000000082594372 filter(4): in_values(Memos.tag, #<record:pat:Tags id:1 key:"groonga">, #<record:pat:Tags id:2 key:"mroonga">, #<record:pat:Tags id:4 key:"droonga">)
3
+ 2019-09-24 11:28:16.467016|0x7ffcd86f6b40|:000000082610035 filter(4): all_records()
4
+ 2019-09-24 11:28:16.467038|0x7ffcd86f6b40|:000000082633089 select(4)
5
+ 2019-09-24 11:28:16.467067|0x7ffcd86f6b40|:000000082662096 sort(4): _id
6
+ 2019-09-24 11:28:16.467129|0x7ffcd86f6b40|:000000082723557 output(4)
7
+ 2019-09-24 11:28:16.467194|0x7ffcd86f6b40|<000000082788858 rc=0
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: groonga-query-log
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.5.1
4
+ version: 1.5.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kouhei Sutou
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-09-13 00:00:00.000000000 Z
11
+ date: 2019-09-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: diff-lcs
@@ -239,6 +239,8 @@ files:
239
239
  - test/command/test-format-regression-test-logs.rb
240
240
  - test/command/test-run-regression-test.rb
241
241
  - test/fixtures/check-performance-regression/cache.log
242
+ - test/fixtures/check-performance-regression/different_operations1.log
243
+ - test/fixtures/check-performance-regression/different_operations2.log
242
244
  - test/fixtures/check-performance-regression/nquery.log
243
245
  - test/fixtures/check-performance-regression/nquery2.log
244
246
  - test/fixtures/check-performance-regression/query1.log
@@ -305,9 +307,11 @@ test_files:
305
307
  - test/fixtures/n_entries.expected
306
308
  - test/fixtures/check-performance-regression/query1.log
307
309
  - test/fixtures/check-performance-regression/cache.log
310
+ - test/fixtures/check-performance-regression/different_operations2.log
308
311
  - test/fixtures/check-performance-regression/nquery2.log
309
312
  - test/fixtures/check-performance-regression/nquery.log
310
313
  - test/fixtures/check-performance-regression/query2.log
314
+ - test/fixtures/check-performance-regression/different_operations1.log
311
315
  - test/fixtures/target-tables.expected
312
316
  - test/fixtures/no-report-summary.expected
313
317
  - test/fixtures/order/-start-time.expected