Skip to content

Commit

Permalink
Test coverage
Browse files Browse the repository at this point in the history
  • Loading branch information
hknutzen committed Dec 20, 2024
1 parent 3d9483c commit fdd7edb
Show file tree
Hide file tree
Showing 4 changed files with 63 additions and 23 deletions.
15 changes: 7 additions & 8 deletions go/pkg/pass1/check-identical-services.go
Original file line number Diff line number Diff line change
Expand Up @@ -85,18 +85,17 @@ func (c *spoc) checkIdenticalServices(sRules *serviceRules) {
// Sort riList, because we use attributes of first element
// to build hash key from.
slices.SortFunc(riList, func(a, b *ruleInfo) int {
if a.deny != b.deny {
if a.deny {
cmpBool1 := func(a bool) int {
if a {
return -1
}
// Uncoverable, deny rules have been put in front of list.
//return 1
return 1
}
if a.deny != b.deny {
return cmpBool1(a.deny)
}
if a.objIsSrc != b.objIsSrc {
if !a.objIsSrc {
return -1
}
return 1
return cmpBool1(!a.objIsSrc)
}
return slices.Compare(a.names, b.names)
})
Expand Down
28 changes: 13 additions & 15 deletions go/pkg/pass2/cisco.go
Original file line number Diff line number Diff line change
Expand Up @@ -343,26 +343,24 @@ func moveRulesEspAh(
}
return cmp.Compare(a.Bits(), b.Bits())
}
hasLog = true
slices.SortStableFunc(rules, func(a, b *ciscoRule) int {
if a.deny && b.deny {
return 0
}
if a.deny {
return -1
}
if b.deny {
cmpBool := func(a, b bool) int {
if a == b {
return 0
}
if a {
return -1
}
return 1
}
if a.deny || b.deny {
return cmpBool(a.deny, b.deny)
}
sa := needSort(a)
sb := needSort(b)
if !sa && !sb {
return 0
}
if !sa {
return 1
}
if !sb {
return -1
if !sa || !sb {
return cmpBool(!sb, !sa)
}
if cmp := strings.Compare(a.prt.protocol, b.prt.protocol); cmp != 0 {
return cmp
Expand Down
21 changes: 21 additions & 0 deletions go/testdata/identical-services.t
Original file line number Diff line number Diff line change
Expand Up @@ -337,6 +337,27 @@ Warning: These services have identical rule definitions.
- service:s2
=OPTIONS=--check_identical_services=warn

############################################################
=TITLE=Changed order of equal rules (3)
=INPUT=
[[topo]]
service:s1 = {
user = network:n2;
deny src = host:h10; dst = user; prt = tcp 22;
permit src = network:n1; dst = user; prt = tcp 22;
}
service:s2 = {
user = interface:r1.n1;
permit src = network:n1; dst = user; prt = tcp 22;
deny src = host:h10; dst = user; prt = tcp 22;
}
=WARNING=
Warning: These services have identical rule definitions.
A single service should be created instead, with merged users.
- service:s1
- service:s2
=OPTIONS=--check_identical_services=warn --check_duplicate_rules=0

############################################################
=TITLE=Similar service, but changed src/dst
=INPUT=
Expand Down
22 changes: 22 additions & 0 deletions go/testdata/ipv6/identical-services_ipv6.t
Original file line number Diff line number Diff line change
Expand Up @@ -353,6 +353,28 @@ Warning: These services have identical rule definitions.
- service:s2
=OPTIONS=--check_identical_services=warn
############################################################
=TITLE=Changed order of equal rules (3)
=PARAMS=--ipv6
=INPUT=
[[topo]]
service:s1 = {
user = network:n2;
deny src = host:h10; dst = user; prt = tcp 22;
permit src = network:n1; dst = user; prt = tcp 22;
}
service:s2 = {
user = interface:r1.n1;
permit src = network:n1; dst = user; prt = tcp 22;
deny src = host:h10; dst = user; prt = tcp 22;
}
=WARNING=
Warning: These services have identical rule definitions.
A single service should be created instead, with merged users.
- service:s1
- service:s2
=OPTIONS=--check_identical_services=warn --check_duplicate_rules=0
############################################################
=TITLE=Similar service, but changed src/dst
=PARAMS=--ipv6
Expand Down

0 comments on commit fdd7edb

Please sign in to comment.