Skip to content
Snippets Groups Projects

Change the current gosdn plugin implementation from Go's internal plugin system to hashicorp's go-plugins

Merged Ghost User requested to merge mb/plugin-registry-hashicorp-go-plugin into develop
1 file
+ 70
57
Compare changes
  • Side-by-side
  • Inline
@@ -3,8 +3,8 @@ package nucleus
import (
"testing"
spb "code.fbi.h-da.de/danet/gosdn/api/go/gosdn/southbound"
"code.fbi.h-da.de/danet/gosdn/controller/interfaces/southbound"
"code.fbi.h-da.de/danet/gosdn/controller/interfaces/plugin"
"code.fbi.h-da.de/danet/gosdn/controller/mocks"
"code.fbi.h-da.de/danet/gosdn/controller/store"
"github.com/google/uuid"
)
@@ -14,129 +14,142 @@ func ensureStoreFilesForTestsAreRemoved() {
ensureStoreFileForTestsIsRemoved(store.NetworkElementFilenameSuffix)
}
func TestAddSbi(t *testing.T) {
func TestAddPlugin(t *testing.T) {
defer ensureStoreFilesForTestsAreRemoved()
pndID, _ := uuid.Parse("b4016412-eec5-45a1-aa29-f59915357bad")
sbiStore := NewPluginStore(pndID)
pluginStore := NewPluginStore()
mockPlugin := &mocks.Plugin{}
sbiID, _ := uuid.Parse("aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa")
sbi, _ := NewSBI(spb.Type_TYPE_OPENCONFIG, sbiID)
err := sbiStore.Add(sbi)
err := pluginStore.Add(mockPlugin)
if err != nil {
t.Error(err)
}
}
func TestGetAllSbis(t *testing.T) {
func TestGetAllPlugins(t *testing.T) {
defer ensureStoreFilesForTestsAreRemoved()
pndID, _ := uuid.Parse("b4016412-eec5-45a1-aa29-f59915357bad")
sbiStore := NewPluginStore(pndID)
pluginStore := NewPluginStore()
sbiID1, _ := uuid.Parse("aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa")
sbiID2, _ := uuid.Parse("aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaab")
sbi1, _ := NewSBI(spb.Type_TYPE_OPENCONFIG, sbiID1)
sbi2, _ := NewSBI(spb.Type_TYPE_OPENCONFIG, sbiID2)
mockPlugin1ID, err := uuid.Parse("aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa")
if err != nil {
t.Error(err)
}
mockPlugin2ID, err := uuid.Parse("aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaab")
if err != nil {
t.Error(err)
}
mockPlugin1 := &mocks.Plugin{}
mockPlugin1.On("ID").Return(mockPlugin1ID)
mockPlugin2 := &mocks.Plugin{}
mockPlugin2.On("ID").Return(mockPlugin2ID)
inputSbis := [2]southbound.SouthboundInterface{sbi1, sbi2}
inputPlugins := [2]plugin.Plugin{mockPlugin1, mockPlugin2}
for _, sbi := range inputSbis {
err := sbiStore.Add(sbi)
for _, plugin := range inputPlugins {
err := pluginStore.Add(plugin)
if err != nil {
t.Error(err)
t.Error(plugin.ID().String())
}
}
returnSbis, err := sbiStore.GetAll()
returnPlugins, err := pluginStore.GetAll()
if err != nil {
t.Error(err)
}
length := len(returnSbis)
length := len(returnPlugins)
if length != 2 {
t.Errorf("GetAll() length of array = %v, want %v", length, 2)
}
for i, sbi := range returnSbis {
if sbi.ID != inputSbis[i].ID().String() {
t.Errorf("GetAll() = %v, want %v", sbi.ID, inputSbis[i].ID().String())
for i, sbi := range returnPlugins {
if sbi.ID != inputPlugins[i].ID().String() {
t.Errorf("GetAll() = %v, want %v", sbi.ID, inputPlugins[i].ID().String())
}
}
}
func TestGetSbi(t *testing.T) {
func TestGetPlugin(t *testing.T) {
defer ensureStoreFilesForTestsAreRemoved()
pndID, _ := uuid.Parse("b4016412-eec5-45a1-aa29-f59915357bad")
pluginStore := NewPluginStore()
sbiStore := NewPluginStore(pndID)
sbiID1, _ := uuid.Parse("aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa")
sbiID2, _ := uuid.Parse("aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaab")
sbi1, _ := NewSBI(spb.Type_TYPE_OPENCONFIG, sbiID1)
sbi2, _ := NewSBI(spb.Type_TYPE_OPENCONFIG, sbiID2)
mockPlugin1ID, err := uuid.Parse("aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa")
if err != nil {
t.Error(err)
}
mockPlugin2ID, err := uuid.Parse("aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaab")
if err != nil {
t.Error(err)
}
mockPlugin1 := mockPlugin(t)
mockPlugin1.(*mocks.Plugin).On("ID").Return(mockPlugin1ID)
mockPlugin2 := mockPlugin(t)
mockPlugin2.(*mocks.Plugin).On("ID").Return(mockPlugin2ID)
inputSbis := [2]southbound.SouthboundInterface{sbi1, sbi2}
inputPlugins := [2]plugin.Plugin{mockPlugin1, mockPlugin2}
for _, sbi := range inputSbis {
err := sbiStore.Add(sbi)
for _, plugins := range inputPlugins {
err := pluginStore.Add(plugins)
if err != nil {
t.Error(err)
}
}
returnSbi, err := sbiStore.Get(store.Query{ID: sbiID2, Name: ""})
returnPlugin, err := pluginStore.Get(store.Query{ID: mockPlugin2ID, Name: ""})
if err != nil {
t.Error(err)
}
if returnSbi.ID != sbi2.ID().String() {
t.Errorf("Get() = %v, want %v", returnSbi.ID, sbi2.ID().String())
if returnPlugin.ID != mockPlugin2.ID().String() {
t.Errorf("Get() = %v, want %v", returnPlugin.ID, mockPlugin2.ID().String())
}
}
func TestDeleteAllSbis(t *testing.T) {
defer ensureStoreFilesForTestsAreRemoved()
pndID, _ := uuid.Parse("b4016412-eec5-45a1-aa29-f59915357bad")
sbiStore := NewPluginStore(pndID)
sbiID1, _ := uuid.Parse("aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa")
sbiID2, _ := uuid.Parse("aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaab")
pluginStore := NewPluginStore()
sbi1, _ := NewSBI(spb.Type_TYPE_OPENCONFIG, sbiID1)
sbi2, _ := NewSBI(spb.Type_TYPE_OPENCONFIG, sbiID2)
mockPlugin1ID, err := uuid.Parse("aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa")
if err != nil {
t.Error(err)
}
mockPlugin2ID, err := uuid.Parse("aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaab")
if err != nil {
t.Error(err)
}
mockPlugin1 := mockPlugin(t)
mockPlugin1.(*mocks.Plugin).On("ID").Return(mockPlugin1ID)
mockPlugin2 := mockPlugin(t)
mockPlugin2.(*mocks.Plugin).On("ID").Return(mockPlugin2ID)
inputSbis := [2]southbound.SouthboundInterface{sbi1, sbi2}
inputPlugins := [2]plugin.Plugin{mockPlugin1, mockPlugin2}
for _, sbi := range inputSbis {
err := sbiStore.Add(sbi)
for _, plugins := range inputPlugins {
err := pluginStore.Add(plugins)
if err != nil {
t.Error(err)
}
}
err := sbiStore.Delete(sbi1)
err = pluginStore.Delete(mockPlugin1)
if err != nil {
t.Error(err)
}
returnSbis, err := sbiStore.GetAll()
returnPlugins, err := pluginStore.GetAll()
if err != nil {
t.Error(err)
}
length := len(returnSbis)
length := len(returnPlugins)
if length != 1 {
t.Errorf("GetAll() length of array = %v, want %v", length, 2)
}
if returnSbis[0].ID != inputSbis[1].ID().String() {
t.Errorf("GetAll() = %v, want %v", returnSbis[0].ID, inputSbis[1].ID().String())
if returnPlugins[0].ID != inputPlugins[1].ID().String() {
t.Errorf("GetAll() = %v, want %v", returnPlugins[0].ID, inputPlugins[1].ID().String())
}
}
Loading