mirror of
https://github.com/slackhq/nebula.git
synced 2026-08-15 09:57:00 +02:00
silly optimization
This commit is contained in:
@@ -102,6 +102,57 @@ func TestTypeMap(t *testing.T) {
|
||||
}, subTypeMap)
|
||||
}
|
||||
|
||||
// mapIsValidSubType is the pre-refactor, map-driven definition of a valid
|
||||
// subtype. IsValidSubType was reimplemented as an explicit switch; this keeps
|
||||
// the original behavior around so we can prove the switch is equivalent to it.
|
||||
func mapIsValidSubType(t MessageType, s MessageSubType) bool {
|
||||
if n, ok := subTypeMap[t]; ok {
|
||||
if _, ok := (*n)[s]; ok {
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
func TestIsValidSubType(t *testing.T) {
|
||||
// Explicit intent table: documents exactly which subtypes are valid so the
|
||||
// test stays meaningful even if both the switch and subTypeMap change.
|
||||
assert.True(t, IsValidSubType(Message, MessageNone))
|
||||
assert.True(t, IsValidSubType(Message, MessageRelay))
|
||||
assert.False(t, IsValidSubType(Message, 2))
|
||||
|
||||
assert.True(t, IsValidSubType(Handshake, HandshakeIXPSK0))
|
||||
// HandshakeXXPSK0 is defined but not a wire-valid subtype.
|
||||
assert.False(t, IsValidSubType(Handshake, HandshakeXXPSK0))
|
||||
|
||||
assert.True(t, IsValidSubType(Test, TestRequest))
|
||||
assert.True(t, IsValidSubType(Test, TestReply))
|
||||
assert.False(t, IsValidSubType(Test, 2))
|
||||
|
||||
// These types only ever carry subtype 0.
|
||||
for _, mt := range []MessageType{Control, CloseTunnel, RecvError, LightHouse} {
|
||||
assert.True(t, IsValidSubType(mt, 0), "type %d subtype 0 should be valid", mt)
|
||||
assert.False(t, IsValidSubType(mt, 1), "type %d subtype 1 should be invalid", mt)
|
||||
}
|
||||
|
||||
// Unknown/unassigned types are never valid.
|
||||
assert.False(t, IsValidSubType(99, 0))
|
||||
|
||||
// Exhaustive proof of equivalence with the original map-driven logic across
|
||||
// the entire (type, subtype) input space.
|
||||
for ti := 0; ti <= 0xff; ti++ {
|
||||
for si := 0; si <= 0xff; si++ {
|
||||
mt, mst := MessageType(ti), MessageSubType(si)
|
||||
assert.Equalf(t, mapIsValidSubType(mt, mst), IsValidSubType(mt, mst),
|
||||
"IsValidSubType(%d, %d) diverged from map-driven definition", ti, si)
|
||||
}
|
||||
}
|
||||
|
||||
// H method must delegate to the package function.
|
||||
assert.True(t, (&H{Type: Test, Subtype: TestReply}).IsValidSubType())
|
||||
assert.False(t, (&H{Type: Handshake, Subtype: HandshakeXXPSK0}).IsValidSubType())
|
||||
}
|
||||
|
||||
func TestHeader_String(t *testing.T) {
|
||||
assert.Equal(
|
||||
t,
|
||||
|
||||
Reference in New Issue
Block a user