Я пытаюсь создать автоматизированные интеграционные тесты для этого предмета тестирования аппаратного и программного обеспечения, который запускает агент SNMP в качестве командного интерфейса. Наша тестовая установка выглядит следующим образом: мы используем Fitnesse в качестве средства запуска тестов и PyFit, чтобы иметь возможность писать тесты на Python. Затем мы используем netsnmp с привязками Python для отправки команд SNMP. Это работает очень хорошо.
Однако, когда я пытаюсь запустить пакет, агент SNMP (испытуемый) перезапускается (и обычно в другое смоделированное время), из-за чего внутренние компоненты netsnmp получают всевозможные интересные ошибки.
Оказывается, в библиотеке netsnmp хранится много глобального состояния, такого как имена сообщества и контекста, а также проблемные EngineTime и EngineBootCnt, которые используются для предотвращения повторных атак в SNMP v3. Это приводит к тому, что агент отклоняет мои команды snmp.
Моя проблема заключается в том, как повторно инициализировать библиотеку netsnmp (из привязок Python) таким образом, чтобы сбрасывалось внутреннее глобальное состояние? Объект netsnmp.Session в привязках Python принимает параметры EngineTime и EngineBoots, и установка для них значения 0 должна сбросить их, но на самом деле, похоже, этого не происходит. Я также не знаю, есть ли там другое глобальное состояние, которое нужно сбросить.
Я нахожусь в такой ситуации, когда думаю, что мне нужно переписать тесты, чтобы использовать чистую библиотеку python snmp pysnmp, но я надеялся избежать этого.