Skip to content
Snippets Groups Projects
initialise_test.go 2.61 KiB
Newer Older
  • Learn to ignore specific revisions
  • package gosdn
    
    import (
    	"context"
    	"os"
    	"testing"
    
    	"code.fbi.h-da.de/cocsn/gosdn/mocks"
    	"code.fbi.h-da.de/cocsn/gosdn/nucleus"
    	"code.fbi.h-da.de/cocsn/gosdn/nucleus/util/proto"
    	"github.com/google/uuid"
    	gpb "github.com/openconfig/gnmi/proto/gnmi"
    	log "github.com/sirupsen/logrus"
    	"github.com/stretchr/testify/mock"
    	pb "google.golang.org/protobuf/proto"
    )
    
    const apiEndpoint = "http://localhost:8080"
    
    // UUIDs for test cases
    var mdid uuid.UUID
    var defaultSbiID uuid.UUID
    var defaultPndID uuid.UUID
    var cuid uuid.UUID
    
    var sbi nucleus.SouthboundInterface
    var httpTestPND nucleus.PrincipalNetworkDomain
    var gnmiMessages map[string]pb.Message
    var httpTestDevice nucleus.Device
    
    var args string
    var argsNotFound string
    
    var argsNotFoundGetDevice string
    
    
    var mockContext = mock.MatchedBy(func(ctx context.Context) bool { return true })
    
    // TestMain bootstraps all tests. Humongous beast
    // TODO: Move somewhere more sensible
    func TestMain(m *testing.M) {
    	log.SetReportCaller(true)
    
    	if os.Getenv("GOSDN_LOG") == "nolog" {
    		log.SetLevel(log.PanicLevel)
    	}
    
    	gnmiMessages = map[string]pb.Message{
    		"./test/proto/cap-resp-arista-ceos":                  &gpb.CapabilityResponse{},
    		"./test/proto/req-full-node":                         &gpb.GetRequest{},
    		"./test/proto/req-full-node-arista-ceos":             &gpb.GetRequest{},
    		"./test/proto/req-interfaces-arista-ceos":            &gpb.GetRequest{},
    		"./test/proto/req-interfaces-interface-arista-ceos":  &gpb.GetRequest{},
    		"./test/proto/req-interfaces-wildcard":               &gpb.GetRequest{},
    		"./test/proto/resp-full-node":                        &gpb.GetResponse{},
    		"./test/proto/resp-full-node-arista-ceos":            &gpb.GetResponse{},
    		"./test/proto/resp-interfaces-arista-ceos":           &gpb.GetResponse{},
    		"./test/proto/resp-interfaces-interface-arista-ceos": &gpb.GetResponse{},
    		"./test/proto/resp-interfaces-wildcard":              &gpb.GetResponse{},
    		"./test/proto/resp-set-system-config-hostname":       &gpb.SetResponse{},
    	}
    	for k, v := range gnmiMessages {
    		if err := proto.Read(k, v); err != nil {
    			log.Fatalf("error parsing %v: %v", k, err)
    		}
    	}
    	readTestUUIDs()
    
    	testSetupHTTP()
    	os.Exit(m.Run())
    }
    
    func readTestUUIDs() {
    	var err error
    	mdid, err = uuid.Parse("688a264e-5f85-40f8-bd13-afc42fcd5c7a")
    	defaultPndID, err = uuid.Parse("b4016412-eec5-45a1-aa29-f59915357bad")
    	cuid, err = uuid.Parse("3e8219b0-e926-400d-8660-217f2a25a7c6")
    	if err != nil {
    		log.Fatal(err)
    	}
    }
    
    func mockDevice() nucleus.Device {
    	sbi := &nucleus.OpenConfig{}
    	return nucleus.Device{
    		UUID:      mdid,
    		GoStruct:  sbi.Schema().Root,
    		SBI:       sbi,
    		Transport: &mocks.Transport{},
    	}
    }