Skip to content
Snippets Groups Projects
grpc_test.go 11.4 KiB
Newer Older
  • Learn to ignore specific revisions
  • package cli
    
    import (
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    	"context"
    	"net"
    	"reflect"
    	"strconv"
    	"testing"
    
    
    	pb "code.fbi.h-da.de/cocsn/api/go/gosdn/core"
    	ppb "code.fbi.h-da.de/cocsn/api/go/gosdn/pnd"
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    	spb "code.fbi.h-da.de/cocsn/api/go/gosdn/southbound"
    
    	nbi "code.fbi.h-da.de/cocsn/gosdn/northbound/server"
    	"code.fbi.h-da.de/cocsn/gosdn/nucleus"
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    	"github.com/google/uuid"
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    	"github.com/openconfig/ygot/ygot"
    
    	log "github.com/sirupsen/logrus"
    	"google.golang.org/grpc"
    	"k8s.io/apimachinery/pkg/util/rand"
    )
    
    const unreachable = "203.0.113.10:6030"
    const testPath = "/system/config/hostname"
    const testUser = "admin"
    const testPassword = "admin"
    const testPid = "06aa4994-80f7-4751-99a4-6826b72d0057"
    const testCuid = "cf628f4b-393d-44a5-affb-949dfe5c3c27"
    const testDid = "1c37ff20-0169-44e0-bf37-b64787a979d5"
    
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    func startGrpcServer() (*grpc.Server, string, string, error) {
    
    	port := rand.IntnRange(1025, 65536)
    	sock := "localhost:" + strconv.Itoa(port)
    	pndc := nucleus.NewPndStore()
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    	pid, err := uuid.Parse(testPid)
    	if err != nil {
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    		return nil, "", "", err
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    	}
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    	sbi := nucleus.NewSBI(spb.Type_OPENCONFIG)
    	pnd, err := nucleus.NewPND("testpnd", "test pnd", pid, sbi)
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    	if err != nil {
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    		return nil, "", "", err
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    	}
    	if err := pndc.Add(pnd); err != nil {
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    		return nil, "", "", err
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    	}
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    
    
    	lis, err := net.Listen("tcp", sock)
    	if err != nil {
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    		return nil, "", "", err
    
    	}
    	grpcServer := grpc.NewServer()
    	northbound := nbi.NewNBI(pndc)
    	pb.RegisterCoreServer(grpcServer, northbound.Core)
    	ppb.RegisterPndServer(grpcServer, northbound.Pnd)
    	go func() {
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    		if err := grpcServer.Serve(lis); err != nil {
    			log.Fatal(err)
    		}
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    	return grpcServer, sock, sbi.ID().String(), nil
    
    }
    
    func TestAddDevice(t *testing.T) {
    	type args struct {
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    		addr          string
    
    		username      string
    		password      string
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    		sbi           string
    
    		pnd           string
    		deviceAddress string
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    		deviceName    string
    
    	}
    	tests := []struct {
    		name    string
    		args    args
    		wantErr bool
    	}{
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    		// TODO: Add test cases.
    
    	}
    	for _, tt := range tests {
    		t.Run(tt.name, func(t *testing.T) {
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    			if err := AddDevice(tt.args.addr, tt.args.username, tt.args.password, tt.args.sbi, tt.args.pnd, tt.args.deviceAddress, tt.args.deviceName); (err != nil) != tt.wantErr {
    
    				t.Errorf("AddDevice() error = %v, wantErr %v", err, tt.wantErr)
    			}
    		})
    	}
    }
    
    func TestAddPnd(t *testing.T) {
    	type args struct {
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    		addr        string
    
    		name        string
    		description string
    		sbi         string
    	}
    	tests := []struct {
    		name    string
    		args    args
    		wantErr bool
    	}{
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    		// TODO: Add test cases.
    
    	}
    	for _, tt := range tests {
    		t.Run(tt.name, func(t *testing.T) {
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    			if err := AddPnd(tt.args.addr, tt.args.name, tt.args.description, tt.args.sbi); (err != nil) != tt.wantErr {
    
    				t.Errorf("AddPnd() error = %v, wantErr %v", err, tt.wantErr)
    			}
    		})
    	}
    }
    
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    func TestCapabilities(t *testing.T) {
    	type args struct {
    		a string
    		u string
    		p string
    	}
    	tests := []struct {
    		name    string
    		args    args
    		wantErr bool
    	}{
    		// TODO: Add test cases.
    	}
    	for _, tt := range tests {
    		t.Run(tt.name, func(t *testing.T) {
    			if err := Capabilities(tt.args.a, tt.args.u, tt.args.p); (err != nil) != tt.wantErr {
    				t.Errorf("Capabilities() error = %v, wantErr %v", err, tt.wantErr)
    			}
    		})
    	}
    }
    
    
    func TestCommit(t *testing.T) {
    	type args struct {
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    		addr  string
    
    		pnd   string
    		cuids []string
    	}
    	tests := []struct {
    		name    string
    		args    args
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    		want    *ppb.SetResponse
    
    		wantErr bool
    	}{
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    		// TODO: Add test cases.
    
    	}
    	for _, tt := range tests {
    		t.Run(tt.name, func(t *testing.T) {
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    			got, err := Commit(tt.args.addr, tt.args.pnd, tt.args.cuids...)
    			if (err != nil) != tt.wantErr {
    				t.Errorf("Commit() error = %v, wantErr %v", err, tt.wantErr)
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    			if !reflect.DeepEqual(got, tt.want) {
    
    				t.Errorf("Commit() got = %v, want %v", got, tt.want)
    			}
    		})
    	}
    }
    
    func TestConfirm(t *testing.T) {
    	type args struct {
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    		addr  string
    
    		pnd   string
    		cuids []string
    	}
    	tests := []struct {
    		name    string
    		args    args
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    		want    *ppb.SetResponse
    
    		wantErr bool
    	}{
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    		// TODO: Add test cases.
    
    	}
    	for _, tt := range tests {
    		t.Run(tt.name, func(t *testing.T) {
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    			got, err := Confirm(tt.args.addr, tt.args.pnd, tt.args.cuids...)
    			if (err != nil) != tt.wantErr {
    				t.Errorf("Confirm() error = %v, wantErr %v", err, tt.wantErr)
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    			if !reflect.DeepEqual(got, tt.want) {
    
    				t.Errorf("Confirm() got = %v, want %v", got, tt.want)
    			}
    		})
    	}
    }
    
    func TestDelete(t *testing.T) {
    	type args struct {
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    		addr string
    
    		did  string
    		pid  string
    		path string
    	}
    	tests := []struct {
    		name    string
    		args    args
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    		want    *ppb.SetResponse
    
    		wantErr bool
    	}{
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    		// TODO: Add test cases.
    
    	}
    	for _, tt := range tests {
    		t.Run(tt.name, func(t *testing.T) {
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    			got, err := Delete(tt.args.addr, tt.args.did, tt.args.pid, tt.args.path)
    
    			if (err != nil) != tt.wantErr {
    				t.Errorf("Delete() error = %v, wantErr %v", err, tt.wantErr)
    				return
    			}
    			if !reflect.DeepEqual(got, tt.want) {
    				t.Errorf("Delete() got = %v, want %v", got, tt.want)
    			}
    		})
    	}
    }
    
    func TestGetChanges(t *testing.T) {
    	type args struct {
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    		addr string
    		pnd  string
    
    	}
    	tests := []struct {
    		name    string
    		args    args
    		want    *ppb.GetResponse
    		wantErr bool
    	}{
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    		// TODO: Add test cases.
    
    	}
    	for _, tt := range tests {
    		t.Run(tt.name, func(t *testing.T) {
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    			got, err := GetChanges(tt.args.addr, tt.args.pnd)
    
    			if (err != nil) != tt.wantErr {
    				t.Errorf("GetChanges() error = %v, wantErr %v", err, tt.wantErr)
    				return
    			}
    			if !reflect.DeepEqual(got, tt.want) {
    				t.Errorf("GetChanges() got = %v, want %v", got, tt.want)
    			}
    		})
    	}
    }
    
    func TestGetDevice(t *testing.T) {
    	type args struct {
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    		addr string
    
    		pid  string
    		path string
    		did  []string
    	}
    	tests := []struct {
    		name    string
    		args    args
    		want    *ppb.GetResponse
    		wantErr bool
    	}{
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    		// TODO: Add test cases.
    
    	}
    	for _, tt := range tests {
    		t.Run(tt.name, func(t *testing.T) {
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    			got, err := GetDevice(tt.args.addr, tt.args.pid, tt.args.path, tt.args.did...)
    
    			if (err != nil) != tt.wantErr {
    				t.Errorf("GetDevice() error = %v, wantErr %v", err, tt.wantErr)
    				return
    			}
    			if !reflect.DeepEqual(got, tt.want) {
    				t.Errorf("GetDevice() got = %v, want %v", got, tt.want)
    			}
    		})
    	}
    }
    
    func TestGetIds(t *testing.T) {
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    	type args struct {
    		addr string
    	}
    
    	tests := []struct {
    		name    string
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    		args    args
    
    		want    []*ppb.PrincipalNetworkDomain
    		wantErr bool
    	}{
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    		// TODO: Add test cases.
    
    	}
    	for _, tt := range tests {
    		t.Run(tt.name, func(t *testing.T) {
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    			got, err := GetIds(tt.args.addr)
    
    			if (err != nil) != tt.wantErr {
    				t.Errorf("GetIds() error = %v, wantErr %v", err, tt.wantErr)
    				return
    			}
    			if !reflect.DeepEqual(got, tt.want) {
    				t.Errorf("GetIds() got = %v, want %v", got, tt.want)
    			}
    		})
    	}
    }
    
    func TestGetPnd(t *testing.T) {
    	type args struct {
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    		addr string
    
    		args []string
    	}
    	tests := []struct {
    		name    string
    		args    args
    		want    *pb.GetResponse
    		wantErr bool
    	}{
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    		// TODO: Add test cases.
    
    	}
    	for _, tt := range tests {
    		t.Run(tt.name, func(t *testing.T) {
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    			got, err := GetPnd(tt.args.addr, tt.args.args...)
    
    			if (err != nil) != tt.wantErr {
    				t.Errorf("GetPnd() error = %v, wantErr %v", err, tt.wantErr)
    				return
    			}
    			if !reflect.DeepEqual(got, tt.want) {
    				t.Errorf("GetPnd() got = %v, want %v", got, tt.want)
    			}
    		})
    	}
    }
    
    func TestInit(t *testing.T) {
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    	type args struct {
    		addr string
    	}
    
    	tests := []struct {
    		name    string
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    		args    args
    
    		wantErr bool
    	}{
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    		// TODO: Add test cases.
    
    	}
    	for _, tt := range tests {
    		t.Run(tt.name, func(t *testing.T) {
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    			if err := Init(tt.args.addr); (err != nil) != tt.wantErr {
    
    				t.Errorf("Init() error = %v, wantErr %v", err, tt.wantErr)
    			}
    		})
    	}
    }
    
    func TestReplace(t *testing.T) {
    	type args struct {
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    		addr  string
    
    		did   string
    		pid   string
    		path  string
    		value string
    	}
    	tests := []struct {
    		name    string
    		args    args
    		want    *ppb.SetResponse
    		wantErr bool
    	}{
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    		// TODO: Add test cases.
    
    	}
    	for _, tt := range tests {
    		t.Run(tt.name, func(t *testing.T) {
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    			got, err := Replace(tt.args.addr, tt.args.did, tt.args.pid, tt.args.path, tt.args.value)
    
    			if (err != nil) != tt.wantErr {
    				t.Errorf("Replace() error = %v, wantErr %v", err, tt.wantErr)
    				return
    			}
    			if !reflect.DeepEqual(got, tt.want) {
    				t.Errorf("Replace() got = %v, want %v", got, tt.want)
    			}
    		})
    	}
    }
    
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    func TestSubscribe(t *testing.T) {
    	type args struct {
    		address    string
    		username   string
    		password   string
    		deviceName string
    		sample     int64
    		heartbeat  int64
    		args       []string
    	}
    	tests := []struct {
    		name    string
    		args    args
    		wantErr bool
    	}{
    		// TODO: Add test cases.
    	}
    	for _, tt := range tests {
    		t.Run(tt.name, func(t *testing.T) {
    			if err := Subscribe(tt.args.address, tt.args.username, tt.args.password, tt.args.deviceName, tt.args.sample, tt.args.heartbeat, tt.args.args...); (err != nil) != tt.wantErr {
    				t.Errorf("Subscribe() error = %v, wantErr %v", err, tt.wantErr)
    			}
    		})
    	}
    }
    
    func TestTarget(t *testing.T) {
    	type args struct {
    		bindAddr string
    	}
    	tests := []struct {
    		name    string
    		args    args
    		wantErr bool
    	}{
    		// TODO: Add test cases.
    	}
    	for _, tt := range tests {
    		t.Run(tt.name, func(t *testing.T) {
    			if err := Target(tt.args.bindAddr); (err != nil) != tt.wantErr {
    				t.Errorf("Target() error = %v, wantErr %v", err, tt.wantErr)
    			}
    		})
    	}
    }
    
    
    func TestUpdate(t *testing.T) {
    	type args struct {
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    		addr  string
    
    		did   string
    		pid   string
    		path  string
    		value string
    	}
    	tests := []struct {
    		name    string
    		args    args
    		want    *ppb.SetResponse
    		wantErr bool
    	}{
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    		// TODO: Add test cases.
    
    	}
    	for _, tt := range tests {
    		t.Run(tt.name, func(t *testing.T) {
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    			got, err := Update(tt.args.addr, tt.args.did, tt.args.pid, tt.args.path, tt.args.value)
    
    			if (err != nil) != tt.wantErr {
    				t.Errorf("Update() error = %v, wantErr %v", err, tt.wantErr)
    				return
    			}
    			if !reflect.DeepEqual(got, tt.want) {
    				t.Errorf("Update() got = %v, want %v", got, tt.want)
    			}
    		})
    	}
    }
    
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    func Test_callback(t *testing.T) {
    	type args struct {
    		newConfig ygot.ValidatedGoStruct
    	}
    	tests := []struct {
    		name    string
    		args    args
    		wantErr bool
    	}{
    		// TODO: Add test cases.
    	}
    	for _, tt := range tests {
    		t.Run(tt.name, func(t *testing.T) {
    			if err := callback(tt.args.newConfig); (err != nil) != tt.wantErr {
    				t.Errorf("callback() error = %v, wantErr %v", err, tt.wantErr)
    			}
    		})
    	}
    }
    
    
    func Test_commitConfirm(t *testing.T) {
    	type args struct {
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    		addr    string
    
    		pnd     string
    		changes []*ppb.SetChange
    	}
    	tests := []struct {
    		name    string
    		args    args
    		want    *ppb.SetResponse
    		wantErr bool
    	}{
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    		// TODO: Add test cases.
    
    	}
    	for _, tt := range tests {
    		t.Run(tt.name, func(t *testing.T) {
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    			got, err := commitConfirm(tt.args.addr, tt.args.pnd, tt.args.changes)
    
    			if (err != nil) != tt.wantErr {
    				t.Errorf("commitConfirm() error = %v, wantErr %v", err, tt.wantErr)
    				return
    			}
    			if !reflect.DeepEqual(got, tt.want) {
    				t.Errorf("commitConfirm() got = %v, want %v", got, tt.want)
    			}
    		})
    	}
    }
    
    func Test_getAllCore(t *testing.T) {
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    	type args struct {
    		ctx  context.Context
    		addr string
    	}
    
    	tests := []struct {
    		name    string
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    		args    args
    
    		want    *pb.GetResponse
    		wantErr bool
    	}{
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    		// TODO: Add test cases.
    
    	}
    	for _, tt := range tests {
    		t.Run(tt.name, func(t *testing.T) {
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    			got, err := getAllCore(tt.args.ctx, tt.args.addr)
    			if (err != nil) != tt.wantErr {
    				t.Errorf("getAllCore() error = %v, wantErr %v", err, tt.wantErr)
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    			if !reflect.DeepEqual(got, tt.want) {
    				t.Errorf("getAllCore() got = %v, want %v", got, tt.want)
    
    Manuel Kieweg's avatar
    Manuel Kieweg committed
    		})
    	}
    }