[VOL-1024]  This update consists of:

1) Inter-container kafka library in Go
2) initial set of proto definitions
3) Test cases for the kafka library

Change-Id: Ibe8b0f673a90bbe4cb92847ce40f31ec2d0b6244
diff --git a/kafka/kafka_inter_container_library_test.go b/kafka/kafka_inter_container_library_test.go
new file mode 100644
index 0000000..0fca49a
--- /dev/null
+++ b/kafka/kafka_inter_container_library_test.go
@@ -0,0 +1,74 @@
+package kafka
+
+import (
+	"github.com/stretchr/testify/assert"
+	"testing"
+)
+
+
+func TestDefaultKafkaProxy(t *testing.T) {
+	actualResult, error := NewKafkaMessagingProxy()
+	assert.Equal(t, error, nil)
+	assert.Equal(t, actualResult.KafkaHost, DefaultKafkaHost)
+	assert.Equal(t, actualResult.KafkaPort, DefaultKafkaPort)
+	assert.Equal(t, actualResult.TargetInterface, interface{}(nil))
+	assert.Equal(t, actualResult.DefaultTopic.Name, "Core")
+}
+
+func TestKafkaProxyOptionHost(t *testing.T) {
+	actualResult, error := NewKafkaMessagingProxy(KafkaHost("10.20.30.40"))
+	assert.Equal(t, error, nil)
+	assert.Equal(t, actualResult.KafkaHost, "10.20.30.40")
+	assert.Equal(t, actualResult.KafkaPort, DefaultKafkaPort)
+	assert.Equal(t, actualResult.TargetInterface, interface{}(nil))
+	assert.Equal(t, actualResult.DefaultTopic.Name, "Core")
+}
+
+func TestKafkaProxyOptionPort(t *testing.T) {
+	actualResult, error := NewKafkaMessagingProxy(KafkaPort(1020))
+	assert.Equal(t, error, nil)
+	assert.Equal(t, actualResult.KafkaHost, DefaultKafkaHost)
+	assert.Equal(t, actualResult.KafkaPort, 1020)
+	assert.Equal(t, actualResult.TargetInterface, interface{}(nil))
+	assert.Equal(t, actualResult.DefaultTopic.Name, "Core")
+}
+
+func TestKafkaProxyOptionTopic(t *testing.T) {
+	actualResult, error := NewKafkaMessagingProxy(DefaultTopic(&Topic{Name: "Adapter"}))
+	assert.Equal(t, error, nil)
+	assert.Equal(t, actualResult.KafkaHost, DefaultKafkaHost)
+	assert.Equal(t, actualResult.KafkaPort, DefaultKafkaPort)
+	assert.Equal(t, actualResult.TargetInterface, interface{}(nil))
+	assert.Equal(t, actualResult.DefaultTopic.Name, "Adapter")
+}
+
+type myInterface struct {
+}
+
+func (m *myInterface) doSomething() {
+}
+
+func TestKafkaProxyOptionTargetInterface(t *testing.T) {
+	var m *myInterface
+	actualResult, error := NewKafkaMessagingProxy(TargetInterface(m))
+	assert.Equal(t, error, nil)
+	assert.Equal(t, actualResult.KafkaHost, DefaultKafkaHost)
+	assert.Equal(t, actualResult.KafkaPort, DefaultKafkaPort)
+	assert.Equal(t, actualResult.TargetInterface, m)
+	assert.Equal(t, actualResult.DefaultTopic.Name, "Core")
+}
+
+func TestKafkaProxyChangeAllOptions(t *testing.T) {
+	var m *myInterface
+	actualResult, error := NewKafkaMessagingProxy(
+		KafkaHost("10.20.30.40"),
+		KafkaPort(1020),
+		DefaultTopic(&Topic{Name: "Adapter"}),
+		TargetInterface(m))
+	assert.Equal(t, error, nil)
+	assert.Equal(t, actualResult.KafkaHost, "10.20.30.40")
+	assert.Equal(t, actualResult.KafkaPort, 1020)
+	assert.Equal(t, actualResult.TargetInterface, m)
+	assert.Equal(t, actualResult.DefaultTopic.Name, "Adapter")
+}
+