jobmaster 0.0.1 → 0.0.3

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: 2c5405222718b1846cc2b84ce1b83d99307fba52
4
- data.tar.gz: 838630db1843875775075cc9d9321a5eb0173a02
3
+ metadata.gz: 5ba10006ad5958002049e49b7493e4a33e75d1b7
4
+ data.tar.gz: 959fdef93a1f534139d207ecc384d0550f22574d
5
5
  SHA512:
6
- metadata.gz: 327dc4714bb69f279dec5ef74ec7287cb4600bd543fb1183c6729a861f7f36b4d49a6c4992e4ef3ccc599868d1ae1727d3a00308b5b225862f941b19ec260fd2
7
- data.tar.gz: 516b2ec4d1a7e75e2ae907e453c5a7e42357f3a2ebb344841bc9e015b72885c02237799d6a9a4e6513984255aacce5c21cee4f1da67c50225f83aceff54ae5d8
6
+ metadata.gz: ca906eb1d84569a70c2c419d614db1ad92459f9fae6a4baaf128f73718f6408bc9e600b5448b34fe9b034e998f9e0b5f4f990a968fd0a823ab234b2f3a67256b
7
+ data.tar.gz: 8e99588ac3b62b249d52627977ecabd665fc907cda2347acf19eb0d6f0809ef590146c47156d8d8d42507a3727c62c582cf42d8dcb30f6568e511722b536865c
@@ -8,6 +8,13 @@ end
8
8
 
9
9
  class JobMaster
10
10
 
11
+ def single_mapping (args)
12
+ args = args.first
13
+ eval(args[1]).map { |item|
14
+ {args[0] => item}
15
+ }
16
+ end
17
+
11
18
  def date_gen (args)
12
19
  min = Date.parse(args[:earliest]).jd
13
20
  max = args[:latest] == 'none' ? Date.today.jd : Date.parse(args[:latest]).jd
@@ -3,10 +3,7 @@ require 'tunnel_blick'
3
3
  class JobMaster
4
4
  def stealth(max_requests, args, *websites)
5
5
  @tunnel = TunnelBlick.new(database)
6
- dom_ids = websites.map {|ws|
7
- database[:websites][domain_url: ws.home_url.scan(/[^\/]+/)[1]][:id]
8
- }
9
- @tunnel.connect_smart(max_requests, args, dom_ids)
6
+ @tunnel.connect_smart(max_requests, args, *websites)
10
7
  @tunnel.add_websites(*websites)
11
8
  @tunnel
12
9
  end
data/lib/job_master.rb CHANGED
@@ -17,122 +17,4 @@ class JobMaster
17
17
  @websites = websites
18
18
  end
19
19
 
20
- class << self
21
-
22
- LEGEND = {
23
- date_range_gen: [:earliest, :latest],
24
- from_csv: ['file', '*labels']
25
- }
26
-
27
- def date_range_gen
28
-
29
- end
30
-
31
- end
32
-
33
- def start_single (prog_name , minutes = 10, sleep = 3)
34
-
35
- @start_time = Time.now
36
- set_up_job(prog_name)
37
-
38
- unit_time = 0.0
39
-
40
- while (Time.now - @start_time) / 60 < minutes
41
-
42
- unless unit_time == 0.0
43
- update_job(unit_time)
44
- end
45
-
46
- unit_start = Time.now
47
- unit = next_unit
48
-
49
- break if unit.nil?
50
-
51
- @websites.first.send(prog_name.to_sym, unit)
52
-
53
- puts unit_time = (Time.now - unit_start) / 60
54
- sleep(sleep)
55
- unit_time += sleep / 60
56
- end
57
-
58
- end
59
-
60
- def step_single (prog_name)
61
-
62
- @start_time = Time.now
63
- set_up_job(prog_name)
64
- unit = next_unit
65
- return false if unit.nil?
66
-
67
- @websites.first.send(prog_name.to_sym, unit)
68
- puts unit_time = (Time.now - @start_time) / 60
69
- update_job(unit_time)
70
-
71
- end
72
-
73
- def set_up_job (program)
74
- last_matching = programs_db.where(program: program, @myself => Sequel.pg_array_op(:machines).any).order(:id).last
75
-
76
- @program_id = last_matching[:id]
77
- the_job = jobs_db.where(program: program, constraints: @program_id).order(:id).last
78
-
79
- if the_job.nil?
80
- units = self.send(last_matching[:method].to_sym, last_matching[:constraints].merge(program: program))
81
- insert_job_details(program, units, last_matching[:machines])
82
- end
83
-
84
- @job_id = the_job[:id]
85
- end
86
-
87
- def insert_job_details (program, units, machines)
88
-
89
- time_share = machines.inject({}) { |acc, m|
90
- acc.store(m, 0)
91
- acc
92
- }
93
-
94
- details = {
95
- program: program,
96
- created: Time.now,
97
- constraints: @program_id,
98
- units: Sequel.pg_array(units),
99
- size: units.size,
100
- total_minutes: 0.0,
101
- time_share: Sequel.hstore(time_share),
102
- unit_checkout: Sequel.hstore({:apples => :bananas})
103
- }
104
- jobs_db.insert(details)
105
- end
106
-
107
- def next_unit
108
- checkout = jobs_db[id: @job_id][:unit_checkout].to_hash
109
-
110
- if checkout.keys.include?(@myself)
111
- checkout[@myself]
112
- else
113
- units = jobs_db[id: @job_id][:units]
114
- return false if units.empty?
115
- next_unit = units.pop
116
- jobs_db.where(id: @job_id).update(
117
- :units => units,
118
- :unit_checkout => Sequel.hstore(Sequel.expr(:unit_checkout)).merge(@myself => next_unit))
119
- next_unit
120
- end
121
- end
122
-
123
- def update_job (unit_time)
124
-
125
- time_share = jobs_db[id: @job_id][:time_share].to_hash
126
- time_share.find_add!(@myself, unit_time)
127
-
128
- unit_checkout = jobs_db[id: @job_id][:unit_checkout].to_hash
129
- unit_checkout.delete!(@myself)
130
-
131
- jobs_db.where(id: @job_id).update(
132
- :total_minutes => Sequel.expr(:total_minutes) + unit_time,
133
- :time_share => Sequel.hstore(time_share),
134
- :unit_checkout => Sequel.hstore(unit_checkout)
135
- )
136
- end
137
-
138
20
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jobmaster
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Eugene Lai
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-03-05 00:00:00.000000000 Z
11
+ date: 2016-03-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: flex_core