package senseiTests.performanceGMS;
import sensei.middleware.gms.*;
import sensei.middleware.gmns.*;
import sensei.gmns.*;
import sensei.util.logging.Logger;
public class Stresser extends GroupMemberImpl
{
class Sender extends Thread
{
GroupHandler handler;
Sender(GroupHandler gh){handler=gh;}
public void run()
{
try
{
while(true)
{
++sent;
handler.castMessage(factory.createMessage());
sleep(frecuency);
}
}
catch(Exception ex)
{
ex.printStackTrace();
System.exit(0);
}
}
}
final Factory factory;
final int frecuency;
int received, sent;
Performance performance;
public Stresser(String name, int n, Factory factory) throws Exception
{
this.factory=factory;
frecuency=n;
GroupMembershipNamingService service = GroupMembershipNamingServiceFactory.load();
if (service==null)
{
System.out.println("GroupMembershipNamingService is not available");
System.exit(0);
}
else
{
Logger.setLogName(name);
GroupHandlerFactory ghFactory=new GroupHandlerFactoryImpl(theGroupMember()).theGroupHandlerFactory();
service.findAndJoinGroup("performanceGMS", ghFactory, name, null);
}
}
public void changingView(){}
public void installView(View parm1){}
public void processCastMessage(int parm1, Message parm2)
{
if ((++received % 2500)==0)
{
performance.addMeasure(received);
System.out.println("received (" + received + ") sent (" + sent + ") msg/second: " + performance.speed()
+ " total: " + performance.totalSpeed());
}
}
public void processPTPMessage(int parm1, Message parm2){}
public void excludedFromGroup()
{
System.out.println("Member excluded from group");
System.exit(0);
}
public void memberAccepted(int parm1, GroupHandler handler, View parm3)
{
System.out.println("Member accepted in group");
performance = new Performance();
new Sender(handler).start();
}
}