Skip to content
Snippets Groups Projects
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
sbiFilesystemStore_test.go 3.38 KiB
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/store"
	"github.com/google/uuid"
)

func ensureStoreFilesForTestsAreRemoved() {
	ensureStoreFileForTestsIsRemoved(store.SbiFilenameSuffix)
	ensureStoreFileForTestsIsRemoved(store.DeviceFilenameSuffix)
}

func TestAddSbi(t *testing.T) {
	defer ensureStoreFilesForTestsAreRemoved()

	pndID, _ := uuid.Parse("b4016412-eec5-45a1-aa29-f59915357bad")
	sbiStore := NewSbiStore(pndID)

	sbiID, _ := uuid.Parse("aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa")

	sbi, _ := NewSBI(spb.Type_TYPE_OPENCONFIG, sbiID)

	err := sbiStore.Add(sbi)
	if err != nil {
		t.Error(err)
	}
}

func TestGetAllSbis(t *testing.T) {
	defer ensureStoreFilesForTestsAreRemoved()

	pndID, _ := uuid.Parse("b4016412-eec5-45a1-aa29-f59915357bad")
	sbiStore := NewSbiStore(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)

	inputSbis := [2]southbound.SouthboundInterface{sbi1, sbi2}

	for _, sbi := range inputSbis {
		err := sbiStore.Add(sbi)
		if err != nil {
			t.Error(err)
		}
	}

	returnSbis, err := sbiStore.GetAll()
	if err != nil {
		t.Error(err)
	}

	length := len(returnSbis)
	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())
		}
	}
}
func TestGetSbi(t *testing.T) {
	defer ensureStoreFilesForTestsAreRemoved()

	pndID, _ := uuid.Parse("b4016412-eec5-45a1-aa29-f59915357bad")

	sbiStore := NewSbiStore(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)

	inputSbis := [2]southbound.SouthboundInterface{sbi1, sbi2}

	for _, sbi := range inputSbis {
		err := sbiStore.Add(sbi)
		if err != nil {
			t.Error(err)
		}
	}

	returnSbi, err := sbiStore.Get(store.Query{ID: sbiID2, Name: ""})
	if err != nil {
		t.Error(err)
	}

	if returnSbi.ID != sbi2.ID().String() {
		t.Errorf("Get() = %v, want %v", returnSbi.ID, sbi2.ID().String())
	}
}

func TestDeleteAllSbis(t *testing.T) {
	defer ensureStoreFilesForTestsAreRemoved()

	pndID, _ := uuid.Parse("b4016412-eec5-45a1-aa29-f59915357bad")
	sbiStore := NewSbiStore(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)

	inputSbis := [2]southbound.SouthboundInterface{sbi1, sbi2}

	for _, sbi := range inputSbis {
		err := sbiStore.Add(sbi)
		if err != nil {
			t.Error(err)
		}
	}

	err := sbiStore.Delete(sbi1)
	if err != nil {
		t.Error(err)
	}

	returnSbis, err := sbiStore.GetAll()
	if err != nil {
		t.Error(err)
	}

	length := len(returnSbis)
	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())
	}
}