anchor.diff:      lease_helper:wait_for_number_of_valid_active_leases(0),
       [gen_component:bp_del(Node, block_trigger) || Node <- DHTNodes],
   
  +    % do bad things
  +    DoBadThings(DHTNodes),
   
       % trigger renewal on all nodes
       ct:pal("cr: renew all nodes ~p", [DHTNodes]),
  
positive.code:     
      % wait for leases to reappear
      ct:pal("cr: wait for leases to reappear"),
      lease_helper:wait_for_number_of_valid_active_leases(4).
  
negative.code: %
  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  test_crash_recovery(_Config) ->
      % do nothing
      F = fun(_DHTNodes) ->
                  ok
          end,
  
      generic_crash_recovery_test(F, 4).
  
  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  %
  % crash recovery test with one node blocking prbr-messages
  %
  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  test_crash_recovery_one_dead_node(_Config) ->
      % delete the lease dbs on the first node
      F = fun(DHTNodes) ->
                  % drop the four lease_dbs on the first node
                  erase_lease_dbs(hd(DHTNodes))
          end,
  
      generic_crash_recovery_test(F, 3).
  
  
  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  %
  % generic crash recovery test
  %
  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  generic_crash_recovery_test(DoBadThings, ExpectedLeases) ->
      % we create a ring with four nodes. We stop lease renewal on all
      % nodes and wait for the leases to timeout.
      DHTNodes = pid_groups:find_all(dht_node),
  