http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/537f631a/modules/core/src/test/java/org/gridgain/grid/kernal/GridCacheProjectionRemoveTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/gridgain/grid/kernal/GridCacheProjectionRemoveTest.java b/modules/core/src/test/java/org/gridgain/grid/kernal/GridCacheProjectionRemoveTest.java deleted file mode 100644 index e79488e..0000000 --- a/modules/core/src/test/java/org/gridgain/grid/kernal/GridCacheProjectionRemoveTest.java +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.gridgain.grid.kernal; - -import org.apache.ignite.*; -import org.gridgain.grid.kernal.processors.cache.*; - -/** - * - */ -public class GridCacheProjectionRemoveTest extends GridCacheAbstractSelfTest { - /** {@inheritDoc} */ - @Override protected int gridCount() { - return 1; - } - - /** - * @throws IgniteCheckedException If failed. - */ - public void testRemove() throws IgniteCheckedException { - cache().put("key", 1); - - assert cache().remove("key", 1); - assert !cache().remove("key", 1); - } -}
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/537f631a/modules/core/src/test/java/org/gridgain/grid/kernal/GridCancelOnGridStopSelfTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/gridgain/grid/kernal/GridCancelOnGridStopSelfTest.java b/modules/core/src/test/java/org/gridgain/grid/kernal/GridCancelOnGridStopSelfTest.java deleted file mode 100644 index afa7299..0000000 --- a/modules/core/src/test/java/org/gridgain/grid/kernal/GridCancelOnGridStopSelfTest.java +++ /dev/null @@ -1,107 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.gridgain.grid.kernal; - -import org.apache.ignite.*; -import org.apache.ignite.cluster.*; -import org.apache.ignite.compute.*; -import org.apache.ignite.resources.*; -import org.apache.ignite.testframework.junits.common.*; -import org.jetbrains.annotations.*; - -import java.io.*; -import java.util.*; -import java.util.concurrent.*; - -/** - * Test task cancellation on grid stop. - */ -@SuppressWarnings({"ProhibitedExceptionDeclared"}) -@GridCommonTest(group = "Kernal Self") -public class GridCancelOnGridStopSelfTest extends GridCommonAbstractTest { - /** */ - private static CountDownLatch cnt; - - /** */ - private static boolean cancelCall; - - /** */ - public GridCancelOnGridStopSelfTest() { - super(false); - } - - /** - * @throws Exception If failed. - */ - public void testCancelingJob() throws Exception { - cancelCall = false; - - try (Ignite g = startGrid(1)) { - cnt = new CountDownLatch(1); - - g.compute().enableAsync().execute(CancelledTask.class, null); - - cnt.await(); - } - - assert cancelCall; - } - - /** - * Cancelled task. - */ - private static final class CancelledTask extends ComputeTaskAdapter<String, Void> { - /** */ - @IgniteInstanceResource - private Ignite ignite; - - /** {@inheritDoc} */ - @Override public Map<? extends ComputeJob, ClusterNode> map(List<ClusterNode> subgrid, @Nullable String arg) - throws IgniteCheckedException { - for (ClusterNode node : subgrid) { - if (node.id().equals(ignite.configuration().getNodeId())) { - return Collections.singletonMap(new ComputeJob() { - @Override public void cancel() { - cancelCall = true; - } - - @Override public Serializable execute() throws IgniteCheckedException { - cnt.countDown(); - - try { - Thread.sleep(Long.MAX_VALUE); - } - catch (InterruptedException e) { - throw new IgniteCheckedException(e); - } - - return null; - } - }, node); - } - } - - throw new IgniteCheckedException("Local node not found"); - } - - /** {@inheritDoc} */ - @Nullable @Override public Void reduce(List<ComputeJobResult> results) throws IgniteCheckedException { - return null; - } - } -} http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/537f631a/modules/core/src/test/java/org/gridgain/grid/kernal/GridCancelUnusedJobSelfTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/gridgain/grid/kernal/GridCancelUnusedJobSelfTest.java b/modules/core/src/test/java/org/gridgain/grid/kernal/GridCancelUnusedJobSelfTest.java deleted file mode 100644 index 7dc5a1e..0000000 --- a/modules/core/src/test/java/org/gridgain/grid/kernal/GridCancelUnusedJobSelfTest.java +++ /dev/null @@ -1,220 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.gridgain.grid.kernal; - -import org.apache.ignite.*; -import org.apache.ignite.compute.*; -import org.apache.ignite.configuration.*; -import org.apache.ignite.resources.*; -import org.apache.ignite.spi.discovery.tcp.*; -import org.apache.ignite.spi.discovery.tcp.ipfinder.vm.*; -import org.apache.ignite.internal.util.typedef.*; -import org.apache.ignite.internal.util.typedef.internal.*; -import org.apache.ignite.testframework.junits.common.*; - -import java.io.*; -import java.util.*; -import java.util.concurrent.*; - -/** - * Cancel unused job test. - */ -@GridCommonTest(group = "Kernal Self") -public class GridCancelUnusedJobSelfTest extends GridCommonAbstractTest { - /** */ - private static final int WAIT_TIME = 100000; - - /** */ - public static final int SPLIT_COUNT = 10; - - /** */ - private static volatile int cancelCnt; - - /** */ - private static volatile int processedCnt; - - /** */ - private static CountDownLatch startSignal = new CountDownLatch(SPLIT_COUNT); - - /** */ - private static CountDownLatch stopSignal = new CountDownLatch(SPLIT_COUNT); - - /** */ - public GridCancelUnusedJobSelfTest() { - super(true); - } - - /** {@inheritDoc} */ - @Override protected IgniteConfiguration getConfiguration(String gridName) throws Exception { - IgniteConfiguration c = super.getConfiguration(gridName); - - TcpDiscoverySpi discoSpi = new TcpDiscoverySpi(); - - discoSpi.setIpFinder(new TcpDiscoveryVmIpFinder(true)); - - c.setDiscoverySpi(discoSpi); - - c.setExecutorService( - new ThreadPoolExecutor( - SPLIT_COUNT, - SPLIT_COUNT, - 0, TimeUnit.MILLISECONDS, - new LinkedBlockingQueue<Runnable>())); - - c.setExecutorServiceShutdown(true); - - return c; - } - - /** - * @throws Exception If failed. - */ - @SuppressWarnings("unchecked") - public void testCancel() throws Exception { - Ignite ignite = G.ignite(getTestGridName()); - - ignite.compute().localDeployTask(GridCancelTestTask.class, U.detectClassLoader(GridCancelTestTask.class)); - - ComputeTaskFuture<?> fut = executeAsync(ignite.compute(), GridCancelTestTask.class.getName(), null); - - // Wait until jobs begin execution. - boolean await = startSignal.await(WAIT_TIME, TimeUnit.MILLISECONDS); - - assert await : "Jobs did not start."; - - info("Test task result: " + fut); - - assert fut != null; - - // Only first job should successfully complete. - Object res = fut.get(); - assert (Integer)res == 1; - - // Wait for all jobs to finish. - await = stopSignal.await(WAIT_TIME, TimeUnit.MILLISECONDS); - assert await : "Jobs did not stop."; - - // One is definitely processed. But there might be some more processed or cancelled or processed and cancelled. - // Thus total number should be at least SPLIT_COUNT and at most (SPLIT_COUNT - 1) *2 +1 - assert (cancelCnt + processedCnt) >= SPLIT_COUNT && (cancelCnt + processedCnt) <= (SPLIT_COUNT - 1) * 2 +1 : - "Invalid cancel count value: " + cancelCnt; - } - - /** - * - */ - private static class GridCancelTestTask extends ComputeTaskSplitAdapter<Object, Object> { - /** */ - @IgniteLoggerResource - private IgniteLogger log; - - /** {@inheritDoc} */ - @Override protected Collection<? extends ComputeJob> split(int gridSize, Object arg) throws IgniteCheckedException { - if (log.isInfoEnabled()) - log.info("Splitting job [job=" + this + ", gridSize=" + gridSize + ", arg=" + arg + ']'); - - Collection<ComputeJob> jobs = new ArrayList<>(SPLIT_COUNT); - - for (int i = 1; i <= SPLIT_COUNT; i++) - jobs.add(new GridCancelTestJob(i)); - - return jobs; - } - - /** {@inheritDoc} */ - @Override public ComputeJobResultPolicy result(ComputeJobResult res, List<ComputeJobResult> received) { - return ComputeJobResultPolicy.REDUCE; - } - - /** {@inheritDoc} */ - @Override public Serializable reduce(List<ComputeJobResult> results) throws IgniteCheckedException { - if (log.isInfoEnabled()) - log.info("Reducing job [job=" + this + ", results=" + results + ']'); - - if (results.size() > 1) - fail(); - - return results.get(0).getData(); - } - } - - /** - * Cancel test job. - */ - private static class GridCancelTestJob extends ComputeJobAdapter { - /** */ - @IgniteLoggerResource - private IgniteLogger log; - - /** */ - @IgniteTaskSessionResource - private ComputeTaskSession ses; - - /** - * @param arg Argument. - */ - private GridCancelTestJob(Integer arg) { - super(arg); - } - - /** {@inheritDoc} */ - @Override public Serializable execute() { - int arg = this.<Integer>argument(0); - - try { - if (log.isInfoEnabled()) - log.info("Executing job [job=" + this + ", arg=" + arg + ']'); - - startSignal.countDown(); - - try { - if (!startSignal.await(WAIT_TIME, TimeUnit.MILLISECONDS)) - fail(); - - if (arg == 1) { - if (log.isInfoEnabled()) - log.info("Job one is proceeding."); - } - else - Thread.sleep(WAIT_TIME); - } - catch (InterruptedException e) { - if (log.isInfoEnabled()) - log.info("Job got cancelled [arg=" + arg + ", ses=" + ses + ", e=" + e + ']'); - - return 0; - } - - if (log.isInfoEnabled()) - log.info("Completing job: " + ses); - - return argument(0); - } - finally { - stopSignal.countDown(); - - processedCnt++; - } - } - - /** {@inheritDoc} */ - @Override public void cancel() { - cancelCnt++; - } - } -} http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/537f631a/modules/core/src/test/java/org/gridgain/grid/kernal/GridCancelledJobsMetricsSelfTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/gridgain/grid/kernal/GridCancelledJobsMetricsSelfTest.java b/modules/core/src/test/java/org/gridgain/grid/kernal/GridCancelledJobsMetricsSelfTest.java deleted file mode 100644 index 36d1abd..0000000 --- a/modules/core/src/test/java/org/gridgain/grid/kernal/GridCancelledJobsMetricsSelfTest.java +++ /dev/null @@ -1,214 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.gridgain.grid.kernal; - -import org.apache.ignite.*; -import org.apache.ignite.compute.*; -import org.apache.ignite.configuration.*; -import org.apache.ignite.resources.*; -import org.apache.ignite.spi.*; -import org.apache.ignite.spi.collision.*; -import org.apache.ignite.spi.discovery.*; -import org.apache.ignite.spi.discovery.tcp.*; -import org.apache.ignite.internal.util.typedef.*; -import org.apache.ignite.internal.util.lang.*; -import org.apache.ignite.testframework.*; -import org.apache.ignite.testframework.junits.common.*; - -import java.util.*; - -/** - * Cancelled jobs metrics self test. - */ -@GridCommonTest(group = "Kernal Self") -public class GridCancelledJobsMetricsSelfTest extends GridCommonAbstractTest { - - /** */ - private static GridCancelCollisionSpi colSpi = new GridCancelCollisionSpi(); - - /** */ - public GridCancelledJobsMetricsSelfTest() { - super(true); - } - - - /** {@inheritDoc} */ - @Override protected IgniteConfiguration getConfiguration() throws Exception { - IgniteConfiguration cfg = super.getConfiguration(); - - cfg.setCollisionSpi(colSpi); - - DiscoverySpi discoSpi = cfg.getDiscoverySpi(); - - assert discoSpi instanceof TcpDiscoverySpi; - - ((TcpDiscoverySpi)discoSpi).setHeartbeatFrequency(500); - - return cfg; - } - - /** - * @throws Exception If failed. - */ - public void testCancelledJobs() throws Exception { - final Ignite ignite = G.ignite(getTestGridName()); - - Collection<ComputeTaskFuture<?>> futs = new ArrayList<>(); - - IgniteCompute comp = ignite.compute().enableAsync(); - - for (int i = 1; i <= 10; i++) { - comp.execute(CancelledTask.class, null); - - futs.add(comp.future()); - } - - // Wait to be sure that metrics were updated. - GridTestUtils.waitForCondition(new GridAbsPredicate() { - @Override public boolean apply() { - return ignite.cluster().localNode().metrics().getTotalCancelledJobs() > 0; - } - }, 5000); - - colSpi.externalCollision(); - - for (ComputeTaskFuture<?> fut : futs) { - try { - fut.get(); - - assert false : "Job was not interrupted."; - } - catch (IgniteCheckedException e) { - if (e.hasCause(InterruptedException.class)) - throw new IgniteCheckedException("Test run has been interrupted.", e); - - info("Caught expected exception: " + e.getMessage()); - } - } - - // Job was cancelled and now we need to calculate metrics. - int totalCancelledJobs = ignite.cluster().localNode().metrics().getTotalCancelledJobs(); - - assert totalCancelledJobs == 10 : "Metrics were not updated. Expected 10 got " + totalCancelledJobs; - } - - /** - * - */ - private static final class CancelledTask extends ComputeTaskSplitAdapter<String, Object> { - /** {@inheritDoc} */ - @Override protected Collection<? extends ComputeJob> split(int gridSize, String arg) { - return Arrays.asList(new GridCancelledJob()); - } - - /** {@inheritDoc} */ - @Override public Object reduce(List<ComputeJobResult> results) { - assert results.get(0).isCancelled() : "Wrong job result status."; - - return null; - } - } - - /** - * - */ - private static final class GridCancelledJob extends ComputeJobAdapter { - /** {@inheritDoc} */ - @Override public String execute() throws IgniteCheckedException { - X.println("Executing job."); - - try { - Thread.sleep(Long.MAX_VALUE); - } - catch (InterruptedException ignored) { - try { - Thread.sleep(1000); - } - catch (InterruptedException e1) { - throw new IgniteCheckedException("Unexpected exception: ", e1); - } - - throw new IgniteCheckedException("Job got interrupted while waiting for cancellation."); - } - finally { - X.println("Finished job."); - } - - return null; - } - } - - /** - * - */ - @IgniteSpiMultipleInstancesSupport(true) - private static class GridCancelCollisionSpi extends IgniteSpiAdapter - implements CollisionSpi { - /** */ - @IgniteLoggerResource - private IgniteLogger log; - - /** */ - private CollisionExternalListener lsnr; - - /** {@inheritDoc} */ - @Override public void onCollision(CollisionContext ctx) { - Collection<CollisionJobContext> activeJobs = ctx.activeJobs(); - Collection<CollisionJobContext> waitJobs = ctx.waitingJobs(); - - for (CollisionJobContext job : waitJobs) - job.activate(); - - for (CollisionJobContext job : activeJobs) { - log.info("Cancelling job : " + job.getJob()); - - job.cancel(); - } - } - - /** {@inheritDoc} */ - @Override public void spiStart(String gridName) throws IgniteSpiException { - // Start SPI start stopwatch. - startStopwatch(); - - // Ack start. - if (log.isInfoEnabled()) - log.info(startInfo()); - } - - /** {@inheritDoc} */ - @Override public void spiStop() throws IgniteSpiException { - // Ack stop. - if (log.isInfoEnabled()) - log.info(stopInfo()); - } - - /** {@inheritDoc} */ - @Override public void setExternalCollisionListener(CollisionExternalListener lsnr) { - this.lsnr = lsnr; - } - - /** */ - public void externalCollision() { - CollisionExternalListener tmp = lsnr; - - if (tmp != null) - tmp.onExternalCollision(); - } - } -} http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/537f631a/modules/core/src/test/java/org/gridgain/grid/kernal/GridCollisionJobsContextSelfTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/gridgain/grid/kernal/GridCollisionJobsContextSelfTest.java b/modules/core/src/test/java/org/gridgain/grid/kernal/GridCollisionJobsContextSelfTest.java deleted file mode 100644 index 8ba2b79..0000000 --- a/modules/core/src/test/java/org/gridgain/grid/kernal/GridCollisionJobsContextSelfTest.java +++ /dev/null @@ -1,112 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.gridgain.grid.kernal; - -import org.apache.ignite.*; -import org.apache.ignite.configuration.*; -import org.apache.ignite.resources.*; -import org.apache.ignite.spi.*; -import org.apache.ignite.spi.collision.*; -import org.apache.ignite.internal.util.typedef.*; -import org.apache.ignite.testframework.junits.common.*; -import java.util.*; - -/** - * Collision job context test. - */ -@GridCommonTest(group = "Kernal Self") -public class GridCollisionJobsContextSelfTest extends GridCommonAbstractTest { - /** */ - public GridCollisionJobsContextSelfTest() { - super(/*start grid*/true); - } - - /** {@inheritDoc} */ - @Override protected void beforeTestsStarted() throws Exception { - Ignite ignite = G.ignite(getTestGridName()); - - assert ignite != null; - } - - /** {@inheritDoc} */ - @Override protected IgniteConfiguration getConfiguration(String gridName) throws Exception { - IgniteConfiguration cfg = super.getConfiguration(gridName); - - cfg.setCollisionSpi(new TestCollisionSpi()); - - return cfg; - } - - /** - * @throws Exception If test failed. - */ - public void testCollisionJobContext() throws Exception { - G.ignite(getTestGridName()).compute().execute(new GridTestTask(), "some-arg"); - } - - /** */ - @SuppressWarnings( {"PublicInnerClass"}) - @IgniteSpiMultipleInstancesSupport(true) - public static class TestCollisionSpi extends IgniteSpiAdapter implements CollisionSpi { - /** Grid logger. */ - @IgniteLoggerResource - private IgniteLogger log; - - /** {@inheritDoc} */ - @Override public void onCollision(CollisionContext ctx) { - Collection<CollisionJobContext> activeJobs = ctx.activeJobs(); - Collection<CollisionJobContext> waitJobs = ctx.waitingJobs(); - - assert waitJobs != null; - assert activeJobs != null; - - - for (CollisionJobContext job : waitJobs) { - assert job.getJob() != null; - assert job.getJobContext() != null; - assert job.getTaskSession() != null; - - assert job.getJob() instanceof GridTestJob : job.getJob(); - - job.activate(); - } - } - - /** {@inheritDoc} */ - @Override public void spiStart(String gridName) throws IgniteSpiException { - // Start SPI start stopwatch. - startStopwatch(); - - // Ack start. - if (log.isInfoEnabled()) - log.info(startInfo()); - } - - /** {@inheritDoc} */ - @Override public void spiStop() throws IgniteSpiException { - // Ack stop. - if (log.isInfoEnabled()) - log.info(stopInfo()); - } - - /** {@inheritDoc} */ - @Override public void setExternalCollisionListener(CollisionExternalListener lsnr) { - // No-op. - } - } -} http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/537f631a/modules/core/src/test/java/org/gridgain/grid/kernal/GridCommunicationSelfTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/gridgain/grid/kernal/GridCommunicationSelfTest.java b/modules/core/src/test/java/org/gridgain/grid/kernal/GridCommunicationSelfTest.java deleted file mode 100644 index f61a1cc..0000000 --- a/modules/core/src/test/java/org/gridgain/grid/kernal/GridCommunicationSelfTest.java +++ /dev/null @@ -1,121 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.gridgain.grid.kernal; - -import org.apache.ignite.*; -import org.apache.ignite.cluster.*; -import org.apache.ignite.internal.util.typedef.*; -import org.apache.ignite.testframework.junits.common.*; - -import java.io.*; -import java.util.*; - -/** - * Grid basic communication test. - */ -@GridCommonTest(group = "Kernal Self") -public class GridCommunicationSelfTest extends GridCommonAbstractTest { - /** */ - private static Ignite ignite; - - /** */ - public GridCommunicationSelfTest() { - super(/*start grid*/true); - } - - /** {@inheritDoc} */ - @Override protected void beforeTestsStarted() throws Exception { - ignite = G.ignite(getTestGridName()); - } - - /** - * @throws Exception If failed. - */ - public void testSendMessageToEmptyNodes() throws Exception { - Collection<ClusterNode> empty = Collections.emptyList(); - - try { - sendMessage(empty, 1); - } - catch (IllegalArgumentException ignored) { - // No-op. - } - } - - /** - * @param nodes Nodes to send message to. - * @param cntr Counter. - */ - private void sendMessage(Collection<ClusterNode> nodes, int cntr) { - try { - message(ignite.cluster().forNodes(nodes)).send(null, - new GridTestCommunicationMessage(cntr, ignite.cluster().localNode().id())); - } - catch (IgniteCheckedException e) { - error("Failed to send message.", e); - } - } - - /** - * Test message. - */ - @SuppressWarnings({"PublicInnerClass"}) - public static class GridTestCommunicationMessage implements Serializable { - /** */ - private final int msgId; - - /** */ - private final UUID sndId; - - /** - * @param msgId Message id. - * @param sndId Sender id. - */ - public GridTestCommunicationMessage(int msgId, UUID sndId) { - assert sndId != null; - - this.msgId = msgId; - this.sndId = sndId; - } - - /** - * @return Message id. - */ - public int getMessageId() { - return msgId; - } - - /** - * @return Sender id. - */ - public UUID getSenderId() { - return sndId; - } - - /** {@inheritDoc} */ - @Override public String toString() { - StringBuilder buf = new StringBuilder(); - - buf.append(getClass().getSimpleName()); - buf.append(" [msgId=").append(msgId); - buf.append(']'); - - return buf.toString(); - } - } -} http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/537f631a/modules/core/src/test/java/org/gridgain/grid/kernal/GridContinuousJobAnnotationSelfTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/gridgain/grid/kernal/GridContinuousJobAnnotationSelfTest.java b/modules/core/src/test/java/org/gridgain/grid/kernal/GridContinuousJobAnnotationSelfTest.java deleted file mode 100644 index 851ee14..0000000 --- a/modules/core/src/test/java/org/gridgain/grid/kernal/GridContinuousJobAnnotationSelfTest.java +++ /dev/null @@ -1,215 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.gridgain.grid.kernal; - -import org.apache.ignite.*; -import org.apache.ignite.cluster.*; -import org.apache.ignite.compute.*; -import org.apache.ignite.configuration.*; -import org.apache.ignite.resources.*; -import org.apache.ignite.internal.util.typedef.*; -import org.apache.ignite.testframework.junits.common.*; - -import java.io.*; -import java.util.*; -import java.util.concurrent.atomic.*; - -/** - * Test for various job callback annotations. - */ -@GridCommonTest(group = "Kernal Self") -public class GridContinuousJobAnnotationSelfTest extends GridCommonAbstractTest { - /** */ - private static final AtomicBoolean fail = new AtomicBoolean(); - - /** */ - private static final AtomicInteger afterSendCnt = new AtomicInteger(); - - /** */ - private static final AtomicInteger beforeFailoverCnt = new AtomicInteger(); - - /** */ - private static final AtomicReference<Exception> err = new AtomicReference<>(); - - /** {@inheritDoc} */ - @Override protected IgniteConfiguration getConfiguration(String gridName) throws Exception { - IgniteConfiguration c = super.getConfiguration(gridName); - - c.setMarshalLocalJobs(false); - - return c; - } - - /** - * @throws Exception If test failed. - */ - public void testJobAnnotation() throws Exception { - testContinuousJobAnnotation(TestJob.class); - } - - /** - * @throws Exception If test failed. - */ - public void testJobChildAnnotation() throws Exception { - testContinuousJobAnnotation(TestJobChild.class); - } - - /** - * @param jobCls Job class. - * @throws Exception If test failed. - */ - public void testContinuousJobAnnotation(Class<?> jobCls) throws Exception { - try { - Ignite ignite = startGrid(0); - startGrid(1); - - fail.set(true); - - ignite.compute().execute(TestTask.class, jobCls); - - Exception e = err.get(); - - if (e != null) - throw e; - } - finally { - stopGrid(0); - stopGrid(1); - } - - assertEquals(2, afterSendCnt.getAndSet(0)); - assertEquals(1, beforeFailoverCnt.getAndSet(0)); - } - - /** */ - @SuppressWarnings({"PublicInnerClass", "unused"}) - public static class TestTask implements ComputeTask<Object, Object> { - /** */ - @IgniteTaskContinuousMapperResource - private ComputeTaskContinuousMapper mapper; - - /** {@inheritDoc} */ - @Override public Map<? extends ComputeJob, ClusterNode> map(List<ClusterNode> subgrid, Object arg) throws IgniteCheckedException { - try { - mapper.send(((Class<ComputeJob>)arg).newInstance()); - } - catch (Exception e) { - throw new IgniteCheckedException("Job instantination failed.", e); - } - - return null; - } - - /** {@inheritDoc} */ - @Override public ComputeJobResultPolicy result(ComputeJobResult res, List<ComputeJobResult> received) - throws IgniteCheckedException { - if (res.getException() != null) { - if (res.getException() instanceof ComputeUserUndeclaredException) - throw new IgniteCheckedException("Job threw unexpected exception.", res.getException()); - - return ComputeJobResultPolicy.FAILOVER; - } - - return ComputeJobResultPolicy.WAIT; - } - - /** {@inheritDoc} */ - @Override public Object reduce(List<ComputeJobResult> results) throws IgniteCheckedException { - assert results.size() == 1 : "Unexpected result count: " + results.size(); - - return null; - } - } - - /** - * - */ - private static class TestJob extends ComputeJobAdapter { - /** */ - private boolean flag = true; - - /** */ - TestJob() { - X.println("Constructing TestJob [this=" + this + ", identity=" + System.identityHashCode(this) + "]"); - } - - - /** */ - @ComputeJobAfterSend - private void afterSend() { - X.println("AfterSend start TestJob [this=" + this + ", identity=" + System.identityHashCode(this) + - ", flag=" + flag + "]"); - - afterSendCnt.incrementAndGet(); - - flag = false; - - X.println("AfterSend end TestJob [this=" + this + ", identity=" + System.identityHashCode(this) + - ", flag=" + flag + "]"); - } - - /** */ - @ComputeJobBeforeFailover - private void beforeFailover() { - X.println("BeforeFailover start TestJob [this=" + this + ", identity=" + System.identityHashCode(this) + - ", flag=" + flag + "]"); - - beforeFailoverCnt.incrementAndGet(); - - flag = true; - - X.println("BeforeFailover end TestJob [this=" + this + ", identity=" + System.identityHashCode(this) + - ", flag=" + flag + "]"); - } - - /** {@inheritDoc} */ - @Override public Serializable execute() throws IgniteCheckedException { - X.println("Execute TestJob [this=" + this + ", identity=" + System.identityHashCode(this) + - ", flag=" + flag + "]"); - - if (!flag) { - String msg = "Flag is false on execute [this=" + this + ", identity=" + System.identityHashCode(this) + - ", flag=" + flag + "]"; - - X.println(msg); - - err.compareAndSet(null, new Exception(msg)); - } - - if (fail.get()) { - fail.set(false); - - throw new IgniteCheckedException("Expected test exception."); - } - - return null; - } - } - - /** - * - */ - private static class TestJobChild extends TestJob { - /** - * Required for reflectional creation. - */ - TestJobChild() { - // No-op. - } - } -} http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/537f631a/modules/core/src/test/java/org/gridgain/grid/kernal/GridContinuousJobSiblingsSelfTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/gridgain/grid/kernal/GridContinuousJobSiblingsSelfTest.java b/modules/core/src/test/java/org/gridgain/grid/kernal/GridContinuousJobSiblingsSelfTest.java deleted file mode 100644 index b83de04..0000000 --- a/modules/core/src/test/java/org/gridgain/grid/kernal/GridContinuousJobSiblingsSelfTest.java +++ /dev/null @@ -1,145 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.gridgain.grid.kernal; - -import org.apache.ignite.*; -import org.apache.ignite.compute.*; -import org.apache.ignite.resources.*; -import org.apache.ignite.testframework.junits.common.*; - -import java.io.*; -import java.util.*; - -/** - * Test continuous mapper with siblings. - */ -@GridCommonTest(group = "Kernal Self") -public class GridContinuousJobSiblingsSelfTest extends GridCommonAbstractTest { - /** */ - private static final int JOB_COUNT = 10; - - /** - * @throws Exception If test failed. - */ - public void testContinuousJobSiblings() throws Exception { - try { - Ignite ignite = startGrid(0); - startGrid(1); - - ignite.compute().execute(TestTask.class, null); - } - finally { - stopAllGrids(); - } - } - - /** - * @throws Exception If test failed. - */ - public void testContinuousJobSiblingsLocalNode() throws Exception { - try { - Ignite ignite = startGrid(0); - - compute(ignite.cluster().forLocal()).execute(TestTask.class, null); - } - finally { - stopAllGrids(); - } - } - - /** */ - private static class TestTask extends ComputeTaskSplitAdapter<Object, Object> { - /** */ - @IgniteTaskContinuousMapperResource - private ComputeTaskContinuousMapper mapper; - - /** */ - @IgniteTaskSessionResource - private ComputeTaskSession ses; - - /** */ - private volatile int jobCnt; - - /** {@inheritDoc} */ - @Override protected Collection<? extends ComputeJob> split(int gridSize, Object arg) throws IgniteCheckedException { - return Collections.singleton(new TestJob(++jobCnt)); - } - - /** {@inheritDoc} */ - @Override public ComputeJobResultPolicy result(ComputeJobResult res, List<ComputeJobResult> received) - throws IgniteCheckedException { - if (res.getException() != null) - throw new IgniteCheckedException("Job resulted in error: " + res, res.getException()); - - assert ses.getJobSiblings().size() == jobCnt; - - if (jobCnt < JOB_COUNT) { - mapper.send(new TestJob(++jobCnt)); - - assert ses.getJobSiblings().size() == jobCnt; - } - - return ComputeJobResultPolicy.WAIT; - } - - /** {@inheritDoc} */ - @Override public Object reduce(List<ComputeJobResult> results) throws IgniteCheckedException { - assertEquals(JOB_COUNT, results.size()); - - return null; - } - } - - /** */ - private static class TestJob extends ComputeJobAdapter { - /** */ - @IgniteTaskSessionResource - private ComputeTaskSession ses; - - /** */ - @IgniteLoggerResource - private IgniteLogger log; - - /** - * @param sibCnt Siblings count to check. - */ - TestJob(int sibCnt) { - super(sibCnt); - } - - /** {@inheritDoc} */ - @Override public Serializable execute() throws IgniteCheckedException { - assert ses != null; - assert argument(0) != null; - - Integer sibCnt = argument(0); - - log.info("Executing job."); - - assert sibCnt != null; - - Collection<ComputeJobSibling> sibs = ses.getJobSiblings(); - - assert sibs != null; - assert sibs.size() == sibCnt : "Unexpected siblings collection [expectedSize=" + sibCnt + - ", siblingsCnt=" + sibs.size() + ", siblings=" + sibs + ']'; - - return null; - } - } -} http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/537f631a/modules/core/src/test/java/org/gridgain/grid/kernal/GridContinuousTaskSelfTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/gridgain/grid/kernal/GridContinuousTaskSelfTest.java b/modules/core/src/test/java/org/gridgain/grid/kernal/GridContinuousTaskSelfTest.java deleted file mode 100644 index 68ae32d..0000000 --- a/modules/core/src/test/java/org/gridgain/grid/kernal/GridContinuousTaskSelfTest.java +++ /dev/null @@ -1,348 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.gridgain.grid.kernal; - -import org.apache.ignite.*; -import org.apache.ignite.cluster.*; -import org.apache.ignite.compute.*; -import org.apache.ignite.resources.*; -import org.apache.ignite.testframework.*; -import org.apache.ignite.testframework.junits.common.*; - -import java.io.*; -import java.util.*; - -/** - * Continuous task test. - */ -@GridCommonTest(group = "Kernal Self") -public class GridContinuousTaskSelfTest extends GridCommonAbstractTest { - /** */ - private static final int JOB_COUNT = 10; - - /** */ - private static final int THREAD_COUNT = 10; - - /** - * @throws Exception If test failed. - */ - public void testContinuousJobsChain() throws Exception { - try { - Ignite ignite = startGrid(0); - - IgniteCompute comp = ignite.compute().enableAsync(); - - comp.execute(TestJobsChainTask.class, true); - - ComputeTaskFuture<Integer> fut1 = comp.future(); - - comp.execute(TestJobsChainTask.class, false); - - ComputeTaskFuture<Integer> fut2 = comp.future(); - - assert fut1.get() == 55; - assert fut2.get() == 55; - } - finally { - stopGrid(0); - } - } - - /** - * @throws Exception If test failed. - */ - public void testContinuousJobsChainMultiThreaded() throws Exception { - try { - final Ignite ignite = startGrid(0); - startGrid(1); - - GridTestUtils.runMultiThreaded(new Runnable() { - /** {@inheritDoc} */ - @Override public void run() { - try { - IgniteCompute comp = ignite.compute().enableAsync(); - - comp.execute(TestJobsChainTask.class, true); - - ComputeTaskFuture<Integer> fut1 = comp.future(); - - comp.execute(TestJobsChainTask.class, false); - - ComputeTaskFuture<Integer> fut2 = comp.future(); - - assert fut1.get() == 55; - assert fut2.get() == 55; - } - catch (IgniteCheckedException e) { - assert false : "Test task failed: " + e; - } - } - - }, THREAD_COUNT, "continuous-jobs-chain"); - } - finally { - stopGrid(0); - stopGrid(1); - } - } - - /** - * @throws Exception If test failed. - */ - public void testContinuousJobsSessionChain() throws Exception { - try { - Ignite ignite = startGrid(0); - startGrid(1); - - ignite.compute().execute(SessionChainTestTask.class, false); - } - finally { - stopGrid(0); - stopGrid(1); - } - } - - /** - * @throws Exception If test failed. - */ - public void testContinuousSlowMap() throws Exception { - try { - Ignite ignite = startGrid(0); - - Integer cnt = ignite.compute().execute(SlowMapTestTask.class, null); - - assert cnt != null; - assert cnt == 2 : "Unexpected result: " + cnt; - } - finally { - stopGrid(0); - } - } - - /** */ - @SuppressWarnings({"PublicInnerClass"}) - public static class TestJobsChainTask implements ComputeTask<Boolean, Integer> { - /** */ - @IgniteTaskContinuousMapperResource - private ComputeTaskContinuousMapper mapper; - - /** */ - @IgniteLoggerResource - private IgniteLogger log; - - /** */ - private int cnt; - - /** {@inheritDoc} */ - @Override public Map<? extends ComputeJob, ClusterNode> map(List<ClusterNode> subgrid, Boolean arg) throws IgniteCheckedException { - assert mapper != null; - assert arg != null; - - ComputeJob job = new TestJob(++cnt); - - if (arg) { - mapper.send(job, subgrid.get(0)); - - log.info("Sent test task by continuous mapper: " + job); - } - else { - log.info("Will return job as map() result: " + job); - - return Collections.singletonMap(job, subgrid.get(0)); - } - - return null; - } - - /** {@inheritDoc} */ - @Override public ComputeJobResultPolicy result(ComputeJobResult res, List<ComputeJobResult> received) throws IgniteCheckedException { - assert mapper != null; - assert res.getException() == null : "Unexpected exception: " + res.getException(); - - log.info("Received job result [result=" + res + ", count=" + cnt + ']'); - - int tmp = ++cnt; - - if (tmp <= JOB_COUNT) { - mapper.send(new TestJob(tmp)); - - log.info("Sent test task by continuous mapper (from result() method)."); - } - - return ComputeJobResultPolicy.WAIT; - } - - /** {@inheritDoc} */ - @Override public Integer reduce(List<ComputeJobResult> results) throws IgniteCheckedException { - assert results.size() == 10 : "Unexpected result count: " + results.size(); - - log.info("Called reduce() method [results=" + results + ']'); - - int res = 0; - - for (ComputeJobResult result : results) { - assert result.getData() != null : "Unexpected result data (null): " + result; - - res += (Integer)result.getData(); - } - - return res; - } - } - - /** */ - @SuppressWarnings({"PublicInnerClass"}) - public static class TestJob extends ComputeJobAdapter { - /** */ - public TestJob() { /* No-op. */ } - - /** - * @param arg Job argument. - */ - public TestJob(Integer arg) { - super(arg); - } - - /** {@inheritDoc} */ - @Override public Serializable execute() throws IgniteCheckedException { - Integer i = argument(0); - - return i != null ? i : 0; - } - } - - /** */ - @SuppressWarnings({"PublicInnerClass"}) - @ComputeTaskSessionFullSupport - public static class SessionChainTestTask extends ComputeTaskSplitAdapter<Object, Object> { - /** */ - @IgniteTaskSessionResource - private ComputeTaskSession ses; - - /** */ - @IgniteTaskContinuousMapperResource - private ComputeTaskContinuousMapper mapper; - - /** */ - @IgniteLoggerResource - private IgniteLogger log; - - /** {@inheritDoc} */ - @Override protected Collection<? extends ComputeJob> split(int gridSize, Object arg) throws IgniteCheckedException { - ses.addAttributeListener(new ComputeTaskSessionAttributeListener() { - @Override public void onAttributeSet(Object key, Object val) { - if (key instanceof String) { - if (((String)key).startsWith("sendJob")) { - assert val instanceof Integer; - - int cnt = (Integer)val; - - if (cnt < JOB_COUNT) { - try { - mapper.send(new SessionChainTestJob(cnt)); - } - catch (IgniteCheckedException e) { - log.error("Failed to send new job.", e); - } - } - } - } - } - }, true); - - Collection<ComputeJob> jobs = new ArrayList<>(); - - for (int i = 0; i < JOB_COUNT; i++) - jobs.add(new SessionChainTestJob(0)); - - return jobs; - } - - /** {@inheritDoc} */ - @Override public Object reduce(List<ComputeJobResult> results) throws IgniteCheckedException { - assertEquals(JOB_COUNT * JOB_COUNT, results.size()); - - return null; - } - } - - /** */ - @SuppressWarnings({"PublicInnerClass"}) - public static class SessionChainTestJob extends ComputeJobAdapter { - /** */ - @IgniteTaskSessionResource - private ComputeTaskSession ses; - - /** */ - @IgniteJobContextResource - private ComputeJobContext ctx; - - /** */ - public SessionChainTestJob() { /* No-op. */} - - /** - * @param arg Job argument. - */ - public SessionChainTestJob(Integer arg) { - super(arg); - } - - /** {@inheritDoc} */ - @Override public Serializable execute() throws IgniteCheckedException { - Integer i = argument(0); - - int arg = i != null ? i : 0; - - ses.setAttribute("sendJob" + ctx.getJobId(), 1 + arg); - - return arg; - } - } - - /** */ - @SuppressWarnings({"PublicInnerClass"}) - public static class SlowMapTestTask extends ComputeTaskAdapter<Object, Integer> { - /** */ - @IgniteTaskContinuousMapperResource - private ComputeTaskContinuousMapper mapper; - - /** */ - private int cnt; - - /** {@inheritDoc} */ - @Override public Map<? extends ComputeJob, ClusterNode> map(List<ClusterNode> subgrid, Object arg) throws IgniteCheckedException { - mapper.send(new TestJob(++cnt)); - - try { - Thread.sleep(10000); - } - catch (InterruptedException e) { - throw new IgniteCheckedException("Job has been interrupted.", e); - } - - mapper.send(new TestJob(++cnt)); - - return null; - } - - /** {@inheritDoc} */ - @Override public Integer reduce(List<ComputeJobResult> results) throws IgniteCheckedException { - return results == null ? 0 : results.size(); - } - } -} http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/537f631a/modules/core/src/test/java/org/gridgain/grid/kernal/GridDeploymentMultiThreadedSelfTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/gridgain/grid/kernal/GridDeploymentMultiThreadedSelfTest.java b/modules/core/src/test/java/org/gridgain/grid/kernal/GridDeploymentMultiThreadedSelfTest.java deleted file mode 100644 index 9c4d5ea..0000000 --- a/modules/core/src/test/java/org/gridgain/grid/kernal/GridDeploymentMultiThreadedSelfTest.java +++ /dev/null @@ -1,121 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.gridgain.grid.kernal; - -import org.apache.ignite.*; -import org.apache.ignite.cluster.*; -import org.apache.ignite.compute.*; -import org.apache.ignite.internal.util.typedef.internal.*; -import org.apache.ignite.testframework.*; -import org.apache.ignite.testframework.junits.common.*; - -import java.util.*; -import java.util.concurrent.*; - -import static java.util.concurrent.TimeUnit.*; - -/** - * Task deployment tests. - */ -public class GridDeploymentMultiThreadedSelfTest extends GridCommonAbstractTest { - /** */ - private static final int THREAD_CNT = 20; - - /** */ - private static final int EXEC_CNT = 30000; - - /** - * @throws Exception If failed. - */ - public void testDeploy() throws Exception { - try { - final Ignite ignite = startGrid(0); - - ignite.compute().localDeployTask(GridDeploymentTestTask.class, GridDeploymentTestTask.class.getClassLoader()); - - assert ignite.compute().localTasks().get(GridDeploymentTestTask.class.getName()) != null; - - ignite.compute().undeployTask(GridDeploymentTestTask.class.getName()); - - final CyclicBarrier barrier = new CyclicBarrier(THREAD_CNT, new Runnable() { - private int iterCnt; - - @Override public void run() { - try { - ignite.compute().undeployTask(GridDeploymentTestTask.class.getName()); - - assert ignite.compute().localTasks().get(GridDeploymentTestTask.class.getName()) == null; - - if (++iterCnt % 100 == 0) - info("Iterations count: " + iterCnt); - } - catch (IgniteCheckedException e) { - U.error(log, "Failed to undeploy task message.", e); - - fail("See logs for details."); - } - } - }); - - GridTestUtils.runMultiThreaded(new Callable<Object>() { - @Override public Object call() throws Exception { - try { - for (int i = 0; i < EXEC_CNT; i++) { - barrier.await(2000, MILLISECONDS); - - ignite.compute().localDeployTask(GridDeploymentTestTask.class, - GridDeploymentTestTask.class.getClassLoader()); - - assert ignite.compute().localTasks().get(GridDeploymentTestTask.class.getName()) != null; - } - } - catch (Exception e) { - U.error(log, "Test failed.", e); - - throw e; - } - finally { - info("Thread finished."); - } - - return null; - } - }, THREAD_CNT, "grid-load-test-thread"); - } - finally { - stopAllGrids(); - } - } - - /** - * Test task. - */ - private static class GridDeploymentTestTask extends ComputeTaskAdapter<Object, Object> { - /** {@inheritDoc} */ - @Override public Map<? extends ComputeJob, ClusterNode> map(List<ClusterNode> subgrid, Object arg) throws IgniteCheckedException { - assert false; - - return Collections.emptyMap(); - } - - /** {@inheritDoc} */ - @Override public Object reduce(List<ComputeJobResult> results) throws IgniteCheckedException { - return null; - } - } -} http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/537f631a/modules/core/src/test/java/org/gridgain/grid/kernal/GridDeploymentSelfTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/gridgain/grid/kernal/GridDeploymentSelfTest.java b/modules/core/src/test/java/org/gridgain/grid/kernal/GridDeploymentSelfTest.java deleted file mode 100644 index 08e04e6..0000000 --- a/modules/core/src/test/java/org/gridgain/grid/kernal/GridDeploymentSelfTest.java +++ /dev/null @@ -1,535 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.gridgain.grid.kernal; - -import org.apache.ignite.*; -import org.apache.ignite.cluster.*; -import org.apache.ignite.compute.*; -import org.apache.ignite.configuration.*; -import org.apache.ignite.events.*; -import org.apache.ignite.lang.*; -import org.apache.ignite.resources.*; -import org.apache.ignite.spi.*; -import org.apache.ignite.spi.deployment.local.*; -import org.apache.ignite.testframework.junits.common.*; - -import java.io.*; -import java.util.*; - -import static org.apache.ignite.events.IgniteEventType.*; - -/** - * Task deployment tests. - */ -@SuppressWarnings("unchecked") -@GridCommonTest(group = "Kernal Self") -public class GridDeploymentSelfTest extends GridCommonAbstractTest { - /** */ - private TestDeploymentSpi depSpi; - - /** */ - private boolean p2pEnabled = true; - - /** {@inheritDoc} */ - @Override protected void beforeTest() throws Exception { - depSpi = new TestDeploymentSpi(); - } - - /** {@inheritDoc} */ - @Override protected void afterTest() throws Exception { - depSpi = null; - } - - /** {@inheritDoc} */ - @Override protected IgniteConfiguration getConfiguration(String gridName) throws Exception { - IgniteConfiguration cfg = super.getConfiguration(gridName); - - cfg.setDeploymentSpi(depSpi = new TestDeploymentSpi()); - cfg.setPeerClassLoadingEnabled(p2pEnabled); - - // Disable cache since it can deploy some classes during start process. - cfg.setCacheConfiguration(); - - return cfg; - } - - /** */ - public GridDeploymentSelfTest() { - super(/*start grid*/false); - } - - /** - * @param ignite Grid. - * @param taskName Task name. - * @return {@code True} if task is not deployed. - */ - private boolean checkUndeployed(Ignite ignite, String taskName) { - return ignite.compute().localTasks().get(taskName) == null; - } - - /** - * @param ignite Grid. - */ - @SuppressWarnings({"CatchGenericClass"}) - private void stopGrid(Ignite ignite) { - try { - if (ignite != null) - stopGrid(ignite.name()); - } - catch (Throwable e) { - error("Got error when stopping grid.", e); - } - } - - /** - * @throws Exception If failed. - */ - public void testDeploy() throws Exception { - Ignite ignite = startGrid(getTestGridName()); - - try { - ignite.compute().localDeployTask(GridDeploymentTestTask.class, GridDeploymentTestTask.class.getClassLoader()); - - assert depSpi.getRegisterCount() == 1 : "Invalid deploy count: " + depSpi.getRegisterCount(); - assert depSpi.getUnregisterCount() == 0 : "Invalid undeploy count: " + depSpi.getUnregisterCount(); - - assert ignite.compute().localTasks().get(GridDeploymentTestTask.class.getName()) != null; - - ignite.compute().undeployTask(GridDeploymentTestTask.class.getName()); - - assert depSpi.getRegisterCount() == 1 : "Invalid deploy count: " + depSpi.getRegisterCount(); - assert depSpi.getUnregisterCount() == 1 : "Invalid undeploy count: " + depSpi.getUnregisterCount(); - - assert checkUndeployed(ignite, GridDeploymentTestTask.class.getName()); - } - finally { - stopGrid(ignite); - } - } - - /** - * @throws Exception If failed. - */ - public void testIgnoreDeploymentSpi() throws Exception { - // If peer class loading is disabled and local deployment SPI - // is configured, SPI should be ignored. - p2pEnabled = false; - - Ignite ignite = startGrid(getTestGridName()); - - try { - ignite.compute().localDeployTask(GridDeploymentTestTask.class, GridDeploymentTestTask.class.getClassLoader()); - - assert depSpi.getRegisterCount() == 0 : "Invalid deploy count: " + depSpi.getRegisterCount(); - assert depSpi.getUnregisterCount() == 0 : "Invalid undeploy count: " + depSpi.getUnregisterCount(); - - ignite.compute().undeployTask(GridDeploymentTestTask.class.getName()); - - assert depSpi.getRegisterCount() == 0 : "Invalid deploy count: " + depSpi.getRegisterCount(); - assert depSpi.getUnregisterCount() == 0 : "Invalid undeploy count: " + depSpi.getUnregisterCount(); - } - finally { - stopGrid(ignite); - } - } - - /** - * @throws Exception If failed. - */ - public void testRedeploy() throws Exception { - Ignite ignite = startGrid(getTestGridName()); - - try { - // Added to work with P2P. - ignite.compute().localDeployTask(GridDeploymentTestTask.class, GridDeploymentTestTask.class.getClassLoader()); - - // Check auto-deploy. - ComputeTaskFuture<?> fut = executeAsync(ignite.compute(), GridDeploymentTestTask.class.getName(), null); - - fut.get(); - - assert depSpi.getRegisterCount() == 1 : "Invalid deploy count: " + depSpi.getRegisterCount(); - assert depSpi.getUnregisterCount() == 0 : "Invalid undeploy count: " + depSpi.getUnregisterCount(); - - assert ignite.compute().localTasks().get(GridDeploymentTestTask.class.getName()) != null; - - // Check 2nd execute. - fut = executeAsync(ignite.compute(), GridDeploymentTestTask.class.getName(), null); - - fut.get(); - - assert depSpi.getRegisterCount() == 1 : "Invalid deploy count: " + depSpi.getRegisterCount(); - assert depSpi.getUnregisterCount() == 0 : "Invalid undeploy count: " + depSpi.getUnregisterCount(); - - assert ignite.compute().localTasks().get(GridDeploymentTestTask.class.getName()) != null; - - // Redeploy, should be NO-OP for the same task. - ignite.compute().localDeployTask(GridDeploymentTestTask.class, GridDeploymentTestTask.class.getClassLoader()); - - assert ignite.compute().localTasks().get(GridDeploymentTestTask.class.getName()) != null; - - assert depSpi.getRegisterCount() == 1 : "Invalid deploy count: " + depSpi.getRegisterCount(); - assert depSpi.getUnregisterCount() == 0 : "Invalid undeploy count: " + depSpi.getUnregisterCount(); - - // Check 2nd execute. - fut = executeAsync(ignite.compute(), GridDeploymentTestTask.class.getName(), null); - - fut.get(); - - assert ignite.compute().localTasks().get(GridDeploymentTestTask.class.getName()) != null; - - assert depSpi.getRegisterCount() == 1 : "Invalid deploy count: " + depSpi.getRegisterCount(); - assert depSpi.getUnregisterCount() == 0 : "Invalid undeploy count: " + depSpi.getUnregisterCount(); - - // Check undeploy. - ignite.compute().undeployTask(GridDeploymentTestTask.class.getName()); - - assert ignite.compute().localTasks().get(GridDeploymentTestTask.class.getName()) == null; - - assert depSpi.getRegisterCount() == 1 : "Invalid deploy count: " + depSpi.getRegisterCount(); - assert depSpi.getUnregisterCount() == 1 : "Invalid undeploy count: " + depSpi.getUnregisterCount(); - - // Added to work with P2P - ignite.compute().localDeployTask(GridDeploymentTestTask.class, GridDeploymentTestTask.class.getClassLoader()); - - // Check auto-deploy. - executeAsync(ignite.compute(), GridDeploymentTestTask.class.getName(), null); - - assert depSpi.getRegisterCount() == 2; - assert depSpi.getUnregisterCount() == 1; - - assert ignite.compute().localTasks().get(GridDeploymentTestTask.class.getName()) != null; - - ignite.compute().localDeployTask(GridDeploymentTestTask1.class, - GridDeploymentTestTask1.class.getClassLoader()); - - try { - ignite.compute().localDeployTask(GridDeploymentTestTask2.class, - GridDeploymentTestTask2.class.getClassLoader()); - - assert false : "Should not be able to deploy 2 task with same task name"; - } - catch (IgniteCheckedException e) { - info("Received expected grid exception: " + e); - } - - assert depSpi.getRegisterCount() == 3 : "Invalid register count: " + depSpi.getRegisterCount(); - assert depSpi.getUnregisterCount() == 1 : "Invalid unregister count: " + depSpi.getUnregisterCount(); - - assert ignite.compute().localTasks().get("GridDeploymentTestTask") != null; - - Class<? extends ComputeTask<?, ?>> cls = ignite.compute().localTasks().get("GridDeploymentTestTask"); - - assert cls.getName().equals(GridDeploymentTestTask1.class.getName()); - } - finally { - stopGrid(ignite); - } - } - - /** - * @throws Exception If failed. - */ - @SuppressWarnings({"BusyWait"}) - public void testDeployOnTwoNodes() throws Exception { - Ignite ignite1 = startGrid(getTestGridName() + '1'); - Ignite ignite2 = startGrid(getTestGridName() + '2'); - - try { - assert !ignite1.cluster().forRemotes().nodes().isEmpty() : ignite1.cluster().forRemotes(); - assert !ignite2.cluster().forRemotes().nodes().isEmpty() : ignite2.cluster().forRemotes(); - - ignite1.compute().localDeployTask(GridDeploymentTestTask.class, GridDeploymentTestTask.class.getClassLoader()); - ignite2.compute().localDeployTask(GridDeploymentTestTask.class, GridDeploymentTestTask.class.getClassLoader()); - - assert ignite1.compute().localTasks().get(GridDeploymentTestTask.class.getName()) != null; - assert ignite2.compute().localTasks().get(GridDeploymentTestTask.class.getName()) != null; - - ignite1.compute().undeployTask(GridDeploymentTestTask.class.getName()); - - assert checkUndeployed(ignite1, GridDeploymentTestTask.class.getName()); - - int cnt = 0; - - boolean taskUndeployed = false; - - while (cnt++ < 10 && !taskUndeployed) { - taskUndeployed = checkUndeployed(ignite2, GridDeploymentTestTask.class.getName()); - - if (!taskUndeployed) - Thread.sleep(500); - } - - // Undeploy on one node should undeploy explicitly deployed - // tasks on the others - assert taskUndeployed; - } - finally { - stopGrid(ignite1); - stopGrid(ignite2); - } - } - - /** - * @throws Exception If failed. - */ - public void testDeployEvents() throws Exception { - Ignite ignite = startGrid(getTestGridName()); - - try { - DeploymentEventListener evtLsnr = new DeploymentEventListener(); - - ignite.events().localListen(evtLsnr, EVT_TASK_DEPLOYED, EVT_TASK_UNDEPLOYED); - - // Should generate 1st deployment event. - ignite.compute().localDeployTask(GridDeploymentTestTask.class, GridDeploymentTestTask.class.getClassLoader()); - - assert depSpi.getRegisterCount() == 1 : "Invalid deploy count: " + depSpi.getRegisterCount(); - assert depSpi.getUnregisterCount() == 0 : "Invalid undeploy count: " + depSpi.getUnregisterCount(); - - assert ignite.compute().localTasks().get(GridDeploymentTestTask.class.getName()) != null; - - // Should generate 1st un-deployment event. - ignite.compute().undeployTask(GridDeploymentTestTask.class.getName()); - - assert depSpi.getRegisterCount() == 1 : "Invalid deploy count: " + depSpi.getRegisterCount(); - assert depSpi.getUnregisterCount() == 1 : "Invalid undeploy count: " + depSpi.getUnregisterCount(); - - assert checkUndeployed(ignite, GridDeploymentTestTask.class.getName()); - - // Should generate 2nd deployment event. - ignite.compute().localDeployTask(GridDeploymentTestTask.class, GridDeploymentTestTask.class.getClassLoader()); - - assert depSpi.getRegisterCount() == 2 : "Invalid deploy count: " + depSpi.getRegisterCount(); - assert depSpi.getUnregisterCount() == 1 : "Invalid undeploy count: " + depSpi.getUnregisterCount(); - - assert ignite.compute().localTasks().get(GridDeploymentTestTask.class.getName()) != null; - - // Should generate 2nd un-deployment event. - ignite.compute().undeployTask(GridDeploymentTestTask.class.getName()); - - assert depSpi.getRegisterCount() == 2 : "Invalid deploy count: " + depSpi.getRegisterCount(); - assert depSpi.getUnregisterCount() == 2 : "Invalid undeploy count: " + depSpi.getUnregisterCount(); - - assert checkUndeployed(ignite, GridDeploymentTestTask.class.getName()); - - // Should generate 3rd deployment event. - ignite.compute().localDeployTask(GridDeploymentTestTask.class, GridDeploymentTestTask.class.getClassLoader()); - - assert depSpi.getRegisterCount() == 3 : "Invalid deploy count: " + depSpi.getRegisterCount(); - assert depSpi.getUnregisterCount() == 2 : "Invalid undeploy count: " + depSpi.getUnregisterCount(); - - assert ignite.compute().localTasks().get(GridDeploymentTestTask.class.getName()) != null; - - // Should generate 3rd un-deployment event. - ignite.compute().undeployTask(GridDeploymentTestTask.class.getName()); - - assert depSpi.getRegisterCount() == 3 : "Invalid deploy count: " + depSpi.getRegisterCount(); - assert depSpi.getUnregisterCount() == 3 : "Invalid undeploy count: " + depSpi.getUnregisterCount(); - - assert checkUndeployed(ignite, GridDeploymentTestTask.class.getName()); - - assert evtLsnr.getDeployCount() == 3 : "Invalid number of deployment events" + evtLsnr.getDeployCount(); - assert evtLsnr.getUndeployCount() == 3 : "Invalid number of un-deployment events" + evtLsnr.getDeployCount(); - } - finally { - stopGrid(ignite); - } - } - - /** - * Test deployable task. - */ - private static class GridDeploymentTestTask extends ComputeTaskAdapter<Object, Object> { - /** */ - @IgniteLoggerResource - private IgniteLogger log; - - /** {@inheritDoc} */ - @Override public Map<? extends ComputeJob, ClusterNode> map(List<ClusterNode> subgrid, Object arg) - throws IgniteCheckedException { - Map<ComputeJobAdapter, ClusterNode> map = new HashMap<>(subgrid.size()); - - for (ClusterNode node : subgrid) { - map.put(new ComputeJobAdapter() { - @Override public Serializable execute() { - if (log.isInfoEnabled()) - log.info("Executing grid job: " + this); - - return null; - } - }, node); - } - - return map; - } - - /** {@inheritDoc} */ - @Override public Object reduce(List<ComputeJobResult> results) throws IgniteCheckedException { - return null; - } - } - - /** - * Test deployable named task. - */ - @ComputeTaskName(value = "GridDeploymentTestTask") - private static class GridDeploymentTestTask1 extends ComputeTaskAdapter<Object, Object> { - /** */ - @IgniteLoggerResource - private IgniteLogger log; - - /** {@inheritDoc} */ - @Override public Map<? extends ComputeJob, ClusterNode> map(List<ClusterNode> subgrid, Object arg) throws IgniteCheckedException { - Map<ComputeJobAdapter, ClusterNode> map = new HashMap<>(subgrid.size()); - - for (ClusterNode node : subgrid) { - map.put(new ComputeJobAdapter() { - @Override public Serializable execute() { - log.info("Executing grid job: " + this); - - return null; - } - }, node); - } - - return map; - } - - /** {@inheritDoc} */ - @Override public Object reduce(List<ComputeJobResult> results) throws IgniteCheckedException { - return null; - } - } - - /** - * Test deployable named task. - */ - @ComputeTaskName(value = "GridDeploymentTestTask") - private static class GridDeploymentTestTask2 extends ComputeTaskAdapter<Object, Object> { - /** */ - @IgniteLoggerResource - private IgniteLogger log; - - /** {@inheritDoc} */ - @Override public Map<? extends ComputeJob, ClusterNode> map(List<ClusterNode> subgrid, Object arg) throws IgniteCheckedException { - Map<ComputeJobAdapter, ClusterNode> map = new HashMap<>(subgrid.size()); - - for (ClusterNode node : subgrid) { - map.put(new ComputeJobAdapter() { - @Override public Serializable execute() { - if (log.isInfoEnabled()) - log.info("Executing grid job: " + this); - - return null; - } - }, node); - } - - return map; - } - - /** {@inheritDoc} */ - @Override public Object reduce(List<ComputeJobResult> results) throws IgniteCheckedException { - return null; - } - } - - /** - * - * Test deployment spi. - */ - private static class TestDeploymentSpi extends LocalDeploymentSpi { - /** */ - private volatile int deployCnt; - - /** */ - private volatile int undeployCnt; - - /** {@inheritDoc} */ - @Override public boolean register(ClassLoader ldr, Class rsrc) throws IgniteSpiException { - if (super.register(ldr, rsrc)) { - deployCnt++; - - return true; - } - - return false; - } - - /** {@inheritDoc} */ - @Override public boolean unregister(String rsrcName) { - undeployCnt++; - - return super.unregister(rsrcName); - } - - /** - * @return Deploy count. - */ - public int getRegisterCount() { - return deployCnt; - } - - /** - * @return Undeploy count. - */ - public int getUnregisterCount() { - return undeployCnt; - } - } - - /** - * Deployment listener. - */ - private static class DeploymentEventListener implements IgnitePredicate<IgniteEvent> { - /** */ - private int depCnt; - - /** */ - private int undepCnt; - - /** - * Gonna process task deployment events only. - * - * @param evt local grid event. - */ - @Override public boolean apply(IgniteEvent evt) { - if (evt.type() == EVT_TASK_DEPLOYED) - depCnt++; - else if (evt.type() == EVT_TASK_UNDEPLOYED) - undepCnt++; - - return true; - } - - /** - * @return Deploy count. - */ - public int getDeployCount() { - return depCnt; - } - - /** - * @return Undeploy count. - */ - public int getUndeployCount() { - return undepCnt; - } - } -}