public void testArchivedStorage() throws MalformedURLException, CoreException, IOException, NoSuchFieldException, IllegalArgumentException, IllegalAccessException, NoSuchMethodException, InvocationTargetException { IssueStorage storage = IssueStorage.getInstance(); long ts = System.currentTimeMillis(); String id1 = "id1"; String id2 = "id2"; String url = "http://test/bugzilla"; String qName = "SomeQuery"; storage.storeArchivedQueryIssues(url, qName, new String[] {id1, id2}); Map<String, Long> read = storage.readArchivedQueryIssues(url, qName); assertEquals(2, read.size()); assertTrue(ts <= read.get(id1)); assertTrue(ts <= read.get(id2)); // wait a sec and set TTL so that the archived issues shuld be cleaned up try { Thread.currentThread().sleep(1000); } catch (InterruptedException ex) { Exceptions.printStackTrace(ex); } Field f = BugtrackingConfig.class.getDeclaredField("DEFAULT_ARCHIVED_TTL"); f.setAccessible(true); f.set(BugtrackingConfig.getInstance(), new Long(0)); // zero time to live read = storage.readArchivedQueryIssues(url, qName); assertEquals(0, read.size()); }
public void testCleanup() throws MalformedURLException, CoreException, IOException, NoSuchFieldException, IllegalArgumentException, IllegalAccessException, NoSuchMethodException, InvocationTargetException { IssueStorage storage = IssueStorage.getInstance(); long ts = System.currentTimeMillis(); Map<String, String> attr = new HashMap<String, String>(); String id1 = "id1"; String id2 = "id2"; String url = "http://test/bugzilla"; String qName = "SomeQuery"; DummyIssue i1 = new DummyIssue(id1, attr); DummyIssue i2 = new DummyIssue(id2, attr); long lm = System.currentTimeMillis(); IssueCache<DummyIssue, Object> cache = getCache(); IssueEntry ie1 = cache.new IssueEntry(i1, i1.id, attr, -1, -1, false, lm); IssueEntry ie2 = cache.new IssueEntry(i2, i2.id, attr, -1, -1, false, lm); storage.storeIssue(url, ie1); storage.storeIssue(url, ie2); // store query storage.storeQuery(url, qName, new String[] {id1, id2}); List<String> stored = storage.readQuery(url, qName); assertEquals(2, stored.size()); File folder = getNameSpaceFolder(url); File[] issueFiles = folder.listFiles( new FilenameFilter() { public boolean accept(File dir, String name) { return name.endsWith(".i"); } }); assertEquals(2, issueFiles.length); // issues are there // cleanup, yet issues are living in a stored query storage.cleanup(); issueFiles = folder.listFiles( new FilenameFilter() { public boolean accept(File dir, String name) { return name.endsWith(".i"); } }); assertEquals(2, issueFiles.length); // issues are still there // cleanup, yet issues are living in archive storage.storeQuery(url, qName, new String[] {}); storage.storeArchivedQueryIssues(url, qName, new String[] {id1, id2}); storage.cleanup(); issueFiles = folder.listFiles( new FilenameFilter() { public boolean accept(File dir, String name) { return name.endsWith(".i"); } }); assertEquals(2, issueFiles.length); // issues are still there // cleanup, issues aren't in a query or archived storage.storeQuery(url, qName, new String[] {}); storage.storeArchivedQueryIssues(url, qName, new String[] {}); storage.cleanup(); issueFiles = folder.listFiles( new FilenameFilter() { public boolean accept(File dir, String name) { return name.endsWith(".i"); } }); assertEquals(0, issueFiles.length); // issues are still there }