- From: Martin Gudgin <mgudgin@microsoft.com>
- Date: Wed, 18 Aug 2004 07:41:18 -0700
- To: <xml-dist-app@w3.org>
Here are a set of test scenarios for MTOM. We will use these tests
during the Candidate Recommendation phase. As noted previously[1] the
tests will take the form of an echo test. These come in two forms;
1. A client implementation sends an MTOM message and the server
implementation returns the corresponding XML 1.0 message
2. A client implementation sends an XML 1.0 message and the server
implementation returns the corresponding MTOM message
In all cases elements with the namespace name
"http://example.org/mtom/data" and a local name of "Data" will be of a
type derived from xs:base64Binary. Such elements will have a xop:Include
element child in the MTOM messages and base64 text as children in the
XML case. A schema for the elements used is as follows:
<xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema'
targetNamespace='http://example.org/mtom/data'
xmlns:x='http://example.org/mtom/data' >
<xs:import namespace='http://www.w3.org/2004/06/xmlmime' />
<xs:element name='Data' >
<xs:complexType>
<xs:simpleContent>
<xs:extension base='xs:base64Binary' >
<xs:attribute ref='xmime:contentType' />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name='EchoTest' >
<xs:complexType>
<xs:sequence>
<xs:element ref='x:Data' minOccurs='1' maxOccurs='unbounded' />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
I've listed the various tests below, with example XML messages. Please
note that in all cases, despite the vagaries of mailers, the x:Data
element do not have any whitespace characters as children. The amount of
base64 text sent ( as either text or optimized binary ) is unimportant.
However, to avoid running into memory limitations during testing, it
would be best to send smaller rather than larger binary parts. If
someone wants to propose an upper limit, let me know. I think most of my
own test messages come in below 512Kb.
Test 1: Single binary part. Limit the number of x:Data elements in the
message to 1. An example XML version of the message will be as follows:
<soap:Envelope xmlns:soap='http://www.w3.org/2003/05/soap-envelope' >
<soap:Body>
<x:Data xmlns:x='http://example.org/mtom/data'
>IK44HhIvWXSX2NIeoJyjiUfI5+ynntOwSmsYyf29ks0NuVSwaHWQedq6kn/qDql6Rmnu5W2
a44HaiNSnF5B22g==</x:Data>
</soap:Body>
</soap:Envelope>
Test 1a: Send XML, get back MTOM
Test 1b: Send MTOM, get back XML
Test 2: Multiple binary parts. Allow any number of x:Data elements in
the message. An example XML version of the message will be as follows:
<soap:Envelope xmlns:soap='http://www.w3.org/2003/05/soap-envelope' >
<soap:Body>
<x:Wrapper>
<x:Data xmlns:x='http://example.org/mtom/data'
>IK44HhIvWXSX2NIeoJyjiUfI5+ynntOwSmsYyf29ks0NuVSwaHWQedq6kn/qDql6Rmnu5W2
a44HaiNSnF5B22g==</x:Data>
<x:Data xmlns:x='http://example.org/mtom/data'
>3T4iLkRXu+K/QNlhEJqaIt8uE
ZHpS7kRdXBLNhiet+xYAUyTiNPFGBuc8EPti+vc9Fe3mMNxAlGFELkUDEXKA==</x:Data>
<x:Data xmlns:x='http://example.org/mtom/data'
>g0txZNBHOf5ho5pv7NsXLm5m1
3dmG5MC2GCUW2bjRar55raIMPUvkiYFpsJ/dwbKtgtZUb07DWi3b4tvst6Xfg==</x:Data>
</x:Wrapper>
</soap:Body>
</soap:Envelope>
Test 2a: Send XML, get back MTOM
Test 2b: Send MTOM, get back XML
Test 3: Testing xmime:contentType attribute and MIME content-type
header. The xmime:contentType header is specified on x:Data elements in
an XML message. An MTOM message is returned with the MIME content-type
of the binary parts set to the appropriate value. An example XML version
of the message will be as follows:
<soap:Envelope xmlns:soap='http://www.w3.org/2003/05/soap-envelope' >
<soap:Body>
<x:Data xmlns:x='http://example.org/mtom/data'
xmlns:xmime='http://www.w3.org/2004/06/xmlmime'
xmime:contentType='image/jpeg'
>IK44HhIvWXSX2NIeoJyjiUfI5+ynntOwSmsYyf29ks0NuVSwaHWQedq6kn/qDql6Rmnu5W2
a44HaiNSnF5B22g==</x:Data>
</soap:Body>
</soap:Envelope>
The corresponding MTOM message would set the content-type header of the
binary part for the x:Data element to 'image/jpeg'
Test 3a: Send XML, get back MTOM
Test 3b: Not applicable.
Test 4: Failure test: Missing MIME part. Send an MTOM message with a
xop:Include element that references a non-existent MIME part. A SOAP
fault should be returned indicating that the message was in error.
Test 5: Failure test: Use of content-location. Send an MTOM message that
references one or more MIME parts by content-location (rather than
content-id). A SOAP fault should be returned indicating that the message
was in error.
Test 6: Failure test: Use of startinfo parameter that does NOT specify
application/soap+xml. Send an MTOM message that uses a startinfo of
image/jpeg. A SOAP fault should be returned indicating that the message
was in error.
Test 7: Failure test: Use of type parameter on the root part that does
NOT specify application/soap+xml. Send an MTOM message that uses a type
parameter of image/jpeg for the root part. A SOAP fault should be
returned indicating that the message was in error.
Regards
Gudge
[1] http://lists.w3.org/Archives/Public/xml-dist-app/2004Jul/0025.html
Received on Wednesday, 18 August 2004 14:42:50 UTC