postjob 0.5.7 → 0.5.9

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e65c5b538677925c9fafa3774b5fc372ceaa7954
4
- data.tar.gz: abbb379b6126ba5dea3bef0af94de21f560c20d5
3
+ metadata.gz: e96734197915c9658e20b670186347fa9112a95a
4
+ data.tar.gz: a607352a5f6675c9bb6ae80fd0f289f7142692d6
5
5
  SHA512:
6
- metadata.gz: e4aedf8ca25e4219cfb8647ceaa6a77d47619974f6904ed5e011fd3c7be89d9493571efe55ba7ef4354b5b866400f99270c8a86dd97f753bc9a246e6a931afc4
7
- data.tar.gz: 5a7ff20629d0a60b478c5d3367ca2c7614c0fa970a7b877afb4a9ca6d4e65cc54c9c71cf0ba95b5c88363b213bd84d82af8d81f4122085e052d7c0bfee84cfe5
6
+ metadata.gz: f1b8e20e7893ef1fcd3a1d53466714bcf5c106e1dec67a0745f25f29db04185c92bb7ac6e9cdf83dce299bea3f6f20cd3f6aac27c1c36551862157d902d4b1ba
7
+ data.tar.gz: 0c0fe39302fa99ff9fd8fe03f70a2c81a950276cc0e6b4d86c95b96657e917da3289f176d71273d71736e2c47932aa265e9616a5b37e1df2a87d03d6fffe699d
data/lib/postjob/host.rb CHANGED
@@ -1,8 +1,11 @@
1
1
  require_relative "./record"
2
+ require "tempfile"
2
3
 
3
4
  class Postjob::Host < Postjob::Record
4
5
  class << self
5
6
  def clear_storage
7
+ @host_id = nil
8
+
6
9
  File.unlink(storage_path) if File.exist?(storage_path)
7
10
  end
8
11
 
@@ -12,13 +15,21 @@ class Postjob::Host < Postjob::Record
12
15
 
13
16
  private
14
17
 
18
+ # This method returns the path to a file which will hold the host_id. Two runners
19
+ # with the same host_id should have access to the same part of the file system.
20
+ # Therefore different system users need to have different host ids.
21
+ #
22
+ # In addition the path returned from the method must be readable and writable by
23
+ # the current user. We choose a tmp location for that reason. (A /var location
24
+ # would be even better - however, our systems do not have a user-writable /var).
15
25
  def storage_path
16
26
  env = ENV["RAILS_ENV"] || ENV["RACK_ENV"] || "development"
17
- ".postjob.#{env}.host_id"
27
+ File.join Dir.tmpdir, "postjob.#{env}.#{Process.uid}.host_id"
18
28
  end
19
29
 
20
30
  def atomic_set_and_get(path)
21
31
  value = nil
32
+
22
33
  File.open(path, File::RDWR | File::CREAT, 0644) do |f|
23
34
  f.flock(File::LOCK_EX)
24
35
 
@@ -0,0 +1,37 @@
1
+ require "spec_helper"
2
+
3
+ RSpec.describe Postjob::Host do
4
+ describe ".host_id" do
5
+ UUID_REGEXP = /[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}/i
6
+
7
+ it "returns a host id UUID string" do
8
+ expect(Postjob::Host.host_id).to match(UUID_REGEXP)
9
+ end
10
+ end
11
+
12
+ describe "Storage" do
13
+ let(:test_file_path) { ".postjob.test.host_id" }
14
+
15
+ before do
16
+ allow(Postjob::Host).to receive(:storage_path).and_return(test_file_path)
17
+ end
18
+
19
+ describe ".clear_storage" do
20
+ it "removes the host id file" do
21
+ Postjob::Host.clear_storage
22
+
23
+ expect(File).not_to exist(test_file_path)
24
+ end
25
+ end
26
+
27
+ describe ".host_id" do
28
+ UUID_REGEXP = /[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}/i
29
+
30
+ it "writes a file to the tmp directory" do
31
+ Postjob::Host.host_id
32
+
33
+ expect(File).to exist(test_file_path)
34
+ end
35
+ end
36
+ end
37
+ end
data/spec/spec_helper.rb CHANGED
@@ -29,6 +29,9 @@ if ENV["VERBOSE"]
29
29
  Simple::SQL.logger = Postjob.logger = logger
30
30
  end
31
31
 
32
+ # Ensure there is a tmp directory for testing host id file ...
33
+ Dir.mkdir("tmp") unless File.exist?("tmp")
34
+
32
35
  RSpec.configure do |config|
33
36
  config.run_all_when_everything_filtered = true
34
37
  config.filter_run focus: (ENV["CI"] != "true")
@@ -39,7 +42,7 @@ RSpec.configure do |config|
39
42
  config.before(:all) {}
40
43
  config.after {}
41
44
 
42
- config.before(:all) do
45
+ config.before(:each) do
43
46
  ::Postjob::Host.clear_storage
44
47
  end
45
48
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: postjob
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.7
4
+ version: 0.5.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - radiospiel
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-08-14 00:00:00.000000000 Z
11
+ date: 2018-08-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec
@@ -285,6 +285,7 @@ files:
285
285
  - spec/postjob/events/job_event_spec.rb
286
286
  - spec/postjob/events/zombie_event_spec.rb
287
287
  - spec/postjob/full_workflow_spec.rb
288
+ - spec/postjob/host_spec.rb
288
289
  - spec/postjob/job_control/error_status_spec.rb
289
290
  - spec/postjob/job_control/manual_spec.rb
290
291
  - spec/postjob/job_control/max_attempts_spec.rb