* 3. the block generated should be unique even
* after the manager was reset due to failures.
*/
public void testReserveIDBlock()
{
NullPersistenceManager manager = new NullPersistenceManager();
manager.setPeerID(65536);
manager.setTimeMark(System.currentTimeMillis());
try
{
manager.reserveIDBlock("testCounter", 255);
fail("Failed to throw exception when server peer ID exceeding 255.");
}
catch (Exception e)
{
log.debug(e.getMessage());
}
manager.setPeerID(-1);
try
{
manager.reserveIDBlock("testCounter", 255);
fail("Failed to throw exception when server peer ID negative.");
}
catch (Exception e)
{
log.debug(e.getMessage());
}
manager.setPeerID(255);
try
{
manager.reserveIDBlock("testCounter", Short.MAX_VALUE + 1);
fail("Failed to throw exception when block size exceeds Short.MAX_VALUE");
}
catch (Exception e)
{
log.debug(e.getMessage());
}
long nextID = 0;
int ftimes = 0;
Hashtable<String, Integer> data = new Hashtable<String, Integer>();
try
{
for (int i = 0; i < 500; ++i)
{
int szblock = getRandomBlocksize();
nextID = manager.reserveIDBlock("testCounter", szblock);
// simulate failure
if (getFailure(i))
{
manager = new NullPersistenceManager();
manager.setPeerID(255);
manager.setTimeMark(System.currentTimeMillis());
ftimes++;
}
checkData(data, nextID, szblock);
}
}