/** test Writable */
 public void testWritable() throws Exception {
   TestWritable.testWritable(ExportedAccessKeys.DUMMY_KEYS);
   AccessTokenHandler handler =
       new AccessTokenHandler(true, accessKeyUpdateInterval, accessTokenLifetime);
   ExportedAccessKeys keys = handler.exportKeys();
   TestWritable.testWritable(keys);
   TestWritable.testWritable(BlockAccessToken.DUMMY_TOKEN);
   BlockAccessToken token =
       handler.generateToken(blockID3, EnumSet.allOf(AccessTokenHandler.AccessMode.class));
   TestWritable.testWritable(token);
 }
 private void tokenGenerationAndVerification(AccessTokenHandler master, AccessTokenHandler slave)
     throws Exception {
   // single-mode tokens
   for (AccessTokenHandler.AccessMode mode : AccessTokenHandler.AccessMode.values()) {
     // generated by master
     BlockAccessToken token1 = master.generateToken(blockID1, EnumSet.of(mode));
     assertTrue(master.checkAccess(token1, null, blockID1, mode));
     assertTrue(slave.checkAccess(token1, null, blockID1, mode));
     // generated by slave
     BlockAccessToken token2 = slave.generateToken(blockID2, EnumSet.of(mode));
     assertTrue(master.checkAccess(token2, null, blockID2, mode));
     assertTrue(slave.checkAccess(token2, null, blockID2, mode));
   }
   // multi-mode tokens
   BlockAccessToken mtoken =
       master.generateToken(blockID3, EnumSet.allOf(AccessTokenHandler.AccessMode.class));
   for (AccessTokenHandler.AccessMode mode : AccessTokenHandler.AccessMode.values()) {
     assertTrue(master.checkAccess(mtoken, null, blockID3, mode));
     assertTrue(slave.checkAccess(mtoken, null, blockID3, mode));
   }
 }
 /** test access key and token handling */
 public void testAccessTokenHandler() throws Exception {
   AccessTokenHandler masterHandler =
       new AccessTokenHandler(true, accessKeyUpdateInterval, accessTokenLifetime);
   AccessTokenHandler slaveHandler =
       new AccessTokenHandler(false, accessKeyUpdateInterval, accessTokenLifetime);
   ExportedAccessKeys keys = masterHandler.exportKeys();
   slaveHandler.setKeys(keys);
   tokenGenerationAndVerification(masterHandler, slaveHandler);
   // key updating
   masterHandler.updateKeys();
   tokenGenerationAndVerification(masterHandler, slaveHandler);
   keys = masterHandler.exportKeys();
   slaveHandler.setKeys(keys);
   tokenGenerationAndVerification(masterHandler, slaveHandler);
 }