RE: FW: [ebxml-iic-interop] comments on Interop suite

From
Jacques Durand <>
Date
2003-01-20T08:18:15+00:00
ID
Thread
RE: FW: [ebxml-iic-interop] comments on Interop suite
Mike: 
inline

  
-----Original Message-----
From: Michael Kass 
  [mailto:]
Sent: Wednesday, January 15, 2003 
  9:12 PM
To: Jacques Durand; Jacques Durand
Cc: 
  ''; ''; 
  ''
Subject: RE: FW: 
  [ebxml-iic-interop] comments on Interop suite

At 07:19 PM 
  1/15/2003 -0800, Jacques Durand wrote:

  Mike:
Hope these 
    answers are useful... 
    
      -----Original Message----- 
      From: Michael Kass [mailto:] 
      Sent: Wednesday, January 15, 2003 1:05 PM 
      To: Jacques Durand 
      Cc: ''; ''; 
      '' 
      Subject: RE: FW: [ebxml-iic-interop] comments on Interop 
      suite

      Jacques,

         More comments.  Key questions:

      1) Need to assign <Manifest><Reference xlink:href ="abc"> 
      at the application level in order to do any 
      meaningful payload testing for interop, otherwise we have no way of 
      fetching or evaluating a particular 
      payload ( no CID to refer to ). 
      [Jacques Durand] because we are at application level, we know that the 
      MSH provides us with an interface 
      (API, queuing, callback...) for: 
      (a) when building a message to be sent, specifying the payloads we 
      want to send, and their names, 
      (b)  when receiving a message, getting a list of payload names, 
      and content, in some way. 
      The way to do (a) and (b) may differ across MSH implementations, but 
      given the right adapter, 
      our test driver can expect to always get/set this data, and in the 
      current interop set-up, will get/set it like if 
      it were an application. 
      So I think this allows for using your GetPaylod() op, just by using 
      the app-level "name" (not sure if we need 
      to specify the "cid:" prefix) of the payload. 
      We may assume that GetMessage() will provide the Test Driver with the 
      list of received payload names. 
      But we don't even need this assumption as we know what payloads to 
      expect when we write test cases. 
      (does anyone see cases where that would not work?) 

      2) Fold <SetPayload> operation into <Manifest> 
      declaration, and eliminate <SetPayload> as an operation.. 
      not needed, and it is cleaner. 
      [Jacques Durand] I think the SetPayload op is still useful: It tells 
      which payload file to  pick (e.g. a URI), 
      and will associate with it the payload "name" we want to see in the 
      message. The Manifest alone can't do that. 
      In putMessage(), When using Test Driver directly  at transport 
      level, we need to define Manifest. 
      When using it at application level, Manifest content will be actually 
      determined by the sequence of 
      SetPayload ops we do, by sender MSH. So its not important if we don't 
      mention it, but we can for consistency.
  
[MIKE] - We could  add a <Manifest xlink:href="payload-1" 
  filename="abc.xml"/>  That would solve the problem of needing to 
  
have both a <SetPayload> operation and a <Manifest/> 
  declaration.  <Manifest/> could be used to set payload both 
  at
either application level, or at transport level, depending on 
  mode.  We would only have to reference the payload one time, in the 
  <Manifest/> declaration,
and could eliminate SetPayload entirely, for 
  both conformance and interop testing.

[Jacques 
  Durand]  
  
[Jacques Durand] I am a 
  little uncomfortable with this kind of shortcut : this extension to Manifest 
  elt is no longer compatible with the ebXML envelope schema, which we were 
  trying to respect, see [TestFramework 7.1.4.11] "...The XML syntax used by the 
  Test Driver to construct the ebXML Manifest extension content consists of the 
  declaration of an Manifest element. All required content, as defined in the 
  schema in the ebXML MS v2.0 Specification, is provided through either default 
  parameters defined in the ebXMLTestSuite.xsd schema in Appendix C, or by 
  explicit declaration ...". That might be confusing to people: they may want to 
  use same esxpression later on when crafting test cases "on the transport", and 
  that won't be consistent with the message envelope expected by the schema. I 
  see that not negative at all to have a separate operation to attach 
  payloads... different from envelope building in putMessage() main message 
  expression. Is the shortening of test case script the only advantage you see 
  in removing setPayload? 
 Frankly, your idea of 
  adding a setPayload op was not bad 
  initially! 

  
    
      3) Define a standard message payload format for including the 
      digest(s) of payloads used in the PayloadVerify 
      operation, consisting of a list of CIDs and their corresponding Digest 
      values. 
      [Jacques Durand] We could do that. Note that in Test Service 
      definitions, we were assuming that payloadVerify 
      would compare received payload(s) with local copies of the payload(s), 
      and just send back a status message. 
      Drawback is, a copy of the payload(s) has to be pre-installed on each 
      party host before testing.
  
[MIKE] - Plus the drawback of additional computation time for 
  determining signature of pre-installed file... each time we
execute 
  PayloadVerify  

  
    
      We may assume that, in case there is no local copy to compare with, 
      the status message is replaced by a 
      "digest" message that lists the digest values (or signature) for each 
      received payload. 
      When getting back this digest message, we would compare 
      these 
      in VerifyContent op with digest values created by putMessage() before 
      sending to payloadVerify() . 
      Is that what you suggest? (any XML format in mind for this? 
      )
  
  

[MIKE] - Yes. Send a simple payload stating what the digest 
  values for 1-N payloads, with 1-N CIDs and matching digest values 
to the 
  Test Service PayloadVerify action.  The PayloadVerify action could then 
  verify those signatures against what it computes, and send back a 
  payload
with a report, as shown above.  This would be nice, because 
  anyone can submit any number of payloads, without the Test Driver or Test 
  Service already having to 
know about it, or have files pre-installed. 
  
[Jacques Durand] Mike: agree except for one 
  thing: the pre-computed signature (I prefer to call it digest, as this is 
  actually the part of the signature we need) should be pre-installed in the 
  Test Service of the remote party. (or send in a separate "administration" 
  message (to "configurator" action?) - but I'd reserve that to a future 
  version) Because again we can't piggyback it on a "normal" message - which 
  again would assume that we add a special payload - that would twist the test 
  case: technically, when we say "3 payloads", we should send 3 and not 4. Same 
  if we say 1 payload. So I think it is not really a big deal to require 
  preinstalling these digests (big improvement from pre-installing the entire 
  payloads). Opinion?

  
 

  
 

  
 The XML would 
  be:

(Send 3 payloads, an XML, gif and Word file.. Test Driver would 
  recognize the "PayloadVerify" Action declaration, and create an additional 
  payload that
contains signature values for all 3 payloads along with their 
  CIDs, and send it to the "PayloadVerify" Action on the Test Service 
  side.

<MIME:Message> 
<MIME:MessageContainer> 
  
<SOAP:Envelope> 
<SOAP:Header> 
<eb:MessageHeader 
  eb:Action="PayloadVerify"> 
  
<eb:CPAId></eb:CPAId></eb:MessageHeader></SOAP:Header> 
  
<SOAP:Body> 
<eb:Manifest> 
<eb:Reference 
  xlink:href="" fileName="payload_1.xml" /> 
<eb:Reference 
  xlink:href="" fileName="payload_2.gif"/> 
<eb:Reference 
  xlink:href="" fileName="payload_3.doc" 
  />
</eb:Manifest></SOAP:Body>
</SOAP:Envelope>
</MIME:MessageContainer>
</MIME:Message>

(Test 
  Service "PayloadVerify" Action receives this message, along with 4 payloads ( 
  3 files plus special payload containing their signatures ), and
computes 
  signatures for 3 files itself, compares their signature values with those sent 
  in message payload, and sends message back to Test Driver
with pass/fail 
  result for each payload.)