package se252.jan15.calvinandhobbes.project0;
import java.io.IOException;
import java.io.InputStream;
import java.net.InetSocketAddress;
import java.net.MalformedURLException;
import java.net.Proxy;
import java.net.URL;
import java.util.Random;
class Benchmark extends Thread {
public static int count = 0;
public static String[] cats = {"Dining", "Cafe", "Sports", "Library", "Hostels", "Mess"
, "Guest%20Houses", "Staff%20Houses", "Deparments", "Shops", "Banks%20and%20ATMs", "Telephone%20Office"
, "Amenities"};
public Benchmark() {}
private static synchronized void saveDiff(int microSec) {
WinVMBenchmark.allDiffs[count++] = microSec;
}
public void run() {
try {
sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
//Windows RDBMS
// String url = "http://52.74.42.188:8081/project0/dataRDBMS?category="+cats[new Random().nextInt(13)];
//SQS scalable
String url = "http://ec2-52-74-81-189.ap-southeast-1.compute.amazonaws.com:8081/project0/dataProxy?category="+cats[new Random().nextInt(13)];
//Only SDB
// String url = "http://ec2-52-74-81-189.ap-southeast-1.compute.amazonaws.com:8081/project0/dataSDB?category="+cats[new Random().nextInt(13)];
//Local Don't use this
// String url = "http://10.16.240.89/project0/dataProxy?category="+cats[new Random().nextInt(13)];
long start = System.nanoTime();
getJSON(url);
long diff = System.nanoTime() - start;
int time = (int) (diff / 1000);
saveDiff(time);
}
private static void getJSON(String url) {
Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress("proxy.iisc.ernet.in", 3128));
InputStream is;
try {
is = new URL(url).openConnection(proxy).getInputStream();
is.close();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
public class WinVMBenchmark {
public static int[] allDiffs;
public static void main(String[] args) {
int totalThreads = 100;
Benchmark[] allThreads = new Benchmark[totalThreads];
allDiffs = new int[totalThreads];
for(int i = 0; i < totalThreads; i++) {
allThreads[i] = new Benchmark();
allDiffs[i] = 0;
}
System.out.println("Main:>>> Created "+totalThreads+" threads");
for(int i = 0; i < totalThreads; i++) {
allThreads[i].start();
}
System.out.println("Main:>>> Started all threads");
while(true) {
if(Benchmark.count == totalThreads)
break;
else {
try {
System.out.print(Benchmark.count+",");
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
System.out.println("\n\n\n");
System.out.println("Main:>>> All threads processed");
for(int i = 0; i < totalThreads; i++) {
System.out.println(allDiffs[i]);
}
}
}