2.14. Тестирование и отладка | Tdg

Версия:

1.6 / 1.7
2. Руководство по эксплуатации 2.14. Тестирование и отладка

2.14. Тестирование и отладка

Web-интерфейс администратора предоставляет ряд инструментов для тестирования и отладки работоспособности системы. Они доступны на вкладках Model, Test, Graphql, Console и Code (последние две вкладки доступны только в режиме разработки).

2.14.1. Вкладка Model

Дает возможность загрузить в систему модель данных или проверить и отредактировать уже существующую.

../../_images/tab_model.png

Если в систему уже была загружена конфигурация вместе с моделью данных, в окне Request будет показана текущая модель.

Если необходимо, можно внести правки в модель и снова загрузить ее в систему, нажав Submit. При успешной обработке и загрузке, в качестве ответа от системы в окне Response будет отображена загруженная модель. В случае ошибки в окне Response будет выведено сообщение об ошибке.

2.14.2. Вкладка Test

На этой вкладке можно протестировать обработку системой входящего запроса.

Если система уже готова к работе (настроен кластер, определены роли экземпляров, загружена конфигурация системы и модель данных), в окно Request можно вставить текст запроса и отправить его, нажав Submit.

Запросы можно отправлять в формате JSON или SOAP XML, выбрав нужный формат переключателем в окне Request.

../../_images/tab_test.png

В окне 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.

../../_images/tab_graphql.png

Для работы с данными нужно использовать схему default (переключатель Select the desired scheme вверху страницы). Эта схема задана по умолчанию и используется для доступа к объектам.

Подробнее про запросы GraphQL см. в главе «Запросы к данным».

2.14.3.1. Пример

Рассмотрим GraphQL запросы и мутации для примера модели данных и тестового объекта, которые обсуждались ранее в разделе «Тестирование и отладка > Test». В предыдущем примере мы остановились на том, что в систему загружена модель данных и отправлен входящий запрос в формате JSON, в результате которого объект был корректно обработан и сохранен на роли storage.

  1. Запрос на получение объекта:

query {
  Person {
    passport_id
    first_name
    last_name
    birthday
    address {
      city
      street
      building
      apartment
    }
  }
}
  1. Мутация на вставку/изменение объекта и получение вставленного объекта:

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
    }
  }
}
  1. Мутация на удаление объекта и получение удаленного объекта:

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. В консоли доступно быстрое переключение между экземплярами.

../../_images/tab_console2.png

2.14.5. Вкладка Code

Примечание

Вкладка Code доступна только в режиме разработки.

Эта вкладка дает возможность работать с файлами, содержащими пользовательский код и конфигурацию системы, через web-интерфейс.

../../_images/tab_code.png
Нашли ответ на свой вопрос?
Обратная связь