Esempio n. 1
0
  @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;
  }