def asdu_received_handler(self, parameter, ioa, asdu): asdu_type = iec60870.CS101_ASDU_getTypeID(asdu) asdu_len = iec60870.CS101_ASDU_getNumberOfElements(asdu) for idx in range(asdu_len): io = iec60870.CS101_ASDU_getElement(asdu, idx) ioa = iec60870.InformationObject_getObjectAddress(io) if asdu_type == IEC608705TypeID.M_SP_NA_1.value: value = iec60870.SinglePointInformation_getValue(io) quality = iec60870.SinglePointInformation_getQuality(io) iec60870.SinglePointInformation_destroy(io) if asdu_type == IEC608705TypeID.M_ME_NC_1.value: value = iec60870.MeasuredValueShort_getValue(io) quality = iec60870.MeasuredValueShort_getQuality(io) iec60870.MeasuredValueShort_destroy(io) self.storage.update(Tag(ioa, asdu_type, value, quality)) return True
def test_overparams(self): """ Проверка на превышение параметров """ try: tag = Tag(1, 2, 3, 4, 5, 6) except Exception as e: self.assertRaises(TypeError, e)
def test_istagobject(self): """ создаем тег с параметрами, проверяем что они не None """ tag = Tag(1, 2) self.assertIsNotNone(tag) self.assertTrue(tag.validate()) self.assertIsInstance(tag, Tag)
def test_validation(self): """ Валидируем на отсутствие/присутствие none """ self.assertTrue(Tag(1, 2).validate()) self.assertFalse(Tag(None, None).validate())
def test_okparams(self): """ Создаем тег с параметрами. Должен создаться """ self.assertNotIsInstance(Tag(1, 2), TypeError) self.assertIsInstance(Tag(1, 2), Tag)
def test_noparams(self): """ Создаем тег без параметров. не должно создаться. """ try: tag = Tag() except Exception as e: self.assertRaises(TypeError, e)
def test_checkadded(self): """ Валидируем то что добавили """ tag = Tag(1, 2) storage = ClientStorage() storage.add(tag) self.assertEqual(tag, storage.get(tag.ioa))
def test_add(self): """ Создаем тег и добавляем """ tag = Tag(1, 2) storage = ClientStorage() self.assertTrue(storage.add(tag))