Skip to content

Commit 71f2d14

Browse files
author
Kerem Sahin
committed
Adding EventUtilsTest
1 parent e69def9 commit 71f2d14

File tree

7 files changed

+112
-84
lines changed

7 files changed

+112
-84
lines changed
Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
package com.linkedin.metadata;
2+
3+
import com.linkedin.common.urn.CorpuserUrn;
4+
import com.linkedin.data.template.RecordTemplate;
5+
import com.linkedin.metadata.dao.utils.RecordUtils;
6+
import com.linkedin.mxe.MetadataAuditEvent;
7+
import com.linkedin.mxe.MetadataChangeEvent;
8+
import java.io.IOException;
9+
import java.io.InputStream;
10+
import org.apache.avro.Schema;
11+
import org.apache.avro.generic.GenericDatumReader;
12+
import org.apache.avro.generic.GenericRecord;
13+
import org.apache.avro.io.DatumReader;
14+
import org.apache.avro.io.DecoderFactory;
15+
import org.apache.avro.io.JsonDecoder;
16+
import org.testng.annotations.Test;
17+
18+
import static com.linkedin.metadata.utils.TestUtils.*;
19+
import static org.testng.Assert.*;
20+
21+
22+
public class EventUtilsTests {
23+
24+
@Test
25+
public void testAvroToPegasusMAE() throws IOException {
26+
GenericRecord record = genericRecordFromResource("test-avro2pegasus-mae.json",
27+
com.linkedin.pegasus2avro.mxe.MetadataAuditEvent.SCHEMA$);
28+
29+
MetadataAuditEvent mae = EventUtils.avroToPegasusMAE(record);
30+
31+
assertEquals(
32+
mae.getNewSnapshot().getDatasetSnapshot().getAspects().get(0).getOwnership().getOwners().get(0).getOwner(),
33+
new CorpuserUrn("foobar"));
34+
}
35+
36+
@Test
37+
public void testAvroToPegasusMCE() throws IOException {
38+
GenericRecord record = genericRecordFromResource("test-avro2pegasus-mce.json",
39+
com.linkedin.pegasus2avro.mxe.MetadataChangeEvent.SCHEMA$);
40+
41+
MetadataChangeEvent mce = EventUtils.avroToPegasusMCE(record);
42+
43+
assertEquals(
44+
mce.getProposedSnapshot().getDatasetSnapshot().getAspects().get(0).getOwnership().getOwners().get(0).getOwner(),
45+
new CorpuserUrn("foobar"));
46+
}
47+
48+
@Test
49+
public void testPegasusToAvroMAE() throws IOException {
50+
MetadataAuditEvent event = recordTemplateFromResource("test-pegasus2avro-mae.json", MetadataAuditEvent.class);
51+
52+
GenericRecord record = EventUtils.pegasusToAvroMAE(event);
53+
54+
assertEquals(record.getSchema(), com.linkedin.pegasus2avro.mxe.MetadataAuditEvent.SCHEMA$);
55+
assertNotNull(record.get("newSnapshot"));
56+
}
57+
58+
@Test
59+
public void testPegasusToAvroMCE() throws IOException {
60+
MetadataChangeEvent event = recordTemplateFromResource("test-pegasus2avro-mce.json", MetadataChangeEvent.class);
61+
62+
GenericRecord record = EventUtils.pegasusToAvroMCE(event);
63+
64+
assertEquals(record.getSchema(), com.linkedin.pegasus2avro.mxe.MetadataChangeEvent.SCHEMA$);
65+
assertNotNull(record.get("proposedSnapshot"));
66+
}
67+
68+
private GenericRecord genericRecordFromResource(String resourcePath, Schema schema) throws IOException {
69+
InputStream is = getClass().getClassLoader().getResourceAsStream(resourcePath);
70+
JsonDecoder decoder = DecoderFactory.get().jsonDecoder(schema, is);
71+
DatumReader<GenericRecord> reader = new GenericDatumReader<>(schema);
72+
return reader.read(null, decoder);
73+
}
74+
75+
private <T extends RecordTemplate> T recordTemplateFromResource(String resourcePath,
76+
Class<? extends RecordTemplate> clazz) throws IOException {
77+
String json = loadJsonFromResource(resourcePath);
78+
return (T) RecordUtils.toRecordTemplate(clazz, json);
79+
}
80+
}

metadata-events/mxe-utils-avro-1.7/src/test/resources/old-mce-schema.avsc

Lines changed: 0 additions & 1 deletion
This file was deleted.

metadata-events/mxe-utils-avro-1.7/src/test/resources/old-mce.json

Lines changed: 0 additions & 67 deletions
This file was deleted.

metadata-events/mxe-utils-avro-1.7/src/test/resources/test-avro2pegasus-mae.json

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,19 +2,23 @@
22
"auditHeader": null,
33
"oldSnapshot": null,
44
"newSnapshot": {
5-
"com.linkedin.pegasus2avro.metadata.snapshot.MetricSnapshot": {
6-
"urn": "urn:li:metric:(foo,bar)",
5+
"com.linkedin.pegasus2avro.metadata.snapshot.DatasetSnapshot": {
6+
"urn": "urn:li:dataset:(urn:li:dataPlatform:foo,bar,baz)",
77
"aspects": [
88
{
99
"com.linkedin.pegasus2avro.common.Ownership": {
1010
"owners": [
1111
{
12-
"owner": "urn:li:corpuser:foo",
12+
"owner": "urn:li:corpuser:foobar",
1313
"type": "DEVELOPER",
1414
"source": null
1515
}
1616
],
17-
"lastModified": null
17+
"lastModified": {
18+
"time": 0,
19+
"actor": "urn:li:corpuser:foobar",
20+
"impersonator": null
21+
}
1822
}
1923
}
2024
]

metadata-events/mxe-utils-avro-1.7/src/test/resources/test-avro2pegasus-mce.json

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,23 @@
11
{
22
"auditHeader": null,
33
"proposedSnapshot": {
4-
"com.linkedin.pegasus2avro.metadata.snapshot.MetricSnapshot": {
5-
"urn": "urn:li:metric:(foo,bar)",
4+
"com.linkedin.pegasus2avro.metadata.snapshot.DatasetSnapshot": {
5+
"urn": "urn:li:dataset:(urn:li:dataPlatform:foo,bar,baz)",
66
"aspects": [
77
{
88
"com.linkedin.pegasus2avro.common.Ownership": {
99
"owners": [
1010
{
11-
"owner": "urn:li:corpuser:foo",
11+
"owner": "urn:li:corpuser:foobar",
1212
"type": "DEVELOPER",
1313
"source": null
1414
}
1515
],
16-
"lastModified": null
16+
"lastModified": {
17+
"time": 0,
18+
"actor": "urn:li:corpuser:foobar",
19+
"impersonator": null
20+
}
1721
}
1822
}
1923
]

metadata-events/mxe-utils-avro-1.7/src/test/resources/test-pegasus2avro-mae.json

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,20 @@
11
{
22
"newSnapshot": {
3-
"com.linkedin.metadata.snapshot.MetricSnapshot": {
4-
"urn": "urn:li:metric:(foo,bar)",
3+
"com.linkedin.metadata.snapshot.DatasetSnapshot": {
4+
"urn": "urn:li:dataset:(urn:li:dataPlatform:foo,bar,baz)",
55
"aspects": [
66
{
77
"com.linkedin.common.Ownership": {
88
"owners": [
99
{
10-
"owner": "urn:li:corpuser:foo",
10+
"owner": "urn:li:corpuser:foobar",
1111
"type": "DEVELOPER"
1212
}
13-
]
13+
],
14+
"lastModified": {
15+
"time": 0,
16+
"actor": "urn:li:corpuser:foobar"
17+
}
1418
}
1519
}
1620
]

metadata-events/mxe-utils-avro-1.7/src/test/resources/test-pegasus2avro-mce.json

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,20 @@
11
{
22
"proposedSnapshot": {
3-
"com.linkedin.metadata.snapshot.MetricSnapshot": {
4-
"urn": "urn:li:metric:(foo,bar)",
3+
"com.linkedin.metadata.snapshot.DatasetSnapshot": {
4+
"urn": "urn:li:dataset:(urn:li:dataPlatform:foo,bar,baz)",
55
"aspects": [
66
{
77
"com.linkedin.common.Ownership": {
88
"owners": [
99
{
10-
"owner": "urn:li:corpuser:foo",
10+
"owner": "urn:li:corpuser:foobar",
1111
"type": "DEVELOPER"
1212
}
13-
]
13+
],
14+
"lastModified": {
15+
"time": 0,
16+
"actor": "urn:li:corpuser:foobar"
17+
}
1418
}
1519
}
1620
]

0 commit comments

Comments
 (0)