anchor.diff:      lager:info("Tx1 sent prepare, got message: ~p", [CommitTime]),
       lager:info("Tx1 aborted. Test passed!"),
       ok.
  +
  +%% Read an udpate a key multiple times
  +clocksi_multiple_read_update_test(Nodes) ->
  +    Node = hd(Nodes),
  +    _Key = get_random_key(),
  +    Key = newkey,
  +    NTimes = 100,
  +    Result1 = rpc:call(Node, floppy, read,
  +                       [Key, riak_dt_pncounter]),
  +    lists:foreach(fun(_)->
  +                          read_update_test(Node, Key) end, 
  +                  lists:seq(1,NTimes)),
  +    Result2 = rpc:call(Node, floppy, read,
  +                       [Key, riak_dt_pncounter]),
  +    ?assertEqual(Result1+NTimes, Result2),
  +    ok.
  +
  +read_update_test(Node, Key) ->
  +    Result1 = rpc:call(Node, floppy, read,
  +                       [Key, riak_dt_pncounter]),
  +    {ok,_} = rpc:call(Node, floppy, clocksi_bulk_update,
  +                      [now(), [{update, Key, {increment,a}}]]),
  +    Result2 = rpc:call(Node, floppy, read,
  +                       [Key, riak_dt_pncounter]),
  +    ?assertEqual(Result1+1,Result2).
  +
  +
  +get_random_key() ->
  +    random:seed(now()),
  +    random:uniform(100).
  
positive.code:     lager:info("Test3 passed"),
      ok.
  
  %% The following function tests that ClockSI can excute a
  %% read-only interactive tx.
  clockSI_test4(Nodes) ->
  
negative.code:     lager:info("Nodes: ~p", [Nodes]),
      clockSI_test1(Nodes),
      clockSI_test2 (Nodes),
      clocksi_single_key_update_read_test(Nodes),
      clocksi_multiple_key_update_read_test(Nodes),
      clockSI_test4 (Nodes),
      clockSI_test_read_time(Nodes),
      clockSI_test_read_wait(Nodes),
      clockSI_test_certification_check(Nodes),
      clockSI_multiple_test_certification_check(Nodes),
      clocksi_multiple_read_update_test(Nodes),
      rt:clean_cluster(Nodes),
      ok.
  
  