@Test public void testHandleRequest__SystemException() throws Exception { Request request = createStrictMock(Request.class); ResourceInstance resource = createStrictMock(ResourceInstance.class); Query query = createMock(Query.class); Predicate predicate = createMock(Predicate.class); Renderer renderer = new DefaultRenderer(); expect(request.getResource()).andReturn(resource); expect(resource.getQuery()).andReturn(query); expect(request.getPageRequest()).andReturn(null); expect(request.getSortRequest()).andReturn(null); expect(request.getRenderer()).andReturn(renderer); expect(request.getFields()).andReturn(Collections.<String, TemporalInfo>emptyMap()); expect(request.getQueryPredicate()).andReturn(predicate); query.setUserPredicate(predicate); query.setPageRequest(null); query.setSortRequest(null); query.setRenderer(renderer); SystemException systemException = new SystemException("testMsg", new RuntimeException()); expect(query.execute()).andThrow(systemException); replay(request, resource, query, predicate); // test ReadHandler handler = new ReadHandler(); Result result = handler.handleRequest(request); assertEquals(ResultStatus.STATUS.SERVER_ERROR, result.getStatus().getStatus()); assertEquals(systemException.toString(), result.getStatus().getMessage()); verify(request, resource, query, predicate); }
@Override public RFile readFile(String filename) throws SystemException, TException { if (fileStoreMap.get(filename) != null) { String content = fileStoreMap.get(filename); RFileMetadata rFileMetadata = new RFileMetadata(); rFileMetadata.setFilename(filename); RFile rFile = new RFile(); rFile.setMeta(rFileMetadata); rFile.setContent(content); return rFile; } else { SystemException systemException = new SystemException(); systemException.setMessage("File does not exist"); throw systemException; } }
@PostConstruct private void init() { try { userTransaction.begin(); initData(); userTransaction.commit(); } catch (NotSupportedException e) { e.printStackTrace(); } catch (SystemException e) { e.printStackTrace(); } catch (HeuristicRollbackException e) { e.printStackTrace(); } catch (javax.transaction.RollbackException e) { e.printStackTrace(); } catch (HeuristicMixedException e) { e.printStackTrace(); } }
@Override public TwoPhaseCommitMessage deleteFile(String filename, TwoPhaseCommitMessage tpcm) throws SystemException, TException { if (tpcm.getMessage().equals("vote_request")) { File file = new File(filename); if (!file.exists()) { SystemException systemException = new SystemException(); systemException.setMessage("File does not exist"); throw systemException; } if (knowConcurrencyStatus(filename)) { tpcm.setMessage("vote_abort"); createLogEntry(tpcm, null, "delete"); return tpcm; } else { createLogEntry(tpcm, null, "delete"); } System.out.println("****deleteFile TEST CASES****"); System.out.println("1. reply vote_commit for " + filename); System.out.println("2. reply vote_commit for " + filename + " and crash"); System.out.println("3. reply vote_abort for " + filename); System.out.println("Enter choice: "); Scanner sc = new Scanner(System.in); int choice = sc.nextInt(); switch (choice) { case 1: tpcm.setMessage("vote_commit"); updateLogEntry(tpcm); return tpcm; case 2: tpcm.setMessage("vote_commit"); updateLogEntry(tpcm); tpcm.setMessage("vote_commit_and_crash"); Runnable crash = new Runnable() { @Override public void run() { crash(); } }; new Thread(crash).start(); return tpcm; case 3: tpcm.setMessage("vote_abort"); updateLogEntry(tpcm); return tpcm; default: System.out.println("Wrong choice! Transaction being aborted!"); tpcm.setMessage("vote_abort"); break; } } else if (tpcm.getMessage().equals("global_commit")) { File file = new File("FileStore/" + filename); if (file.exists()) { file.delete(); } fileStoreMap.remove(filename); updateLogEntry(tpcm); } else if (tpcm.getMessage().equals("global_abort")) { updateLogEntry(tpcm); } return tpcm; }