Skip to content

Commit

Permalink
Merge pull request #89 from linkernetworks/johnlin/remove-validate
Browse files Browse the repository at this point in the history
VX-166 remove validate function

Former-commit-id: dd91b313a1757e62b9f778e1ebe427c518297060 [formerly c2d1b1b]
Former-commit-id: cf7af7d9931f360a38b6fe8129e8b46a88fd9a7d
  • Loading branch information
John-Lin authored Jul 13, 2018
2 parents 4ba6a59 + 8c21435 commit b7bd8f6
Show file tree
Hide file tree
Showing 11 changed files with 45 additions and 325 deletions.
11 changes: 11 additions & 0 deletions src/entity/network.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package entity
import (
"time"

"github.com/linkernetworks/vortex/src/errors"
"gopkg.in/mgo.v2/bson"
)

Expand Down Expand Up @@ -47,3 +48,13 @@ type Network struct {
func (m Network) GetCollection() string {
return NetworkCollectionName
}

// Validate VLAN tags
func ValidateVLANTags(vlanTags []int32) error {
for _, tag := range vlanTags {
if tag < 0 || tag > 4095 {
return errors.NewErrInvalidVLAN("VLAN tag should between 0 and 4095")
}
}
return nil
}
15 changes: 15 additions & 0 deletions src/errors/network.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package errors

type ErrInvalidVLAN struct {
message string
}

func NewErrInvalidVLAN(message string) *ErrInvalidVLAN {
return &ErrInvalidVLAN{
message: message,
}
}

func (e *ErrInvalidVLAN) Error() string {
return e.message
}
9 changes: 0 additions & 9 deletions src/networkprovider/fake.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,15 +15,6 @@ type fakeNetworkProvider struct {
isDPDKPort bool
}

func (fnp fakeNetworkProvider) ValidateBeforeCreating(sp *serviceprovider.Container) error {
for _, node := range fnp.nodes {
if node.FakeParameter == "" {
return fmt.Errorf("Fail to validate but don't worry, I'm fake network")
}
}
return nil
}

func (fnp fakeNetworkProvider) CreateNetwork(sp *serviceprovider.Container) error {
for _, node := range fnp.nodes {
if node.ShouldFail {
Expand Down
28 changes: 0 additions & 28 deletions src/networkprovider/fake_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,20 +8,6 @@ import (
"github.com/linkernetworks/vortex/src/entity"
)

func TestNetworkValidateBeforeCreating(t *testing.T) {
fake, err := GetNetworkProvider(&entity.Network{
Type: entity.FakeNetworkType,
Nodes: []entity.Node{
entity.Node{
FakeParameter: "yes",
},
},
})
assert.NoError(t, err)
err = fake.ValidateBeforeCreating(nil)
assert.NoError(t, err)
}

func TestFakeNetworkCreating(t *testing.T) {
fake, err := GetNetworkProvider(&entity.Network{
Type: entity.FakeNetworkType,
Expand All @@ -37,20 +23,6 @@ func TestFakeNetworkCreating(t *testing.T) {
assert.NoError(t, err)
}

func TestFakeNetworkValidateBeforeCreatingFail(t *testing.T) {
fake, err := GetNetworkProvider(&entity.Network{
Type: entity.FakeNetworkType,
Nodes: []entity.Node{
entity.Node{
FakeParameter: "",
},
},
})
assert.NoError(t, err)
err = fake.ValidateBeforeCreating(nil)
assert.Error(t, err)
}

func TestFakeNetworkCreatingFail(t *testing.T) {
fake, err := GetNetworkProvider(&entity.Network{
Type: entity.FakeNetworkType,
Expand Down
1 change: 0 additions & 1 deletion src/networkprovider/network.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@ import (
)

type NetworkProvider interface {
ValidateBeforeCreating(sp *serviceprovider.Container) error
CreateNetwork(sp *serviceprovider.Container) error
DeleteNetwork(sp *serviceprovider.Container) error
}
Expand Down
26 changes: 2 additions & 24 deletions src/networkprovider/ovs_netdev.go
Original file line number Diff line number Diff line change
@@ -1,13 +1,11 @@
package networkprovider

import (
"fmt"
"net"

"github.com/linkernetworks/vortex/src/entity"
"github.com/linkernetworks/vortex/src/networkcontroller"
"github.com/linkernetworks/vortex/src/serviceprovider"
"gopkg.in/mgo.v2/bson"
)

type userspaceNetworkProvider struct {
Expand All @@ -18,30 +16,10 @@ type userspaceNetworkProvider struct {
isDPDKPort bool
}

func (unp userspaceNetworkProvider) ValidateBeforeCreating(sp *serviceprovider.Container) error {
session := sp.Mongo.NewSession()
defer session.Close()

// Check whether VLAN Tag is 0~4095
for _, tag := range unp.vlanTags {
if tag < 0 || tag > 4095 {
return fmt.Errorf("The vlangTag %d should between 0 and 4095", tag)
}
}

q := bson.M{
"name": unp.networkName,
}
n, err := session.Count(entity.NetworkCollectionName, q)
if n >= 1 {
return fmt.Errorf("The network name: %s is exist.", unp.networkName)
} else if err != nil {
func (unp userspaceNetworkProvider) CreateNetwork(sp *serviceprovider.Container) error {
if err := entity.ValidateVLANTags(unp.vlanTags); err != nil {
return err
}
return nil
}

func (unp userspaceNetworkProvider) CreateNetwork(sp *serviceprovider.Container) error {
for _, node := range unp.nodes {
nodeIP, err := sp.KubeCtl.GetNodeExternalIP(node.Name)
if err != nil {
Expand Down
110 changes: 0 additions & 110 deletions src/networkprovider/ovs_netdev_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -27,15 +27,13 @@ func init() {
rand.Seed(time.Now().UnixNano())
}

// OK
type OVSNetdevNetworkTestSuite struct {
suite.Suite
sp *serviceprovider.Container
standaloneNetwork entity.Network
clusterwiseNetwork entity.Network
}

// OK
func (suite *OVSNetdevNetworkTestSuite) SetupSuite() {
cf := config.MustRead("../../config/testing.json")
suite.sp = serviceprovider.NewForTesting(cf)
Expand Down Expand Up @@ -111,7 +109,6 @@ func (suite *OVSNetdevNetworkTestSuite) SetupSuite() {

func (suite *OVSNetdevNetworkTestSuite) TearDownSuite() {}

// OK
func TestNetworkSuite(t *testing.T) {
if runtime.GOOS != "linux" {
fmt.Println("We only testing the ovs function on Linux Host")
Expand All @@ -125,7 +122,6 @@ func TestNetworkSuite(t *testing.T) {
suite.Run(t, new(OVSNetdevNetworkTestSuite))
}

// OK. might fail
func (suite *OVSNetdevNetworkTestSuite) TestCreateOVSDPDKNetwork() {
brName := namesgenerator.GetRandomName(0)
err := createOVSDPDKNetwork(
Expand All @@ -138,7 +134,6 @@ func (suite *OVSNetdevNetworkTestSuite) TestCreateOVSDPDKNetwork() {
suite.NoError(err)
}

// OK
func (suite *OVSNetdevNetworkTestSuite) TestCreateOVSUserspaceNetwork() {
brName := namesgenerator.GetRandomName(0)
err := createOVSUserspaceNetwork(
Expand All @@ -151,7 +146,6 @@ func (suite *OVSNetdevNetworkTestSuite) TestCreateOVSUserspaceNetwork() {
suite.NoError(err)
}

// OK
func (suite *OVSNetdevNetworkTestSuite) TestDeleteOVSUserspaceNetwork() {
brName := namesgenerator.GetRandomName(0)
// ovs-vsctl add-br br0 -- set bridge br0 datapath_type=netdev
Expand All @@ -160,7 +154,6 @@ func (suite *OVSNetdevNetworkTestSuite) TestDeleteOVSUserspaceNetwork() {
suite.NoError(err)
}

// OK
func (suite *OVSNetdevNetworkTestSuite) TestCreateNetwork() {
testCases := []struct {
caseName string
Expand All @@ -182,7 +175,6 @@ func (suite *OVSNetdevNetworkTestSuite) TestCreateNetwork() {
}
}

// OK
func (suite *OVSNetdevNetworkTestSuite) TestCreateNetworkFail() {
network := entity.Network{
Type: entity.OVSUserspaceNetworkType,
Expand All @@ -202,107 +194,6 @@ func (suite *OVSNetdevNetworkTestSuite) TestCreateNetworkFail() {
suite.Error(err)
}

// OK
func (suite *OVSNetdevNetworkTestSuite) TestValidateBeforeCreating() {
tName := namesgenerator.GetRandomName(0)
// Valid VLAN number
validVLANnetwork := entity.Network{
Type: entity.OVSUserspaceNetworkType,
IsDPDKPort: false,
Name: tName,
VLANTags: []int32{0, 2048, 4095},
BridgeName: "bro",
Nodes: []entity.Node{
entity.Node{
Name: "node-1",
PhyInterfaces: []entity.PhyInterface{
entity.PhyInterface{
Name: namesgenerator.GetRandomName(0),
PCIID: "",
},
},
},
},
}

testCases := []struct {
caseName string
network *entity.Network
}{
{"validVLAN", &validVLANnetwork},
{"singelNetwork", &suite.standaloneNetwork},
{"clusterNetwork", &suite.clusterwiseNetwork},
}

for _, tc := range testCases {
suite.T().Run(tc.caseName, func(t *testing.T) {
//Parameters
np, err := GetNetworkProvider(tc.network)
suite.NoError(err)
np = np.(userspaceNetworkProvider)

err = np.ValidateBeforeCreating(suite.sp)
suite.NoError(err)
})
}
}

// OK
func (suite *OVSNetdevNetworkTestSuite) TestValidateBeforeCreatingFail() {
tName := namesgenerator.GetRandomName(0)
// Invalid VLAN number
invalidVLANnetwork := entity.Network{
Type: entity.OVSUserspaceNetworkType,
IsDPDKPort: false,
Name: tName,
VLANTags: []int32{22435, 2143, 4096},
BridgeName: "brx",
Nodes: []entity.Node{
entity.Node{
Name: "node-1",
PhyInterfaces: []entity.PhyInterface{
entity.PhyInterface{
Name: namesgenerator.GetRandomName(0),
PCIID: "",
},
},
},
},
}

// Invalid Case for duplicated name in standalone network
// Invalid Case for duplicates name in clusterwise network
testCases := []struct {
caseName string
network *entity.Network
mongo bool
}{
{"invalidVLAN", &invalidVLANnetwork, false},
{"standaloneNetwork", &suite.standaloneNetwork, true},
{"clusterwiseNetwork", &suite.clusterwiseNetwork, true},
}

for _, tc := range testCases {
suite.T().Run(tc.caseName, func(t *testing.T) {
//Parameters
np, err := GetNetworkProvider(tc.network)
suite.NoError(err)
np = np.(userspaceNetworkProvider)

if tc.mongo {
//create a mongo-document to test duplicated name
session := suite.sp.Mongo.NewSession()
err := session.C(entity.NetworkCollectionName).Insert(tc.network)
defer session.C(entity.NetworkCollectionName).Remove(tc.network)
suite.NoError(err)
}
err = np.ValidateBeforeCreating(suite.sp)
suite.Error(err)
})
}
}

// OK
func (suite *OVSNetdevNetworkTestSuite) TestDeleteNetwork() {
testCases := []struct {
caseName string
Expand Down Expand Up @@ -330,7 +221,6 @@ func (suite *OVSNetdevNetworkTestSuite) TestDeleteNetwork() {
}
}

// OK
func (suite *OVSNetdevNetworkTestSuite) TestDeleteNetworkFail() {
network := entity.Network{
Type: entity.OVSUserspaceNetworkType,
Expand Down
29 changes: 0 additions & 29 deletions src/networkprovider/ovs_system.go
Original file line number Diff line number Diff line change
@@ -1,13 +1,11 @@
package networkprovider

import (
"fmt"
"net"

"github.com/linkernetworks/vortex/src/entity"
"github.com/linkernetworks/vortex/src/networkcontroller"
"github.com/linkernetworks/vortex/src/serviceprovider"
"gopkg.in/mgo.v2/bson"
)

type kernelspaceNetworkProvider struct {
Expand All @@ -18,33 +16,6 @@ type kernelspaceNetworkProvider struct {
isDPDKPort bool
}

func (knp kernelspaceNetworkProvider) ValidateBeforeCreating(sp *serviceprovider.Container) error {
session := sp.Mongo.NewSession()
defer session.Close()

// Check whether VLAN Tag is 0~4095
for _, tag := range knp.vlanTags {
if tag < 0 || tag > 4095 {
return fmt.Errorf("The vlangTag %d should between 0 and 4095", tag)
}
}

if knp.isDPDKPort != false {
return fmt.Errorf("unsupport dpdk in kernel space datapath")
}

q := bson.M{
"name": knp.networkName,
}
n, err := session.Count(entity.NetworkCollectionName, q)
if n >= 1 {
return fmt.Errorf("The network name: %s is exist.", knp.networkName)
} else if err != nil {
return err
}
return nil
}

func (knp kernelspaceNetworkProvider) CreateNetwork(sp *serviceprovider.Container) error {
for _, node := range knp.nodes {
nodeIP, err := sp.KubeCtl.GetNodeExternalIP(node.Name)
Expand Down
Loading

0 comments on commit b7bd8f6

Please sign in to comment.