jubatus 0.4.1 → 0.5.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
-
|