EvpCommServerApplicationTests.java 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271
  1. package com.evp.comm.server;
  2. import com.evp.app.common.utils.ByteUtils;
  3. import com.evp.app.common.utils.SysUtils;
  4. import com.evp.app.common.utils.TimeUtils;
  5. import com.evp.comm.server.dto.EvpsCenter;
  6. import com.evp.comm.server.dto.NetState;
  7. import com.evp.comm.server.kafka.KafkaProducerService;
  8. import com.evp.comm.server.kafka.dto.KafkaEvpsServiceDto;
  9. import com.evp.comm.server.xnet.server.process.protocol.EvpsProtocolConst;
  10. import io.netty.buffer.ByteBuf;
  11. import io.netty.buffer.Unpooled;
  12. import lombok.extern.slf4j.Slf4j;
  13. import org.junit.jupiter.api.Test;
  14. import org.springframework.beans.factory.annotation.Autowired;
  15. import org.springframework.boot.test.context.SpringBootTest;
  16. import java.net.InetAddress;
  17. import java.net.UnknownHostException;
  18. import java.text.SimpleDateFormat;
  19. import java.util.ArrayList;
  20. import java.util.Date;
  21. import java.util.TimeZone;
  22. import java.util.concurrent.Executors;
  23. import java.util.concurrent.ThreadFactory;
  24. import java.util.concurrent.ThreadPoolExecutor;
  25. import java.util.concurrent.TimeUnit;
  26. @Slf4j
  27. @SpringBootTest
  28. public class EvpCommServerApplicationTests {
  29. public static final EvpsCenter rCenter = EvpsCenter.builder()
  30. .idx(0)
  31. .centerId("L01")
  32. .centerNm("UTIC SIGNAL 센터")
  33. .ipAddress("127.0.0.1")
  34. .netState(new NetState())
  35. .useYn(true)
  36. .dump(false)
  37. .build();
  38. @Autowired
  39. private KafkaProducerService kafkaService;
  40. public static String toString( Date date ) {
  41. SimpleDateFormat df = new SimpleDateFormat( "yyyy-MM-dd HH:mm:ss" );
  42. TimeZone tz = TimeZone.getTimeZone( "UTC" );
  43. df.setTimeZone( tz );
  44. String output = df.format( date );
  45. int inset0 = 9;
  46. int inset1 = 6;
  47. String s0 = output.substring( 0, output.length() - inset0 );
  48. String s1 = output.substring( output.length() - inset1, output.length() );
  49. String result = s0 + s1;
  50. result = result.replaceAll( "UTC", "+00:00" );
  51. return result;
  52. }
  53. @Test
  54. void testDate() {
  55. log.info("{}", toString(new Date()));
  56. log.info("{}", TimeUtils.now());
  57. }
  58. @Test
  59. void sendTopicService() {
  60. KafkaEvpsServiceDto data = KafkaEvpsServiceDto.builder()
  61. .serviceId("99920240906124848")
  62. //.clctDt(TimeUtils.getCurrentDate())
  63. .evNo("373구2164")
  64. .curLat(1.)
  65. .curLng(2.)
  66. .serviceNm("도로교통공단")
  67. .arrLat(3.)
  68. .arrLng(4.)
  69. .arrTm(10)
  70. .vehLen(20)
  71. .ocrNo("")
  72. .ocrType("")
  73. .serviceDist(4300)
  74. .statusCd(1)
  75. .routeList(new ArrayList<>())
  76. .build();
  77. kafkaService.sendEvpsServiceTopic(data);
  78. }
  79. @Test
  80. void test3() {
  81. String data = "000102030405060708090A000102030405060708090A000102030405060708090A";
  82. byte[] inBytes = ByteUtils.hexToByteArray(data);
  83. ByteBuf byteBuf = Unpooled.copiedBuffer(inBytes);
  84. log.info("readableBytes: {}", byteBuf.readableBytes());
  85. log.info("readerIndex: {}", byteBuf.readerIndex());
  86. byte[] buffer = new byte[EvpsProtocolConst.EVPS_HEAD_SIZE];
  87. byteBuf.getBytes(0, buffer);
  88. log.info("buffer: {}", SysUtils.byteArrayToHex(buffer));
  89. byte[] buffer2 = new byte[inBytes.length - EvpsProtocolConst.EVPS_HEAD_SIZE];
  90. byteBuf.getBytes(EvpsProtocolConst.EVPS_HEAD_SIZE, buffer2);
  91. log.info("buffer: {}", SysUtils.byteArrayToHex(buffer2));
  92. log.info("readableBytes: {}", byteBuf.readableBytes());
  93. log.info("readerIndex: {}", byteBuf.readerIndex());
  94. }
  95. @Test
  96. void testDecompress() {
  97. //ReadableBytes: 113 Bytes
  98. String data = "02C518081A01061A11571DB1020C00020003010004006C00001900C800400200140050088040000802A0040021001001408100020C10608000010808A0000000000000000000000000000000000000000000000000000000000000000000000000000001FFC234B7EEAFFBEBB2EDEFFF0C123C030A1E020307140203020C1B320203000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003010104006C00008128084441200A0451508882401408A2A0000001001000400102021010808000040820A0000000000000000000000000000000000000000000000000000000000000000000000000000001FF020303030B0C5CEDAFBBFB3BFF0C123C030A1E03071403020C1B32020300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E803";
  99. byte[] inBytes = ByteUtils.hexToByteArray(data);
  100. log.error("Packet Length: {}", inBytes.length);
  101. // EvpsCommPacket evpsCommPacket = new EvpsCommPacket(rCenter, inBytes);
  102. // RecvPacketDto packet = RecvPacketDto.builder()
  103. // .recvTime(0)
  104. // .center(rCenter)
  105. // .packet(evpsCommPacket)
  106. // .build();
  107. //EvpsSignalMap response = new EvpsSignalMap(null);
  108. // response.responseTEST(packet);
  109. }
  110. @Test
  111. void tt() {
  112. for (int ii = 0; ii < 608; ii++) {
  113. log.info("{}, {}, {}", ii, ii/19, ii%19);
  114. }
  115. }
  116. @Test
  117. void testDecompress2010() {
  118. //ReadableBytes: 113 Bytes
  119. String data = "02C518081901061911551DB1020C000200010200030036E04BC31020DDC10105E021C11020E030C80102D8C10105C2C10105E039C8010200555C9C2503000102090F3C090F3C010C1246006C2400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010201030025E041C80102E0B7C80102E021C5102000555C9C2503000102090F3C090F3C01040546003E450000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000AB03";
  120. byte[] inBytes = ByteUtils.hexToByteArray(data);
  121. log.error("Packet Length: {}", inBytes.length);
  122. // EvpsCommPacket evpsCommPacket = new EvpsCommPacket(rCenter, inBytes);
  123. // RecvPacketDto packet = RecvPacketDto.builder()
  124. // .recvTime(0)
  125. // .center(rCenter)
  126. // .packet(evpsCommPacket)
  127. // .build();
  128. // EvpsSignalMap response = new EvpsSignalMap(null);
  129. // response.responseTEST(packet);
  130. }
  131. @Test
  132. public void test() {
  133. //1720599437901
  134. //1720599437
  135. //106844625303900
  136. long start = System.currentTimeMillis();
  137. log.error("[{}, {}, {}]", start, TimeUnit.SECONDS.convert(start, TimeUnit.MILLISECONDS), System.nanoTime());
  138. }
  139. @Test
  140. public void test1() {
  141. String hostName;
  142. String hostAddress;
  143. try {
  144. InetAddress localhost = InetAddress.getLocalHost();
  145. hostName = localhost.getHostName();
  146. hostAddress = localhost.getHostAddress();
  147. } catch (UnknownHostException e) {
  148. hostName = "localhost";
  149. hostAddress = "127.0.0.1";
  150. }
  151. System.out.println("Your current IP address : " + hostAddress);
  152. System.out.println("Your current Hostname : " + hostName);
  153. InetAddress ip;
  154. String hostname;
  155. try {
  156. ip = InetAddress.getLocalHost();
  157. hostname = ip.getHostName();
  158. System.out.println("Your current IP address : " + ip);
  159. System.out.println("Your current Hostname : " + hostname);
  160. } catch (UnknownHostException e) {
  161. e.printStackTrace();
  162. }
  163. }
  164. class WorkerThreadTask implements Runnable {
  165. private ThreadPoolExecutor processExecutor;
  166. public WorkerThreadTask(ThreadPoolExecutor processExecutor, int idx) {
  167. Thread.currentThread().setName(String.format("worker-pool-%02d", idx));
  168. this.processExecutor = processExecutor;
  169. }
  170. @Override
  171. public void run() {
  172. while (true) {
  173. log.error("{}, corePoolSize: {}, activeCount: {}, maximumPoolSize: {}, poolSize: {}, taskCount: {}",
  174. Thread.currentThread().getName(),
  175. processExecutor.getCorePoolSize(),
  176. processExecutor.getActiveCount(),
  177. processExecutor.getMaximumPoolSize(),
  178. processExecutor.getPoolSize(),
  179. processExecutor.getTaskCount());
  180. try {
  181. Thread.sleep(1000);
  182. if (processExecutor.awaitTermination(1L, TimeUnit.MILLISECONDS))
  183. log.info("Terminated");
  184. } catch (InterruptedException e) {
  185. e.printStackTrace();
  186. }
  187. }
  188. }
  189. }
  190. class NamedThreadsFactory implements ThreadFactory {
  191. private int count = 0;
  192. private String Name = "MyThread-";
  193. @Override
  194. public Thread newThread(Runnable r) {
  195. return new Thread(r, Name + ++count); // Mythread-x 형태로 쓰레드 이름 설정
  196. }
  197. }
  198. @Test
  199. public void testThread() throws InterruptedException {
  200. int threadPoolSize = Runtime.getRuntime().availableProcessors() * 10;
  201. ThreadPoolExecutor processExecutor = (ThreadPoolExecutor) Executors.newFixedThreadPool(1);
  202. log.info("corePoolSize: {}, activeCount: {}, maximumPoolSize: {}, poolSize: {}, taskCount: {}",
  203. processExecutor.getCorePoolSize(),
  204. processExecutor.getActiveCount(),
  205. processExecutor.getMaximumPoolSize(),
  206. processExecutor.getPoolSize(),
  207. processExecutor.getTaskCount());
  208. for (int ii = 0; ii < threadPoolSize; ii++) {
  209. log.info("Thread Start: {}", ii);
  210. processExecutor.execute(new WorkerThreadTask(processExecutor, ii));
  211. /*processExecutor.execute(() -> {
  212. while (true) {
  213. try {
  214. log.error("{}, corePoolSize: {}, activeCount: {}, maximumPoolSize: {}, poolSize: {}, taskCount: {}",
  215. Thread.currentThread().getName(),
  216. processExecutor.getCorePoolSize(),
  217. processExecutor.getActiveCount(),
  218. processExecutor.getMaximumPoolSize(),
  219. processExecutor.getPoolSize(),
  220. processExecutor.getTaskCount());
  221. Thread.sleep(1000);
  222. }
  223. catch (Exception e) {
  224. log.error("{}", e.getMessage(), e);
  225. }
  226. }
  227. });*/
  228. }
  229. Thread.sleep(20000);
  230. }
  231. @Test
  232. public void checkSumTest() {
  233. }
  234. }