В этом примере показано, как протестировать RESTful API или Java® клиент для развертывания на MATLAB® Production Server™ с использованием интерфейса проверки в приложении Production Server Compiler. В целях проверки вы создадите и используйте функцию MATLAB, называемую addmatrix
который принимает две числовые матрицы как входы и возвращает их сумму как выходную.
Доступ к проверке можно получить, нажав кнопку Test Client в приложении Production Server Compiler. Приложение Production Server Compiler является частью MATLAB Compiler SDK™.
Написание функции 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
Откройте приложение Production Server Compiler, набрав в командной строке MATLAB следующее:
productionServerCompiler
В Type разделе панели инструментов выберите Deployable Archive (.ctf) из списка.
Укажите функции MATLAB для развертывания.
В Exported Functions разделе панели инструментов нажмите кнопку «плюс».
Используя обозреватель файлов, найдите и выберите addmatrix.m
файл.
В разделе под названием 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).
Нажмите кнопку Test Client. Приложение переключается на вкладку TEST.
Проверьте значение поля Port.
Это должно быть:
доступный порт
тот же номер порта, который использует клиент
В данном примере клиент будет использовать порт 9910.
Установите флажок, чтобы Enable CORS. Эта опция должна быть включена, если вы используете клиент, который использует JavaScript®. При включении CORS сервер будет принимать запросы от различных областей.
Установите флажок, чтобы Enable Discovery. Эта опция должен быть включен, чтобы использовать службу обнаружения. Служба обнаружения возвращает информацию о развернутых функциях MATLAB в качестве объекта JSON.
Нажмите Start.
Этот пример использует HTTP-интерфейс MATLAB, чтобы вызвать RESTful API и сделать запросы к тестовому интерфейсу. Можно использовать другие инструменты, такие как cURL или JavaScript XHR.
Проверка не поддерживает асинхронные запросы клиентов. Интерфейс обрабатывает POSTасинхронный Запрос ( MATLAB Production Server), подобную POSTсинхронному Запросу ( MATLAB Production Server). Другие асинхронные запросы от RESTful API не поддерживаются.
Импортируйте пакеты 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);
Просмотрите тело отклика.
response.Body.Data
ans = "{"discoverySchemaVersion":"1.0.0","archives":{"matfun":{"archiveSchemaVersion":"1.1.0",...
ans
.Для тестирования с использованием JavaScript XHR можно использовать следующий код:
Запустите отдельный сеанс рабочего стола MATLAB. Это связано с тем, что вы не можете отправить запрос из того же сеанса работы с MATLAB, который запускает тестовый интерфейс.
Импортируйте пакеты 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)
Просмотрите тело отклика.
response.Body.Data
ans = "{"lhs":[[[110,220,330],[440,550,660]]]}"
Для тестирования с использованием JavaScript XHR можно использовать следующий код:
Исследуйте данные
Переключитесь на приложение Production Server Compiler.
В интерфейсе проверки в разделе MATLAB Execution Requests щелкните заполненное сообщение в приложении, чтобы увидеть значения, которыми обмениваются клиент и MATLAB.
Щелкните Input, чтобы просмотреть массивы, переданные в MATLAB.
Щелкните Output, чтобы просмотреть массив, возвращенный клиенту.
Установка точек останова
В интерфейсе проверки Production Server Compiler нажмите Breakpoints > Break on MATLAB function entry.
В отдельном сеансе работы с MATLAB повторно отправьте запрос POST серверу.
Когда откроется редактор MATLAB, обратите внимание, что точка останова установлена в первой линии функции, и обработка приостановлена в точке останова.
Теперь вы можете использовать все инструменты отладки MATLAB, чтобы пройти через свою функцию.
Примечание
Можно создать ошибку тайм-аута в клиенте, если вы долго шагаете через функцию MATLAB.
Обратите внимание, что переменные a1
и a2
отображаются в рабочем пространстве MATLAB.
В редакторе MATLAB щелкните Continue, чтобы завершить процесс отладки.
В Server Requests разделе приложения показано, что запрос выполнен успешно.
Щелкните Stop, чтобы завершить работу тестового сервера.
Нажмите 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, используя те же шаги, которые перечислены в разделе Тест с использованием RESTful API.