Тестируйте интегрирование данных клиента с MATLAB

В этом примере показано, как протестировать RESTful API или Java® клиент для развертывания на MATLAB® Production Server™ с использованием интерфейса проверки в приложении Production Server Compiler. В целях проверки вы создадите и используйте функцию MATLAB, называемую addmatrix который принимает две числовые матрицы как входы и возвращает их сумму как выходную.

Доступ к проверке можно получить, нажав кнопку Test Client в приложении Production Server Compiler. Приложение Production Server Compiler является частью MATLAB Compiler SDK™.

Создайте функцию MATLAB

  1. Написание функции MATLAB, вызываемой addmatrix который принимает две числовые матрицы как входы и возвращает их сумму как выходную. Сохраните этот файл как addmatrix.m.

     addmatrix.m

  2. Протестируйте функцию в командной строке MATLAB.

    a = [10 20 30; 40 50 60];
    b = [100 200 300; 400 500 600];
    c = addmatrix(a,b)
    c =
    
       110   220   330
       440   550   660

Подготовьтесь к проверке

  1. Откройте приложение Production Server Compiler, набрав в командной строке MATLAB следующее:

    productionServerCompiler

  2. В Type разделе панели инструментов выберите Deployable Archive (.ctf) из списка.

  3. Укажите функции MATLAB для развертывания.

    1. В Exported Functions разделе панели инструментов нажмите кнопку «плюс».

    2. Используя обозреватель файлов, найдите и выберите addmatrix.m файл.

  4. В разделе под названием Include MATLAB function signature file нажмите кнопку Create File. Это создаст редактируемый файл JSON, содержащий сигнатуры функций, включенных в архив. При редактировании этого файла можно задать типы аргументов и/или размеры входных и выходных входов, а также предоставить справочную информацию для каждого из входов. Для получения дополнительной информации смотрите Функцию MATLAB Сигнатуры в JSON (MATLAB Production Server).

    Если у вас есть существующий файл JSON с сигнатурами функции, нажмите кнопку Add Existing File, чтобы добавить этот файл вместо кнопки Create File.

    Путем включения этой информации в архив можно использовать функцию службы обнаружения на сервере.

    Примечание

    Только MATLAB Production Server RESTful API поддерживает службу обнаружения. Для получения дополнительной информации см. RESTful API (MATLAB Production Server).

  5. Нажмите кнопку Test Client. Приложение переключается на вкладку TEST.

    1. Проверьте значение поля Port.

      Это должно быть:

      • доступный порт

      • тот же номер порта, который использует клиент

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

    2. Установите флажок, чтобы Enable CORS. Эта опция должна быть включена, если вы используете клиент, который использует JavaScript®. При включении CORS сервер будет принимать запросы от различных областей.

    3. Установите флажок, чтобы Enable Discovery. Эта опция должен быть включен, чтобы использовать службу обнаружения. Служба обнаружения возвращает информацию о развернутых функциях MATLAB в качестве объекта JSON.

  6. Нажмите Start.

Тест с использованием RESTful API

Этот пример использует HTTP-интерфейс MATLAB, чтобы вызвать RESTful API и сделать запросы к тестовому интерфейсу. Можно использовать другие инструменты, такие как cURL или JavaScript XHR.

Проверка не поддерживает асинхронные запросы клиентов. Интерфейс обрабатывает POSTасинхронный Запрос ( MATLAB Production Server), подобную POSTсинхронному Запросу ( MATLAB Production Server). Другие асинхронные запросы от RESTful API не поддерживаются.

Служба обнаружения тестов

  1. Импортируйте пакеты MATLAB HTTP Interface, настройте запрос и отправьте запрос в тестовый интерфейс.

    % Import MATLAB HTTP Interface packages
    import matlab.net.*
    import matlab.net.http.*
    import matlab.net.http.fields.*
    
    % Setup request
    requestUri = URI('http://localhost:9910/api/discovery');
    options = matlab.net.http.HTTPOptions('ConnectTimeout',20,...
        'ConvertResponse',false);
    request = RequestMessage;
    request.Header = HeaderField('Content-Type','application/json');
    request.Method = 'GET';
    
    % Send request
    response = request.send(requestUri, options);
    

  2. Просмотрите тело отклика.

    response.Body.Data
    ans = 
    
        "{"discoverySchemaVersion":"1.0.0","archives":{"matfun":{"archiveSchemaVersion":"1.1.0",...
    Тело отклика было отсечено, чтобы соответствовать странице. Форматированная версия тела ответа может быть найдена путем расширения ans.

     ans

    Для тестирования с использованием JavaScript XHR можно использовать следующий код:

    XHR-  Кода JavaScript для Проверки Discovery Service

Проверка обмена данными

  1. Запустите отдельный сеанс рабочего стола MATLAB. Это связано с тем, что вы не можете отправить запрос из того же сеанса работы с MATLAB, который запускает тестовый интерфейс.

  2. Импортируйте пакеты MATLAB HTTP Interface, настройте запрос и отправьте запрос в тестовый интерфейс.

    % Import HTTP interface packages
    import matlab.net.*
    import matlab.net.http.*
    import matlab.net.http.fields.*
    
    % Setup message body
    body = MessageBody;
    a = [10 20 30; 40 50 60];
    b = [100 200 300;400 500 600];
    payload = mps.json.encoderequest({a,b});
    body.Payload = payload;
    
    % Setup request
    requestUri = URI('http://localhost:9910/matfun/addmatrix');
    options = matlab.net.http.HTTPOptions('ConnectTimeout',20,...
        'ConvertResponse',false);
    request = RequestMessage;
    request.Header = HeaderField('Content-Type','application/json');
    request.Method = 'POST';
    request.Body = body;
    
    % Send request
    response = request.send(requestUri, options)
  3. Просмотрите тело отклика.

    response.Body.Data
    ans = 
    
        "{"lhs":[[[110,220,330],[440,550,660]]]}"

    Для тестирования с использованием JavaScript XHR можно использовать следующий код:

    XHR-  Кода JavaScript для обмена Проверки данными

Исследуйте данные

  1. Переключитесь на приложение Production Server Compiler.

  2. В интерфейсе проверки в разделе MATLAB Execution Requests щелкните заполненное сообщение в приложении, чтобы увидеть значения, которыми обмениваются клиент и MATLAB.

  3. Щелкните Input, чтобы просмотреть массивы, переданные в MATLAB.

  4. Щелкните Output, чтобы просмотреть массив, возвращенный клиенту.

Установка точек останова

  1. В интерфейсе проверки Production Server Compiler нажмите Breakpoints > Break on MATLAB function entry.

  2. В отдельном сеансе работы с MATLAB повторно отправьте запрос POST серверу.

  3. Когда откроется редактор MATLAB, обратите внимание, что точка останова установлена в первой линии функции, и обработка приостановлена в точке останова.

    Теперь вы можете использовать все инструменты отладки MATLAB, чтобы пройти через свою функцию.

    Примечание

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

  4. Обратите внимание, что переменные a1 и a2 отображаются в рабочем пространстве MATLAB.

  5. В редакторе MATLAB щелкните Continue, чтобы завершить процесс отладки.

    В Server Requests разделе приложения показано, что запрос выполнен успешно.

  6. Щелкните Stop, чтобы завершить работу тестового сервера.

  7. Нажмите Close Test.

Проверка с использованием клиентского приложения Java

  1. Создайте файл Java MPSClientExample.java со следующим кодом клиента:

     MPSClientExample.java

  2. В командной строке системы скомпилируйте код клиента Java с помощью javac команда.

    javac -classpath "matlabroot\toolbox\compiler_sdk\mps_clients\java\mps_client.jar" MPSClientExample.java
    
  3. В командной строке системы запустите клиент Java.

    java -classpath .;"matlabroot\toolbox\compiler_sdk\mps_clients\java\mps_client.jar" MPSClientExample
    

    Примечание

    Вы не можете запустить клиент Java из командной строки MATLAB.

    На консоли приложение возвращает следующее:

       110.0   220.0   330.0
       440.0   550.0   660.0

    Можно отлаживать данные, которыми обмениваются клиент и MATLAB, используя те же шаги, которые перечислены в разделе Тест с использованием RESTful API.

Похожие темы