comana 0.0.0 → 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
data/comana.gemspec ADDED
@@ -0,0 +1,62 @@
1
+ # Generated by jeweler
2
+ # DO NOT EDIT THIS FILE DIRECTLY
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
+ # -*- encoding: utf-8 -*-
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = "comana"
8
+ s.version = "0.0.1"
9
+
10
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
+ s.authors = ["ippei94da"]
12
+ s.date = "2012-04-23"
13
+ s.description = "An aim of this gem is to provide a framework of\n managing scientific computing.\n Researchers on computing have to check calculation and\n generate new calculation and execute, repeatedly.\n The abstract class that this gem provide would help the work.\n "
14
+ s.email = "ippei94da@gmail.com"
15
+ s.extra_rdoc_files = [
16
+ "LICENSE.txt",
17
+ "README.rdoc"
18
+ ]
19
+ s.files = [
20
+ ".document",
21
+ ".rspec",
22
+ "Gemfile",
23
+ "LICENSE.txt",
24
+ "README.rdoc",
25
+ "Rakefile",
26
+ "VERSION",
27
+ "comana.gemspec",
28
+ "lib/comana.rb",
29
+ "spec/comana_spec.rb",
30
+ "spec/spec_helper.rb"
31
+ ]
32
+ s.homepage = "http://github.com/ippei94da/comana"
33
+ s.licenses = ["MIT"]
34
+ s.require_paths = ["lib"]
35
+ s.rubygems_version = "1.8.11"
36
+ s.summary = "Manager for scientific computing"
37
+
38
+ if s.respond_to? :specification_version then
39
+ s.specification_version = 3
40
+
41
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
42
+ s.add_development_dependency(%q<rspec>, ["~> 2.9.0"])
43
+ s.add_development_dependency(%q<rdoc>, ["~> 3.12"])
44
+ s.add_development_dependency(%q<bundler>, ["~> 1.1.3"])
45
+ s.add_development_dependency(%q<jeweler>, ["~> 1.8.3"])
46
+ s.add_development_dependency(%q<simplecov>, [">= 0"])
47
+ else
48
+ s.add_dependency(%q<rspec>, ["~> 2.9.0"])
49
+ s.add_dependency(%q<rdoc>, ["~> 3.12"])
50
+ s.add_dependency(%q<bundler>, ["~> 1.1.3"])
51
+ s.add_dependency(%q<jeweler>, ["~> 1.8.3"])
52
+ s.add_dependency(%q<simplecov>, [">= 0"])
53
+ end
54
+ else
55
+ s.add_dependency(%q<rspec>, ["~> 2.9.0"])
56
+ s.add_dependency(%q<rdoc>, ["~> 3.12"])
57
+ s.add_dependency(%q<bundler>, ["~> 1.1.3"])
58
+ s.add_dependency(%q<jeweler>, ["~> 1.8.3"])
59
+ s.add_dependency(%q<simplecov>, [">= 0"])
60
+ end
61
+ end
62
+
data/lib/comana.rb CHANGED
@@ -11,6 +11,8 @@ class Comana
11
11
  class NotImplementedError < Exception; end
12
12
  class AlreadyStartedError < Exception; end
13
13
 
14
+ attr_reader :dir
15
+
14
16
  #
15
17
  def initialize(dir)
16
18
  @dir = dir
@@ -67,7 +69,7 @@ class Comana
67
69
  # e.g.,
68
70
  #@logfile = "comana.log"
69
71
  #@alive_time = 3600
70
- #@outfiles = ["output_a", "ouput_b"] # should be use files only to output.
72
+ #@outfiles = ["output_a", "ouput_b"] # Files only to output should be indicated.
71
73
  end
72
74
 
73
75
  # Return latest modified time of files in calc dir recursively.
@@ -80,7 +82,11 @@ class Comana
80
82
  end
81
83
 
82
84
  def started?
83
- File.exist?( "#{@dir}/#{@logfile}" )
85
+ return true if File.exist?( "#{@dir}/#{@logfile}" )
86
+ @outfiles.each do |file|
87
+ return true if File.exist?( "#{@dir}/#{file}" )
88
+ end
89
+ return false
84
90
  end
85
91
 
86
92
  # Return true if the condition is satisfied.
data/spec/comana_spec.rb CHANGED
@@ -3,8 +3,8 @@ require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
3
3
 
4
4
  NOW = Time.now
5
5
  CALC_DIR = "spec/dummy"
6
- LOG = "#{CALC_DIR}/log"
7
- #OUTFILES = ["output_a"]
6
+ LOCKFILE = "#{CALC_DIR}/log"
7
+ OUTFILES = ["#{CALC_DIR}/output_a", "#{CALC_DIR}/output_b"]
8
8
 
9
9
  class Comana
10
10
  public :latest_modified_time, :started?
@@ -13,14 +13,10 @@ end
13
13
  class CalcFinished < Comana
14
14
  def normal_ended? ; true ; end
15
15
  def finished? ; true ; end
16
- def send_command ; ; end
17
- def prepare_next ; ; end
18
- def initial_state ; ; end
19
- def latest_state ; ; end
20
- def teardown ; ; end
21
16
  def set_parameters
22
17
  @logfile = "log"
23
18
  @alive_time = 500
19
+ @outfiles = []
24
20
  end
25
21
  end
26
22
 
@@ -28,14 +24,10 @@ describe Comana, "with not calculated" do
28
24
  class CalcYet < Comana
29
25
  def normal_ended? ; false ; end
30
26
  def finished? ; false ; end
31
- def send_command ; ; end
32
- def prepare_next ; ; end
33
- def initial_state ; ; end
34
- def latest_state ; ; end
35
- def teardown ; ; end
36
27
  def set_parameters
37
28
  @logfile = "log"
38
29
  @alive_time = 3600
30
+ @outfiles = []
39
31
  end
40
32
  end
41
33
  before do
@@ -43,7 +35,7 @@ describe Comana, "with not calculated" do
43
35
 
44
36
  File.utime(NOW - 1000 ,NOW - 1000, "#{CALC_DIR}/input_a")
45
37
  File.utime(NOW - 2000 ,NOW - 2000, "#{CALC_DIR}/input_b")
46
- FileUtils.rm(LOG) if File.exist?(LOG)
38
+ FileUtils.rm(LOCKFILE) if File.exist?(LOCKFILE)
47
39
  end
48
40
 
49
41
  it "should return the state" do
@@ -60,12 +52,12 @@ describe Comana, "with not calculated" do
60
52
  end
61
53
 
62
54
  it "should return true with log." do
63
- File.open(LOG, "w")
55
+ File.open(LOCKFILE, "w")
64
56
  @calc.started?.should be_true
65
57
  end
66
58
 
67
59
  after do
68
- FileUtils.rm(LOG) if File.exist?(LOG)
60
+ FileUtils.rm(LOCKFILE) if File.exist?(LOCKFILE)
69
61
  end
70
62
  end
71
63
 
@@ -73,14 +65,10 @@ describe Comana, "with log" do
73
65
  class CalcStarted < Comana
74
66
  def normal_ended? ; false ; end
75
67
  def finished? ; false ; end
76
- def send_command ; ; end
77
- def prepare_next ; ; end
78
- def initial_state ; ; end
79
- def latest_state ; ; end
80
- def teardown ; ; end
81
68
  def set_parameters
82
69
  @logfile = "log"
83
70
  @alive_time = 5000
71
+ @outfiles = []
84
72
  end
85
73
  end
86
74
 
@@ -88,7 +76,7 @@ describe Comana, "with log" do
88
76
  @calc = CalcStarted .new(CALC_DIR)
89
77
  File.utime(NOW - 1000 ,NOW - 1000, "#{CALC_DIR}/input_a")
90
78
  File.utime(NOW - 2000 ,NOW - 2000, "#{CALC_DIR}/input_b")
91
- File.open(LOG, "w")
79
+ File.open(LOCKFILE, "w")
92
80
  end
93
81
 
94
82
  it "should return :started" do
@@ -96,51 +84,46 @@ describe Comana, "with log" do
96
84
  end
97
85
 
98
86
  after do
99
- FileUtils.rm(LOG) if File.exist?(LOG)
87
+ FileUtils.rm(LOCKFILE) if File.exist?(LOCKFILE)
100
88
  end
101
89
  end
102
90
 
103
- #describe Comana, "with output" do
104
- # class CalcStarted < Comana
105
- # def normal_ended? ; false ; end
106
- # def finished? ; false ; end
107
- # def send_command ; ; end
108
- # def prepare_next ; ; end
109
- # def initial_state ; ; end
110
- # def latest_state ; ; end
111
- # def teardown ; ; end
112
- # def set_parameters
113
- # @logfile = "log"
114
- # @alive_time = 5000
115
- # end
116
- # end
117
- #
118
- # before do
119
- # @calc = CalcStarted .new(CALC_DIR)
120
- # File.utime(NOW - 1000 ,NOW - 1000, "#{CALC_DIR}/input_a")
121
- # File.utime(NOW - 2000 ,NOW - 2000, "#{CALC_DIR}/input_b")
122
- # #File.open(OUTPUT, "w")
123
- # end
124
- #
125
- # it "should return :started"
126
- #
127
- # after do
128
- # FileUtils.rm(LOG) if File.exist?(LOG)
129
- # end
130
- #end
91
+ describe Comana, "with output, without lock" do
92
+ class CalcStarted < Comana
93
+ def normal_ended? ; false ; end
94
+ def finished? ; false ; end
95
+ def set_parameters
96
+ @logfile = "log"
97
+ @alive_time = 5000
98
+ @outfiles = []
99
+ @outfiles = ["output_a", "output_b"]
100
+ end
101
+ end
102
+
103
+ before do
104
+ @calc = CalcStarted .new(CALC_DIR)
105
+ File.utime(NOW - 1000 ,NOW - 1000, "#{CALC_DIR}/input_a")
106
+ File.utime(NOW - 2000 ,NOW - 2000, "#{CALC_DIR}/input_b")
107
+ File.open(OUTFILES[0], "w")
108
+ end
109
+
110
+ it "should return :started" do
111
+ @calc.state.should == :started
112
+ end
113
+
114
+ after do
115
+ FileUtils.rm(OUTFILES[0]) if File.exist?(OUTFILES[0])
116
+ end
117
+ end
131
118
 
132
119
  describe Comana, "with terminated" do
133
120
  class CalcTerminated < Comana
134
121
  def normal_ended? ; false ; end
135
122
  def finished? ; false ; end
136
- def send_command ; ; end
137
- def prepare_next ; ; end
138
- def initial_state ; ; end
139
- def latest_state ; ; end
140
- def teardown ; ; end
141
123
  def set_parameters
142
124
  @logfile = "log"
143
125
  @alive_time = 500
126
+ @outfiles = []
144
127
  end
145
128
  end
146
129
 
@@ -149,17 +132,17 @@ describe Comana, "with terminated" do
149
132
 
150
133
  File.utime(NOW - 1000 ,NOW - 1000, "#{CALC_DIR}/input_a")
151
134
  File.utime(NOW - 2000 ,NOW - 2000, "#{CALC_DIR}/input_b")
152
- File.open(LOG, "w")
135
+ File.open(LOCKFILE, "w")
153
136
  end
154
137
 
155
138
  it "should return the state" do
156
- File.open(LOG, "w")
157
- File.utime(NOW - 1000 ,NOW - 1000, LOG)
139
+ File.open(LOCKFILE, "w")
140
+ File.utime(NOW - 1000 ,NOW - 1000, LOCKFILE)
158
141
  @calc_terminated .state.should == :terminated
159
142
  end
160
143
 
161
144
  after do
162
- FileUtils.rm(LOG) if File.exist?(LOG)
145
+ FileUtils.rm(LOCKFILE) if File.exist?(LOCKFILE)
163
146
  end
164
147
  end
165
148
 
@@ -167,14 +150,10 @@ describe Comana, "with next" do
167
150
  class CalcNext < Comana
168
151
  def normal_ended? ; true ; end
169
152
  def finished? ; false ; end
170
- def send_command ; ; end
171
- def prepare_next ; ; end
172
- def initial_state ; ; end
173
- def latest_state ; ; end
174
- def teardown ; ; end
175
153
  def set_parameters
176
154
  @logfile = "log"
177
155
  @alive_time = 500
156
+ @outfiles = []
178
157
  end
179
158
  end
180
159
 
@@ -183,18 +162,18 @@ describe Comana, "with next" do
183
162
 
184
163
  File.utime(NOW - 1000 ,NOW - 1000, "#{CALC_DIR}/input_a")
185
164
  File.utime(NOW - 2000 ,NOW - 2000, "#{CALC_DIR}/input_b")
186
- File.open(LOG, "w")
165
+ File.open(LOCKFILE, "w")
187
166
  end
188
167
 
189
168
  it "should return the state" do
190
169
 
191
- File.open(LOG, "w")
192
- File.utime(NOW - 1000 ,NOW - 1000, LOG)
170
+ File.open(LOCKFILE, "w")
171
+ File.utime(NOW - 1000 ,NOW - 1000, LOCKFILE)
193
172
  @calc_next .state.should == :next
194
173
  end
195
174
 
196
175
  after do
197
- FileUtils.rm(LOG) if File.exist?(LOG)
176
+ FileUtils.rm(LOCKFILE) if File.exist?(LOCKFILE)
198
177
  end
199
178
  end
200
179
 
@@ -204,18 +183,18 @@ describe Comana, "with finished" do
204
183
 
205
184
  File.utime(NOW - 1000 ,NOW - 1000, "#{CALC_DIR}/input_a")
206
185
  File.utime(NOW - 2000 ,NOW - 2000, "#{CALC_DIR}/input_b")
207
- #FileUtils.rm(LOG) if File.exist?(LOG)
208
- File.open(LOG, "w")
186
+ #FileUtils.rm(LOCKFILE) if File.exist?(LOCKFILE)
187
+ File.open(LOCKFILE, "w")
209
188
  end
210
189
 
211
190
  it "should return the state" do
212
191
 
213
- File.open(LOG, "w")
214
- File.utime(NOW - 1000 ,NOW - 1000, LOG)
192
+ File.open(LOCKFILE, "w")
193
+ File.utime(NOW - 1000 ,NOW - 1000, LOCKFILE)
215
194
  @calc_finished .state.should == :finished
216
195
  end
217
196
 
218
197
  after do
219
- FileUtils.rm(LOG) if File.exist?(LOG)
198
+ FileUtils.rm(LOCKFILE) if File.exist?(LOCKFILE)
220
199
  end
221
200
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: comana
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.0
4
+ version: 0.0.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-04-03 00:00:00.000000000 Z
12
+ date: 2012-04-23 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rspec
16
- requirement: !ruby/object:Gem::Requirement
16
+ requirement: &82627330 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
@@ -21,15 +21,10 @@ dependencies:
21
21
  version: 2.9.0
22
22
  type: :development
23
23
  prerelease: false
24
- version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
- requirements:
27
- - - ~>
28
- - !ruby/object:Gem::Version
29
- version: 2.9.0
24
+ version_requirements: *82627330
30
25
  - !ruby/object:Gem::Dependency
31
26
  name: rdoc
32
- requirement: !ruby/object:Gem::Requirement
27
+ requirement: &82626650 !ruby/object:Gem::Requirement
33
28
  none: false
34
29
  requirements:
35
30
  - - ~>
@@ -37,15 +32,10 @@ dependencies:
37
32
  version: '3.12'
38
33
  type: :development
39
34
  prerelease: false
40
- version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
- requirements:
43
- - - ~>
44
- - !ruby/object:Gem::Version
45
- version: '3.12'
35
+ version_requirements: *82626650
46
36
  - !ruby/object:Gem::Dependency
47
37
  name: bundler
48
- requirement: !ruby/object:Gem::Requirement
38
+ requirement: &82625910 !ruby/object:Gem::Requirement
49
39
  none: false
50
40
  requirements:
51
41
  - - ~>
@@ -53,15 +43,10 @@ dependencies:
53
43
  version: 1.1.3
54
44
  type: :development
55
45
  prerelease: false
56
- version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
- requirements:
59
- - - ~>
60
- - !ruby/object:Gem::Version
61
- version: 1.1.3
46
+ version_requirements: *82625910
62
47
  - !ruby/object:Gem::Dependency
63
48
  name: jeweler
64
- requirement: !ruby/object:Gem::Requirement
49
+ requirement: &82624270 !ruby/object:Gem::Requirement
65
50
  none: false
66
51
  requirements:
67
52
  - - ~>
@@ -69,15 +54,10 @@ dependencies:
69
54
  version: 1.8.3
70
55
  type: :development
71
56
  prerelease: false
72
- version_requirements: !ruby/object:Gem::Requirement
73
- none: false
74
- requirements:
75
- - - ~>
76
- - !ruby/object:Gem::Version
77
- version: 1.8.3
57
+ version_requirements: *82624270
78
58
  - !ruby/object:Gem::Dependency
79
59
  name: simplecov
80
- requirement: !ruby/object:Gem::Requirement
60
+ requirement: &82623330 !ruby/object:Gem::Requirement
81
61
  none: false
82
62
  requirements:
83
63
  - - ! '>='
@@ -85,12 +65,7 @@ dependencies:
85
65
  version: '0'
86
66
  type: :development
87
67
  prerelease: false
88
- version_requirements: !ruby/object:Gem::Requirement
89
- none: false
90
- requirements:
91
- - - ! '>='
92
- - !ruby/object:Gem::Version
93
- version: '0'
68
+ version_requirements: *82623330
94
69
  description: ! "An aim of this gem is to provide a framework of\n managing scientific
95
70
  computing.\n Researchers on computing have to check calculation and\n generate
96
71
  new calculation and execute, repeatedly.\n The abstract class that this gem provide
@@ -109,10 +84,9 @@ files:
109
84
  - README.rdoc
110
85
  - Rakefile
111
86
  - VERSION
87
+ - comana.gemspec
112
88
  - lib/comana.rb
113
89
  - spec/comana_spec.rb
114
- - spec/dummy/input_a
115
- - spec/dummy/input_b
116
90
  - spec/spec_helper.rb
117
91
  homepage: http://github.com/ippei94da/comana
118
92
  licenses:
@@ -129,7 +103,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
129
103
  version: '0'
130
104
  segments:
131
105
  - 0
132
- hash: 940464947
106
+ hash: -857450093
133
107
  required_rubygems_version: !ruby/object:Gem::Requirement
134
108
  none: false
135
109
  requirements:
@@ -138,7 +112,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
138
112
  version: '0'
139
113
  requirements: []
140
114
  rubyforge_project:
141
- rubygems_version: 1.8.21
115
+ rubygems_version: 1.8.11
142
116
  signing_key:
143
117
  specification_version: 3
144
118
  summary: Manager for scientific computing
data/spec/dummy/input_a DELETED
File without changes
data/spec/dummy/input_b DELETED
File without changes