norikra 1.1.1-java → 1.1.2-java
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +5 -5
- data/Changes.md +14 -0
- data/README.md +2 -0
- data/lib/norikra/cli.rb +2 -0
- data/lib/norikra/engine.rb +31 -3
- data/lib/norikra/field.rb +1 -1
- data/lib/norikra/query.rb +0 -39
- data/lib/norikra/server.rb +13 -13
- data/lib/norikra/suspended_query.rb +43 -0
- data/lib/norikra/version.rb +1 -1
- data/lib/norikra/webui/handler.rb +1 -2
- data/norikra.gemspec +1 -1
- data/spec/field_spec.rb +9 -9
- data/spec/fieldset_spec.rb +11 -11
- data/spec/output_pool_spec.rb +1 -1
- data/spec/query_spec.rb +35 -37
- data/spec/suspended_query_spec.rb +58 -0
- data/spec/target_spec.rb +18 -18
- data/spec/typedef_manager_spec.rb +23 -23
- data/spec/typedef_spec.rb +34 -34
- data/views/index.erb +1 -1
- metadata +9 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 90c6be383b83590b832fb6271a3642a42295ae6f
|
4
|
+
data.tar.gz: 23555f2d09692459ef6fa17b85a47af61129e769
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b93442c3b3e202a880fa75f90065770b1b44b210789684b16889b24b7c10f91144488e6f2564b25e78ae0850c2a8f24c711e83c0c8b8d8a90608ee5c2e0b249e
|
7
|
+
data.tar.gz: b34e828cd14c7c4fb00a2d83c17131590be520e15559c9caef5e429d46a92b311e027a12a283721de81000efbb12d79b752df3e1559a4890bef4cabf93788b2d
|
data/.travis.yml
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
language: ruby
|
2
2
|
rvm:
|
3
3
|
- jruby-19mode
|
4
|
-
- jruby-head
|
4
|
+
# - jruby-head
|
5
5
|
jdk:
|
6
6
|
- oraclejdk8
|
7
7
|
- oraclejdk7
|
8
8
|
- openjdk7
|
9
9
|
- openjdk6
|
10
|
-
matrix:
|
11
|
-
|
12
|
-
|
13
|
-
|
10
|
+
# matrix:
|
11
|
+
# exclude:
|
12
|
+
# - rvm: jruby-head
|
13
|
+
# jdk: openjdk6
|
data/Changes.md
CHANGED
@@ -3,6 +3,20 @@
|
|
3
3
|
Changes of norikra.
|
4
4
|
|
5
5
|
## v1
|
6
|
+
* v1.1.2
|
7
|
+
* Enable `-javaagent` option
|
8
|
+
* Fix default/pre-set threads
|
9
|
+
* Update RSpec dependency to latest
|
10
|
+
* Reject field names, starting with numeric characters
|
11
|
+
* Reject non-JSON object input events
|
12
|
+
* Fix Bug:
|
13
|
+
* to show wrong output events from queries
|
14
|
+
* missing header column of list of queries in WebUI
|
15
|
+
* v1.1.1
|
16
|
+
* Fix bug not to sort suspended queries correctly
|
17
|
+
* v1.1.0
|
18
|
+
* Add API/WebUI controls to suspend/resume queries
|
19
|
+
* Add `STDOUT()` query group to show query result easilly
|
6
20
|
* v1.0.8:
|
7
21
|
* Fix bug not to read command line options for time/route threads
|
8
22
|
* v1.0.7:
|
data/README.md
CHANGED
data/lib/norikra/cli.rb
CHANGED
data/lib/norikra/engine.rb
CHANGED
@@ -4,6 +4,9 @@ require 'norikra/error'
|
|
4
4
|
require 'norikra/target'
|
5
5
|
require 'norikra/listener'
|
6
6
|
|
7
|
+
require 'norikra/query'
|
8
|
+
require 'norikra/suspended_query'
|
9
|
+
|
7
10
|
require 'norikra/logger'
|
8
11
|
include Norikra::Log
|
9
12
|
|
@@ -221,6 +224,23 @@ module Norikra
|
|
221
224
|
remove_suspended_query(suspended_query)
|
222
225
|
end
|
223
226
|
|
227
|
+
def event_filter(event)
|
228
|
+
unless event.is_a?(Hash)
|
229
|
+
error "Invalid input event: Non-Hash (JSON) object: #{event.class}"
|
230
|
+
return nil
|
231
|
+
end
|
232
|
+
event.keys.each do |k|
|
233
|
+
if ! k.is_a?(String)
|
234
|
+
warn "Invalid key in event: Non-String field key: #{k.class}"
|
235
|
+
event.delete(k)
|
236
|
+
elsif k =~ /^\d/
|
237
|
+
warn "Invalid key in event: Starting with numeric char: #{k.to_s}"
|
238
|
+
event.delete(k)
|
239
|
+
end
|
240
|
+
end
|
241
|
+
event
|
242
|
+
end
|
243
|
+
|
224
244
|
def send(target_name, events)
|
225
245
|
trace "send messages", :target => target_name, :events => events
|
226
246
|
|
@@ -236,8 +256,13 @@ module Norikra
|
|
236
256
|
|
237
257
|
if @typedef_manager.lazy?(target.name)
|
238
258
|
info "opening lazy target", :target => target
|
239
|
-
|
240
|
-
|
259
|
+
|
260
|
+
first_event = event_filter(events.first)
|
261
|
+
if first_event.nil? # non-hash object
|
262
|
+
raise Norikra::ClientError, "Input data must be JSON object"
|
263
|
+
end
|
264
|
+
debug "generating base fieldset from event", :target => target.name, :event => first_event
|
265
|
+
base_fieldset = @typedef_manager.generate_base_fieldset(target.name, first_event)
|
241
266
|
|
242
267
|
debug "registering base fieldset", :target => target.name, :base => base_fieldset
|
243
268
|
register_base_fieldset(target.name, base_fieldset)
|
@@ -249,7 +274,10 @@ module Norikra
|
|
249
274
|
|
250
275
|
strict_refer = (not target.auto_field?)
|
251
276
|
|
252
|
-
events.each do |
|
277
|
+
events.each do |input_event|
|
278
|
+
event = event_filter(input_event)
|
279
|
+
next if event.nil? # non-hash object
|
280
|
+
|
253
281
|
fieldset = @typedef_manager.refer(target_name, event, strict_refer)
|
254
282
|
|
255
283
|
unless registered_data_fieldset[fieldset.summary]
|
data/lib/norikra/field.rb
CHANGED
@@ -44,7 +44,7 @@ module Norikra
|
|
44
44
|
when 'integer', 'int', 'long' then 'long'
|
45
45
|
when 'float', 'double' then 'double'
|
46
46
|
when 'hash', 'array'
|
47
|
-
raise Norikra::ArgumentError, "#{type} is
|
47
|
+
raise Norikra::ArgumentError, "#{type} is container field. Don't specify it at open, use it directly."
|
48
48
|
when 'byte'
|
49
49
|
raise Norikra::ArgumentError, "byte is not supported in Norikra"
|
50
50
|
else
|
data/lib/norikra/query.rb
CHANGED
@@ -465,43 +465,4 @@ module Norikra
|
|
465
465
|
def dup; self; end
|
466
466
|
def dup_with_stream_name(actual_name); self; end
|
467
467
|
end
|
468
|
-
|
469
|
-
class SuspendedQuery
|
470
|
-
attr_accessor :name, :group, :expression, :targets
|
471
|
-
|
472
|
-
def initialize(query)
|
473
|
-
@name = query.name
|
474
|
-
@group = query.group
|
475
|
-
@expression = query.expression
|
476
|
-
@targets = query.targets
|
477
|
-
end
|
478
|
-
|
479
|
-
def <=>(other)
|
480
|
-
if @group.nil? || other.group.nil?
|
481
|
-
if @group.nil? && other.group.nil?
|
482
|
-
@name <=> other.name
|
483
|
-
else
|
484
|
-
@group.to_s <=> other.group.to_s
|
485
|
-
end
|
486
|
-
else
|
487
|
-
if @group == other.group
|
488
|
-
self.name <=> other.name
|
489
|
-
else
|
490
|
-
self.group <=> other.group
|
491
|
-
end
|
492
|
-
end
|
493
|
-
end
|
494
|
-
|
495
|
-
def suspended?
|
496
|
-
true
|
497
|
-
end
|
498
|
-
|
499
|
-
def to_hash
|
500
|
-
{'name' => @name, 'group' => @group, 'expression' => @expression, 'targets' => @targets, 'suspended' => true}
|
501
|
-
end
|
502
|
-
|
503
|
-
def create
|
504
|
-
Query.new(name: @name, group: @group, expression: @expression)
|
505
|
-
end
|
506
|
-
end
|
507
468
|
end
|
data/lib/norikra/server.rb
CHANGED
@@ -21,26 +21,26 @@ module Norikra
|
|
21
21
|
MICRO_PREDEFINED = {
|
22
22
|
:engine => { inbound: { threads: 0, capacity: 0 }, outbound: { threads: 0, capacity: 0 },
|
23
23
|
route_exec: { threads: 0, capacity: 0 }, timer_exec: { threads: 0, capacity: 0 }, },
|
24
|
-
:rpc => { threads: 2 },
|
24
|
+
:rpc => { threads: 2 }, # for desktop
|
25
25
|
:web => { threads: 2 },
|
26
26
|
}
|
27
27
|
SMALL_PREDEFINED = {
|
28
|
-
:engine => { inbound: { threads:
|
29
|
-
route_exec: { threads:
|
30
|
-
:rpc => { threads:
|
31
|
-
:web => { threads:
|
28
|
+
:engine => { inbound: { threads: 2, capacity: 0 }, outbound: { threads: 2, capacity: 0 },
|
29
|
+
route_exec: { threads: 2, capacity: 0 }, timer_exec: { threads: 2, capacity: 0 }, },
|
30
|
+
:rpc => { threads: 9 }, # 4core HT
|
31
|
+
:web => { threads: 9 },
|
32
32
|
}
|
33
33
|
MIDDLE_PREDEFINED = {
|
34
|
-
:engine => { inbound: { threads: 4, capacity: 0 }, outbound: { threads:
|
35
|
-
route_exec: { threads:
|
36
|
-
:rpc => { threads:
|
37
|
-
:web => { threads:
|
34
|
+
:engine => { inbound: { threads: 4, capacity: 0 }, outbound: { threads: 4, capacity: 0 },
|
35
|
+
route_exec: { threads: 4, capacity: 0 }, timer_exec: { threads: 4, capacity: 0 }, },
|
36
|
+
:rpc => { threads: 17 }, # 4core HT 2CPU
|
37
|
+
:web => { threads: 17 },
|
38
38
|
}
|
39
39
|
LARGE_PREDEFINED = {
|
40
|
-
:engine => { inbound: { threads:
|
41
|
-
route_exec: { threads:
|
42
|
-
:rpc => { threads:
|
43
|
-
:web => { threads:
|
40
|
+
:engine => { inbound: { threads: 8, capacity: 0 }, outbound: { threads: 8, capacity: 0 },
|
41
|
+
route_exec: { threads: 8, capacity: 0 }, timer_exec: { threads: 8, capacity: 0 }, },
|
42
|
+
:rpc => { threads: 49 }, # 6core HT 4CPU
|
43
|
+
:web => { threads: 49 },
|
44
44
|
}
|
45
45
|
|
46
46
|
def self.threading_configuration(conf)
|
@@ -0,0 +1,43 @@
|
|
1
|
+
require 'norikra/error'
|
2
|
+
require 'norikra/query'
|
3
|
+
|
4
|
+
module Norikra
|
5
|
+
class SuspendedQuery
|
6
|
+
attr_accessor :name, :group, :expression, :targets
|
7
|
+
|
8
|
+
def initialize(query)
|
9
|
+
@name = query.name
|
10
|
+
@group = query.group
|
11
|
+
@expression = query.expression
|
12
|
+
@targets = query.targets
|
13
|
+
end
|
14
|
+
|
15
|
+
def <=>(other)
|
16
|
+
if @group.nil? || other.group.nil?
|
17
|
+
if @group.nil? && other.group.nil?
|
18
|
+
@name <=> other.name
|
19
|
+
else
|
20
|
+
@group.to_s <=> other.group.to_s
|
21
|
+
end
|
22
|
+
else
|
23
|
+
if @group == other.group
|
24
|
+
self.name <=> other.name
|
25
|
+
else
|
26
|
+
self.group <=> other.group
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
def suspended?
|
32
|
+
true
|
33
|
+
end
|
34
|
+
|
35
|
+
def to_hash
|
36
|
+
{'name' => @name, 'group' => @group, 'expression' => @expression, 'targets' => @targets, 'suspended' => true}
|
37
|
+
end
|
38
|
+
|
39
|
+
def create
|
40
|
+
Query.new(name: @name, group: @group, expression: @expression)
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
data/lib/norikra/version.rb
CHANGED
@@ -67,8 +67,7 @@ class Norikra::WebUI::Handler < Sinatra::Base
|
|
67
67
|
input_data,session[:input_data] = session[:input_data],nil
|
68
68
|
|
69
69
|
queries = engine.queries.sort + engine.suspended_queries.sort
|
70
|
-
pooled_events = Hash[* queries.map{|q| [q.name, engine.output_pool.pool.fetch(q.name, []).size.to_s]}.flatten]
|
71
|
-
|
70
|
+
pooled_events = Hash[* queries.map{|q| [q.name, engine.output_pool.pool.fetch(q.name, []).map(&:size).reduce(&:+).to_s]}.flatten]
|
72
71
|
engine_targets = engine.targets.sort
|
73
72
|
targets = engine_targets.map{|t|
|
74
73
|
{
|
data/norikra.gemspec
CHANGED
@@ -30,7 +30,7 @@ Gem::Specification.new do |spec|
|
|
30
30
|
|
31
31
|
spec.add_development_dependency "bundler", "~> 1.3"
|
32
32
|
spec.add_development_dependency "rake"
|
33
|
-
spec.add_development_dependency "rspec"
|
33
|
+
spec.add_development_dependency "rspec"
|
34
34
|
spec.add_development_dependency "spork"
|
35
35
|
spec.add_development_dependency "pry"
|
36
36
|
end
|
data/spec/field_spec.rb
CHANGED
@@ -64,15 +64,15 @@ describe Norikra::Field do
|
|
64
64
|
|
65
65
|
describe '.container_type?' do
|
66
66
|
it 'returns true for only "hash" and "array"' do
|
67
|
-
expect(Norikra::Field.container_type?('')).to
|
68
|
-
expect(Norikra::Field.container_type?('string')).to
|
69
|
-
expect(Norikra::Field.container_type?('int')).to
|
70
|
-
expect(Norikra::Field.container_type?('long')).to
|
71
|
-
|
72
|
-
expect(Norikra::Field.container_type?('Hash')).to
|
73
|
-
expect(Norikra::Field.container_type?('hash')).to
|
74
|
-
expect(Norikra::Field.container_type?('Array')).to
|
75
|
-
expect(Norikra::Field.container_type?('array')).to
|
67
|
+
expect(Norikra::Field.container_type?('')).to be_falsy
|
68
|
+
expect(Norikra::Field.container_type?('string')).to be_falsy
|
69
|
+
expect(Norikra::Field.container_type?('int')).to be_falsy
|
70
|
+
expect(Norikra::Field.container_type?('long')).to be_falsy
|
71
|
+
|
72
|
+
expect(Norikra::Field.container_type?('Hash')).to be_truthy
|
73
|
+
expect(Norikra::Field.container_type?('hash')).to be_truthy
|
74
|
+
expect(Norikra::Field.container_type?('Array')).to be_truthy
|
75
|
+
expect(Norikra::Field.container_type?('array')).to be_truthy
|
76
76
|
end
|
77
77
|
end
|
78
78
|
|
data/spec/fieldset_spec.rb
CHANGED
@@ -21,12 +21,12 @@ describe Norikra::FieldSet do
|
|
21
21
|
|
22
22
|
it 'accepts second argument as optional specification' do
|
23
23
|
set = Norikra::FieldSet.new({'x' => 'string', 'y' => 'long'}, false)
|
24
|
-
expect(set.fields['x'].optional?).to
|
25
|
-
expect(set.fields['y'].optional?).to
|
24
|
+
expect(set.fields['x'].optional?).to be_falsy
|
25
|
+
expect(set.fields['y'].optional?).to be_falsy
|
26
26
|
|
27
27
|
set = Norikra::FieldSet.new({'x' => 'string', 'y' => 'long'}, true)
|
28
|
-
expect(set.fields['x'].optional?).to
|
29
|
-
expect(set.fields['y'].optional?).to
|
28
|
+
expect(set.fields['x'].optional?).to be_truthy
|
29
|
+
expect(set.fields['y'].optional?).to be_truthy
|
30
30
|
end
|
31
31
|
|
32
32
|
it 'sets summary as comma-separated labeled field-type string with sorted field order' do
|
@@ -57,11 +57,11 @@ describe Norikra::FieldSet do
|
|
57
57
|
expect(q_set1.dup.instance_eval{ @query_unique_keys }).to eql(['set1', 'g1'])
|
58
58
|
expect(q_set2.dup.instance_eval{ @query_unique_keys }).to eql(['set2', nil])
|
59
59
|
|
60
|
-
expect(q_set2 == q_set3).to
|
60
|
+
expect(q_set2 == q_set3).to be_falsy
|
61
61
|
|
62
|
-
expect(q_set1 == q_set1.dup).to
|
63
|
-
expect(q_set2 == q_set2.dup).to
|
64
|
-
expect(q_set3 == q_set3.dup).to
|
62
|
+
expect(q_set1 == q_set1.dup).to be_truthy
|
63
|
+
expect(q_set2 == q_set2.dup).to be_truthy
|
64
|
+
expect(q_set3 == q_set3.dup).to be_truthy
|
65
65
|
end
|
66
66
|
end
|
67
67
|
|
@@ -246,13 +246,13 @@ describe Norikra::FieldSet do
|
|
246
246
|
describe '#subset?' do
|
247
247
|
it 'returns true when other instance has all fields of self' do
|
248
248
|
other = Norikra::FieldSet.new({'a' => 'boolean', 'x' => 'string'})
|
249
|
-
expect(set.subset?(other)).to
|
249
|
+
expect(set.subset?(other)).to be_falsy
|
250
250
|
|
251
251
|
other.update([Norikra::Field.new('y', 'long')], false)
|
252
|
-
expect(set.subset?(other)).to
|
252
|
+
expect(set.subset?(other)).to be_truthy
|
253
253
|
|
254
254
|
other.update([Norikra::Field.new('z', 'double')], false)
|
255
|
-
expect(set.subset?(other)).to
|
255
|
+
expect(set.subset?(other)).to be_truthy
|
256
256
|
end
|
257
257
|
end
|
258
258
|
|
data/spec/output_pool_spec.rb
CHANGED
@@ -25,7 +25,7 @@ describe Norikra::OutputPool do
|
|
25
25
|
t = Time.now.to_i
|
26
26
|
pool.push('TestTable query1',nil,[[t, {'count'=>1}],[t ,{'count'=>2}]])
|
27
27
|
|
28
|
-
pool.pool.keys.
|
28
|
+
expect(pool.pool.keys).to eql(['TestTable query1'])
|
29
29
|
events = pool.pool['TestTable query1']
|
30
30
|
|
31
31
|
expect(events.size).to eq(1) # pool event bucket size is equal to times of #push
|
data/spec/query_spec.rb
CHANGED
@@ -22,7 +22,7 @@ describe Norikra::Query do
|
|
22
22
|
expect(q.fields('TestTable')).to eql(['param','path','size'].sort)
|
23
23
|
expect(q.fields(nil)).to eql([])
|
24
24
|
|
25
|
-
expect(q.invalid?).to
|
25
|
+
expect(q.invalid?).to be_falsy
|
26
26
|
end
|
27
27
|
end
|
28
28
|
|
@@ -89,7 +89,7 @@ describe Norikra::Query do
|
|
89
89
|
expect(q.fields('TestTable')).to eql([])
|
90
90
|
expect(q.fields(nil)).to eql([])
|
91
91
|
|
92
|
-
expect(q.invalid?).to
|
92
|
+
expect(q.invalid?).to be_falsy
|
93
93
|
end
|
94
94
|
end
|
95
95
|
|
@@ -108,7 +108,7 @@ describe Norikra::Query do
|
|
108
108
|
expect(q.fields('TestTable')).to eql(['name.string', 'param','path','size'].sort)
|
109
109
|
expect(q.fields(nil)).to eql([])
|
110
110
|
|
111
|
-
expect(q.invalid?).to
|
111
|
+
expect(q.invalid?).to be_falsy
|
112
112
|
end
|
113
113
|
end
|
114
114
|
|
@@ -127,7 +127,7 @@ describe Norikra::Query do
|
|
127
127
|
expect(q.fields('TestTable')).to eql(['path', 'size'].sort)
|
128
128
|
expect(q.fields(nil)).to eql([])
|
129
129
|
|
130
|
-
expect(q.invalid?).to
|
130
|
+
expect(q.invalid?).to be_falsy
|
131
131
|
end
|
132
132
|
end
|
133
133
|
|
@@ -146,7 +146,7 @@ describe Norikra::Query do
|
|
146
146
|
expect(q.fields('StreamB')).to eql(['size','header'].sort)
|
147
147
|
expect(q.fields(nil)).to eql(['product'])
|
148
148
|
|
149
|
-
expect(q.invalid?).to
|
149
|
+
expect(q.invalid?).to be_falsy
|
150
150
|
end
|
151
151
|
|
152
152
|
it 'returns query instances collectly parsed, with field accessing views' do
|
@@ -163,7 +163,7 @@ describe Norikra::Query do
|
|
163
163
|
expect(q.fields('StreamB')).to eql(['size','header','ts2'].sort)
|
164
164
|
expect(q.fields(nil)).to eql(['product'])
|
165
165
|
|
166
|
-
expect(q.invalid?).to
|
166
|
+
expect(q.invalid?).to be_falsy
|
167
167
|
end
|
168
168
|
end
|
169
169
|
|
@@ -182,7 +182,7 @@ describe Norikra::Query do
|
|
182
182
|
expect(q.fields('Zones')).to eql(['name','zoneName','zoneId'].sort)
|
183
183
|
expect(q.fields(nil)).to eql([])
|
184
184
|
|
185
|
-
expect(q.invalid?).to
|
185
|
+
expect(q.invalid?).to be_falsy
|
186
186
|
end
|
187
187
|
end
|
188
188
|
|
@@ -201,7 +201,7 @@ describe Norikra::Query do
|
|
201
201
|
expect(q.fields('Zones')).to eql(['name','zoneName','zoneId'].sort)
|
202
202
|
expect(q.fields(nil)).to eql([])
|
203
203
|
|
204
|
-
expect(q.invalid?).to
|
204
|
+
expect(q.invalid?).to be_falsy
|
205
205
|
end
|
206
206
|
end
|
207
207
|
|
@@ -220,7 +220,7 @@ describe Norikra::Query do
|
|
220
220
|
expect(q.fields('SMA20Stream')).to eql(['movAgv','ticker'].sort)
|
221
221
|
expect(q.fields(nil)).to eql([])
|
222
222
|
|
223
|
-
expect(q.invalid?).to
|
223
|
+
expect(q.invalid?).to be_falsy
|
224
224
|
end
|
225
225
|
end
|
226
226
|
|
@@ -239,7 +239,7 @@ describe Norikra::Query do
|
|
239
239
|
expect(q.fields('TestTable')).to eql(['params.path', 'size', 'opts.$0'].sort)
|
240
240
|
expect(q.fields(nil)).to eql([])
|
241
241
|
|
242
|
-
expect(q.invalid?).to
|
242
|
+
expect(q.invalid?).to be_falsy
|
243
243
|
end
|
244
244
|
end
|
245
245
|
|
@@ -258,7 +258,7 @@ describe Norikra::Query do
|
|
258
258
|
expect(q.fields('TestTable')).to eql(['params.$$path.$1', 'size.$0.bytes', 'opts.num.$0'].sort)
|
259
259
|
expect(q.fields(nil)).to eql([])
|
260
260
|
|
261
|
-
expect(q.invalid?).to
|
261
|
+
expect(q.invalid?).to be_falsy
|
262
262
|
end
|
263
263
|
|
264
264
|
it 'can parse with nested function calls correctly' do
|
@@ -272,7 +272,7 @@ describe Norikra::Query do
|
|
272
272
|
q = Norikra::Query.new(:name => 'TestTable query8.2', :expression => expression)
|
273
273
|
expect(q.fields).to eql(['path.f1'])
|
274
274
|
|
275
|
-
expect(q.invalid?).to
|
275
|
+
expect(q.invalid?).to be_falsy
|
276
276
|
end
|
277
277
|
end
|
278
278
|
|
@@ -284,7 +284,7 @@ describe Norikra::Query do
|
|
284
284
|
expect(q.fields('TestTable')).to eql(['path.source', 'ts'].sort)
|
285
285
|
expect(q.fields(nil)).to eql([])
|
286
286
|
|
287
|
-
expect(q.invalid?).to
|
287
|
+
expect(q.invalid?).to be_falsy
|
288
288
|
end
|
289
289
|
end
|
290
290
|
|
@@ -304,7 +304,7 @@ describe Norikra::Query do
|
|
304
304
|
expect(q.fields('EventA')).to eql(['name', 'content', 'type', 'source'].sort)
|
305
305
|
expect(q.fields(nil)).to eql([])
|
306
306
|
|
307
|
-
expect(q.invalid?).to
|
307
|
+
expect(q.invalid?).to be_falsy
|
308
308
|
end
|
309
309
|
end
|
310
310
|
|
@@ -314,7 +314,7 @@ describe Norikra::Query do
|
|
314
314
|
q = Norikra::Query.new(
|
315
315
|
name: 'Invalid query 1', expression: expression
|
316
316
|
)
|
317
|
-
expect(q.invalid?).to
|
317
|
+
expect(q.invalid?).to be_truthy
|
318
318
|
end
|
319
319
|
end
|
320
320
|
end
|
@@ -340,11 +340,11 @@ describe Norikra::Query do
|
|
340
340
|
|
341
341
|
describe '.stdout?' do
|
342
342
|
it 'returns true if group name is "STDOUT()"' do
|
343
|
-
expect(Norikra::Query.stdout?(nil)).to
|
344
|
-
expect(Norikra::Query.stdout?("")).to
|
345
|
-
expect(Norikra::Query.stdout?("foo")).to
|
346
|
-
expect(Norikra::Query.stdout?("STDOUT")).to
|
347
|
-
expect(Norikra::Query.stdout?("STDOUT()")).to
|
343
|
+
expect(Norikra::Query.stdout?(nil)).to be_falsy
|
344
|
+
expect(Norikra::Query.stdout?("")).to be_falsy
|
345
|
+
expect(Norikra::Query.stdout?("foo")).to be_falsy
|
346
|
+
expect(Norikra::Query.stdout?("STDOUT")).to be_falsy
|
347
|
+
expect(Norikra::Query.stdout?("STDOUT()")).to be_truthy
|
348
348
|
end
|
349
349
|
end
|
350
350
|
|
@@ -376,7 +376,7 @@ describe Norikra::Query do
|
|
376
376
|
it 'returns false, always' do
|
377
377
|
e1 = 'SELECT max(num) AS max FROM TestTable1.win:time(5 sec)'
|
378
378
|
q1 = Norikra::Query.new(:name => 'q1', :group => nil, :expression => e1)
|
379
|
-
expect(q1.suspended?).to
|
379
|
+
expect(q1.suspended?).to be_falsy
|
380
380
|
end
|
381
381
|
end
|
382
382
|
|
@@ -743,22 +743,20 @@ describe Norikra::Query do
|
|
743
743
|
|
744
744
|
describe '.imported_java_class?' do
|
745
745
|
it 'can do judge passed name exists under java package tree or not' do
|
746
|
-
expect(Norikra::Query.imported_java_class?('String')).to
|
747
|
-
expect(Norikra::Query.imported_java_class?('Long')).to
|
748
|
-
expect(Norikra::Query.imported_java_class?('Void')).to
|
749
|
-
expect(Norikra::Query.imported_java_class?('BigDecimal')).to
|
750
|
-
expect(Norikra::Query.imported_java_class?('Format')).to
|
751
|
-
expect(Norikra::Query.imported_java_class?('Normalizer')).to
|
752
|
-
expect(Norikra::Query.imported_java_class?('Date')).to
|
753
|
-
expect(Norikra::Query.imported_java_class?('HashSet')).to
|
754
|
-
expect(Norikra::Query.imported_java_class?('Random')).to
|
755
|
-
expect(Norikra::Query.imported_java_class?('Timer')).to
|
756
|
-
|
757
|
-
expect(Norikra::Query.imported_java_class?('unexpected')).to
|
758
|
-
expect(Norikra::Query.imported_java_class?('parameter')).to
|
759
|
-
expect(Norikra::Query.imported_java_class?('param')).to
|
746
|
+
expect(Norikra::Query.imported_java_class?('String')).to be_truthy
|
747
|
+
expect(Norikra::Query.imported_java_class?('Long')).to be_truthy
|
748
|
+
expect(Norikra::Query.imported_java_class?('Void')).to be_truthy
|
749
|
+
expect(Norikra::Query.imported_java_class?('BigDecimal')).to be_truthy
|
750
|
+
expect(Norikra::Query.imported_java_class?('Format')).to be_truthy
|
751
|
+
expect(Norikra::Query.imported_java_class?('Normalizer')).to be_truthy
|
752
|
+
expect(Norikra::Query.imported_java_class?('Date')).to be_truthy
|
753
|
+
expect(Norikra::Query.imported_java_class?('HashSet')).to be_truthy
|
754
|
+
expect(Norikra::Query.imported_java_class?('Random')).to be_truthy
|
755
|
+
expect(Norikra::Query.imported_java_class?('Timer')).to be_truthy
|
756
|
+
|
757
|
+
expect(Norikra::Query.imported_java_class?('unexpected')).to be_falsy
|
758
|
+
expect(Norikra::Query.imported_java_class?('parameter')).to be_falsy
|
759
|
+
expect(Norikra::Query.imported_java_class?('param')).to be_falsy
|
760
760
|
end
|
761
761
|
end
|
762
762
|
end
|
763
|
-
|
764
|
-
#TODO: write specs about Norikra::SuspendedQuery
|
@@ -0,0 +1,58 @@
|
|
1
|
+
require_relative './spec_helper'
|
2
|
+
|
3
|
+
require 'norikra/suspended_query'
|
4
|
+
require 'norikra/query'
|
5
|
+
|
6
|
+
include Norikra::SpecHelper
|
7
|
+
|
8
|
+
describe Norikra::SuspendedQuery do
|
9
|
+
context 'when instanciate' do
|
10
|
+
describe '#initialize' do
|
11
|
+
it 'get query and just store its attributes' do
|
12
|
+
q1 = Norikra::Query.new(name: 'name1', group: nil, expression: 'SELECT n,m FROM t')
|
13
|
+
s1 = Norikra::SuspendedQuery.new(q1)
|
14
|
+
expect(s1.name).to eql(q1.name)
|
15
|
+
expect(s1.group).to eql(q1.group)
|
16
|
+
expect(s1.expression).to eql(q1.expression)
|
17
|
+
expect(s1.targets).to eql(q1.targets)
|
18
|
+
|
19
|
+
expect(q1.suspended?).to be_falsy
|
20
|
+
expect(s1.suspended?).to be_truthy
|
21
|
+
|
22
|
+
q2 = Norikra::Query.new(name: 'name2', group: 'testing', expression: 'SELECT n,m,q.a FROM t, q')
|
23
|
+
s2 = Norikra::SuspendedQuery.new(q2)
|
24
|
+
expect(s2.name).to eql(q2.name)
|
25
|
+
expect(s2.group).to eql(q2.group)
|
26
|
+
expect(s2.expression).to eql(q2.expression)
|
27
|
+
expect(s2.targets).to eql(q2.targets)
|
28
|
+
|
29
|
+
expect(q2.suspended?).to be_falsy
|
30
|
+
expect(s2.suspended?).to be_truthy
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
describe '.<=>' do
|
35
|
+
it 'returns sort order by group,name' do
|
36
|
+
q1 = Norikra::Query.new(:name => '211', :group => 'a1', :expression => 'select x from y')
|
37
|
+
q2 = Norikra::SuspendedQuery.new(Norikra::Query.new(:name => '111', :group => 'a1', :expression => 'select x from y'))
|
38
|
+
q3 = Norikra::Query.new(:name => '011', :group => 'b1', :expression => 'select x from y')
|
39
|
+
q4 = Norikra::Query.new(:name => '011', :group => 'a1', :expression => 'select x from y')
|
40
|
+
q5 = Norikra::SuspendedQuery.new(Norikra::Query.new(:name => '999', :group => nil, :expression => 'select x from y'))
|
41
|
+
q6 = Norikra::Query.new(:name => '899', :group => nil, :expression => 'select x from y')
|
42
|
+
|
43
|
+
expect([q1,q2,q3,q4,q5,q6].sort).to eql([q6,q5,q4,q2,q1,q3])
|
44
|
+
end
|
45
|
+
|
46
|
+
it 'must be stable for sort' do
|
47
|
+
q1 = Norikra::Query.new(name: "hoge", group: nil, expression: "select hoge from pos")
|
48
|
+
s1 = Norikra::SuspendedQuery.new(q1)
|
49
|
+
q2 = Norikra::Query.new(name: "test1", group: nil, expression: "select hoge,count(*)\r\nfrom pos\r\nwhere age >= 20\r\ngroup by hoge")
|
50
|
+
s2 = Norikra::SuspendedQuery.new(q2)
|
51
|
+
q3 = Norikra::Query.new(name: "test2", group: "sweep1", expression: "select moge\r\nfrom pos.win:time_batch(5 sec)\r\nwhere x=1\r\n")
|
52
|
+
s3 = Norikra::SuspendedQuery.new(q3)
|
53
|
+
expect([s1,s2,s3].sort).to eql([s1, s2, s3])
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
end
|
58
|
+
end
|
data/spec/target_spec.rb
CHANGED
@@ -6,19 +6,19 @@ require 'norikra/target'
|
|
6
6
|
describe Norikra::Target do
|
7
7
|
describe '.valid?' do
|
8
8
|
it 'raises Norikra::ArgumentError for invalid name' do
|
9
|
-
expect(Norikra::Target.valid?('foobar')).to
|
10
|
-
expect(Norikra::Target.valid?('FooBar')).to
|
11
|
-
expect(Norikra::Target.valid?('foo_bar')).to
|
12
|
-
expect(Norikra::Target.valid?('foo_bar_baz')).to
|
9
|
+
expect(Norikra::Target.valid?('foobar')).to be_truthy
|
10
|
+
expect(Norikra::Target.valid?('FooBar')).to be_truthy
|
11
|
+
expect(Norikra::Target.valid?('foo_bar')).to be_truthy
|
12
|
+
expect(Norikra::Target.valid?('foo_bar_baz')).to be_truthy
|
13
13
|
|
14
|
-
expect(Norikra::Target.valid?('')).to
|
15
|
-
expect(Norikra::Target.valid?('.')).to
|
16
|
-
expect(Norikra::Target.valid?('_')).to
|
17
|
-
expect(Norikra::Target.valid?('_a_')).to
|
18
|
-
expect(Norikra::Target.valid?('foo_')).to
|
19
|
-
expect(Norikra::Target.valid?('_Foo')).to
|
20
|
-
expect(Norikra::Target.valid?('foo bar')).to
|
21
|
-
expect(Norikra::Target.valid?('_Foo')).to
|
14
|
+
expect(Norikra::Target.valid?('')).to be_falsy
|
15
|
+
expect(Norikra::Target.valid?('.')).to be_falsy
|
16
|
+
expect(Norikra::Target.valid?('_')).to be_falsy
|
17
|
+
expect(Norikra::Target.valid?('_a_')).to be_falsy
|
18
|
+
expect(Norikra::Target.valid?('foo_')).to be_falsy
|
19
|
+
expect(Norikra::Target.valid?('_Foo')).to be_falsy
|
20
|
+
expect(Norikra::Target.valid?('foo bar')).to be_falsy
|
21
|
+
expect(Norikra::Target.valid?('_Foo')).to be_falsy
|
22
22
|
end
|
23
23
|
end
|
24
24
|
|
@@ -29,14 +29,14 @@ describe Norikra::Target do
|
|
29
29
|
t3 = Norikra::Target.new("target3")
|
30
30
|
tt = Norikra::Target.new("target1")
|
31
31
|
|
32
|
-
expect(t1 == tt).to
|
33
|
-
expect(t2 == tt).to
|
34
|
-
expect(t3 == tt).to
|
32
|
+
expect(t1 == tt).to be_truthy
|
33
|
+
expect(t2 == tt).to be_falsy
|
34
|
+
expect(t3 == tt).to be_falsy
|
35
35
|
|
36
|
-
expect([t1, t2, t3].include?(tt)).to
|
37
|
-
expect([t2, t3].include?(tt)).to
|
36
|
+
expect([t1, t2, t3].include?(tt)).to be_truthy
|
37
|
+
expect([t2, t3].include?(tt)).to be_falsy
|
38
38
|
|
39
|
-
expect([t1, t2, t3].include?("target1")).to
|
39
|
+
expect([t1, t2, t3].include?("target1")).to be_truthy
|
40
40
|
end
|
41
41
|
end
|
42
42
|
end
|
@@ -11,7 +11,7 @@ describe Norikra::TypedefManager do
|
|
11
11
|
|
12
12
|
describe '#lazy?' do
|
13
13
|
it 'returns true' do
|
14
|
-
expect(manager.lazy?('sample')).to
|
14
|
+
expect(manager.lazy?('sample')).to be_truthy
|
15
15
|
end
|
16
16
|
end
|
17
17
|
|
@@ -21,11 +21,11 @@ describe Norikra::TypedefManager do
|
|
21
21
|
expect(r).to be_instance_of(Norikra::FieldSet)
|
22
22
|
|
23
23
|
expect(r.fields['a'].type).to eql('string')
|
24
|
-
expect(r.fields['a'].optional?).to
|
24
|
+
expect(r.fields['a'].optional?).to be_falsy
|
25
25
|
expect(r.fields['b'].type).to eql('string')
|
26
|
-
expect(r.fields['b'].optional?).to
|
26
|
+
expect(r.fields['b'].optional?).to be_falsy
|
27
27
|
expect(r.fields['x'].type).to eql('string')
|
28
|
-
expect(r.fields['x'].optional?).to
|
28
|
+
expect(r.fields['x'].optional?).to be_falsy
|
29
29
|
end
|
30
30
|
end
|
31
31
|
|
@@ -33,7 +33,7 @@ describe Norikra::TypedefManager do
|
|
33
33
|
it 'does not fail, and target will become non-lazy status' do
|
34
34
|
r = manager.generate_base_fieldset('sample', {'a'=>'foo','b'=>'bar','x'=>'yeeeees!'})
|
35
35
|
manager.activate('sample', r)
|
36
|
-
expect(manager.lazy?('sample')).to
|
36
|
+
expect(manager.lazy?('sample')).to be_falsy
|
37
37
|
end
|
38
38
|
end
|
39
39
|
end
|
@@ -48,23 +48,23 @@ describe Norikra::TypedefManager do
|
|
48
48
|
|
49
49
|
it 'three fields are defined as non-optional fields' do
|
50
50
|
expect(manager.typedefs['sample'].fields['a'].type).to eql('string')
|
51
|
-
expect(manager.typedefs['sample'].fields['a'].optional?).to
|
51
|
+
expect(manager.typedefs['sample'].fields['a'].optional?).to be_falsy
|
52
52
|
expect(manager.typedefs['sample'].fields['b'].type).to eql('string')
|
53
|
-
expect(manager.typedefs['sample'].fields['b'].optional?).to
|
53
|
+
expect(manager.typedefs['sample'].fields['b'].optional?).to be_falsy
|
54
54
|
expect(manager.typedefs['sample'].fields['c'].type).to eql('float')
|
55
|
-
expect(manager.typedefs['sample'].fields['c'].optional?).to
|
55
|
+
expect(manager.typedefs['sample'].fields['c'].optional?).to be_falsy
|
56
56
|
end
|
57
57
|
|
58
58
|
describe '#lazy?' do
|
59
59
|
it 'returns false' do
|
60
|
-
expect(manager.lazy?('sample')).to
|
60
|
+
expect(manager.lazy?('sample')).to be_falsy
|
61
61
|
end
|
62
62
|
end
|
63
63
|
describe '#reserve' do
|
64
64
|
it 'does not fail' do
|
65
65
|
manager.reserve('sample', 'x', 'long')
|
66
66
|
expect(manager.typedefs['sample'].fields['x'].type).to eql('integer')
|
67
|
-
expect(manager.typedefs['sample'].fields['x'].optional?).to
|
67
|
+
expect(manager.typedefs['sample'].fields['x'].optional?).to be_truthy
|
68
68
|
end
|
69
69
|
end
|
70
70
|
|
@@ -72,25 +72,25 @@ describe Norikra::TypedefManager do
|
|
72
72
|
context 'with query with single target' do
|
73
73
|
it 'returns boolean which matches target or not' do
|
74
74
|
q1 = Norikra::Query.new(:name => 'test', :expression => 'select a from sample.win:time(5 sec) where c > 1.0 and z')
|
75
|
-
expect(manager.ready?(q1)).to
|
75
|
+
expect(manager.ready?(q1)).to be_truthy
|
76
76
|
q2 = Norikra::Query.new(:name => 'test', :expression => 'select a from sample.win:time(5 sec) where c > 1.0 and d > 2.0')
|
77
|
-
expect(manager.ready?(q2)).to
|
77
|
+
expect(manager.ready?(q2)).to be_falsy
|
78
78
|
q3 = Norikra::Query.new(:name => 'test', :expression => 'select a from sample2.win:time(5 sec) where c > 1.0 and d > 2.0')
|
79
|
-
expect(manager.ready?(q3)).to
|
79
|
+
expect(manager.ready?(q3)).to be_falsy
|
80
80
|
end
|
81
81
|
end
|
82
82
|
|
83
83
|
context 'with query with multi targets, including unexisting target' do
|
84
84
|
it 'returns false' do
|
85
85
|
q = Norikra::Query.new(:name => 'test', :expression => 'select x.a,y.a from sample.win:time(5 sec) as x, sample2.win:time(5 sec) as y where x.c > 1.0 and y.d > 1.0')
|
86
|
-
expect(manager.ready?(q)).to
|
86
|
+
expect(manager.ready?(q)).to be_falsy
|
87
87
|
end
|
88
88
|
end
|
89
89
|
|
90
90
|
context 'with query with multi targets, all of them are exisitng' do
|
91
91
|
it 'returns true' do
|
92
92
|
q = Norikra::Query.new(:name => 'test', :expression => 'select x.a,d from sample.win:time(5 sec) as x, sample_next.win:time(5 sec) as y where x.c > 1.0 and y.d > 1.0')
|
93
|
-
expect(manager.ready?(q)).to
|
93
|
+
expect(manager.ready?(q)).to be_truthy
|
94
94
|
end
|
95
95
|
end
|
96
96
|
end
|
@@ -161,10 +161,10 @@ describe Norikra::TypedefManager do
|
|
161
161
|
manager.bind_fieldset('sample', :query, set_query_base)
|
162
162
|
expect(set_query_base.target).to eql('sample')
|
163
163
|
expect(set_query_base.level).to eql(:query)
|
164
|
-
expect(manager.typedefs['sample'].queryfieldsets.include?(set_query_base)).to
|
164
|
+
expect(manager.typedefs['sample'].queryfieldsets.include?(set_query_base)).to be_truthy
|
165
165
|
|
166
166
|
manager.unbind_fieldset('sample', :query, set_query_base)
|
167
|
-
expect(manager.typedefs['sample'].queryfieldsets.include?(set_query_base)).to
|
167
|
+
expect(manager.typedefs['sample'].queryfieldsets.include?(set_query_base)).to be_falsy
|
168
168
|
end
|
169
169
|
end
|
170
170
|
|
@@ -192,9 +192,9 @@ describe Norikra::TypedefManager do
|
|
192
192
|
|
193
193
|
list = manager.subsets('sample', Norikra::FieldSet.new(base.merge({'d'=>'string','e'=>'string','g'=>'string'})))
|
194
194
|
expect(list.size).to eql(3) # set_d, set_e, baseset
|
195
|
-
expect(list.include?(set_d)).to
|
196
|
-
expect(list.include?(set_e)).to
|
197
|
-
expect(list.include?(set_f)).to
|
195
|
+
expect(list.include?(set_d)).to be_truthy
|
196
|
+
expect(list.include?(set_e)).to be_truthy
|
197
|
+
expect(list.include?(set_f)).to be_falsy
|
198
198
|
end
|
199
199
|
end
|
200
200
|
|
@@ -210,9 +210,9 @@ describe Norikra::TypedefManager do
|
|
210
210
|
|
211
211
|
list = manager.supersets('sample', Norikra::FieldSet.new({'one'=>'int','three'=>'double'}))
|
212
212
|
expect(list.size).to eql(2) # set_x, set_z
|
213
|
-
expect(list.include?(set_x)).to
|
214
|
-
expect(list.include?(set_y)).to
|
215
|
-
expect(list.include?(set_z)).to
|
213
|
+
expect(list.include?(set_x)).to be_truthy
|
214
|
+
expect(list.include?(set_y)).to be_falsy
|
215
|
+
expect(list.include?(set_z)).to be_truthy
|
216
216
|
end
|
217
217
|
end
|
218
218
|
|
data/spec/typedef_spec.rb
CHANGED
@@ -23,7 +23,7 @@ describe Norikra::Typedef do
|
|
23
23
|
describe '#lazy?' do
|
24
24
|
it 'returns true' do
|
25
25
|
t = Norikra::Typedef.new
|
26
|
-
expect(t.lazy?).to
|
26
|
+
expect(t.lazy?).to be_truthy
|
27
27
|
end
|
28
28
|
end
|
29
29
|
|
@@ -33,11 +33,11 @@ describe Norikra::Typedef do
|
|
33
33
|
|
34
34
|
t.reserve('k', 'string')
|
35
35
|
expect(t.fields['k'].type).to eql('string')
|
36
|
-
expect(t.fields['k'].optional?).to
|
36
|
+
expect(t.fields['k'].optional?).to be_truthy
|
37
37
|
|
38
38
|
t.reserve('l', 'long', false)
|
39
39
|
expect(t.fields['l'].type).to eql('integer')
|
40
|
-
expect(t.fields['l'].optional?).to
|
40
|
+
expect(t.fields['l'].optional?).to be_falsy
|
41
41
|
end
|
42
42
|
|
43
43
|
it 'remove waiting field' do
|
@@ -60,7 +60,7 @@ describe Norikra::Typedef do
|
|
60
60
|
set.level = :base
|
61
61
|
t.activate(set)
|
62
62
|
expect(t.fields.size).to eql(3)
|
63
|
-
expect(t.fields['a'].optional?).to
|
63
|
+
expect(t.fields['a'].optional?).to be_falsy
|
64
64
|
expect(t.fields.object_id).not_to eql(set.fields.object_id)
|
65
65
|
expect(t.baseset.object_id).not_to eql(set.object_id)
|
66
66
|
end
|
@@ -105,10 +105,10 @@ describe Norikra::Typedef do
|
|
105
105
|
t = Norikra::Typedef.new({'a' => 'string', 'b' => 'long'})
|
106
106
|
|
107
107
|
expect(t.fields['a'].type).to eql('string')
|
108
|
-
expect(t.fields['a'].optional?).to
|
108
|
+
expect(t.fields['a'].optional?).to be_falsy
|
109
109
|
|
110
110
|
expect(t.fields['b'].type).to eql('integer')
|
111
|
-
expect(t.fields['b'].optional?).to
|
111
|
+
expect(t.fields['b'].optional?).to be_falsy
|
112
112
|
end
|
113
113
|
|
114
114
|
it 'has container fields with chained access fields' do
|
@@ -122,20 +122,20 @@ describe Norikra::Typedef do
|
|
122
122
|
describe '#lazy?' do
|
123
123
|
it 'returns false' do
|
124
124
|
t = Norikra::Typedef.new({'a' => 'string', 'b' => 'long'})
|
125
|
-
expect(t.lazy?).to
|
125
|
+
expect(t.lazy?).to be_falsy
|
126
126
|
end
|
127
127
|
end
|
128
128
|
|
129
129
|
describe '#field_defined?' do
|
130
130
|
it 'returns boolean to indicate all fields specified exists or not' do
|
131
131
|
t = Norikra::Typedef.new({'a' => 'string', 'b' => 'long'})
|
132
|
-
expect(t.field_defined?(['a','b'])).to
|
133
|
-
expect(t.field_defined?(['a'])).to
|
134
|
-
expect(t.field_defined?(['b'])).to
|
135
|
-
expect(t.field_defined?([])).to
|
136
|
-
expect(t.field_defined?(['a','b','c'])).to
|
137
|
-
expect(t.field_defined?(['a','c'])).to
|
138
|
-
expect(t.field_defined?(['c'])).to
|
132
|
+
expect(t.field_defined?(['a','b'])).to be_truthy
|
133
|
+
expect(t.field_defined?(['a'])).to be_truthy
|
134
|
+
expect(t.field_defined?(['b'])).to be_truthy
|
135
|
+
expect(t.field_defined?([])).to be_truthy
|
136
|
+
expect(t.field_defined?(['a','b','c'])).to be_falsy
|
137
|
+
expect(t.field_defined?(['a','c'])).to be_falsy
|
138
|
+
expect(t.field_defined?(['c'])).to be_falsy
|
139
139
|
end
|
140
140
|
end
|
141
141
|
|
@@ -148,12 +148,12 @@ describe Norikra::Typedef do
|
|
148
148
|
t.reserve('b', 'boolean', false)
|
149
149
|
expect(t.fields.size).to eql(2)
|
150
150
|
expect(t.fields['b'].type).to eql('boolean')
|
151
|
-
expect(t.fields['b'].optional?).to
|
151
|
+
expect(t.fields['b'].optional?).to be_falsy
|
152
152
|
|
153
153
|
t.reserve('c', 'double', true)
|
154
154
|
expect(t.fields.size).to eql(3)
|
155
155
|
expect(t.fields['c'].type).to eql('float')
|
156
|
-
expect(t.fields['c'].optional?).to
|
156
|
+
expect(t.fields['c'].optional?).to be_truthy
|
157
157
|
end
|
158
158
|
end
|
159
159
|
|
@@ -163,16 +163,16 @@ describe Norikra::Typedef do
|
|
163
163
|
t = Norikra::Typedef.new({'a' => 'string', 'b' => 'long'})
|
164
164
|
|
165
165
|
set = Norikra::FieldSet.new({'a' => 'string', 'b' => 'long'})
|
166
|
-
expect(t.consistent?(set)).to
|
166
|
+
expect(t.consistent?(set)).to be_truthy
|
167
167
|
|
168
168
|
set = Norikra::FieldSet.new({'a' => 'string', 'b' => 'long', 'c' => 'double'})
|
169
|
-
expect(t.consistent?(set)).to
|
169
|
+
expect(t.consistent?(set)).to be_truthy
|
170
170
|
|
171
171
|
set = Norikra::FieldSet.new({'a' => 'string', 'b' => 'int'})
|
172
|
-
expect(t.consistent?(set)).to
|
172
|
+
expect(t.consistent?(set)).to be_truthy
|
173
173
|
|
174
174
|
set = Norikra::FieldSet.new({'a' => 'string'})
|
175
|
-
expect(t.consistent?(set)).to
|
175
|
+
expect(t.consistent?(set)).to be_falsy
|
176
176
|
end
|
177
177
|
end
|
178
178
|
|
@@ -183,19 +183,19 @@ describe Norikra::Typedef do
|
|
183
183
|
t.reserve('d', 'boolean', true) # optional
|
184
184
|
|
185
185
|
set = Norikra::FieldSet.new({'a' => 'string', 'b' => 'long'})
|
186
|
-
expect(t.consistent?(set)).to
|
186
|
+
expect(t.consistent?(set)).to be_falsy
|
187
187
|
|
188
188
|
set = Norikra::FieldSet.new({'a' => 'string', 'b' => 'long', 'c' => 'double'})
|
189
|
-
expect(t.consistent?(set)).to
|
189
|
+
expect(t.consistent?(set)).to be_truthy
|
190
190
|
|
191
191
|
set = Norikra::FieldSet.new({'a' => 'string', 'b' => 'long', 'c' => 'double', 'd' => 'boolean'})
|
192
|
-
expect(t.consistent?(set)).to
|
192
|
+
expect(t.consistent?(set)).to be_truthy
|
193
193
|
|
194
194
|
set = Norikra::FieldSet.new({'a' => 'string', 'b' => 'long', 'c' => 'double', 'd' => 'string'})
|
195
|
-
expect(t.consistent?(set)).to
|
195
|
+
expect(t.consistent?(set)).to be_falsy
|
196
196
|
|
197
197
|
set = Norikra::FieldSet.new({'a' => 'string', 'b' => 'long', 'c' => 'double', 'd' => 'boolean', 'e' => 'string'})
|
198
|
-
expect(t.consistent?(set)).to
|
198
|
+
expect(t.consistent?(set)).to be_truthy
|
199
199
|
end
|
200
200
|
end
|
201
201
|
end
|
@@ -220,12 +220,12 @@ describe Norikra::Typedef do
|
|
220
220
|
t.push(:data, set_a)
|
221
221
|
expect(t.fields.size).to eql(3)
|
222
222
|
expect(t.fields['c'].type).to eql('float')
|
223
|
-
expect(t.fields['c'].optional?).to
|
223
|
+
expect(t.fields['c'].optional?).to be_truthy
|
224
224
|
|
225
225
|
t.push(:query, Norikra::FieldSet.new({'a'=>'string','b'=>'long','d'=>'string'}))
|
226
226
|
expect(t.fields.size).to eql(4)
|
227
227
|
expect(t.fields['d'].type).to eql('string')
|
228
|
-
expect(t.fields['d'].optional?).to
|
228
|
+
expect(t.fields['d'].optional?).to be_truthy
|
229
229
|
end
|
230
230
|
|
231
231
|
it 'deletes waiting fields' do
|
@@ -438,7 +438,7 @@ describe Norikra::Typedef do
|
|
438
438
|
t.reserve('d','double',true)
|
439
439
|
|
440
440
|
r = t.refer({'a'=>'hoge','b'=>'2000','c'=>'true','d'=>'3.14'})
|
441
|
-
expect(t.datafieldsets.include?(r)).to
|
441
|
+
expect(t.datafieldsets.include?(r)).to be_falsy
|
442
442
|
|
443
443
|
expect(r.fields['a'].type).to eql('string')
|
444
444
|
expect(r.fields['b'].type).to eql('integer')
|
@@ -451,7 +451,7 @@ describe Norikra::Typedef do
|
|
451
451
|
t = Norikra::Typedef.new({'a' => 'string', 'b' => 'long'})
|
452
452
|
|
453
453
|
r = t.refer({'a'=>'hoge','b'=>'2000','c'=>'true','d'=>'3.14'})
|
454
|
-
expect(t.datafieldsets.include?(r)).to
|
454
|
+
expect(t.datafieldsets.include?(r)).to be_falsy
|
455
455
|
|
456
456
|
expect(r.fields['a'].type).to eql('string')
|
457
457
|
expect(r.fields['b'].type).to eql('integer')
|
@@ -479,7 +479,7 @@ describe Norikra::Typedef do
|
|
479
479
|
t.reserve('d','double',true)
|
480
480
|
|
481
481
|
r = t.refer({'a'=>'hoge','b'=>'2000','c'=>'true','d'=>'3.14'}, true)
|
482
|
-
expect(t.datafieldsets.include?(r)).to
|
482
|
+
expect(t.datafieldsets.include?(r)).to be_falsy
|
483
483
|
|
484
484
|
expect(r.fields['a'].type).to eql('string')
|
485
485
|
expect(r.fields['b'].type).to eql('integer')
|
@@ -492,14 +492,14 @@ describe Norikra::Typedef do
|
|
492
492
|
t = Norikra::Typedef.new({'a' => 'string', 'b' => 'long'})
|
493
493
|
|
494
494
|
r1 = t.refer({'a'=>'hoge','b'=>'2000','c'=>'true','d'=>'3.14'}, true)
|
495
|
-
expect(t.datafieldsets.include?(r1)).to
|
495
|
+
expect(t.datafieldsets.include?(r1)).to be_falsy
|
496
496
|
|
497
497
|
expect(r1.fields['a'].type).to eql('string')
|
498
498
|
expect(r1.fields['b'].type).to eql('integer')
|
499
499
|
expect(r1.summary).to eql('a:string,b:integer')
|
500
500
|
|
501
501
|
r2 = t.refer({'a'=>'hoge','b'=>'2000','c'=>'true','d'=>'3.14', 'e' => 'yeeeeeees!'}, true)
|
502
|
-
expect(t.datafieldsets.include?(r2)).to
|
502
|
+
expect(t.datafieldsets.include?(r2)).to be_falsy
|
503
503
|
|
504
504
|
expect(r2.fields['a'].type).to eql('string')
|
505
505
|
expect(r2.fields['b'].type).to eql('integer')
|
@@ -511,7 +511,7 @@ describe Norikra::Typedef do
|
|
511
511
|
t.waiting_fields = ['d']
|
512
512
|
|
513
513
|
r1 = t.refer({'a'=>'hoge','b'=>'2000','c'=>'true','d'=>'3.14'}, true)
|
514
|
-
expect(t.datafieldsets.include?(r1)).to
|
514
|
+
expect(t.datafieldsets.include?(r1)).to be_falsy
|
515
515
|
|
516
516
|
expect(r1.fields['a'].type).to eql('string')
|
517
517
|
expect(r1.fields['b'].type).to eql('integer')
|
@@ -519,7 +519,7 @@ describe Norikra::Typedef do
|
|
519
519
|
expect(r1.summary).to eql('a:string,b:integer,d:string')
|
520
520
|
|
521
521
|
r2 = t.refer({'a'=>'hoge','b'=>'2000','c'=>'true','d'=>'3.14', 'e' => 'yeeeeeees!'}, true)
|
522
|
-
expect(t.datafieldsets.include?(r2)).to
|
522
|
+
expect(t.datafieldsets.include?(r2)).to be_falsy
|
523
523
|
|
524
524
|
expect(r2.fields['a'].type).to eql('string')
|
525
525
|
expect(r2.fields['b'].type).to eql('integer')
|
data/views/index.erb
CHANGED
@@ -66,7 +66,7 @@
|
|
66
66
|
<% if queries.size > 0 %>
|
67
67
|
<table class="table">
|
68
68
|
<tr>
|
69
|
-
<th>Group</th><th>Query name</th><th>Targets</th><th>Query</th><th style="text-align:right;">Events</th><th></th><th></th><th></th>
|
69
|
+
<th>Group</th><th>Query name</th><th>Targets</th><th></th><th>Query</th><th style="text-align:right;">Events</th><th></th><th></th><th></th>
|
70
70
|
</tr>
|
71
71
|
<% queries.each_with_index do |query, index| %>
|
72
72
|
<tr class="<%= query.suspended? ? "suspended" : "" %>">
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: norikra
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.1.
|
4
|
+
version: 1.1.2
|
5
5
|
platform: java
|
6
6
|
authors:
|
7
7
|
- TAGOMORI Satoshi
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-12-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: mizuno
|
@@ -154,14 +154,14 @@ dependencies:
|
|
154
154
|
name: rspec
|
155
155
|
version_requirements: !ruby/object:Gem::Requirement
|
156
156
|
requirements:
|
157
|
-
- -
|
157
|
+
- - '>='
|
158
158
|
- !ruby/object:Gem::Version
|
159
|
-
version: '
|
159
|
+
version: '0'
|
160
160
|
requirement: !ruby/object:Gem::Requirement
|
161
161
|
requirements:
|
162
|
-
- -
|
162
|
+
- - '>='
|
163
163
|
- !ruby/object:Gem::Version
|
164
|
-
version: '
|
164
|
+
version: '0'
|
165
165
|
prerelease: false
|
166
166
|
type: :development
|
167
167
|
- !ruby/object:Gem::Dependency
|
@@ -245,6 +245,7 @@ files:
|
|
245
245
|
- lib/norikra/rubyudf.rb
|
246
246
|
- lib/norikra/server.rb
|
247
247
|
- lib/norikra/stats.rb
|
248
|
+
- lib/norikra/suspended_query.rb
|
248
249
|
- lib/norikra/target.rb
|
249
250
|
- lib/norikra/typedef.rb
|
250
251
|
- lib/norikra/typedef_manager.rb
|
@@ -280,6 +281,7 @@ files:
|
|
280
281
|
- spec/query_spec.rb
|
281
282
|
- spec/spec_helper.rb
|
282
283
|
- spec/stats_spec.rb
|
284
|
+
- spec/suspended_query_spec.rb
|
283
285
|
- spec/target_spec.rb
|
284
286
|
- spec/typedef_manager_spec.rb
|
285
287
|
- spec/typedef_spec.rb
|
@@ -319,6 +321,7 @@ test_files:
|
|
319
321
|
- spec/query_spec.rb
|
320
322
|
- spec/spec_helper.rb
|
321
323
|
- spec/stats_spec.rb
|
324
|
+
- spec/suspended_query_spec.rb
|
322
325
|
- spec/target_spec.rb
|
323
326
|
- spec/typedef_manager_spec.rb
|
324
327
|
- spec/typedef_spec.rb
|