Difference between revisions of "Java Team2 Benchmark1"

From CRV
Jump to: navigation, search
(Formal Specification)
(Formal Specification)
Line 55: Line 55:
  
 
     property foreach target (UserInfo u) matching{
 
     property foreach target (UserInfo u) matching{
         ((!greylist)* ; greylist ; ((!whitelist)* ; depositTo ; (!whitelist)* ; depositTo ;(!whitelist)* ; depositTo ; (!whitelist)*) ; whitelist )*
+
         ((!greylist)* ; greylist ; ((!whitelist)* ; depositTo ; (!whitelist)* ; depositTo ;
 +
        (!whitelist)* ; depositTo ; (!whitelist)*) ; whitelist )*
 
     }
 
     }
  
Line 62: Line 63:
  
 
     property foreach target (UserInfo u) not matching{
 
     property foreach target (UserInfo u) not matching{
         (?)* ; greylist; ((!depositTo)* + (!depositTo)*;depositTo;(!depositTo)* + (!depositTo)*;depositTo;(!depositTo)*;depositTo;(!depositTo)*) ; whitelist
+
         (?)* ; greylist; ((!depositTo)* + (!depositTo)*;depositTo;(!depositTo)* + (!depositTo)*;
 +
        depositTo;(!depositTo)*;depositTo;(!depositTo)*) ; whitelist
 
     }
 
     }
  

Revision as of 16:58, 2 June 2016

FiTS (A Financial Transaction System) is a bare-bones system mocking the behaviour of a financial transaction system. It emulates a virtual banking system in which users may open accounts from which they may perform money transfers. For more information read the manual at [1]

Categories: Financial

Benchmark Data

The Trace Part

Please upload your Java program to the server and include the necessary information (see rules document) here

The Property Part

See the rules for the necessary descriptions

Informal Description

FiTS contains an object UserInfo that corresponds to a user. A user can be greylisted, blacklisted, or whitelisted.

Once greylisted, a user must perform at least three incoming transfers before being whitelisted.

We have defined the following pointcuts to capture the relevant events for this benchmark:

   pointcut greylistUser(Integer uid) : 
       call(public void Interface.ADMIN_greylistUser(Integer) && args(uid));
   pointcut whitelistUser(Integer uid) : 
       call(public void Interface.ADMIN_whitelistUser(Integer) && args(uid));
   pointcut depositTo(String account_number, double amount) : 
       call(public void UserInfo.depositTo(String, double) && args(uid, account_number, amount));

Demonstration Traces

Satisfying Traces

  • greylist; depositTo; depositTo; depositTo; whitelist;
  • depositTo; depositTo;
  • depositTo; depositTo; greylist;

Violating Traces

  • greylist; depositTo; whitelist
  • depositTo; depositTo; depositTo; greylist; whitelist
  • depositTo; depositTo; depositTo; greylist; depositTo; depositTo; whitelist

Formal Specification

As a formal specification we use regular expressions over traces, defining both an expression for a satisfying and a violating trace. Each of these events are defined with respect to an object u of type UserInfo (e.g. such that the event greylist refers to u being greylisted).

Regular Expression for satisfying traces:

    property foreach target (UserInfo u) matching{
       ((!greylist)* ; greylist ; ((!whitelist)* ; depositTo ; (!whitelist)* ; depositTo ;
       (!whitelist)* ; depositTo ; (!whitelist)*) ; whitelist )*
    }


Regular Expression for violating traces:

    property foreach target (UserInfo u) not matching{
        (?)* ; greylist; ((!depositTo)* + (!depositTo)*;depositTo;(!depositTo)* + (!depositTo)*;
        depositTo;(!depositTo)*;depositTo;(!depositTo)*) ; whitelist
    }

A FO-LTL Specification

Clarification Requests

This is a space where other teams can ask for clarifications and the submitting team can answer. When a team requests a clarification, the team should be mentioned in the request and the request timestamped. The team submitting the benchmark should ensure they watch this page so that they get notifications of questions.