tes-request 0.11 → 0.12

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6ef4285a8107b16ad50d37d0d4ed27e4deb96be99ff6a20ed24e742ea3533183
4
- data.tar.gz: b4e0fdc1dcafed9548b9027a53228ef31db168bb554c3aacdfadbef3e68b664a
3
+ metadata.gz: 9d21fe3a21348ae9f66ebb0df7ed5c2abb0ee2fd4557fb1d94d466dccdcacd01
4
+ data.tar.gz: f62fc78836dfcff2a9c396d8b0ff01b6faffd4db30b336539b6fb6235b7fa625
5
5
  SHA512:
6
- metadata.gz: 5d00ae75a43d6effbf933b9ff4229f1184bac0706dc4c13d459d25da1b9b332524f9c98da609e8a8cca32738aa279da36abcb09d5ae577644394761f083913e4
7
- data.tar.gz: 2301ac3ba6c6cda67b7dd23ea539e0743fcfa45da5edcf73cc5c45598b35ecdaa160775b561a55167fad875ba8faf7245c2c70732f49cac2f58208b0dfdbab49
6
+ metadata.gz: 3cfd26da444df310cc3c944a8532506e994feab473b4af862ce22b35661afdb1f7c770363bb2100fc03e5443354c76298579a49d288120d8ce3d572bc381d475
7
+ data.tar.gz: 0195a973dcb123132510993c85a48b6dbff6d8528d60c661337e216ba29810188edc882fee80544d259b07f7d72c88cf3710f97c185aa194fd9b4214dda1f142
@@ -16,7 +16,7 @@ module Tes
16
16
 
17
17
  # @param [String] project_dir 测试项目的根目录路径
18
18
  # @param [String] ci_yaml_file 测试项目内的描述spec测试的配置文件路径(相对`project_dir`)
19
- def initialize(project_dir, ci_yaml_file=@@ci_yaml_file)
19
+ def initialize(project_dir, ci_yaml_file = @@ci_yaml_file)
20
20
  @project_dir = project_dir
21
21
  @ci_cfg = YAML.load_file(File.join(@project_dir, ci_yaml_file))
22
22
  end
@@ -29,7 +29,7 @@ module Tes
29
29
  # @param [Hash] res_addition_attr_map 资源属性需要调整的映射表
30
30
  # @param [Hash,nil] adapt_pool
31
31
  # @return [Array<Hash>]
32
- def distribute_jobs(type, count, res_addition_attr_map={}, adapt_pool = {})
32
+ def distribute_jobs(type, count, res_addition_attr_map = {}, adapt_pool = {})
33
33
  task_cfg = get_rspec_task(type)
34
34
  spec_paths = spec_files(type)
35
35
  rspec_parser = Tes::Request::RSpec::ProfileParser.new(spec_paths)
@@ -83,16 +83,16 @@ module Tes
83
83
  end
84
84
 
85
85
  private
86
+
86
87
  # 生产任务碎片,尽量接近传递的参数值
87
88
  # @param [Fixnum] minimum_pieces
88
89
  # @return [Array]
89
90
  def gen_pieces(profiles, minimum_pieces)
90
91
  common_jobs = []
91
92
  standalone_jobs = []
92
-
93
93
  min_spec_count = profiles.size / minimum_pieces
94
94
 
95
- profiles.each do |to_merge_spec|
95
+ profiles.sort_by {rand}.each do |to_merge_spec|
96
96
  # 0. 任务发布要求的特殊处理
97
97
  if to_merge_spec[:distribute] && to_merge_spec[:distribute][:standalone]
98
98
  standalone_jobs << {profile: to_merge_spec[:profile], specs: [to_merge_spec]}
@@ -100,31 +100,31 @@ module Tes
100
100
  end
101
101
 
102
102
  # 1. 优先相同要求的归并
103
- join_piece = common_jobs.find do |piece|
103
+ join_piece = common_jobs.select do |piece|
104
104
  piece[:specs].size <= min_spec_count and
105
105
  piece[:profile] == to_merge_spec[:profile]
106
- end
106
+ end.sample
107
107
  if join_piece
108
108
  join_piece[:specs] << to_merge_spec
109
109
  else
110
110
  # 2. 然后再是资源多少不同的归并
111
- super_piece = common_jobs.find do |piece|
111
+ super_piece = common_jobs.select do |piece|
112
112
  if piece[:specs].size <= min_spec_count
113
113
  cr = piece[:profile] <=> to_merge_spec[:profile]
114
114
  cr && cr >= 0
115
115
  else
116
116
  false
117
117
  end
118
- end
118
+ end.sample
119
119
  if super_piece
120
120
  super_piece[:specs] << to_merge_spec
121
121
  else
122
122
  # 3. 可整合计算的的归并,但要求已经达到的任务分片数已经达到了要求那么大,否则直接以新建来搞
123
123
  if common_jobs.size >= minimum_pieces
124
- merge_piece = common_jobs.find do |piece|
124
+ merge_piece = common_jobs.select do |piece|
125
125
  piece[:specs].size <= min_spec_count and
126
126
  piece[:profile].merge_able?(to_merge_spec[:profile])
127
- end
127
+ end.sample
128
128
  if merge_piece
129
129
  merge_piece[:profile] = merge_piece[:profile] + to_merge_spec[:profile]
130
130
  merge_piece[:specs] << to_merge_spec
@@ -164,7 +164,7 @@ module Tes
164
164
  end
165
165
 
166
166
  # @return [Array<String>]
167
- def filter_spec_by_path(pattern, exclude_pattern=nil)
167
+ def filter_spec_by_path(pattern, exclude_pattern = nil)
168
168
  pattern_filter_lab = ->(p) do
169
169
  spec_info = get_spec_path_info(p)
170
170
  direct_return = (spec_info[:locations] or spec_info[:ids])
@@ -172,24 +172,24 @@ module Tes
172
172
  end
173
173
 
174
174
  ret = case pattern
175
- when String
176
- pattern_filter_lab.call(pattern)
177
- Dir[File.join(@project_dir, pattern)]
178
- when Array
179
- pattern.inject([]) {|t, ep| t + pattern_filter_lab.call(ep)}
180
- else
181
- raise('Error pattern type')
175
+ when String
176
+ pattern_filter_lab.call(pattern)
177
+ Dir[File.join(@project_dir, pattern)]
178
+ when Array
179
+ pattern.inject([]) {|t, ep| t + pattern_filter_lab.call(ep)}
180
+ else
181
+ raise('Error pattern type')
182
182
  end
183
183
 
184
184
  return ret unless exclude_pattern
185
185
 
186
186
  case exclude_pattern
187
- when String
188
- ret -= Dir[File.join(@project_dir, exclude_pattern)]
189
- when Array
190
- ret -= exclude_pattern.inject([]) {|t, ep| t + Dir[File.join(@project_dir, ep)]}
191
- else
192
- raise('Error exclude_pattern type')
187
+ when String
188
+ ret -= Dir[File.join(@project_dir, exclude_pattern)]
189
+ when Array
190
+ ret -= exclude_pattern.inject([]) {|t, ep| t + Dir[File.join(@project_dir, ep)]}
191
+ else
192
+ raise('Error exclude_pattern type')
193
193
  end
194
194
 
195
195
  ret
@@ -203,7 +203,7 @@ module Tes
203
203
  # 或者
204
204
  # type=res_type,res_attr1=2,res_attr3>=4
205
205
  # @return [Array<String>] 按照`res_exclude_pattern` 剔除后的 `spec_paths`
206
- def exclude_spec_by_resource(spec_paths, res_exclude_patterns=[])
206
+ def exclude_spec_by_resource(spec_paths, res_exclude_patterns = [])
207
207
  return spec_paths if res_exclude_patterns.empty?
208
208
 
209
209
  spec_paths.reject do |spec_path|
@@ -1,5 +1,5 @@
1
1
  module Tes
2
2
  module Request
3
- VERSION = '0.11'
3
+ VERSION = '0.12'
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tes-request
3
3
  version: !ruby/object:Gem::Version
4
- version: '0.11'
4
+ version: '0.12'
5
5
  platform: ruby
6
6
  authors:
7
7
  - wuhuizuo
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-07-23 00:00:00.000000000 Z
11
+ date: 2018-07-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: java-properties