Difference between revisions of "Java Team4 Benchmark3"

From CRV
Jump to: navigation, search
(Clarification Requests)
Line 78: Line 78:
  
 
== Clarification Requests ==
 
== Clarification Requests ==
 +
 +
The format changed from last year so the benchmark isn't quite organised in the way required for this year. However, as it is quite a bit of work to reformat it for little obvious gain, don't worry. If anybody needs clarifications due to the different format please post them here -- Giles 2016-07-06
 +
 +
Please indicate how to (compile? and ) run the benchmark for the competition (if there is a choice of arguments give which ones should be used in the competition) -- Giles 2016-07-06

Revision as of 13:22, 6 July 2016

This benchmark aims at measuring the performance of tracking a large number of individual objects and their behaviour with respect to a central synchronising entity. A "device" has two switchable but exclusive operation modes. "Work pieces" depend on one of those modes and can be "processed" iff the device is in the corresponding mode.

Category: Software Engineering

Benchmark Data

Specification Information

It should be verified that no work piece depending on mode x is processed (by invoking the method Piece.process()) while the device that created it (invocation of Device.createPiece()) is in a mode different from x. The mode of a device is changed by invoking Device.toggleMode().

The resulting symbolic monitor is the following.

  • State space Q = {1,2,3,4}
  • Quantification: ∀d∀p
  • Transitions
    • δ(1,¬create(d,p)) = 1, δ(1,create(d,p)) = 2
    • δ(2,¬toggleMode(d)) = 2, δ(2,toggleMode(d)) = 3
    • δ(3,¬toggleMode(d)∧¬process(p)) = 3, δ(3,toggleMode(d)) = 2, δ(3,process(p)) = 4
    • δ(4,true) = 4
  • Accepting states (with output ⊤) F = {1,2,3}

The event create(d,p) holds iff the method Device.createPiece() is invoked on some Device object d instantiating a Piece object p. The predicate toggle(d) holds for some Device object d iff Device.toggleMode() is invoked on d and process(p) is true whenever Piece.process() is called on a Piece object p.


Instrumentation Information

Using AspectJ the events are identified as follows.


  • The abstract event create(l,i) is identified by the pointcut/advice
 pointcut createPiece(Device d):  call(public Piece Device.createPiece() && target(d));
 after(Device d) returning(Piece p): createPiece(d) { ... }
  • The abstract events toggleMode(d) and process(p) are identified by the pointcuts
   pointcut deviceModeToggle(Device d) :  call(public void Device.toggleMode() && target(d));
   pointcut processPiece(Piece p) :  call(public void Piece.process() && target(p));


Program Information

Location: Java_track/Mufin/Benchmark3

  • The number of times the events should be observed in the program:
    • create: 100282
    • toggleMode: 9973
    • process: 3
  • Verdict
    • property is violated

Example Traces

Valid:

  • create(1,2) process(2) toggleMode(1)
  • create(1,2) create(3,4) process(2) toggleMode(1) process(4) toggleMode(1) process(2)
  • create(1,2) process(2) create(3,4) process(2) toggleMode(1) toggleMode(3) toggleMode(3) process(4)

Invalid:

  • create(1,2) toggleMode(1) process(2)
  • create(1,2) create(3,4) process(2) toggleMode(1) toggleMode(3) togglemode(1) process(4)
  • create(1,2) process(2) create(3,4) toggleMode(1) toggleMode(1) toggleMode(1) process(4) process(2)

(The numbers 1,…,4 represent object identities.)

Comments

Clarification Requests

The format changed from last year so the benchmark isn't quite organised in the way required for this year. However, as it is quite a bit of work to reformat it for little obvious gain, don't worry. If anybody needs clarifications due to the different format please post them here -- Giles 2016-07-06

Please indicate how to (compile? and ) run the benchmark for the competition (if there is a choice of arguments give which ones should be used in the competition) -- Giles 2016-07-06