/* * 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.apache.ignite.spi.deployment.uri.scanners.file; import java.io.File; import java.util.Collections; import java.util.List; import java.util.UUID; import org.apache.ignite.internal.util.typedef.internal.U; import org.apache.ignite.spi.deployment.uri.UriDeploymentSpi; import org.apache.ignite.testframework.config.GridTestProperties; import org.apache.ignite.testframework.junits.spi.GridSpiAbstractTest; import org.apache.ignite.testframework.junits.spi.GridSpiTest; import org.apache.ignite.testframework.junits.spi.GridSpiTestConfig; /** * Tests correct task undeployment after source file removing. */ @GridSpiTest(spi = UriDeploymentSpi.class, group = "Deployment SPI") public class GridFileDeploymentUndeploySelfTest extends GridSpiAbstractTest<UriDeploymentSpi> { /** */ private static String tmpDirPath = System.getProperty("java.io.tmpdir") + '/' + UUID.randomUUID(); /** */ private static final String GAR_FILE_NAME = "deployfile.gar"; /** {@inheritDoc} */ @Override protected void beforeSpiStarted() throws Exception { File deployDir = new File(tmpDirPath); assert !deployDir.exists() : "Directory exists " + deployDir.getCanonicalPath(); boolean mkdir = deployDir.mkdir(); assert mkdir : "Unable to create directory: " + deployDir.getCanonicalPath(); info("URI list for test [uriList=" + getUriList() + ']'); super.beforeSpiStarted(); } /** * @throws Exception If failed. */ public void testUndeployGarFile() throws Exception { String garFilePath = U.resolveIgnitePath(GridTestProperties.getProperty("ant.urideployment.gar.file")).getPath(); File garFile = new File(garFilePath); assert garFile.exists() : "Test gar file not found [path=" + garFilePath + ']'; File newGarFile = new File(tmpDirPath + '/' + GAR_FILE_NAME); assert !newGarFile.exists(); U.copy(garFile, newGarFile, false); assert newGarFile.exists(); Thread.sleep(UriDeploymentFileScanner.DFLT_SCAN_FREQ + 3000); assert getSpi().findResource("org.apache.ignite.spi.deployment.uri.tasks.GridUriDeploymentTestTask3") != null : "Failed to find resource for added GAR file."; assert getSpi().findResource("GridUriDeploymentTestWithNameTask3") != null; boolean del = newGarFile.delete(); assert del : "Filed to delete file [path=" + newGarFile.getAbsolutePath() + ']'; assert !newGarFile.exists(); Thread.sleep(UriDeploymentFileScanner.DFLT_SCAN_FREQ + 3000); assert getSpi().findResource("org.apache.ignite.spi.deployment.uri.tasks.GridUriDeploymentTestTask3") == null; assert getSpi().findResource("GridUriDeploymentTestWithNameTask3") == null; } /** * @throws Exception If failed. */ @Override protected void afterTestsStopped() throws Exception { File deployDir = new File(tmpDirPath); if (deployDir.exists()) deployDir.delete(); } /** * @return List of URI to use as deployment source. */ @GridSpiTestConfig public List<String> getUriList() { return Collections.singletonList("file:///" + tmpDirPath); } }