Skip to content

maxf9/MegacoTester

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

79 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MegacoTester

Генератор и валидатор трафика протокола Megaco. Инструмент для автоматизированного тестирования.

Установка зависимостей

pip3 install jsonschema lxml scapy

Проведение автоматизированного тестирования

Для запуска MegacoTester требуется запустить его файл main.py с конфигурационным файлом формата json, описывающим структуру стенда тестирования и одним или несколькими файлами с тестовыми сценариями (оформляются в формате xml):

main.py -c config.json -t scenario1.xml scenario2.xml

Структура конфигурационного файла стенда тестирования

Пример конфигурационного файла:


    "LogDirectory" : "/home/admin/",
    "Nodes" : [
        {
             "id" : 0,
             "name" : "Call Agent",
             "ip_address" : "192.168.0.137",
             "port" : 2944,
             "encoding" : "full_text"
        },
        {
             "id" : 1,
             "name" : "TAU-36.IP",
             "ip_address" : "192.168.0.173",
             "port" : 2944,
             "mid" : "tau36",
             "encoding" : "full_text"
        }
    ],
    "Connections" : [
         {
              "id" : 0,
              "name" : "Link between Call Agent and TAU-36.IP",
              "from_node" : 0,
              "to_node" : 1
         }
     ]


Параметр LogDirectory указывает путь к директории, в которую будут выводиться результаты работы утилиты. В секции Nodes приводятся характеристики сетевых узлов стенда, между которыми будет вестись обмен сообщениями по протоколу Megaco/H.248. Секция Connections описывает взаимосвязи между сетевыми узлами, объявленными в секции Nodes. В данном случае имеем один линк между сервером Call Agent и абонентским шлюзом TAU-36.IP.

Структура файла тестового сценария

Пример оформления сценария регистрации шлюза Megaco на устройстве Call Agent:

<scenario name="TP_MG_AM_BV_01">

  <recv connection="0" timeout="5000">
    <actions>
      <catch regexp="MEGACO/1\s*([A-Za-z0-9/_]+)" assign_to="gw_name"/>
      <catch regexp="Transaction\s*=\s*(\d+)" assign_to="transaction_id"/>
      <catch regexp="Context\s*=\s*([0-9-\$\*]+)" assign_to="context_id"/>
      <catch regexp="ServiceChange\s*=\s*([A-Za-z0-9_/\-\$\*]+)" assign_to="termination_id"/>
      <catch regexp="Method\s*=\s*([A-Za-z]+)" assign_to="method"/>
    </actions>
  </recv>

  <nop>
  	<actions>
  	  <compare first="[$gw_name],[$context_id],[$termination_id],[$method]" second="[$$Nodes.1.mid],-,ROOT,Restart">
  	    <exit status="failure" info="Test is unsuccessfully completed"/>
  	  </compare>
  	</actions>
  </nop>

  <send connection="0">
  <![CDATA[
    MEGACO/1 [$$Nodes.0.mid]
    Reply = [$transaction_id] { Context = [$context_id] { ServiceChange = [$termination_id] } }
   ]]>
   </send>

</scenario>

Алгоритм тестового сценария описывается в теле инструкции scenario и состоит из трех последовательных действий:

  1. recv – прием сообщения Megaco/H.248 из соединения с идентификатором "0" в течение 5000 мс. Данная инструкция содержит блок actions, внутри которого описаны действия выделения из принятого текстового сообщения данных, необходимых для его валидации согласно требованиям тестового кейса. Информационные элементы сообщения, выделенные посредством синтаксиса регулярных выражений, записываются в переменные локального пространства имен для последующего использования.
  2. nop – описывает последовательность действий, не связанных с протоколом Megaco/H.248. В данном случае, включает инструкцию compare, которая используется для сравнения информационных элементов принятого сообщения со значениями, определенными требованиями тестового кейса. В случае, если это равенство не достигается, осуществляется завершение работы тестового сценария со статусом ошибки.
  3. send – формирование и отправка ответа на запрос ServiceChange, подтверждающая успешное выполнение тестового сценария.

Результаты работы утилиты

По завершении выполнения тестовых сценариев приложение MegacoTester создает внутри директории, указанной в параметре LogDirectory конфигурационного файла, каталог с результатами своей работы. Имя каталога формируется согласно следующему шаблону:

  • MegacoTester_Results_dd.mm.yyyy_xxh-yym-zzs, где dd.mm.yyyy – дата, в которой dd - день месяца, mm - номер месяца, yyyy - номер года.

В данную директорию записываются:

  1. Лог работы синтаксического анализатора тестовых сценариев, записанный в файле Test_Parser.log. В нем содержится информация о парсинге каждого тестового сценария и статус выполнения данной операции.
  2. Логи выполнения инструкций тестовых сценариев, которые записываются в подкаталог Log. Имя файла тестового лога формируется по следующему шаблону:
  • Test_n_name.log, где n - номер теста в порядке его исполнения приложением, name - имя теста, описанное в сценарии.
  1. Дампы сетевого трафика для каждого тестового сценария, которые записываются в подкаталог Dump в формате pcap.

About

Test tool for Megaco protocol

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages