Skip to content
Snippets Groups Projects
networkElementService_test.go 3.03 KiB
Newer Older
  • Learn to ignore specific revisions
  • package nucleus
    
    import (
    	"testing"
    
    	eventservice "code.fbi.h-da.de/danet/gosdn/controller/eventService"
    	"code.fbi.h-da.de/danet/gosdn/controller/interfaces/networkelement"
    	"code.fbi.h-da.de/danet/gosdn/controller/interfaces/southbound"
    	"code.fbi.h-da.de/danet/gosdn/controller/mocks"
    	"code.fbi.h-da.de/danet/gosdn/controller/store"
    	"github.com/google/uuid"
    
    	spb "code.fbi.h-da.de/danet/gosdn/api/go/gosdn/southbound"
    )
    
    func getMockNetworkElement(mneID uuid.UUID, sbi southbound.SouthboundInterface) networkelement.NetworkElement {
    	return &CommonNetworkElement{
    		UUID:      mneID,
    		Model:     sbi.Schema().Root,
    		sbi:       sbi,
    		transport: &mocks.Transport{},
    
    		pndID:     uuid.New(),
    
    	}
    }
    
    func getNetworkElementTestStores(t *testing.T, mneID uuid.UUID) (networkelement.Service, southbound.Service, networkelement.NetworkElement, southbound.SouthboundInterface) {
    	eventService := eventservice.NewMockEventService()
    	sbiStore := NewMemorySbiStore()
    	networkElementStore := NewMemoryNetworkElementStore()
    	sbiService := NewSbiService(sbiStore, eventService)
    	networkElementService := NewNetworkElementService(
    		networkElementStore,
    		sbiService,
    		eventService,
    	)
    
    	sbi, err := NewSBI(spb.Type_TYPE_OPENCONFIG)
    	if err != nil {
    		t.Error("could not create sbi")
    	}
    
    	err = sbiService.Add(sbi)
    	if err != nil {
    		t.Error("could not add sbi")
    	}
    
    	mockNetworkElement := getMockNetworkElement(mneID, sbi)
    	err = networkElementService.Add(mockNetworkElement)
    	if err != nil {
    		t.Error("could not add network element")
    	}
    
    	return networkElementService, sbiService, mockNetworkElement, sbi
    }
    
    func TestNetworkElementService_Get(t *testing.T) {
    	mneID := uuid.New()
    
    	networkElementService, _, mockNetworkElement, _ := getNetworkElementTestStores(t, mneID)
    
    	mne, err := networkElementService.Get(store.Query{
    		ID:   mockNetworkElement.ID(),
    		Name: mockNetworkElement.Name(),
    	})
    	if err != nil {
    		t.Error("could not get network element")
    	}
    
    	if mockNetworkElement.ID() != mne.ID() {
    		t.Errorf("Expected ID=%s, got %s", mockNetworkElement.ID(), mne.ID())
    	}
    }
    
    func TestNetworkElementService_Delete(t *testing.T) {
    	mneID := uuid.New()
    
    	networkElementService, _, mockNetworkElement, _ := getNetworkElementTestStores(t, mneID)
    
    	mne, err := networkElementService.Get(store.Query{
    		ID:   mockNetworkElement.ID(),
    		Name: mockNetworkElement.Name(),
    	})
    	if err != nil {
    		t.Error("could not get network element")
    	}
    
    	err = networkElementService.Delete(mne)
    	if err != nil {
    		t.Error("could not delete network element")
    	}
    }
    
    func TestNetworkElementService_GetAll(t *testing.T) {
    	mneID := uuid.New()
    	mneID2 := uuid.New()
    
    	networkElementService, _, _, sbi := getNetworkElementTestStores(t, mneID)
    	mockNetworkElement2 := getMockNetworkElement(mneID2, sbi)
    
    	err := networkElementService.Add(mockNetworkElement2)
    	if err != nil {
    		t.Error("could not add network element")
    	}
    
    	mnes, err := networkElementService.GetAll()
    	if err != nil {
    		t.Error("could not get all network elements")
    	}
    
    	if len(mnes) != 2 {
    		t.Errorf("Expected len(network elements)=2, got %d", len(mnes))
    	}
    }