sge 0.0.1 → 0.0.2

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.
@@ -0,0 +1,53 @@
1
+ require 'spec_helper'
2
+
3
+ describe SGE::QAcct::Job do
4
+ let(:klass){ SGE::QAcct::Job }
5
+ context "Class Methods" do
6
+ subject{klass}
7
+
8
+ it { should respond_to(:command) }
9
+ it { should respond_to(:load_documents) }
10
+
11
+ it "should accept a command" do
12
+ klass.command(:cmd => "ls -l").should == "ls -l"
13
+ end
14
+
15
+ context "loading documents" do
16
+ let(:file){ File.expand_path('../../data/qacct.sge',__FILE__)}
17
+
18
+ it "should load documents" do
19
+ docs = klass.load_documents(:cmd => "cat #{file}", :remove_tmp_file => true)
20
+ docs.should_not be_empty
21
+ end
22
+
23
+ it "should receive a block" do
24
+ doc = nil
25
+ klass.load_documents(:cmd => "cat #{file}", :remove_tmp_file => true) do |d|
26
+ doc = d
27
+ break
28
+ end
29
+ doc.should be_an_instance_of(klass)
30
+ end
31
+ end
32
+
33
+ it "should execute" do
34
+ Kernel.should_receive("system").once.with("ls").and_return "A list of files"
35
+ klass.execute('ls').should == "A list of files"
36
+ end
37
+ end
38
+
39
+ context "FIELDS" do
40
+ it "should define constant FIELD" do
41
+ SGE::QAcct::Job.should be_const_defined(:FIELDS)
42
+ SGE::QAcct::Job::FIELDS.should == [:qname, :hostname, :group, :owner, :project, :department, :jobname, :jobnumber, :taskid, :account, :priority, :qsub_time, :start_time, :end_time, :granted_pe, :slots, :failed, :exit_status, :ru_wallclock, :ru_utime, :ru_stime, :ru_maxrss, :ru_ixrss, :ru_ismrss, :ru_idrss, :ru_isrss, :ru_minflt, :ru_majflt, :ru_nswap, :ru_inblock, :ru_oublock, :ru_msgsnd, :ru_msgrcv, :ru_nsignals, :ru_nvcsw, :ru_nivcsw, :cpu, :mem, :io, :iow, :maxvmem, :arid]
43
+ end
44
+
45
+ it "should define accessor for each fields" do
46
+ klass::FIELDS.each do |f|
47
+ subject.should respond_to(f)
48
+ subject.should respond_to("#{f}=")
49
+ end
50
+ end
51
+ end
52
+
53
+ end
@@ -0,0 +1,47 @@
1
+ require 'spec_helper'
2
+
3
+ describe SGE::QAcct::Transformer do
4
+ it { should respond_to(:transformer_file)}
5
+ it { should respond_to(:command)}
6
+ it { should respond_to(:load_from_yaml_file)}
7
+
8
+ let (:sh_file){ subject.transformer_file}
9
+
10
+ context "#transformer_file" do
11
+ it "should point to the utility file" do
12
+ sh_file.should == File.expand_path('../../../utils/transform_to_yaml.sh', __FILE__)
13
+ end
14
+ end
15
+
16
+ context "#command" do
17
+ it "should accept :file options" do
18
+ lambda{ subject.command}.should raise_error("We need a file to dump the yaml")
19
+ subject.command(:file => "hello.world").should == "echo | #{sh_file} > hello.world &"
20
+ subject.command(:file => "hello.world", :blocking => true).should == "echo | #{sh_file} > hello.world"
21
+ end
22
+
23
+ it "should accept :cmd options" do
24
+ subject.command(:cmd => "echo 'Hello World!'", :file => "hello.world").should == "echo 'Hello World!' | #{sh_file} > hello.world &"
25
+ subject.command(:cmd => "echo 'Hello World!'", :file => "hello.world", :blocking => true).should == "echo 'Hello World!' | #{sh_file} > hello.world"
26
+ end
27
+ end
28
+
29
+ context "#load_from_yaml_file" do
30
+ let(:file){ File.expand_path('../../data/qacct.yml',__FILE__)}
31
+
32
+ it "should accept a block" do
33
+ lambda{ subject.load_from_yaml_file(file, false) }.should raise_error
34
+ end
35
+
36
+ it "should reads docs" do
37
+ documents = []
38
+ documents.should be_empty
39
+ subject.load_from_yaml_file(file, false) do |doc|
40
+ documents << doc
41
+ end
42
+ documents.should_not be_empty
43
+ documents.should be_all {|d| SGE::QAcct::Job === d }
44
+ end
45
+
46
+ end
47
+ end
@@ -3,7 +3,7 @@ require 'spec_helper'
3
3
  describe SGE::QStat::Job do
4
4
 
5
5
  it "should respond_to define_attributes" do
6
- SGE::Job.should respond_to(:define_attributes)
6
+ SGE::QStat::Job.should respond_to(:define_attributes)
7
7
  end
8
8
 
9
9
  it { should respond_to(:job_number)}
@@ -0,0 +1,17 @@
1
+ require 'spec_helper'
2
+
3
+ describe SGE::Utils do
4
+ it { should respond_to(:mkfifo)}
5
+
6
+ describe "#mkfifo" do
7
+ it "should make a fifo file" do
8
+ lambda{ SGE::Utils.mkfifo }.should raise_error
9
+ tmp_dir = "."
10
+ file = SGE::Utils.mkfifo(tmp_dir)
11
+ file.should =~ %r<^\.\/fifo\.....>
12
+ File.stat(file).should be_pipe
13
+ File.unlink file
14
+ end
15
+ end
16
+
17
+ end
@@ -0,0 +1,3 @@
1
+ #!/bin/bash
2
+
3
+ sed -e 's/ \{1,\}$//g' -e 's/ \{1,\}/ /g' -e 's/^\([^ ]\{1,\}\) \{1,\}\(.\{1,\}\)$/\1: "\2"/g' -e 's/===*/--- !ruby\/object:SGE::QAcct::Job/g'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sge
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
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-01-23 00:00:00.000000000Z
12
+ date: 2012-01-27 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: nokogiri
16
- requirement: &11512840 !ruby/object:Gem::Requirement
16
+ requirement: &70281742743320 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *11512840
24
+ version_requirements: *70281742743320
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: rspec
27
- requirement: &11511820 !ruby/object:Gem::Requirement
27
+ requirement: &70281742742520 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *11511820
35
+ version_requirements: *70281742742520
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: rake
38
- requirement: &11510620 !ruby/object:Gem::Requirement
38
+ requirement: &70281742741680 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,7 +43,7 @@ dependencies:
43
43
  version: '0'
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *11510620
46
+ version_requirements: *70281742741680
47
47
  description: Sun Grid Engine ruby library
48
48
  email:
49
49
  - hery@rails-royce.org
@@ -54,23 +54,34 @@ files:
54
54
  - .gitignore
55
55
  - .rspec
56
56
  - Gemfile
57
+ - Guardfile
58
+ - README.markdown
57
59
  - Rakefile
58
60
  - lib/sge.rb
59
61
  - lib/sge/command_runner.rb
60
- - lib/sge/job.rb
61
62
  - lib/sge/job_helpers.rb
63
+ - lib/sge/qacct.rb
64
+ - lib/sge/qacct/job.rb
65
+ - lib/sge/qacct/transformer.rb
66
+ - lib/sge/qstat.rb
62
67
  - lib/sge/qstat/job.rb
63
68
  - lib/sge/qstat/parser.rb
64
69
  - lib/sge/summary.rb
70
+ - lib/sge/utils.rb
65
71
  - lib/sge/version.rb
66
72
  - sge.gemspec
67
73
  - spec/command_runner_spec.rb
68
74
  - spec/data/detailed_jobs.sge
69
75
  - spec/data/jobs.sge
70
- - spec/job_spec.rb
71
- - spec/qstat_job_spec.rb
72
- - spec/qstat_parser_spec.rb
76
+ - spec/data/qacct.sge
77
+ - spec/data/qacct.yml
78
+ - spec/qacct/job_spec.rb
79
+ - spec/qacct/transformer_spec.rb
80
+ - spec/qstat/job_spec.rb
81
+ - spec/qstat/parser_spec.rb
73
82
  - spec/spec_helper.rb
83
+ - spec/utils_spec.rb
84
+ - utils/transform_to_yaml.sh
74
85
  homepage: ''
75
86
  licenses: []
76
87
  post_install_message:
@@ -85,7 +96,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
85
96
  version: '0'
86
97
  segments:
87
98
  - 0
88
- hash: -2725906077928441340
99
+ hash: -946621893360154507
89
100
  required_rubygems_version: !ruby/object:Gem::Requirement
90
101
  none: false
91
102
  requirements:
@@ -94,10 +105,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
94
105
  version: '0'
95
106
  segments:
96
107
  - 0
97
- hash: -2725906077928441340
108
+ hash: -946621893360154507
98
109
  requirements: []
99
110
  rubyforge_project: sge
100
- rubygems_version: 1.8.15
111
+ rubygems_version: 1.8.10
101
112
  signing_key:
102
113
  specification_version: 3
103
114
  summary: Sun Grid Engine ruby library
@@ -105,7 +116,11 @@ test_files:
105
116
  - spec/command_runner_spec.rb
106
117
  - spec/data/detailed_jobs.sge
107
118
  - spec/data/jobs.sge
108
- - spec/job_spec.rb
109
- - spec/qstat_job_spec.rb
110
- - spec/qstat_parser_spec.rb
119
+ - spec/data/qacct.sge
120
+ - spec/data/qacct.yml
121
+ - spec/qacct/job_spec.rb
122
+ - spec/qacct/transformer_spec.rb
123
+ - spec/qstat/job_spec.rb
124
+ - spec/qstat/parser_spec.rb
111
125
  - spec/spec_helper.rb
126
+ - spec/utils_spec.rb
@@ -1,18 +0,0 @@
1
- module SGE
2
- class Job
3
- include SGE::JobHelpers
4
- define_attributes(
5
- :JB_job_number => :job_number,
6
- :JAT_prio => :priority,
7
- :JB_name => :name,
8
- :JB_owner => :owner,
9
- :JAT_start_time => :start_time,
10
- :queue_name => :queue_name,
11
- :slots => :slots,
12
- :state => :state,
13
- :cpu => :cpu,
14
- :JB_submission_time => :submission_time
15
- )
16
-
17
- end
18
- end
@@ -1,53 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe SGE::Job do
4
- it "should respond_to define_attributes" do
5
- SGE::Job.should respond_to(:define_attributes)
6
- end
7
-
8
- it { should respond_to(:job_number) }
9
- it { should respond_to(:priority) }
10
- it { should respond_to(:name) }
11
- it { should respond_to(:queue_name) }
12
- it { should respond_to(:start_time) }
13
- it { should respond_to(:slots) }
14
- it { should respond_to(:state) }
15
- it { should respond_to(:owner) }
16
-
17
- it { should respond_to(:job_number=) }
18
- it { should respond_to(:priority=) }
19
- it { should respond_to(:name=) }
20
- it { should respond_to(:queue_name=) }
21
- it { should respond_to(:start_time=) }
22
- it { should respond_to(:slots=) }
23
- it { should respond_to(:state=) }
24
- it { should respond_to(:owner=) }
25
-
26
- it "should retrieve data from XML document" do
27
- string = %Q{
28
- <job_list state="running">
29
- <JB_job_number>2337</JB_job_number>
30
- <JAT_prio>0.55451</JAT_prio>
31
- <JB_name>s20100220_11;init_jour</JB_name>
32
- <JB_owner>prodsoft</JB_owner>
33
- <state>r</state>
34
- <JAT_start_time>2010-02-24T21:55:13</JAT_start_time>
35
- <queue_name>calcul-x@wousdat-dev.in.weborama.fr</queue_name>
36
- <slots>1</slots>
37
- </job_list>
38
- }
39
- doc = Nokogiri::XML::Document.new.parse(string)
40
- lambda{ @job = SGE::Job.from_document(doc) }.should_not raise_error
41
- @job.job_number.should == '2337'
42
- @job.priority.should == '0.55451'
43
- @job.name.should == 's20100220_11;init_jour'
44
- @job.owner.should == 'prodsoft'
45
- @job.state.should == 'r'
46
- @job.start_time.should == '2010-02-24T21:55:13'
47
- @job.queue_name.should == 'calcul-x@wousdat-dev.in.weborama.fr'
48
- @job.slots.should == '1'
49
- end
50
-
51
- end
52
-
53
-