-
Notifications
You must be signed in to change notification settings - Fork 15
/
AvroGenericRecordSpec.scala
40 lines (30 loc) · 1.21 KB
/
AvroGenericRecordSpec.scala
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
package com.kafka.demo
package original
import org.apache.avro.Schema
import org.apache.avro.generic.{ GenericData, GenericRecord }
import org.scalatest.matchers.should.Matchers
import org.scalatest.wordspec.AnyWordSpecLike
final class AvroGenericRecordSpec extends AnyWordSpecLike with Matchers {
// setting a non-existent field throws AvroRuntimeException
private[this] def getUsers(schema: Schema): List[GenericRecord] = {
// Leave favorite color null
val user1: GenericRecord = new GenericData.Record(schema)
user1.put("name", "Alyssa")
user1.put("favorite_number", 256)
val user2: GenericRecord = new GenericData.Record(schema)
user2.put("name", "Ben")
user2.put("favorite_number", 7)
user2.put("favorite_color", "red")
List(user1, user2)
}
"AvroGenericRecord" should {
"serialize and deserialize" in {
val schemaPath = "avro/src/main/avro/user.avsc"
val filePath = "avro/target/data/users-generic-record.avro"
val schema = AvroGenericRecord.getSchema(schemaPath)
val users = getUsers(schema)
AvroGenericRecord.serialize(users, schemaPath, filePath)
AvroGenericRecord.deserialize(schemaPath, filePath) shouldBe users
}
}
}