Добавил:
СПбГУТ * ИКСС * Программная инженерия Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Готовые работы / Лабораторная работа 2

.pdf
Скачиваний:
64
Добавлен:
30.03.2022
Размер:
825.57 Кб
Скачать

МИНИСТЕРСТВО ЦИФРОВОГО РАЗВИТИЯ,

СВЯЗИ И МАССОВЫХ КОММУНИКАЦИЙ РОССИЙСКОЙ ФЕДЕРАЦИИ Федеральное государственное бюджетное образовательное учреждение высшего образования «Санкт-Петербургский государственный университет телекоммуникаций им. проф. М. А. Бонч-Бруевича»

(СПбГУТ)

Факультет инфокоммуникационных сетей и систем Кафедра программной инженерии и вычислительной техники

ЛАБОРАТОРНАЯ РАБОТА №2

по дисциплине «Сетевое программное обеспечение»

студент гр. ИКПИ-84

_______________

Коваленко Л. А.

старший преподаватель

_______________

Усков М. В.

кафедры ИКС

 

 

Санкт-Петербург

2022

1. Цель работы

На практике познакомиться с одним из способов обмена информацией между программными компонентами, используемых в OSS-системах.

Ознакомиться с SOAP-протоколом, с инструментальным средством SoapUI

для работы с запросами и ответами. Разработать структуру XML-объектов,

соответствующих набору параметров и описанию сетевого элемента.

Задействовать средство эмуляции веб-сервисов SOAP Service Mocking.

Выполнить эмуляцию SOAP-вызова и ответа с их использованием.

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

2.Постановка задачи

Спомощью SoapUI провести эмуляцию SOAP-обращения из CRM в NRI

с получением ответа.

3. Пояснение

Производим упрощённое моделирование процесса, происходящего при обращении абонента к провайдеру за некоторой услугой. В OSS-ландшафте провайдера при этом обычно происходит:

1.Регистрация обращения абонента в CRM.

2.Последующее автоматическое обращение к системе NRI для определения наличия технической возможности предоставления запрошенной услуги.

3.Возврат информации из NRI-системы.

В нашем случае, мы проводим имитацию вызова из CRM по SOAP-

протоколу веб-сервиса, предоставленного NRI-системой для получения ссылки на подходящее сетевое оборудование при его наличии.

2

4. Ход работы

SOAP UI 5.7.0: https://github.com/SmartBear/soapui/releases/tag/v5.7.0

Структура:

1.NetworkDevices_Binding — WSDL описание интерфейса веб-сервиса.

2.getDeviceById — операция (абстрактное описание поддерживаемой сервисом функции). С вариантами запросов.

3.NetworkDevices_MockService — имитатор сервиса, который заменяет реальный объект в условиях теста и позволяет проверить вызовы

функций веб-сервиса. С вариантами ответов.

Открываем разработанный проект и запускаем Mock Service (рис. 1).

Рисунок 1. Проект открыт и запущен Mock Service

3

Отправляем первый запрос (рис. 2).

Рисунок 2. Получение результата на первый запрос (id = 1)

Отправляем второй запрос (рис. 3).

Рисунок 3. Получение результата на второй запрос (id = 2)

4

Отправляем третий запрос (рис. 4).

Рисунок 4. Получение результата на третий запрос (id = -1)

Исходник файла разработанного проекта представлен в таблице 1.

Таблица 1. Файл проекта «NetworkDevices-soapui-project.xml»

NetworkDevices-soapui-project.xml

<?xml version="1.0" encoding="UTF-8"?>

<con:soapui-project id="235a01ec-ea2f-49d9-995e-b48beb650a29" activeEnvironment="Default" name="NetworkDevices" resourceRoot="" soapuiversion="5.7.0" abortOnError="false" runType="SEQUENTIAL" xmlns:con="http://eviware.com/soapui/config"><con:settings/><con:interface xsi:type="con:WsdlInterface" id="1fe167bd-2d50-4ba8-9130-bc395002baa2" wsaVersion="NONE" name="NetworkDevices_Binding" type="wsdl" bindingName="{http://www.soapui.org/sample/}NetworkDevices_Binding" soapVersion="1_1" anonymous="optional" definition="file:/C:/Users/Admin/Desktop/network-devices-service.wsdl" xmlns:xsi="http://www.w3.org/2001/XMLSchemainstance"><con:settings/><con:definitionCache type="TEXT" rootPart="file:\C:\Users\Admin\Desktop\network-devices- service.wsdl"><con:part><con:url>file:\C:\Users\Admin\Desktop\network-devices- service.wsdl</con:url><con:content><![CDATA[<wsdl:definitions name="network-devices- service" targetNamespace="http://www.soapui.org/sample/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:tns="http://www.soapui.org/sample/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/">

<wsdl:types>

<xsd:schema targetNamespace="http://www.soapui.org/sample/"> <xsd:complexType name="ItemType">

<xsd:sequence>

<xsd:element name="device_id" type="xsd:int"/> <xsd:element name="device_type" type="xsd:string"/> <xsd:element name="device_model" type="xsd:string"/> <xsd:element name="device_price" type="xsd:int"/>

</xsd:sequence>

</xsd:complexType>

</xsd:schema>

</wsdl:types>

5

<wsdl:message name="getDeviceByIdRequest"> <wsdl:part name="device_id" type="xsd:int"/>

</wsdl:message>

<wsdl:message name="getDeviceByIdResponse"> <wsdl:part name="device_id" type="xsd:int"/> <wsdl:part name="device_type" type="xsd:string"/> <wsdl:part name="device_model" type="xsd:string"/> <wsdl:part name="device_price" type="xsd:int"/>

</wsdl:message>

<wsdl:portType name="INetworkDevicesService"> <wsdl:operation name="getDeviceById">

<wsdl:input message="tns:getDeviceByIdRequest"/> <wsdl:output message="tns:getDeviceByIdResponse"/>

<wsdl:fault name="fault" message="tns:getDeviceById_faultMsg"/> </wsdl:operation>

</wsdl:portType>

<wsdl:binding name="NetworkDevices_Binding" type="tns:INetworkDevicesService"> <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/> <wsdl:operation name="getDeviceById">

<soap:operation soapAction="getDeviceById"/> <wsdl:input>

<soap:body use="literal" namespace="http://www.soapui.org/sample/"/> </wsdl:input>

<wsdl:output>

<soap:body use="literal" namespace="http://www.soapui.org/sample/"/> </wsdl:output>

<wsdl:fault name="fault">

<soap:fault use="literal" name="fault"/> </wsdl:fault>

</wsdl:operation>

</wsdl:binding>

<wsdl:service name="NetworkDevices_Service">

<wsdl:port name="NetworkDevices_Port" binding="tns:NetworkDevices_Binding"> <soap:address location="http://www.soapui.org/sample"/>

</wsdl:port>

</wsdl:service> </wsdl:definitions>]]></con:content><con:type>http://schemas.xmlsoap.org/wsdl/</con: type></con:part></con:definitionCache><con:endpoints><con:endpoint>http://localhost: 8080/getNetworkDevice</con:endpoint></con:endpoints><con:operation id="3ea10f8a- 0d3f-4869-a377-d8e09cb3aeaf" isOneWay="false" action="getDeviceById" name="getDeviceById" bindingOperationName="getDeviceById" type="Request-Response" inputName="" receivesAttachments="false" sendsAttachments="false" anonymous="optional"><con:settings/><con:call id="452f7e10-f302-4ad5-9151- f0b10480566f" name="Request 1"><con:settings><con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><xml- fragment/></con:setting></con:settings><con:encoding>UTF- 8</con:encoding><con:endpoint>http://localhost:8080/getNetworkDevice</con:endpoint>< con:request><![CDATA[<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:sam="http://www.soapui.org/sample/">\r

<soapenv:Header/>\r

<soapenv:Body>\r

<sam:getDeviceById>\r <device_id>1</device_id>\r

</sam:getDeviceById>\r

</soapenv:Body>\r </soapenv:Envelope>]]></con:request><con:credentials><con:authType>No Authorization</con:authType></con:credentials><con:jmsConfig JMSDeliveryMode="PERSISTENT"/><con:jmsPropertyConfig/><con:wsaConfig mustUnderstand="NONE" version="200508" action="getDeviceById"/><con:wsrmConfig version="1.2"/></con:call><con:call id="77a5ca86-fbb2-4e12-83be-3f3ef3665a30" name="Request 2"><con:settings><con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><xml- fragment/></con:setting></con:settings><con:encoding>UTF- 8</con:encoding><con:endpoint>http://localhost:8080/getNetworkDevice</con:endpoint>< con:request><![CDATA[<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:sam="http://www.soapui.org/sample/">

<soapenv:Header/>

<soapenv:Body>

<sam:getDeviceById>

6

<device_id>2</device_id> </sam:getDeviceById>

</soapenv:Body> </soapenv:Envelope>]]></con:request><con:credentials><con:authType>No Authorization</con:authType></con:credentials><con:jmsConfig JMSDeliveryMode="PERSISTENT"/><con:jmsPropertyConfig/><con:wsaConfig mustUnderstand="NONE" version="200508" action="getDeviceById"/><con:wsrmConfig version="1.2"/></con:call><con:call id="4bf49876-b108-4d4c-89a1-35c597ea8a4f" name="Request 3"><con:settings><con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers"><xml- fragment/></con:setting></con:settings><con:encoding>UTF- 8</con:encoding><con:endpoint>http://localhost:8080/getNetworkDevice</con:endpoint>< con:request><![CDATA[<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:sam="http://www.soapui.org/sample/">

<soapenv:Header/>

<soapenv:Body>

<sam:getDeviceById> <device_id>3</device_id>

</sam:getDeviceById>

</soapenv:Body> </soapenv:Envelope>]]></con:request><con:credentials><con:authType>No Authorization</con:authType></con:credentials><con:jmsConfig JMSDeliveryMode="PERSISTENT"/><con:jmsPropertyConfig/><con:wsaConfig mustUnderstand="NONE" version="200508" action="getDeviceById"/><con:wsrmConfig version="1.2"/></con:call></con:operation></con:interface><con:mockService id="c3789809-2887-40ee-b084-8e3f88d8a343" port="8080" path="/" host="Admin-PC" name="NetworkDevices_MockService"><con:settings><con:setting id="com.eviware.soapui.impl.wsdl.mock.WsdlMockService@require-soap- action">false</con:setting></con:settings><con:properties/><con:mockOperation name="getDeviceById" id="35a19966-0da7-4139-94f6-1a0b71bf7f62" interface="NetworkDevices_Binding" operation="getDeviceById"><con:settings/><con:defaultResponse>Response Error</con:defaultResponse><con:dispatchStyle>SCRIPT</con:dispatchStyle><con:dispatc hPath>def groovyUtils = new com.eviware.soapui.support.GroovyUtils( context )

def holder = groovyUtils.getXmlHolder( mockRequest.requestContent ) def id = holder.getNodeValue( "//device_id" )

return "Response " + id</con:dispatchPath><con:response name="Response 1" id="a645a1c6-aaad-48c8-acf0-e2465490df7c" httpResponseStatus="200" encoding="UTF- 8"><con:settings/><con:responseContent><![CDATA[<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:sam="http://www.soapui.org/sample/">

<soapenv:Header/>

<soapenv:Body>

<sam:getDeviceById> <device_id>1</device_id> <device_type>Switch</device_type>

<device_model>Dahua DH-PFS3110-8T 8x100Mb 1G</device_model> <device_price>800000</device_price>

</sam:getDeviceById>

</soapenv:Body>

</soapenv:Envelope>]]></con:responseContent><con:wsaConfig mustUnderstand="NONE" version="200508" action="getDeviceById"/></con:response><con:response name="Response 2" id="a645a1c6-aaad-48c8-acf0-e2465490df7c" httpResponseStatus="200" encoding="UTF- 8"><con:settings/><con:responseContent><![CDATA[<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:sam="http://www.soapui.org/sample/">

<soapenv:Header/>

<soapenv:Body>

<sam:getDeviceById> <device_id>2</device_id> <device_type>Router</device_type>

<device_model>D-Link DIR-815S1</device_model> <device_price>479000</device_price>

</sam:getDeviceById>

</soapenv:Body>

</soapenv:Envelope>]]></con:responseContent><con:wsaConfig mustUnderstand="NONE" version="200508" action="getDeviceById"/></con:response><con:response name="Response Error" id="c4f38c0f-6916-4207-bb58-d6dcd742844b" httpResponseStatus="200" encoding="UTF-8"><con:settings/><con:responseContent><![CDATA[<soapenv:Envelope

7

xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"

xmlns:sam="http://www.soapui.org/sample/">

<soapenv:Header/>

<soapenv:Body>

<sam:getDeviceById> <device_id>-1</device_id> <device_type>Not found</device_type> <device_model>Not found</device_model> <device_price>-1</device_price>

</sam:getDeviceById>

</soapenv:Body>

</soapenv:Envelope>]]></con:responseContent><con:wsaConfig mustUnderstand="NONE" version="200508" action="getDeviceById"/></con:response><con:dispatchConfig/></con:mockOperation></co n:mockService><con:properties/><con:wssContainer/><con:oAuth2ProfileContainer/><con: oAuth1ProfileContainer/><con:sensitiveInformation/></con:soapui-project>

5. Заключение

Достоинства SOAP:

Строгая спецификация.

Наличие вспомогательных технологий (безопасность информации,

транзакции и др.).

Недостатки SOAP:

Наличие дополнительной нагрузки, связанной с использованием

«тяжелых» протоколов (SOAP, WSDL).

8