ost-bin 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. data/ost-bin.gemspec +23 -0
  2. data/test/bin.rb +75 -0
  3. metadata +82 -0
@@ -0,0 +1,23 @@
1
+ Gem::Specification.new do |s|
2
+ s.name = "ost-bin"
3
+ s.version = "0.0.1"
4
+ s.summary = "ost(1)"
5
+ s.authors = ["Damian Janowski"]
6
+ s.email = ["damian.janowski@gmail.com"]
7
+ s.homepage = "https://github.com/djanowski/ost-bin"
8
+
9
+ s.files = Dir[
10
+ "*.gemspec",
11
+ "CHANGELOG*",
12
+ "LICENSE",
13
+ "README.markdown",
14
+ "Rakefile",
15
+ "lib/**/*.rb",
16
+ "test/*.*"
17
+ ]
18
+
19
+ s.add_dependency "ost"
20
+ s.add_dependency "clap"
21
+
22
+ s.add_development_dependency "cutest"
23
+ end
@@ -0,0 +1,75 @@
1
+ require "cutest"
2
+ require "redis"
3
+
4
+ at_exit {
5
+ Process.waitall
6
+ }
7
+
8
+ def wait_for_pid(pid)
9
+ running = true
10
+
11
+ while running
12
+ begin
13
+ Process.kill(0, pid)
14
+ rescue Errno::ESRCH
15
+ running = false
16
+ end
17
+ end
18
+ end
19
+
20
+ def root(path)
21
+ File.expand_path("../#{path}", File.dirname(__FILE__))
22
+ end
23
+
24
+ redis = Redis.connect
25
+
26
+ test "daemon" do
27
+ r, w = IO.pipe
28
+ pid = nil
29
+
30
+ begin
31
+ redis.flushdb
32
+
33
+ pid = spawn("#{root("bin/ost")} echo", out: w, chdir: "test")
34
+
35
+ redis.rpush("ost:echo", 1)
36
+
37
+ assert_equal "1\n", r.gets
38
+ ensure
39
+ Process.kill(:INT, pid) if pid
40
+ end
41
+ end
42
+
43
+ test "daemonizes" do
44
+ r, w = IO.pipe
45
+ pid, detached_pid = nil
46
+
47
+ redis.flushdb
48
+
49
+ begin
50
+ pid = spawn("#{root("bin/ost")} -d echo", out: w, chdir: "test")
51
+
52
+ sleep 1
53
+
54
+ state = `ps -p #{pid} -o state`.lines.to_a.last[/(\w+)/, 1]
55
+
56
+ assert_equal "Z", state
57
+
58
+ pid_path = "./test/workers/echo.pid"
59
+
60
+ assert File.exist?(pid_path)
61
+
62
+ detached_pid = File.read(pid_path).to_i
63
+
64
+ ppid = `ps -p #{detached_pid} -o ppid`.lines.to_a.last[/(\d+)/, 1]
65
+
66
+ assert_equal "1", ppid
67
+ ensure
68
+ Process.kill(:INT, pid) if pid
69
+ Process.kill(:INT, detached_pid) if detached_pid
70
+ end
71
+
72
+ wait_for_pid(detached_pid)
73
+
74
+ assert !File.exist?(pid_path)
75
+ end
metadata ADDED
@@ -0,0 +1,82 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: ost-bin
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Damian Janowski
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2011-10-28 00:00:00.000000000 -03:00
13
+ default_executable:
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: ost
17
+ requirement: &2153338560 !ruby/object:Gem::Requirement
18
+ none: false
19
+ requirements:
20
+ - - ! '>='
21
+ - !ruby/object:Gem::Version
22
+ version: '0'
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: *2153338560
26
+ - !ruby/object:Gem::Dependency
27
+ name: clap
28
+ requirement: &2153338040 !ruby/object:Gem::Requirement
29
+ none: false
30
+ requirements:
31
+ - - ! '>='
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: *2153338040
37
+ - !ruby/object:Gem::Dependency
38
+ name: cutest
39
+ requirement: &2153314240 !ruby/object:Gem::Requirement
40
+ none: false
41
+ requirements:
42
+ - - ! '>='
43
+ - !ruby/object:Gem::Version
44
+ version: '0'
45
+ type: :development
46
+ prerelease: false
47
+ version_requirements: *2153314240
48
+ description:
49
+ email:
50
+ - damian.janowski@gmail.com
51
+ executables: []
52
+ extensions: []
53
+ extra_rdoc_files: []
54
+ files:
55
+ - ost-bin.gemspec
56
+ - test/bin.rb
57
+ has_rdoc: true
58
+ homepage: https://github.com/djanowski/ost-bin
59
+ licenses: []
60
+ post_install_message:
61
+ rdoc_options: []
62
+ require_paths:
63
+ - lib
64
+ required_ruby_version: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ! '>='
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
70
+ required_rubygems_version: !ruby/object:Gem::Requirement
71
+ none: false
72
+ requirements:
73
+ - - ! '>='
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ requirements: []
77
+ rubyforge_project:
78
+ rubygems_version: 1.6.2
79
+ signing_key:
80
+ specification_version: 3
81
+ summary: ost(1)
82
+ test_files: []