@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; }
/** * 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; }
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) { } } }
public UploadedInfo getServerInfo() { return serverMessage.getUploadedInfos().size() > 0 ? serverMessage.getUploadedInfos().get(0) : null; }
/** * 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(); }
public void setServerMessage(ServerMessage msg) { serverMessage = msg; successful = true; statusWidget.setFileNames(msg.getUploadedFileNames()); uploadFinished(); }
private void sendAjaxRequestToDeleteUploadedFile() { for (String field : serverMessage.getUploadedFieldNames()) { session.sendRequest("remove_file", onDeleteFileCallback, PARAM_REMOVE + "=" + field); } }