diff --git a/test/MainU.pas b/test/MainU.pas index d69c2a05..f54c0e8e 100644 --- a/test/MainU.pas +++ b/test/MainU.pas @@ -13,21 +13,20 @@ uses dateutils, StompClient, StompTypes, - StopWatch; + Diagnostics; function NewStomp(serveraddress: string = 'localhost'): TStompClient; begin Result := TStompClient.Create; - Result.UserName := 'guest'; - Result.Password := 'guest'; + Result.SetUserName('guest'); + Result.SetPassword('guest'); Result.Connect(serveraddress); end; - procedure Test_Unicode_Chars(serveraddress: string); var stomp: TStompClient; - s: TStompFrame; + s: IStompFrame; const SERBO = 'Što je Unicode'; SVEDESE = 'Vad är Unicode'; @@ -41,16 +40,16 @@ begin stomp.Send('/topic/unicode', SVEDESE); s := stomp.Receive; - assert(s<>nil); - assert(s.Body = ITALIANO); + assert(s <> nil); + assert(s.GetBody = ITALIANO); s := stomp.Receive; - assert(s<>nil); - assert(s.Body = SERBO); + assert(s <> nil); + assert(s.GetBody = SERBO); s := stomp.Receive; - assert(s<>nil); - assert(s.Body = SVEDESE); + assert(s <> nil); + assert(s.GetBody = SVEDESE); finally stomp.Free; end; @@ -59,7 +58,7 @@ end; procedure MainWithTransaction(serveraddress: string); var stomp, recv: TStompClient; - frame: TStompFrame; + frame: IStompFrame; m: Integer; const TR = 'TRDANIELE'; @@ -77,45 +76,31 @@ begin recv.Subscribe(TOPIC); stomp.BeginTransaction(TR); - stomp.send(TOPIC, BODY1, TR); - stomp.send(TOPIC, BODY2, TR); - stomp.send(TOPIC, BODY3, TR); - stomp.send(TOPIC, BODY4, TR); + stomp.Send(TOPIC, BODY1, TR); + stomp.Send(TOPIC, BODY2, TR); + stomp.Send(TOPIC, BODY3, TR); + stomp.Send(TOPIC, BODY4, TR); // NON DEVCE TROVARE NULLA frame := recv.Receive; assert(frame = nil); stomp.CommitTransaction(TR); - // ORA DEVE LEGGERE I MESSAGGI - // m := 0; - // while true do - // begin - // frame := recv.Receive; - // if frame <> nil then - // begin - // inc(m); - // writeln(frame.output); - // if m = 4 then - // break; - // end; - // end; + frame := recv.Receive; + assert(frame <> nil); + assert(frame.GetBody = BODY1); frame := recv.Receive; assert(frame <> nil); - assert(frame.Body = BODY1); + assert(frame.GetBody = BODY2); frame := recv.Receive; assert(frame <> nil); - assert(frame.Body = BODY2); + assert(frame.GetBody = BODY3); frame := recv.Receive; assert(frame <> nil); - assert(frame.Body = BODY3); - - frame := recv.Receive; - assert(frame <> nil); - assert(frame.Body = BODY4); + assert(frame.GetBody = BODY4); frame := recv.Receive; assert(frame = nil); @@ -130,7 +115,7 @@ end; procedure Main(serveraddress: string = 'localhost'); var stomp: TStompClient; - frame: TStompFrame; + frame: IStompFrame; i, c: Integer; msgcount: Cardinal; sw: TStopWatch; @@ -142,56 +127,49 @@ begin message_data := StringOfChar('X', MSG_SIZE); WriteLn('TEST MESSAGE (', length(message_data) * sizeof(char), ' bytes):', #13#10, '"', message_data, '"'#13#10#13#10); - sw := TStopWatch.Create; + stomp := TStompClient.Create; try - stomp := TStompClient.Create; - try - stomp.EnableReceipts := false; - stomp.UserName := 'Daniele'; - stomp.Password := 'Paperino'; - stomp.Connect(serveraddress); - stomp.Subscribe('/topic/foo.bar'); + stomp.SetUserName('Daniele'); + stomp.SetPassword('Paperino'); + stomp.Connect(serveraddress); + stomp.Subscribe('/topic/foo.bar'); - for c := 1 to 10 do + for c := 1 to 10 do + begin + WriteLn; + WriteLn('= STATS LOOP ', c, '======================================='); + for i := 1 to MSG do begin - WriteLn; - WriteLn('= STATS LOOP ', c, '======================================='); - for i := 1 to MSG do - begin - stomp.send('/topic/foo.bar', message_data, StompUtils.StompHeaders.Add(shPersistent) - // '01234567890123456789012345678901234567890123456789' - ); - if i mod 1000 = 0 then - WriteLn('Queued ', i, ' messages'); - end; - - msgcount := 0; - sw.start; - while msgcount < MSG do - begin - frame := stomp.Receive; - if assigned(frame) then - begin - inc(msgcount); - frame.Free; - end - end; - sw.Stop; - WriteLn(msgcount, ' in ', sw.ElapsedMiliseconds, ' milliseconds and ', sw.ElapsedTicks, ' ticks'); - WriteLn('Throughput: '); - WriteLn(FormatFloat('###,##0.000', sw.ElapsedMiliseconds / msgcount), ' ms/msg'); - WriteLn(FormatFloat('###,##0.000', msgcount / sw.ElapsedMiliseconds), ' msg/ms'); - WriteLn('= END LOOP ', c, '========================================='#13#10); + stomp.Send('/topic/foo.bar', message_data, StompUtils.NewHeaders.Add(TStompHeaders.NewPersistentHeader(true))); + // '01234567890123456789012345678901234567890123456789' + if i mod 1000 = 0 then + WriteLn('Queued ', i, ' messages'); end; - stomp.Unsubscribe('/topic/foo.bar'); - stomp.Disconnect; - write('test finished...'); - finally - stomp.Free; + msgcount := 0; + sw.start; + while msgcount < MSG do + begin + frame := stomp.Receive; + if assigned(frame) then + begin + inc(msgcount); + frame := Nil; + end + end; + sw.Stop; + WriteLn(msgcount, ' in ', sw.ElapsedMilliseconds, ' milliseconds and ', sw.ElapsedTicks, ' ticks'); + WriteLn('Throughput: '); + WriteLn(FormatFloat('###,##0.000', sw.ElapsedMilliseconds / msgcount), ' ms/msg'); + WriteLn(FormatFloat('###,##0.000', msgcount / sw.ElapsedMilliseconds), ' msg/ms'); + WriteLn('= END LOOP ', c, '========================================='#13#10); end; + + stomp.Unsubscribe('/topic/foo.bar'); + stomp.Disconnect; + write('test finished...'); finally - sw.Free; + stomp.Free; end; end; diff --git a/test/teststompclient.dpr b/test/teststompclient.dpr index ae31f3ca..16754d88 100644 --- a/test/teststompclient.dpr +++ b/test/teststompclient.dpr @@ -3,11 +3,10 @@ program teststompclient; {$APPTYPE CONSOLE} uses - StompTypes in 'StompTypes.pas', - StompClient in 'StompClient.pas', MainU in 'MainU.pas', SysUtils, - StopWatch in 'StopWatch.pas'; + StompClient in '..\StompClient.pas', + StompTypes in '..\StompTypes.pas'; begin try diff --git a/test/teststompclient.dproj b/test/teststompclient.dproj index 5b60022e..92e2ff29 100644 --- a/test/teststompclient.dproj +++ b/test/teststompclient.dproj @@ -101,10 +101,9 @@ MainSource - - - + + Base