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.
- data/.gitignore +4 -1
- data/README.rst +1 -1
- data/Rakefile +8 -0
- data/VERSION +1 -1
- data/{test → integration_test}/jubatus_test/anomaly/test.rb +22 -23
- data/{test → integration_test}/jubatus_test/classifier/test.rb +10 -15
- data/integration_test/jubatus_test/clustering/test.rb +133 -0
- data/integration_test/jubatus_test/error/test.rb +51 -0
- data/{test → integration_test}/jubatus_test/graph/test.rb +15 -30
- data/integration_test/jubatus_test/nearest_neighbor/test.rb +86 -0
- data/integration_test/jubatus_test/recommender/test.rb +111 -0
- data/{test → integration_test}/jubatus_test/regression/test.rb +10 -15
- data/integration_test/jubatus_test/stat/test.rb +108 -0
- data/{test → integration_test}/jubatus_test/test_util.rb +1 -0
- data/jubatus.gemspec +1 -1
- data/lib/jubatus/anomaly/client.rb +34 -33
- data/lib/jubatus/anomaly/types.rb +30 -18
- data/lib/jubatus/classifier/client.rb +22 -28
- data/lib/jubatus/classifier/types.rb +56 -33
- data/lib/jubatus/clustering/client.rb +51 -0
- data/lib/jubatus/clustering/types.rb +44 -0
- data/lib/jubatus/common/client.rb +83 -0
- data/lib/jubatus/common/datum.rb +85 -0
- data/lib/jubatus/common/message_string_generator.rb +41 -0
- data/lib/jubatus/common/types.rb +247 -0
- data/lib/jubatus/common.rb +4 -0
- data/lib/jubatus/graph/client.rb +83 -60
- data/lib/jubatus/graph/types.rb +146 -85
- data/lib/jubatus/nearest_neighbor/client.rb +53 -0
- data/lib/jubatus/nearest_neighbor/types.rb +44 -0
- data/lib/jubatus/recommender/client.rb +50 -44
- data/lib/jubatus/recommender/types.rb +29 -26
- data/lib/jubatus/regression/client.rb +22 -28
- data/lib/jubatus/regression/types.rb +30 -18
- data/lib/jubatus/stat/client.rb +37 -38
- data/lib/jubatus/stat/types.rb +5 -4
- data/test/jubatus_test/common/client_test.rb +104 -0
- data/test/jubatus_test/common/datum_test.rb +43 -0
- data/test/jubatus_test/common/message_string_generator_test.rb +50 -0
- data/test/jubatus_test/common/types_test.rb +73 -0
- metadata +29 -16
- data/test/jubatus_test/recommender/test.rb +0 -122
- data/test/jubatus_test/stat/test.rb +0 -109
data/lib/jubatus/stat/client.rb
CHANGED
@@ -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
|
-
|
14
|
-
|
15
|
-
|
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
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
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
|
-
|
35
|
-
|
24
|
+
|
25
|
+
def sum(key)
|
26
|
+
@jubatus_client.call("sum", [key], TFloat.new, [TString.new])
|
36
27
|
end
|
37
|
-
|
38
|
-
|
28
|
+
|
29
|
+
def stddev(key)
|
30
|
+
@jubatus_client.call("stddev", [key], TFloat.new, [TString.new])
|
39
31
|
end
|
40
|
-
|
41
|
-
|
32
|
+
|
33
|
+
def max(key)
|
34
|
+
@jubatus_client.call("max", [key], TFloat.new, [TString.new])
|
42
35
|
end
|
43
|
-
|
44
|
-
|
36
|
+
|
37
|
+
def min(key)
|
38
|
+
@jubatus_client.call("min", [key], TFloat.new, [TString.new])
|
45
39
|
end
|
46
|
-
|
47
|
-
|
40
|
+
|
41
|
+
def entropy(key)
|
42
|
+
@jubatus_client.call("entropy", [key], TFloat.new, [TString.new])
|
48
43
|
end
|
49
|
-
|
50
|
-
|
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
|
-
|
53
|
-
|
49
|
+
|
50
|
+
def clear
|
51
|
+
@jubatus_client.call("clear", [], TBool.new, [])
|
54
52
|
end
|
55
53
|
end
|
56
54
|
|
57
|
-
end
|
58
|
-
end
|
59
|
-
|
55
|
+
end # Client
|
56
|
+
end # Stat
|
57
|
+
|
58
|
+
end # Jubatus
|
data/lib/jubatus/stat/types.rb
CHANGED
@@ -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
|
+
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-
|
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/
|
72
|
-
- test/jubatus_test/
|
73
|
-
- test/jubatus_test/
|
74
|
-
- test/jubatus_test/
|
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/
|
105
|
-
- test/jubatus_test/
|
106
|
-
- test/jubatus_test/
|
107
|
-
- test/jubatus_test/
|
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
|
-
|