Guest User

Untitled

a guest
Oct 17th, 2013
112
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.26 KB | None | 0 0
  1. // client thread
  2. public class SHTTPClientThread extends Thread {
  3.  
  4. AtomicBoolean stop;
  5. int index;
  6. ClientStats cs;
  7. Socket s;
  8. String files[];
  9. int filesRead, bytesRead;
  10. long avgWaitTime;
  11. String server;
  12. int port;
  13.  
  14. public SHTTPClientThread(String server, int port, String files[],
  15. int index, ClientStats cs) throws UnknownHostException, IOException {
  16. stop = new AtomicBoolean();
  17. stop.set(false);
  18. this.index = index;
  19. this.cs = cs;
  20. this.files = files;
  21. filesRead = 0; bytesRead = 0; avgWaitTime = 0;
  22. this.server = server;
  23. this.port = port;
  24. }
  25.  
  26. public void run() {
  27. int i = 0;
  28. try {
  29. while (!stop.get()) {
  30. s = new Socket(server, port);
  31. String file = files[i % files.length];
  32. sendRequest(file);
  33. readResponse();
  34. i++;
  35. s.close();
  36. }
  37. cs.dataRateThroughPut[index] = bytesRead;
  38. cs.waitTimes[index] = avgWaitTime/filesRead;
  39. cs.totalThroughPut[index] = filesRead;
  40. } catch (IOException e1) {
  41. e1.printStackTrace();
  42. }
  43. }
  44.  
  45. private void readResponse() throws IOException {
  46. long stime = System.currentTimeMillis();
  47. try {
  48. HTTPResponse r = new HTTPResponse(s);
  49. bytesRead += r.bodySize;
  50. filesRead += 1;
  51. avgWaitTime += r.time - stime;
  52. } catch (InvalidResponseException e) {
  53. System.err.println("Invalid Response.");
  54. e.printStackTrace();
  55. }
  56. }
  57.  
  58. private void sendRequest(String file) throws IOException {
  59. s.getOutputStream().write(("GET /" + file + " HTTP/1.0\r\n\r\n").getBytes("US-ASCII"));
  60. }
  61.  
  62. public void done() {
  63. stop.set(true);
  64. }
  65.  
  66. }
  67.  
  68. // client
  69.  
  70. public class SHTTPTestClient {
  71.  
  72. public static void main(String args[]) throws InterruptedException {
  73. int port, threads, time;
  74. String server, filename;
  75.  
  76. try {
  77. Map<String, String[]> argmap = ServerUtil.readVars(args, "-");
  78. port = Integer.parseInt(argmap.get("port")[0]);
  79. threads = Integer.parseInt(argmap.get("parallel")[0]);
  80. time = Integer.parseInt(argmap.get("T")[0]);
  81. server = argmap.get("server")[0];
  82. filename = argmap.get("files")[0];
  83. } catch (NullPointerException e) {
  84. System.err
  85. .println("Usage: java SHTTPTestClient -server <server> -port <server port> -parallel <# of threads> -files <file name> -T <time of test in seconds>");
  86. return;
  87. }
  88.  
  89. ArrayList<String> arrFiles = new ArrayList<String>();
  90. Scanner scan;
  91. try {
  92. scan = new Scanner(new File(filename));
  93. } catch (FileNotFoundException e1) {
  94. System.err.println("File does not exist.");
  95. return;
  96. }
  97.  
  98. while(scan.hasNextLine())
  99. arrFiles.add(scan.nextLine());
  100.  
  101. String files[] = null;
  102. if(arrFiles.size() == 0) {
  103. System.err.println("Empty File.");
  104. return;
  105. } else {
  106. files = arrFiles.toArray(new String[0]);
  107. }
  108.  
  109. ClientStats cs = new ClientStats(threads, time);
  110. SHTTPClientThread threadSet[] = new SHTTPClientThread[threads];
  111.  
  112. try {
  113. for (int i = 0; i < threads; i++) {
  114. threadSet[i] = new SHTTPClientThread(server, port, files, i, cs);
  115. threadSet[i].start();
  116. }
  117. } catch (Exception e) {
  118. System.err.println("Unknown host or IO error.");
  119. return;
  120. }
  121.  
  122. Thread.sleep(time * 1000);
  123.  
  124. for (int i = 0; i < threads; i++)
  125. threadSet[i].done();
  126. for (int i = 0; i < threads; i++)
  127. threadSet[i].join();
  128.  
  129. cs.printStats();
  130. }
Advertisement
Add Comment
Please, Sign In to add comment