jubatus 0.4.1 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (43) hide show
  1. data/.gitignore +4 -1
  2. data/README.rst +1 -1
  3. data/Rakefile +8 -0
  4. data/VERSION +1 -1
  5. data/{test → integration_test}/jubatus_test/anomaly/test.rb +22 -23
  6. data/{test → integration_test}/jubatus_test/classifier/test.rb +10 -15
  7. data/integration_test/jubatus_test/clustering/test.rb +133 -0
  8. data/integration_test/jubatus_test/error/test.rb +51 -0
  9. data/{test → integration_test}/jubatus_test/graph/test.rb +15 -30
  10. data/integration_test/jubatus_test/nearest_neighbor/test.rb +86 -0
  11. data/integration_test/jubatus_test/recommender/test.rb +111 -0
  12. data/{test → integration_test}/jubatus_test/regression/test.rb +10 -15
  13. data/integration_test/jubatus_test/stat/test.rb +108 -0
  14. data/{test → integration_test}/jubatus_test/test_util.rb +1 -0
  15. data/jubatus.gemspec +1 -1
  16. data/lib/jubatus/anomaly/client.rb +34 -33
  17. data/lib/jubatus/anomaly/types.rb +30 -18
  18. data/lib/jubatus/classifier/client.rb +22 -28
  19. data/lib/jubatus/classifier/types.rb +56 -33
  20. data/lib/jubatus/clustering/client.rb +51 -0
  21. data/lib/jubatus/clustering/types.rb +44 -0
  22. data/lib/jubatus/common/client.rb +83 -0
  23. data/lib/jubatus/common/datum.rb +85 -0
  24. data/lib/jubatus/common/message_string_generator.rb +41 -0
  25. data/lib/jubatus/common/types.rb +247 -0
  26. data/lib/jubatus/common.rb +4 -0
  27. data/lib/jubatus/graph/client.rb +83 -60
  28. data/lib/jubatus/graph/types.rb +146 -85
  29. data/lib/jubatus/nearest_neighbor/client.rb +53 -0
  30. data/lib/jubatus/nearest_neighbor/types.rb +44 -0
  31. data/lib/jubatus/recommender/client.rb +50 -44
  32. data/lib/jubatus/recommender/types.rb +29 -26
  33. data/lib/jubatus/regression/client.rb +22 -28
  34. data/lib/jubatus/regression/types.rb +30 -18
  35. data/lib/jubatus/stat/client.rb +37 -38
  36. data/lib/jubatus/stat/types.rb +5 -4
  37. data/test/jubatus_test/common/client_test.rb +104 -0
  38. data/test/jubatus_test/common/datum_test.rb +43 -0
  39. data/test/jubatus_test/common/message_string_generator_test.rb +50 -0
  40. data/test/jubatus_test/common/types_test.rb +73 -0
  41. metadata +29 -16
  42. data/test/jubatus_test/recommender/test.rb +0 -122
  43. data/test/jubatus_test/stat/test.rb +0 -109
@@ -1,59 +1,58 @@
1
- # This file is auto-generated from stat.idl
1
+ # This file is auto-generated from stat.idl(0.4.5-347-g86989a6) with jenerator version 0.4.5-418-gd2d5f04/develop
2
2
  # *** DO NOT EDIT ***
3
3
 
4
4
  require 'rubygems'
5
5
  require 'msgpack/rpc'
6
+ require 'jubatus/common'
6
7
  require File.join(File.dirname(__FILE__), 'types')
7
8
 
8
9
  module Jubatus
10
+
9
11
  module Stat
10
12
  module Client
11
13
 
12
- class Stat
13
- def initialize(host, port)
14
- @cli = MessagePack::RPC::Client.new(host, port)
15
- end
16
- def get_client
17
- @cli
18
- end
19
- def get_config(name)
20
- @cli.call(:get_config, name)
21
- end
22
- def push(name, key, value)
23
- @cli.call(:push, name, key, value)
24
- end
25
- def sum(name, key)
26
- @cli.call(:sum, name, key)
14
+ class Stat < Jubatus::Common::ClientBase
15
+ include Jubatus::Common
16
+ def initialize(host, port, name, timeout_sec=10)
17
+ super
27
18
  end
28
- def stddev(name, key)
29
- @cli.call(:stddev, name, key)
30
- end
31
- def max(name, key)
32
- @cli.call(:max, name, key)
19
+
20
+ def push(key, value)
21
+ @jubatus_client.call("push", [key, value], TBool.new, [TString.new,
22
+ TFloat.new])
33
23
  end
34
- def min(name, key)
35
- @cli.call(:min, name, key)
24
+
25
+ def sum(key)
26
+ @jubatus_client.call("sum", [key], TFloat.new, [TString.new])
36
27
  end
37
- def entropy(name, key)
38
- @cli.call(:entropy, name, key)
28
+
29
+ def stddev(key)
30
+ @jubatus_client.call("stddev", [key], TFloat.new, [TString.new])
39
31
  end
40
- def moment(name, key, degree, center)
41
- @cli.call(:moment, name, key, degree, center)
32
+
33
+ def max(key)
34
+ @jubatus_client.call("max", [key], TFloat.new, [TString.new])
42
35
  end
43
- def clear(name)
44
- @cli.call(:clear, name)
36
+
37
+ def min(key)
38
+ @jubatus_client.call("min", [key], TFloat.new, [TString.new])
45
39
  end
46
- def save(name, id)
47
- @cli.call(:save, name, id)
40
+
41
+ def entropy(key)
42
+ @jubatus_client.call("entropy", [key], TFloat.new, [TString.new])
48
43
  end
49
- def load(name, id)
50
- @cli.call(:load, name, id)
44
+
45
+ def moment(key, degree, center)
46
+ @jubatus_client.call("moment", [key, degree, center], TFloat.new,
47
+ [TString.new, TInt.new(true, 4), TFloat.new])
51
48
  end
52
- def get_status(name)
53
- @cli.call(:get_status, name)
49
+
50
+ def clear
51
+ @jubatus_client.call("clear", [], TBool.new, [])
54
52
  end
55
53
  end
56
54
 
57
- end
58
- end
59
- end
55
+ end # Client
56
+ end # Stat
57
+
58
+ end # Jubatus
@@ -1,11 +1,12 @@
1
- # This file is auto-generated from stat.idl
1
+ # This file is auto-generated from stat.idl(0.4.5-347-g86989a6) with jenerator version 0.4.5-418-gd2d5f04/develop
2
2
  # *** DO NOT EDIT ***
3
3
 
4
4
  require 'rubygems'
5
5
  require 'msgpack/rpc'
6
+ require 'jubatus/common'
7
+
6
8
  module Jubatus
7
9
  module Stat
8
10
 
9
- end
10
- end
11
-
11
+ end # Stat
12
+ end # Jubatus
@@ -0,0 +1,104 @@
1
+ require 'test/unit'
2
+ require 'jubatus/common'
3
+ require 'msgpack/rpc'
4
+
5
+ module Jubatus
6
+ module Common
7
+
8
+ class DummyFuture
9
+ def initialize(result, error)
10
+ @result = result
11
+ @error = error
12
+ @handler = nil
13
+ end
14
+
15
+
16
+ def attach_error_handler(proc = nil, &block)
17
+ @handler = proc || block
18
+ end
19
+
20
+ def get
21
+ if @error
22
+ if @handler
23
+ @handler.call(@error, @result)
24
+ else
25
+ raise MessagePack::RPC::RPCError.create(@error, @result)
26
+ end
27
+ else
28
+ return @result
29
+ end
30
+ end
31
+ end
32
+
33
+ class DummyClient
34
+ def call_async_apply(method, args)
35
+ return send_request(method, args)
36
+ end
37
+ end
38
+
39
+ # When a given method is not supported, jubatus-rpc server returns error code 1
40
+ class AlwaysRaiseUnknownMethod < DummyClient
41
+ def send_request(method, args)
42
+ DummyFuture.new(nil, 1)
43
+ end
44
+ end
45
+
46
+ # When given arguments cannot be parsed, jubatus-rpc server returns error code 2
47
+ class AlwaysRaiseTypeMismatch < DummyClient
48
+ def send_request(method, args)
49
+ DummyFuture.new(nil, 2)
50
+ end
51
+ end
52
+
53
+ class AlwaysRaiseRemoteError < DummyClient
54
+ def send_request(method, args)
55
+ DummyFuture.new(nil, "error")
56
+ end
57
+ end
58
+
59
+ class Echo < DummyClient
60
+ def send_request(method, args)
61
+ DummyFuture.new(method, nil)
62
+ end
63
+ end
64
+
65
+ class AnyType
66
+ def to_msgpack(v)
67
+ return v
68
+ end
69
+
70
+ def from_msgpack( v)
71
+ return v
72
+ end
73
+ end
74
+
75
+ class ClientTest < Test::Unit::TestCase
76
+ def test_unknown_method
77
+ c = Jubatus::Common::Client.new(AlwaysRaiseUnknownMethod.new, "name")
78
+ assert_raise(Jubatus::Common::UnknownMethod) {
79
+ c.call("test", [], nil, [])
80
+ }
81
+ end
82
+
83
+ def test_type_mismatch
84
+ c = Jubatus::Common::Client.new(AlwaysRaiseTypeMismatch.new, "name")
85
+ assert_raise(Jubatus::Common::TypeMismatch) {
86
+ c.call("test", [], nil, [])
87
+ }
88
+ end
89
+
90
+ def test_remote_error
91
+ c = Jubatus::Common::Client.new(AlwaysRaiseRemoteError.new, "name")
92
+ assert_raise(MessagePack::RPC::RemoteError) {
93
+ c.call("test", [], nil, [])
94
+ }
95
+ end
96
+
97
+ def test_wrong_number_of_arguments
98
+ c = Jubatus::Common::Client.new(Echo.new, "name")
99
+ assert_equal("test", c.call("test", [], AnyType.new, []))
100
+ end
101
+ end
102
+
103
+ end
104
+ end
@@ -0,0 +1,43 @@
1
+ require 'test/unit'
2
+ require 'jubatus/common'
3
+ require 'msgpack'
4
+
5
+ module Jubatus
6
+ module Common
7
+
8
+ class DatumTest < Test::Unit::TestCase
9
+ def test_pack
10
+ assert_equal([[["name", "Taro"]], [["age", 20.0]], []].to_msgpack,
11
+ Datum.new({"name" => "Taro", "age" => 20}).to_msgpack.to_msgpack)
12
+ end
13
+
14
+ def test_unpack
15
+ d = Datum.from_msgpack([[["name", "Taro"]], [["age", 20.0]], [["img", "0101"]]])
16
+ assert_equal([["name", "Taro"]],
17
+ d.string_values)
18
+ assert_equal([["age", 20.0]],
19
+ d.num_values)
20
+ assert_equal([["img", "0101"]],
21
+ d.binary_values)
22
+ end
23
+
24
+ def test_empty
25
+ assert_equal([[], [], []].to_msgpack,
26
+ Datum.new.to_msgpack.to_msgpack)
27
+ end
28
+
29
+ def test_invalid_key
30
+ assert_raise(TypeError) {
31
+ Datum.new(1 => "")
32
+ }
33
+ end
34
+
35
+ def test_invalid_value
36
+ assert_raise(TypeError) { Datum.new("" => nil) }
37
+ assert_raise(TypeError) { Datum.new("" => []) }
38
+ end
39
+
40
+ end
41
+
42
+ end
43
+ end
@@ -0,0 +1,50 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'test/unit'
4
+ require 'jubatus/common'
5
+
6
+ module Jubatus
7
+ module Common
8
+
9
+ class MessageStringGeneratorTest < Test::Unit::TestCase
10
+
11
+ def test_empty
12
+ gen = MessageStringGenerator.new
13
+ gen.open("test")
14
+ gen.close
15
+
16
+ assert_equal("test{}", gen.to_s)
17
+ end
18
+
19
+ def test_one
20
+ gen = MessageStringGenerator.new
21
+ gen.open("test")
22
+ gen.add("k1", "v1")
23
+ gen.close
24
+
25
+ assert_equal("test{k1: v1}", gen.to_s)
26
+ end
27
+
28
+ def test_two
29
+ gen = MessageStringGenerator.new
30
+ gen.open("test")
31
+ gen.add("k1", "v1")
32
+ gen.add("k2", "v2")
33
+ gen.close
34
+
35
+ assert_equal("test{k1: v1, k2: v2}", gen.to_s)
36
+ end
37
+
38
+ def test_number
39
+ gen = MessageStringGenerator.new
40
+ gen.open("test")
41
+ gen.add("k1", 1)
42
+ gen.close
43
+
44
+ assert_equal("test{k1: 1}", gen.to_s)
45
+ end
46
+
47
+ end
48
+
49
+ end
50
+ end
@@ -0,0 +1,73 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'jubatus/common/types'
4
+ require 'test/unit'
5
+
6
+ module Jubatus
7
+ module Common
8
+
9
+ class TypeCheckTest < Test::Unit::TestCase
10
+ def convert(type, value)
11
+ return type.from_msgpack(value)
12
+ end
13
+
14
+ def assertTypeOf(type, value)
15
+ assert_equal(value, convert(type, value))
16
+ end
17
+
18
+ def assertTypeError(type, value)
19
+ assert_raise(TypeError) { convert(type, value) }
20
+ end
21
+
22
+ def assertValueError(type, value)
23
+ assert_raise(ValueError) { convert(type, value) }
24
+ end
25
+
26
+ def testInt()
27
+ assertTypeOf(TInt.new(true, 1), 1)
28
+ assertTypeError(TInt.new(true, 1), nil)
29
+ assertTypeError(TInt.new(true, 1), "")
30
+ assertValueError(TInt.new(true, 1), 128)
31
+ assertValueError(TInt.new(true, 1), -129)
32
+ assertValueError(TInt.new(false, 1), 256)
33
+ assertValueError(TInt.new(false, 1), -1)
34
+ end
35
+
36
+ def testFloat()
37
+ assertTypeOf(TFloat.new(), 1.3)
38
+ assertTypeError(TFloat.new(), nil)
39
+ assertTypeError(TFloat.new(), 1)
40
+ end
41
+
42
+ def testBool()
43
+ assertTypeOf(TBool.new(), true)
44
+ assertTypeError(TBool.new(), nil)
45
+ assertTypeError(TBool.new(), 1)
46
+ end
47
+
48
+ def testString()
49
+ assertTypeOf(TString.new(), "test")
50
+ assertTypeError(TString.new(), 1)
51
+ end
52
+
53
+ def testRaw()
54
+ assertTypeOf(TRaw.new(), "test")
55
+ assertTypeError(TRaw.new(), 1)
56
+ end
57
+
58
+ def testList()
59
+ assertTypeOf(TList.new(TInt.new(true, 8)), [1, 2, 3])
60
+ assertTypeOf(TList.new(TList.new(TInt.new(true, 8))), [[1, 2], [], [2, 3]])
61
+ assertTypeError(TList.new(TInt.new(true, 8)), nil)
62
+ end
63
+
64
+ def testTuple()
65
+ assertTypeOf(TTuple.new(TInt.new(true, 8), TTuple.new(TString.new(), TInt.new(true, 8))), [1, ["test", 1]])
66
+ assertTypeError(TTuple.new(TInt.new(true, 8)), ["test"])
67
+ assertTypeError(TTuple.new(TInt.new(true, 8)), [1, 2])
68
+ end
69
+ end
70
+
71
+ end
72
+ end
73
+
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jubatus
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.1
4
+ version: 0.5.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-03-15 00:00:00.000000000 Z
12
+ date: 2013-11-22 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: msgpack-rpc
@@ -55,26 +55,42 @@ files:
55
55
  - README.rst
56
56
  - Rakefile
57
57
  - VERSION
58
+ - integration_test/jubatus_test/anomaly/test.rb
59
+ - integration_test/jubatus_test/classifier/test.rb
60
+ - integration_test/jubatus_test/clustering/test.rb
61
+ - integration_test/jubatus_test/error/test.rb
62
+ - integration_test/jubatus_test/graph/test.rb
63
+ - integration_test/jubatus_test/nearest_neighbor/test.rb
64
+ - integration_test/jubatus_test/recommender/test.rb
65
+ - integration_test/jubatus_test/regression/test.rb
66
+ - integration_test/jubatus_test/stat/test.rb
67
+ - integration_test/jubatus_test/test_util.rb
58
68
  - jubatus.gemspec
59
69
  - lib/jubatus/anomaly/client.rb
60
70
  - lib/jubatus/anomaly/types.rb
61
71
  - lib/jubatus/classifier/client.rb
62
72
  - lib/jubatus/classifier/types.rb
73
+ - lib/jubatus/clustering/client.rb
74
+ - lib/jubatus/clustering/types.rb
75
+ - lib/jubatus/common.rb
76
+ - lib/jubatus/common/client.rb
77
+ - lib/jubatus/common/datum.rb
78
+ - lib/jubatus/common/message_string_generator.rb
79
+ - lib/jubatus/common/types.rb
63
80
  - lib/jubatus/graph/client.rb
64
81
  - lib/jubatus/graph/types.rb
82
+ - lib/jubatus/nearest_neighbor/client.rb
83
+ - lib/jubatus/nearest_neighbor/types.rb
65
84
  - lib/jubatus/recommender/client.rb
66
85
  - lib/jubatus/recommender/types.rb
67
86
  - lib/jubatus/regression/client.rb
68
87
  - lib/jubatus/regression/types.rb
69
88
  - lib/jubatus/stat/client.rb
70
89
  - lib/jubatus/stat/types.rb
71
- - test/jubatus_test/anomaly/test.rb
72
- - test/jubatus_test/classifier/test.rb
73
- - test/jubatus_test/graph/test.rb
74
- - test/jubatus_test/recommender/test.rb
75
- - test/jubatus_test/regression/test.rb
76
- - test/jubatus_test/stat/test.rb
77
- - test/jubatus_test/test_util.rb
90
+ - test/jubatus_test/common/client_test.rb
91
+ - test/jubatus_test/common/datum_test.rb
92
+ - test/jubatus_test/common/message_string_generator_test.rb
93
+ - test/jubatus_test/common/types_test.rb
78
94
  homepage: http://jubat.us
79
95
  licenses:
80
96
  - MIT
@@ -101,10 +117,7 @@ signing_key:
101
117
  specification_version: 3
102
118
  summary: Jubatus Ruby client
103
119
  test_files:
104
- - test/jubatus_test/anomaly/test.rb
105
- - test/jubatus_test/classifier/test.rb
106
- - test/jubatus_test/graph/test.rb
107
- - test/jubatus_test/recommender/test.rb
108
- - test/jubatus_test/regression/test.rb
109
- - test/jubatus_test/stat/test.rb
110
- - test/jubatus_test/test_util.rb
120
+ - test/jubatus_test/common/client_test.rb
121
+ - test/jubatus_test/common/datum_test.rb
122
+ - test/jubatus_test/common/message_string_generator_test.rb
123
+ - test/jubatus_test/common/types_test.rb
@@ -1,122 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- require 'test/unit'
4
-
5
- require 'json'
6
-
7
- require 'jubatus/recommender/client'
8
- require 'jubatus/recommender/types'
9
- require 'jubatus_test/test_util'
10
-
11
- class RecommenderTest < Test::Unit::TestCase
12
- HOST = "127.0.0.1"
13
- PORT = 23003
14
- TIMEOUT = 10
15
-
16
- def setup
17
- @config = {
18
- "method" => "inverted_index",
19
- "converter" => {
20
- "string_filter_types" => {},
21
- "string_filter_rules" => [],
22
- "num_filter_types" => {},
23
- "num_filter_rules" => [],
24
- "string_types" => {},
25
- "string_rules" => [{"key" => "*", "type" => "str", "sample_weight" => "bin", "global_weight" => "bin"}],
26
- "num_types" => {},
27
- "num_rules" => [{"key" => "*", "type" => "num"}]
28
- }
29
- }
30
-
31
- TestUtil.write_file("config_recommender.json", @config.to_json)
32
- @srv = TestUtil.fork_process("recommender", PORT, "config_recommender.json")
33
- @cli = Jubatus::Recommender::Client::Recommender.new(HOST, PORT)
34
- end
35
-
36
- def teardown
37
- TestUtil.kill_process(@srv)
38
- end
39
-
40
- def test_get_client
41
- assert_instance_of( MessagePack::RPC::Client, @cli.get_client )
42
- end
43
-
44
- def test_get_config
45
- config = @cli.get_config("name")
46
- assert_equal(JSON.parse(config), @config)
47
- end
48
-
49
- def test_complete_row
50
- @cli.clear_row("name", "complete_row")
51
- string_values = [["key1", "val1"], ["key2", "val2"]]
52
- num_values = [["key1", 1.0], ["key2", 2.0]]
53
- d = Jubatus::Recommender::Datum.new(string_values, num_values)
54
- @cli.update_row("name", "complete_row", d)
55
- d1 = @cli.complete_row_from_id("name", "complete_row")
56
- d2 = @cli.complete_row_from_datum("name", d)
57
- end
58
-
59
- def test_get_similar_row
60
- @cli.clear_row("name", "similar_row")
61
- string_values = [["key1", "val1"], ["key2", "val2"]]
62
- num_values = [["key1", 1.0], ["key2", 2.0]]
63
- d = Jubatus::Recommender::Datum.new(string_values, num_values)
64
- @cli.update_row("name", "similar_row", d)
65
- s1 = @cli.similar_row_from_id("name", "similar_row", 10)
66
- s2 = @cli.similar_row_from_datum("name", d, 10)
67
- end
68
-
69
- def test_decode_row
70
- @cli.clear_row("name", "decode_row")
71
- string_values = [["key1", "val1"], ["key2", "val2"]]
72
- num_values = [["key1", 1.0], ["key2", 2.0]]
73
- d = Jubatus::Recommender::Datum.new(string_values, num_values)
74
- @cli.update_row("name", "decode_row", d)
75
- decoded_row = @cli.decode_row("name", "decode_row")
76
- assert_equal(d.string_values, decoded_row.string_values)
77
- assert_equal(d.num_values, decoded_row.num_values)
78
- end
79
-
80
- def test_get_row
81
- @cli.clear("name")
82
- string_values = [["key1", "val1"], ["key2", "val2"]]
83
- num_values = [["key1", 1.0], ["key2", 2.0]]
84
- d = Jubatus::Recommender::Datum.new(string_values, num_values)
85
- @cli.update_row("name", "get_row", d)
86
- row_names = @cli.get_all_rows("name")
87
- assert_equal(row_names, ["get_row"])
88
- end
89
-
90
-
91
- def test_clear
92
- @cli.clear("name")
93
- end
94
-
95
- def test_calcs
96
- string_values = [["key1", "val1"], ["key2", "val2"]]
97
- num_values = [["key1", 1.0], ["key2", 2.0]]
98
- d = Jubatus::Recommender::Datum.new(string_values, num_values)
99
- assert_in_delta(@cli.calc_similarity("name", d, d), 1, 0.000001)
100
- assert_in_delta(@cli.calc_l2norm("name", d), Math.sqrt(1*1 + 1*1+ 1*1 + 2*2), 0.000001)
101
- end
102
-
103
- def test_clear
104
- @cli.clear("name")
105
- end
106
-
107
- def test_save
108
- assert_equal(@cli.save("name", "recommender.save_test.model"), true)
109
- end
110
-
111
- def test_load
112
- model_name = "recommender.load_test.model"
113
- @cli.save("name", model_name)
114
- assert_equal(@cli.load("name", model_name), true)
115
- end
116
-
117
- def test_get_status
118
- @cli.get_status("name")
119
- end
120
-
121
- end
122
-
@@ -1,109 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- require 'test/unit'
4
-
5
- require 'json'
6
-
7
- require 'jubatus/stat/client'
8
- require 'jubatus/stat/types'
9
- require 'jubatus_test/test_util'
10
-
11
- class StatTest < Test::Unit::TestCase
12
- HOST = "127.0.0.1"
13
- PORT = 23004
14
- TIMEOUT = 10
15
-
16
- def setup
17
- @config = {
18
- "window_size" => 10
19
- }
20
-
21
- TestUtil.write_file("config_stat.json", @config.to_json)
22
- @srv = TestUtil.fork_process("stat", PORT, "config_stat.json")
23
- @cli = Jubatus::Stat::Client::Stat.new(HOST, PORT)
24
-
25
- end
26
-
27
- def teardown
28
- TestUtil.kill_process(@srv)
29
- end
30
-
31
- def test_get_client
32
- assert_instance_of( MessagePack::RPC::Client, @cli.get_client )
33
- end
34
-
35
- def test_get_config
36
- config = @cli.get_config("name")
37
- assert_equal(JSON.parse(config), @config)
38
- end
39
-
40
- def test_stddev
41
- @cli.push("name", "stddev", 1.0)
42
- @cli.push("name", "stddev", 2.0)
43
- @cli.push("name", "stddev", 3.0)
44
- @cli.push("name", "stddev", 4.0)
45
- @cli.push("name", "stddev", 5.0)
46
- assert_equal(@cli.stddev("name", "stddev"), Math::sqrt(2.0))
47
- end
48
-
49
- def test_sum
50
- @cli.push("name", "sum", 1.0)
51
- @cli.push("name", "sum", 2.0)
52
- @cli.push("name", "sum", 3.0)
53
- @cli.push("name", "sum", 4.0)
54
- @cli.push("name", "sum", 5.0)
55
- assert_equal(@cli.sum("name", "sum"), 15.0)
56
- end
57
-
58
- def test_max
59
- @cli.push("name", "max", 1.0)
60
- @cli.push("name", "max", 2.0)
61
- @cli.push("name", "max", 3.0)
62
- @cli.push("name", "max", 4.0)
63
- @cli.push("name", "max", 5.0)
64
- assert_equal(@cli.max("name", "max"), 5.0)
65
- end
66
-
67
- def test_min
68
- @cli.push("name", "min", 1.0)
69
- @cli.push("name", "min", 2.0)
70
- @cli.push("name", "min", 3.0)
71
- @cli.push("name", "min", 4.0)
72
- @cli.push("name", "min", 5.0)
73
- assert_equal(@cli.min("name", "min"), 1.0)
74
- end
75
-
76
- def test_entropy
77
- @cli.push("name", "entropy", 1.0)
78
- @cli.push("name", "entropy", 2.0)
79
- @cli.push("name", "entropy", 3.0)
80
- @cli.push("name", "entropy", 4.0)
81
- @cli.push("name", "entropy", 5.0)
82
- assert_equal(@cli.entropy("name", "entropy"), 0.0)
83
- end
84
-
85
- def test_moment
86
- @cli.push("name", "moment", 1.0)
87
- @cli.push("name", "moment", 2.0)
88
- @cli.push("name", "moment", 3.0)
89
- @cli.push("name", "moment", 4.0)
90
- @cli.push("name", "moment", 5.0)
91
- assert_equal(@cli.moment("name", "moment", 3, 0.0), 45.0)
92
- end
93
-
94
- def test_save
95
- assert_equal(@cli.save("name", "stat.save_test.model"), true)
96
- end
97
-
98
- def test_load
99
- model_name = "stat.load_test.model"
100
- @cli.save("name", model_name)
101
- assert_equal(@cli.load("name", model_name), true)
102
- end
103
-
104
- def test_get_status
105
- @cli.get_status("name")
106
- end
107
-
108
- end
109
-