Search in sources :

Example 1 with ComputeTaskView

use of org.apache.ignite.spi.systemview.view.ComputeTaskView in project ignite by apache.

the class SystemViewSelfTest method testComputeTask.

/**
 */
@Test
public void testComputeTask() throws Exception {
    CyclicBarrier barrier = new CyclicBarrier(2);
    try (IgniteEx g1 = startGrid(0)) {
        SystemView<ComputeTaskView> tasks = g1.context().systemView().view(TASKS_VIEW);
        IgniteCache<Integer, Integer> cache = g1.createCache("test-cache");
        cache.put(1, 1);
        g1.compute().executeAsync(new ComputeTask<Object, Object>() {

            @Override
            @NotNull
            public Map<? extends ComputeJob, ClusterNode> map(List<ClusterNode> subgrid, @Nullable Object arg) throws IgniteException {
                return Collections.singletonMap(new ComputeJob() {

                    @Override
                    public void cancel() {
                    // No-op.
                    }

                    @Override
                    public Object execute() throws IgniteException {
                        return 1;
                    }
                }, subgrid.get(0));
            }

            @Override
            public ComputeJobResultPolicy result(ComputeJobResult res, List<ComputeJobResult> rcvd) throws IgniteException {
                try {
                    barrier.await();
                    barrier.await();
                } catch (InterruptedException | BrokenBarrierException e) {
                    throw new RuntimeException(e);
                }
                return null;
            }

            @Nullable
            @Override
            public Object reduce(List<ComputeJobResult> results) throws IgniteException {
                return 1;
            }
        }, 1);
        barrier.await();
        assertEquals(1, tasks.size());
        ComputeTaskView t = tasks.iterator().next();
        assertFalse(t.internal());
        assertNull(t.affinityCacheName());
        assertEquals(-1, t.affinityPartitionId());
        assertTrue(t.taskClassName().startsWith(getClass().getName()));
        assertTrue(t.taskName().startsWith(getClass().getName()));
        assertEquals(g1.localNode().id(), t.taskNodeId());
        assertEquals("0", t.userVersion());
        barrier.await();
    }
}
Also used : ClusterNode(org.apache.ignite.cluster.ClusterNode) NotNull(org.jetbrains.annotations.NotNull) ComputeTaskView(org.apache.ignite.spi.systemview.view.ComputeTaskView) CyclicBarrier(java.util.concurrent.CyclicBarrier) AtomicInteger(java.util.concurrent.atomic.AtomicInteger) ComputeJob(org.apache.ignite.compute.ComputeJob) ComputeJobResultPolicy(org.apache.ignite.compute.ComputeJobResultPolicy) IgniteException(org.apache.ignite.IgniteException) IgniteEx(org.apache.ignite.internal.IgniteEx) Map(java.util.Map) Nullable(org.jetbrains.annotations.Nullable) ComputeJobResult(org.apache.ignite.compute.ComputeJobResult) Test(org.junit.Test) GridCommonAbstractTest(org.apache.ignite.testframework.junits.common.GridCommonAbstractTest)

Example 2 with ComputeTaskView

use of org.apache.ignite.spi.systemview.view.ComputeTaskView in project ignite by apache.

the class SystemViewComputeJobTest method testComputeAffinityCallJobAndTask.

/**
 * Tests work of {@link SystemView} for compute grid {@link IgniteCompute#runAsync(IgniteRunnable)} call.
 */
@Test
public void testComputeAffinityCallJobAndTask() throws Exception {
    barrier = new CyclicBarrier(2);
    SystemView<ComputeJobView> jobs = server.context().systemView().view(JOBS_VIEW);
    SystemView<ComputeTaskView> tasks = client.context().systemView().view(TASKS_VIEW);
    client.compute().affinityCallAsync("test-cache", 1, () -> {
        try {
            barrier.await(TIMEOUT, MILLISECONDS);
            barrier.await(TIMEOUT, MILLISECONDS);
        } catch (InterruptedException e) {
            throw new RuntimeException(e);
        }
        return 0;
    });
    barrier.await(TIMEOUT, MILLISECONDS);
    assertEquals(1, tasks.size());
    assertEquals(1, jobs.size());
    checkTaskAndJob(tasks.iterator().next(), jobs.iterator().next());
    barrier.await(TIMEOUT, MILLISECONDS);
    boolean res = waitForCondition(() -> jobs.size() == 0, TIMEOUT);
    assertTrue(res);
    res = waitForCondition(() -> tasks.size() == 0, TIMEOUT);
    assertTrue(res);
}
Also used : ComputeJobView(org.apache.ignite.spi.systemview.view.ComputeJobView) ComputeTaskView(org.apache.ignite.spi.systemview.view.ComputeTaskView) CyclicBarrier(java.util.concurrent.CyclicBarrier) GridCommonAbstractTest(org.apache.ignite.testframework.junits.common.GridCommonAbstractTest) Test(org.junit.Test)

Example 3 with ComputeTaskView

use of org.apache.ignite.spi.systemview.view.ComputeTaskView in project ignite by apache.

the class SystemViewComputeJobTest method testComputeRunnableJobAndTask.

/**
 * Tests work of {@link SystemView} for compute grid {@link IgniteCompute#runAsync(IgniteRunnable)} call.
 */
@Test
public void testComputeRunnableJobAndTask() throws Exception {
    try (IgniteEx server2 = startGrid(2)) {
        barrier = new CyclicBarrier(3);
        SystemView<ComputeJobView> jobs1 = server.context().systemView().view(JOBS_VIEW);
        SystemView<ComputeJobView> jobs2 = server2.context().systemView().view(JOBS_VIEW);
        SystemView<ComputeTaskView> tasks = client.context().systemView().view(TASKS_VIEW);
        client.compute().broadcastAsync(() -> {
            try {
                barrier.await(TIMEOUT, MILLISECONDS);
                barrier.await(TIMEOUT, MILLISECONDS);
            } catch (InterruptedException | BrokenBarrierException | TimeoutException e) {
                throw new RuntimeException(e);
            }
        });
        barrier.await(TIMEOUT, MILLISECONDS);
        assertEquals(1, tasks.size());
        assertEquals(1, jobs1.size());
        assertEquals(1, jobs2.size());
        ComputeTaskView task = tasks.iterator().next();
        checkTaskAndJob(task, jobs1.iterator().next());
        checkTaskAndJob(task, jobs2.iterator().next());
        barrier.await(TIMEOUT, MILLISECONDS);
        boolean res = waitForCondition(() -> jobs1.size() == 0, TIMEOUT);
        assertTrue(res);
        res = waitForCondition(() -> jobs2.size() == 0, TIMEOUT);
        assertTrue(res);
        res = waitForCondition(() -> tasks.size() == 0, TIMEOUT);
        assertTrue(res);
    }
}
Also used : ComputeJobView(org.apache.ignite.spi.systemview.view.ComputeJobView) BrokenBarrierException(java.util.concurrent.BrokenBarrierException) IgniteEx(org.apache.ignite.internal.IgniteEx) ComputeTaskView(org.apache.ignite.spi.systemview.view.ComputeTaskView) CyclicBarrier(java.util.concurrent.CyclicBarrier) TimeoutException(java.util.concurrent.TimeoutException) GridCommonAbstractTest(org.apache.ignite.testframework.junits.common.GridCommonAbstractTest) Test(org.junit.Test)

Example 4 with ComputeTaskView

use of org.apache.ignite.spi.systemview.view.ComputeTaskView in project ignite by apache.

the class SystemViewSelfTest method testComputeRunnable.

/**
 * Tests work of {@link SystemView} for compute grid {@link IgniteCompute#runAsync(IgniteRunnable)} call.
 */
@Test
public void testComputeRunnable() throws Exception {
    CyclicBarrier barrier = new CyclicBarrier(2);
    try (IgniteEx g1 = startGrid(0)) {
        SystemView<ComputeTaskView> tasks = g1.context().systemView().view(TASKS_VIEW);
        g1.compute().runAsync(() -> {
            try {
                barrier.await();
                barrier.await();
            } catch (InterruptedException | BrokenBarrierException e) {
                throw new RuntimeException(e);
            }
        });
        barrier.await();
        assertEquals(1, tasks.size());
        ComputeTaskView t = tasks.iterator().next();
        assertFalse(t.internal());
        assertNull(t.affinityCacheName());
        assertEquals(-1, t.affinityPartitionId());
        assertTrue(t.taskClassName().startsWith(getClass().getName()));
        assertTrue(t.taskName().startsWith(getClass().getName()));
        assertEquals(g1.localNode().id(), t.taskNodeId());
        assertEquals("0", t.userVersion());
        barrier.await();
    }
}
Also used : BrokenBarrierException(java.util.concurrent.BrokenBarrierException) IgniteEx(org.apache.ignite.internal.IgniteEx) ComputeTaskView(org.apache.ignite.spi.systemview.view.ComputeTaskView) CyclicBarrier(java.util.concurrent.CyclicBarrier) Test(org.junit.Test) GridCommonAbstractTest(org.apache.ignite.testframework.junits.common.GridCommonAbstractTest)

Example 5 with ComputeTaskView

use of org.apache.ignite.spi.systemview.view.ComputeTaskView in project ignite by apache.

the class SystemViewSelfTest method testComputeApply.

/**
 * Tests work of {@link SystemView} for compute grid {@link IgniteCompute#apply(IgniteClosure, Object)} call.
 */
@Test
public void testComputeApply() throws Exception {
    CyclicBarrier barrier = new CyclicBarrier(2);
    try (IgniteEx g1 = startGrid(0)) {
        SystemView<ComputeTaskView> tasks = g1.context().systemView().view(TASKS_VIEW);
        GridTestUtils.runAsync(() -> {
            g1.compute().apply(x -> {
                try {
                    barrier.await();
                    barrier.await();
                } catch (InterruptedException | BrokenBarrierException e) {
                    throw new RuntimeException(e);
                }
                return 0;
            }, 1);
        });
        barrier.await();
        assertEquals(1, tasks.size());
        ComputeTaskView t = tasks.iterator().next();
        assertFalse(t.internal());
        assertNull(t.affinityCacheName());
        assertEquals(-1, t.affinityPartitionId());
        assertTrue(t.taskClassName().startsWith(getClass().getName()));
        assertTrue(t.taskName().startsWith(getClass().getName()));
        assertEquals(g1.localNode().id(), t.taskNodeId());
        assertEquals("0", t.userVersion());
        barrier.await();
    }
}
Also used : BrokenBarrierException(java.util.concurrent.BrokenBarrierException) IgniteEx(org.apache.ignite.internal.IgniteEx) ComputeTaskView(org.apache.ignite.spi.systemview.view.ComputeTaskView) CyclicBarrier(java.util.concurrent.CyclicBarrier) Test(org.junit.Test) GridCommonAbstractTest(org.apache.ignite.testframework.junits.common.GridCommonAbstractTest)

Aggregations

CyclicBarrier (java.util.concurrent.CyclicBarrier)7 ComputeTaskView (org.apache.ignite.spi.systemview.view.ComputeTaskView)7 GridCommonAbstractTest (org.apache.ignite.testframework.junits.common.GridCommonAbstractTest)7 Test (org.junit.Test)7 IgniteEx (org.apache.ignite.internal.IgniteEx)6 BrokenBarrierException (java.util.concurrent.BrokenBarrierException)4 AtomicInteger (java.util.concurrent.atomic.AtomicInteger)2 ComputeJobView (org.apache.ignite.spi.systemview.view.ComputeJobView)2 Map (java.util.Map)1 TimeoutException (java.util.concurrent.TimeoutException)1 IgniteException (org.apache.ignite.IgniteException)1 ClusterNode (org.apache.ignite.cluster.ClusterNode)1 ComputeJob (org.apache.ignite.compute.ComputeJob)1 ComputeJobResult (org.apache.ignite.compute.ComputeJobResult)1 ComputeJobResultPolicy (org.apache.ignite.compute.ComputeJobResultPolicy)1 NotNull (org.jetbrains.annotations.NotNull)1 Nullable (org.jetbrains.annotations.Nullable)1