Skip to content
Snippets Groups Projects
Commit fc4a6209 authored by Neil-Jocelyn Schark's avatar Neil-Jocelyn Schark
Browse files

Resolve "Implement integration tests for topology"

See merge request !663
parent c70366b6
No related branches found
No related tags found
1 merge request!663Resolve "Implement integration tests for topology"
Pipeline #176826 passed
...@@ -79,7 +79,7 @@ virt-manager-example-start: build containerize-plugin-registry ...@@ -79,7 +79,7 @@ virt-manager-example-start: build containerize-plugin-registry
virt-manager-example-stop: virt-manager-example-stop:
./scripts/manage_virt_env.sh --mode stop --topology dev_env_data/clab/basic_two_aristas.yaml ./scripts/manage_virt_env.sh --mode stop --topology dev_env_data/clab/basic_two_aristas.yaml
dev-env-start: containerize-gosdn containerize-plugin-registry dev-env-start: generate-gnmi-target-certs generate-gosdn-certs containerize-gosdn containerize-plugin-registry
./scripts/simple-dev-setup.sh --mode start --topology dev_env_data/clab/basic_two_gnmi_targets.yaml ./scripts/simple-dev-setup.sh --mode start --topology dev_env_data/clab/basic_two_gnmi_targets.yaml
dev-env-stop: dev-env-stop:
......
...@@ -9,6 +9,14 @@ services: ...@@ -9,6 +9,14 @@ services:
MONGO_INITDB_ROOT_USERNAME: root MONGO_INITDB_ROOT_USERNAME: root
MONGO_INITDB_ROOT_PASSWORD: example MONGO_INITDB_ROOT_PASSWORD: example
mongo-express:
image: mongo-express:0.54.0
ports:
- 127.0.0.1:8083:8081
environment:
ME_CONFIG_MONGODB_ADMINUSERNAME: root
ME_CONFIG_MONGODB_ADMINPASSWORD: example
rabbitmq: rabbitmq:
image: rabbitmq:3-management image: rabbitmq:3-management
healthcheck: healthcheck:
......
package integration_test_topology
import (
"context"
"fmt"
"testing"
topologyPb "code.fbi.h-da.de/danet/gosdn/api/go/gosdn/topology"
integration_test_utils "code.fbi.h-da.de/danet/gosdn/integration-tests/integrationTestUtils"
"github.com/stretchr/testify/assert"
"google.golang.org/grpc"
)
// The connection to the controller to use in each test.
var conn *grpc.ClientConn
// The context containing the credentials when authenticated.
var ctx context.Context
// A defaultSDN config with default/empty values.
var defaultSDNConfig string
func TestMain(m *testing.M) {
localConn, localCtx, err := integration_test_utils.CreateSecureConnection()
//localConn, localCtx, err := integration_test_utils.CreateConnection()
if err != nil {
fmt.Println(err.Error())
}
conn = localConn
ctx = localCtx
sndConfig, err := integration_test_utils.ExportCurrentSDNConfig(conn, ctx)
defaultSDNConfig = sndConfig
if err != nil {
fmt.Println(err.Error())
}
m.Run()
}
func TestCreateTopologyAndGetIt(t *testing.T) {
defer integration_test_utils.ApplySDNConfig(conn, ctx, defaultSDNConfig)
addLinkRequest := topologyPb.AddLinkRequest{
Link: &topologyPb.Link{
Name: "Link1",
SourceNode: &topologyPb.Node{Name: "Node1"},
TargetNode: &topologyPb.Node{Name: "Node2"},
SourcePort: &topologyPb.Port{Name: "Port1",
Configuration: &topologyPb.Configuration{
Ip: "10.0.0.1",
PrefixLength: 24}},
TargetPort: &topologyPb.Port{Name: "Port2",
Configuration: &topologyPb.Configuration{
Ip: "10.0.0.2",
PrefixLength: 24}}},
}
topologyService := topologyPb.NewTopologyServiceClient(conn)
_, err := topologyService.AddLink(ctx, &addLinkRequest)
if err != nil {
t.Errorf("Error while adding link: %v", err)
}
getTopolgyResponse, err := topologyService.GetTopology(ctx, &topologyPb.GetTopologyRequest{})
if err != nil {
t.Errorf("Error while getting topology: %v", err)
}
assert.Equal(t, 1, len(getTopolgyResponse.Toplogy.Links))
assert.Equal(t, "Link1", getTopolgyResponse.Toplogy.Links[0].Name)
assert.Equal(t, "Node1", getTopolgyResponse.Toplogy.Links[0].SourceNode.Name)
assert.Equal(t, "Node2", getTopolgyResponse.Toplogy.Links[0].TargetNode.Name)
assert.Equal(t, "Port1", getTopolgyResponse.Toplogy.Links[0].SourcePort.Name)
assert.Equal(t, "10.0.0.1", getTopolgyResponse.Toplogy.Links[0].SourcePort.Configuration.Ip)
assert.Equal(t, int64(24), getTopolgyResponse.Toplogy.Links[0].SourcePort.Configuration.PrefixLength)
assert.Equal(t, "Port2", getTopolgyResponse.Toplogy.Links[0].TargetPort.Name)
assert.Equal(t, "10.0.0.2", getTopolgyResponse.Toplogy.Links[0].TargetPort.Configuration.Ip)
assert.Equal(t, int64(24), getTopolgyResponse.Toplogy.Links[0].TargetPort.Configuration.PrefixLength)
}
// goSDN crashed due to validation errors in the topology service. If bug is fixed, uncomment and finish this test.
//func TestCreateTopologyFailsValidation(t *testing.T) {
// defer integration_test_utils.ApplySDNConfig(conn, ctx, defaultSDNConfig)
//
// addLinkRequest := topologyPb.AddLinkRequest{
// Link: &topologyPb.Link{
// Name: "Link1",
// SourceNode: &topologyPb.Node{Name: "Node1"},
// TargetNode: &topologyPb.Node{Name: "Node2"},
// SourcePort: &topologyPb.Port{Name: "Port1"},
// TargetPort: &topologyPb.Port{Name: "Port2"}},
// }
//
// topologyService := topologyPb.NewTopologyServiceClient(conn)
// _, err := topologyService.AddLink(ctx, &addLinkRequest)
//
// if err == nil {
// t.Errorf("Test expected an error, none received.")
// }
//}
// Test that creates a topology and then deletes it and checks that all topologies are deleted.
// Can't delete topology because of bug in goSDN. If bug is fixed, uncomment and finish this test.
//func TestCreateThenDeleteTopologyAndGetEmptyTopologies(t *testing.T) {
// defer integration_test_utils.ApplySDNConfig(conn, ctx, defaultSDNConfig)
//
// addLinkRequest := topologyPb.AddLinkRequest{
// Link: &topologyPb.Link{
// Name: "Link1",
// SourceNode: &topologyPb.Node{Name: "Node1"},
// TargetNode: &topologyPb.Node{Name: "Node2"},
// SourcePort: &topologyPb.Port{Name: "Port1",
// Configuration: &topologyPb.Configuration{
// Ip: "10.0.0.1",
// PrefixLength: 24}},
// TargetPort: &topologyPb.Port{Name: "Port2",
// Configuration: &topologyPb.Configuration{
// Ip: "10.0.0.2",
// PrefixLength: 24}}},
// }
//
// topologyService := topologyPb.NewTopologyServiceClient(conn)
// _, err := topologyService.AddLink(ctx, &addLinkRequest)
// if err != nil {
// t.Errorf("Error while adding link: %v", err)
// }
//
// getTopolgyResponse, err := topologyService.GetTopology(ctx, &topologyPb.GetTopologyRequest{})
// if err != nil {
// t.Errorf("Error while getting topology: %v", err)
// }
//
// assert.Equal(t, 1, len(getTopolgyResponse.Toplogy.Links))
// assert.Equal(t, "Link1", getTopolgyResponse.Toplogy.Links[0].Name)
// assert.Equal(t, "Node1", getTopolgyResponse.Toplogy.Links[0].SourceNode.Name)
// assert.Equal(t, "Node2", getTopolgyResponse.Toplogy.Links[0].TargetNode.Name)
// assert.Equal(t, "Port1", getTopolgyResponse.Toplogy.Links[0].SourcePort.Name)
// assert.Equal(t, "10.0.0.1", getTopolgyResponse.Toplogy.Links[0].SourcePort.Configuration.Ip)
// assert.Equal(t, int64(24), getTopolgyResponse.Toplogy.Links[0].SourcePort.Configuration.PrefixLength)
// assert.Equal(t, "Port2", getTopolgyResponse.Toplogy.Links[0].TargetPort.Name)
// assert.Equal(t, "10.0.0.2", getTopolgyResponse.Toplogy.Links[0].TargetPort.Configuration.Ip)
// assert.Equal(t, int64(24), getTopolgyResponse.Toplogy.Links[0].TargetPort.Configuration.PrefixLength)
//
// deleteLinkRequest := topologyPb.DeleteLinkRequest{Id: getTopolgyResponse.Toplogy.Links[0].Id}
// _, err = topologyService.DeleteLink(ctx, &deleteLinkRequest)
// if err != nil {
// t.Errorf("Error while deleting link: %v", err)
// }
// getTopologyRequest := &topologyPb.GetTopologyRequest{}
// getTopologyResponse, err := topologyService.GetTopology(ctx, getTopologyRequest)
// if err != nil {
// t.Errorf("Error while getting topologies: %v", err)
// }
//
// assert.Equal(t, 0, len(getTopologyResponse.Toplogy.Links))
//}
//
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment