Advertisement
Guest User

Untitled

a guest
Aug 29th, 2018
145
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.21 KB | None | 0 0
  1. package com.ess.test;
  2.  
  3. import com.sun.org.apache.xml.internal.utils.URI;
  4. import com.ess.helper.QueueHelper;
  5. import org.apache.http.HttpHost;
  6. import org.apache.http.HttpResponse;
  7. import org.apache.http.client.config.RequestConfig;
  8. import org.apache.http.client.methods.HttpGet;
  9. import org.apache.http.config.ConnectionConfig;
  10. import org.apache.http.impl.nio.client.CloseableHttpAsyncClient;
  11. import org.apache.http.impl.nio.client.HttpAsyncClients;
  12. import org.apache.http.impl.nio.conn.PoolingNHttpClientConnectionManager;
  13. import org.apache.http.impl.nio.reactor.DefaultConnectingIOReactor;
  14. import org.apache.http.nio.reactor.ConnectingIOReactor;
  15. import org.apache.http.nio.reactor.IOReactorException;
  16. import org.apache.http.util.EntityUtils;
  17. import com.ess.system.SrConfig;
  18. import com.ess.system.network.newhttp.SmsSenderInfoReminderNew;
  19.  
  20. import java.util.Timer;
  21. import java.util.TimerTask;
  22. import java.util.concurrent.*;
  23. import java.util.concurrent.atomic.AtomicInteger;
  24. import java.util.regex.Pattern;
  25.  
  26. import static com.ess.data.Constant.tps_count_send_sms_inforeminder;
  27.  
  28. //import com.ess.mbpultimate.manager.ServiceManagement;
  29.  
  30. import com.ess.data.Constant;
  31.  
  32. import static com.ess.data.Constant.*;
  33. import static com.ess.data.Constant.tps_count_httpserver_smsreply;
  34. //import static com.ess.data.HttpConstant.*;
  35.  
  36. public class MainTestHttpIR {
  37.  
  38. private int second_count = 0;
  39. private int minute = 0;
  40. private int hour = 0;
  41. private AtomicInteger trx = new AtomicInteger(0);
  42. private int count_seconds = 0;
  43.  
  44. public static boolean useTpsLimit = true;
  45. public static boolean useTransactionLimit = false;
  46.  
  47. public static AtomicInteger transactionLimit = new AtomicInteger(0);
  48. public static AtomicInteger tpsLimit = new AtomicInteger(80);
  49.  
  50. public static AtomicInteger tpscounter = new AtomicInteger(0);
  51.  
  52. private static MainTestHttpIR instance = null;
  53. LinkedBlockingQueue<Runnable> executor_queue = new LinkedBlockingQueue<>();
  54. ThreadPoolExecutor executor;
  55.  
  56. public static MainTestHttpIR getInstance() {
  57. if(instance == null)
  58. instance = new MainTestHttpIR();
  59. return instance;
  60. }
  61.  
  62. public MainTestHttpIR() {
  63. executor = new ThreadPoolExecutor(100, 100, 0L, TimeUnit.MILLISECONDS, executor_queue);
  64. Timer timer_display = new Timer(true);
  65. timer_display.scheduleAtFixedRate(new DisplayTimer(), 0, 1000);
  66. }
  67.  
  68. public void execute(String content){
  69. HttpThreadRunner runner = new HttpThreadRunner(content);
  70. executor.execute(runner);
  71. }
  72.  
  73. public class HttpThreadRunner implements Runnable{
  74. String content;
  75.  
  76. public HttpThreadRunner(String content) {
  77. this.content = content;
  78. }
  79.  
  80. @Override
  81. public void run() {
  82. HttpSendSmsBulks.getInstance().send(content);
  83. }
  84. }
  85.  
  86.  
  87. public static void main(String[] args) {
  88. if (args.length < 2 && args[1].equals("true")){
  89. System.out.println("-Use java -jar Hit.jar false 5000 for execute without TPS limit and 5000 transaction");
  90. System.out.println("-Use java -jar Hit.jar true 100 5000 for execute with TPS limit 100 and 5000 transaction");
  91. }else {
  92. useTpsLimit = Boolean.valueOf(args[0]);
  93. if(useTpsLimit) tpsLimit.set(Integer.valueOf(args[1]));
  94. transactionLimit.set(Integer.valueOf(args[2]));
  95. SrConfig.getInstance();
  96. QueueHelper.getInstance();
  97. try {
  98. SmsSenderInfoReminderNew.getInstance();
  99. MainTestHttpIR.getInstance();
  100. for (int i = 0; i < transactionLimit.get(); i++) {
  101. String line_content = Long.parseLong("62810000000")+i + "<>41541<>1<>192.168.1.8/hit-mbp-cr1/ingwc.php<>TesTimertask<>TesTimertask<>" + i;
  102. MainTestHttpIR.getInstance().execute(line_content);
  103. // QueueHelper.getInstance().addSmsInfoReminder(FakeEntityUtils.encodeSmsInfoReminder("tes", ""+(Long.parseLong("62810000000")+i), "false"));
  104. }
  105.  
  106. } catch (Exception e) {
  107. e.printStackTrace();
  108. System.out.println(String.valueOf(e.getMessage()));
  109. }
  110. }
  111. }
  112.  
  113. class DisplayTimer extends TimerTask {
  114.  
  115. @Override
  116. public void run() {
  117.  
  118. count_seconds++;
  119. // System.out.println("TPS SMS:" + tps_count_send_sms_inforeminder.get());
  120. System.out.println("TPS: " + MainTestHttpIR.tpscounter.get());
  121.  
  122. MainTestHttpIR.tpscounter.set(0);
  123. // tps_count_send_sms_inforeminder.set(0);
  124.  
  125. if (second_count > 59) {
  126. if (minute > 59) {
  127. hour++;
  128. minute = 0;
  129. } else {
  130. minute++;
  131. }
  132. second_count = 0;
  133. } else {
  134. second_count++;
  135. }
  136.  
  137. }
  138. }
  139. }
  140.  
  141.  
  142. class HttpSendSmsBulks{
  143. AtomicInteger trx_id = new AtomicInteger(0);
  144. private CloseableHttpAsyncClient httpclient = null;
  145. private RequestConfig globalRequestConfig;
  146. private static HttpSendSmsBulks instance = null;
  147. private static AtomicInteger counter;
  148. private HttpSendSmsBulks() {
  149. ConnectingIOReactor ioreactor = null;
  150. counter = new AtomicInteger(0);
  151. try {
  152. ioreactor = new DefaultConnectingIOReactor();
  153. PoolingNHttpClientConnectionManager mgr = new PoolingNHttpClientConnectionManager(ioreactor);
  154. mgr.setDefaultConnectionConfig(ConnectionConfig.DEFAULT);
  155. mgr.setDefaultMaxPerRoute(1000);
  156. mgr.setMaxTotal(6000);
  157. httpclient = HttpAsyncClients.createPipelining(mgr);
  158. } catch (IOReactorException e) {
  159. // LogUtils.getInstance().writeLog(ServiceManagement.class, LogUtils.Level.ERROR, e.toString());
  160. }
  161. httpclient.start();
  162. RequestConfig.Builder requestBuilder = RequestConfig.custom();
  163. requestBuilder = requestBuilder.setConnectTimeout(10000);
  164. requestBuilder = requestBuilder.setSocketTimeout(10000);
  165. requestBuilder = requestBuilder.setConnectionRequestTimeout(10000);
  166. globalRequestConfig = requestBuilder.build();
  167. }
  168.  
  169. public static HttpSendSmsBulks getInstance(){
  170. if(instance == null){
  171. instance = new HttpSendSmsBulks();
  172. }
  173. return instance;
  174. }
  175.  
  176. public void send(String content){
  177. if (MainTestHttpIR.useTpsLimit) {
  178. while ((MainTestHttpIR.tpscounter.get() >= MainTestHttpIR.tpsLimit.get())) {
  179. //holding process TPS LIMIT
  180. try {
  181. Thread.sleep(10);
  182. } catch (InterruptedException e) {
  183. }
  184. }
  185. }
  186. MainTestHttpIR.tpscounter.incrementAndGet();
  187. //http://localhost:2222/smsMo?msisdn=6281748820132&adn=41541&partner_name=1&partner_url=192.168.1.8/hit-mbp-cr1/ingwc.php&username=tes&password=tes&trx_id=123&channel=http
  188. String msisdn = "NO MSISDN";
  189. String trxid = "notrx";
  190. try {
  191. String[] line_data = content.split(Pattern.quote("<>"));
  192. msisdn = line_data[0];
  193. trxid = line_data[6];
  194. // String host = "http://localhost:2222";
  195. String host = "http://essmalang.ddns.net";
  196. // String host = "http://192.168.1.8";
  197. URI uriHost = new URI(host);
  198. String query = "/hit-mbp-cr1/smsgw.php?"
  199. + "trx_id=" + trxid
  200. + "&msg=" + "tes"
  201. + "&from=telkomsel"
  202. + "&to=" + line_data[0];
  203. // String query = "/";
  204. HttpHost targetHost = new HttpHost(uriHost.getHost(), uriHost.getPort());
  205. // System.out.println(host+query);
  206. HttpGet httpGet = new HttpGet(query);
  207. // );
  208. httpGet.setHeader("User-Agent", "Hit");
  209. httpGet.setConfig(globalRequestConfig);
  210. Future<HttpResponse> future = httpclient.execute(targetHost, httpGet, null);
  211. HttpResponse responses = future.get(10000, TimeUnit.MILLISECONDS);
  212. String response = EntityUtils.toString(responses.getEntity());
  213. // System.out.println("request: "+content+" | response: "+response);
  214. // System.out.println("counter: "+counter.addAndGet(1)+" msisdn: "+msisdn+" trx_id:"+trxid+" "+ DateUtils.getNowDateTime()+" "+response);
  215. // WriteLog(msisdn, response);
  216. // MyLogger.WriteLog(msisdn, response);
  217. }catch (TimeoutException e){
  218. // WriteLog(msisdn, "Timeout Exception");
  219. // MyLogger.WriteLog(msisdn, "Timeout Exception");
  220. // System.out.println("counter: "+counter.addAndGet(1)+" msisdn: "+msisdn+" trx_id:"+trxid+" "+DateUtils.getNowDateTime()+" TimeoutException");
  221. }catch (Exception e){
  222. // WriteLog(msisdn, "Exception: "+e.getMessage());
  223. // MyLogger.WriteLog(msisdn, "Exception: "+e.getMessage());
  224. // System.out.println("counter: "+counter.addAndGet(1)+" msisdn: "+msisdn+" trx_id:"+trxid+" "+DateUtils.getNowDateTime()+" "+e.getMessage());
  225. }
  226. }
  227.  
  228. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement