ost-bin 0.0.1

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.
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: []