/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package pieShareAppITs; import commonTestTools.TestFileUtils; import java.io.File; import org.apache.commons.io.FileUtils; import org.pieShare.pieShareApp.model.PieShareConfiguration; import org.pieShare.pieShareApp.model.PieUser; import org.pieShare.pieShareApp.model.message.api.IFileTransferCompleteMessage; import org.pieShare.pieShareApp.model.message.metaMessage.FileTransferCompleteMessage; import org.pieShare.pieShareApp.task.eventTasks.FileTransferCompleteTask; import org.pieShare.pieTools.pieUtilities.service.pieExecutorService.PieExecutorTaskFactory; import org.pieShare.pieTools.pieUtilities.service.pieExecutorService.api.IPieExecutorTaskFactory; import org.pieShare.pieTools.pieUtilities.service.pieLogger.PieLogger; import org.springframework.context.annotation.AnnotationConfigApplicationContext; import static org.testng.Assert.assertTrue; import static org.testng.Assert.assertTrue; import static org.testng.Assert.assertTrue; import static org.testng.Assert.fail; import static org.testng.Assert.fail; import static org.testng.Assert.fail; import org.testng.annotations.*; import pieShareAppITs.helper.ITTasksCounter; import pieShareAppITs.helper.ITUtil; import pieShareAppITs.helper.runner.FileSyncMain; import pieShareAppITs.helper.tasks.TestTask; /** * * @author Svetoslav */ public class SyncOneFileIT { private AnnotationConfigApplicationContext context; private Process process; public SyncOneFileIT() { } @BeforeClass public static void setUpClass() throws Exception { ITUtil.setUpEnviroment(true); } @BeforeMethod public void setUpMethod() throws Exception { ITUtil.performTearDownDelete(); context = ITUtil.getContext(); } @AfterMethod public void tearDownMethod() throws Exception { process.destroy(); ITUtil.performTearDown(context); } @Test(timeOut = 120000) public void syncOneFileTest() throws Exception { PieLogger.info(this.getClass(), "IPv4Prop: {}", System.getProperty("java.net.preferIPv4Stack", "false")); ITTasksCounter counter = context.getBean(ITTasksCounter.class); PieUser user = context.getBean("pieUser", PieUser.class); PieShareConfiguration config = user.getPieShareConfiguration(); IPieExecutorTaskFactory executorFactory = context.getBean("pieExecutorTaskFactory", PieExecutorTaskFactory.class); executorFactory.removeTaskRegistration(FileTransferCompleteMessage.class); executorFactory.registerTask(FileTransferCompleteMessage.class, TestTask.class); IPieExecutorTaskFactory testExecutorFacotry = context.getBean("testTaskFactory", PieExecutorTaskFactory.class); testExecutorFacotry.registerTask(FileTransferCompleteMessage.class, FileTransferCompleteTask.class); System.out.println("Starting bot!"); this.process = ITUtil.startProcess(FileSyncMain.class); ITUtil.executeLoginToTestCloud(context); ITUtil.waitForProcessToStartup(this.process); System.out.println("Bot started!"); File filex = new File(config.getWorkingDir().getParent(), "test.txt"); TestFileUtils.createFile(filex, 2); File fileMain = new File(config.getWorkingDir(), "test.txt"); PieUser botUser = context.getBean("botPieUser", PieUser.class); PieShareConfiguration botConfig = botUser.getPieShareConfiguration(); File fileBot = new File(botConfig.getWorkingDir(), "test.txt"); FileUtils.moveFile(filex, fileMain); //FileUtils.moveFile(filex, fileBot); System.out.println("Waiting for transfer complete!"); while (counter.getCount(FileTransferCompleteTask.class) < 1) { Thread.sleep(5000); } System.out.println("Recived transfer complete!"); if (counter.getCount(FileTransferCompleteTask.class) == 1) { boolean filesAreEqual = FileUtils.contentEquals(fileMain, fileBot); assertTrue(filesAreEqual); assertTrue(ITUtil.waitForFileToBeFreed(fileMain, 30)); assertTrue(ITUtil.waitForFileToBeFreed(fileBot, 30)); } else { fail("To much file transerfers?!"); } } @Test(timeOut = 180000) public void syncFiveFilesTest() throws Exception { PieLogger.info(this.getClass(), "IPv4Prop: {}", System.getProperty("java.net.preferIPv4Stack", "false")); ITTasksCounter counter = context.getBean(ITTasksCounter.class); PieUser user = context.getBean("pieUser", PieUser.class); PieShareConfiguration config = user.getPieShareConfiguration(); IPieExecutorTaskFactory executorFactory = context.getBean("pieExecutorTaskFactory", PieExecutorTaskFactory.class); executorFactory.removeTaskRegistration(FileTransferCompleteMessage.class); executorFactory.registerTask(FileTransferCompleteMessage.class, TestTask.class); IPieExecutorTaskFactory testExecutorFacotry = context.getBean("testTaskFactory", PieExecutorTaskFactory.class); testExecutorFacotry.registerTask(FileTransferCompleteMessage.class, FileTransferCompleteTask.class); ITUtil.executeLoginToTestCloud(context); System.out.println("Creating files!"); for (int i = 0; i < 5; i++) { String fileName = String.format("testFile_%s", i); File file = new File(config.getWorkingDir(), fileName); TestFileUtils.createFile(file, 5); } System.out.println("Starting bot!"); this.process = ITUtil.startProcess(FileSyncMain.class); ITUtil.waitForProcessToStartup(this.process); System.out.println("Bot started!"); /*File filex = new File(config.getWorkingDir().getParent(), "test.txt"); TestFileUtils.createFile(filex, 2); File fileMain = new File(config.getWorkingDir(), "test.txt");*/ PieUser botUser = context.getBean("botPieUser", PieUser.class); PieShareConfiguration botConfig = botUser.getPieShareConfiguration(); //File fileBot = new File(botConfig.getWorkingDir(), "test.txt"); //FileUtils.moveFile(filex, fileMain); //FileUtils.moveFile(filex, fileBot); System.out.println("Waiting for transfer complete!"); while (counter.getCount(FileTransferCompleteTask.class) < 5) { Thread.sleep(5000); } System.out.println("Recived transfer complete!"); if (counter.getCount(FileTransferCompleteTask.class) == 5) { boolean filesAreEqual = true; for (int i = 0; filesAreEqual && i < 5; i++) { String fileName = String.format("testFile_%s", i); File file = new File(user.getPieShareConfiguration().getWorkingDir(), fileName); File fileBot = new File(botConfig.getWorkingDir(), fileName); assertTrue(ITUtil.waitForFileToBeFreed(file, 30)); assertTrue(ITUtil.waitForFileToBeFreed(fileBot, 30)); filesAreEqual = FileUtils.contentEquals(file, fileBot); assertTrue(ITUtil.waitForFileToBeFreed(file, 30)); assertTrue(ITUtil.waitForFileToBeFreed(fileBot, 30)); } assertTrue(filesAreEqual); } else { fail("To much file transerfers?!"); } } }