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

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

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

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

2.12.1. Model

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

../_images/tab_model.png

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

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

2.12.2. Test

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

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

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

../_images/tab_test.png

В окне Response выводится ответ от соответствующего модуля системы, отвечающего за прием и первоначальную обработку (parsing) запроса. В случае ошибки синтаксиса запроса, выводится сообщение об ошибке. Если запрос корректен, выдается ответ «ОК».

Ответ «ОК» означает, что запрос успешно обработан на роли connector и отправлен дальше на обработку на роль input_processor. Был ли запрос успешно обработан далее и сохранен в системе — нужно проверить дополнительно. Прежде всего нужно проверить ремонтную очередь: в случае ошибок обработки объект окажется там и не будет сохранен в систем. В этом случае можно проанализировать ошибки и внести коррективы в сам запрос и/или его обработчики. Если ремонтная очередь пустая, значит объект успешно обработан и сохранен. Проверить это можно, используя другие средства отладки, в частности отправив GraphQL-запрос.

2.12.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.12.3. Graphql

На этой вкладке доступна встроенная утилита GraphiQL, с помощью которой можно писать, валидировать и отправлять в систему запросы (query) и мутации (mutation) на языке запросов GraphQL.

../_images/tab_graphql.png

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

2.12.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.12.4. Console

На этой вкладке находится консоль для доступа к инстансам Tarantool, которая позволяет выполнять все действия, описанные в основной документации по Tarantool

В консоле доступно быстрое переключение между инстансами.

../_images/tab_console.png