The test is actually very flaky since the previous code may execute *longer* than 2 seconds, so the metrics values may be significantly less than the values you expect.
The simplest way to fix is to change all these assertions to statements like "assertTrue(test.getRequests() < 2f);"
More precise way would be to measure the time between 2 .doUpdate(null) invocations, and calculate the value boundaries based on that, like this:
  final long  start1 = System.currentTimeMillis(); 
  test.doUpdates(null);
  final long  start2 = System.currentTimeMillis(); 
// ..... sleep 2000 there

  final long  finish1 = System.currentTimeMillis(); 
  test.doUpdates(null);
  final long  finish2 = System.currentTimeMillis(); 

// Now we can assert that  (finish1 - start2) <= time <= (finish2 - start1) 
// consequently, the metrics values can be asserted in boundaries
//                                            v0/(finish1 - start2) >=  v >= v0/(finish2 - start1)