[ebxml-iic] RE: sample 3 test cases

From
Michael Kass <>
Date
2002-10-02T03:17:06+00:00
ID
Thread
[ebxml-iic] RE: sample 3 test cases
At 04:38 PM 10/1/2002 -0700, Jacques Durand wrote:

Mike:

 

in-line.
([Jacques2]

   This "timeout period" is something that we
need to integrate into our 
Test Driver.  I was wondering if the CPA as defined would
provide enough 
information to the Test Driver ( assuming that it parses some
"base" CPA 
( or "mini-cpa" for configuration ) to determine what that
"timeout period" should be before 
checking the message queue ( or some persistent storage structure ). 
   Will the "base CPA" contain all of the
required information for the Test Driver 
to compute its own "timeout period" before checking for
received messages, or 
will we have to assign some arbitrary value? 

[Jacques Durand]  I think it is better to have that as a
testcase-specific configuration parameter... 
this is really a test driver control issue, only meaningful to the
test driver, and outside the scope of the CPA . 
Maybe in the "operating party" column, we could specify
some config parameters for the 
operator of this test step, in addition to the operator name (here
"TestDriver"), e.g. "Timeout=60" (in seconds). 
The default value could be given at the beginning of the test suite,
in configuration parameters: e.g.
"DefaultTimeout=120".

[MIKE2] - It looks like there are many possible places to define test
case specific parameters.  They could be defined
as attributes in the <TestCase> column ( or element for
implementation ), the <TestStep> column/element, or the
<PutMessage> or
<GetMessage> operations/elements.  Where to put them would
depend upon the granularity at which you wish to define
such parameters ( parameter for the whole test case? for a single
test step?  for a single operation? )   I would think
that
Test Driver configuration would be fairly static for test cases, and
for that reason I would suggest making configuration parameters
attributes for the <TestCase> column/element.

[Jacques2] would rule out using the "test step" col, as it
is just a logical id for steps. Either "TestCase" col  or
"[Operating] party" col, which would treat this info as config
parameter for the operator (test driver). Granularity: would likely need
to be at step level, e.g. your GetMessage step in Case #74 will need to
wait until its timeout is over in order to count all duplicate messages -
so this timeout limit will be set based on #retries and retryInterval.
But that only makes sense for this step...  not for others in the
same Case. 
 We need also to be clear about the meaning of
"reaching" the timeout: for a duplicate -counting step like in 
#74, this is a normal termination: no error (the timeout IS the step
completion signal) but for other steps, if completion is not reached at
timeout, thats an error. We may need to specify when the timeout is
actually used to terminate the step, e.g. timeout_isfailure='false' (true
is default). 

[MIKE3] - With the idea of assigning configuration parameters at the
"step" level, we can do that in both the abstract and real test
<TestStep>s.  <TestStep> ( a column name in the abstract
test descriptions 0 is a container element in XML.  We could then
add additional parameters like: <TestStep id='1' timeout='60'/>...
or <TestStep id='2' timeout=120' represented tabularly in the
"Test Step" column of the abstract test suite as id='1'
timeout='120'   We could have a default value of, say 
'10' for all step timeouts, that would be overridden by an explicit
timeout declaration in the <TestStep>.

Comments?

 1)   Regarding your other comments for the 3
abstract tests.. I agree that <Condition> 
should be changed to <Precondition>.  It has a more direct
meaning in a testing sense.

2)   I will fix the typos on the
"quotes"    

3)   Regarding either : 
  (a) Using predifined CPAs for the "configurator"
action, or  
  (b) using CPA "templates" and manipulating them like
any other message content... 

I would favor (b) simply for the expediency.  Or at least, I
think that we should leave that possibility open in our implementation 
design.  That way, if the number of CPA templates becomes
cumbersome, we could treat the CPA 
as just another payload, and manipulate that XML payload template
content the same way we would manipulate 
an XML payload template for say  ... ebXML Registry
testing.   

[Jacques ]  I would also try to avoid using Configurator
action.... . (Configurator action assumes the MSH is 
capable to dynamically handle new CPAs, which may complicate things
API-wise, may not be true of all MSH, etc. 
But we may still assume that all the CPAs we need are in reasonable
number and pre-installed / accessible... 
(that would be the simplest solution) 
Only in case there are too many of these, (or too many combinations
of 
CPA attributes to consider in our test cases) we will have to specify
how to generate 
non-preinstalled CPAs from a template - and that could just be an
XPath assignment in a sub-operation, like for header manipulations. In
that case only, we would need the Configurator, to deploy on a the MSH
local to this Test Service. 
But I'd say we might not need do that if we don't need more than 20
or 30 CPAs, which is still a reasonable 
number of predefined CPAs... 

 Comments?
[MIKE2] -  So what we are talking about as far as configurating
an MSH using CPAs is a "startup" mode, in which the
candidate MSH starts up, reads a CPA ( or CPA-like config file
)  and configures itself.  We are assuming no
"dynamic" ability of an MSH to 
alter its configuration once started.  Which means that all
tests that must be run must assume that particular CPA
configuration.
[Jacques2] well, in the simplest solution mentioned above, an MSH
should be able to access/use 
several CPAs at any time, based on the CPAId in messages.

All these CPAs would be set (and possibly known from MSH) prior to running the test suite - may need a pre-configuration phase, but that really depends on the MSH implementation (instead, CPAs could be preinstalled in a registry, and MSH only needs to access them on demand, at run-time, and cache them). 
At test suite level,  we only need to specify a list of these CPAs (or CPAIds) needed by our test suite. Each test case will typically use no more than one CPA, but if we need to switch in the middle, that just means typically sending a message (m1, CPAId_1) to  the Initiator action, such that this action will generate a message (m2, CPAId_2). 
We only need to change the CPAId in the message, for the MSH to know what to do. 
A CPA would never change, once "installed" and referenced by a CPAId. 
So that is the least constraining way for the MSH... in case we really need to dynamically craft and add new CPAs, the COnfigurator service action would be needed. But that makes more assumptions on the ability of the MSH. I don't believe we need that for now...

[MIKE3] - I see. Well, this will work.  Basically we are saying "here is the CPAId", we both ( TestDriver and Candidate MSH)  know what it means, but how we each describe it to our MSH is different.  The key here will be absolute understanding what each CPAId means to both parties. Otherwise, conformance testing falls apart.  That is the benefit of having everyone work from the same file syntax, whether it is a CPA or "MiniCPA".  Everyone agrees. There is no ambiguity.

  Test wise, as long as both the Test Driver and candidate MSH both know that they are working from the same CPA, any discrepencies should be caught by good test writing... i.e.. if my Message Expression is  <Precondition>    $CPA_DuplicateElimination=='true'  </Precondition>  but the current CPA has DuplicationElimination set to false' then the <Precondition> will throw a "FatalPrecondition" exception, which willl  trigger an end to the <TestStep>.  The test cannot proceed because of an incompatability between the CPA and the test <Precondition>. This will work.  

. 
That's fine, but it means that when the Test Driver "selects" test cases to run, it must make sure that the test identifies itself ( through, say
<TestCase> attributes, as to what that test case requires in CPA configuration to execute correctly.  
That way, when the Test Driver loads the <TestCase>, it can compare its known local "CPA profile" against the profile of the <TestCase> , and 
not run that <TestCase> if it does not have a matching CPA profile.

[Jacques2] wouldn't the CPAId usage resolve this? We will assume here that all CPAIds are resolvable. We should not have to specify upfront the CPA for the test case: MSH should resolve based on CPAId of messages received, or on messages asked to be sent. 
 
This makes a strong case for defining configuration parameters as attributes at the <TestCase> level, and those attributes should include CPA parameter
values that vary from the "base" CPA profile from which most <TestCase>s will run.  Comments?

Cheers,
 
Jacques

Mike

    

At 11:57 AM 10/1/2002 -0700, Jacques Durand wrote:

Mike: 

review of your 3 test cases - mostly details. 
Note: should we set also some timeout parameter for each test case? or test step? 
(e.g. when we count duplicates, and retries, we have to know when to stop waiting...) 

regards, 

Jacques 

-----Original Message----- 
From: Michael Kass [mailto:] 
Sent: Monday, September 30, 2002 10:10 AM 
To: Jacques Durand; '' 
Subject: RE: [ebxml-iic] next call this Monday 

To all, 

    Here is XML representation of the 3 selected abstract tests. I will 
document/comment this for a clearer 
description.  This is for an initial look at structure and underlying 
object model. 

Mike