2.14. Тестирование и отладка¶
Web-интерфейс администратора предоставляет ряд инструментов для тестирования и отладки работоспособности системы. Они доступны на вкладках Model, Test, Graphql, Console и Code (последние две вкладки доступны только в режиме разработки).
2.14.1. Вкладка Model¶
Дает возможность загрузить в систему модель данных или проверить и отредактировать уже существующую.
 
Если в систему уже была загружена конфигурация вместе с моделью данных, в окне Request будет показана текущая модель.
Если необходимо, можно внести правки в модель и снова загрузить ее в систему, нажав Submit. При успешной обработке и загрузке, в качестве ответа от системы в окне Response будет отображена загруженная модель. В случае ошибки в окне Response будет выведено сообщение об ошибке.
2.14.2. Вкладка Test¶
На этой вкладке можно протестировать обработку системой входящего запроса.
Если система уже готова к работе (настроен кластер, определены роли экземпляров, загружена конфигурация системы и модель данных), в окно Request можно вставить текст запроса и отправить его, нажав Submit.
Запросы можно отправлять в формате JSON или SOAP XML, выбрав нужный формат переключателем в окне Request.
 
В окне Response выводится ответ от соответствующего модуля системы, отвечающего за прием и первоначальную обработку (parsing) запроса. В случае ошибки синтаксиса запроса, выводится сообщение об ошибке. Если запрос корректен, выдается ответ «ОК».
Ответ «ОК» означает, что запрос успешно обработан на роли connector и
отправлен дальше на обработку на роль input_processor. Был ли запрос успешно
обработан далее и сохранен в системе — нужно проверить дополнительно. Прежде
всего нужно проверить ремонтную очередь: в случае ошибок
обработки объект окажется там и не будет сохранен в систем. В этом случае можно
проанализировать ошибки и внести коррективы в сам запрос и/или его обработчики.
Если ремонтная очередь пустая, значит объект успешно обработан и сохранен.
Проверить это можно, используя другие средства отладки, в частности отправив GraphQL-запрос.
2.14.2.1. Пример¶
Ниже приведен пример описания модели данных и входящего запроса (объекта) для этой модели. Подробнее о модели данных для приложения TDG см. раздел «Разработка доменной модели».
Модель:
[
    {
        "name": "Address",
        "type": "record",
        "logicalType": "ValueObject",
        "doc": "Адрес",
        "fields": [
            {"name": "city", "type": "string"},
            {"name": "street", "type": "string"},
            {"name": "building", "type": "string"},
            {"name": "apartment", "type": "int"}
        ]
    },
    {"type": "record",
     "name": "Person",
     "logicalType": "Aggregate",
     "doc":"Человек",
     "fields": [
         {"name": "passport_id", "type": "string"},
         {"name": "first_name", "type": "string"},
         {"name": "last_name", "type": "string"},
         {"name": "address", "type": "Address"},
         {"name": "birthday", "type": {"type": "string", "logicalType": "Date"}},
         {"name": "age", "type":["null", "int"]}
     ],
     "indexes": ["passport_id"]
    }
]
Объект в формате JSON для отправки входящего тестового запроса:
{
  "Person": {
      "passport_id": "7519 123456",
      "first_name": "Petr",
      "last_name": "Petrov",
      "birthday": "1980-01-01Z",
      "address": {
        "city": "Moscow",
        "street": "Tverskaya",
        "building": "23a",
        "apartment": 10
      }
  }
}
2.14.3. Вкладка Graphql¶
На этой вкладке доступна встроенная утилита GraphiQL,
с помощью которой можно писать, валидировать и отправлять в систему запросы
(query) и мутации (mutation) на языке запросов GraphQL.
 
Для работы с данными нужно использовать схему default (переключатель
Select the desired scheme вверху страницы). Эта схема задана по умолчанию и
используется для доступа к объектам.
Подробнее про запросы GraphQL см. в главе «Запросы к данным».
2.14.3.1. Пример¶
Рассмотрим GraphQL запросы и мутации для примера модели данных и тестового
объекта, которые обсуждались ранее в разделе «Тестирование и отладка > Test».
В предыдущем примере мы остановились на том, что в систему загружена модель
данных и отправлен входящий запрос в формате JSON, в результате которого объект
был корректно обработан и сохранен на роли storage.
- Запрос на получение объекта: 
query {
  Person {
    passport_id
    first_name
    last_name
    birthday
    address {
      city
      street
      building
      apartment
    }
  }
}
- Мутация на вставку/изменение объекта и получение вставленного объекта: 
mutation {
  Person(insert:{passport_id:"7519 123456"
                 first_name:"Petr"
                 last_name:"Petrov"
                 birthday:"1980-01-01Z"
                 address:{
                  city:"Moscow"
                  street:"Tverskaya"
                  building:"23a"
                  apartment:10
                 }
                }
  )
  {
    passport_id
    first_name
    last_name
    birthday
    address {
      city
      street
      building
      apartment
    }
  }
}
- Мутация на удаление объекта и получение удаленного объекта: 
mutation {
  Person(passport_id:"7519 123456" delete:true){
    passport_id
    first_name
    last_name
    birthday
    address {
      city
      street
      building
      apartment
    }
  }
}
2.14.4. Вкладка Console¶
Примечание
Вкладка Console доступна только в режиме разработки.
На этой вкладке находится консоль для доступа к экземплярам Tarantool, которая позволяет выполнять все действия, описанные в основной документации по Tarantool. В консоли доступно быстрое переключение между экземплярами.
 
2.14.5. Вкладка Code¶
Примечание
Вкладка Code доступна только в режиме разработки.
Эта вкладка дает возможность работать с файлами, содержащими пользовательский код и конфигурацию системы, через web-интерфейс.
