您好,登錄后才能下訂單哦!
場景
目前通過Thrift框架生成了C#代碼,由于沒有怎么接觸過這門語言,因此直接啟動(dòng)程序模擬多個(gè)用戶進(jìn)行測試。在無法修改代碼進(jìn)行負(fù)載性測試的情況下,可以使用system函數(shù)啟動(dòng)程序,模擬多個(gè)用戶的實(shí)際操作。
#include <windows.h>
int main()
{
while (1)
{
::system("E:/thriftserver/thrift-csharp/ThriftTest/bin/Debug/ThriftTest.exe");
::Sleep(1000);
}
return 0;
}
C#的實(shí)際代碼如下
static void ProcessThread(TProtocol protocol)
{
TProcessor processor = new PushMessageService.Processor(new CRecvMessageSErviceImpl());
while (true)
{
try
{
while (processor.Process(protocol, protocol)) { };
return;
}
catch (System.NullReferenceException tt)
{
return;
}
catch (Thrift.Transport.TTransportException tt)
{
//服務(wù)器沒有啟動(dòng),會(huì)拋出此異常
return;
}
}
}
static void MonitorThread(TTransport trans, Action<string> callback)
{
while (true)
{
try
{
if (!trans.Peek())
{
callback("connect close\n");
}
Thread.Sleep(200);
}
catch (Thrift.TApplicationException ex)
{
callback(ex.Message);
return;
}
}
}
static void Main(string[] args)
{
TTransport transport = new TBufferedTransport(new TSocket("192.168.1.110", 7001));
TProtocol protocol = new TBinaryProtocol(transport);
UploadMessageService.Client client = new UploadMessageService.Client(protocol);
Action<TProtocol> processAction = new Action<TProtocol>(ProcessThread);
Action<TTransport, Action<string>> monitorAction = new Action<TTransport, Action<string>>(MonitorThread);
try
{
transport.Open();
processAction.BeginInvoke(protocol, (result) =>
{
processAction.EndInvoke(result);
}, null);
monitorAction.BeginInvoke(transport, (msg) =>
{
Console.WriteLine("connect stop", msg);
}, (result) =>
{
}, null);
info.StrUserId = "admin";
info.StrPassword = "admin";
client.Login(info);
}
}
catch (System.NullReferenceException ttx)
{
//服務(wù)器停止運(yùn)行,會(huì)拋出此異常
return;
}
catch (System.IO.IOException ttx)
{
return;
}
catch (Thrift.Transport.TTransportException tt)
{
//服務(wù)器沒有啟動(dòng),會(huì)拋出此異常
return;
}
//transport.Close();
//在這里模擬異常情況,沒有正常關(guān)閉
}
}
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。