pact-mock_service 3.9.1 → 3.11.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
  SHA256:
3
- metadata.gz: 27e87ccc6396fefe1efbf08fdec3565431f999d0baece2f465f3c60c93af5887
4
- data.tar.gz: c6b4c99af70294e44082cec35e1b94e7626cf2a90f491804294120bcde2c6ae6
3
+ metadata.gz: 900bf74ef5f7b348d47bf9a91d116c4f5076c41210215c40535440c255057616
4
+ data.tar.gz: f2a22aee36bf3586cc426851bcebd60361ba5677a2ceda9b67bc8dca578c6fdd
5
5
  SHA512:
6
- metadata.gz: 84a2589c7758219995e685dcb817b839540a502b38364795a81579245dc3b9f3baf3517e06705580c29a714493be009618c5c7ab2d356b389db0d20d46061f84
7
- data.tar.gz: 2c0261cd92e97aadda278032f0098912f9d088e835dac58912fa96ad028613c01d1f423378d5b9cbde7c6d20b772e70ab93a997c5b5b7203974248f97f734d0e
6
+ metadata.gz: 32c18b8449aa4de2710e1b73240a3ce8d0cc9a97bc65dd2593f68b6204ea929da24b8f6251ba726634e17dc44a1f23776e86706a79bb8e743bcc0506e492ae80
7
+ data.tar.gz: 9ac2eca533f4c35ea4a38f4f9aba3f64a71f067ec10b8d7cf6b7d48eee9b19d25c36d35d98adf049da0977d5ed965fb4fc2ff93e68629e74f049bb6092028a24
data/CHANGELOG.md CHANGED
@@ -1,3 +1,21 @@
1
+ <a name="v3.11.0"></a>
2
+ ### v3.11.0 (2022-08-17)
3
+
4
+ #### Features
5
+
6
+ * only print metrics warning once per thread ([1ae43da](/../../commit/1ae43da))
7
+
8
+ #### Bug Fixes
9
+
10
+ * fix ruby `circular require` warning (#136) ([615e59c](/../../commit/615e59c))
11
+
12
+ <a name="v3.10.0"></a>
13
+ ### v3.10.0 (2022-02-21)
14
+
15
+ #### Features
16
+
17
+ * add telemetry ([db5dfa5](/../../commit/db5dfa5))
18
+
1
19
  <a name="v3.9.1"></a>
2
20
  ### v3.9.1 (2021-06-03)
3
21
 
data/README.md CHANGED
@@ -130,7 +130,7 @@ Description:
130
130
 
131
131
  See [CONTRIBUTING.md](/CONTRIBUTING.md)
132
132
 
133
- [pact]: https://github.com/realestate-com-au/pact
133
+ [pact]: https://github.com/pact-foundation/pact-ruby
134
134
  [executables]: https://github.com/pact-foundation/pact-ruby-standalone/releases
135
135
  [pact-dev]: https://groups.google.com/forum/#!forum/pact-dev
136
136
  [wiki]: https://github.com/pact-foundation/pact-mock_service/wiki
@@ -4,6 +4,7 @@ require 'pact/logging'
4
4
  require 'pact/consumer/server'
5
5
  require 'singleton'
6
6
  require 'pact/mock_service/app'
7
+ require 'pact/support/metrics'
7
8
 
8
9
  module Pact
9
10
  module MockService
@@ -29,6 +30,8 @@ module Pact
29
30
  pact_dir: pact_dir,
30
31
  pact_specification_version: options.fetch(:pact_specification_version)
31
32
  )
33
+
34
+ Pact::Support::Metrics.report_metric("Pact mock server started", "ConsumerTest", "MockServerStarted")
32
35
  register(app, uri.host, uri.port)
33
36
  end
34
37
 
@@ -4,6 +4,7 @@ require 'pact/consumer/mock_service/set_location'
4
4
  require 'pact/mock_service/run'
5
5
  require 'pact/mock_service/server/webrick_request_monkeypatch'
6
6
  require 'pact/specification_version'
7
+ require 'pact/support/metrics'
7
8
 
8
9
  module Pact
9
10
  module MockService
@@ -35,6 +36,7 @@ module Pact
35
36
  def mock_service
36
37
  @mock_service ||= begin
37
38
  mock_service = Pact::MockService.new(service_options)
39
+ Pact::Support::Metrics.report_metric("Pact mock server started", "ConsumerTest", "MockServerStarted")
38
40
  Pact::Consumer::SetLocation.new(mock_service, base_url)
39
41
  end
40
42
  end
@@ -1,5 +1,5 @@
1
1
  module Pact
2
2
  module MockService
3
- VERSION = "3.9.1"
3
+ VERSION = "3.11.0"
4
4
  end
5
5
  end
@@ -0,0 +1,98 @@
1
+ require 'securerandom'
2
+ require 'digest'
3
+ require 'socket'
4
+ require 'pact/mock_service/version'
5
+ require 'net/http'
6
+
7
+ module Pact
8
+ module Support
9
+ class Metrics
10
+
11
+ def self.report_metric(event, category, action, value = 1)
12
+ do_once_per_thread(:pact_metrics_message_shown) do
13
+ if track_events?
14
+ Pact.configuration.output_stream.puts "mock WARN: Please note: we are tracking events anonymously to gather important usage statistics like Pact-Ruby version and operating system. To disable tracking, set the 'PACT_DO_NOT_TRACK' environment variable to 'true'."
15
+ end
16
+ end
17
+
18
+ in_thread do
19
+ begin
20
+ if track_events?
21
+ uri = URI('https://www.google-analytics.com/collect')
22
+ req = Net::HTTP::Post.new(uri)
23
+ req.set_form_data(create_tracking_event(event, category, action, value))
24
+
25
+ Net::HTTP.start(uri.hostname, uri.port, read_timeout:2, open_timeout:2, :use_ssl => true ) do |http|
26
+ http.request(req)
27
+ end
28
+ end
29
+ rescue StandardError => e
30
+ handle_error(e)
31
+ end
32
+ end
33
+ end
34
+
35
+ private
36
+
37
+ def self.handle_error e
38
+ if ENV['PACT_METRICS_DEBUG'] == 'true'
39
+ Pact.configuration.output_stream.puts("DEBUG: #{e.inspect}\n" + e.backtrace.join("\n"))
40
+ end
41
+ end
42
+
43
+ def self.in_thread
44
+ Thread.new do
45
+ yield
46
+ end
47
+ end
48
+
49
+ # Not super safe to use the thread, but it's good enough for this usecase
50
+ def self.do_once_per_thread(key)
51
+ result = nil
52
+ if !Thread.current[key]
53
+ result = yield
54
+ end
55
+ Thread.current[key] = true
56
+ result
57
+ end
58
+
59
+ def self.create_tracking_event(event, category, action, value)
60
+ {
61
+ "v" => 1,
62
+ "t" => "event",
63
+ "tid" => "UA-117778936-1",
64
+ "cid" => calculate_cid,
65
+ "an" => "Pact Mock Service",
66
+ "av" => Pact::MockService::VERSION,
67
+ "aid" => "pact-mock_service",
68
+ "aip" => 1,
69
+ "ds" => ENV['PACT_EXECUTING_LANGUAGE'] ? "client" : "cli",
70
+ "cd2" => ENV['CI'] == "true" ? "CI" : "unknown",
71
+ "cd3" => RUBY_PLATFORM,
72
+ "cd6" => ENV['PACT_EXECUTING_LANGUAGE'] || "unknown",
73
+ "cd7" => ENV['PACT_EXECUTING_LANGUAGE_VERSION'],
74
+ "el" => event,
75
+ "ec" => category,
76
+ "ea" => action,
77
+ "ev" => value
78
+ }
79
+ end
80
+
81
+ def self.track_events?
82
+ ENV['PACT_DO_NOT_TRACK'] != 'true'
83
+ end
84
+
85
+ def self.calculate_cid
86
+ if RUBY_PLATFORM.include? "windows"
87
+ hostname = ENV['COMPUTERNAME']
88
+ else
89
+ hostname = ENV['HOSTNAME']
90
+ end
91
+ if !hostname
92
+ hostname = Socket.gethostname
93
+ end
94
+ Digest::MD5.hexdigest hostname || SecureRandom.urlsafe_base64(5)
95
+ end
96
+ end
97
+ end
98
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pact-mock_service
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.9.1
4
+ version: 3.11.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - James Fraser
@@ -9,10 +9,10 @@ authors:
9
9
  - Brent Snook
10
10
  - Ronald Holshausen
11
11
  - Beth Skurrie
12
- autorequire:
12
+ autorequire:
13
13
  bindir: bin
14
14
  cert_chain: []
15
- date: 2021-06-03 00:00:00.000000000 Z
15
+ date: 2023-01-20 00:00:00.000000000 Z
16
16
  dependencies:
17
17
  - !ruby/object:Gem::Dependency
18
18
  name: rack
@@ -312,7 +312,7 @@ dependencies:
312
312
  - - "~>"
313
313
  - !ruby/object:Gem::Version
314
314
  version: '0.5'
315
- description:
315
+ description:
316
316
  email:
317
317
  - james.fraser@alumni.swinburne.edu
318
318
  - sergei.matheson@gmail.com
@@ -392,11 +392,12 @@ files:
392
392
  - lib/pact/mock_service/version.rb
393
393
  - lib/pact/stub_service/cli.rb
394
394
  - lib/pact/support/expand_file_list.rb
395
+ - lib/pact/support/metrics.rb
395
396
  homepage: https://github.com/bethesque/pact-mock_service
396
397
  licenses:
397
398
  - MIT
398
399
  metadata: {}
399
- post_install_message:
400
+ post_install_message:
400
401
  rdoc_options: []
401
402
  require_paths:
402
403
  - lib
@@ -411,8 +412,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
411
412
  - !ruby/object:Gem::Version
412
413
  version: '0'
413
414
  requirements: []
414
- rubygems_version: 3.2.19
415
- signing_key:
415
+ rubygems_version: 3.4.4
416
+ signing_key:
416
417
  specification_version: 4
417
418
  summary: Provides a mock service for use with Pact
418
419
  test_files: []