Skip to content

Commit 335fabe

Browse files
committed
RCBC-393: fix type conversion for query metrics
1 parent b6d696b commit 335fabe

File tree

5 files changed

+29
-25
lines changed

5 files changed

+29
-25
lines changed

ext/couchbase.cxx

Lines changed: 6 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -3797,22 +3797,14 @@ cb_Backend_document_query(VALUE self, VALUE statement, VALUE options)
37973797
if (resp.meta.metrics) {
37983798
VALUE metrics = rb_hash_new();
37993799
rb_hash_aset(meta, rb_id2sym(rb_intern("metrics")), metrics);
3800-
rb_hash_aset(metrics, rb_id2sym(rb_intern("elapsed_time")), resp.meta.metrics->elapsed_time.count());
3801-
rb_hash_aset(metrics, rb_id2sym(rb_intern("execution_time")), resp.meta.metrics->execution_time.count());
3800+
rb_hash_aset(metrics, rb_id2sym(rb_intern("elapsed_time")), ULL2NUM(resp.meta.metrics->elapsed_time.count()));
3801+
rb_hash_aset(metrics, rb_id2sym(rb_intern("execution_time")), ULL2NUM(resp.meta.metrics->execution_time.count()));
38023802
rb_hash_aset(metrics, rb_id2sym(rb_intern("result_count")), ULL2NUM(resp.meta.metrics->result_count));
38033803
rb_hash_aset(metrics, rb_id2sym(rb_intern("result_size")), ULL2NUM(resp.meta.metrics->result_size));
3804-
if (resp.meta.metrics->sort_count > 0) {
3805-
rb_hash_aset(metrics, rb_id2sym(rb_intern("sort_count")), ULL2NUM(resp.meta.metrics->sort_count));
3806-
}
3807-
if (resp.meta.metrics->mutation_count > 0) {
3808-
rb_hash_aset(metrics, rb_id2sym(rb_intern("mutation_count")), ULL2NUM(resp.meta.metrics->mutation_count));
3809-
}
3810-
if (resp.meta.metrics->error_count > 0) {
3811-
rb_hash_aset(metrics, rb_id2sym(rb_intern("error_count")), ULL2NUM(resp.meta.metrics->error_count));
3812-
}
3813-
if (resp.meta.metrics->warning_count > 0) {
3814-
rb_hash_aset(metrics, rb_id2sym(rb_intern("warning_count")), ULL2NUM(resp.meta.metrics->warning_count));
3815-
}
3804+
rb_hash_aset(metrics, rb_id2sym(rb_intern("sort_count")), ULL2NUM(resp.meta.metrics->sort_count));
3805+
rb_hash_aset(metrics, rb_id2sym(rb_intern("mutation_count")), ULL2NUM(resp.meta.metrics->mutation_count));
3806+
rb_hash_aset(metrics, rb_id2sym(rb_intern("error_count")), ULL2NUM(resp.meta.metrics->error_count));
3807+
rb_hash_aset(metrics, rb_id2sym(rb_intern("warning_count")), ULL2NUM(resp.meta.metrics->warning_count));
38163808
}
38173809

38183810
return res;

lib/couchbase/query_options.rb

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -71,12 +71,12 @@ def initialize
7171
end
7272

7373
class QueryMetrics
74-
# @return [Integer] The total time taken for the request, that is the time from when the request was received until the results were
75-
# returned.
74+
# @return [Integer] The total time taken for the request (in nanoseconds), that is the time from when the request
75+
# was received until the results were returned.
7676
attr_accessor :elapsed_time
7777

78-
# @return [Integer] The time taken for the execution of the request, that is the time from when query execution started until the
79-
# results were returned
78+
# @return [Integer] The time taken for the execution of the request (in nanoseconds), that is the time from when
79+
# query execution started until the results were returned
8080
attr_accessor :execution_time
8181

8282
# @return [Integer] the total number of results selected by the engine before restriction through LIMIT clause.

test/active_support/behaviors/cache_delete_matched_behavior.rb

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,13 @@ def test_delete_matched
1212
@cache.write("fu", "baz")
1313
@cache.write("foo/bar", "baz")
1414
@cache.write("fu/baz", "bar")
15-
deleted = @cache.delete_matched(/oo/)
16-
assert deleted >= 2
15+
total_deleted = 0
16+
loop do
17+
deleted = @cache.delete_matched(/oo/)
18+
break if deleted == 0
19+
total_deleted += deleted
20+
end
21+
assert total_deleted >= 2, "delete_matched performed #{total_deleted} mutations"
1722
sleep(0.3) while @cache.exist?("foo") || @cache.exist?("foo/bar") # HACK: to ensure that query changes have been propagated
1823
assert_not @cache.exist?("foo")
1924
assert @cache.exist?("fu")

test/active_support/cache_store_test.rb

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -93,9 +93,14 @@ def test_delete_matched
9393
@cache.write(foo, "value_foo")
9494
bar = uniq_id(:bar)
9595
@cache.write(bar, "value_bar")
96-
deleted = @cache.delete_matched(/foo/)
97-
98-
assert_predicate deleted, :positive?
96+
total_deleted = 0
97+
loop do
98+
deleted = @cache.delete_matched(/foo/)
99+
break if deleted == 0
100+
total_deleted += deleted
101+
end
102+
103+
assert_predicate deleted, :positive?, "delete_matched performed #{total_deleted} mutations"
99104
sleep(0.3) while @cache.exist?(foo) # HACK: to ensure that query changes have been propagated
100105

101106
assert_nil @cache.read(foo)

test/query_test.rb

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,8 +61,10 @@ def test_query_with_metrics
6161

6262
metrics = res.meta_data.metrics
6363

64-
refute metrics.error_count
65-
refute metrics.warning_count
64+
assert_predicate metrics.elapsed_time, :positive?
65+
assert_predicate metrics.execution_time, :positive?
66+
assert_equal 0, metrics.error_count
67+
assert_equal 0, metrics.warning_count
6668
assert_equal 1, metrics.result_count
6769
end
6870

0 commit comments

Comments
 (0)