VOL-2153 remove flow_utils.go from voltha-go
Change-Id: I81bdc9ed78e6a6b00a176f9c8366ff56fb7777b0
diff --git a/Makefile b/Makefile
index 649b10b..e719891 100644
--- a/Makefile
+++ b/Makefile
@@ -90,7 +90,7 @@
@mkdir -p python/local_imports
ifdef LOCAL_PROTOS
mkdir -p vendor/github.com/opencord/voltha-protos/go
- cp -r ${GOPATH}/src/github.com/opencord/voltha-protos/go/* vendor/github.com/opencord/voltha-protos/go
+ cp -r ${LOCAL_PROTOS}/go/* vendor/github.com/opencord/voltha-protos/go
rm -rf python/local_imports/voltha-protos
mkdir -p python/local_imports/voltha-protos/dist
cp ../voltha-protos/dist/*.tar.gz python/local_imports/voltha-protos/dist/
@@ -100,7 +100,7 @@
local-lib-go:
ifdef LOCAL_LIB_GO
mkdir -p vendor/github.com/opencord/voltha-lib-go/pkg
- cp -r ${GOPATH}/src/github.com/opencord/voltha-lib-go/pkg/* vendor/github.com/opencord/voltha-lib-go/pkg/
+ cp -r ${LOCAL_LIB_GO}/pkg/* vendor/github.com/opencord/voltha-lib-go/pkg/
endif
local-pyvoltha:
diff --git a/go.mod b/go.mod
index 6595e62..514830e 100644
--- a/go.mod
+++ b/go.mod
@@ -4,12 +4,11 @@
require (
github.com/bclicn/color v0.0.0-20180711051946-108f2023dc84
- github.com/cevaris/ordered_map v0.0.0-20190319150403-3adeae072e73
github.com/gogo/protobuf v1.3.0
github.com/golang/protobuf v1.3.2
github.com/google/uuid v1.1.1
github.com/gyuho/goraph v0.0.0-20160328020532-d460590d53a9
- github.com/opencord/voltha-lib-go v0.0.0-20191023185531-80258b36a64b
+ github.com/opencord/voltha-lib-go v0.0.0-20191024175357-456b893dc42c
github.com/opencord/voltha-protos v1.0.3
github.com/stretchr/testify v1.4.0
google.golang.org/grpc v1.24.0
diff --git a/go.sum b/go.sum
index 5331e02..4831e35 100644
--- a/go.sum
+++ b/go.sum
@@ -192,8 +192,8 @@
github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
github.com/onsi/gomega v1.4.2 h1:3mYCb7aPxS/RU7TI1y4rkEn1oKmPRjNJLNEXgw7MH2I=
github.com/onsi/gomega v1.4.2/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY=
-github.com/opencord/voltha-lib-go v0.0.0-20191023185531-80258b36a64b h1:s3zvCa27RhpVy+wCk5R4iKa9H61B1MzbSL2164B1w68=
-github.com/opencord/voltha-lib-go v0.0.0-20191023185531-80258b36a64b/go.mod h1:+bjwfm5bbP1j6liscpn3UFqbh6hHDkmLDWU3AdYLDY4=
+github.com/opencord/voltha-lib-go v0.0.0-20191024175357-456b893dc42c h1:+8iex9a0qDyuNqCXfy2SBHOK0Cfiev38RhQqkIitpew=
+github.com/opencord/voltha-lib-go v0.0.0-20191024175357-456b893dc42c/go.mod h1:VDb+kLjSvAm4iaArzXB143fug199CG0/wv+Bseh1mcM=
github.com/opencord/voltha-protos v1.0.3 h1:9v+R/QGF1xK+HKTqFM0IqCABoGCAxC8iKH4VzNBJDto=
github.com/opencord/voltha-protos v1.0.3/go.mod h1:myfFIkJdA+rCXmKdLImhh79MfabN4ZOKQ4grk32DnPQ=
github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc=
diff --git a/rw_core/core/device_agent.go b/rw_core/core/device_agent.go
index 4a5274b..c8e07a9 100755
--- a/rw_core/core/device_agent.go
+++ b/rw_core/core/device_agent.go
@@ -19,8 +19,9 @@
"context"
"fmt"
"github.com/gogo/protobuf/proto"
- fu "github.com/opencord/voltha-go/rw_core/utils"
+ coreutils "github.com/opencord/voltha-go/rw_core/utils"
"github.com/opencord/voltha-lib-go/pkg/db/model"
+ fu "github.com/opencord/voltha-lib-go/pkg/flows"
"github.com/opencord/voltha-lib-go/pkg/log"
ic "github.com/opencord/voltha-protos/go/inter_container"
ofp "github.com/opencord/voltha-protos/go/openflow_13"
@@ -323,7 +324,7 @@
device.FlowGroups = &voltha.FlowGroups{Items: updatedGroups}
go agent.updateDeviceWithoutLockAsync(device, chdB)
- if res := fu.WaitForNilOrErrorResponses(agent.defaultTimeout, chAdapters, chdB); res != nil {
+ if res := coreutils.WaitForNilOrErrorResponses(agent.defaultTimeout, chAdapters, chdB); res != nil {
log.Debugw("Failed to get response from adapter[or] DB", log.Fields{"result": res})
return status.Errorf(codes.Aborted, "errors-%s", res)
}
@@ -414,7 +415,7 @@
device.FlowGroups = &voltha.FlowGroups{Items: groupsToKeep}
go agent.updateDeviceWithoutLockAsync(device, chdB)
- if res := fu.WaitForNilOrErrorResponses(agent.defaultTimeout, chAdapters, chdB); res != nil {
+ if res := coreutils.WaitForNilOrErrorResponses(agent.defaultTimeout, chAdapters, chdB); res != nil {
return status.Errorf(codes.Aborted, "errors-%s", res)
}
return nil
@@ -522,7 +523,7 @@
device.FlowGroups = &voltha.FlowGroups{Items: updatedGroups}
go agent.updateDeviceWithoutLockAsync(device, chdB)
- if res := fu.WaitForNilOrErrorResponses(agent.defaultTimeout, chAdapters, chdB); res != nil {
+ if res := coreutils.WaitForNilOrErrorResponses(agent.defaultTimeout, chAdapters, chdB); res != nil {
return status.Errorf(codes.Aborted, "errors-%s", res)
}
return nil
diff --git a/rw_core/core/logical_device_agent.go b/rw_core/core/logical_device_agent.go
index 21f65fa..c36e1a2 100644
--- a/rw_core/core/logical_device_agent.go
+++ b/rw_core/core/logical_device_agent.go
@@ -22,8 +22,9 @@
"github.com/gogo/protobuf/proto"
fd "github.com/opencord/voltha-go/rw_core/flow_decomposition"
"github.com/opencord/voltha-go/rw_core/graph"
- fu "github.com/opencord/voltha-go/rw_core/utils"
+ coreutils "github.com/opencord/voltha-go/rw_core/utils"
"github.com/opencord/voltha-lib-go/pkg/db/model"
+ fu "github.com/opencord/voltha-lib-go/pkg/flows"
"github.com/opencord/voltha-lib-go/pkg/log"
ic "github.com/opencord/voltha-protos/go/inter_container"
ofp "github.com/opencord/voltha-protos/go/openflow_13"
@@ -406,7 +407,7 @@
}(child, ch)
}
// Wait for completion
- if res := fu.WaitForNilOrErrorResponses(agent.defaultTimeout, chnlsList...); res != nil {
+ if res := coreutils.WaitForNilOrErrorResponses(agent.defaultTimeout, chnlsList...); res != nil {
return status.Errorf(codes.Aborted, "errors-%s", res)
}
}
@@ -1034,7 +1035,7 @@
}(deviceId, value.ListFlows(), value.ListGroups())
}
// Wait for completion
- if res := fu.WaitForNilOrErrorResponses(agent.defaultTimeout, chnlsList...); res != nil {
+ if res := coreutils.WaitForNilOrErrorResponses(agent.defaultTimeout, chnlsList...); res != nil {
return status.Errorf(codes.Aborted, "errors-%s", res)
}
return nil
@@ -1056,7 +1057,7 @@
}(deviceId, value.ListFlows(), value.ListGroups())
}
// Wait for completion
- if res := fu.WaitForNilOrErrorResponses(agent.defaultTimeout, chnlsList...); res != nil {
+ if res := coreutils.WaitForNilOrErrorResponses(agent.defaultTimeout, chnlsList...); res != nil {
return status.Errorf(codes.Aborted, "errors-%s", res)
}
return nil
@@ -1078,7 +1079,7 @@
}(deviceId, value.ListFlows(), value.ListGroups())
}
// Wait for completion
- if res := fu.WaitForNilOrErrorResponses(agent.defaultTimeout, chnlsList...); res != nil {
+ if res := coreutils.WaitForNilOrErrorResponses(agent.defaultTimeout, chnlsList...); res != nil {
return status.Errorf(codes.Aborted, "errors-%s", res)
}
return nil
diff --git a/rw_core/flow_decomposition/flow_decomposer.go b/rw_core/flow_decomposition/flow_decomposer.go
index d28a803..ff9225c 100644
--- a/rw_core/flow_decomposition/flow_decomposer.go
+++ b/rw_core/flow_decomposition/flow_decomposer.go
@@ -20,7 +20,7 @@
"github.com/gogo/protobuf/proto"
"github.com/opencord/voltha-go/rw_core/coreIf"
"github.com/opencord/voltha-go/rw_core/graph"
- fu "github.com/opencord/voltha-go/rw_core/utils"
+ fu "github.com/opencord/voltha-lib-go/pkg/flows"
"github.com/opencord/voltha-lib-go/pkg/log"
ofp "github.com/opencord/voltha-protos/go/openflow_13"
"github.com/opencord/voltha-protos/go/voltha"
diff --git a/rw_core/flow_decomposition/flow_decomposer_test.go b/rw_core/flow_decomposition/flow_decomposer_test.go
index 3264c12..37faa25 100644
--- a/rw_core/flow_decomposition/flow_decomposer_test.go
+++ b/rw_core/flow_decomposition/flow_decomposer_test.go
@@ -18,7 +18,7 @@
import (
"errors"
"github.com/opencord/voltha-go/rw_core/graph"
- fu "github.com/opencord/voltha-go/rw_core/utils"
+ fu "github.com/opencord/voltha-lib-go/pkg/flows"
"github.com/opencord/voltha-lib-go/pkg/log"
ofp "github.com/opencord/voltha-protos/go/openflow_13"
"github.com/opencord/voltha-protos/go/voltha"
diff --git a/rw_core/utils/flow_utils_test.go b/rw_core/utils/flow_utils_test.go
deleted file mode 100644
index c51a778..0000000
--- a/rw_core/utils/flow_utils_test.go
+++ /dev/null
@@ -1,689 +0,0 @@
-/*
- * Copyright 2019-present Open Networking Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package utils
-
-import (
- "github.com/opencord/voltha-lib-go/pkg/log"
- ofp "github.com/opencord/voltha-protos/go/openflow_13"
- "github.com/stretchr/testify/assert"
- "google.golang.org/grpc/codes"
- "google.golang.org/grpc/status"
- "strings"
- "testing"
-)
-
-func init() {
- log.AddPackage(log.JSON, log.WarnLevel, nil)
- timeoutError = status.Errorf(codes.Aborted, "timeout")
- taskFailureError = status.Error(codes.Internal, "test failure task")
-}
-
-func TestFlowsAndGroups_AddFlow(t *testing.T) {
- fg := NewFlowsAndGroups()
- allFlows := fg.ListFlows()
- assert.Equal(t, 0, len(allFlows))
- fg.AddFlow(nil)
- allFlows = fg.ListFlows()
- assert.Equal(t, 0, len(allFlows))
-
- var fa *FlowArgs
- fa = &FlowArgs{
- KV: OfpFlowModArgs{"priority": 500},
- MatchFields: []*ofp.OfpOxmOfbField{
- InPort(1),
- VlanVid(uint32(ofp.OfpVlanId_OFPVID_PRESENT) | 1),
- TunnelId(uint64(1)),
- EthType(0x0800),
- Ipv4Dst(0xffffffff),
- IpProto(17),
- UdpSrc(68),
- UdpDst(67),
- },
- Actions: []*ofp.OfpAction{
- PushVlan(0x8100),
- SetField(VlanVid(uint32(ofp.OfpVlanId_OFPVID_PRESENT) | 4000)),
- Output(uint32(ofp.OfpPortNo_OFPP_CONTROLLER)),
- },
- }
- flow := MkFlowStat(fa)
- fg.AddFlow(flow)
-
- allFlows = fg.ListFlows()
- assert.Equal(t, 1, len(allFlows))
- assert.True(t, FlowMatch(flow, allFlows[0]))
-}
-
-func TestFlowsAndGroups_AddGroup(t *testing.T) {
- var ga *GroupArgs
-
- fg := NewFlowsAndGroups()
- allGroups := fg.ListGroups()
- assert.Equal(t, 0, len(allGroups))
- fg.AddGroup(nil)
- allGroups = fg.ListGroups()
- assert.Equal(t, 0, len(allGroups))
-
- ga = &GroupArgs{
- GroupId: 10,
- Buckets: []*ofp.OfpBucket{
- {Actions: []*ofp.OfpAction{
- PopVlan(),
- Output(1),
- },
- },
- },
- }
- group := MkGroupStat(ga)
- fg.AddGroup(group)
-
- allGroups = fg.ListGroups()
- assert.Equal(t, 1, len(allGroups))
- assert.Equal(t, ga.GroupId, allGroups[0].Desc.GroupId)
-}
-
-func TestFlowsAndGroups_Copy(t *testing.T) {
- fg := NewFlowsAndGroups()
- var fa *FlowArgs
- var ga *GroupArgs
-
- fa = &FlowArgs{
- KV: OfpFlowModArgs{"priority": 500},
- MatchFields: []*ofp.OfpOxmOfbField{
- InPort(2),
- VlanVid(uint32(ofp.OfpVlanId_OFPVID_PRESENT) | 0),
- },
- Actions: []*ofp.OfpAction{
- SetField(VlanVid(uint32(ofp.OfpVlanId_OFPVID_PRESENT) | 10)),
- Output(1),
- },
- }
- flow := MkFlowStat(fa)
- fg.AddFlow(flow)
-
- ga = &GroupArgs{
- GroupId: 10,
- Buckets: []*ofp.OfpBucket{
- {Actions: []*ofp.OfpAction{
- PopVlan(),
- Output(1),
- },
- },
- },
- }
- group := MkGroupStat(ga)
- fg.AddGroup(group)
-
- fgCopy := fg.Copy()
-
- allFlows := fgCopy.ListFlows()
- assert.Equal(t, 1, len(allFlows))
- assert.True(t, FlowMatch(flow, allFlows[0]))
-
- allGroups := fgCopy.ListGroups()
- assert.Equal(t, 1, len(allGroups))
- assert.Equal(t, ga.GroupId, allGroups[0].Desc.GroupId)
-
- fg = NewFlowsAndGroups()
- fgCopy = fg.Copy()
- allFlows = fgCopy.ListFlows()
- allGroups = fgCopy.ListGroups()
- assert.Equal(t, 0, len(allFlows))
- assert.Equal(t, 0, len(allGroups))
-}
-
-func TestFlowsAndGroups_GetFlow(t *testing.T) {
- fg := NewFlowsAndGroups()
- var fa1 *FlowArgs
- var fa2 *FlowArgs
- var ga *GroupArgs
-
- fa1 = &FlowArgs{
- KV: OfpFlowModArgs{"priority": 500},
- MatchFields: []*ofp.OfpOxmOfbField{
- InPort(2),
- Metadata_ofp((1000 << 32) | 1),
- VlanPcp(0),
- },
- Actions: []*ofp.OfpAction{
- PopVlan(),
- },
- }
- flow1 := MkFlowStat(fa1)
-
- fa2 = &FlowArgs{
- KV: OfpFlowModArgs{"priority": 1500},
- MatchFields: []*ofp.OfpOxmOfbField{
- InPort(5),
- VlanVid(uint32(ofp.OfpVlanId_OFPVID_PRESENT) | 0),
- },
- Actions: []*ofp.OfpAction{
- PushVlan(0x8100),
- SetField(VlanVid(uint32(ofp.OfpVlanId_OFPVID_PRESENT) | 1000)),
- SetField(VlanPcp(0)),
- Output(2),
- },
- }
- flow2 := MkFlowStat(fa2)
-
- fg.AddFlow(flow1)
- fg.AddFlow(flow2)
-
- ga = &GroupArgs{
- GroupId: 10,
- Buckets: []*ofp.OfpBucket{
- {Actions: []*ofp.OfpAction{
- PopVlan(),
- Output(1),
- },
- },
- },
- }
- group := MkGroupStat(ga)
- fg.AddGroup(group)
-
- gf1 := fg.GetFlow(0)
- assert.True(t, FlowMatch(flow1, gf1))
-
- gf2 := fg.GetFlow(1)
- assert.True(t, FlowMatch(flow2, gf2))
-
- gf3 := fg.GetFlow(2)
- assert.Nil(t, gf3)
-
- allFlows := fg.ListFlows()
- assert.True(t, FlowMatch(flow1, allFlows[0]))
- assert.True(t, FlowMatch(flow2, allFlows[1]))
-}
-
-func TestFlowsAndGroups_String(t *testing.T) {
- fg := NewFlowsAndGroups()
- var fa *FlowArgs
- var ga *GroupArgs
-
- str := fg.String()
- assert.True(t, str == "")
-
- fa = &FlowArgs{
- KV: OfpFlowModArgs{"priority": 500},
- MatchFields: []*ofp.OfpOxmOfbField{
- InPort(2),
- VlanVid(uint32(ofp.OfpVlanId_OFPVID_PRESENT) | 0),
- VlanPcp(0),
- EthType(0x800),
- Ipv4Dst(0xe00a0a0a),
- },
- Actions: []*ofp.OfpAction{
- Group(10),
- },
- }
- flow := MkFlowStat(fa)
- fg.AddFlow(flow)
-
- ga = &GroupArgs{
- GroupId: 10,
- Buckets: []*ofp.OfpBucket{
- {Actions: []*ofp.OfpAction{
- PopVlan(),
- Output(1),
- },
- },
- },
- }
- group := MkGroupStat(ga)
- fg.AddGroup(group)
-
- str = fg.String()
- assert.True(t, strings.Contains(str, "id: 1143307409938767207"))
- assert.True(t, strings.Contains(str, "group_id: 10"))
- assert.True(t, strings.Contains(str, "oxm_class: OFPXMC_OPENFLOW_BASICOFPXMC_OPENFLOW_BASIC"))
- assert.True(t, strings.Contains(str, "type: OFPXMT_OFB_VLAN_VIDOFPXMT_OFB_VLAN_VID"))
- assert.True(t, strings.Contains(str, "vlan_vid: 4096"))
- assert.True(t, strings.Contains(str, "buckets:"))
-}
-
-func TestFlowsAndGroups_AddFrom(t *testing.T) {
- fg := NewFlowsAndGroups()
- var fa *FlowArgs
- var ga *GroupArgs
-
- str := fg.String()
- assert.True(t, str == "")
-
- fa = &FlowArgs{
- KV: OfpFlowModArgs{"priority": 500},
- MatchFields: []*ofp.OfpOxmOfbField{
- InPort(2),
- VlanVid(uint32(ofp.OfpVlanId_OFPVID_PRESENT) | 0),
- Metadata_ofp(1000),
- TunnelId(uint64(1)),
- VlanPcp(0),
- },
- Actions: []*ofp.OfpAction{
- PopVlan(),
- Output(1),
- },
- }
- flow := MkFlowStat(fa)
- fg.AddFlow(flow)
-
- ga = &GroupArgs{
- GroupId: 10,
- Buckets: []*ofp.OfpBucket{
- {Actions: []*ofp.OfpAction{
- PopVlan(),
- Output(1),
- },
- },
- },
- }
- group := MkGroupStat(ga)
- fg.AddGroup(group)
-
- fg1 := NewFlowsAndGroups()
- fg1.AddFrom(fg)
-
- allFlows := fg1.ListFlows()
- allGroups := fg1.ListGroups()
- assert.Equal(t, 1, len(allFlows))
- assert.Equal(t, 1, len(allGroups))
- assert.True(t, FlowMatch(flow, allFlows[0]))
- assert.Equal(t, group.Desc.GroupId, allGroups[0].Desc.GroupId)
-}
-
-func TestDeviceRules_AddFlow(t *testing.T) {
- dr := NewDeviceRules()
- rules := dr.GetRules()
- assert.True(t, len(rules) == 0)
-
- dr.AddFlow("123456", nil)
- rules = dr.GetRules()
- assert.True(t, len(rules) == 1)
- val, ok := rules["123456"]
- assert.True(t, ok)
- assert.Equal(t, 0, len(val.ListFlows()))
- assert.Equal(t, 0, len(val.ListGroups()))
-
- var fa *FlowArgs
- fa = &FlowArgs{
- KV: OfpFlowModArgs{"priority": 500},
- MatchFields: []*ofp.OfpOxmOfbField{
- InPort(2),
- VlanVid(uint32(ofp.OfpVlanId_OFPVID_PRESENT) | 0),
- Metadata_ofp(1000),
- TunnelId(uint64(1)),
- VlanPcp(0),
- },
- Actions: []*ofp.OfpAction{
- PopVlan(),
- Output(1),
- },
- }
- flow := MkFlowStat(fa)
- dr.AddFlow("123456", flow)
- rules = dr.GetRules()
- assert.True(t, len(rules) == 1)
- val, ok = rules["123456"]
- assert.True(t, ok)
- assert.Equal(t, 1, len(val.ListFlows()))
- assert.True(t, FlowMatch(flow, val.ListFlows()[0]))
- assert.Equal(t, 0, len(val.ListGroups()))
-}
-
-func TestDeviceRules_AddFlowsAndGroup(t *testing.T) {
- fg := NewFlowsAndGroups()
- var fa *FlowArgs
- var ga *GroupArgs
-
- str := fg.String()
- assert.True(t, str == "")
-
- fa = &FlowArgs{
- KV: OfpFlowModArgs{"priority": 2000},
- MatchFields: []*ofp.OfpOxmOfbField{
- InPort(2),
- VlanVid(uint32(ofp.OfpVlanId_OFPVID_PRESENT) | 0),
- Metadata_ofp(1000),
- TunnelId(uint64(1)),
- VlanPcp(0),
- },
- Actions: []*ofp.OfpAction{
- PopVlan(),
- Output(1),
- },
- }
- flow := MkFlowStat(fa)
- fg.AddFlow(flow)
-
- ga = &GroupArgs{
- GroupId: 10,
- Buckets: []*ofp.OfpBucket{
- {Actions: []*ofp.OfpAction{
- PopVlan(),
- Output(1),
- },
- },
- },
- }
- group := MkGroupStat(ga)
- fg.AddGroup(group)
-
- dr := NewDeviceRules()
- dr.AddFlowsAndGroup("123456", fg)
- rules := dr.GetRules()
- assert.True(t, len(rules) == 1)
- val, ok := rules["123456"]
- assert.True(t, ok)
- assert.Equal(t, 1, len(val.ListFlows()))
- assert.Equal(t, 1, len(val.ListGroups()))
- assert.True(t, FlowMatch(flow, val.ListFlows()[0]))
- assert.Equal(t, 10, int(val.ListGroups()[0].Desc.GroupId))
-}
-
-func TestFlowHasOutPort(t *testing.T) {
- var flow *ofp.OfpFlowStats
- assert.False(t, FlowHasOutPort(flow, 1))
-
- fa := &FlowArgs{
- KV: OfpFlowModArgs{"priority": 2000},
- MatchFields: []*ofp.OfpOxmOfbField{
- InPort(2),
- VlanVid(uint32(ofp.OfpVlanId_OFPVID_PRESENT) | 0),
- Metadata_ofp(1000),
- TunnelId(uint64(1)),
- VlanPcp(0),
- },
- Actions: []*ofp.OfpAction{
- PopVlan(),
- Output(1),
- },
- }
- flow = MkFlowStat(fa)
- assert.True(t, FlowHasOutPort(flow, 1))
- assert.False(t, FlowHasOutPort(flow, 2))
-
- fa = &FlowArgs{
- KV: OfpFlowModArgs{"priority": 2000},
- MatchFields: []*ofp.OfpOxmOfbField{
- InPort(2),
- VlanVid(uint32(ofp.OfpVlanId_OFPVID_PRESENT) | 0),
- },
- }
- flow = MkFlowStat(fa)
- assert.False(t, FlowHasOutPort(flow, 1))
-}
-
-func TestFlowHasOutGroup(t *testing.T) {
- var flow *ofp.OfpFlowStats
- assert.False(t, FlowHasOutGroup(flow, 10))
-
- fa := &FlowArgs{
- KV: OfpFlowModArgs{"priority": 500},
- MatchFields: []*ofp.OfpOxmOfbField{
- InPort(2),
- VlanVid(uint32(ofp.OfpVlanId_OFPVID_PRESENT) | 0),
- VlanPcp(0),
- EthType(0x800),
- Ipv4Dst(0xe00a0a0a),
- },
- Actions: []*ofp.OfpAction{
- Group(10),
- },
- }
- flow = MkFlowStat(fa)
- assert.True(t, FlowHasOutGroup(flow, 10))
- assert.False(t, FlowHasOutGroup(flow, 11))
-
- fa = &FlowArgs{
- KV: OfpFlowModArgs{"priority": 500},
- MatchFields: []*ofp.OfpOxmOfbField{
- InPort(2),
- VlanVid(uint32(ofp.OfpVlanId_OFPVID_PRESENT) | 0),
- VlanPcp(0),
- EthType(0x800),
- Ipv4Dst(0xe00a0a0a),
- },
- Actions: []*ofp.OfpAction{
- Output(1),
- },
- }
- flow = MkFlowStat(fa)
- assert.False(t, FlowHasOutGroup(flow, 1))
-}
-
-func TestMatchFlow(t *testing.T) {
- assert.False(t, FlowMatch(nil, nil))
- fa := &FlowArgs{
- KV: OfpFlowModArgs{"priority": 500, "table_id": 1, "cookie": 38268468, "flags": 12},
- MatchFields: []*ofp.OfpOxmOfbField{
- InPort(2),
- VlanVid(uint32(ofp.OfpVlanId_OFPVID_PRESENT) | 0),
- VlanPcp(0),
- EthType(0x800),
- Ipv4Dst(0xe00a0a0a),
- },
- Actions: []*ofp.OfpAction{
- Group(10),
- },
- }
- flow1 := MkFlowStat(fa)
- assert.False(t, FlowMatch(flow1, nil))
-
- fa = &FlowArgs{
- KV: OfpFlowModArgs{"priority": 500},
- MatchFields: []*ofp.OfpOxmOfbField{
- InPort(2),
- VlanVid(uint32(ofp.OfpVlanId_OFPVID_PRESENT) | 0),
- VlanPcp(0),
- EthType(0x800),
- Ipv4Dst(0xe00a0a0a),
- },
- Actions: []*ofp.OfpAction{
- Group(10),
- },
- }
- flow2 := MkFlowStat(fa)
- assert.False(t, FlowMatch(flow1, flow2))
- assert.False(t, FlowMatch(nil, flow2))
-
- fa = &FlowArgs{
- KV: OfpFlowModArgs{"priority": 500, "table_id": 1, "cookie": 38268468, "flags": 12},
- MatchFields: []*ofp.OfpOxmOfbField{
- InPort(2),
- VlanVid(uint32(ofp.OfpVlanId_OFPVID_PRESENT) | 0),
- VlanPcp(0),
- EthType(0x800),
- Ipv4Dst(0xe00a0a0a),
- },
- }
- flow2 = MkFlowStat(fa)
- assert.True(t, FlowMatch(flow1, flow2))
-
- fa = &FlowArgs{
- KV: OfpFlowModArgs{"priority": 501, "table_id": 1, "cookie": 38268468, "flags": 12},
- MatchFields: []*ofp.OfpOxmOfbField{
- InPort(2),
- VlanVid(uint32(ofp.OfpVlanId_OFPVID_PRESENT) | 0),
- VlanPcp(0),
- EthType(0x800),
- Ipv4Dst(0xe00a0a0a),
- },
- Actions: []*ofp.OfpAction{
- Group(10),
- },
- }
- flow2 = MkFlowStat(fa)
- assert.False(t, FlowMatch(flow1, flow2))
-
- fa = &FlowArgs{
- KV: OfpFlowModArgs{"priority": 500, "table_id": 2, "cookie": 38268468, "flags": 12},
- MatchFields: []*ofp.OfpOxmOfbField{
- InPort(2),
- VlanVid(uint32(ofp.OfpVlanId_OFPVID_PRESENT) | 0),
- VlanPcp(0),
- EthType(0x800),
- Ipv4Dst(0xe00a0a0a),
- },
- }
- flow2 = MkFlowStat(fa)
- assert.False(t, FlowMatch(flow1, flow2))
-
- fa = &FlowArgs{
- KV: OfpFlowModArgs{"priority": 500, "table_id": 1, "cookie": 38268467, "flags": 12},
- MatchFields: []*ofp.OfpOxmOfbField{
- InPort(2),
- VlanVid(uint32(ofp.OfpVlanId_OFPVID_PRESENT) | 0),
- VlanPcp(0),
- EthType(0x800),
- Ipv4Dst(0xe00a0a0a),
- },
- }
- flow2 = MkFlowStat(fa)
- assert.False(t, FlowMatch(flow1, flow2))
-
- fa = &FlowArgs{
- KV: OfpFlowModArgs{"priority": 500, "table_id": 1, "cookie": 38268468, "flags": 14},
- MatchFields: []*ofp.OfpOxmOfbField{
- InPort(2),
- VlanVid(uint32(ofp.OfpVlanId_OFPVID_PRESENT) | 0),
- VlanPcp(0),
- EthType(0x800),
- Ipv4Dst(0xe00a0a0a),
- },
- }
- flow2 = MkFlowStat(fa)
- assert.False(t, FlowMatch(flow1, flow2))
-
- fa = &FlowArgs{
- KV: OfpFlowModArgs{"priority": 500, "table_id": 1, "cookie": 38268468, "flags": 12},
- MatchFields: []*ofp.OfpOxmOfbField{
- InPort(4),
- VlanVid(uint32(ofp.OfpVlanId_OFPVID_PRESENT) | 0),
- VlanPcp(0),
- EthType(0x800),
- Ipv4Dst(0xe00a0a0a),
- },
- }
- flow2 = MkFlowStat(fa)
- assert.False(t, FlowMatch(flow1, flow2))
-
- fa = &FlowArgs{
- KV: OfpFlowModArgs{"priority": 500, "table_id": 1, "cookie": 38268468, "flags": 12},
- MatchFields: []*ofp.OfpOxmOfbField{
- InPort(2),
- VlanVid(uint32(ofp.OfpVlanId_OFPVID_PRESENT) | 0),
- VlanPcp(0),
- EthType(0x800),
- },
- }
- flow2 = MkFlowStat(fa)
- assert.False(t, FlowMatch(flow1, flow2))
-
- fa = &FlowArgs{
- KV: OfpFlowModArgs{"priority": 500, "table_id": 1, "cookie": 38268468, "flags": 12},
- MatchFields: []*ofp.OfpOxmOfbField{
- InPort(2),
- VlanVid(uint32(ofp.OfpVlanId_OFPVID_PRESENT) | 0),
- VlanPcp(0),
- EthType(0x800),
- Ipv4Dst(0xe00a0a0a),
- },
- Actions: []*ofp.OfpAction{
- PopVlan(),
- Output(1),
- },
- }
- flow2 = MkFlowStat(fa)
- assert.True(t, FlowMatch(flow1, flow2))
-}
-
-func TestFlowMatchesMod(t *testing.T) {
- assert.False(t, FlowMatchesMod(nil, nil))
- fa := &FlowArgs{
- KV: OfpFlowModArgs{"priority": 500, "table_id": 1},
- MatchFields: []*ofp.OfpOxmOfbField{
- InPort(2),
- VlanVid(uint32(ofp.OfpVlanId_OFPVID_PRESENT) | 0),
- VlanPcp(0),
- EthType(0x800),
- Ipv4Dst(0xe00a0a0a),
- },
- Actions: []*ofp.OfpAction{
- Output(1),
- Group(10),
- },
- }
- flow := MkFlowStat(fa)
- assert.False(t, FlowMatchesMod(flow, nil))
-
- fa = &FlowArgs{
- KV: OfpFlowModArgs{"priority": 500, "table_id": 1},
- MatchFields: []*ofp.OfpOxmOfbField{
- InPort(2),
- VlanVid(uint32(ofp.OfpVlanId_OFPVID_PRESENT) | 0),
- VlanPcp(0),
- EthType(0x800),
- Ipv4Dst(0xe00a0a0a),
- },
- Actions: []*ofp.OfpAction{
- PopVlan(),
- Output(1),
- },
- }
- flowMod := MkSimpleFlowMod(ToOfpOxmField(fa.MatchFields), fa.Actions, fa.Command, fa.KV)
- assert.False(t, FlowMatchesMod(nil, flowMod))
- assert.False(t, FlowMatchesMod(flow, flowMod))
- assert.True(t, FlowMatch(flow, FlowStatsEntryFromFlowModMessage(flowMod)))
-
- fa = &FlowArgs{
- KV: OfpFlowModArgs{"table_id": uint64(ofp.OfpTable_OFPTT_ALL),
- "cookie_mask": 0,
- "out_port": uint64(ofp.OfpPortNo_OFPP_ANY),
- "out_group": uint64(ofp.OfpGroup_OFPG_ANY),
- },
- }
- flowMod = MkSimpleFlowMod(ToOfpOxmField(fa.MatchFields), fa.Actions, fa.Command, fa.KV)
- assert.True(t, FlowMatchesMod(flow, flowMod))
-
- fa = &FlowArgs{
- KV: OfpFlowModArgs{"table_id": 1,
- "cookie_mask": 0,
- "out_port": uint64(ofp.OfpPortNo_OFPP_ANY),
- "out_group": uint64(ofp.OfpGroup_OFPG_ANY),
- },
- }
- flowMod = MkSimpleFlowMod(ToOfpOxmField(fa.MatchFields), fa.Actions, fa.Command, fa.KV)
- assert.True(t, FlowMatchesMod(flow, flowMod))
-
- fa = &FlowArgs{
- KV: OfpFlowModArgs{"table_id": 1,
- "cookie_mask": 0,
- "out_port": 1,
- "out_group": uint64(ofp.OfpGroup_OFPG_ANY),
- },
- }
- flowMod = MkSimpleFlowMod(ToOfpOxmField(fa.MatchFields), fa.Actions, fa.Command, fa.KV)
- assert.True(t, FlowMatchesMod(flow, flowMod))
-
- fa = &FlowArgs{
- KV: OfpFlowModArgs{"table_id": 1,
- "cookie_mask": 0,
- "out_port": 1,
- "out_group": 10,
- },
- }
- flowMod = MkSimpleFlowMod(ToOfpOxmField(fa.MatchFields), fa.Actions, fa.Command, fa.KV)
- assert.True(t, FlowMatchesMod(flow, flowMod))
-}
diff --git a/rw_core/utils/flow_utils.go b/vendor/github.com/opencord/voltha-lib-go/pkg/flows/flow_utils.go
similarity index 99%
rename from rw_core/utils/flow_utils.go
rename to vendor/github.com/opencord/voltha-lib-go/pkg/flows/flow_utils.go
index 7cb718e..2dbf52d 100644
--- a/rw_core/utils/flow_utils.go
+++ b/vendor/github.com/opencord/voltha-lib-go/pkg/flows/flow_utils.go
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package utils
+package flows
import (
"bytes"
diff --git a/vendor/modules.txt b/vendor/modules.txt
index d52f030..bedca4f 100644
--- a/vendor/modules.txt
+++ b/vendor/modules.txt
@@ -62,7 +62,7 @@
github.com/mitchellh/go-homedir
# github.com/mitchellh/mapstructure v1.1.2
github.com/mitchellh/mapstructure
-# github.com/opencord/voltha-lib-go v0.0.0-20191023185531-80258b36a64b
+# github.com/opencord/voltha-lib-go v0.0.0-20191024175357-456b893dc42c
github.com/opencord/voltha-lib-go/pkg/log
github.com/opencord/voltha-lib-go/pkg/db/kvstore
github.com/opencord/voltha-lib-go/pkg/grpc
@@ -70,6 +70,7 @@
github.com/opencord/voltha-lib-go/pkg/version
github.com/opencord/voltha-lib-go/pkg/db/model
github.com/opencord/voltha-lib-go/pkg/kafka
+github.com/opencord/voltha-lib-go/pkg/flows
github.com/opencord/voltha-lib-go/pkg/adapters/common
github.com/opencord/voltha-lib-go/pkg/adapters
github.com/opencord/voltha-lib-go/pkg/adapters/adapterif