В этом примере показано, как протестировать клиент RESTful API или Java ® для развертывания по отношению к MATLAB ® Production Server™ с помощью интерфейса тестирования в приложении компилятора Production Server. Для тестирования будет создана и использована функция MATLAB с именемaddmatrix которая принимает две числовые матрицы в качестве входных данных и возвращает их сумму в качестве выходных данных.
Доступ к интерфейсу тестирования можно получить, нажав кнопку «Проверить клиент» в приложении «Компилятор производственного сервера». Приложение «Компилятор производственного сервера» является частью SDK™ компилятора MATLAB.
Запись функции MATLAB с именем addmatrix которая принимает две числовые матрицы в качестве входных данных и возвращает их сумму в качестве выходных данных. Сохранить этот файл как addmatrix.m.
Проверьте функцию в командной строке 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
Откройте приложение компилятора производственного сервера, введя в командной строке MATLAB следующее:
productionServerCompiler

В разделе «Тип» панели инструментов выберите в списке «Развертываемый архив (.ctf)».
Укажите функции MATLAB для развертывания.
В разделе «Экспортированные функции» панели инструментов нажмите кнопку «плюс».
С помощью проводника файлов найдите и выберите addmatrix.m файл.
В разделе Include MATLAB function signature file нажмите кнопку Create File. При этом будет создан редактируемый JSON-файл, содержащий сигнатуры функций, включенных в архив. Редактируя этот файл, можно указать типы аргументов и/или размеры входов и выходов, а также предоставить справочную информацию для каждого из входов. Дополнительные сведения см. в разделе Сигнатуры функций MATLAB в JSON (производственный сервер MATLAB).
Если имеется файл JSON с сигнатурами функций, нажмите кнопку Добавить существующий файл, чтобы добавить этот файл вместо кнопки Создать файл.
Включив эту информацию в архив, можно использовать функциональные возможности службы обнаружения на сервере.
Примечание
Службу обнаружения поддерживает только API MATLAB Production Server RESTful. Дополнительные сведения см. в разделе RESTful API (производственный сервер MATLAB).
Нажмите кнопку Test Client. Приложение перейдет на вкладку ТЕСТ.

Проверьте значение в поле Port.
Это должно быть:
доступный порт
тот же номер порта, который использует клиент
В этом примере клиент использует порт 9910.
Установите флажок Enable CORS. Этот параметр необходимо включить, если вы используете клиент, использующий JavaScript ®. Включив CORS, сервер будет принимать запросы из различных доменов.
Установите флажок Включить обнаружение. Этот параметр должен быть включен для использования службы обнаружения. Служба обнаружения возвращает информацию о развернутых функциях MATLAB в качестве объекта JSON.
"Нажмите ""Пуск""".
В этом примере используется HTTP-интерфейс MATLAB для вызова API RESTful и выполнения запросов к тестовому интерфейсу. Вы можете использовать другие инструменты, такие как cURL или JavaScript XHR.
Интерфейс тестирования не поддерживает асинхронные клиентские запросы. Интерфейс обрабатывает асинхронный запрос POST (производственный сервер MATLAB) подобно синхронному запросу POST (производственный сервер MATLAB). Другие асинхронные запросы от API RESTful не поддерживаются.
Импортируйте пакеты интерфейса MATLAB HTTP, настройте запрос и отправьте запрос в интерфейс тестирования.
% 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);
Просмотр тела ответа.
response.Body.Data
ans =
"{"discoverySchemaVersion":"1.0.0","archives":{"matfun":{"archiveSchemaVersion":"1.1.0",...ans.Для тестирования с использованием JavaScript XHR можно использовать следующий код:
Запустите отдельный сеанс рабочего стола MATLAB. Это связано с невозможностью отправки запроса POST из того же сеанса MATLAB, в котором запущен тестовый интерфейс.
Импортируйте пакеты интерфейса MATLAB HTTP, настройте запрос и отправьте запрос в интерфейс тестирования.
% 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)
Просмотр тела ответа.
response.Body.Data
ans =
"{"lhs":[[[110,220,330],[440,550,660]]]}"Для тестирования с использованием JavaScript XHR можно использовать следующий код:
Анализ данных
Перейдите в приложение компилятора производственного сервера.

В интерфейсе тестирования в разделе Запросы выполнения MATLAB щелкните завершенное сообщение в приложении, чтобы увидеть значения, которыми обмениваются клиент и MATLAB.
Щелкните Ввод (Input), чтобы просмотреть массивы, переданные в MATLAB.
Нажмите кнопку Вывод, чтобы просмотреть массив, возвращенный клиенту.
Установка точек останова
В интерфейсе тестирования компилятора производственного сервера выберите Breakpoints > Break on MATLAB function entry.
В отдельном сеансе MATLAB повторно отправьте запрос POST на сервер.
При открытии редактора MATLAB обратите внимание, что точка останова устанавливается в первой строке функции и что обработка приостановлена в точке останова.

Теперь можно использовать все инструменты отладки MATLAB для выполнения своей функции.
Примечание
Можно создать ошибку тайм-аута в клиенте, если переход к функции MATLAB занимает много времени.
Обратите внимание, что переменные a1 и a2 отображаются в рабочем пространстве MATLAB.
В редакторе MATLAB нажмите кнопку «Продолжить» для завершения процесса отладки.
В разделе «Запросы сервера» приложения показано, что запрос выполнен успешно.
Нажмите кнопку «» Остановить «», чтобы завершить работу тестового сервера.
Щелкните Закрыть тест (Close Test).
Создание файла Java MPSClientExample.java со следующим клиентским кодом:
В командной строке системы скомпилировать код клиента Java с помощью команды javac команда.
javac -classpath "matlabroot\toolbox\compiler_sdk\mps_clients\java\mps_client.jar" MPSClientExample.java
В командной строке системы запустите 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, можно выполнить с помощью тех же шагов, что и в разделе Тест с использованием API RESTful.