bookie_accounting 1.1.1 → 1.1.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 51d9831cfce7c78318df081d81a40661536c00d4
4
+ data.tar.gz: 0da6780bd2c5f3fd1db7fcbc2207338873ab1c28
5
+ SHA512:
6
+ metadata.gz: 6fdab8622a6f572d45e4c7895d4f9ceab4d0bddb3e3f306f6c4e25a1735ddf4715ca39f916d9e125187bd7b93ca801eda70245c9bde68f4b66f69bd528a7c43e
7
+ data.tar.gz: 3cc99f7f5346c2fa5a41373a33b093568ef4632d40eb443df62d0a336c879c8454184c663b83a3180cd7292aceb99caa51c7ee4965066c750345e2691d332463
data/Gemfile CHANGED
@@ -2,3 +2,8 @@ source 'https://rubygems.org'
2
2
 
3
3
  gemspec
4
4
 
5
+ gem 'bundler', :group => :development
6
+ gem 'mocha', :group => :development
7
+ gem 'rspec', :group => :development
8
+ gem 'sqlite3', :group => :development
9
+
@@ -23,9 +23,9 @@ Gem::Specification.new do |gem|
23
23
  #To do: figure out how to remove (file issue?)
24
24
  gem.add_dependency('mysql2')
25
25
  gem.add_dependency('pacct')
26
+ #Introduces the old ActiveRecord mass assignment security methods
27
+ #(until I update the database code for the new methods)
28
+ gem.add_dependency('protected_attributes')
26
29
  gem.add_dependency('spreadsheet')
27
- gem.add_development_dependency('bundler')
28
- gem.add_development_dependency('mocha')
29
- gem.add_development_dependency('rspec')
30
- gem.add_development_dependency('sqlite3')
31
30
  end
31
+
@@ -2,6 +2,8 @@ require 'bookie/config'
2
2
  require 'bookie/extensions'
3
3
 
4
4
  require 'active_record'
5
+ #To do: remove when code is updated.
6
+ require 'protected_attributes'
5
7
 
6
8
  module Bookie
7
9
  ##
@@ -176,8 +178,10 @@ module Bookie
176
178
  #Returns an array of all jobs, pre-loading relations to reduce the need for extra queries
177
179
  #
178
180
  #Relations are not cached between calls.
181
+ #
182
+ #To do: use ActiveRecord's #includes instead of this scheme?
179
183
  def self.all_with_relations
180
- jobs = all
184
+ jobs = self.all.to_a
181
185
  users = {}
182
186
  groups = {}
183
187
  systems = {}
@@ -439,7 +443,7 @@ module Bookie
439
443
  date_range = date_begin ... date_end
440
444
 
441
445
  unscoped = self.unscoped
442
- summaries = by_date_range(date_range).order(:date).all
446
+ summaries = by_date_range(date_range).order(:date).to_a
443
447
  index = 0
444
448
  date_range.each do |date|
445
449
  new_index = index
@@ -625,7 +629,7 @@ Please make sure that all previous systems with this hostname have been marked a
625
629
  #
626
630
  #Relations are not cached between calls.
627
631
  def self.all_with_relations
628
- systems = all
632
+ systems = self.all.to_a
629
633
  system_types = {}
630
634
  systems.each do |system|
631
635
  system_type = system_types[system.system_type_id]
data/lib/bookie/sender.rb CHANGED
@@ -138,7 +138,7 @@ module Bookie
138
138
  #Used internally by #send_data and #undo_send
139
139
  def clear_summaries(date_min, date_max)
140
140
  #Since joins don't mix with DELETE statements, we have to do this the hard way.
141
- systems = Database::System.by_name(@config.hostname).all
141
+ systems = Database::System.by_name(@config.hostname).to_a
142
142
  systems.map!{ |sys| sys.id }
143
143
  Database::JobSummary.where('job_summaries.system_id in (?)', systems).where('date >= ? AND date <= ?', date_min, date_max).delete_all
144
144
  end
@@ -1,4 +1,4 @@
1
1
  module Bookie
2
2
  #The library version
3
- VERSION = "1.1.1"
3
+ VERSION = "1.1.2"
4
4
  end
@@ -33,7 +33,7 @@ describe Bookie::Formatters::CommaDump do
33
33
 
34
34
  it "correctly formats jobs" do
35
35
  with_utc do
36
- @formatter.print_jobs(@jobs.order(:start_time).limit(2).all)
36
+ @formatter.print_jobs(@jobs.order(:start_time).limit(2).to_a)
37
37
  @m.buf.should eql <<-eos
38
38
  User, Group, System, System type, Start time, End time, Wall time, CPU time, Memory usage, Command, Exit code
39
39
  "root", "root", "test1", "Standalone", "2012-01-01 00:00:00", "2012-01-01 01:00:00", "0 weeks, 0 days, 01:00:00", "0 weeks, 0 days, 00:01:40", "200kb (avg)", "vi", "0"
@@ -124,7 +124,7 @@ describe Bookie::Database do
124
124
 
125
125
  it "correctly filters by user" do
126
126
  user = Bookie::Database::User.by_name('test').order(:id).first
127
- jobs = @jobs.by_user(user).all
127
+ jobs = @jobs.by_user(user).to_a
128
128
  jobs.each do |job|
129
129
  job.user.should eql user
130
130
  end
@@ -132,29 +132,29 @@ describe Bookie::Database do
132
132
  end
133
133
 
134
134
  it "correctly filters by user name" do
135
- jobs = @jobs.by_user_name('root').all
135
+ jobs = @jobs.by_user_name('root').to_a
136
136
  jobs.length.should eql 10
137
137
  jobs[0].user.name.should eql "root"
138
- jobs = @jobs.by_user_name('test').order(:end_time).all
138
+ jobs = @jobs.by_user_name('test').order(:end_time).to_a
139
139
  jobs.length.should eql 20
140
140
  jobs.each do |job|
141
141
  job.user.name.should eql 'test'
142
142
  end
143
143
  jobs[0].user_id.should_not eql jobs[-1].user_id
144
- jobs = @jobs.by_user_name('user').all
144
+ jobs = @jobs.by_user_name('user').to_a
145
145
  jobs.length.should eql 0
146
146
  end
147
147
 
148
148
  it "correctly filters by group name" do
149
- jobs = @jobs.by_group_name("root").all
149
+ jobs = @jobs.by_group_name("root").to_a
150
150
  jobs.length.should eql 10
151
151
  jobs.each do |job|
152
152
  job.user.group.name.should eql "root"
153
153
  end
154
- jobs = @jobs.by_group_name("admin").order(:start_time).all
154
+ jobs = @jobs.by_group_name("admin").order(:start_time).to_a
155
155
  jobs.length.should eql 20
156
156
  jobs[0].user.name.should_not eql jobs[1].user.name
157
- jobs = @jobs.by_group_name("test").all
157
+ jobs = @jobs.by_group_name("test").to_a
158
158
  jobs.length.should eql 0
159
159
  end
160
160
 
@@ -259,9 +259,8 @@ describe Bookie::Database do
259
259
 
260
260
  describe "#summary" do
261
261
  before(:all) do
262
- Time.expects(:now).returns(base_time + 36000 * 4).at_least_once
263
262
  @jobs = Bookie::Database::Job
264
- @length = @jobs.all.length
263
+ @length = @jobs.count
265
264
  @summary = Helpers::create_summaries(@jobs, base_time)
266
265
  end
267
266
 
@@ -355,8 +354,8 @@ describe Bookie::Database do
355
354
  describe "" do
356
355
  before(:all) do
357
356
  d = Date.new(2012)
358
- Bookie::Database::User.all.each do |user|
359
- Bookie::Database::System.all.each do |system|
357
+ Bookie::Database::User.find_each do |user|
358
+ Bookie::Database::System.find_each do |system|
360
359
  ['vi', 'emacs'].each do |command_name|
361
360
  (d ... d + 2).each do |date|
362
361
  Bookie::Database::JobSummary.create!(
@@ -376,7 +375,7 @@ describe Bookie::Database do
376
375
 
377
376
  it "correctly filters by date" do
378
377
  d = Date.new(2012)
379
- sums = Bookie::Database::JobSummary.by_date(d).all
378
+ sums = Bookie::Database::JobSummary.by_date(d).to_a
380
379
  sums.length.should eql 32
381
380
  sums.each do |sum|
382
381
  sum.date.should eql d
@@ -395,7 +394,7 @@ describe Bookie::Database do
395
394
 
396
395
  it "correctly filters by user" do
397
396
  u = Bookie::Database::User.first
398
- sums = Bookie::Database::JobSummary.by_user(u).all
397
+ sums = Bookie::Database::JobSummary.by_user(u).to_a
399
398
  sums.length.should eql 16
400
399
  sums.each do |sum|
401
400
  sum.user.should eql u
@@ -403,7 +402,7 @@ describe Bookie::Database do
403
402
  end
404
403
 
405
404
  it "correctly filters by user name" do
406
- sums = Bookie::Database::JobSummary.by_user_name('test').all
405
+ sums = Bookie::Database::JobSummary.by_user_name('test').to_a
407
406
  sums.length.should eql 32
408
407
  sums.each do |sum|
409
408
  sum.user.name.should eql 'test'
@@ -412,7 +411,7 @@ describe Bookie::Database do
412
411
 
413
412
  it "correctly filters by group" do
414
413
  g = Bookie::Database::Group.find_by_name('admin')
415
- sums = Bookie::Database::JobSummary.by_group(g).all
414
+ sums = Bookie::Database::JobSummary.by_group(g).to_a
416
415
  sums.length.should eql 32
417
416
  sums.each do |sum|
418
417
  sum.user.group.should eql g
@@ -420,7 +419,7 @@ describe Bookie::Database do
420
419
  end
421
420
 
422
421
  it "correctly filters by group name" do
423
- sums = Bookie::Database::JobSummary.by_group_name('admin').all
422
+ sums = Bookie::Database::JobSummary.by_group_name('admin').to_a
424
423
  sums.length.should eql 32
425
424
  sums.each do |sum|
426
425
  sum.user.group.name.should eql 'admin'
@@ -429,7 +428,7 @@ describe Bookie::Database do
429
428
 
430
429
  it "correctly filters by system" do
431
430
  s = Bookie::Database::System.first
432
- sums = Bookie::Database::JobSummary.by_system(s).all
431
+ sums = Bookie::Database::JobSummary.by_system(s).to_a
433
432
  sums.length.should eql 16
434
433
  sums.each do |sum|
435
434
  sum.system.should eql s
@@ -437,7 +436,7 @@ describe Bookie::Database do
437
436
  end
438
437
 
439
438
  it "correctly filters by system name" do
440
- sums = Bookie::Database::JobSummary.by_system_name('test1').all
439
+ sums = Bookie::Database::JobSummary.by_system_name('test1').to_a
441
440
  sums.length.should eql 32
442
441
  sums.each do |sum|
443
442
  sum.system.name.should eql 'test1'
@@ -446,7 +445,7 @@ describe Bookie::Database do
446
445
 
447
446
  it "correctly filters by system type" do
448
447
  s = Bookie::Database::SystemType.first
449
- sums = Bookie::Database::JobSummary.by_system_type(s).all
448
+ sums = Bookie::Database::JobSummary.by_system_type(s).to_a
450
449
  sums.length.should eql 32
451
450
  sums.each do |sum|
452
451
  sum.system.system_type.should eql s
@@ -454,7 +453,7 @@ describe Bookie::Database do
454
453
  end
455
454
 
456
455
  it "correctly filters by command name" do
457
- sums = Bookie::Database::JobSummary.by_command_name('vi').all
456
+ sums = Bookie::Database::JobSummary.by_command_name('vi').to_a
458
457
  sums.length.should eql 32
459
458
  sums.each do |sum|
460
459
  sum.command_name.should eql 'vi'
@@ -488,7 +487,7 @@ describe Bookie::Database do
488
487
  d = Date.new(2012)
489
488
  range = base_time ... base_time + 1.days
490
489
  Bookie::Database::JobSummary.summarize(d)
491
- sums = Bookie::Database::JobSummary.all
490
+ sums = Bookie::Database::JobSummary.all.to_a
492
491
  found_sums = Set.new
493
492
  sums.each do |sum|
494
493
  sum.date.should eql Date.new(2012)
@@ -498,7 +497,7 @@ describe Bookie::Database do
498
497
  found_sums.add([sum.user.id, sum.system.id, sum.command_name])
499
498
  end
500
499
  #Is it catching all of the combinations of categories?
501
- Bookie::Database::Job.by_time_range_inclusive(range).select('user_id, system_id, command_name').uniq.all.each do |values|
500
+ Bookie::Database::Job.by_time_range_inclusive(range).select('user_id, system_id, command_name').uniq.find_each do |values|
502
501
  values = [values.user_id, values.system_id, values.command_name]
503
502
  found_sums.include?(values).should eql true
504
503
  end
@@ -507,7 +506,7 @@ describe Bookie::Database do
507
506
  it "creates dummy summaries when there are no jobs" do
508
507
  d = Date.new(2012) + 5
509
508
  Bookie::Database::JobSummary.summarize(d)
510
- sums = Bookie::Database::JobSummary.by_date(d).all
509
+ sums = Bookie::Database::JobSummary.by_date(d).to_a
511
510
  sums.length.should eql 1
512
511
  sum = sums[0]
513
512
  sum.cpu_time.should eql 0
@@ -603,8 +602,9 @@ describe Bookie::Database do
603
602
  Bookie::Database::JobSummary.delete_all
604
603
  empty = Bookie::Database::System.limit(0)
605
604
  #Check the case where there are no systems.
606
- ActiveRecord::Relation.any_instance.expects(:'any?').at_least_once.returns(false)
607
- ActiveRecord::Relation.any_instance.expects(:first).at_least_once.returns(nil)
605
+ #Stub out methods of System's "Relation" class:
606
+ Bookie::Database::System.where('1=1').class.any_instance.expects(:'any?').at_least_once.returns(false)
607
+ Bookie::Database::System.where('1=1').class.any_instance.expects(:first).at_least_once.returns(nil)
608
608
  sum = Bookie::Database::JobSummary.summary
609
609
  sum.should eql({
610
610
  :num_jobs => 0,
@@ -612,7 +612,6 @@ describe Bookie::Database do
612
612
  :memory_time => 0,
613
613
  :successful => 0,
614
614
  })
615
- ActiveRecord::Relation.any_instance.unstub(:'any?')
616
615
  Bookie::Database::JobSummary.any?.should eql false
617
616
  end
618
617
 
@@ -688,7 +687,7 @@ describe Bookie::Database do
688
687
 
689
688
  describe Bookie::Database::User do
690
689
  it "correctly filters by name" do
691
- users = Bookie::Database::User.by_name('test').all
690
+ users = Bookie::Database::User.by_name('test').to_a
692
691
  users.length.should eql 2
693
692
  users.each do |user|
694
693
  user.name.should eql 'test'
@@ -872,7 +871,7 @@ describe Bookie::Database do
872
871
  @summary[:empty][:avail_memory_time].should eql 0
873
872
  @summary[:empty][:avail_memory_avg].should eql 0.0
874
873
  begin
875
- @systems.all.each do |system|
874
+ @systems.find_each do |system|
876
875
  unless system.id == 1
877
876
  system.end_time = Time.now
878
877
  system.save!
@@ -885,7 +884,7 @@ describe Bookie::Database do
885
884
  s2[:avail_memory_avg] = Float(1000000 * system_total_wall_time) / (3600 * 41)
886
885
  summary_all_systems_ended.should eql s2
887
886
  ensure
888
- @systems.all.each do |system|
887
+ @systems.find_each do |system|
889
888
  unless system.id == 1
890
889
  system.end_time = nil
891
890
  system.save!
@@ -36,7 +36,7 @@ describe Bookie::Formatter do
36
36
 
37
37
  it "correctly calculates fields for jobs" do
38
38
  with_utc do
39
- @formatter.send(:fields_for_each_job, @jobs.limit(1).all) do |fields|
39
+ @formatter.send(:fields_for_each_job, @jobs.limit(1).to_a) do |fields|
40
40
  fields.should eql [
41
41
  'root',
42
42
  'root',
data/spec/sender_spec.rb CHANGED
@@ -118,7 +118,7 @@ describe Bookie::Sender do
118
118
  #The filename is just a dummy argument.
119
119
  sender.send_data('snapshot/pacct')
120
120
 
121
- jobs = Bookie::Database::Job.by_system_name(@config.hostname).order(:end_time).all
121
+ jobs = Bookie::Database::Job.by_system_name(@config.hostname).order(:end_time).to_a
122
122
  jobs[0].system.should eql @sys_1
123
123
  jobs[1].system.should eql @sys_2
124
124
  end
@@ -177,7 +177,7 @@ describe Bookie::Sender do
177
177
 
178
178
  sender.send(:clear_summaries, date_start + 1, date_end - 1)
179
179
 
180
- sums = Bookie::Database::JobSummary.all
180
+ sums = Bookie::Database::JobSummary.all.to_a
181
181
  sums.length.should eql 9
182
182
  sums.each do |sum|
183
183
  unless sum.system == @sys_dummy
@@ -75,7 +75,7 @@ describe Bookie::Formatters::Spreadsheet do
75
75
 
76
76
  it "correctly formats jobs" do
77
77
  with_utc do
78
- @formatter.print_jobs(@jobs.limit(2).all)
78
+ @formatter.print_jobs(@jobs.limit(2).to_a)
79
79
  w = @m.worksheet('Details')
80
80
  w.last_row_index.should eql 2
81
81
  w.mock_columns.length.should eql Bookie::Formatter::DETAILS_FIELD_LABELS.length
metadata CHANGED
@@ -1,158 +1,97 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bookie_accounting
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.1
5
- prerelease:
4
+ version: 1.1.2
6
5
  platform: ruby
7
6
  authors:
8
7
  - Ben Merritt
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-06-24 00:00:00.000000000 Z
11
+ date: 2013-07-22 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: activerecord
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
- - - ! '>='
17
+ - - '>='
20
18
  - !ruby/object:Gem::Version
21
19
  version: '0'
22
20
  type: :runtime
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
- - - ! '>='
24
+ - - '>='
28
25
  - !ruby/object:Gem::Version
29
26
  version: '0'
30
27
  - !ruby/object:Gem::Dependency
31
28
  name: json
32
29
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
30
  requirements:
35
- - - ! '>='
31
+ - - '>='
36
32
  - !ruby/object:Gem::Version
37
33
  version: '0'
38
34
  type: :runtime
39
35
  prerelease: false
40
36
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
37
  requirements:
43
- - - ! '>='
38
+ - - '>='
44
39
  - !ruby/object:Gem::Version
45
40
  version: '0'
46
41
  - !ruby/object:Gem::Dependency
47
42
  name: mysql2
48
43
  requirement: !ruby/object:Gem::Requirement
49
- none: false
50
44
  requirements:
51
- - - ! '>='
45
+ - - '>='
52
46
  - !ruby/object:Gem::Version
53
47
  version: '0'
54
48
  type: :runtime
55
49
  prerelease: false
56
50
  version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
51
  requirements:
59
- - - ! '>='
52
+ - - '>='
60
53
  - !ruby/object:Gem::Version
61
54
  version: '0'
62
55
  - !ruby/object:Gem::Dependency
63
56
  name: pacct
64
57
  requirement: !ruby/object:Gem::Requirement
65
- none: false
66
58
  requirements:
67
- - - ! '>='
59
+ - - '>='
68
60
  - !ruby/object:Gem::Version
69
61
  version: '0'
70
62
  type: :runtime
71
63
  prerelease: false
72
64
  version_requirements: !ruby/object:Gem::Requirement
73
- none: false
74
65
  requirements:
75
- - - ! '>='
66
+ - - '>='
76
67
  - !ruby/object:Gem::Version
77
68
  version: '0'
78
69
  - !ruby/object:Gem::Dependency
79
- name: spreadsheet
70
+ name: protected_attributes
80
71
  requirement: !ruby/object:Gem::Requirement
81
- none: false
82
72
  requirements:
83
- - - ! '>='
73
+ - - '>='
84
74
  - !ruby/object:Gem::Version
85
75
  version: '0'
86
76
  type: :runtime
87
77
  prerelease: false
88
78
  version_requirements: !ruby/object:Gem::Requirement
89
- none: false
90
79
  requirements:
91
- - - ! '>='
80
+ - - '>='
92
81
  - !ruby/object:Gem::Version
93
82
  version: '0'
94
83
  - !ruby/object:Gem::Dependency
95
- name: bundler
96
- requirement: !ruby/object:Gem::Requirement
97
- none: false
98
- requirements:
99
- - - ! '>='
100
- - !ruby/object:Gem::Version
101
- version: '0'
102
- type: :development
103
- prerelease: false
104
- version_requirements: !ruby/object:Gem::Requirement
105
- none: false
106
- requirements:
107
- - - ! '>='
108
- - !ruby/object:Gem::Version
109
- version: '0'
110
- - !ruby/object:Gem::Dependency
111
- name: mocha
112
- requirement: !ruby/object:Gem::Requirement
113
- none: false
114
- requirements:
115
- - - ! '>='
116
- - !ruby/object:Gem::Version
117
- version: '0'
118
- type: :development
119
- prerelease: false
120
- version_requirements: !ruby/object:Gem::Requirement
121
- none: false
122
- requirements:
123
- - - ! '>='
124
- - !ruby/object:Gem::Version
125
- version: '0'
126
- - !ruby/object:Gem::Dependency
127
- name: rspec
128
- requirement: !ruby/object:Gem::Requirement
129
- none: false
130
- requirements:
131
- - - ! '>='
132
- - !ruby/object:Gem::Version
133
- version: '0'
134
- type: :development
135
- prerelease: false
136
- version_requirements: !ruby/object:Gem::Requirement
137
- none: false
138
- requirements:
139
- - - ! '>='
140
- - !ruby/object:Gem::Version
141
- version: '0'
142
- - !ruby/object:Gem::Dependency
143
- name: sqlite3
84
+ name: spreadsheet
144
85
  requirement: !ruby/object:Gem::Requirement
145
- none: false
146
86
  requirements:
147
- - - ! '>='
87
+ - - '>='
148
88
  - !ruby/object:Gem::Version
149
89
  version: '0'
150
- type: :development
90
+ type: :runtime
151
91
  prerelease: false
152
92
  version_requirements: !ruby/object:Gem::Requirement
153
- none: false
154
93
  requirements:
155
- - - ! '>='
94
+ - - '>='
156
95
  - !ruby/object:Gem::Version
157
96
  version: '0'
158
97
  description: A simple system to record and query process accounting records
@@ -219,27 +158,26 @@ files:
219
158
  homepage: https://github.com/blm768/bookie/
220
159
  licenses:
221
160
  - MIT
161
+ metadata: {}
222
162
  post_install_message:
223
163
  rdoc_options: []
224
164
  require_paths:
225
165
  - lib
226
166
  required_ruby_version: !ruby/object:Gem::Requirement
227
- none: false
228
167
  requirements:
229
- - - ! '>='
168
+ - - '>='
230
169
  - !ruby/object:Gem::Version
231
170
  version: '0'
232
171
  required_rubygems_version: !ruby/object:Gem::Requirement
233
- none: false
234
172
  requirements:
235
- - - ! '>='
173
+ - - '>='
236
174
  - !ruby/object:Gem::Version
237
175
  version: '0'
238
176
  requirements: []
239
177
  rubyforge_project:
240
- rubygems_version: 1.8.25
178
+ rubygems_version: 2.0.3
241
179
  signing_key:
242
- specification_version: 3
180
+ specification_version: 4
243
181
  summary: A simple system to record and query process accounting records
244
182
  test_files:
245
183
  - spec/comma_dump_formatter_spec.rb