bookie_accounting 1.1.1 → 1.1.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.
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