crate_ruby 0.0.7 → 0.0.8

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,7 @@
1
1
  ---
2
- !binary "U0hBMQ==":
3
- metadata.gz: !binary |-
4
- YjcwMDRlZDFjZmI1YzcxZDMyOGRkNTFjNWZkNWRiY2Q4OTA0ZGIxMA==
5
- data.tar.gz: !binary |-
6
- Zjg3ZjYzMTgwNWI2OTBmZjFkYzhkMzhmYzE4YTBhZDk2Yzk5ZTc1NQ==
2
+ SHA1:
3
+ metadata.gz: 72fb2668765dffdf58642563d96e75aa751e8c3c
4
+ data.tar.gz: f071d33f570d3108a9a34f4899a3f6ac63666f28
7
5
  SHA512:
8
- metadata.gz: !binary |-
9
- YzAwMjNlN2I2OGMxOGI2MTM4ZTUyYjE4NmRiYTc5MjQ4YTg3Y2YxY2QxZTY4
10
- MTVjMjU5OTFlMDFmMWM2OGU3NzI0ZTE3MDg1MWYyNGRhOTMyOWNhYzc3YjVj
11
- YmQyMjc4YmE2MTRjMjYwZTZiMDRhMjhmYzc3YTdhNmI4MmUxMTM=
12
- data.tar.gz: !binary |-
13
- MDNiMDQ2ZDdlODYzNDAzMDc1YzNiZWZlMzQ1MzI5M2NkMTdjYjNjMTYxMWI5
14
- NmU5ODEwZWVlMjczYzE1ZTFmZDY1MThiMWE2OTAxNGI2ODlmMzUxZjJjYmQw
15
- NjAyMTczYTM1Y2MwNzdlNDJkMTU1MWYzNzg4ZTdlZmU2ODI4NmQ=
6
+ metadata.gz: 95523cb97d5db61f189a383330e0d42e4877a9fb893ee6e6ec1ad11a156fc89a1836de17cba8446f4c18523b94b4b20b5fca8bdb6f40aca2e44a9f0389832a9e
7
+ data.tar.gz: 759a5002f9498893ea8c888ee3bcf9974c8e53620b5e3ef78f78b076481505404bec3dc63fd750069cab7c7192856a9b974b27f4f8fb40a5769917b42448e574
@@ -1,16 +1,14 @@
1
1
  language: ruby
2
2
  rvm:
3
- - "1.9.3"
4
- - "2.1.1"
5
3
  - "2.0.0"
6
- # uncomment this line if your project needs to run something other than `rake`:
4
+ - "2.1.5"
5
+ - "2.2.0"
6
+ sudo:
7
+ false
7
8
 
8
9
  before_script:
9
- - wget https://cdn.crate.io/downloads/releases/crate-0.39.0.tar.gz -O /tmp/crate.tar.gz
10
+ - wget https://cdn.crate.io/downloads/releases/crate-0.48.2.tar.gz -O /tmp/crate.tar.gz
10
11
  - tar -xvf /tmp/crate.tar.gz
11
- - ls
12
- - echo $PWD
13
- - bundle exec ruby spec/travis_test_server.rb $PWD/crate-0.39.0/ 4209
12
+ - bundle exec ruby spec/test_server.rb $PWD/crate-0.48.2/ true
14
13
 
15
14
  script: bundle exec rspec spec
16
-
data/LICENSE CHANGED
@@ -1,5 +1,5 @@
1
1
  CRATE Ruby
2
- Copyright 2013-2014 CRATE Technology GmbH ("Crate")
2
+ Copyright 2013-2015 CRATE Technology GmbH ("Crate")
3
3
 
4
4
 
5
5
  Licensed to CRATE Technology GmbH (referred to in this notice as "Crate")
data/NOTICE CHANGED
@@ -1,5 +1,5 @@
1
1
  Crate Ruby
2
- Copyright 2013-2014 CRATE Technology GmbH ("Crate")
2
+ Copyright 2013-2015 CRATE Technology GmbH ("Crate")
3
3
 
4
4
 
5
5
  =========================================================================
data/README.md CHANGED
@@ -9,6 +9,8 @@ Official Ruby library to access a [Crate](http://crate.io) database.
9
9
 
10
10
  ## Installation
11
11
 
12
+ This gem requires Ruby 2.0 or greater.
13
+
12
14
  Add this line to your application's Gemfile:
13
15
 
14
16
  gem 'crate_ruby'
@@ -34,34 +36,39 @@ Or install it yourself as:
34
36
 
35
37
  result.cols
36
38
  => ["id", "my_column", "my_integer_col"]
37
-
38
-
39
+
40
+
39
41
  #### Using parameter substitution
40
-
42
+
41
43
  client.execute("INSERT INTO posts (id, title, tags) VALUES (\$1, \$2, \$3)",
42
44
  [1, "My life with crate", ['awesome', 'freaky']])
43
45
 
44
46
  ### Up/Downloading data
47
+
45
48
  digest = Digest::SHA1.file(file_path).hexdigest
46
49
 
47
- #upload
50
+ # upload
48
51
  f = File.read(file_path)
49
52
  client.blob_put(table_name, digest, f)
50
53
 
51
- #download
54
+ # download
52
55
  data = client.blob_get(table_name, digest)
53
56
  open(file_path, "wb") do |file|
54
57
  file.write(data)
55
58
  end
56
59
 
57
- #deletion
60
+ # deletion
58
61
  client.blob_delete(table_name, digest)
59
62
 
60
63
  ## Tests
61
64
 
62
- To run the tests start up the crate server first
65
+ Start up the crate server before running the tests
66
+
67
+ ruby spec/test_server.rb /path/to/crate
63
68
 
64
- ruby spec/test_server.rb
69
+ Then run tests with
70
+
71
+ bundle exec rspec spec
65
72
 
66
73
  ## Contributing
67
74
 
@@ -76,4 +83,3 @@ Please refer to CONTRIBUTING.rst for further information.
76
83
 
77
84
  ##License & Copyright
78
85
  See LICENSE for details.
79
-
@@ -28,10 +28,11 @@ Gem::Specification.new do |spec|
28
28
  spec.version = CrateRuby::VERSION
29
29
  spec.authors = ["Christoph Klocker", "CRATE Technology GmbH"]
30
30
  spec.email = ["office@crate.io"]
31
- spec.summary = "A simple interface to Crate Data."
32
- spec.description = "A ruby interface for Crate Data, a shared-nothing, fully searchable, document-oriented cluster data store."
31
+ spec.summary = "A simple interface for the Crate database"
32
+ spec.description = "A Ruby interface for Crate, the distributed database for Docker."
33
33
  spec.homepage = "http://crate.io"
34
34
  spec.license = "Apache License, v2.0"
35
+ spec.required_ruby_version = '>= 2.0'
35
36
 
36
37
  spec.files = `git ls-files -z`.split("\x0")
37
38
  spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
@@ -1,5 +1,13 @@
1
1
  # coding: UTF-8
2
2
 
3
+ === unreleased
4
+
5
+ === 0.0.8
6
+
7
+ * removed ruby 1.9.3 from travis.yml
8
+ * client now supports HTTP options
9
+ * update travis.yml and fix broken test
10
+
3
11
  === 0.0.7
4
12
 
5
13
  * use prepared statements for insert
@@ -32,11 +32,13 @@ module CrateRuby
32
32
  # @param [Array] servers An Array of servers including ports [127.0.0.1:4200, 10.0.0.1:4201]
33
33
  # @param [opts] Optional paramters
34
34
  # * logger: Custom Logger
35
+ # * http_options [Hash]: Net::HTTP options (open_timeout, read_timeout)
35
36
  # @return [CrateRuby::Client]
36
37
  def initialize(servers = [], opts = {})
37
38
  @servers = servers
38
39
  @servers << "#{DEFAULT_HOST}:#{DEFAULT_PORT}" if servers.empty?
39
40
  @logger = opts[:logger] || CrateRuby.logger
41
+ @http_options = opts[:http_options] || { read_timeout: 3600 }
40
42
  end
41
43
 
42
44
  def inspect
@@ -93,14 +95,15 @@ module CrateRuby
93
95
  # Executes a SQL statement against the Crate HTTP REST endpoint.
94
96
  # @param [String] sql statement to execute
95
97
  # @param [Array] args Array of values used for parameter substitution
98
+ # @param [Hash] Net::HTTP options (open_timeout, read_timeout)
96
99
  # @return [ResultSet]
97
- def execute(sql, args = nil)
100
+ def execute(sql, args = nil, http_options = {})
98
101
  @logger.debug sql
99
102
  req = Net::HTTP::Post.new("/_sql", initheader = {'Content-Type' => 'application/json'})
100
103
  body = {"stmt" => sql}
101
104
  body.merge!({'args' => args}) if args
102
105
  req.body = body.to_json
103
- response = request(req)
106
+ response = request(req, http_options)
104
107
  @logger.debug response.body
105
108
  success = case response.code
106
109
  when /^2\d{2}/
@@ -207,9 +210,13 @@ module CrateRuby
207
210
  Net::HTTP.new(host, port)
208
211
  end
209
212
 
210
- def request(req)
211
- connection.start { |http| http.request(req) }
213
+ def request(req, http_options = {})
214
+ options = @http_options.merge(http_options)
215
+ connection.start do |http|
216
+ options.each { |opt, value| http.send("#{opt}=", value) }
217
+ http.request(req)
218
+ end
212
219
  end
213
220
 
214
221
  end
215
- end
222
+ end
@@ -20,5 +20,5 @@
20
20
  # software solely pursuant to the terms of the relevant commercial agreement.
21
21
 
22
22
  module CrateRuby
23
- VERSION = "0.0.7"
23
+ VERSION = "0.0.8"
24
24
  end
@@ -23,8 +23,10 @@ require_relative '../spec_helper'
23
23
 
24
24
  describe CrateRuby::Client do
25
25
  TABLE_NAME = 'blob_table'
26
+ CRATE_HOST = "localhost:44200"
27
+
26
28
  describe '#create_table' do
27
- let(:client) { CrateRuby::Client.new(["localhost:#{TEST_PORT}"]) }
29
+ let(:client) { CrateRuby::Client.new([CRATE_HOST]) }
28
30
 
29
31
  describe 'blob management' do
30
32
  let(:file) { 'logo-crate.png' }
@@ -34,11 +36,11 @@ describe CrateRuby::Client do
34
36
  let(:store_location) { File.join(path, "get_#{file}") }
35
37
 
36
38
  before(:all) do
37
- CrateRuby::Client.new(["localhost:#{TEST_PORT}"]).execute("create blob TABLE #{TABLE_NAME}")
39
+ CrateRuby::Client.new([CRATE_HOST]).execute("create blob TABLE #{TABLE_NAME}")
38
40
  end
39
41
 
40
42
  after(:all) do
41
- CrateRuby::Client.new(["localhost:#{TEST_PORT}"]).execute("drop blob TABLE #{TABLE_NAME}")
43
+ CrateRuby::Client.new([CRATE_HOST]).execute("drop blob TABLE #{TABLE_NAME}")
42
44
  end
43
45
 
44
46
  describe '#blob_put' do
@@ -51,7 +53,7 @@ describe CrateRuby::Client do
51
53
 
52
54
  it 'should upload a file to the blob table' do
53
55
  f = File.read(file_path)
54
- client.blob_put(TABLE_NAME, digest, f).should be_true
56
+ client.blob_put(TABLE_NAME, digest, f).should be_truthy
55
57
  end
56
58
  end
57
59
 
@@ -75,7 +77,7 @@ describe CrateRuby::Client do
75
77
 
76
78
  it 'should download a blob' do
77
79
  data = client.blob_get(TABLE_NAME, digest)
78
- data.should_not be_false
80
+ data.should_not be_falsey
79
81
  open(store_location, "wb") { |file|
80
82
  file.write(data)
81
83
  }
@@ -102,27 +104,32 @@ describe CrateRuby::Client do
102
104
  let(:table_name) { "post" }
103
105
 
104
106
  after do
105
- client.execute("drop TABLE #{table_name}").should be_true
107
+ client.execute("drop TABLE #{table_name}").should be_truthy
106
108
  end
107
109
 
108
110
  it 'should create a new table' do
109
- client.execute("CREATE TABLE #{table_name} (id int)").should be_true
111
+ client.execute("CREATE TABLE #{table_name} (id int)").should be_truthy
110
112
  end
111
113
 
112
114
  it 'should allow parameter substitution' do
113
- client.execute("CREATE TABLE #{table_name} (id int, title string, tags array(string) )").should be_true
115
+ client.execute("CREATE TABLE #{table_name} (id int, title string, tags array(string) )").should be_truthy
114
116
  client.execute("INSERT INTO #{table_name} (id, title, tags) VALUES (\$1, \$2, \$3)",
115
- [1, "My life with crate", ['awesome', 'freaky']]).should be_true
117
+ [1, "My life with crate", ['awesome', 'freaky']]).should be_truthy
116
118
  end
117
119
 
118
120
  it 'should create an object' do
119
121
  client.execute("CREATE TABLE #{table_name} (id STRING PRIMARY KEY, name string, address object) ")
120
- client.execute(%Q{INSERT INTO #{table_name} (address, id, name) VALUES ({"street"="1010 W 2nd Ave","city"="Vancouver"}, 'fb7183ac-d049-462c-85a9-732aca59a1c1', 'Mad Max')})
122
+ client.execute(%Q{INSERT INTO #{table_name} (address, id, name) VALUES ({street='1010 W 2nd Ave',city='Vancouver'}, 'fb7183ac-d049-462c-85a9-732aca59a1c1', 'Mad Max')})
121
123
  client.refresh_table table_name
122
124
  client.execute(%Q{select * from #{table_name}})
123
-
124
125
  end
125
126
 
127
+ it 'should accept http options' do
128
+ client.execute("CREATE TABLE #{table_name} (id STRING PRIMARY KEY, name string, address object) ")
129
+ client.execute(%Q{INSERT INTO #{table_name} (address, id, name) VALUES ({street='1010 W 2nd Ave',city='Vancouver'}, 'fb7183ac-d049-462c-85a9-732aca59a1c1', 'Mad Max')})
130
+ client.refresh_table table_name
131
+ expect { client.execute("SELECT * FROM #{table_name}", nil, {read_timeout: 0}) }.to raise_error Net::ReadTimeout
132
+ end
126
133
  end
127
134
 
128
135
 
@@ -20,4 +20,4 @@
20
20
  # software solely pursuant to the terms of the relevant commercial agreement.
21
21
 
22
22
  require_relative '../lib/crate_ruby'
23
- TEST_PORT = 4209
23
+ require 'net/http'
@@ -1,3 +1,4 @@
1
+ #!/usr/bin/env ruby
1
2
  # -*- coding: utf-8; -*-
2
3
  #
3
4
  # Licensed to CRATE Technology GmbH ("Crate") under one or more contributor
@@ -20,57 +21,53 @@
20
21
  # software solely pursuant to the terms of the relevant commercial agreement.
21
22
 
22
23
  require 'net/http'
24
+
23
25
  class TestServer
24
- CRATE_PATH = "~/crate"
25
- TEST_PORT = 4209
26
26
  NAME = "TestCluster"
27
+ HOST = "127.0.0.1"
28
+ PORT = 44200
29
+ TIMEOUT = 30
27
30
 
28
-
29
- def initialize(crate_home = nil, port = nil, host = "127.0.0.1")
30
- @crate_home = crate_home || CRATE_PATH
31
- @port = port || TEST_PORT
32
- @host = host
31
+ def initialize(crate_home = '~/crate', run_in_background = false)
32
+ @crate_home = crate_home
33
+ @run_in_background = run_in_background
33
34
  end
34
35
 
35
36
  def start
36
- cmd = "sh #{CRATE_PATH}/bin/crate #{start_params}"
37
- @pid = spawn(cmd, :out => "/tmp/crate_test_server.out", :err => "/tmp/crate_test_server.err")
37
+ cmd = "sh #{File.join(@crate_home, 'bin', 'crate')} #{start_params}"
38
+ @pid = spawn(cmd, out: "/tmp/crate_test_server.out",
39
+ err: "/tmp/crate_test_server.err")
38
40
  Process.detach(@pid)
39
- puts 'starting'
41
+ puts 'Starting Crate... (this will take a few seconds)'
40
42
  time_slept = 0
43
+ interval = 2
41
44
  while true
42
- puts "Crate not yet fully available. Waiting since #{time_slept} seconds..." unless alive?
43
- sleep(2)
44
- time_slept += 2
45
+ if !alive? and time_slept > TIMEOUT
46
+ puts "Crate hasn't started for #{TIMEOUT} seconds. Giving up now..."
47
+ exit
48
+ end
49
+ if alive? and @run_in_background
50
+ exit
51
+ end
52
+ sleep(interval)
53
+ time_slept += interval
45
54
  end
46
55
  end
47
56
 
48
- def stop
49
- Process.kill("HUP", @pid)
50
- end
51
-
52
57
  private
53
58
 
54
-
55
- def crate_exec
56
- end
57
-
58
- def crate_config
59
- end
60
-
61
59
  def start_params
62
60
  "-Des.index.storage.type=memory " +
63
61
  "-Des.node.name=#{NAME} " +
64
- "-Des.cluster.name=Testing#{@port} " +
65
- "-Des.http.port=#{@port}-#{@port} " +
62
+ "-Des.cluster.name=Testing#{PORT} " +
63
+ "-Des.http.port=#{PORT}-#{PORT} " +
66
64
  "-Des.network.host=localhost " +
67
- "-Des.discovery.type=zen " +
68
65
  "-Des.discovery.zen.ping.multicast.enabled=false"
69
66
  end
70
67
 
71
68
  def alive?
72
69
  req = Net::HTTP::Get.new('/')
73
- resp = Net::HTTP.new(@host, @port)
70
+ resp = Net::HTTP.new(HOST, PORT)
74
71
  begin
75
72
  response = resp.start { |http| http.request(req) }
76
73
  response.code == "200" ? true : false
@@ -78,14 +75,7 @@ class TestServer
78
75
  false
79
76
  end
80
77
  end
81
-
82
78
  end
83
79
 
84
- server = TestServer.new.start *ARGV
85
-
86
- trap("INT") do
87
- puts "Script terminated by user."
88
- server.stop
89
- puts "Server stopped"
90
- exit
91
- end
80
+ server = TestServer.new(*ARGV)
81
+ server.start
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: crate_ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.7
4
+ version: 0.0.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Christoph Klocker
@@ -9,60 +9,59 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-09-25 00:00:00.000000000 Z
12
+ date: 2015-04-28 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  requirements:
18
- - - ~>
18
+ - - "~>"
19
19
  - !ruby/object:Gem::Version
20
20
  version: '1.5'
21
21
  type: :development
22
22
  prerelease: false
23
23
  version_requirements: !ruby/object:Gem::Requirement
24
24
  requirements:
25
- - - ~>
25
+ - - "~>"
26
26
  - !ruby/object:Gem::Version
27
27
  version: '1.5'
28
28
  - !ruby/object:Gem::Dependency
29
29
  name: rake
30
30
  requirement: !ruby/object:Gem::Requirement
31
31
  requirements:
32
- - - ! '>='
32
+ - - ">="
33
33
  - !ruby/object:Gem::Version
34
34
  version: '0'
35
35
  type: :development
36
36
  prerelease: false
37
37
  version_requirements: !ruby/object:Gem::Requirement
38
38
  requirements:
39
- - - ! '>='
39
+ - - ">="
40
40
  - !ruby/object:Gem::Version
41
41
  version: '0'
42
42
  - !ruby/object:Gem::Dependency
43
43
  name: rspec
44
44
  requirement: !ruby/object:Gem::Requirement
45
45
  requirements:
46
- - - ~>
46
+ - - "~>"
47
47
  - !ruby/object:Gem::Version
48
48
  version: '2.14'
49
49
  type: :development
50
50
  prerelease: false
51
51
  version_requirements: !ruby/object:Gem::Requirement
52
52
  requirements:
53
- - - ~>
53
+ - - "~>"
54
54
  - !ruby/object:Gem::Version
55
55
  version: '2.14'
56
- description: A ruby interface for Crate Data, a shared-nothing, fully searchable,
57
- document-oriented cluster data store.
56
+ description: A Ruby interface for Crate, the distributed database for Docker.
58
57
  email:
59
58
  - office@crate.io
60
59
  executables: []
61
60
  extensions: []
62
61
  extra_rdoc_files: []
63
62
  files:
64
- - .gitignore
65
- - .travis.yml
63
+ - ".gitignore"
64
+ - ".travis.yml"
66
65
  - CONTRIBUTING.rst
67
66
  - DEVELOP.md
68
67
  - Gemfile
@@ -82,7 +81,6 @@ files:
82
81
  - spec/crate_ruby/result_set_spec.rb
83
82
  - spec/spec_helper.rb
84
83
  - spec/test_server.rb
85
- - spec/travis_test_server.rb
86
84
  - spec/uploads/get_logo-crate.png
87
85
  - spec/uploads/logo-crate.png
88
86
  - spec/uploads/text.txt
@@ -96,26 +94,25 @@ require_paths:
96
94
  - lib
97
95
  required_ruby_version: !ruby/object:Gem::Requirement
98
96
  requirements:
99
- - - ! '>='
97
+ - - ">="
100
98
  - !ruby/object:Gem::Version
101
- version: '0'
99
+ version: '2.0'
102
100
  required_rubygems_version: !ruby/object:Gem::Requirement
103
101
  requirements:
104
- - - ! '>='
102
+ - - ">="
105
103
  - !ruby/object:Gem::Version
106
104
  version: '0'
107
105
  requirements: []
108
106
  rubyforge_project:
109
- rubygems_version: 2.4.1
107
+ rubygems_version: 2.4.6
110
108
  signing_key:
111
109
  specification_version: 4
112
- summary: A simple interface to Crate Data.
110
+ summary: A simple interface for the Crate database
113
111
  test_files:
114
112
  - spec/crate_ruby/client_spec.rb
115
113
  - spec/crate_ruby/result_set_spec.rb
116
114
  - spec/spec_helper.rb
117
115
  - spec/test_server.rb
118
- - spec/travis_test_server.rb
119
116
  - spec/uploads/get_logo-crate.png
120
117
  - spec/uploads/logo-crate.png
121
118
  - spec/uploads/text.txt
@@ -1,75 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # -*- coding: utf-8; -*-
3
- #
4
- # Licensed to CRATE Technology GmbH ("Crate") under one or more contributor
5
- # license agreements. See the NOTICE file distributed with this work for
6
- # additional information regarding copyright ownership. Crate licenses
7
- # this file to you under the Apache License, Version 2.0 (the "License");
8
- # you may not use this file except in compliance with the License. You may
9
- # obtain a copy of the License at
10
- #
11
- # http://www.apache.org/licenses/LICENSE-2.0
12
- #
13
- # Unless required by applicable law or agreed to in writing, software
14
- # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
15
- # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
16
- # License for the specific language governing permissions and limitations
17
- # under the License.
18
- #
19
- # However, if you have executed another commercial license agreement
20
- # with Crate these terms will supersede the license and you may use the
21
- # software solely pursuant to the terms of the relevant commercial agreement.
22
-
23
- require 'net/http'
24
- class TestServer
25
- CRATE_PATH = "~/crate"
26
- TEST_PORT = 4209
27
- NAME = "TestCluster"
28
-
29
-
30
- def initialize(crate_home = nil, port = nil)
31
- @crate_home = crate_home
32
- @port = port
33
- @host = "127.0.0.1"
34
- end
35
-
36
- def start
37
- cmd = "sh #{File.join(@crate_home, 'bin/crate')} #{start_params}"
38
- @pid = spawn(cmd, :out => "/tmp/crate_test_server.out", :err => "/tmp/crate_test_server.err")
39
- Process.detach(@pid)
40
- puts 'starting'
41
- time_slept = 0
42
- while !alive?
43
- puts "Crate not yet fully available. Waiting since #{time_slept} seconds..."
44
- sleep(2)
45
- time_slept += 2
46
- end
47
- end
48
-
49
- private
50
-
51
- def start_params
52
- "-Des.index.storage.type=memory " +
53
- "-Des.node.name=#{NAME} " +
54
- "-Des.cluster.name=Testing#{@port} " +
55
- "-Des.http.port=#{@port}-#{@port} " +
56
- "-Des.network.host=localhost " +
57
- "-Des.discovery.type=zen " +
58
- "-Des.discovery.zen.ping.multicast.enabled=false"
59
- end
60
-
61
- def alive?
62
- req = Net::HTTP::Get.new('/')
63
- resp = Net::HTTP.new(@host, @port)
64
- begin
65
- response = resp.start { |http| http.request(req) }
66
- response.code == "200" ? true : false
67
- rescue Errno::ECONNREFUSED
68
- false
69
- end
70
- end
71
-
72
- end
73
-
74
- server = TestServer.new *ARGV
75
- server.start