filter pfifo qdiscs in tests

This commit is contained in:
Vishvananda Ishaya Abrams
2017-09-05 22:56:13 -07:00
parent f5a6f697a5
commit a98f31ffc7
3 changed files with 56 additions and 33 deletions

View File

@@ -6,6 +6,23 @@ import (
"testing" "testing"
) )
func SafeQdiscList(link Link) ([]Qdisc, error) {
qdiscs, err := QdiscList(link)
if err != nil {
return nil, err
}
result := []Qdisc{}
for _, qdisc := range qdiscs {
// filter out pfifo_fast qdiscs because
// older kernels don't return them
_, pfifo := qdisc.(*PfifoFast)
if !pfifo {
result = append(result, qdisc)
}
}
return result, nil
}
func TestClassAddDel(t *testing.T) { func TestClassAddDel(t *testing.T) {
tearDown := setUpNetlinkTest(t) tearDown := setUpNetlinkTest(t)
defer tearDown() defer tearDown()
@@ -31,7 +48,7 @@ func TestClassAddDel(t *testing.T) {
if err := QdiscAdd(qdisc); err != nil { if err := QdiscAdd(qdisc); err != nil {
t.Fatal(err) t.Fatal(err)
} }
qdiscs, err := QdiscList(link) qdiscs, err := SafeQdiscList(link)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
@@ -103,7 +120,7 @@ func TestClassAddDel(t *testing.T) {
t.Fatal(err) t.Fatal(err)
} }
qdiscs, err = QdiscList(link) qdiscs, err = SafeQdiscList(link)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
@@ -153,7 +170,7 @@ func TestClassAddDel(t *testing.T) {
if err := QdiscDel(qdisc); err != nil { if err := QdiscDel(qdisc); err != nil {
t.Fatal(err) t.Fatal(err)
} }
qdiscs, err = QdiscList(link) qdiscs, err = SafeQdiscList(link)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
@@ -194,7 +211,7 @@ func TestHtbClassAddHtbClassChangeDel(t *testing.T) {
if err := QdiscAdd(qdisc); err != nil { if err := QdiscAdd(qdisc); err != nil {
t.Fatal(err) t.Fatal(err)
} }
qdiscs, err := QdiscList(link) qdiscs, err := SafeQdiscList(link)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
@@ -254,7 +271,7 @@ func TestHtbClassAddHtbClassChangeDel(t *testing.T) {
t.Fatal(err) t.Fatal(err)
} }
qdiscs, err = QdiscList(link) qdiscs, err = SafeQdiscList(link)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
@@ -306,7 +323,7 @@ func TestHtbClassAddHtbClassChangeDel(t *testing.T) {
} }
// Check that we still have the netem child qdisc // Check that we still have the netem child qdisc
qdiscs, err = QdiscList(link) qdiscs, err = SafeQdiscList(link)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
@@ -398,7 +415,7 @@ func TestHtbClassAddHtbClassChangeDel(t *testing.T) {
if err := QdiscDel(qdisc); err != nil { if err := QdiscDel(qdisc); err != nil {
t.Fatal(err) t.Fatal(err)
} }
qdiscs, err = QdiscList(link) qdiscs, err = SafeQdiscList(link)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }

View File

@@ -41,7 +41,7 @@ func TestFilterAddDel(t *testing.T) {
if err := QdiscAdd(qdisc); err != nil { if err := QdiscAdd(qdisc); err != nil {
t.Fatal(err) t.Fatal(err)
} }
qdiscs, err := QdiscList(link) qdiscs, err := SafeQdiscList(link)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
@@ -93,7 +93,7 @@ func TestFilterAddDel(t *testing.T) {
if err := QdiscDel(qdisc); err != nil { if err := QdiscDel(qdisc); err != nil {
t.Fatal(err) t.Fatal(err)
} }
qdiscs, err = QdiscList(link) qdiscs, err = SafeQdiscList(link)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
@@ -128,7 +128,7 @@ func TestAdvancedFilterAddDel(t *testing.T) {
if err := QdiscAdd(qdisc); err != nil { if err := QdiscAdd(qdisc); err != nil {
t.Fatal(err) t.Fatal(err)
} }
qdiscs, err := QdiscList(link) qdiscs, err := SafeQdiscList(link)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
@@ -257,7 +257,7 @@ func TestAdvancedFilterAddDel(t *testing.T) {
if err := QdiscDel(qdisc); err != nil { if err := QdiscDel(qdisc); err != nil {
t.Fatal(err) t.Fatal(err)
} }
qdiscs, err = QdiscList(link) qdiscs, err = SafeQdiscList(link)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
@@ -298,7 +298,7 @@ func TestFilterFwAddDel(t *testing.T) {
if err := QdiscAdd(qdisc); err != nil { if err := QdiscAdd(qdisc); err != nil {
t.Fatal(err) t.Fatal(err)
} }
qdiscs, err := QdiscList(link) qdiscs, err := SafeQdiscList(link)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
@@ -412,7 +412,7 @@ func TestFilterFwAddDel(t *testing.T) {
if err := QdiscDel(qdisc); err != nil { if err := QdiscDel(qdisc); err != nil {
t.Fatal(err) t.Fatal(err)
} }
qdiscs, err = QdiscList(link) qdiscs, err = SafeQdiscList(link)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
@@ -454,7 +454,7 @@ func TestFilterU32BpfAddDel(t *testing.T) {
if err := QdiscAdd(qdisc); err != nil { if err := QdiscAdd(qdisc); err != nil {
t.Fatal(err) t.Fatal(err)
} }
qdiscs, err := QdiscList(link) qdiscs, err := SafeQdiscList(link)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
@@ -513,15 +513,21 @@ func TestFilterU32BpfAddDel(t *testing.T) {
if u32.ClassId != classId { if u32.ClassId != classId {
t.Fatalf("ClassId of the filter is the wrong value") t.Fatalf("ClassId of the filter is the wrong value")
} }
// actions can be returned in reverse order
bpfAction, ok := u32.Actions[0].(*BpfAction) bpfAction, ok := u32.Actions[0].(*BpfAction)
if !ok { if !ok {
t.Fatal("Action[0] is the wrong type") bpfAction, ok = u32.Actions[1].(*BpfAction)
if !ok {
t.Fatal("Action is the wrong type")
}
} }
if bpfAction.Fd != fd { if bpfAction.Fd != fd {
t.Fatal("Action Fd does not match") t.Fatal("Action Fd does not match")
} }
if _, ok := u32.Actions[1].(*MirredAction); !ok { if _, ok := u32.Actions[0].(*MirredAction); !ok {
t.Fatal("Action[1] is the wrong type") if _, ok := u32.Actions[1].(*MirredAction); !ok {
t.Fatal("Action is the wrong type")
}
} }
if err := FilterDel(filter); err != nil { if err := FilterDel(filter); err != nil {
@@ -538,7 +544,7 @@ func TestFilterU32BpfAddDel(t *testing.T) {
if err := QdiscDel(qdisc); err != nil { if err := QdiscDel(qdisc); err != nil {
t.Fatal(err) t.Fatal(err)
} }
qdiscs, err = QdiscList(link) qdiscs, err = SafeQdiscList(link)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
@@ -573,12 +579,12 @@ func TestFilterClsActBpfAddDel(t *testing.T) {
if err := QdiscAdd(qdisc); err != nil { if err := QdiscAdd(qdisc); err != nil {
t.Skipf("Failed adding clsact qdisc, unsupported kernel") t.Skipf("Failed adding clsact qdisc, unsupported kernel")
} }
qdiscs, err := QdiscList(link) qdiscs, err := SafeQdiscList(link)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
if len(qdiscs) != 1 { if len(qdiscs) != 1 {
t.Fatal("Failed to add qdisc") t.Fatal("Failed to add qdisc", len(qdiscs))
} }
if q, ok := qdiscs[0].(*GenericQdisc); !ok || q.Type() != "clsact" { if q, ok := qdiscs[0].(*GenericQdisc); !ok || q.Type() != "clsact" {
t.Fatal("qdisc is the wrong type") t.Fatal("qdisc is the wrong type")
@@ -642,7 +648,7 @@ func TestFilterClsActBpfAddDel(t *testing.T) {
if err := QdiscDel(qdisc); err != nil { if err := QdiscDel(qdisc); err != nil {
t.Fatal(err) t.Fatal(err)
} }
qdiscs, err = QdiscList(link) qdiscs, err = SafeQdiscList(link)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }

View File

@@ -32,7 +32,7 @@ func TestTbfAddDel(t *testing.T) {
if err := QdiscAdd(qdisc); err != nil { if err := QdiscAdd(qdisc); err != nil {
t.Fatal(err) t.Fatal(err)
} }
qdiscs, err := QdiscList(link) qdiscs, err := SafeQdiscList(link)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
@@ -55,7 +55,7 @@ func TestTbfAddDel(t *testing.T) {
if err := QdiscDel(qdisc); err != nil { if err := QdiscDel(qdisc); err != nil {
t.Fatal(err) t.Fatal(err)
} }
qdiscs, err = QdiscList(link) qdiscs, err = SafeQdiscList(link)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
@@ -90,7 +90,7 @@ func TestHtbAddDel(t *testing.T) {
t.Fatal(err) t.Fatal(err)
} }
qdiscs, err := QdiscList(link) qdiscs, err := SafeQdiscList(link)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
@@ -113,7 +113,7 @@ func TestHtbAddDel(t *testing.T) {
if err := QdiscDel(qdisc); err != nil { if err := QdiscDel(qdisc); err != nil {
t.Fatal(err) t.Fatal(err)
} }
qdiscs, err = QdiscList(link) qdiscs, err = SafeQdiscList(link)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
@@ -143,7 +143,7 @@ func TestPrioAddDel(t *testing.T) {
if err := QdiscAdd(qdisc); err != nil { if err := QdiscAdd(qdisc); err != nil {
t.Fatal(err) t.Fatal(err)
} }
qdiscs, err := QdiscList(link) qdiscs, err := SafeQdiscList(link)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
@@ -157,7 +157,7 @@ func TestPrioAddDel(t *testing.T) {
if err := QdiscDel(qdisc); err != nil { if err := QdiscDel(qdisc); err != nil {
t.Fatal(err) t.Fatal(err)
} }
qdiscs, err = QdiscList(link) qdiscs, err = SafeQdiscList(link)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
@@ -195,7 +195,7 @@ func TestTbfAddHtbReplaceDel(t *testing.T) {
if err := QdiscAdd(qdisc); err != nil { if err := QdiscAdd(qdisc); err != nil {
t.Fatal(err) t.Fatal(err)
} }
qdiscs, err := QdiscList(link) qdiscs, err := SafeQdiscList(link)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
@@ -224,7 +224,7 @@ func TestTbfAddHtbReplaceDel(t *testing.T) {
t.Fatal(err) t.Fatal(err)
} }
qdiscs, err = QdiscList(link) qdiscs, err = SafeQdiscList(link)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
@@ -248,7 +248,7 @@ func TestTbfAddHtbReplaceDel(t *testing.T) {
if err := QdiscDel(qdisc2); err != nil { if err := QdiscDel(qdisc2); err != nil {
t.Fatal(err) t.Fatal(err)
} }
qdiscs, err = QdiscList(link) qdiscs, err = SafeQdiscList(link)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
@@ -286,7 +286,7 @@ func TestTbfAddTbfChangeDel(t *testing.T) {
if err := QdiscAdd(qdisc); err != nil { if err := QdiscAdd(qdisc); err != nil {
t.Fatal(err) t.Fatal(err)
} }
qdiscs, err := QdiscList(link) qdiscs, err := SafeQdiscList(link)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
@@ -313,7 +313,7 @@ func TestTbfAddTbfChangeDel(t *testing.T) {
t.Fatal(err) t.Fatal(err)
} }
qdiscs, err = QdiscList(link) qdiscs, err = SafeQdiscList(link)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
@@ -337,7 +337,7 @@ func TestTbfAddTbfChangeDel(t *testing.T) {
if err := QdiscDel(qdisc); err != nil { if err := QdiscDel(qdisc); err != nil {
t.Fatal(err) t.Fatal(err)
} }
qdiscs, err = QdiscList(link) qdiscs, err = SafeQdiscList(link)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }