Я пытаюсь создать автоматизированные интеграционные тесты для этого субъекта аппаратного и программного тестирования, который запускает агент 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, ноЯ надеялся избежать этого.