3
Fork 0

Added code

This commit is contained in:
Willem Cazander 2022-11-12 13:48:19 +01:00
parent 8d2771ef74
commit a4e7295bcb
67 changed files with 6291 additions and 0 deletions

View file

@ -0,0 +1,102 @@
package suncertify.db;
import suncertify.core.LoadHotelRoomDB;
import suncertify.db.Data;
import suncertify.db.data.RowLock;
import suncertify.db.data.Table;
import suncertify.models.HotelRoom;
import suncertify.models.HotelRoomDBConverter;
import junit.framework.TestCase;
public class DataTest extends TestCase {
public void printRecord(String[] record) {
for (String value:record) {
System.out.print("'");
System.out.print(value);
System.out.print("'\t");
}
System.out.println("");
}
public void testData() throws Exception {
DataBaseManager dataBaseManager = new DataBaseManager();
new LoadHotelRoomDB().loadTable(dataBaseManager);
Table table = dataBaseManager.getHotelRoomTable();
HotelRoomDBConverter c = new HotelRoomDBConverter(table);
Data d = new Data(dataBaseManager.getHotelRoomTable());
printRecord(d.read(0));
printRecord(d.read(1));
printRecord(d.read(9));
String[] first = d.read(8);
printRecord(first);
HotelRoom hr = c.decode(first);
String[] back = c.encode(hr);
printRecord(back);
//assertEquals(first,back);
table.closeTable();
}
public void testLock() throws Exception {
DataBaseManager dataBaseManager = new DataBaseManager();
new LoadHotelRoomDB().loadTable(dataBaseManager);
Table table = dataBaseManager.getHotelRoomTable();
String[] interfaceData = {"name-FIELD-Data"+System.nanoTime(),"location-FIELD-DATa","45","true","$349.34","2008/02/13","888"};
int row = table.create(interfaceData);
System.out.println("NEW Rcords row:"+row);
RowLock lock = table.lock(2);
table.unlock(2, lock.getLockId());
lock = table.lock(2);
table.unlock(2, lock.getLockId());
lock = table.lock(2);
table.unlock(2, lock.getLockId());
// get lock
lock = table.lock(2);
boolean error = false;
try {
table.delete(20, lock.getLockId());
} catch (SecurityException se) {
error = true;
}
assertEquals(true,error);
error = false;
try {
table.delete(200000, lock.getLockId());
} catch (RecordNotFoundException se) {
error = true;
}
assertEquals(true,error);
//table.delete(2, lock.getLockId());
table.unlock(2, lock.getLockId());
error = false;
try {
Data d = new Data(table);
printRecord(d.read(2));
} catch (RecordNotFoundException re) {
error = true;
}
//assertEquals(true,error);
table.closeTable();
}
}

View file

@ -0,0 +1,111 @@
package suncertify.db;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.LineNumberReader;
import java.net.URL;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.logging.Logger;
import suncertify.core.LoadHotelRoomDB;
import suncertify.db.Data;
import suncertify.db.data.RowLock;
import suncertify.db.data.Table;
import suncertify.models.HotelRoom;
import suncertify.models.HotelRoomDBConverter;
import junit.framework.TestCase;
public class InsertTest extends TestCase {
public void printRecord(String[] record) {
StringBuilder buf = new StringBuilder(200);
for (String value:record) {
buf.append("'");
buf.append(value);
buf.append("'\t");
}
buf.append("");
Logger.getAnonymousLogger().info("data: "+buf);
}
public List<HotelRoom> getKamers() throws Exception {
URL u = new URL("url-not-there......");
InputStream in = u.openStream();
InputStreamReader fileReader = new InputStreamReader(in,"UTF-8");
LineNumberReader lineReader = new LineNumberReader(fileReader);
List<HotelRoom> result = new ArrayList<HotelRoom>(200);
String line = null;
int i = 0;
while ((line = lineReader.readLine()) !=null) {
if (line.contains("offerid")) {
continue; // skip header
}
i++;
String[] d = line.split("\t");
HotelRoom r = new HotelRoom();
r.setDateAvailable(new Date()); // d[11]
String s = d[1];
if (s.length()>63) {
s = s.substring(0,63);
}
r.setLocation(s);
if ("".equals(s)) {
continue;
}
s = d[2];
if (s.length()>63) {
s = s.substring(0,63);
}
r.setName(s);
if ("".equals(s)) {
continue;
}
r.setCustomerId(i);
r.setPriceRate(new Long(d[5]));
r.setSize(1);
r.setSmoking(false);
result.add(r);
}
return result;
}
public void testData() throws Exception {
DataBaseManager dataBaseManager = new DataBaseManager();
new LoadHotelRoomDB().loadTable(dataBaseManager);
Table table = dataBaseManager.getHotelRoomTable();
Data d = new Data(dataBaseManager.getHotelRoomTable());
HotelRoomDBConverter c = new HotelRoomDBConverter(table);
for (HotelRoom r:getKamers()) {
String[] data = c.encode(r);
printRecord(data);
d.create(data);
}
table.closeTable();
}
}

View file

@ -0,0 +1,59 @@
package suncertify.net;
import java.io.IOException;
import java.nio.channels.SocketChannel;
import suncertify.core.LoadHotelRoomDB;
import suncertify.core.LoadServerBeans;
import suncertify.core.NetworkServerWorker;
import suncertify.db.DataBaseManager;
import suncertify.net.NetworkServer.ServerBackendProvider;
import suncertify.server.ServerManager;
/**
* Starts the server.
*
* Currently max: (note: fully cached results)
* Dec 15, 2008 1:19:01 AM suncertify.net.NetworkNIOConnector$1 run
* INFO: sendObject() Statistics TPM: 86326 TPS: 1438
*
* @author Willem Cazander
*/
public class StartServer {
private NetworkServer server = null;
public void start() throws Exception {
DataBaseManager dataBaseManager = new DataBaseManager();
dataBaseManager.start();
final ServerManager serverManager = new ServerManager();
serverManager.start();
new LoadHotelRoomDB().loadTable(dataBaseManager);
new LoadServerBeans().loadBeans(serverManager,dataBaseManager);
ServerBackendProvider serverBackendProvider = new ServerBackendProvider() {
public void executeWorker(Runnable runable) {
serverManager.execute(runable);
}
public Runnable dataWorker(NetworkServer server,SocketChannel socket,byte[] data) {
return new NetworkServerWorker(serverManager,server,socket,data);
}
};
server = new NetworkServer(null, 9090, serverBackendProvider);
server.start();
}
public void stop() throws IOException {
server.stop();
}
public static void main(String[] args) {
try {
new StartServer().start();
} catch (Exception e) {
e.printStackTrace();
}
}
}

View file

@ -0,0 +1,147 @@
package suncertify.net;
import java.io.IOException;
import java.lang.reflect.Proxy;
import java.net.InetAddress;
import java.util.List;
import suncertify.models.HotelRoom;
import suncertify.server.beans.HotelRoomManagerRemote;
import junit.framework.TestCase;
/**
* Tests the network layer with multi threads and connections
*
* @author Willem Cazander
*/
public class ThreadedClientTest extends TestCase {
NetworkClient client = null;
@Override
protected void setUp() throws Exception {
client = new NetworkClient(InetAddress.getByName("localhost"), 9090);
client.start();
}
@Override
protected void tearDown() throws Exception {
client.stop();
}
public void testSingleRequest() throws Exception {
final HotelRoomManagerRemote remote = (HotelRoomManagerRemote)Proxy.newProxyInstance(Thread.currentThread().getContextClassLoader(),
new Class[] { HotelRoomManagerRemote.class },
client.getInvocationHandler(HotelRoomManagerRemote.class));
long startTime = System.currentTimeMillis();
List<HotelRoom> rooms = remote.getAllHotelRooms();
long stopTime = System.currentTimeMillis();
System.out.println("got rooms1: "+rooms.size()+" from threads: "+Thread.currentThread().getName()+" in "+(stopTime-startTime)+" ms.");
if (rooms.isEmpty()) {
assertEquals(true,false);
}
}
public void testThreadedRequestSingleRemote() throws Exception {
final HotelRoomManagerRemote remote = (HotelRoomManagerRemote)Proxy.newProxyInstance(Thread.currentThread().getContextClassLoader(),
new Class[] { HotelRoomManagerRemote.class },
client.getInvocationHandler(HotelRoomManagerRemote.class));
for (int i=0;i<1;i++) {
Thread tt = new Thread(new Runnable() {
public void run() {
try {
for (int i=0;i<20000;i++) {
long startTime = System.currentTimeMillis();
List<HotelRoom> rooms = remote.getAllHotelRooms();
long stopTime = System.currentTimeMillis();
if (i%1000==0) {
System.out.println(i+" got rooms: "+rooms.size()+" from threads: "+Thread.currentThread().getName()+" in "+(stopTime-startTime)+" ms.");
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
});
tt.setPriority(10);
tt.setDaemon(false);
tt.setName("client-bench-"+i);
tt.start();
}
Thread.sleep(22000);
}
public void testThreadedRequestThreadRemote() throws Exception {
for (int i=0;i<10;i++) {
Thread tt = new Thread(new Runnable() {
public void run() {
try {
HotelRoomManagerRemote remote = (HotelRoomManagerRemote)Proxy.newProxyInstance(Thread.currentThread().getContextClassLoader(),
new Class[] { HotelRoomManagerRemote.class },
client.getInvocationHandler(HotelRoomManagerRemote.class));
for (int i=0;i<1000;i++) {
//Thread.sleep(new Random().nextInt(400) );
long startTime = System.currentTimeMillis();
List<HotelRoom> rooms = remote.getAllHotelRooms();
long stopTime = System.currentTimeMillis();
if (i%100==0) {
System.out.println(i+" got rooms: "+rooms.size()+" from threads: "+Thread.currentThread().getName()+" in "+(stopTime-startTime)+" ms.");
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
});
tt.setPriority(10);
tt.setDaemon(false);
tt.setName("client-bench-"+i);
tt.start();
}
Thread.sleep(22000);
}
public void testThreadedRequestPerThreadClient() throws Exception {
for (int i=0;i<10;i++) {
Thread tt = new Thread(new Runnable() {
NetworkClient clientThread = null;
public void run() {
try {
clientThread = new NetworkClient(InetAddress.getByName("localhost"), 9090);
clientThread.start();
HotelRoomManagerRemote remote = (HotelRoomManagerRemote)Proxy.newProxyInstance(Thread.currentThread().getContextClassLoader(),
new Class[] { HotelRoomManagerRemote.class },
clientThread.getInvocationHandler(HotelRoomManagerRemote.class));
for (int i=0;i<1000;i++) {
//Thread.sleep(new Random().nextInt(400) );
long startTime = System.currentTimeMillis();
List<HotelRoom> rooms = remote.getAllHotelRooms();
long stopTime = System.currentTimeMillis();
if (i%100==0) {
System.out.println(i+" got rooms: "+rooms.size()+" from threads: "+Thread.currentThread().getName()+" in "+(stopTime-startTime)+" ms.");
}
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
clientThread.stop();
} catch (IOException e) {
e.printStackTrace();
}
}
}
});
tt.setPriority(10);
tt.setDaemon(false);
tt.setName("client-bench-"+i);
tt.start();
}
Thread.sleep(22000);
}
}