diff --git a/grpc/tests/go_test.go b/grpc/tests/go_test.go
index 1268169..7c94feb 100644
--- a/grpc/tests/go_test.go
+++ b/grpc/tests/go_test.go
@@ -1,16 +1,20 @@
 package testing
 
 import (
-	"../../tests/MyGame/Example"
+	flatbuffers "github.com/google/flatbuffers/go"
+	"github.com/google/flatbuffers/tests/MyGame/Example"
 
 	"context"
 	"net"
 	"testing"
 
 	"google.golang.org/grpc"
+	"google.golang.org/grpc/encoding"
 )
 
-type server struct{}
+type server struct {
+	Example.UnimplementedMonsterStorageServer
+}
 
 // test used to send and receive in grpc methods
 var test = "Flatbuffers"
@@ -63,8 +67,12 @@
 	if err != nil {
 		t.Fatalf("Retrieve client failed: %v", err)
 	}
-	if string(out.Name()) != test {
-		t.Errorf("RetrieveClient failed: expected=%s, got=%s\n", test, out.Name())
+	monster, err := out.Recv()
+	if err != nil {
+		t.Fatalf("Recv failed: %v", err)
+	}
+	if string(monster.Name()) != test {
+		t.Errorf("RetrieveClient failed: expected=%s, got=%s\n", test, monster.Name())
 		t.Fail()
 	}
 }
@@ -75,7 +83,7 @@
 		t.Fatalf("Failed to listen: %v", err)
 	}
 	ser := grpc.NewServer()
-  encoding.RegisterCodec(flatbuffers.FlatbuffersCodec{})
+	encoding.RegisterCodec(flatbuffers.FlatbuffersCodec{})
 	Example.RegisterMonsterStorageServer(ser, &server{})
 	go func() {
 		if err := ser.Serve(lis); err != nil {
diff --git a/grpc/tests/grpctest.cpp b/grpc/tests/grpctest.cpp
index decf5e5..6991b7e 100644
--- a/grpc/tests/grpctest.cpp
+++ b/grpc/tests/grpctest.cpp
@@ -14,8 +14,9 @@
  * limitations under the License.
  */
 
-#include <grpc++/grpc++.h>
+#include <grpcpp/grpcpp.h>
 
+#include <condition_variable>
 #include <thread>
 
 #include "monster_test.grpc.fb.h"
diff --git a/grpc/tests/grpctest.py b/grpc/tests/grpctest.py
index 1c5e92f..9cfeda6 100644
--- a/grpc/tests/grpctest.py
+++ b/grpc/tests/grpctest.py
@@ -126,16 +126,16 @@
     Monster.MonsterStartInventoryVector(b, len(test_inventory))
     for i in range(0, len(test_inventory)):
         b.PrependByte(test_inventory[i])
-    inv = b.EndVector(len(test_inventory))
+    inv = b.EndVector()
 
     Monster.MonsterStartTest4Vector(b, 2)
     Test.CreateTest(b, 10, 20)
     Test.CreateTest(b, 30, 40)
-    test4 = b.EndVector(2)
+    test4 = b.EndVector()
 
     Monster.MonsterStartTestarrayofstringVector(b, 1)
     b.PrependUOffsetTRelative(test1)
-    test_array_of_string = b.EndVector(1)
+    test_array_of_string = b.EndVector()
 
     Monster.MonsterStart(b)
 
diff --git a/grpc/tests/message_builder_test.cpp b/grpc/tests/message_builder_test.cpp
index 3ce33a9..8af0c21 100644
--- a/grpc/tests/message_builder_test.cpp
+++ b/grpc/tests/message_builder_test.cpp
@@ -28,7 +28,7 @@
   auto root_offset1 = populate1(dst);
   dst.Finish(root_offset1);
   size_t size, offset;
-  grpc_slice slice;
+  ::grpc::Slice slice;
   dst.ReleaseRaw(size, offset, slice);
   flatbuffers::FlatBufferBuilder src;
   auto root_offset2 = populate2(src);
@@ -39,7 +39,6 @@
   TEST_EQ(dst.GetSize(), src_size);
   TEST_ASSERT(release_n_verify(dst, m2_name(), m2_color()));
   TEST_EQ(src.GetSize(), 0);
-  grpc_slice_unref(slice);
 }
 
 template<class SrcBuilder>
@@ -82,10 +81,9 @@
       auto root_offset1 = populate1(mb);
       mb.Finish(root_offset1);
       size_t size, offset;
-      grpc_slice slice;
+      ::grpc::Slice slice;
       const uint8_t *buf = mb.ReleaseRaw(size, offset, slice);
       TEST_ASSERT_FUNC(verify(buf, offset, m1_name(), m1_color()));
-      grpc_slice_unref(slice);
     }
   }
 
@@ -146,10 +144,9 @@
       auto root_offset1 = populate1(dst);
       dst.Finish(root_offset1);
       size_t size, offset;
-      grpc_slice slice = grpc_empty_slice();
+      ::grpc::Slice slice;
       const uint8_t *buf = dst.ReleaseRaw(size, offset, slice);
       TEST_ASSERT_FUNC(verify(buf, offset, m1_name(), m1_color()));
-      grpc_slice_unref(slice);
 
       SrcBuilder src;
       dst = std::move(src);
diff --git a/grpc/tests/pom.xml b/grpc/tests/pom.xml
index 26e7624..5aca387 100644
--- a/grpc/tests/pom.xml
+++ b/grpc/tests/pom.xml
@@ -4,13 +4,13 @@
     <parent>
         <groupId>com.google.flatbuffers</groupId>
         <artifactId>flatbuffers-parent</artifactId>
-        <version>1.12.0</version>
+        <version>2.0.3</version>
     </parent>
     <artifactId>grpc-test</artifactId>
     <description>Example/Test project demonstrating usage of flatbuffers with GRPC-Java instead of protobufs
     </description>
     <properties>
-        <gRPC.version>1.12.0</gRPC.version>
+        <gRPC.version>2.0.3</gRPC.version>
     </properties>
     <dependencies>
         <dependency>
