use of org.apache.ignite.compute.ComputeTaskSession in project ignite by apache.
the class GridRoundRobinLoadBalancingSpiMultipleNodesSelfTest method testMultipleNodes.
/**
* @throws Exception If test failed.
*/
@SuppressWarnings({ "ObjectEquality" })
public void testMultipleNodes() throws Exception {
List<ClusterNode> allNodes = (List<ClusterNode>) getSpiContext().nodes();
ComputeTaskSession ses = new GridTestTaskSession(IgniteUuid.randomUuid());
// Initialize.
getSpi().getBalancedNode(ses, allNodes, new GridTestJob());
List<UUID> orderedNodes = new ArrayList<>(getSpi().getNodeIds(ses));
// Check the round-robin actually did circle.
for (int i = 0; i < allNodes.size(); i++) {
ClusterNode node = getSpi().getBalancedNode(ses, allNodes, new GridTestJob());
assert orderedNodes.get(i) == node.id();
}
// Double-check.
for (int i = 0; i < allNodes.size(); i++) {
ClusterNode node = getSpi().getBalancedNode(ses, allNodes, new GridTestJob());
assert orderedNodes.get(i) == node.id();
}
}
use of org.apache.ignite.compute.ComputeTaskSession in project ignite by apache.
the class GridRoundRobinLoadBalancingSpiNotPerTaskSelfTest method testMultipleTaskSessions.
/**
* @throws Exception If test failed.
*/
public void testMultipleTaskSessions() throws Exception {
ComputeTaskSession ses1 = new GridTestTaskSession(IgniteUuid.randomUuid());
ComputeTaskSession ses2 = new GridTestTaskSession(IgniteUuid.randomUuid());
List<ClusterNode> allNodes = (List<ClusterNode>) getSpiContext().nodes();
List<UUID> orderedNodes = getSpi().getNodeIds(ses1);
assertEquals("Balancer doesn't use all available nodes", orderedNodes.size(), allNodes.size());
checkCyclicBalancing(getSpi(), allNodes, orderedNodes, ses1, ses2);
getSpiContext().triggerEvent(new TaskEvent(null, null, EVT_TASK_FINISHED, ses1.getId(), null, null, false, null));
getSpiContext().triggerEvent(new TaskEvent(null, null, EVT_TASK_FAILED, ses2.getId(), null, null, false, null));
}
use of org.apache.ignite.compute.ComputeTaskSession in project ignite by apache.
the class GridRoundRobinLoadBalancingSpiNotPerTaskSelfTest method testMultipleNodes.
/**
* @throws Exception If test failed.
*/
public void testMultipleNodes() throws Exception {
List<ClusterNode> allNodes = (List<ClusterNode>) getSpiContext().nodes();
ComputeTaskSession ses = new GridTestTaskSession();
List<UUID> orderedNodes = new ArrayList<>(getSpi().getNodeIds(ses));
assertEquals("Balancer doesn't use all available nodes", orderedNodes.size(), allNodes.size());
checkCyclicBalancing(getSpi(), allNodes, orderedNodes, ses);
}
use of org.apache.ignite.compute.ComputeTaskSession in project ignite by apache.
the class GridSingleSplitNewNodesTestTask method map.
/** {@inheritDoc} */
@Override
public Map<? extends ComputeJob, ClusterNode> map(List<ClusterNode> subgrid, Integer arg) {
assert !subgrid.isEmpty() : "Subgrid cannot be empty.";
Map<ComputeJobAdapter, ClusterNode> jobs = new HashMap<>(subgrid.size());
taskSes.setAttribute("1st", "1");
taskSes.setAttribute("2nd", "2");
Collection<UUID> assigned = new ArrayList<>(subgrid.size());
for (int i = 0; i < arg; i++) {
ComputeJobAdapter job = new ComputeJobAdapter(1) {
/** */
@TaskSessionResource
private ComputeTaskSession jobSes;
/** {@inheritDoc} */
@Override
public Serializable execute() {
assert jobSes != null;
Integer arg = this.<Integer>argument(0);
assert arg != null;
return new GridSingleSplitNewNodesTestJobTarget().executeLoadTestJob(arg, jobSes);
}
};
ClusterNode node = balancer.getBalancedNode(job, null);
assert node != null;
assigned.add(node.id());
jobs.put(job, node);
}
taskSes.setAttribute("nodes", assigned);
return jobs;
}
use of org.apache.ignite.compute.ComputeTaskSession in project ignite by apache.
the class IgniteCacheLockPartitionOnAffinityRunTest method testReleasePartitionJobImplementMasterLeave.
/**
* @throws Exception If failed.
*/
public void testReleasePartitionJobImplementMasterLeave() throws Exception {
final int orgId = primaryKey(grid(0).cache(Organization.class.getSimpleName()));
try {
grid(1).compute().affinityRunAsync(Arrays.asList(Organization.class.getSimpleName(), Person.class.getSimpleName()), new Integer(orgId), new RunnableWithMasterLeave() {
@IgniteInstanceResource
private Ignite ignite;
@Override
public void onMasterNodeLeft(ComputeTaskSession ses) throws IgniteException {
// No-op.
}
@Override
public void run() {
try {
checkPartitionsReservations((IgniteEx) ignite, orgId, 1);
} catch (Exception e) {
e.printStackTrace();
fail("Unexpected exception");
}
try {
Thread.sleep(1000);
} catch (InterruptedException ignored) {
// No-op.
}
}
});
stopGrid(1, true);
Thread.sleep(3000);
awaitPartitionMapExchange();
checkPartitionsReservations(grid(0), orgId, 0);
} finally {
startGrid(1);
awaitPartitionMapExchange();
}
}
Aggregations