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-интерфейс.
