add: initial evs support

This commit is contained in:
Istvan Ruzman
2022-02-21 16:36:52 +01:00
parent 10d7f0b7f4
commit d970df0dd7
4 changed files with 152 additions and 99 deletions

View File

@@ -40,44 +40,6 @@ ATTRIBUTE RFC-SPACE-TAGGED-COMBOIP 114 comboip has_tag
ATTRIBUTE RFC-SPACE-TAGGED-IFID 115 ifid has_tag
ATTRIBUTE RFC-SPACE-TAGGED-ETHER 116 ether has_tag
# TODO How are EVS meant to be specified?
# ATTRIBUTE VENDOR10-EVS-TYPE-STRING 19.21.1234.1 string
# ATTRIBUTE VENDOR10-EVS-TYPE-OCTETS 19.21.1234.2 octets
# ATTRIBUTE VENDOR10-EVS-TYPE-DATE 19.21.1234.3 date
# ATTRIBUTE VENDOR10-EVS-TYPE-ABINARY 19.21.1234.4 abinary
# ATTRIBUTE VENDOR10-EVS-TYPE-BYTE 19.21.1234.5 byte
# ATTRIBUTE VENDOR10-EVS-TYPE-SHORT 19.21.1234.6 short
# ATTRIBUTE VENDOR10-EVS-TYPE-INTEGER 19.21.1234.7 integer
# ATTRIBUTE VENDOR10-EVS-TYPE-SIGNED 19.21.1234.8 signed
# ATTRIBUTE VENDOR10-EVS-TYPE-INTEGER64 19.21.1234.9 integer64
# ATTRIBUTE VENDOR10-EVS-TYPE-IPADDR 19.21.1234.10 ipaddr
# ATTRIBUTE VENDOR10-EVS-TYPE-IPV4PREFIX 19.21.1234.11 ipv4prefix
# ATTRIBUTE VENDOR10-EVS-TYPE-IPV6ADDR 19.21.1234.12 ipv6addr
# ATTRIBUTE VENDOR10-EVS-TYPE-IPV6PREFIX 19.21.1234.13 ipv6prefix
# ATTRIBUTE VENDOR10-EVS-TYPE-COMBOIP 19.21.1234.14 comboip
# ATTRIBUTE VENDOR10-EVS-TYPE-IFID 19.21.1234.15 ifid
# ATTRIBUTE VENDOR10-EVS-TYPE-ETHER 19.21.1234.16 ether
# ATTRIBUTE VENDOR10-EVS-TYPE-TLV 19.21.1234.18 tlv
#
# ATTRIBUTE VENDOR10-LONG-EVS-TYPE-STRING 20.21.1234.1 string
# ATTRIBUTE VENDOR10-LONG-EVS-TYPE-OCTETS 20.21.1234.2 octets
# ATTRIBUTE VENDOR10-LONG-EVS-TYPE-DATE 20.21.1234.3 date
# ATTRIBUTE VENDOR10-LONG-EVS-TYPE-ABINARY 20.21.1234.4 abinary
# ATTRIBUTE VENDOR10-LONG-EVS-TYPE-BYTE 20.21.1234.5 byte
# ATTRIBUTE VENDOR10-LONG-EVS-TYPE-SHORT 20.21.1234.6 short
# ATTRIBUTE VENDOR10-LONG-EVS-TYPE-INTEGER 20.21.1234.7 integer
# ATTRIBUTE VENDOR10-LONG-EVS-TYPE-SIGNED 20.21.1234.8 signed
# ATTRIBUTE VENDOR10-LONG-EVS-TYPE-INTEGER64 20.21.1234.9 integer64
# ATTRIBUTE VENDOR10-LONG-EVS-TYPE-IPADDR 20.21.1234.10 ipaddr
# ATTRIBUTE VENDOR10-LONG-EVS-TYPE-IPV4PREFIX 20.21.1234.11 ipv4prefix
# ATTRIBUTE VENDOR10-LONG-EVS-TYPE-IPV6ADDR 20.21.1234.12 ipv6addr
# ATTRIBUTE VENDOR10-LONG-EVS-TYPE-IPV6PREFIX 20.21.1234.13 ipv6prefix
# ATTRIBUTE VENDOR10-LONG-EVS-TYPE-COMBOIP 20.21.1234.14 comboip
# ATTRIBUTE VENDOR10-LONG-EVS-TYPE-IFID 20.21.1234.15 ifid
# ATTRIBUTE VENDOR10-LONG-EVS-TYPE-ETHER 20.21.1234.16 ether
# ATTRIBUTE VENDOR10-LONG-EVS-TYPE-TLV 20.21.1234.18 tlv
VENDOR TEST10 1234 format=1,0
BEGIN-VENDOR TEST10
@@ -118,6 +80,47 @@ ATTRIBUTE VENDOR10-TAGGED-ETHER 116 ether has_tag
END-VENDOR TEST10
BEGIN-VENDOR TEST10 format=RFC-SPACE-TYPE-EVS
ATTRIBUTE VENDOR10-EVS-TYPE-STRING 19.21.1234.1 string
ATTRIBUTE VENDOR10-EVS-TYPE-OCTETS 19.21.1234.2 octets
ATTRIBUTE VENDOR10-EVS-TYPE-DATE 19.21.1234.3 date
ATTRIBUTE VENDOR10-EVS-TYPE-ABINARY 19.21.1234.4 abinary
ATTRIBUTE VENDOR10-EVS-TYPE-BYTE 19.21.1234.5 byte
ATTRIBUTE VENDOR10-EVS-TYPE-SHORT 19.21.1234.6 short
ATTRIBUTE VENDOR10-EVS-TYPE-INTEGER 19.21.1234.7 integer
ATTRIBUTE VENDOR10-EVS-TYPE-SIGNED 19.21.1234.8 signed
ATTRIBUTE VENDOR10-EVS-TYPE-INTEGER64 19.21.1234.9 integer64
ATTRIBUTE VENDOR10-EVS-TYPE-IPADDR 19.21.1234.10 ipaddr
ATTRIBUTE VENDOR10-EVS-TYPE-IPV4PREFIX 19.21.1234.11 ipv4prefix
ATTRIBUTE VENDOR10-EVS-TYPE-IPV6ADDR 19.21.1234.12 ipv6addr
ATTRIBUTE VENDOR10-EVS-TYPE-IPV6PREFIX 19.21.1234.13 ipv6prefix
ATTRIBUTE VENDOR10-EVS-TYPE-COMBOIP 19.21.1234.14 comboip
ATTRIBUTE VENDOR10-EVS-TYPE-IFID 19.21.1234.15 ifid
ATTRIBUTE VENDOR10-EVS-TYPE-ETHER 19.21.1234.16 ether
ATTRIBUTE VENDOR10-EVS-TYPE-TLV 19.21.1234.18 tlv
END-VENDOR
BEGIN-VENDOR TEST10 format=RFC-SPACE-TYPE-EVS
ATTRIBUTE VENDOR10-LONG-EVS-TYPE-STRING 20.21.1234.1 string
ATTRIBUTE VENDOR10-LONG-EVS-TYPE-OCTETS 20.21.1234.2 octets
ATTRIBUTE VENDOR10-LONG-EVS-TYPE-DATE 20.21.1234.3 date
ATTRIBUTE VENDOR10-LONG-EVS-TYPE-ABINARY 20.21.1234.4 abinary
ATTRIBUTE VENDOR10-LONG-EVS-TYPE-BYTE 20.21.1234.5 byte
ATTRIBUTE VENDOR10-LONG-EVS-TYPE-SHORT 20.21.1234.6 short
ATTRIBUTE VENDOR10-LONG-EVS-TYPE-INTEGER 20.21.1234.7 integer
ATTRIBUTE VENDOR10-LONG-EVS-TYPE-SIGNED 20.21.1234.8 signed
ATTRIBUTE VENDOR10-LONG-EVS-TYPE-INTEGER64 20.21.1234.9 integer64
ATTRIBUTE VENDOR10-LONG-EVS-TYPE-IPADDR 20.21.1234.10 ipaddr
ATTRIBUTE VENDOR10-LONG-EVS-TYPE-IPV4PREFIX 20.21.1234.11 ipv4prefix
ATTRIBUTE VENDOR10-LONG-EVS-TYPE-IPV6ADDR 20.21.1234.12 ipv6addr
ATTRIBUTE VENDOR10-LONG-EVS-TYPE-IPV6PREFIX 20.21.1234.13 ipv6prefix
ATTRIBUTE VENDOR10-LONG-EVS-TYPE-COMBOIP 20.21.1234.14 comboip
ATTRIBUTE VENDOR10-LONG-EVS-TYPE-IFID 20.21.1234.15 ifid
ATTRIBUTE VENDOR10-LONG-EVS-TYPE-ETHER 20.21.1234.16 ether
ATTRIBUTE VENDOR10-LONG-EVS-TYPE-TLV 20.21.1234.18 tlv
END-VENDOR
VENDOR TEST11 1235 format=1,1
BEGIN-VENDOR TEST11

View File

@@ -119,7 +119,8 @@ def test_valid_attribute_numbers(number):
@pytest.mark.parametrize(
"invalid_number", ["1000", "ABCD", "-1", "inf", "INF", "-INF", "2e4", "2.5e3"],
"invalid_number",
["1000", "ABCD", "-1", "inf", "INF", "-INF", "2e4", "2.5e3"],
)
def test_invalid_attribute_numbers(invalid_number):
dictionary = StringIO(f"ATTRIBUTE NAME {invalid_number} integer64")
@@ -247,7 +248,6 @@ def test_value_number_out_of_limit(value_num, attr_type):
"tlv",
"extended",
"long-extended",
"evs",
],
)
def test_all_datatypes_rfc_space(datatype):
@@ -255,6 +255,11 @@ def test_all_datatypes_rfc_space(datatype):
Dictionary("", dictionary)
def test_evs_datatype():
dictionary = StringIO("ATTRIBUTE TEST-ATTRIBUTE 1.10 evs\n")
Dictionary("", dictionary)
@pytest.mark.parametrize(
"datatype",
[
@@ -299,7 +304,8 @@ def test_invalid_datatypes_in_vendor_space(datatype):
@pytest.mark.parametrize(
"invalid_number", ["ABCD", "-1", "inf", "INF", "-INF", "0.1", "2e4", "2.5e3"],
"invalid_number",
["ABCD", "-1", "inf", "INF", "-INF", "0.1", "2e4", "2.5e3"],
)
def test_invalid_value_numbers(invalid_number):
dictionary = StringIO(
@@ -401,3 +407,16 @@ def test_get_nonexisting_attributes_from_dictionaries(attribute):
dd = Dictionary("", dictionary)
with pytest.raises(KeyError):
_ = dd[attribute]
def test_extended_evs():
dictionary = StringIO(
"ATTRIBUTE RFC-EXTENDED 10 extended\n"
"ATTRIBUTE RFC-EXTENDED-EVS 10.20 evs\n"
"VENDOR TEST-VENDOR 1234\n"
"BEGIN-VENDOR TEST-VENDOR format=RFC-EXTENDED-EVS\n"
"ATTRIBUTE VENDOR-ATTRIBUTE 10 integer\n"
"END-VENDOR TEST-VENDOR"
)
dd = Dictionary("", dictionary)
assert dd["VENDOR-ATTRIBUTE"].code == [10, 20, 10]