@Test(timeout = 2000)
 public void testDelete1() {
   ClientMessage cm1 =
       new ClientMessage()
           .setType(ClientMessage.Type.CREATE)
           .setAuthor("AdnanAziz")
           .setSubject("First")
           .setTime(100);
   ClientMessage cm2 =
       new ClientMessage()
           .setType(ClientMessage.Type.CREATE)
           .setAuthor("AdnanAziz")
           .setSubject("First")
           .setTime(200);
   ClientMessage cm3 =
       new ClientMessage()
           .setType(ClientMessage.Type.CREATE)
           .setAuthor("AdnanAziz")
           .setSubject("First")
           .setTime(300);
   ClientMessage cm4 = new ClientMessage().setType(ClientMessage.Type.DELETE).setId(1);
   ClientMessage cmQuery = new ClientMessage().setType(ClientMessage.Type.QUERY);
   ServerMessage result = doTxRx(cm1, cm2, cm4, cmQuery);
   assertEquals("LisaHua", result.getPostings().get(0).getAuthor());
   assertEquals("AdnanAziz", result.getPostings().get(1).getAuthor());
 }
  @Override
  public void onLetterPreEdit(String id) {

    Log.d("status", "onLetterPreEdit: " + id);

    // now download the letter info
    DownloadLetterTask task = new DownloadLetterTask();
    ServerMessage msg = new ServerMessage();

    Log.d("status", "called new task, about to execute");
    try {
      msg = task.execute(new String(id)).get();
    } catch (InterruptedException e) {
      // TODO Auto-generated catch block
      msg.l_response = -1;
      e.printStackTrace();
    } catch (ExecutionException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
      msg.l_response = -1;
    }

    // and show the send view
    mAdapter = new MyAdapter(getSupportFragmentManager(), "edit", msg.l_letter_text);
    mPager = (ViewPager) findViewById(R.id.pager);
    mPager.setAdapter(mAdapter);

    mPager.setCurrentItem(1);

    if (msg.l_response == 1) {

      // now, show send screen with this stuff...
      Log.d("status", "getLetter: " + msg.l_letter_text);
    }
  }
 public void pushInstanceMessage(ServerMessage sm) throws Exception {
   if (sm == null || sm.getData() == null || sm.getSocketAddress() == null) {
     return;
   }
   if (udpConnector != null) {
     udpConnector.send(sm);
   }
 }
 @Test(timeout = 2000)
 public void testAdd2() {
   ClientMessage cm =
       new ClientMessage()
           .setType(ClientMessage.Type.CREATE)
           .setAuthor("AdnanAziz1968")
           .setSubject("Hello World")
           .setBody("My first posting!");
   ServerMessage result = doTxRx(cm, cm, cm);
   assertEquals(result.getId(), 2);
   score += 5;
 }
  @Override
  public void run() {

    // Thread heartBeat = new Thread(new HeartBeatWorker(), "PUSH_SERVER_HEARTBEAT_WORKER");
    // heartBeat.setDaemon(true);
    // heartBeat.start();

    BiConsumer<String, Socket> consumer = new SocketConsumer();
    mSocketPool.forEach(
        consumer); // only first time iterate the socket already exist in the socketPool to add
                   // HeartBeat thread.
    // after that need to call addHeartBeat() add HeartBeat manually
    try {
      while (mServiceRunning) {
        ServerMessage msg = mPushQueue.deQueueMsg();

        if (msg == null) {
          // timeout return null object
          // currently do nothing
          LogUtil.logV("timeout return null object");
        } else {
          String UUID = msg.getMsg().getUUID();
          if (TextUtil.checkUUID(UUID)) {
            Socket socket = mSocketPool.getSocket(UUID);
            if (socket != null && socket.isConnected()) {
              OutputStream os;
              try {
                os = socket.getOutputStream();
                // os.write(Message.createHeatBeatMsg(UUID));
                Message send = msg.getMsg();
                send.setCommand(send.getCommand() | MessageState.CMD_PUSH_MSG_CLIENT);
                os.write(send.getData());
                os.flush();
                msg.setLastPushMsg(System.currentTimeMillis());
              } catch (IOException e) {
                LogUtil.logE("IOException", e);
              }
            } else {
              // when msg in PushQueue didn't have corresponding socket, no need to put msg back to
              // push queue, msg pool have this copy, wait for client check unread msg with service
              // just ignore this msg from push queue
              LogUtil.logI("msg in PushQueue didn't have corresponding socket");
            }
          }
        }
      }
    } catch (InterruptedException e) {
      LogUtil.logE("InterruptedException", e);
    }
  }
  @Test(timeout = 5000)
  public void testStress1() {
    List<ClientMessage> cmArray = new ArrayList<ClientMessage>();
    int N = 1000;
    for (int i = 0; i < N; i++) {
      cmArray.add(
          new ClientMessage()
              .setType(ClientMessage.Type.CREATE)
              .setAuthor("AdnanAziz1968")
              .setSubject("Stressing...")
              .setBody("Hello World for the " + i + "-th time"));
    }
    ServerMessage result = doTxRx(cmArray);

    assertEquals(result.getId(), N - 1);
    score += 5;
  }
  @Test(timeout = 2000)
  public void testPagination1() {
    ClientMessage cm1 =
        new ClientMessage()
            .setType(ClientMessage.Type.CREATE)
            .setAuthor("AdnanAziz")
            .setSubject("First")
            .setTime(100);
    ClientMessage cm2 =
        new ClientMessage()
            .setType(ClientMessage.Type.CREATE)
            .setAuthor("AdnanAziz")
            .setSubject("Second")
            .setSubject("Random body")
            .setTime(200);
    ClientMessage cm3 =
        new ClientMessage()
            .setType(ClientMessage.Type.CREATE)
            .setAuthor("AdnanAziz")
            .setSubject("Third")
            .setTime(300);
    ClientMessage cmQuery = new ClientMessage().setType(ClientMessage.Type.QUERY).setPageSize(2);
    ServerMessage result = doTxRx(cm1, cm2, cm2, cmQuery);

    assertEquals(2, result.getPostings().size());
    assertEquals("Third", result.getPostings().get(0).getSubject());
    assertEquals("Second", result.getPostings().get(1).getSubject());
    score += 5;

    cmQuery = new ClientMessage().setType(ClientMessage.Type.QUERY).setPageSize(2).setPageOffset(1);

    result = doTxRx(cm1, cm2, cm3, cmQuery);
    assertEquals(2, result.getPostings().size());
    assertEquals("Second", result.getPostings().get(0).getSubject());
    assertEquals("First", result.getPostings().get(1).getSubject());
    score += 5;

    cmQuery =
        new ClientMessage()
            .setType(ClientMessage.Type.QUERY)
            .setPageSize(2)
            .setSubject("Second")
            .setPageOffset(1);

    result = doTxRx(cm1, cm2, cm3, cmQuery);
    assertEquals(1, result.getPostings().size());
    assertEquals("Second", result.getPostings().get(0).getSubject());
    score += 5;
  }
  @Test(timeout = 5000)
  public void testQuery1() {
    ClientMessage cmAdd1 =
        new ClientMessage()
            .setType(ClientMessage.Type.CREATE)
            .setAuthor("AdnanAziz1968")
            .setSubject("Hello World")
            .setBody("My first posting!");

    ClientMessage cmAdd2 =
        new ClientMessage()
            .setType(ClientMessage.Type.CREATE)
            .setAuthor("Don Bradman")
            .setSubject("29")
            .setBody("Still the greatest!");

    ClientMessage cmAdd3 =
        new ClientMessage()
            .setType(ClientMessage.Type.CREATE)
            .setAuthor("AdnanAziz1968")
            .setSubject("Random musings")
            .setBody("My second posting!");

    ClientMessage cmQuery =
        new ClientMessage().setType(ClientMessage.Type.QUERY).setAuthor("AdnanAziz1968");

    ServerMessage result = doTxRx(cmAdd1, cmAdd2, cmAdd3, cmQuery);

    assertEquals(result.getPostings().size(), 2);
    for (Posting p : result.getPostings()) {
      assert (p.getAuthor().equals(cmQuery.getAuthor()));
    }

    ClientMessage cmBodyQuery =
        new ClientMessage().setType(ClientMessage.Type.QUERY).setBody("posting My");
    assertEquals(2, result.getPostings().size());
    for (Posting p : result.getPostings()) {
      assertTrue(p.getBody().contains("My"));
      assertTrue(p.getBody().contains("posting"));
    }
    score += 15;
  }
  @Test(timeout = 1000)
  public void testTimeRangeQuery1() {
    ClientMessage cm1 =
        new ClientMessage()
            .setType(ClientMessage.Type.CREATE)
            .setDate(1L)
            .setAuthor("AdnanAziz1968")
            .setSubject("Hello World")
            .setBody("My first posting!");
    ClientMessage cm2 =
        new ClientMessage()
            .setType(ClientMessage.Type.CREATE)
            .setDate(100L)
            .setAuthor("AdnanAziz1968")
            .setSubject("Hello Cruel World")
            .setBody("My second posting!");
    ClientMessage cm3 =
        new ClientMessage()
            .setType(ClientMessage.Type.CREATE)
            .setDate(250L)
            .setAuthor("AdnanAziz1968")
            .setSubject("Goodbye Wonderful World")
            .setBody("My third posting!");
    ClientMessage cm4 =
        new ClientMessage()
            .setType(ClientMessage.Type.CREATE)
            .setDate(200L)
            .setAuthor("AdnanAziz1968")
            .setSubject("Goodbye Cruel World")
            .setBody("My fourth posting!");
    ClientMessage cm5 =
        new ClientMessage()
            .setType(ClientMessage.Type.CREATE)
            .setDate(1000L)
            .setAuthor("AdnanAziz1968")
            .setSubject("Hello World")
            .setBody("My fifth posting!");
    ClientMessage cmTimeQuery =
        new ClientMessage().setType(ClientMessage.Type.QUERY).setDateStart(100L).setDateEnd(200L);
    ServerMessage result = doTxRx(cm1, cm2, cm3, cm4, cm5, cmTimeQuery);
    assertEquals(3, result.getPostings().size());
    assertEquals("My third posting", result.getPostings().get(0));
    assertEquals("My middle posting", result.getPostings().get(1));
    assertEquals("My second posting", result.getPostings().get(2));

    ClientMessage cmTimeAndSubjectQuery =
        new ClientMessage()
            .setType(ClientMessage.Type.QUERY)
            .setDateStart(100L)
            .setDateEnd(200L)
            .setSubject("Cruel");

    result = doTxRx(cm1, cm2, cm3, cm4, cm5, cmTimeAndSubjectQuery);
    assertEquals(2, result.getPostings().size());
    assertEquals("My third posting", result.getPostings().get(0));
    assertEquals("My second posting", result.getPostings().get(1));
  }
  @Test(timeout = 2000)
  public void testUpdate1() {

    ClientMessage cm1 =
        new ClientMessage()
            .setType(ClientMessage.Type.CREATE)
            .setAuthor("AdnanAziz1968")
            .setSubject("First");
    ClientMessage cm2 =
        new ClientMessage()
            .setType(ClientMessage.Type.CREATE)
            .setAuthor("AdnanAziz1968")
            .setSubject("Second");
    ClientMessage cm3 =
        new ClientMessage().setType(ClientMessage.Type.UPDATE).setId(0).setSubject("New First");
    ClientMessage cm4 = new ClientMessage().setType(ClientMessage.Type.QUERYBYID).setId(0);
    ServerMessage result = doTxRx(cm1, cm2, cm3, cm4);
    assertEquals("New First", result.getPostings().get(0).getSubject());
    score += 10;
  }
Exemple #11
0
 /**
  * Returns a JavaScriptObject object with info of the uploaded files. It's useful in the exported
  * version of the library.
  */
 public JavaScriptObject getData() {
   if (multiple) {
     JsArray<JavaScriptObject> ret = JavaScriptObject.createArray().cast();
     for (UploadedInfo info : serverMessage.getUploadedInfos()) {
       ret.push(getDataInfo(info));
     }
     return ret;
   } else {
     return getDataInfo(getServerInfo());
   }
 }
    @Override
    public void run() {
      if (TextUtil.checkUUID(mUuid)) {
        ServerMessage msg = mPool.getMsg(mUuid);
        long now = System.currentTimeMillis();
        if (msg != null && ((now - msg.getLastHeartBeat()) >= mHeartBeatInterval)) {
          try {
            if (mSocket != null && mSocket.isConnected()) {
              OutputStream os = mSocket.getOutputStream();
              os.write(Message.createHeatBeatMsg(mUuid, msg.haveUnreadMsg()));
              os.flush();
              msg.setLastHeartBeat(now);
            }
          } catch (IOException e) {
            LogUtil.logE("IOException", e);
          }
        }
      }

      /*
      long lastRun = System.currentTimeMillis();
      long now;
      while (mServiceRunning) {

          now = System.currentTimeMillis();
          if ((now - lastRun) < (mHeartBeatInterval*1000)) {
              try {
                  Thread.sleep((mHeartBeatInterval*1000) - (now - lastRun));
              } catch (InterruptedException e) {
                  LogUtil.logE("InterruptedException", e);
              }
          } else if ((now - lastRun) > (mHeartBeatInterval*1000)) {
              LogUtil.logI("HeartBeatWork Overload ");
          }
          lastRun = now;
      }
      */
    }
  @Test(timeout = 2000)
  public void testLikes1() {

    ClientMessage cm1 =
        new ClientMessage()
            .setType(ClientMessage.Type.CREATE)
            .setAuthor("AdnanAziz")
            .setSubject("First");
    ClientMessage cm2 =
        new ClientMessage()
            .setType(ClientMessage.Type.CREATE)
            .setAuthor("AngLi")
            .setSubject("Second");
    ClientMessage cm3 =
        new ClientMessage()
            .setType(ClientMessage.Type.CREATE)
            .setAuthor("LisaHua")
            .setSubject("Third");
    ClientMessage cm4 = new ClientMessage().setType(ClientMessage.Type.LIKE).setId(0);
    ServerMessage result = doTxRx(cm1, cm2, cm3, cm4);
    assertEquals(1, result.getPostings().get(0).getAuthorLikes());
    score += 10;
  }
  @Test(timeout = 2000)
  public void testUpvotesAndTrending1() {
    ClientMessage cm1 =
        new ClientMessage()
            .setType(ClientMessage.Type.CREATE)
            .setAuthor("AdnanAziz")
            .setSubject("First")
            .setTime(100);
    ClientMessage cm2 =
        new ClientMessage()
            .setType(ClientMessage.Type.CREATE)
            .setAuthor("AngLi")
            .setSubject("Second")
            .setTime(200 + 3600 * 1000);
    ClientMessage cm3 =
        new ClientMessage()
            .setType(ClientMessage.Type.CREATE)
            .setAuthor("LisaHua")
            .setSubject("Third")
            .setTime(300 + 3600 * 1000);
    ClientMessage cm4 = new ClientMessage().setType(ClientMessage.Type.UPVOTE).setId(2);
    ClientMessage cm5 = new ClientMessage().setType(ClientMessage.Type.UPVOTE).setId(1);
    ClientMessage cm6 = new ClientMessage().setType(ClientMessage.Type.UPVOTE).setId(2);
    ServerMessage result = doTxRx(cm1, cm2, cm3, cm4, cm5, cm6);
    // postings are ordered by decreasing posting time
    assertEquals(2, result.getPostings().get(0).getAuthorLikes());
    assertEquals(1, result.getPostings().get(1).getAuthorLikes());
    assertEquals(0, result.getPostings().get(2).getAuthorLikes());
    ClientMessage cm7 = new ClientMessage().setType(ClientMessage.Type.TRENDING);
    score += 10;

    result = doTxRx(cm1, cm2, cm3, cm4, cm5, cm6, cm7);
    assertEquals("LisaHua", result.getPostings().get(0).getAuthor());
    assertEquals("AngLi", result.getPostings().get(1).getAuthor());

    score += 10;
  }
 @Test(timeout = 2000)
 public void testDistanceQuery1() {
   List<ClientMessage> cmArray = new ArrayList<ClientMessage>();
   int N = 100;
   for (int i = 0; i < N; i++) {
     cmArray.add(
         new ClientMessage()
             .setType(ClientMessage.Type.CREATE)
             .setAuthor("AdnanAziz1968")
             .setSubject("Distancing...")
             .setBody("Coordinates of " + i + "," + i + "-th time")
             .setLatitude((double) i)
             .setLongitude((double) i));
   }
   cmArray.add(
       new ClientMessage()
           .setType(ClientMessage.Type.QUERY)
           .setLatitude(50.0d)
           .setLongitude(50.0d)
           .setDistance(2.0d));
   ServerMessage result = doTxRx(cmArray);
   assertEquals(2, result.getPostings());
   score += 10;
 }
Exemple #16
0
  private void parseAjaxResponse(String responseTxt) {
    if (responseTxt == null) {
      return;
    }

    String error = null;
    Document doc = null;
    try {
      doc = XMLParser.parse(responseTxt);
      error = Utils.getXmlNodeValue(doc, "error");
      if (error == null) {
        // Response brings uploaded files info in either:
        // POST response or FINISHED status
        String msg = Utils.getXmlNodeValue(doc, TAG_MESSAGE);
        serverMessage.setMessage(msg);
        String fld = Utils.getXmlNodeValue(doc, TAG_FIELD);
        NodeList list = doc.getElementsByTagName(TAG_FILE);
        for (int i = 0, l = list.getLength(); i < l; i++) {
          UploadedInfo info = new UploadedInfo();
          info.setField(getInputName() + "-" + i);
          info.setName(Utils.getXmlNodeValue(doc, TAG_NAME, i));
          info.setCtype(Utils.getXmlNodeValue(doc, TAG_CTYPE, i));
          // TODO: test
          info.setKey(Utils.getXmlNodeValue(doc, TAG_KEY, i));
          // TODO: remove
          info.message = msg;
          String url = session.composeURL(PARAM_SHOW + "=" + info.getField());
          if (info.getKey() != null) {
            url += "&" + PARAM_BLOBKEY + "=" + info.getKey();
          }
          info.setFileUrl(url);

          String size = Utils.getXmlNodeValue(doc, TAG_SIZE, i);
          if (size != null) {
            info.setSize(Integer.parseInt(size));
          }
          serverMessage.getUploadedInfos().add(info);
        }
      }
    } catch (Exception e) {
      if (responseTxt.toLowerCase().matches("error")) {
        error =
            i18nStrs.uploaderServerError()
                + "\nAction: "
                + getServletPath()
                + "\nException: "
                + e.getMessage()
                + responseTxt;
      }
    }

    if (error != null) {
      successful = false;
      cancelUpload(error);
      return;
    } else if (Utils.getXmlNodeValue(doc, TAG_WAIT) != null) {
      if (serverRawResponse != null) {
        log(
            "server response received, cancelling the upload "
                + getFileNames()
                + " "
                + serverRawResponse,
            null);
        successful = true;
        uploadFinished();
      }
    } else if (Utils.getXmlNodeValue(doc, TAG_CANCELED) != null) {
      log("server response is: canceled " + getFileNames(), null);
      successful = false;
      canceled = true;
      uploadFinished();
      return;
    } else if (Utils.getXmlNodeValue(doc, TAG_FINISHED) != null) {
      log("server response is: finished " + serverMessage.getUploadedFileNames(), null);
      successful = true;
      if (onSubmitComplete) {
        log("POST response from server has been received", null);
        uploadFinished();
      }
      return;
    } else if (Utils.getXmlNodeValue(doc, TAG_PERCENT) != null) {
      lastData = now();
      long transferredKB = Long.valueOf(Utils.getXmlNodeValue(doc, TAG_CURRENT_BYTES)) / 1024;
      long totalKB = Long.valueOf(Utils.getXmlNodeValue(doc, TAG_TOTAL_BYTES)) / 1024;
      statusWidget.setProgress(transferredKB, totalKB);
      log(
          "server response transferred  " + transferredKB + "/" + totalKB + " " + getFileNames(),
          null);
      if (onSubmitComplete) {
        successful = true; // why suppose an error here in this case ?
        String msg = i18nStrs.uploaderBadServerResponse() + "\n" + serverRawResponse;
        if (blobstore) {
          msg += "\n" + i18nStrs.uploaderBlobstoreBilling();
        } else {
          msg += "\n" + i18nStrs.uploaderBadParsing();
        }
        msg += "\n\n" + responseTxt;
        log(msg, null); // keep log message anyway
        //        statusWidget.setError(msg); // disable the user visible error message
        uploadFinished();
      }
      return;
    } else {
      log("incorrect response: " + getFileNames() + " " + responseTxt, null);
    }

    if (uploadTimeout > 0 && now() - lastData > uploadTimeout) {
      successful = false;
      cancelUpload(i18nStrs.uploaderTimeout());
      try {
        sendAjaxRequestToCancelCurrentUpload();
      } catch (Exception e) {
      }
    }
  }
Exemple #17
0
 public UploadedInfo getServerInfo() {
   return serverMessage.getUploadedInfos().size() > 0
       ? serverMessage.getUploadedInfos().get(0)
       : null;
 }
Exemple #18
0
 /**
  * Returns the link for get the last uploaded files from the server It's useful to display
  * uploaded images or generate links to uploaded files.
  */
 public String fileUrl() {
   return serverMessage.getUploadedInfos().get(0).getFileUrl();
 }
Exemple #19
0
 public void setServerMessage(ServerMessage msg) {
   serverMessage = msg;
   successful = true;
   statusWidget.setFileNames(msg.getUploadedFileNames());
   uploadFinished();
 }
Exemple #20
0
 private void sendAjaxRequestToDeleteUploadedFile() {
   for (String field : serverMessage.getUploadedFieldNames()) {
     session.sendRequest("remove_file", onDeleteFileCallback, PARAM_REMOVE + "=" + field);
   }
 }