knapsack_pro 0.25.0 → 0.26.0

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
  SHA1:
3
- metadata.gz: 911de2285757ea2787d872ff9e595910331d0e2c
4
- data.tar.gz: 990c07a1d06f884849eeb98a904f360e741a33f8
3
+ metadata.gz: 7703c67b5430e96304f84ffe6180d2724ced2024
4
+ data.tar.gz: 42504a31a204cbec81297226b1106a5a93b3c97e
5
5
  SHA512:
6
- metadata.gz: 3830d979ef91be8c88baaa9d79e446750c83bbaea35974ab5331bceac8e02b5dbfd3f05b1ae1834acdeabb39b27d32051a46934da541660a012910eeee5b8511
7
- data.tar.gz: bc7922ae770633bf1f23c0bbb501df18b5e29cd64b0ddcba51b36e56cea427143200d7ee6c8316edce3534f4950634b7097e4aa90936c2b7c04b3ddeba93e902
6
+ metadata.gz: b30a77c07bb4b62bcb67b767f279062d4ae0a7497f8da5d411a9b2f834ef2f48c1afe4562a3a339c869e81888a3f086256064b0154e3bc28526560f113e36cc6
7
+ data.tar.gz: 8099e1690a714695f646dd1dc3617554f257dea090b3b384f1a3407e693891d2f577b78c5678ae6c45b2f77f8362abbeaa99af6505bbc86451ebb5800b3d0f65
data/CHANGELOG.md CHANGED
@@ -2,6 +2,12 @@
2
2
 
3
3
  * TODO
4
4
 
5
+ ### 0.26.0
6
+
7
+ * Add info how to allow FakeWeb to connect with Knapsack Pro API in install rake task.
8
+
9
+ https://github.com/KnapsackPro/knapsack_pro-ruby/compare/v0.25.0...v0.26.0
10
+
5
11
  ### 0.25.0
6
12
 
7
13
  * Queue mode retry (remember queue split on retry CI node).
data/README.md CHANGED
@@ -96,6 +96,8 @@ The knapsack_pro has also [queue mode](#queue-mode) to get most optimal test sui
96
96
  - [Info for snap-ci.com users](#info-for-snap-cicom-users)
97
97
  - [FAQ](#faq)
98
98
  - [How to run tests for particular CI node in your development environment](#how-to-run-tests-for-particular-ci-node-in-your-development-environment)
99
+ - [for knapack_pro regular mode](#for-knapack_pro-regular-mode)
100
+ - [for knapsack_pro queue mode](#for-knapsack_pro-queue-mode)
99
101
  - [What happens when Knapsack Pro API is not available/not reachable temporarily?](#what-happens-when-knapsack-pro-api-is-not-availablenot-reachable-temporarily)
100
102
  - [How can I change log level?](#how-can-i-change-log-level)
101
103
  - [How to split tests based on test level instead of test file level?](#how-to-split-tests-based-on-test-level-instead-of-test-file-level)
@@ -145,7 +147,9 @@ You can read next section only if you want to better understand optional gem con
145
147
 
146
148
  ## How to set up
147
149
 
148
- If you are using [VCR gem](https://github.com/vcr/vcr) then add Knapsack Pro API subdomain to [ignore hosts](https://www.relishapp.com/vcr/vcr/v/2-9-3/docs/configuration/ignore-request):
150
+ If you use [VCR](https://github.com/vcr/vcr), [WebMock](https://github.com/bblimke/webmock) or [FakeWeb](https://github.com/chrisk/fakeweb) gems then you need to allow them to make requests to Knapsack Pro API.
151
+
152
+ For VCR add Knapsack Pro API subdomain to [ignore hosts](https://www.relishapp.com/vcr/vcr/v/2-9-3/docs/configuration/ignore-request):
149
153
 
150
154
  ```ruby
151
155
  # spec/spec_helper.rb or wherever is your VCR configuration
@@ -159,6 +163,10 @@ end
159
163
  # add below when you hook into webmock
160
164
  require 'webmock/rspec'
161
165
  WebMock.disable_net_connect!(:allow => ['api.knapsackpro.com'])
166
+
167
+ # add below when you use FakeWeb
168
+ require 'fakeweb'
169
+ FakeWeb.allow_net_connect = %r[^https?://api\.knapsackpro\.com]
162
170
  ```
163
171
 
164
172
  Ensure you have require false for webmock gem when VCR is hook into it. Thanks to that webmock configuration in `spec_helper.rb` is loaded properly.
@@ -169,6 +177,7 @@ Ensure you have require false for webmock gem when VCR is hook into it. Thanks t
169
177
  group :test do
170
178
  gem 'vcr'
171
179
  gem 'webmock', require: false
180
+ gem 'fakeweb', require: false # example when you use fakeweb
172
181
  end
173
182
  ```
174
183
 
@@ -642,6 +651,8 @@ Please remember to set up token like `KNAPSACK_PRO_TEST_SUITE_TOKEN_RSPEC` as gl
642
651
 
643
652
  ### How to run tests for particular CI node in your development environment
644
653
 
654
+ #### for knapack_pro regular mode
655
+
645
656
  In your development environment you can debug tests that were run on the particular CI node.
646
657
  For instance to run subset of tests for the first CI node with specified seed you can do.
647
658
 
@@ -653,6 +664,51 @@ For instance to run subset of tests for the first CI node with specified seed yo
653
664
  bundle exec rake "knapsack_pro:rspec[--seed 123]"
654
665
 
655
666
  Above example is for RSpec. You can use respectively rake task name and token environment variable when you want to run tests for minitest, cucumber or spinach.
667
+ It should work when all CI nodes finished work and sent time execution data to Knapsack Pro API.
668
+ You can visit [user dashboard](https://knapsackpro.com/dashboard) to preview particular CI build and ensure time execution data were collected from all CI nodes.
669
+ If at least one CI node has not sent time execution data to the Knapsack Pro API then you should check below solution.
670
+
671
+ Check test runner output on particular CI node you would like to retry in development. You should see at the beginning of rspec command an output that can
672
+ be copied and executed in development.
673
+
674
+ /Users/ubuntu/.rvm/gems/ruby-2.4.0/gems/rspec-core-3.4.4/exe/rspec spec/foo_spec.rb spec/bar_spec.rb --default-path spec
675
+
676
+ Command similar to above can be executed in your development this way:
677
+
678
+ bundle exec rspec spec/foo_spec.rb spec/bar_spec.rb --default-path spec
679
+
680
+ If you were running your tests with `--order random` on your CI then you can additionaly pass seed param with proper value in above command (`--seed 123`).
681
+
682
+ #### for knapsack_pro queue mode
683
+
684
+ To retry the particular CI node do this on your machine:
685
+
686
+ KNAPSACK_PRO_TEST_SUITE_TOKEN_RSPEC=token \
687
+ KNAPSACK_PRO_REPOSITORY_ADAPTER=git \
688
+ KNAPSACK_PRO_PROJECT_DIR=~/projects/rails-app \
689
+ KNAPSACK_PRO_CI_NODE_TOTAL=2 \
690
+ KNAPSACK_PRO_CI_NODE_INDEX=0 \
691
+ KNAPSACK_PRO_FIXED_QUEUE_SPLIT=true \
692
+ bundle exec rake "knapsack_pro:queue:rspec"
693
+
694
+ If you were running your tests with `--order random` on your CI like this:
695
+
696
+ bundle exec rake "knapsack_pro:queue:rspec[--order random]"
697
+
698
+ Then you can find the seed number visible in rspec output:
699
+
700
+ (...)
701
+ Randomized with seed 123
702
+
703
+ You can pass the seed in your local environment to reproduce the tests in the same order as they were executed on CI node:
704
+
705
+ KNAPSACK_PRO_TEST_SUITE_TOKEN_RSPEC=token \
706
+ KNAPSACK_PRO_REPOSITORY_ADAPTER=git \
707
+ KNAPSACK_PRO_PROJECT_DIR=~/projects/rails-app \
708
+ KNAPSACK_PRO_CI_NODE_TOTAL=2 \
709
+ KNAPSACK_PRO_CI_NODE_INDEX=0 \
710
+ KNAPSACK_PRO_FIXED_QUEUE_SPLIT=true \
711
+ bundle exec rake "knapsack_pro:queue:rspec[--seed 123]"
656
712
 
657
713
  ### What happens when Knapsack Pro API is not available/not reachable temporarily?
658
714
 
@@ -2,6 +2,7 @@ module KnapsackPro
2
2
  module Client
3
3
  class Connection
4
4
  TIMEOUT = 30
5
+ REQUEST_RETRY_TIMEBOX = 2
5
6
 
6
7
  def initialize(action)
7
8
  @action = action
@@ -103,7 +104,7 @@ module KnapsackPro
103
104
  logger.warn(e.inspect)
104
105
  retries += 1
105
106
  if retries < 5
106
- wait = retries * 2
107
+ wait = retries * REQUEST_RETRY_TIMEBOX
107
108
  logger.warn("Wait #{wait}s and retry request to Knapsack Pro API.")
108
109
  sleep wait
109
110
  retry
@@ -1,3 +1,3 @@
1
1
  module KnapsackPro
2
- VERSION = '0.25.0'
2
+ VERSION = '0.26.0'
3
3
  end
@@ -43,7 +43,7 @@ KnapsackPro::Adapters::SpinachAdapter.bind
43
43
  end
44
44
 
45
45
  def step_for_vcr(prompt)
46
- prompt.say "Step for VCR gem", color: :yellow
46
+ prompt.say "Step for VCR/WebMock/FakeWeb gems", color: :yellow
47
47
  prompt.say "Add Knapsack Pro API subdomain to ignore hosts"
48
48
  prompt.say "in spec/spec_helper.rb or wherever is your VCR configuration:"
49
49
 
@@ -57,6 +57,10 @@ end
57
57
  # add below when you hook into webmock
58
58
  require 'webmock/rspec'
59
59
  WebMock.disable_net_connect!(:allow => ['api.knapsackpro.com'])
60
+
61
+ # add below when you use FakeWeb
62
+ require 'fakeweb'
63
+ FakeWeb.allow_net_connect = %r[^https?://api\.knapsackpro\.com]
60
64
  }, color: :cyan
61
65
 
62
66
  puts
@@ -67,6 +71,7 @@ WebMock.disable_net_connect!(:allow => ['api.knapsackpro.com'])
67
71
  group :test do
68
72
  gem 'vcr'
69
73
  gem 'webmock', require: false
74
+ gem 'fakeweb', require: false # example when you use fakeweb
70
75
  end
71
76
  }, color: :cyan
72
77
  end
@@ -271,7 +276,7 @@ namespace :knapsack_pro do
271
276
  answers[:testing_tools] = prompt.multi_select("Choose your testing tools:", TESTING_TOOLS_CHOICES)
272
277
  end
273
278
 
274
- answers[:has_vcr] = prompt.yes?('Do you use VCR gem?')
279
+ answers[:has_vcr] = prompt.yes?('Do you use VCR, WebMock or FakeWeb gem?')
275
280
 
276
281
  CI_PROVIDER_CHOICES = {
277
282
  'https://circleci.com' => :circle,
@@ -62,6 +62,7 @@ describe 'Request API /v1/build_distributions/subset' do
62
62
 
63
63
  it do
64
64
  stub_const('KnapsackPro::Client::Connection::TIMEOUT', 0.01)
65
+ stub_const('KnapsackPro::Client::Connection::REQUEST_RETRY_TIMEBOX', 0.01)
65
66
  VCR.use_cassette('api/v1/build_distributions/subset/timeout') do
66
67
  response = connection.call
67
68
  puts response
@@ -64,6 +64,7 @@ describe 'Request API /v1/build_subsets' do
64
64
 
65
65
  it do
66
66
  stub_const('KnapsackPro::Client::Connection::TIMEOUT', 0.01)
67
+ stub_const('KnapsackPro::Client::Connection::REQUEST_RETRY_TIMEBOX', 0.01)
67
68
  VCR.use_cassette('api/v1/build_subsets/create/timeout') do
68
69
  response = connection.call
69
70
  puts response
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: knapsack_pro
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.25.0
4
+ version: 0.26.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - ArturT
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-02-03 00:00:00.000000000 Z
11
+ date: 2017-02-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -363,7 +363,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
363
363
  version: '0'
364
364
  requirements: []
365
365
  rubyforge_project:
366
- rubygems_version: 2.5.2
366
+ rubygems_version: 2.6.8
367
367
  signing_key:
368
368
  specification_version: 4
369
369
  summary: Knapsack Pro splits tests across CI nodes and makes sure that tests will