Skip to content

Commit

Permalink
Raise parsing exception and check it in tests
Browse files Browse the repository at this point in the history
  • Loading branch information
dupondje committed Apr 12, 2023
1 parent ae8a2ba commit b1c6452
Show file tree
Hide file tree
Showing 7 changed files with 27 additions and 7 deletions.
4 changes: 3 additions & 1 deletion dsmr_parser/parsers.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ def __init__(self, telegram_specification, apply_checksum_validation=True):
for signature in self.telegram_specification['objects'].keys()
}

def parse(self, telegram_data, encryption_key="", authentication_key=""): # noqa: C901
def parse(self, telegram_data, encryption_key="", authentication_key="", throw_ex=False): # noqa: C901
"""
Parse telegram from string to dict.
The telegram str type makes python 2.x integration easier.
Expand Down Expand Up @@ -96,6 +96,8 @@ def parse(self, telegram_data, encryption_key="", authentication_key=""): # noq
except Exception:
logger.error("ignore line with signature {}, because parsing failed.".format(signature),
exc_info=True)
if throw_ex:
raise
else:
telegram.add(obis_reference=signature, dsmr_object=dsmr_object)

Expand Down
5 changes: 4 additions & 1 deletion test/test_parse_fluvius.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,10 @@ class TelegramParserFluviusTest(unittest.TestCase):

def test_parse(self):
parser = TelegramParser(telegram_specifications.BELGIUM_FLUVIUS)
result = parser.parse(TELEGRAM_FLUVIUS_V171)
try:
result = parser.parse(TELEGRAM_FLUVIUS_V171, throw_ex=True)
except Exception as ex:
assert False, f"parse trigged an exception {ex}"

# BELGIUM_VERSION_INFORMATION (0-0:96.1.4)
assert isinstance(result[obis.BELGIUM_VERSION_INFORMATION], CosemObject)
Expand Down
5 changes: 4 additions & 1 deletion test/test_parse_iskra_ie.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,10 @@ class TelegramParserIskraIETest(unittest.TestCase):

def test_parse(self):
parser = TelegramParser(telegram_specifications.ISKRA_IE)
result = parser.parse(TELEGRAM_ISKRA_IE)
try:
result = parser.parse(TELEGRAM_ISKRA_IE, throw_ex=True)
except Exception as ex:
assert False, f"parse trigged an exception {ex}"

# EQUIPMENT_IDENTIFIER_GAS (0-0:96.1.0)
assert isinstance(result[obis.EQUIPMENT_IDENTIFIER_GAS], CosemObject)
Expand Down
5 changes: 4 additions & 1 deletion test/test_parse_v2_2.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,10 @@ class TelegramParserV2_2Test(unittest.TestCase):

def test_parse(self):
parser = TelegramParser(telegram_specifications.V2_2)
result = parser.parse(TELEGRAM_V2_2)
try:
result = parser.parse(TELEGRAM_V2_2, throw_ex=True)
except Exception as ex:
assert False, f"parse trigged an exception {ex}"

# ELECTRICITY_USED_TARIFF_1 (1-0:1.8.1)
assert isinstance(result[obis.ELECTRICITY_USED_TARIFF_1], CosemObject)
Expand Down
5 changes: 4 additions & 1 deletion test/test_parse_v3.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,10 @@ class TelegramParserV3Test(unittest.TestCase):

def test_parse(self):
parser = TelegramParser(telegram_specifications.V3)
result = parser.parse(TELEGRAM_V3)
try:
result = parser.parse(TELEGRAM_V3, throw_ex=True)
except Exception as ex:
assert False, f"parse trigged an exception {ex}"

# ELECTRICITY_USED_TARIFF_1 (1-0:1.8.1)
assert isinstance(result[obis.ELECTRICITY_USED_TARIFF_1], CosemObject)
Expand Down
5 changes: 4 additions & 1 deletion test/test_parse_v4_2.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,10 @@ class TelegramParserV4_2Test(unittest.TestCase):

def test_parse(self):
parser = TelegramParser(telegram_specifications.V4)
result = parser.parse(TELEGRAM_V4_2)
try:
result = parser.parse(TELEGRAM_V4_2, throw_ex=True)
except Exception as ex:
assert False, f"parse trigged an exception {ex}"

# P1_MESSAGE_HEADER (1-3:0.2.8)
assert isinstance(result[obis.P1_MESSAGE_HEADER], CosemObject)
Expand Down
5 changes: 4 additions & 1 deletion test/test_parse_v5.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,10 @@ class TelegramParserV5Test(unittest.TestCase):

def test_parse(self):
parser = TelegramParser(telegram_specifications.V5)
telegram = parser.parse(TELEGRAM_V5)
try:
telegram = parser.parse(TELEGRAM_V5, throw_ex=True)
except Exception as ex:
assert False, f"parse trigged an exception {ex}"

# P1_MESSAGE_HEADER (1-3:0.2.8)
assert isinstance(telegram.P1_MESSAGE_HEADER, CosemObject)
Expand Down

0 comments on commit b1c6452

Please sign in to comment.