public void testTaskCompletedForCallingShutDown() { final Vector<Boolean> callList = new Vector<Boolean>(); CorpActionDownloadManager manager = new CorpActionDownloadManager(null) { { totalTaskCount = 2; completedTaskCount = 1; } @Override void performConsolidation(CorpActionDownloader completedTask) {} @Override protected void addToInCompleteList(String completedTask) {} @Override void shutDownManager() { callList.add(true); } }; CorpActionDownloader downloader = new CorpActionDownloader("", null) { @Override public boolean isCompleted() { return false; } }; manager.taskCompleted(downloader); assertEquals(100, manager.getProgress()); assertTrue(manager.isTaskCompleted()); assertEquals(1, callList.size()); }
public void testTaskCompletedForInCompletedTask() { final Vector<String> callList = new Vector<String>(); CorpActionDownloadManager manager = new CorpActionDownloadManager(null) { { totalTaskCount = 5; completedTaskCount = 1; } @Override void performConsolidation(CorpActionDownloader completedTask) { fail("Should come only if Task is complete"); } protected void addToInCompleteList(String completedTask) { callList.add(completedTask); } @Override void shutDownManager() { fail("Should come only if all tasks are complete"); } }; String stockCode = "STOCK1"; CorpActionDownloader downloader = new CorpActionDownloader(stockCode, null) { @Override public boolean isCompleted() { return false; } }; manager.taskCompleted(downloader); assertEquals(1, callList.size()); assertTrue(callList.contains(stockCode)); assertEquals(40, manager.getProgress()); assertFalse(manager.isTaskCompleted()); }
public void testProgressData() throws InterruptedException { final Vector<Integer> terminateDetails = new Vector<Integer>(); int maxThreadCount = 2; ThreadPoolExecutor executor = new ThreadPoolExecutor( maxThreadCount, maxThreadCount, 0L, TimeUnit.SECONDS, new LinkedBlockingQueue<Runnable>()); CorpActionDownloadManager manager = new CorpActionDownloadManager(executor) { @Override protected Vector<String> getStockList() { Vector<String> retVal = new Vector<String>(); retVal.add(STOCKCODE1); retVal.add(STOCKCODE2); retVal.add(STOCKCODE3); return retVal; } @Override CompanyDAO getCompanyDAO() { return new CompanyDAO() { @Override public Hashtable<PMDate, Vector<CompanyActionVO>> getConsolidatedActionData() { return new Hashtable<PMDate, Vector<CompanyActionVO>>(); } @Override public boolean writeConsolidatedActionData( Hashtable<PMDate, Vector<CompanyActionVO>> consolidatedData) { return true; } }; } @Override CorpActionDownloader createDownloader(String stockCode) { return new CorpActionDownloader(stockCode, this) { @Override protected void performTask() { int waitCount = 0; if (getStockCode().equals(STOCKCODE1)) { waitCount = 1; } else if (getStockCode().equals(STOCKCODE2)) { waitCount = 2; } else { waitCount = 3; } while (terminateDetails.size() < waitCount) { Thread.yield(); } } }; } @Override void shutDownManager() {} }; manager.run(); assertEquals(100, manager.getTaskLength()); assertEquals(0, manager.getProgress()); terminateDetails.add(1); Thread.sleep(100); assertEquals(33, manager.getProgress()); assertFalse(manager.isTaskCompleted()); terminateDetails.add(2); Thread.sleep(100); assertEquals(66, manager.getProgress()); assertFalse(manager.isTaskCompleted()); terminateDetails.add(3); Thread.sleep(100); assertEquals(100, manager.getProgress()); assertTrue(manager.isTaskCompleted()); }