avro_turf 1.11.0 → 1.13.0

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
  SHA256:
3
- metadata.gz: 31248ad33908f238baea49fc106bc3e6292f45a1fe7fce0c0ae091dc10a9ea17
4
- data.tar.gz: 25af934023a269b28acf004a1ec13c052380f5a664696ce881ef27efb209a7e5
3
+ metadata.gz: 72327ac5cc542eaaf881cd7ab9fc6ad3189f488abdcd6119a39b7e51c9545e6e
4
+ data.tar.gz: e5af812736913725238ac20778151c706776cc619625e60ec6448460289827c8
5
5
  SHA512:
6
- metadata.gz: 6e0796ce28027a654fa189f561f8179567fbebf50ba6c225be9b8623999e7ef424b58b05d1282a151474aaf48057b0000ce7999f6f8aed1c5f56f53f2d1f8cab
7
- data.tar.gz: 70fb1dc693589e71691ab8bf18cef28ebe533921efe401c6c0f7c3f1ace8ac880e5e3bd1161bd3235148f7f469c837d5224f90ea96a3867aa0fe24a16de91200
6
+ metadata.gz: 404704ea23a71ccbfd34354904c3a45ef52abf6c6d75c67570355e67a83b33a3f1b694baf6134e5d539c062aebd7509ee65da5ca8a9684f973d749860288f66b
7
+ data.tar.gz: bd5ffed0531358a52c355d73994ab6daec49f8da69b96f914d0f75dfcf8f049a84c02d8ac6f3b25cabe416640cfb82130c97ebfa6253c2321cefdafca44b1a32
data/CHANGELOG.md CHANGED
@@ -2,6 +2,15 @@
2
2
 
3
3
  ## Unreleased
4
4
 
5
+ ## v1.13.0
6
+
7
+ - Set `idempotent: true` for the request except one that registers a new schema (#199)
8
+ - Use `connect_timeout` for `Excon`'s `dns_timeouts` that set the timeout for the connection to the Domain Name Server (#201)
9
+
10
+ ## v1.12.0
11
+
12
+ - Add `connect_timeout` parameter to `AvroTurf::Messaging` to set the timeout for the connection to the schema registry (#197)
13
+
5
14
  ## v1.11.0
6
15
 
7
16
  - Add `decode_all` and `decode_all_from_stream` methods to return all entries in a data file (#194)
data/avro_turf.gemspec CHANGED
@@ -20,7 +20,7 @@ Gem::Specification.new do |spec|
20
20
  spec.require_paths = ["lib"]
21
21
 
22
22
  spec.add_dependency "avro", ">= 1.8.0", "< 1.12"
23
- spec.add_dependency "excon", "~> 0.71"
23
+ spec.add_dependency "excon", "~> 0.103"
24
24
 
25
25
  spec.add_development_dependency "bundler", "~> 2.0"
26
26
  spec.add_development_dependency "rake", "~> 13.0"
@@ -15,7 +15,8 @@ class AvroTurf::ConfluentSchemaRegistry
15
15
  client_key_pass: nil,
16
16
  client_cert_data: nil,
17
17
  client_key_data: nil,
18
- path_prefix: nil
18
+ path_prefix: nil,
19
+ connect_timeout: nil
19
20
  )
20
21
  @path_prefix = path_prefix
21
22
  @logger = logger
@@ -33,13 +34,15 @@ class AvroTurf::ConfluentSchemaRegistry
33
34
  client_key: client_key,
34
35
  client_key_pass: client_key_pass,
35
36
  client_cert_data: client_cert_data,
36
- client_key_data: client_key_data
37
+ client_key_data: client_key_data,
38
+ connect_timeout: connect_timeout,
39
+ dns_timeouts: connect_timeout
37
40
  )
38
41
  end
39
42
 
40
43
  def fetch(id)
41
44
  @logger.info "Fetching schema with id #{id}"
42
- data = get("/schemas/ids/#{id}")
45
+ data = get("/schemas/ids/#{id}", idempotent: true)
43
46
  data.fetch("schema")
44
47
  end
45
48
 
@@ -55,29 +58,30 @@ class AvroTurf::ConfluentSchemaRegistry
55
58
 
56
59
  # List all subjects
57
60
  def subjects
58
- get('/subjects')
61
+ get('/subjects', idempotent: true)
59
62
  end
60
63
 
61
64
  # List all versions for a subject
62
65
  def subject_versions(subject)
63
- get("/subjects/#{subject}/versions")
66
+ get("/subjects/#{subject}/versions", idempotent: true)
64
67
  end
65
68
 
66
69
  # Get a specific version for a subject
67
70
  def subject_version(subject, version = 'latest')
68
- get("/subjects/#{subject}/versions/#{version}")
71
+ get("/subjects/#{subject}/versions/#{version}", idempotent: true)
69
72
  end
70
73
 
71
74
  # Get the subject and version for a schema id
72
75
  def schema_subject_versions(schema_id)
73
- get("/schemas/ids/#{schema_id}/versions")
76
+ get("/schemas/ids/#{schema_id}/versions", idempotent: true)
74
77
  end
75
78
 
76
79
  # Check if a schema exists. Returns nil if not found.
77
80
  def check(subject, schema)
78
81
  data = post("/subjects/#{subject}",
79
82
  expects: [200, 404],
80
- body: { schema: schema.to_s }.to_json)
83
+ body: { schema: schema.to_s }.to_json,
84
+ idempotent: true)
81
85
  data unless data.has_key?("error_code")
82
86
  end
83
87
 
@@ -89,28 +93,28 @@ class AvroTurf::ConfluentSchemaRegistry
89
93
  # http://docs.confluent.io/3.1.2/schema-registry/docs/api.html#compatibility
90
94
  def compatible?(subject, schema, version = 'latest')
91
95
  data = post("/compatibility/subjects/#{subject}/versions/#{version}",
92
- expects: [200, 404], body: { schema: schema.to_s }.to_json)
96
+ expects: [200, 404], body: { schema: schema.to_s }.to_json, idempotent: true)
93
97
  data.fetch('is_compatible', false) unless data.has_key?('error_code')
94
98
  end
95
99
 
96
100
  # Get global config
97
101
  def global_config
98
- get("/config")
102
+ get("/config", idempotent: true)
99
103
  end
100
104
 
101
105
  # Update global config
102
106
  def update_global_config(config)
103
- put("/config", body: config.to_json)
107
+ put("/config", body: config.to_json, idempotent: true)
104
108
  end
105
109
 
106
110
  # Get config for subject
107
111
  def subject_config(subject)
108
- get("/config/#{subject}")
112
+ get("/config/#{subject}", idempotent: true)
109
113
  end
110
114
 
111
115
  # Update config for subject
112
116
  def update_subject_config(subject, config)
113
- put("/config/#{subject}", body: config.to_json)
117
+ put("/config/#{subject}", body: config.to_json, idempotent: true)
114
118
  end
115
119
 
116
120
  private
@@ -55,6 +55,7 @@ class AvroTurf
55
55
  # client_key_pass - Password to go with client_key (optional).
56
56
  # client_cert_data - In-memory client certificate (optional).
57
57
  # client_key_data - In-memory client private key to go with client_cert_data (optional).
58
+ # connect_timeout - Timeout to use in the connection with the domain name server and the schema registry (optional).
58
59
  def initialize(
59
60
  registry: nil,
60
61
  registry_url: nil,
@@ -71,7 +72,8 @@ class AvroTurf
71
72
  client_key: nil,
72
73
  client_key_pass: nil,
73
74
  client_cert_data: nil,
74
- client_key_data: nil
75
+ client_key_data: nil,
76
+ connect_timeout: nil
75
77
  )
76
78
  @logger = logger || Logger.new($stderr)
77
79
  @namespace = namespace
@@ -89,7 +91,8 @@ class AvroTurf
89
91
  client_key_pass: client_key_pass,
90
92
  client_cert_data: client_cert_data,
91
93
  client_key_data: client_key_data,
92
- path_prefix: registry_path_prefix
94
+ path_prefix: registry_path_prefix,
95
+ connect_timeout: connect_timeout
93
96
  )
94
97
  )
95
98
  @schemas_by_id = {}
@@ -1,3 +1,3 @@
1
1
  class AvroTurf
2
- VERSION = "1.11.0"
2
+ VERSION = "1.13.0"
3
3
  end
@@ -8,6 +8,7 @@ describe AvroTurf::ConfluentSchemaRegistry do
8
8
  let(:client_cert) { "test client cert" }
9
9
  let(:client_key) { "test client key" }
10
10
  let(:client_key_pass) { "test client key password" }
11
+ let(:connect_timeout) { 10 }
11
12
 
12
13
  it_behaves_like "a confluent schema registry client" do
13
14
  let(:registry) {
@@ -30,4 +31,15 @@ describe AvroTurf::ConfluentSchemaRegistry do
30
31
  )
31
32
  }
32
33
  end
34
+
35
+ it_behaves_like "a confluent schema registry client" do
36
+ let(:registry) {
37
+ described_class.new(
38
+ registry_url,
39
+ user: user,
40
+ password: password,
41
+ connect_timeout: connect_timeout
42
+ )
43
+ }
44
+ end
33
45
  end
@@ -425,4 +425,27 @@ describe AvroTurf::Messaging do
425
425
  it_behaves_like 'encoding and decoding with the schema from registry'
426
426
  it_behaves_like 'encoding and decoding with the schema_id from registry'
427
427
  end
428
- end
428
+
429
+ context 'with a connect timeout' do
430
+ let(:avro) {
431
+ AvroTurf::Messaging.new(
432
+ registry_url: registry_url,
433
+ schemas_path: "spec/schemas",
434
+ logger: logger,
435
+ client_cert: client_cert,
436
+ client_key: client_key,
437
+ client_key_pass: client_key_pass,
438
+ connect_timeout: 10
439
+ )
440
+ }
441
+
442
+ it_behaves_like "encoding and decoding with the schema from schema store"
443
+ it_behaves_like 'encoding and decoding with the schema from registry'
444
+ it_behaves_like 'encoding and decoding with the schema_id from registry'
445
+
446
+ it 'passes the connect timeout setting to Excon' do
447
+ expect(Excon).to receive(:new).with(anything, hash_including(connect_timeout: 10, dns_timeouts: 10)).and_call_original
448
+ avro
449
+ end
450
+ end
451
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: avro_turf
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.11.0
4
+ version: 1.13.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daniel Schierbeck
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-08-29 00:00:00.000000000 Z
11
+ date: 2023-09-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: avro
@@ -36,14 +36,14 @@ dependencies:
36
36
  requirements:
37
37
  - - "~>"
38
38
  - !ruby/object:Gem::Version
39
- version: '0.71'
39
+ version: '0.103'
40
40
  type: :runtime
41
41
  prerelease: false
42
42
  version_requirements: !ruby/object:Gem::Requirement
43
43
  requirements:
44
44
  - - "~>"
45
45
  - !ruby/object:Gem::Version
46
- version: '0.71'
46
+ version: '0.103'
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: bundler
49
49
  requirement: !ruby/object:Gem::Requirement