avro 1.9.2 → 1.10.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -39,7 +39,12 @@ class TestSchemaCompatibility < Test::Unit::TestCase
39
39
  long_map_schema, int_map_schema,
40
40
 
41
41
  enum1_ab_schema, enum1_ab_schema,
42
+ enum1_ab_aliased_schema, enum1_ab_schema,
42
43
  enum1_abc_schema, enum1_ab_schema,
44
+ enum1_ab_default_schema, enum1_abc_schema,
45
+
46
+ fixed1_schema, fixed1_schema,
47
+ fixed1_aliased_schema, fixed1_schema,
43
48
 
44
49
  string_schema, bytes_schema,
45
50
  bytes_schema, string_schema,
@@ -55,6 +60,7 @@ class TestSchemaCompatibility < Test::Unit::TestCase
55
60
 
56
61
  empty_record1_schema, empty_record1_schema,
57
62
  empty_record1_schema, a_int_record1_schema,
63
+ empty_record1_aliased_schema, empty_record1_schema,
58
64
 
59
65
  a_int_record1_schema, a_int_record1_schema,
60
66
  a_dint_record1_schema, a_int_record1_schema,
@@ -117,16 +123,22 @@ class TestSchemaCompatibility < Test::Unit::TestCase
117
123
  int_map_schema, long_map_schema,
118
124
 
119
125
  enum1_ab_schema, enum1_abc_schema,
126
+ enum1_ab_schema, enum1_ab_aliased_schema,
120
127
  enum1_bc_schema, enum1_abc_schema,
121
128
 
122
129
  enum1_ab_schema, enum2_ab_schema,
123
130
  int_schema, enum2_ab_schema,
124
131
  enum2_ab_schema, int_schema,
125
132
 
133
+ fixed1_schema, fixed2_schema,
134
+ fixed1_schema, fixed1_size3_schema,
135
+ fixed1_schema, fixed1_aliased_schema,
136
+
126
137
  int_union_schema, int_string_union_schema,
127
138
  string_union_schema, int_string_union_schema,
128
139
 
129
140
  empty_record2_schema, empty_record1_schema,
141
+ empty_record1_schema, empty_record1_aliased_schema,
130
142
  a_int_record1_schema, empty_record1_schema,
131
143
  a_int_b_dint_record1_schema, empty_record1_schema,
132
144
 
@@ -169,6 +181,17 @@ class TestSchemaCompatibility < Test::Unit::TestCase
169
181
  assert_false(can_read?(reader_schema, writer_schema))
170
182
  end
171
183
 
184
+ def test_aliased_field
185
+ reader_schema = Avro::Schema.parse(<<-SCHEMA)
186
+ {"type":"record", "name":"Record", "fields":[
187
+ {"name":"newname1", "aliases":["oldfield1"], "type":"int"},
188
+ {"name":"oldfield2", "type":"string"}
189
+ ]}
190
+ SCHEMA
191
+ assert_true(can_read?(writer_schema, reader_schema))
192
+ assert_false(can_read?(reader_schema, writer_schema))
193
+ end
194
+
172
195
  def test_all_fields
173
196
  reader_schema = Avro::Schema.parse <<-SCHEMA
174
197
  {"type":"record", "name":"Record", "fields":[
@@ -250,6 +273,23 @@ class TestSchemaCompatibility < Test::Unit::TestCase
250
273
  assert_true(can_read?(enum_schema1, enum_schema2))
251
274
  end
252
275
 
276
+ def test_crossed_aliases
277
+ writer_schema = Avro::Schema.parse(<<-SCHEMA)
278
+ {"type":"record", "name":"Record", "fields":[
279
+ {"name":"field1", "type": "int"},
280
+ {"name":"field2", "type": "string"}
281
+ ]}
282
+ SCHEMA
283
+ reader_schema = Avro::Schema.parse(<<-SCHEMA)
284
+ {"type":"record", "name":"Record", "fields":[
285
+ {"name":"field1", "aliases":["field2"], "type":"string"},
286
+ {"name":"field2", "aliases":["field1"], "type":"int"}
287
+ ]}
288
+ SCHEMA
289
+ # Not supported; alias is not used if there is a redirect match
290
+ assert_false(can_read?(writer_schema, reader_schema))
291
+ end
292
+
253
293
  # Tests from lang/java/avro/src/test/java/org/apache/avro/io/parsing/TestResolvingGrammarGenerator2.java
254
294
 
255
295
  def point_2d_schema
@@ -373,6 +413,14 @@ class TestSchemaCompatibility < Test::Unit::TestCase
373
413
  Avro::Schema.parse('{"type":"enum", "name":"Enum1", "symbols":["A","B"]}')
374
414
  end
375
415
 
416
+ def enum1_ab_default_schema
417
+ Avro::Schema.parse('{"type":"enum", "name":"Enum1", "symbols":["A","B"], "default":"A"}')
418
+ end
419
+
420
+ def enum1_ab_aliased_schema
421
+ Avro::Schema.parse('{"type":"enum", "name":"Enum2", "aliases":["Enum1"], "symbols":["A","B"]}')
422
+ end
423
+
376
424
  def enum1_abc_schema
377
425
  Avro::Schema.parse('{"type":"enum", "name":"Enum1", "symbols":["A","B","C"]}')
378
426
  end
@@ -385,10 +433,30 @@ class TestSchemaCompatibility < Test::Unit::TestCase
385
433
  Avro::Schema.parse('{"type":"enum", "name":"Enum2", "symbols":["A","B"]}')
386
434
  end
387
435
 
436
+ def fixed1_schema
437
+ Avro::Schema.parse('{"type":"fixed", "name":"Fixed1", "size": 2}')
438
+ end
439
+
440
+ def fixed1_aliased_schema
441
+ Avro::Schema.parse('{"type":"fixed", "name":"Fixed2", "aliases":["Fixed1"], "size": 2}')
442
+ end
443
+
444
+ def fixed2_schema
445
+ Avro::Schema.parse('{"type":"fixed", "name":"Fixed2", "size": 2}')
446
+ end
447
+
448
+ def fixed1_size3_schema
449
+ Avro::Schema.parse('{"type":"fixed", "name":"Fixed1", "size": 3}')
450
+ end
451
+
388
452
  def empty_record1_schema
389
453
  Avro::Schema.parse('{"type":"record", "name":"Record1"}')
390
454
  end
391
455
 
456
+ def empty_record1_aliased_schema
457
+ Avro::Schema.parse('{"type":"record", "name":"Record2", "aliases":["Record1"]}')
458
+ end
459
+
392
460
  def empty_record2_schema
393
461
  Avro::Schema.parse('{"type":"record", "name":"Record2"}')
394
462
  end
@@ -166,6 +166,7 @@ class TestSchemaNormalization < Test::Unit::TestCase
166
166
  CaseFinder.cases.each do |test_case|
167
167
  schema = Avro::Schema.parse(test_case.input)
168
168
  assert_equal test_case.canonical, Avro::SchemaNormalization.to_parsing_form(schema)
169
+ assert_equal test_case.fingerprint, schema.crc_64_avro_fingerprint
169
170
  end
170
171
  end
171
172
  end
@@ -16,7 +16,7 @@
16
16
 
17
17
  require 'test_help'
18
18
 
19
- class TestSchema < Test::Unit::TestCase
19
+ class TestSchemaValidator < Test::Unit::TestCase
20
20
  def validate!(schema, value, options=nil)
21
21
  Avro::SchemaValidator.validate!(schema, value, options)
22
22
  end
@@ -277,7 +277,7 @@ class TestSchema < Test::Unit::TestCase
277
277
 
278
278
  def test_validate_union_of_nil_and_record_inside_array
279
279
  schema = hash_to_schema(
280
- name: 'this does not matter',
280
+ name: 'this_does_not_matter',
281
281
  type: 'record',
282
282
  fields: [
283
283
  {
@@ -27,7 +27,7 @@ class GenericResponder < Avro::IPC::Responder
27
27
  @datum = datum
28
28
  end
29
29
 
30
- def call(message, request)
30
+ def call(message, _request)
31
31
  if message.name == @msg
32
32
  STDERR.puts "Message: #{message.name} Datum: #{@datum.inspect}"
33
33
  @datum
@@ -101,7 +101,7 @@ def main
101
101
  case ARGV[4]
102
102
  when "-file"
103
103
  Avro::DataFile.open(ARGV[5]) {|f|
104
- f.each{|d| datum = d; break }
104
+ f.each{|e| datum = e; break }
105
105
  }
106
106
  when "-data"
107
107
  puts "JSON Decoder not yet implemented."
@@ -124,7 +124,7 @@ def main
124
124
  if ARGV.size > 4
125
125
  case ARGV[4]
126
126
  when "-file"
127
- Avro::DataFile.open(ARGV[5]){|f| f.each{|d| datum = d; break } }
127
+ Avro::DataFile.open(ARGV[5]){|f| f.each{|e| datum = e; break } }
128
128
  when "-data"
129
129
  puts "JSON Decoder not yet implemented"
130
130
  return 1
metadata CHANGED
@@ -1,29 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: avro
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.9.2
4
+ version: 1.10.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Apache Software Foundation
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-02-07 00:00:00.000000000 Z
11
+ date: 2020-06-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: multi_json
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ">="
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '0'
19
+ version: '1'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ">="
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '0'
26
+ version: '1'
27
27
  description: Avro is a data serialization and RPC format
28
28
  email: dev@avro.apache.org
29
29
  executables: []
@@ -79,7 +79,7 @@ files:
79
79
  - test/tool.rb
80
80
  homepage: https://avro.apache.org/
81
81
  licenses:
82
- - Apache License 2.0 (Apache-2.0)
82
+ - Apache-2.0
83
83
  metadata: {}
84
84
  post_install_message:
85
85
  rdoc_options:
@@ -105,14 +105,14 @@ signing_key:
105
105
  specification_version: 4
106
106
  summary: Apache Avro for Ruby
107
107
  test_files:
108
- - test/test_schema.rb
109
- - test/test_socket_transport.rb
110
- - test/test_io.rb
111
- - test/test_logical_types.rb
112
108
  - test/test_help.rb
113
- - test/test_datafile.rb
114
- - test/test_protocol.rb
115
- - test/test_schema_validator.rb
109
+ - test/test_io.rb
110
+ - test/test_socket_transport.rb
111
+ - test/test_fingerprints.rb
112
+ - test/test_schema.rb
116
113
  - test/test_schema_compatibility.rb
114
+ - test/test_schema_validator.rb
117
115
  - test/test_schema_normalization.rb
118
- - test/test_fingerprints.rb
116
+ - test/test_protocol.rb
117
+ - test/test_datafile.rb
118
+ - test/test_logical_types.rb