jubatus 0.1.0 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,92 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'test/unit'
4
+
5
+ require 'json'
6
+
7
+ require 'jubatus/regression/client'
8
+ require 'jubatus/regression/types'
9
+ require 'jubatus_test/test_util'
10
+
11
+ class RegressionTest < Test::Unit::TestCase
12
+ HOST = "127.0.0.1"
13
+ PORT = 23002
14
+ TIMEOUT = 10
15
+
16
+ def setup
17
+ @config = {
18
+ "method" => "PA",
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
+ "parameter" => {
30
+ "sensitivity" => 0.1,
31
+ "regularization_weight" => 3.402823e+38
32
+ }
33
+ }
34
+
35
+ TestUtil.write_file("config_regression.json", @config.to_json)
36
+ @srv = TestUtil.fork_process("regression", PORT, "config_regression.json")
37
+ @cli = Jubatus::Regression::Client::Regression.new(HOST, PORT)
38
+ end
39
+
40
+ def teardown
41
+ TestUtil.kill_process(@srv)
42
+ end
43
+
44
+ def test_get_config
45
+ config = @cli.get_config("name")
46
+ assert_equal(@config.to_json, JSON.parse(config).to_json)
47
+
48
+ end
49
+
50
+
51
+ def test_train
52
+ string_values = [["key1", "val1"], ["key2", "val2"]]
53
+ num_values = [["key1", 1.0], ["key2", 2.0]]
54
+ d = Jubatus::Regression::Datum.new(string_values, num_values)
55
+ data = [[1.0, d]]
56
+ assert_equal(@cli.train("name", data), 1)
57
+
58
+ end
59
+
60
+
61
+ def test_estimate
62
+ string_values = [["key1", "val1"], ["key2", "val2"]]
63
+ num_values = [["key1", 1.0], ["key2", 2.0]]
64
+ d = Jubatus::Regression::Datum.new(string_values, num_values)
65
+ data = [d]
66
+ result = @cli.estimate("name", data)
67
+
68
+ end
69
+
70
+
71
+ def test_save
72
+ assert_equal(@cli.save("name", "regression.save_test.model"), true)
73
+
74
+ end
75
+
76
+
77
+ def test_load
78
+ model_name = "regression.load_test.model"
79
+ @cli.save("name", model_name)
80
+ assert_equal(@cli.load("name", model_name), true)
81
+
82
+ end
83
+
84
+
85
+ def test_get_status
86
+ @cli.get_status("name")
87
+
88
+ end
89
+
90
+
91
+ end
92
+
@@ -0,0 +1,125 @@
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_config
32
+ config = @cli.get_config("name")
33
+ assert_equal(@config.to_json, JSON.parse(config).to_json)
34
+
35
+ end
36
+
37
+
38
+ def test_stddev
39
+ @cli.push("name", "stddev", 1.0)
40
+ @cli.push("name", "stddev", 2.0)
41
+ @cli.push("name", "stddev", 3.0)
42
+ @cli.push("name", "stddev", 4.0)
43
+ @cli.push("name", "stddev", 5.0)
44
+ assert_equal(@cli.stddev("name", "stddev"), Math::sqrt(2.0))
45
+
46
+ end
47
+
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
+
57
+ end
58
+
59
+
60
+ def test_max
61
+ @cli.push("name", "max", 1.0)
62
+ @cli.push("name", "max", 2.0)
63
+ @cli.push("name", "max", 3.0)
64
+ @cli.push("name", "max", 4.0)
65
+ @cli.push("name", "max", 5.0)
66
+ assert_equal(@cli.max("name", "max"), 5.0)
67
+
68
+ end
69
+
70
+
71
+ def test_min
72
+ @cli.push("name", "min", 1.0)
73
+ @cli.push("name", "min", 2.0)
74
+ @cli.push("name", "min", 3.0)
75
+ @cli.push("name", "min", 4.0)
76
+ @cli.push("name", "min", 5.0)
77
+ assert_equal(@cli.min("name", "min"), 1.0)
78
+
79
+ end
80
+
81
+
82
+ def test_entropy
83
+ @cli.push("name", "entropy", 1.0)
84
+ @cli.push("name", "entropy", 2.0)
85
+ @cli.push("name", "entropy", 3.0)
86
+ @cli.push("name", "entropy", 4.0)
87
+ @cli.push("name", "entropy", 5.0)
88
+ assert_equal(@cli.entropy("name", "entropy"), 0.0)
89
+
90
+ end
91
+
92
+
93
+ def test_moment
94
+ @cli.push("name", "moment", 1.0)
95
+ @cli.push("name", "moment", 2.0)
96
+ @cli.push("name", "moment", 3.0)
97
+ @cli.push("name", "moment", 4.0)
98
+ @cli.push("name", "moment", 5.0)
99
+ assert_equal(@cli.moment("name", "moment", 3, 0.0), 45.0)
100
+
101
+ end
102
+
103
+
104
+ def test_save
105
+ assert_equal(@cli.save("name", "stat.save_test.model"), true)
106
+
107
+ end
108
+
109
+
110
+ def test_load
111
+ model_name = "stat.load_test.model"
112
+ @cli.save("name", model_name)
113
+ assert_equal(@cli.load("name", model_name), true)
114
+
115
+ end
116
+
117
+
118
+ def test_get_status
119
+ @cli.get_status("name")
120
+
121
+ end
122
+
123
+
124
+ end
125
+
@@ -0,0 +1,49 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'rubygems'
4
+ require 'msgpack/rpc'
5
+
6
+ class TestUtil
7
+ def self.wait_server(port)
8
+ cli = MessagePack::RPC::Client.new("127.0.0.1", port)
9
+ sleep_time = 1000;
10
+ # 1000 * \sum {i=0..9} 2^i = 1024000 micro sec = 1024 ms
11
+ for i in 0..9
12
+ sleep(sleep_time/1000000.0) # from usec to sec
13
+ begin
14
+ cli.call("dummy")
15
+ raise "dummy rpc succeeded"
16
+ rescue MessagePack::RPC::RPCError => ex
17
+ return if ex.class == MessagePack::RPC::RemoteError
18
+ end
19
+ sleep_time *= 2;
20
+ end
21
+ raise "cannot connect"
22
+ end
23
+
24
+ def self.fork_process(name, port = 9199, config = "")
25
+ cmd = "juba" + name
26
+ child = Process.fork()
27
+ if child.nil? then
28
+ begin
29
+ exec(cmd, cmd, "--rpc-port", port.to_s, "--configpath", config, "--thread", "100", "--datadir", ".")
30
+ rescue
31
+ puts $!
32
+ exit 1
33
+ end
34
+ end
35
+ wait_server(port)
36
+ return child;
37
+ end
38
+
39
+ def self.kill_process(pid)
40
+ Process.kill("TERM", pid)
41
+ Process.wait(pid)
42
+ end
43
+
44
+ def self.write_file(path, data)
45
+ f = File.open(path, "w")
46
+ f.write(data)
47
+ f.close
48
+ end
49
+ end
metadata CHANGED
@@ -1,69 +1,64 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: jubatus
3
- version: !ruby/object:Gem::Version
4
- hash: 27
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.4.0
5
5
  prerelease:
6
- segments:
7
- - 0
8
- - 1
9
- - 0
10
- version: 0.1.0
11
6
  platform: ruby
12
- authors:
13
- - Jubatus Team
7
+ authors:
8
+ - PFI & NTT
14
9
  autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
-
18
- date: 2012-07-20 00:00:00 Z
19
- dependencies:
20
- - !ruby/object:Gem::Dependency
12
+ date: 2013-01-11 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
21
15
  name: msgpack-rpc
22
- prerelease: false
23
- requirement: &id001 !ruby/object:Gem::Requirement
16
+ requirement: !ruby/object:Gem::Requirement
24
17
  none: false
25
- requirements:
18
+ requirements:
26
19
  - - ~>
27
- - !ruby/object:Gem::Version
28
- hash: 5
29
- segments:
30
- - 0
31
- - 4
32
- - 5
33
- version: 0.4.5
20
+ - !ruby/object:Gem::Version
21
+ version: 0.5.1
34
22
  type: :runtime
35
- version_requirements: *id001
36
- - !ruby/object:Gem::Dependency
37
- name: rake
38
23
  prerelease: false
39
- requirement: &id002 !ruby/object:Gem::Requirement
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ~>
28
+ - !ruby/object:Gem::Version
29
+ version: 0.5.1
30
+ - !ruby/object:Gem::Dependency
31
+ name: rake
32
+ requirement: !ruby/object:Gem::Requirement
40
33
  none: false
41
- requirements:
42
- - - ">="
43
- - !ruby/object:Gem::Version
44
- hash: 63
45
- segments:
46
- - 0
47
- - 9
48
- - 2
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
49
37
  version: 0.9.2
50
38
  type: :development
51
- version_requirements: *id002
52
- description: Jubatus client for Ruby
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: 0.9.2
46
+ description: Jubatus is a distributed processing framework and streaming machine learning
47
+ library. This is the Jubatus client in Ruby.
53
48
  email: jubatus@googlegroups.com
54
49
  executables: []
55
-
56
50
  extensions: []
57
-
58
51
  extra_rdoc_files: []
59
-
60
- files:
52
+ files:
61
53
  - .gitignore
62
54
  - LICENSE
63
- - README.md
55
+ - README.rst
64
56
  - Rakefile
65
57
  - VERSION
58
+ - generate.sh
66
59
  - jubatus.gemspec
60
+ - lib/jubatus/anomaly/client.rb
61
+ - lib/jubatus/anomaly/types.rb
67
62
  - lib/jubatus/classifier/client.rb
68
63
  - lib/jubatus/classifier/types.rb
69
64
  - lib/jubatus/graph/client.rb
@@ -74,38 +69,43 @@ files:
74
69
  - lib/jubatus/regression/types.rb
75
70
  - lib/jubatus/stat/client.rb
76
71
  - lib/jubatus/stat/types.rb
77
- homepage: https://github.com/jubatus/jubatus-ruby-client
78
- licenses: []
79
-
72
+ - test/jubatus_test/anomaly/test.rb
73
+ - test/jubatus_test/classifier/test.rb
74
+ - test/jubatus_test/graph/test.rb
75
+ - test/jubatus_test/recommender/test.rb
76
+ - test/jubatus_test/regression/test.rb
77
+ - test/jubatus_test/stat/test.rb
78
+ - test/jubatus_test/test_util.rb
79
+ homepage: http://jubat.us
80
+ licenses:
81
+ - MIT
80
82
  post_install_message:
81
83
  rdoc_options: []
82
-
83
- require_paths:
84
+ require_paths:
84
85
  - lib
85
- required_ruby_version: !ruby/object:Gem::Requirement
86
+ required_ruby_version: !ruby/object:Gem::Requirement
86
87
  none: false
87
- requirements:
88
- - - ">="
89
- - !ruby/object:Gem::Version
90
- hash: 3
91
- segments:
92
- - 0
93
- version: "0"
94
- required_rubygems_version: !ruby/object:Gem::Requirement
88
+ requirements:
89
+ - - ! '>='
90
+ - !ruby/object:Gem::Version
91
+ version: '0'
92
+ required_rubygems_version: !ruby/object:Gem::Requirement
95
93
  none: false
96
- requirements:
97
- - - ">="
98
- - !ruby/object:Gem::Version
99
- hash: 3
100
- segments:
101
- - 0
102
- version: "0"
94
+ requirements:
95
+ - - ! '>='
96
+ - !ruby/object:Gem::Version
97
+ version: '0'
103
98
  requirements: []
104
-
105
99
  rubyforge_project:
106
- rubygems_version: 1.8.11
100
+ rubygems_version: 1.8.23
107
101
  signing_key:
108
102
  specification_version: 3
109
- summary: Jubatus client for Ruby
110
- test_files: []
111
-
103
+ summary: Jubatus Ruby client
104
+ test_files:
105
+ - test/jubatus_test/anomaly/test.rb
106
+ - test/jubatus_test/classifier/test.rb
107
+ - test/jubatus_test/graph/test.rb
108
+ - test/jubatus_test/recommender/test.rb
109
+ - test/jubatus_test/regression/test.rb
110
+ - test/jubatus_test/stat/test.rb
111
+ - test/jubatus_test/test_util.rb
data/README.md DELETED
@@ -1,30 +0,0 @@
1
- jubatus-ruby-client
2
- ===================
3
-
4
- Jubatus' Ruby client skeleton. Don't clone this repository.
5
-
6
- Released client is generated by [MessagePack IDL](https://github.com/msgpack/msgpack-haskell/tree/master/msgpack-idl).
7
-
8
- ## TODO
9
-
10
- - Release gem (Currently, IDL generated codes are broken...)
11
-
12
- ## Copyright
13
-
14
- <table>
15
- <tr>
16
- <td>Web site</td><td>http://jubat.us/</td>
17
- </tr>
18
- <tr>
19
- <td>Repository</td><td>https://github.com/jubatus</td>
20
- </tr>
21
- <tr>
22
- <td>Author</td><td>Jubatus Team</td>
23
- </tr>
24
- <tr>
25
- <td>Copyright</td><td>Copyright (c) 2012, Jubatus Team</td>
26
- </tr>
27
- <tr>
28
- <td>License</td><td>New BSD License</td>
29
- </tr>
30
- </table>