jubatus 0.4.1 → 0.5.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.
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
-