use of diskCacheV111.vehicles.PoolManagerPoolUpMessage in project dcache by dCache.
the class CostModuleTest method buildPoolUpMessageWithCost.
/**
* Create a pool-up message for a pool with the given space parameters
*
* @param poolName name of the pool
* @param totalSpace total capacity of the pool in Gigabytes
* @param freeSpace space not yet used in Gigabytes
* @param preciousSpace space used by files marked precious in Gigabytes
* @param removableSpace space used by files that are removable in Gigabytes
* @return
*/
private static PoolManagerPoolUpMessage buildPoolUpMessageWithCost(String poolName, long totalSpace, long freeSpace, long preciousSpace, long removableSpace) {
PoolV2Mode poolMode = new PoolV2Mode(PoolV2Mode.ENABLED);
PoolCostInfo poolCost = new PoolCostInfo(poolName, IoQueueManager.DEFAULT_QUEUE);
poolCost.setSpaceUsage(GiB.toBytes(totalSpace), GiB.toBytes(freeSpace), GiB.toBytes(preciousSpace), GiB.toBytes(removableSpace));
long serialId = System.currentTimeMillis();
return new PoolManagerPoolUpMessage(poolName, serialId, poolMode, poolCost);
}
use of diskCacheV111.vehicles.PoolManagerPoolUpMessage in project dcache by dCache.
the class CostModuleTest method buildPoolUpMessageWithCostAndQueue.
/**
* Create a pool-up message for a pool with the given space parameters and mover values
*
* @param poolName name of the pool
* @param totalSpace total capacity of the pool in Gigabytes
* @param freeSpace space not yet used in Gigabytes
* @param preciousSpace space used by files marked precious in Gigabytes
* @param removableSpace space used by files that are removable in Gigabytes ...
* @return
*/
private static PoolManagerPoolUpMessage buildPoolUpMessageWithCostAndQueue(String poolName, long totalSpace, long freeSpace, long preciousSpace, long removableSpace, int moverActive, int moverMaxActive, int moverQueued, int restoreActive, int restoreMaxActive, int restoreQueued, int storeActive, int storeMaxActive, int storeQueued) {
PoolV2Mode poolMode = new PoolV2Mode(PoolV2Mode.ENABLED);
PoolCostInfo poolCost = new PoolCostInfo(poolName, IoQueueManager.DEFAULT_QUEUE);
poolCost.setSpaceUsage(GiB.toBytes(totalSpace), GiB.toBytes(freeSpace), GiB.toBytes(preciousSpace), GiB.toBytes(removableSpace));
poolCost.setQueueSizes(restoreActive, restoreMaxActive, restoreQueued, storeActive, storeMaxActive, storeQueued);
poolCost.addExtendedMoverQueueSizes(IoQueueManager.DEFAULT_QUEUE, moverActive, moverMaxActive, moverQueued, 0, 0);
long serialId = System.currentTimeMillis();
return new PoolManagerPoolUpMessage(poolName, serialId, poolMode, poolCost);
}
use of diskCacheV111.vehicles.PoolManagerPoolUpMessage in project dcache by dCache.
the class CostModuleTest method buildEmptyPoolUpMessage.
/**
* Create an empty Pool-up message for a pool with a given state
*
* @param poolName the name of the pool
* @param poolV2Mode in what state to claim the pool is.
*/
private static PoolManagerPoolUpMessage buildEmptyPoolUpMessage(String poolName, int poolV2Mode) {
PoolV2Mode poolMode = new PoolV2Mode(poolV2Mode);
long serialId = System.currentTimeMillis();
return new PoolManagerPoolUpMessage(poolName, serialId, poolMode);
}
use of diskCacheV111.vehicles.PoolManagerPoolUpMessage in project dcache by dCache.
the class HsmRestoreTest method testRestoreNoLocationsOnePoolCantStage.
@Test
public void testRestoreNoLocationsOnePoolCantStage() throws Exception {
PnfsId pnfsId = new PnfsId("000000000000000000000000000000000001");
/*
* pre-configure pool selection unit
*/
List<String> pools = new ArrayList<>(3);
pools.add("pool1");
pools.add("pool2");
PoolMonitorHelper.prepareSelectionUnit(_selectionUnit, _access, pools);
/*
* prepare reply for GetStorageInfo
*/
_storageInfo.addLocation(new URI("osm://osm?"));
_storageInfo.setIsNew(false);
PnfsGetFileAttributes fileAttributesMessage = new PnfsGetFileAttributes(pnfsId, EnumSet.noneOf(FileAttribute.class));
FileAttributes attributes = new FileAttributes();
StorageInfos.injectInto(_storageInfo, attributes);
attributes.setPnfsId(pnfsId);
attributes.setLocations(Collections.<String>emptyList());
attributes.setSize(5);
attributes.setAccessLatency(StorageInfo.DEFAULT_ACCESS_LATENCY);
attributes.setRetentionPolicy(StorageInfo.DEFAULT_RETENTION_POLICY);
attributes.setChecksums(Collections.emptySet());
fileAttributesMessage.setFileAttributes(attributes);
_cell.prepareMessage(new CellPath("PnfsManager"), fileAttributesMessage, true);
/*
* make pools know to 'PoolManager'
*/
long serialId = System.currentTimeMillis();
PoolV2Mode poolMode = new PoolV2Mode(PoolV2Mode.ENABLED);
Set<String> connectedHSM = new HashSet<>(1);
connectedHSM.add("osm");
for (String pool : pools) {
PoolCostInfo poolCostInfo = new PoolCostInfo(pool, IoQueueManager.DEFAULT_QUEUE);
poolCostInfo.setSpaceUsage(100, 20, 30, 50);
poolCostInfo.setQueueSizes(0, 10, 0, 0, 10, 0);
poolCostInfo.addExtendedMoverQueueSizes(IoQueueManager.DEFAULT_QUEUE, 0, 10, 0, 0, 0);
CellMessage envelope = new CellMessage(new CellAddressCore("PoolManager"), null);
envelope.addSourceAddress(new CellAddressCore(pool));
PoolManagerPoolUpMessage poolUpMessage = new PoolManagerPoolUpMessage(pool, serialId, poolMode, poolCostInfo);
prepareSelectionUnit(pool, poolMode, connectedHSM);
_costModule.messageArrived(envelope, poolUpMessage);
}
final AtomicInteger stageRequests1 = new AtomicInteger(0);
final AtomicInteger stageRequests2 = new AtomicInteger(0);
final AtomicInteger replyRequest = new AtomicInteger(0);
MessageAction messageAction1 = new StageMessageAction(stageRequests1);
MessageAction messageAction2 = new StageMessageAction(stageRequests2);
MessageAction messageAction3 = new StageMessageAction(replyRequest);
_cell.registerAction("pool1", PoolFetchFileMessage.class, messageAction1);
_cell.registerAction("pool2", PoolFetchFileMessage.class, messageAction2);
_cell.registerAction("door", PoolMgrSelectReadPoolMsg.class, messageAction3);
PoolMgrSelectReadPoolMsg selectReadPool = new PoolMgrSelectReadPoolMsg(attributes, _protocolInfo, null);
CellMessage cellMessage = new CellMessage(new CellAddressCore("PoolManager"), selectReadPool);
cellMessage.getSourcePath().add(new CellAddressCore("door", "local"));
_rc.messageArrived(cellMessage, selectReadPool);
// first pool replies with an error
CellMessage m = __messages.remove(0);
PoolFetchFileMessage ff = (PoolFetchFileMessage) m.getMessageObject();
ff.setFailed(17, "pech");
_rc.messageArrived(m, m.getMessageObject());
// pool manager bounces request back to door
m = __messages.remove(0);
selectReadPool = (PoolMgrSelectReadPoolMsg) m.getMessageObject();
assertEquals("Unexpected reply from pool manager", 17, selectReadPool.getReturnCode());
// resubmit request
PoolMgrSelectReadPoolMsg selectReadPool2 = new PoolMgrSelectReadPoolMsg(attributes, _protocolInfo, selectReadPool.getContext());
CellMessage cellMessage2 = new CellMessage(new CellAddressCore("PoolManager"), selectReadPool2);
_rc.messageArrived(cellMessage2, selectReadPool2);
assertEquals("No stage request sent to pools1", 1, stageRequests1.get());
assertEquals("No stage request sent to pools2", 1, stageRequests2.get());
}
use of diskCacheV111.vehicles.PoolManagerPoolUpMessage in project dcache by dCache.
the class HsmRestoreTest method testRestoreNoLocations.
@Test
public void testRestoreNoLocations() throws Exception {
PnfsId pnfsId = new PnfsId("000000000000000000000000000000000001");
/*
* pre-configure pool selection unit
*/
List<String> pools = new ArrayList<>(3);
pools.add("pool1");
pools.add("pool2");
PoolMonitorHelper.prepareSelectionUnit(_selectionUnit, _access, pools);
/*
* prepare reply for GetStorageInfo
*/
_storageInfo.addLocation(new URI("osm://osm?"));
_storageInfo.setIsNew(false);
PnfsGetFileAttributes fileAttributesMessage = new PnfsGetFileAttributes(pnfsId, EnumSet.noneOf(FileAttribute.class));
FileAttributes attributes = new FileAttributes();
StorageInfos.injectInto(_storageInfo, attributes);
attributes.setPnfsId(pnfsId);
attributes.setLocations(Collections.<String>emptyList());
attributes.setSize(5);
attributes.setAccessLatency(StorageInfo.DEFAULT_ACCESS_LATENCY);
attributes.setRetentionPolicy(StorageInfo.DEFAULT_RETENTION_POLICY);
attributes.setChecksums(Collections.emptySet());
fileAttributesMessage.setFileAttributes(attributes);
_cell.prepareMessage(new CellPath("PnfsManager"), fileAttributesMessage, true);
/*
* make pools know to 'PoolManager'
*/
long serialId = System.currentTimeMillis();
PoolV2Mode poolMode = new PoolV2Mode(PoolV2Mode.ENABLED);
Set<String> connectedHSM = new HashSet<>(1);
connectedHSM.add("osm");
for (String pool : pools) {
PoolCostInfo poolCostInfo = new PoolCostInfo(pool, IoQueueManager.DEFAULT_QUEUE);
poolCostInfo.setSpaceUsage(100, 20, 30, 50);
poolCostInfo.setQueueSizes(0, 10, 0, 0, 10, 0);
poolCostInfo.addExtendedMoverQueueSizes(IoQueueManager.DEFAULT_QUEUE, 0, 10, 0, 0, 0);
CellMessage envelope = new CellMessage(new CellAddressCore("irrelevant"), null);
envelope.addSourceAddress(new CellAddressCore(pool));
PoolManagerPoolUpMessage poolUpMessage = new PoolManagerPoolUpMessage(pool, serialId, poolMode, poolCostInfo);
prepareSelectionUnit(pool, poolMode, connectedHSM);
_costModule.messageArrived(envelope, poolUpMessage);
}
final AtomicInteger stageRequests = new AtomicInteger(0);
MessageAction messageAction = new StageMessageAction(stageRequests);
_cell.registerAction("pool1", PoolFetchFileMessage.class, messageAction);
_cell.registerAction("pool2", PoolFetchFileMessage.class, messageAction);
PoolMgrSelectReadPoolMsg selectReadPool = new PoolMgrSelectReadPoolMsg(attributes, _protocolInfo, null);
CellMessage cellMessage = new CellMessage(new CellAddressCore("PoolManager"), selectReadPool);
_rc.messageArrived(cellMessage, selectReadPool);
assertEquals("No stage request sent to pools", 1, stageRequests.get());
}
Aggregations