knapsack 0.5.0 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +16 -16
- data/CHANGELOG.md +6 -0
- data/README.md +162 -61
- data/TODO.md +1 -1
- data/bin/print_header.sh +5 -0
- data/knapsack.gemspec +4 -2
- data/{knapsack_report.json → knapsack_rspec_report.json} +0 -0
- data/lib/knapsack.rb +5 -2
- data/lib/knapsack/adapters/base_adapter.rb +17 -1
- data/lib/knapsack/adapters/cucumber_adapter.rb +40 -0
- data/lib/knapsack/adapters/rspec_adapter.rb +5 -2
- data/lib/knapsack/allocator.rb +10 -11
- data/lib/knapsack/allocator_builder.rb +33 -0
- data/lib/knapsack/config/env.rb +30 -0
- data/lib/knapsack/config/tracker.rb +19 -0
- data/lib/knapsack/distributors/base_distributor.rb +18 -28
- data/lib/knapsack/distributors/leftover_distributor.rb +14 -14
- data/lib/knapsack/distributors/report_distributor.rb +33 -33
- data/lib/knapsack/presenter.rb +4 -4
- data/lib/knapsack/report.rb +13 -11
- data/lib/knapsack/tracker.rb +20 -15
- data/lib/knapsack/version.rb +1 -1
- data/lib/tasks/knapsack_cucumber.rake +19 -0
- data/lib/tasks/knapsack_rspec.rake +19 -0
- data/spec/knapsack/adapters/cucumber_adapter_spec.rb +69 -0
- data/spec/knapsack/adapters/rspec_adapter_spec.rb +26 -18
- data/spec/knapsack/allocator_builder_spec.rb +88 -0
- data/spec/knapsack/allocator_spec.rb +26 -27
- data/spec/knapsack/{config_spec.rb → config/env_spec.rb} +9 -32
- data/spec/knapsack/config/tracker_spec.rb +24 -0
- data/spec/knapsack/distributors/base_distributor_spec.rb +26 -39
- data/spec/knapsack/distributors/leftover_distributor_spec.rb +49 -31
- data/spec/knapsack/distributors/report_distributor_spec.rb +35 -41
- data/spec/knapsack/presenter_spec.rb +5 -5
- data/spec/knapsack/report_spec.rb +5 -9
- data/spec/knapsack/task_loader_spec.rb +4 -2
- data/spec/knapsack/tracker_spec.rb +14 -14
- data/spec/support/mocks/cucumber.rb +12 -0
- data/spec/support/shared_examples/adapter.rb +0 -4
- data/spec_examples/leftover/1_spec.rb +1 -1
- data/spec_examples/leftover/a_spec.rb +1 -1
- data/spec_examples/spec_helper.rb +1 -1
- metadata +54 -11
- data/lib/knapsack/config.rb +0 -40
- data/lib/tasks/knapsack.rake +0 -20
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 16c44dfa2ed757dfcf1a0eb1cb207f01ec283160
|
4
|
+
data.tar.gz: f78966c7d310b9e46c1c4294ff308cde1598287e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 94294aa56a3788c45f09560a599a1dc8b0c6993a4c5b79155830d0c25b2d1cda2c4d6fc361f4bae8f5f40e1aa49cbad3926d4ef787f9e24c2f34fbcd9516213f
|
7
|
+
data.tar.gz: d7061de09db8a6bd54d1e823aff71893016e48a8f1e4299282d6d8826d40e0e050558b1bd03c85de200ce482c62c91af0df3ad7e1e3487b9c2a1158b0ec0d682
|
data/.travis.yml
CHANGED
@@ -13,32 +13,32 @@ addons:
|
|
13
13
|
before_install:
|
14
14
|
- "echo 'gem: --no-ri --no-rdoc' > ~/.gemrc"
|
15
15
|
script:
|
16
|
-
-
|
16
|
+
- bin/print_header.sh "Run specs for Knapsack gem"
|
17
17
|
- bundle exec rspec spec
|
18
18
|
|
19
|
-
-
|
19
|
+
- bin/print_header.sh "Generate knapsack report"
|
20
20
|
- KNAPSACK_GENERATE_REPORT=true bundle exec rspec --default-path spec_examples --tag focus
|
21
21
|
|
22
|
-
-
|
22
|
+
- bin/print_header.sh "Run specs with enabled time offset warning"
|
23
23
|
- bundle exec rspec --default-path spec_examples
|
24
24
|
|
25
|
-
-
|
26
|
-
- CI_NODE_TOTAL=2 CI_NODE_INDEX=0
|
27
|
-
-
|
28
|
-
- CI_NODE_TOTAL=2 CI_NODE_INDEX=1
|
25
|
+
- bin/print_header.sh "Run rake task for the first CI node"
|
26
|
+
- CI_NODE_TOTAL=2 CI_NODE_INDEX=0 KNAPSACK_TEST_FILE_PATTERN="spec_examples/**/*_spec.rb" bundle exec rake knapsack:rspec
|
27
|
+
- bin/print_header.sh "Run rake task for the second CI node"
|
28
|
+
- CI_NODE_TOTAL=2 CI_NODE_INDEX=1 KNAPSACK_TEST_FILE_PATTERN="spec_examples/**/*_spec.rb" bundle exec rake knapsack:rspec
|
29
29
|
|
30
|
-
-
|
31
|
-
-
|
30
|
+
- bin/print_header.sh "Check passing arguments to rspec. Run only specs with custom_focus tag"
|
31
|
+
- KNAPSACK_TEST_FILE_PATTERN="spec_examples/**/*_spec.rb" bundle exec rake "knapsack:rspec[--tag custom_focus]"
|
32
32
|
|
33
|
-
-
|
34
|
-
- CUSTOM_LOGGER=true
|
33
|
+
- bin/print_header.sh "Run specs with custom knapsack logger"
|
34
|
+
- CUSTOM_LOGGER=true KNAPSACK_TEST_FILE_PATTERN="spec_examples/**/*_spec.rb" bundle exec rake knapsack:rspec
|
35
35
|
|
36
|
-
-
|
37
|
-
- cp
|
38
|
-
- KNAPSACK_REPORT_PATH="
|
36
|
+
- bin/print_header.sh "Run specs for custom knapsack report path"
|
37
|
+
- cp knapsack_rspec_report.json knapsack_custom_report.json
|
38
|
+
- KNAPSACK_REPORT_PATH="knapsack_custom_report.json" KNAPSACK_TEST_FILE_PATTERN="spec_examples/**/*_spec.rb" bundle exec rake knapsack:rspec
|
39
39
|
|
40
|
-
-
|
40
|
+
- bin/print_header.sh "Run specs when spec file was removed and still exists in knapsack report json"
|
41
41
|
- rm spec_examples/fast/1_spec.rb
|
42
|
-
-
|
42
|
+
- KNAPSACK_TEST_FILE_PATTERN="spec_examples/**/*_spec.rb" bundle exec rake knapsack:rspec
|
43
43
|
notifications:
|
44
44
|
email: false
|
data/CHANGELOG.md
CHANGED
@@ -2,6 +2,12 @@
|
|
2
2
|
|
3
3
|
* TODO
|
4
4
|
|
5
|
+
### 1.0.0
|
6
|
+
|
7
|
+
* Add cucumber support.
|
8
|
+
* Rename environment variable KNAPSACK_SPEC_PATTERN to KNAPSACK_TEST_FILE_PATTERN.
|
9
|
+
* Default name of knapsack report json file is based on adapter name so for RSpec the default report name is `knapsack_rspec_report.json` and for Cucumber the report name is `knapsack_cucumber_report.json`.
|
10
|
+
|
5
11
|
### 0.5.0
|
6
12
|
|
7
13
|
* Allow passing arguments to rspec via knapsack:rspec task.
|
data/README.md
CHANGED
@@ -14,12 +14,12 @@
|
|
14
14
|
|
15
15
|
**Knapsack splits tests across CI nodes and makes sure that tests will run comparable time on each node.**
|
16
16
|
|
17
|
-
Parallel
|
17
|
+
Parallel tests across CI server nodes based on each test file's time execution. Knapsack generates a test time execution report and uses it for future test runs.
|
18
18
|
|
19
19
|
Presentations about gem:
|
20
20
|
|
21
|
-
* [2014
|
22
|
-
* [2014
|
21
|
+
* [X 2014 Kraków Ruby User Group](http://slides.com/arturt/parallel-tests-in-comparable-time)
|
22
|
+
* [VII 2014 Lunar Logic Dev Meeting](http://slides.com/arturt/knapsack)
|
23
23
|
|
24
24
|
**[Sign up](http://knapsack.launchrock.com) to get info about launch Knapsack Pro with more features and free access for beta users.**
|
25
25
|
|
@@ -31,11 +31,17 @@ Presentations about gem:
|
|
31
31
|
|
32
32
|
![With Knapsack gem](docs/images/with_knapsack.png)
|
33
33
|
|
34
|
+
## Update gem
|
35
|
+
|
36
|
+
Please check [changelog](CHANGELOG.md) before update gem. Knapsack follows [semantic versioning](http://semver.org).
|
37
|
+
|
34
38
|
## Installation
|
35
39
|
|
36
40
|
Add this line to your application's Gemfile:
|
37
41
|
|
38
|
-
|
42
|
+
```ruby
|
43
|
+
gem 'knapsack'
|
44
|
+
```
|
39
45
|
|
40
46
|
And then execute:
|
41
47
|
|
@@ -43,55 +49,97 @@ And then execute:
|
|
43
49
|
|
44
50
|
## Usage
|
45
51
|
|
52
|
+
### Step for RSpec
|
53
|
+
|
46
54
|
Add at the beginning of your `spec_helper.rb`:
|
47
55
|
|
48
|
-
|
56
|
+
```ruby
|
57
|
+
require 'knapsack'
|
58
|
+
|
59
|
+
# CUSTOM_CONFIG_GOES_HERE
|
60
|
+
|
61
|
+
Knapsack::Adapters::RspecAdapter.bind
|
62
|
+
```
|
63
|
+
|
64
|
+
### Step for Cucumber
|
65
|
+
|
66
|
+
Create file `features/support/knapsack.rb` and add there:
|
67
|
+
|
68
|
+
```ruby
|
69
|
+
require 'knapsack'
|
49
70
|
|
50
|
-
|
51
|
-
Knapsack.tracker.config({
|
52
|
-
enable_time_offset_warning: true,
|
53
|
-
time_offset_in_seconds: 30
|
54
|
-
})
|
71
|
+
# CUSTOM_CONFIG_GOES_HERE
|
55
72
|
|
56
|
-
|
57
|
-
|
58
|
-
report_path: 'knapsack_report.json'
|
59
|
-
})
|
73
|
+
Knapsack::Adapters::CucumberAdapter.bind
|
74
|
+
```
|
60
75
|
|
61
|
-
|
62
|
-
require 'logger'
|
63
|
-
Knapsack.logger = Logger.new(STDOUT)
|
64
|
-
Knapsack.logger.level = Logger::INFO
|
76
|
+
### Custom configuration
|
65
77
|
|
66
|
-
|
67
|
-
|
78
|
+
You can change default Knapsack configuration for RSpec or Cucumber tests. Here are examples what you can do. Put below configuration instead of `CUSTOM_CONFIG_GOES_HERE`.
|
79
|
+
|
80
|
+
```ruby
|
81
|
+
Knapsack.tracker.config({
|
82
|
+
enable_time_offset_warning: true,
|
83
|
+
time_offset_in_seconds: 30
|
84
|
+
})
|
85
|
+
|
86
|
+
Knapsack.report.config({
|
87
|
+
test_file_pattern: 'spec/**/*_spec.rb', # default value based on adapter
|
88
|
+
report_path: 'knapsack_custom_report.json'
|
89
|
+
})
|
90
|
+
|
91
|
+
# you can use your own logger
|
92
|
+
require 'logger'
|
93
|
+
Knapsack.logger = Logger.new(STDOUT)
|
94
|
+
Knapsack.logger.level = Logger::INFO
|
95
|
+
```
|
96
|
+
|
97
|
+
### Common step
|
68
98
|
|
69
99
|
Add in your `Rakefile` this lines:
|
70
100
|
|
71
|
-
|
72
|
-
|
101
|
+
```ruby
|
102
|
+
require 'knapsack'
|
103
|
+
Knapsack.load_tasks
|
104
|
+
```
|
73
105
|
|
74
|
-
Generate time execution report for your
|
106
|
+
Generate time execution report for your test files. Run below command on one of your CI nodes.
|
75
107
|
|
108
|
+
# Step for RSpec
|
76
109
|
$ KNAPSACK_GENERATE_REPORT=true bundle exec rspec spec
|
77
110
|
|
78
|
-
|
111
|
+
# Step for Cucumber
|
112
|
+
$ KNAPSACK_GENERATE_REPORT=true bundle exec cucumber features
|
79
113
|
|
80
|
-
|
114
|
+
Commit generated report `knapsack_rspec_report.json` or `knapsack_cucumber_report.json` into your repository.
|
115
|
+
|
116
|
+
This report should be updated only after you add a lot of new slow tests or you change existing ones which causes a big time execution difference between CI nodes. Either way, you will get time offset warning at the end of the rspec/cucumber results which reminds you when it’s a good time to regenerate the knapsack report.
|
81
117
|
|
82
118
|
## Setup your CI server
|
83
119
|
|
84
120
|
On your CI server run this command for the first CI node. Update `CI_NODE_INDEX` for the next one.
|
85
121
|
|
122
|
+
# Step for RSpec
|
86
123
|
$ CI_NODE_TOTAL=2 CI_NODE_INDEX=0 bundle exec rake knapsack:rspec
|
87
124
|
|
88
|
-
|
125
|
+
# Step for Cucumber
|
126
|
+
$ CI_NODE_TOTAL=2 CI_NODE_INDEX=0 bundle exec rake knapsack:cucumber
|
127
|
+
|
128
|
+
You can add `KNAPSACK_TEST_FILE_PATTERN` if your tests are not in default directory. For instance:
|
129
|
+
|
130
|
+
# Step for RSpec
|
131
|
+
$ KNAPSACK_TEST_FILE_PATTERN="directory_with_specs/**/*_spec.rb" CI_NODE_TOTAL=2 CI_NODE_INDEX=0 bundle exec rake knapsack:rspec
|
89
132
|
|
90
|
-
|
133
|
+
# Step for Cucumber
|
134
|
+
$ KNAPSACK_TEST_FILE_PATTERN="directory_with_features/**/*.feature" CI_NODE_TOTAL=2 CI_NODE_INDEX=0 bundle exec rake knapsack:cucumber
|
91
135
|
|
92
136
|
You can set `KNAPSACK_REPORT_PATH` if your knapsack report was saved in non default location. Example:
|
93
137
|
|
94
|
-
|
138
|
+
# Step for RSpec
|
139
|
+
$ KNAPSACK_REPORT_PATH="knapsack_custom_report.json" CI_NODE_TOTAL=2 CI_NODE_INDEX=0 bundle exec rake knapsack:rspec
|
140
|
+
|
141
|
+
# Step for Cucumber
|
142
|
+
$ KNAPSACK_REPORT_PATH="knapsack_custom_report.json" CI_NODE_TOTAL=2 CI_NODE_INDEX=0 bundle exec rake knapsack:cucumber
|
95
143
|
|
96
144
|
### Info about ENV variables
|
97
145
|
|
@@ -109,7 +157,13 @@ To do this with Knapsack you simply add your rspec arguments as parameters to th
|
|
109
157
|
|
110
158
|
$ bundle exec rake "knapsack:rspec[--tag focus]"
|
111
159
|
|
112
|
-
Remember that using tags to limit which specs get run will affect the time each file takes to run. One solution to this is to generate a new `
|
160
|
+
Remember that using tags to limit which specs get run will affect the time each file takes to run. One solution to this is to generate a new `knapsack_rspec_report.json` for the commonly run scenarios.
|
161
|
+
|
162
|
+
### Passing arguments to cucumber
|
163
|
+
|
164
|
+
Add arguments to knapsack cucumber task like this:
|
165
|
+
|
166
|
+
$ bundle exec rake "knapsack:cucumber[--name feature]"
|
113
167
|
|
114
168
|
### Info for CircleCI users
|
115
169
|
|
@@ -119,54 +173,87 @@ Here is an example for test configuration in your `circleci.yml` file.
|
|
119
173
|
|
120
174
|
#### Step 1
|
121
175
|
|
122
|
-
For the first time run all
|
176
|
+
For the first time run all tests on a single CI node with enabled report generator.
|
123
177
|
|
124
|
-
|
125
|
-
|
126
|
-
|
178
|
+
```yaml
|
179
|
+
test:
|
180
|
+
override:
|
181
|
+
# Step for RSpec
|
182
|
+
- KNAPSACK_GENERATE_REPORT=true bundle exec rspec spec
|
127
183
|
|
128
|
-
|
184
|
+
# Step for Cucumber
|
185
|
+
- KNAPSACK_GENERATE_REPORT=true bundle exec cucumber features
|
186
|
+
```
|
187
|
+
|
188
|
+
After tests pass on your CircleCI machine your should copy knapsack json report which is rendered at the end of rspec/cucumber results. Save it into your repository as `knapsack_rspec_report.json` or `knapsack_cucumber_report.json` file and commit.
|
129
189
|
|
130
190
|
#### Step 2
|
131
191
|
|
132
192
|
Now you should update test command and enable parallel. Please remember to add additional containers for your project in CircleCI settings.
|
133
193
|
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
194
|
+
```yaml
|
195
|
+
test:
|
196
|
+
override:
|
197
|
+
# Step for RSpec
|
198
|
+
- bundle exec rake knapsack:rspec:
|
199
|
+
parallel: true
|
200
|
+
|
201
|
+
# Step for Cucumber
|
202
|
+
- bundle exec rake knapsack:cucumber:
|
203
|
+
parallel: true
|
204
|
+
```
|
138
205
|
|
139
|
-
Now everything should works. You will get warning at the end of rspec results if time execution will take too much.
|
206
|
+
Now everything should works. You will get warning at the end of rspec/cucumber results if time execution will take too much.
|
140
207
|
|
141
208
|
### Info for Travis users
|
142
209
|
|
143
210
|
#### Step 1
|
144
211
|
|
145
|
-
For the first time run all
|
212
|
+
For the first time run all tests at once with enabled report generator. Edit `.travis.yml`
|
213
|
+
|
214
|
+
```yaml
|
215
|
+
# Step for RSpec
|
216
|
+
script: "KNAPSACK_GENERATE_REPORT=true bundle exec rspec spec"
|
146
217
|
|
147
|
-
|
218
|
+
# Step for Cucumber
|
219
|
+
script: "KNAPSACK_GENERATE_REPORT=true bundle exec cucumber features"
|
220
|
+
```
|
148
221
|
|
149
|
-
After tests pass your should copy knapsack json report which is rendered at the end of rspec results. Save it into your repository as `
|
222
|
+
After tests pass your should copy knapsack json report which is rendered at the end of rspec/cucumber results. Save it into your repository as `knapsack_rspec_report.json` or `knapsack_cucumber_report.json` file and commit.
|
150
223
|
|
151
224
|
#### Step 2
|
152
225
|
|
153
226
|
You can parallel your builds across virtual machines with [travis matrix feature](http://docs.travis-ci.com/user/speeding-up-the-build/#Parallelizing-your-builds-across-virtual-machines). Edit `.travis.yml`
|
154
227
|
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
228
|
+
```yaml
|
229
|
+
# Step for RSpec
|
230
|
+
script: "bundle exec rake knapsack:rspec"
|
231
|
+
|
232
|
+
# Step for Cucumber
|
233
|
+
script: "bundle exec rake knapsack:cucumber"
|
234
|
+
|
235
|
+
env:
|
236
|
+
- CI_NODE_TOTAL=2 CI_NODE_INDEX=0
|
237
|
+
- CI_NODE_TOTAL=2 CI_NODE_INDEX=1
|
238
|
+
```
|
159
239
|
|
160
240
|
If you want to have some global ENVs and matrix of ENVs then do it like this:
|
161
241
|
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
242
|
+
```yaml
|
243
|
+
# Step for RSpec
|
244
|
+
script: "bundle exec rake knapsack:rspec"
|
245
|
+
|
246
|
+
# Step for Cucumber
|
247
|
+
script: "bundle exec rake knapsack:cucumber"
|
248
|
+
|
249
|
+
env:
|
250
|
+
global:
|
251
|
+
- RAILS_ENV=test
|
252
|
+
- MY_GLOBAL_VAR=123
|
253
|
+
matrix:
|
254
|
+
- CI_NODE_TOTAL=2 CI_NODE_INDEX=0
|
255
|
+
- CI_NODE_TOTAL=2 CI_NODE_INDEX=1
|
256
|
+
```
|
170
257
|
|
171
258
|
Such configuration will generate matrix with 2 following ENV rows:
|
172
259
|
|
@@ -179,25 +266,35 @@ More info about global and matrix ENV configuration in [travis docs](http://docs
|
|
179
266
|
|
180
267
|
#### Step 1
|
181
268
|
|
182
|
-
For the first time run all
|
269
|
+
For the first time run all tests at once with enabled report generator. Set up your build command:
|
183
270
|
|
271
|
+
# Step for RSpec
|
184
272
|
KNAPSACK_GENERATE_REPORT=true bundle exec rspec spec
|
185
273
|
|
186
|
-
|
274
|
+
# Step for Cucumber
|
275
|
+
KNAPSACK_GENERATE_REPORT=true bundle exec cucumber features
|
276
|
+
|
277
|
+
After tests pass your should copy knapsack json report which is rendered at the end of rspec/cucumber results. Save it into your repository as `knapsack_rspec_report.json` or `knapsack_cucumber_report.json` file and commit.
|
187
278
|
|
188
279
|
#### Step 2
|
189
280
|
|
190
|
-
Knapsack supports semaphoreapp ENVs `SEMAPHORE_THREAD_COUNT` and `SEMAPHORE_CURRENT_THREAD`. The only thing you need to do is set up knapsack rspec command for as many threads as you need. Here is an example:
|
281
|
+
Knapsack supports semaphoreapp ENVs `SEMAPHORE_THREAD_COUNT` and `SEMAPHORE_CURRENT_THREAD`. The only thing you need to do is set up knapsack rspec/cucumber command for as many threads as you need. Here is an example:
|
191
282
|
|
192
|
-
#
|
283
|
+
# Thread 1
|
284
|
+
## Step for RSpec
|
193
285
|
bundle exec rake knapsack:rspec
|
286
|
+
## Step for Cucumber
|
287
|
+
bundle exec rake knapsack:cucumber
|
194
288
|
|
195
|
-
#
|
289
|
+
# Thread 2
|
290
|
+
## Step for RSpec
|
196
291
|
bundle exec rake knapsack:rspec
|
292
|
+
## Step for Cucumber
|
293
|
+
bundle exec rake knapsack:cucumber
|
197
294
|
|
198
295
|
Tests will be split across threads.
|
199
296
|
|
200
|
-
##
|
297
|
+
## Gem tests
|
201
298
|
|
202
299
|
### Spec
|
203
300
|
|
@@ -213,7 +310,7 @@ To generate a new knapsack report for specs with `focus` tag (only specs in `spe
|
|
213
310
|
|
214
311
|
$ KNAPSACK_GENERATE_REPORT=true bundle exec rspec --default-path spec_examples --tag focus
|
215
312
|
|
216
|
-
**Warning:** Current `
|
313
|
+
**Warning:** Current `knapsack_rspec_report.json` file was generated for `spec_examples` except `spec_examples/leftover` directory. Just for testing reason to see how leftover specs will be distribute in a dumb way across CI nodes.
|
217
314
|
|
218
315
|
To see specs distributed for the first CI node type:
|
219
316
|
|
@@ -223,6 +320,10 @@ Specs in `spec_examples/leftover` take more than 3 seconds. This should cause a
|
|
223
320
|
|
224
321
|
$ bundle exec rspec --default-path spec_examples
|
225
322
|
|
323
|
+
### Cucumber examples
|
324
|
+
|
325
|
+
Here is [a fork of Loomio](https://github.com/ArturT/loomio) Rails application with a lot of cucumber features and some rspec examples. Knapsack was added there - [see code changes](https://github.com/ArturT/loomio/compare/loomio:master...add-knapsack-gem). Tests were splitted across a few machines on Travis CI - [see builds](https://travis-ci.org/ArturT/loomio/builds).
|
326
|
+
|
226
327
|
## Contributing
|
227
328
|
|
228
329
|
1. Fork it ( https://github.com/ArturT/knapsack/fork )
|
data/TODO.md
CHANGED
data/bin/print_header.sh
ADDED
@@ -0,0 +1,5 @@
|
|
1
|
+
#!/bin/bash
|
2
|
+
|
3
|
+
echo ==========================================================================================================================
|
4
|
+
echo $1
|
5
|
+
echo ==========================================================================================================================
|
data/knapsack.gemspec
CHANGED
@@ -8,8 +8,8 @@ Gem::Specification.new do |spec|
|
|
8
8
|
spec.version = Knapsack::VERSION
|
9
9
|
spec.authors = ["ArturT"]
|
10
10
|
spec.email = ["arturtrzop@gmail.com"]
|
11
|
-
spec.summary = %q{
|
12
|
-
spec.description = %q{Parallel
|
11
|
+
spec.summary = %q{Knapsack splits tests across CI nodes and makes sure that tests will run comparable time on each node.}
|
12
|
+
spec.description = %q{Parallel tests across CI server nodes based on each test file's time execution. It generates a test time execution report and uses it for future test runs.}
|
13
13
|
spec.homepage = "https://github.com/ArturT/knapsack"
|
14
14
|
spec.license = "MIT"
|
15
15
|
|
@@ -21,6 +21,8 @@ Gem::Specification.new do |spec|
|
|
21
21
|
spec.add_development_dependency 'bundler', '~> 1.6'
|
22
22
|
spec.add_development_dependency 'rake', '~> 0'
|
23
23
|
spec.add_development_dependency 'rspec', '~> 3.0', '>= 2.0.0'
|
24
|
+
spec.add_development_dependency 'cucumber', '>= 1.3'
|
24
25
|
spec.add_development_dependency 'timecop', '~> 0'
|
25
26
|
spec.add_development_dependency 'codeclimate-test-reporter', '~> 0'
|
27
|
+
spec.add_development_dependency 'pry', '~> 0'
|
26
28
|
end
|