11. 附录
11.1 simpsvrUp
#include
#include "atmi.h"
void TOUPPER(TPSVCINFO *rqst)
{
int i;
char *buf;
long sendlen,rcvlen;
for(i = 0; i < rqst->len-1; i++)
rqst->data[i] = toupper(rqst->data[i]);
userlog("From Client ReqId[%s]",rqst->data);
sendlen = rqst->len;
if((buf = (char *) tpalloc("STRING", NULL, sendlen+1)) == NULL)
{
(void) fprintf(stderr,"Error allocating send buffer\n");
tpterm();
exit(1);
}
(void) strcpy(buf, rqst->data);
if (tpcall("TOLOWER", (char *) buf, 0, (char **)&buf, &rcvlen, (long)0 ) == -1)
{
userlog( "TPCALL ERROR CODE %d message[%s]", tperrno, tpstrerror(tperrno));
(void) fprintf(stderr, "Tperrno = %d\n", tperrno);
tpfree( buf);
tpreturn(TPSUCCESS, 0, buf, 0L, 0);
}
userlog("Call Remote ToLower Success [%s]", buf);
tpreturn(TPSUCCESS, 0, buf, 0L, 0);
}
11.2 simpsvrLow
#include
#include "atmi.h"
void TOLOWER(TPSVCINFO *rqst)
{
int i;
for(i = 0; i < rqst->len-1; i++)
rqst->data[i] = tolower(rqst->data[i]);
userlog("From Client ReqId[%s]",rqst->data);
printf("In ToLower");
//sleep(10);
tpreturn(TPSUCCESS, 0, rqst->data, 0L, 0);
}
11.3 ubbmp
*RESOURCES
IPCKEY 45678
MASTER site1,site2
MAXACCESSERS 1000
MAXSERVERS 200
MAXSERVICES 100
MODEL MP
LDBAL Y
OPTIONS LAN,MIGRATE
*MACHINES
FireCat1 LMID=site1
UID=508
GID=508
APPDIR="/home/tuxapp/tuxedo"
TUXCONFIG="/home/tuxapp/tuxedo/tuxconfig"
TUXDIR="/home/tuxedo/tuxedo8.1"
TYPE="linux"
MAXWSCLIENTS=100
FireCat2 LMID=site2
UID=508
GID=508
APPDIR="/home/tuxapp/tuxedo"
TUXCONFIG="/home/tuxapp/tuxedo/tuxconfig"
TUXDIR="/home/tuxedo/tuxedo8.1"
TYPE="LINUX"
MAXWSCLIENTS=100
*GROUPS
GROUP1
LMID=site1 GRPNO=1 OPENINFO=NONE
GROUP2
LMID=site2 GRPNO=2 OPENINFO=NONE
*NETWORK
site1 NADDR="//192.168.8.120:6009"
NLSADDR="//192.168.8.120:8888"
site2 NADDR="//192.168.8.121:7010"
NLSADDR="//192.168.8.121:8888"
*SERVERS
DEFAULT:
RESTART=N MAXGEN=5 REPLYQ=Y CLOPT="-A"
WSL SRVGRP=GROUP1 SRVID=1
CLOPT="-A — -n //192.168.8.120:9502 -m 5 -x 5 -M 30"
WSL SRVGRP=GROUP2 SRVID=100
CLOPT="-A — -n //192.168.8.121:9502 -m 5 -x 5 -M 30"
simpsvr SRVGRP=GROUP2 SRVID=11 RQADDR=RQ_simp1 RQPERM=0666 CLOPT="-A -p 1,10:2,1 " MIN=5 MAX=10
simpsvr SRVGRP=GROUP1 SRVID=111 RQADDR=RQ_simp2 RQPERM=0666 CLOPT="-A -p 1,10:2,1 " MIN=5 MAX=10
*SERVICES
11.4 country ubbdm
*RESOURCES
IPCKEY 240000
MASTER tuxtest
PERM 0666
MAXACCESSERS 1000
MAXSERVERS 50
MAXSERVICES 100
MODEL SHM
LDBAL Y
SCANUNIT 5
SANITYSCAN 12
BBLQUERY 30
DBBLWAIT 2
BLOCKTIME 6
*MACHINES
DEFAULT:
CharlesLinux LMID=tuxtest
MAXWSCLIENTS=100
APPDIR="/home/tuxapp/tuxedo"
TUXCONFIG="/home/tuxapp/tuxedo/tuxconfig"
TUXDIR="/home/tuxedo/tuxedo8.1"
ULOGPFX="/home/tuxapp/tuxedo/ULOG"
*GROUPS
ADMIN
LMID=tuxtest GRPNO=1 OPENINFO=NONE
REMIT
LMID=tuxtest GRPNO=2 OPENINFO=NONE
DOMGRP
LMID=tuxtest GRPNO=3
DOMGRP1
LMID=tuxtest GRPNO=4
DOMGRP2
LMID=tuxtest GRPNO=5
*SERVERS
DEFAULT:
CLOPT="-A " REPLYQ=Y RESTART=Y GRACE=0 MAXGEN=5
WSL SRVGRP=ADMIN SRVID=1
CLOPT="-A -t — -n //111.111.111.22:6666-m 10 -M 100 -x 5"
simpsvrUp SRVGRP=REMIT SRVID=10 RQADDR=RQ_simpUp RQPERM=0666 CLOPT="-A – p 1,10:2,1 " MIN=2 MAX=10
DMADM SRVGRP=DOMGRP SRVID=3050 REPLYQ=N RESTART=Y GRACE=0
GWADM SRVGRP=DOMGRP1 SRVID=3051 REPLYQ=N RESTART=Y GRACE=0
GWTDOMAIN SRVGRP=DOMGRP1 SRVID=3052 RQADDR=RQ_GWT1 REPLYQ=Y RESTART=Y MIN=1 MAX=1
GWADM SRVGRP=DOMGRP2 SRVID=3053 REPLYQ=N RESTART=Y GRACE=0
GWTDOMAIN SRVGRP=DOMGRP2 SRVID=3054 RQADDR=RQ_GWT2 REPLYQ=Y RESTART=Y MIN=1 MAX=1
*SERVICES
11.5 countrydom
*DM_RESOURCES
*DM_LOCAL_DOMAINS
HOME1 GWGRP=DOMGRP1
CONNECTION_POLICY=ON_STARTUP
TYPE=TDOMAIN
DOMAINID="EPR111"
BLOCKTIME=10
MAXDATALEN=1000
MAXRDOM=89
#DMTLOGDEV="/home/tuxapp/tuxedo/tlog/DMTLOG"
HOME2 GWGRP=DOMGRP2
CONNECTION_POLICY=ON_STARTUP
TYPE=TDOMAIN
DOMAINID="EPR112"
BLOCKTIME=10
MAXDATALEN=1000
*DM_REMOTE_DOMAINS
RMTGJ TYPE=TDOMAIN
DOMAINID=EPRGJ
*DM_TDOMAIN
HOME1 NWADDR="//111.111.111.22.:6651"
HOME2 NWADDR="//111.111.111.22:6652"
RMTGJ NWADDR="//111.111.111.33:6660"
*DM_LOCAL_SERVICES
TOUPPER
*DM_REMOTE_SERVICES
TOLOWER
# TOLOWER LDOM= HOME1 RDOM= RMTGJ RNAME= TOLOWER
# TOLOWER LDOM= HOME2 RDOM= RMTGJ RNAME= TOLOWER
11.6 world ubbdm
*RESOURCES
IPCKEY 240000
MASTER tuxtest
PERM 0666
MAXACCESSERS 1000
MAXSERVERS 50
MAXSERVICES 100
MODEL SHM
LDBAL Y
SCANUNIT 5
SANITYSCAN 12
BBLQUERY 30
DBBLWAIT 2
BLOCKTIME 6
*MACHINES
DEFAULT:
localhost LMID=tuxtest
MAXWSCLIENTS=100
APPDIR="/home/tuxapp/tuxedo"
TUXCONFIG="/home/tuxapp/tuxedo/tuxconfig"
TUXDIR="/home/tuxedo/tuxedo8.1"
ULOGPFX="/home/tuxapp/tuxedo/ULOG"
TLOGDEVICE="/home/tuxapp/tuxedo/tlog/TLOG"
*GROUPS
ADMIN
LMID=tuxtest GRPNO=1 OPENINFO=NONE
REMIT
LMID=tuxtest GRPNO=2 OPENINFO=NONE
DOMGRP
LMID=tuxtest GRPNO=3
*SERVERS
DEFAULT:
CLOPT="-A " REPLYQ=Y RESTART=Y GRACE=0 MAXGEN=5
WSL SRVGRP=ADMIN SRVID=1
CLOPT="-A — -n //111.111.111.121:6669 -m 1 -M 100 -x 5"
simpsvrLow SRVGRP=REMIT SRVID=110 RQADDR=RQ_simpLow RQPERM=0666 CLOPT="- A – p 1,10:2,1 " MIN=2 MAX=10
DMADM SRVGRP=DOMGRP SRVID=3050 REPLYQ=N
GWADM SRVGRP=DOMGRP SRVID=3051 REPLYQ=N
GWTDOMAIN SRVGRP=DOMGRP SRVID=3052 REPLYQ=Y
*SERVICES
11.7 worlddom
*DM_RESOURCES
*DM_LOCAL_DOMAINS
HOME GWGRP=DOMGRP
TYPE=TDOMAIN
DOMAINID="EPRGJ"
BLOCKTIME=10
MAXDATALEN=1000
MAXRDOM=89
#DMTLOGDEV="/home/tuxapp/tuxedo/tlog/DMTLOG"
*DM_REMOTE_DOMAINS
RMT111 TYPE=TDOMAIN
DOMAINID=EPR111
RMT112 TYPE=TDOMAIN
DOMAINID=EPR112
*DM_TDOMAIN
HOME NWADDR="//111.111.111.121:6660"
RMT111 NWADDR="//111.111.111.120:6651"
RMT112 NWADDR="//111.111.111.120:6652"
*DM_LOCAL_SERVICES
#TOUPPER
TOLOWER
*DM_REMOTE_SERVICES
TOUPPER
#TOLOWER
11.8 LoadRunner Script
vuser_init:
vuser_init()
{
return 0;
}
Action:
#include "lrt.h"
#include "replay.vdf"
Action()
{
lrt_tuxputenv("WSNADDR=//111.111.111.22:6666");
tpresult_int = lrt_tpinitialize(LRT_END_OF_PARMS);
lrt_abort_on_error();
data_0 = lrt_tpalloc("STRING", "", 4);
lrt_strcpy(data_0, sbuf_1);
data_1 = lrt_tpalloc("STRING", "", 4);
tpresult_int = lrt_tpcall("TOUPPER",
data_0,
0,
&data_1,
&olen,
0);
lrt_abort_on_error();
lrt_tpfree(data_0);
lrt_tpfree(data_1);
lrt_tpterm();
return 0;
}
vuser_end:
vuser_end()
{
return 0;
}
replay.vdf:
#ifndef TUXVDF_H
#define TUXVDF_H
char* data_0;
char* data_1;
static const char sbuf_1[] =
"yyy";
/* Reply STRING buffer 1
"yyy"
"\x0";
Reply buffer */
#endif
11.9 bang Program
#include
#include"atmi.h"
#include
#include
#include
#include
#include
voidPrtMillTime(char*);
voidscallserver(intbuflen,char*sbuf);
main(void)
{
inti,j;
charsToDo[200];
charsReqId[11];
pid_tchild;
memset(sToDo,’\0′,sizeof(sToDo));
memset(sReqId,’\0′,sizeof(sReqId));
PrtMillTime(sReqId);
printf("starttime[%s]\n",sReqId);
for(i=0;i<=30;i++)
{
if((child=fork())==-1)
{
//printf("ForkError:%s\n",strerror(errno));
printf("ForkError\n");
exit(1);
}
elseif(child==0)
{
sprintf(sToDo,"%s%d\n","/home/tuxapp/bin/simpcli",getpid());
for(j=0;j<100;j++)
{
//PrtMillTime(sReqId);
//printf("Iamthechild:%ld\n",getpid());
sprintf(sToDo,"%d",getpid());
scallserver(1,sToDo);
}
exit(2);
}
}
PrtMillTime(sReqId);
printf("endtime[%s]\n",sReqId);
exit(0);
}
voidPrtMillTime(char*sDesc)
{
structtm*tmCurTime;
structtimebtbTimeBlock;
charszDescription[41];
charsRet[20];
memset(szDescription,0,sizeof(szDescription));
strncpy(szDescription,sDesc,40);
memset(sRet,’\0′,sizeof(sRet));
ftime(&tbTimeBlock);
tmCurTime=localtime(&tbTimeBlock.time);
sprintf(sDesc,"%02d%02d%02d%02d%03d",
tmCurTime->tm_mday,tmCurTime->tm_hour,
tmCurTime->tm_min,tmCurTime->tm_sec,tbTimeBlock.millitm);
}
voidscallserver(intbuflen,char*sbuf)
{
char*buf;
longsendlen,rcvlen;
intret;
if(tpinit((TPINIT*)NULL)==-1){
(void)fprintf(stderr,"Tpinitfailed\n");
exit(1);
}
sendlen=strlen(sbuf);
if((buf=(char*)tpalloc("STRING",NULL,sendlen+1))==NULL){
(void)fprintf(stderr,"Errorallocatingsendbuffer\n");
tpterm();
exit(1);
}
(void)strcpy(buf,sbuf);
ret=tpcall("TOUPPER",(char*)buf,0,(char**)&buf,&rcvlen,(long)0);
if(ret==-1){
(void)fprintf(stderr,"Can’tsendrequesttoserviceTOUPPER\n");
(void)fprintf(stderr,"Tperrno=%dmessage[%s]\n",tperrno,tpstrerror(tperrno));
tpfree(buf);
tpterm();
exit(1);
}
tpfree(buf);
tpterm();
}