From a60cfb43319a51e84ca18e319a1080ed666ef558 Mon Sep 17 00:00:00 2001
From: stym06 <stym06>
Date: Mon, 27 Feb 2023 12:01:41 +0530
Subject: [PATCH] make protoc plugin compatiable for M1 chip & fix some tc

---
 build.gradle                                  | 14 +++++++++++--
 .../serializer/MessageToJsonTest.java         | 20 +++++++++----------
 .../firehose/sink/grpc/GrpcClientTest.java    |  4 ++--
 .../sink/grpc/GrpcSinkFactoryTest.java        |  2 +-
 4 files changed, 25 insertions(+), 15 deletions(-)

diff --git a/build.gradle b/build.gradle
index 09f4d0d81..85672d038 100644
--- a/build.gradle
+++ b/build.gradle
@@ -93,6 +93,7 @@ dependencies {
     implementation(group: 'org.apache.hadoop', name: 'hadoop-common', version: '3.1.0') {
         exclude group: "log4j", module: "log4j"
         exclude group: "org.slf4j", module: "slf4j-log4j12"
+        exclude group: "org.xerial.snappy", module: "snappy-java"
     }
     implementation group: 'com.gojek.parquet', name: 'parquet-protobuf', version: '1.11.9'
     implementation 'com.gojek.parquet:parquet-hadoop:1.11.9'
@@ -103,6 +104,7 @@ dependencies {
     implementation 'org.apache.logging.log4j:log4j-core:2.17.1'
     implementation group: 'io.odpf', name: 'depot', version: '0.3.7'
     implementation group: 'com.networknt', name: 'json-schema-validator', version: '1.0.59' exclude group: 'org.slf4j'
+    implementation 'org.xerial.snappy:snappy-java:1.1.8.4'
 
     testImplementation group: 'junit', name: 'junit', version: '4.11'
     testImplementation 'org.hamcrest:hamcrest-all:1.3'
@@ -117,11 +119,19 @@ dependencies {
 protobuf {
     generatedFilesBaseDir = "$projectDir/src/generated"
     protoc {
-        artifact = "com.google.protobuf:protoc:3.1.0"
+        if (osdetector.os == "osx") {
+            artifact = 'com.google.protobuf:protoc:3.1.0:osx-x86_64'
+        } else {
+            artifact = "com.google.protobuf:protoc:3.1.0"
+        }
     }
     plugins {
         grpc {
-            artifact = "io.grpc:protoc-gen-grpc-java:1.0.3"
+            if (osdetector.os == "osx") {
+                artifact = 'io.grpc:protoc-gen-grpc-java:1.0.3:osx-x86_64'
+            } else {
+                artifact = "io.grpc:protoc-gen-grpc-java:1.0.3"
+            }
         }
     }
     generateProtoTasks {
diff --git a/src/test/java/io/odpf/firehose/serializer/MessageToJsonTest.java b/src/test/java/io/odpf/firehose/serializer/MessageToJsonTest.java
index c14689ca6..388e8cb65 100644
--- a/src/test/java/io/odpf/firehose/serializer/MessageToJsonTest.java
+++ b/src/test/java/io/odpf/firehose/serializer/MessageToJsonTest.java
@@ -34,11 +34,11 @@ public void shouldProperlySerializeEsbMessage() throws DeserializerException {
                 Base64.getDecoder().decode(logMessage.getBytes()), "sample-topic", 0, 100);
         String actualOutput = messageToJson.serialize(message);
         assertEquals(actualOutput, "{\"logMessage\":\"{\\\"uniqueDrivers\\\":\\\"3\\\","
-                + "\\\"windowStartTime\\\":\\\"Mar 20, 2017 10:54:00 AM\\\","
-                + "\\\"windowEndTime\\\":\\\"Mar 20, 2017 10:55:00 AM\\\",\\\"s2IdLevel\\\":13,\\\"vehicleType\\\":\\\"BIKE\\\","
+                + "\\\"windowStartTime\\\":\\\"Mar 20, 2017, 10:54:00 AM\\\","
+                + "\\\"windowEndTime\\\":\\\"Mar 20, 2017, 10:55:00 AM\\\",\\\"s2IdLevel\\\":13,\\\"vehicleType\\\":\\\"BIKE\\\","
                 + "\\\"s2Id\\\":\\\"3344472187078705152\\\"}\",\"topic\":\"sample-topic\",\"logKey\":\"{"
-                + "\\\"windowStartTime\\\":\\\"Mar 20, 2017 10:54:00 AM\\\","
-                + "\\\"windowEndTime\\\":\\\"Mar 20, 2017 10:55:00 AM\\\",\\\"s2IdLevel\\\":13,\\\"vehicleType\\\":\\\"BIKE\\\","
+                + "\\\"windowStartTime\\\":\\\"Mar 20, 2017, 10:54:00 AM\\\","
+                + "\\\"windowEndTime\\\":\\\"Mar 20, 2017, 10:55:00 AM\\\",\\\"s2IdLevel\\\":13,\\\"vehicleType\\\":\\\"BIKE\\\","
                 + "\\\"s2Id\\\":\\\"3344472187078705152\\\"}\"}");
     }
 
@@ -50,8 +50,8 @@ public void shouldSerializeWhenKeyIsMissing() throws DeserializerException {
                 100);
         String actualOutput = messageToJson.serialize(message);
         assertEquals("{\"logMessage\":\"{\\\"uniqueDrivers\\\":\\\"3\\\","
-                + "\\\"windowStartTime\\\":\\\"Mar 20, 2017 10:54:00 AM\\\","
-                + "\\\"windowEndTime\\\":\\\"Mar 20, 2017 10:55:00 AM\\\",\\\"s2IdLevel\\\":13,\\\"vehicleType\\\":\\\"BIKE\\\","
+                + "\\\"windowStartTime\\\":\\\"Mar 20, 2017, 10:54:00 AM\\\","
+                + "\\\"windowEndTime\\\":\\\"Mar 20, 2017, 10:55:00 AM\\\",\\\"s2IdLevel\\\":13,\\\"vehicleType\\\":\\\"BIKE\\\","
                 + "\\\"s2Id\\\":\\\"3344472187078705152\\\"}\",\"topic\":\"sample-topic\"}", actualOutput);
     }
 
@@ -64,8 +64,8 @@ public void shouldSerializeWhenKeyIsEmptyWithTimestampsAsSimpleDateFormatWhenFla
 
         String actualOutput = messageToJson.serialize(message);
         assertEquals("{\"logMessage\":\"{\\\"uniqueDrivers\\\":\\\"3\\\","
-                + "\\\"windowStartTime\\\":\\\"Mar 20, 2017 10:54:00 AM\\\","
-                + "\\\"windowEndTime\\\":\\\"Mar 20, 2017 10:55:00 AM\\\",\\\"s2IdLevel\\\":13,\\\"vehicleType\\\":\\\"BIKE\\\","
+                + "\\\"windowStartTime\\\":\\\"Mar 20, 2017, 10:54:00 AM\\\","
+                + "\\\"windowEndTime\\\":\\\"Mar 20, 2017, 10:55:00 AM\\\",\\\"s2IdLevel\\\":13,\\\"vehicleType\\\":\\\"BIKE\\\","
                 + "\\\"s2Id\\\":\\\"3344472187078705152\\\"}\",\"topic\":\"sample-topic\"}", actualOutput);
     }
 
@@ -93,8 +93,8 @@ public void shouldWrappedSerializedJsonInArrayWithTimestampsAsSimpleDateFormatWh
 
         String actualOutput = messageToJson.serialize(message);
         assertEquals("[{\"logMessage\":\"{\\\"uniqueDrivers\\\":\\\"3\\\","
-                + "\\\"windowStartTime\\\":\\\"Mar 20, 2017 10:54:00 AM\\\","
-                + "\\\"windowEndTime\\\":\\\"Mar 20, 2017 10:55:00 AM\\\",\\\"s2IdLevel\\\":13,\\\"vehicleType\\\":\\\"BIKE\\\","
+                + "\\\"windowStartTime\\\":\\\"Mar 20, 2017, 10:54:00 AM\\\","
+                + "\\\"windowEndTime\\\":\\\"Mar 20, 2017, 10:55:00 AM\\\",\\\"s2IdLevel\\\":13,\\\"vehicleType\\\":\\\"BIKE\\\","
                 + "\\\"s2Id\\\":\\\"3344472187078705152\\\"}\",\"topic\":\"sample-topic\"}]", actualOutput);
     }
 
diff --git a/src/test/java/io/odpf/firehose/sink/grpc/GrpcClientTest.java b/src/test/java/io/odpf/firehose/sink/grpc/GrpcClientTest.java
index 291d0b6b7..c7f0b0f7b 100644
--- a/src/test/java/io/odpf/firehose/sink/grpc/GrpcClientTest.java
+++ b/src/test/java/io/odpf/firehose/sink/grpc/GrpcClientTest.java
@@ -50,13 +50,13 @@ public void setup() throws IOException {
         headerTestInterceptor = new HeaderTestInterceptor();
         headerTestInterceptor.setHeaderKeys(HEADER_KEYS);
         ServerServiceDefinition serviceDefinition = ServerInterceptors.intercept(testGrpcService.bindService(), Arrays.asList(headerTestInterceptor));
-        server = ServerBuilder.forPort(5000)
+        server = ServerBuilder.forPort(5050)
                 .addService(serviceDefinition)
                 .build()
                 .start();
         Map<String, String> config = new HashMap<>();
         config.put("SINK_GRPC_SERVICE_HOST", "localhost");
-        config.put("SINK_GRPC_SERVICE_PORT", "5000");
+        config.put("SINK_GRPC_SERVICE_PORT", "5050");
         config.put("SINK_GRPC_METHOD_URL", "io.odpf.firehose.consumer.TestServer/TestRpcMethod");
         config.put("SINK_GRPC_RESPONSE_SCHEMA_PROTO_CLASS", "io.odpf.firehose.consumer.TestGrpcResponse");
 
diff --git a/src/test/java/io/odpf/firehose/sink/grpc/GrpcSinkFactoryTest.java b/src/test/java/io/odpf/firehose/sink/grpc/GrpcSinkFactoryTest.java
index a2a6c5be8..af2f07d07 100644
--- a/src/test/java/io/odpf/firehose/sink/grpc/GrpcSinkFactoryTest.java
+++ b/src/test/java/io/odpf/firehose/sink/grpc/GrpcSinkFactoryTest.java
@@ -43,7 +43,7 @@ public void shouldCreateChannelPoolWithHostAndPort() throws IOException, Deseria
         when(testGrpcService.bindService()).thenCallRealMethod();
 
         Server server = ServerBuilder
-                .forPort(5000)
+                .forPort(5050)
                 .addService(testGrpcService.bindService())
                 .build()
                 .start();