OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

business-transaction message

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [Elist Home]


Subject: examples traces from state table


Attached is a more or less random sample of a few traces from the state
table exerciser, each producing a different final outcome.  The main
peculiarity is that the exerciser knows only of the state, and since you can
nearly always resend the last message, it's liable to do so repeatedly - a
real implementation of course would normally only resend if there was some
uncertainty that the last message got through.

I'd meant to send a version of the attached earlier, but keep improving
things and not getting round to it. One of the improvements, when complete,
will give an index (in html) for each state/event combination, with a link
to an example showing it occurring.

Peter

------------------------------------------
Peter Furniss
Technical Director, Choreology Ltd
email:  peter.furniss@choreology.com
phone:  +44 20 7670 1679
direct: +44 20 7670 1783
cellphone: +44 7951 536168
13 Austin Friars, London EC2N 2JX

sup starts in I1
inf starts in i1

performing 10 trial runs
  blank cell receipts are errors
  maximum number of events before assuming stuck is 100
  100% of messages are liable to be delayed
  Probability of inaccessible state is 5%


trial 1
superior                                              inferior
I1 :B1  <--------------------------ENROL/no-rsp-req <-- i1 :b1 
B1 :B1  --> SUP_STATE/active/y------------------------> b1 :b1 
B1 :N1  --> REQUEST_CONFIRM                                    
N1 :N1  --> REQUEST_CONFIRM                                    
N1 :N1  --> REQUEST_CONFIRM                                    
                                          CANCELLED <-- b1 :z  
                   REQUEST_CONFIRM--------------------> z  :y1 
N1 :Z   <--------------------------CANCELLED
                   REQUEST_CONFIRM--------------------> y1 :y1 
Z  :Z   <-------------------------INF_STATE/unknown <-- y1 :z  
                   REQUEST_CONFIRM--------------------> z  :y1 
                                       disruption 0 XXX y1 :y1 
Z  :Z   <-------------------------INF_STATE/unknown <-- y1 :z  
  Superior requested confirm, inferior never decided (=:)

trial 2
superior                                              inferior
I1 :B1  <--------------------------ENROL/no-rsp-req <-- i1 :b1 
B1 :N1  --> REQUEST_CONFIRM                                    
                               decide to send ready === b1 :e1 
N1 :N1  --> REQUEST_CONFIRM                                    
                   REQUEST_CONFIRM--------------------> e1 :n0 
                   REQUEST_CONFIRM--------------------> n0 :n0 
                           remove ready information === n0 :n1 
                     decide to confirm autonomously === n1 :n2 
N1 :Z   <------------------------CONFIRMED/response <-- n2 :z  
  Superior requested confirm, inferior confirmed (=:#)

trial 4
superior                                              inferior
I1 :A1  <-----------------------------ENROL/rsp-req <-- i1 :a1 
A1 :A1  <------------------------INF_STATE/active/y <-- a1 :a1 
A1 :A1  <------------------------INF_STATE/active/y <-- a1 :a1 
A1 :A1  <------------------------INF_STATE/active/y <-- a1 :a1 
A1 :A1  <------------------------INF_STATE/active/y <-- a1 :a1 
A1 :B1  --> ENROLLED----------------------------------> a1 :b1 
                                     RESIGN/rsp-req <-- b1 :c1 
B1 :D1  === decide to prepare           
                                     RESIGN/rsp-req <-- c1 :c1 
D1 :C1  <---------------------RESIGN/rsp-req
C1 :C1  <---------------------RESIGN/rsp-req
C1 :Z   --> RESIGNED----------------------------------> c1 :z  
  Nothing happens (:)

trial 5
superior                                              inferior
I1 :A1  <-----------------------------ENROL/rsp-req <-- i1 :a1 
                                 INF_STATE/active/y <-- a1 :a1 
A1 :B1  --> ENROLLED                                           
B1 :B1  <-----------------INF_STATE/active/y
                   ENROLLED---------------------------> a1 :b1 
B1 :B1  --> SUP_STATE/active/y                                 
B1 :B1  <------------------------INF_STATE/active/y <-- b1 :b1 
B1 :G1  === decide to cancel           
                   SUP_STATE/active/y-----------------> b1 :b1 
G1 :J2  <---------------------------------CANCELLED <-- b1 :z  
J2 :Z   --> CANCEL------------------------------------> z  :y1 
Z  :Z   <-------------------------INF_STATE/unknown <-- y1 :z  
  Superior cancels, inferior never decided (-:)

trial 7
superior                                              inferior
                                      ENROL/rsp-req <-- i1 :a1 
                                 INF_STATE/active/y <-- a1 :a1 
                                 INF_STATE/active/y <-- a1 :a1 
I1 :A1  <----------------------ENROL/rsp-req
A1 :A1  <-----------------INF_STATE/active/y
A1 :A1  <-----------------INF_STATE/active/y
A1 :B1  --> ENROLLED                                           
B1 :G1  === decide to cancel           
                                 INF_STATE/active/y <-- a1 :a1 
                   ENROLLED---------------------------> a1 :b1 
G1 :G1  <-----------------INF_STATE/active/y
                               decide to send ready === b1 :e1 
                                              READY <-- e1 :e1 
                                record mixed result === e1 :m1 
                                              MIXED <-- m1 :m1 
G1 :G1  <------------------------------READY
G1 :M2  <------------------------------MIXED
M2 :M2  <-------------------------------------MIXED <-- m1 :m1 
M2 :M3  === record contradiction           
M3 :Z   --> CONTRADICTION-----------------------------> m1 :z  
  Superior cancels, inferior detects mix - contradiction reported (-!:!)



trial 244
superior                                              inferior
                                   ENROL/no-rsp-req <-- i1 :b1 
                                 INF_STATE/active/y <-- b1 :b1 
                        decide to send ready/cancel === b1 :e2 
I1 :B1  <-------------------ENROL/no-rsp-req
B1 :D1  === decide to prepare           
                                       READY/cancel <-- e2 :e2 
D1 :D1  <-----------------INF_STATE/active/y
D1 :E2  <-----------------------READY/cancel
E2 :E2  --> PREPARE                                            
E2 :F1  === decide to confirm           
                   PREPARE----------------------------> e2 :e2 
F1 :F1  --> CONFIRM-----------------------------------> e2 :f1 
                         apply ordered confirmation === f1 :f2 
F1 :F1  --> CONFIRM-----------------------------------> f2 :f2 
F1 :F1  --> CONFIRM                                            
F1 :F1  --> CONFIRM                                            
                   CONFIRM----------------------------> f2 :f2 
                   CONFIRM----------------------------> f2 :f2 
F1 :Z0  <------------------------CONFIRMED/response <-- f2 :z  

  Confirm ordered and applied (+:+)


  !:! occurred 0 times
  !:# occurred 0 times
  +!:! occurred 0 times
  +!:- occurred 0 times
  +:# occurred 0 times
  +:+ occurred 0 times
  -!:! occurred 2 times
  -!:# occurred 0 times
  -: occurred 1 times
  -:- occurred 0 times
  : occurred 4 times
  :- occurred 0 times
  =!:! occurred 0 times
  =!:# occurred 0 times
  =: occurred 2 times
  =:! occurred 0 times
  =:# occurred 1 times
  =:- occurred 0 times


[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [Elist Home]


Powered by eList eXpress LLC