@Test
public void testMultiMatchers() throws Exception {

  long shortExpirationPeriod = 1 * 1000 * 1000 * 1000; // 1s
  NfsExports matcher = new NfsExports(CacheSize, shortExpirationPeriod, 
      "192.168.0.[0-9]+;[a-z]+.b.com rw");
  Assert.assertEquals(AccessPrivilege.READ_ONLY,
      matcher.getAccessPrivilege(address1, hostname2));
  Assert.assertEquals(AccessPrivilege.READ_ONLY,
      matcher.getAccessPrivilege(address1, address1));
  Assert.assertEquals(AccessPrivilege.READ_ONLY,
      matcher.getAccessPrivilege(address1, hostname1));
  Assert.assertEquals(AccessPrivilege.READ_WRITE,
      matcher.getAccessPrivilege(address2, hostname1));
  // address2 will hit the cache
  Assert.assertEquals(AccessPrivilege.READ_WRITE,
      matcher.getAccessPrivilege(address2, hostname2));
  
  Thread.sleep(1000);
  // no cache for address2 now
  AccessPrivilege ap;
  long startNanos = System.nanoTime();
  do {
    ap = matcher.getAccessPrivilege(address2, address2);
    if (ap == AccessPrivilege.NONE) {
      break;
    }
    Thread.sleep(500);
  } while ((System.nanoTime() - startNanos) / NanosPerMillis < 5000);
  Assert.assertEquals(AccessPrivilege.NONE, ap);
}