05
--
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
--
>>
<<
--
LATEST ENTRY
CATEGORY
ARCHIVE
PROFILE
SEARCH
RECENT COMMENT
MOBILE
qrcode
OTHERS
<< 【QUICKFIX】 FX自動売買への道 16 【通信系の試験(正常系)】 | top | 【QUICKFIX】 FX自動売買への道 18 【通貨ペアの取得(SecurityListRequest)】 >>
スポンサーサイト

一定期間更新がないため広告を表示しています

スポンサードリンク | - | | - | - |
【QUICKFIX】 FX自動売買への道 17 【通信系の試験(準正常系)】
正常系の試験は終わったので、準正常系をば

 

■準正常系のための設定ファイル変更(tradeclient.cfg)
連番の不一致試験を行うために、ログイン時に連番を初期化する設定を変更する。
( "Y" だったのを "N" に変更)
examples]# vi tradeclient.cfg
−−−抜粋−−−−
        ResetOnLogout=N
        ResetOnLogon=N

        # コメントアウト  Debug_h_TradingSessionStatus=true
ーーーーーーーーー


■準正常系の準備:DBの連番を変更(現在より大きく変更)
mysql> SELECT incoming_seqnum, outgoing_seqnum  FROM sessions  WHERE sendercompid = 'CAXDemo_Account_Trd';
    +-----------------+-----------------+
    | incoming_seqnum | outgoing_seqnum |
    +-----------------+-----------------+
    |               1 |               1 |
    +-----------------+-----------------+
    1 row in set (0.00 sec)



現在値は 1 なので。。99くらいにしておく
mysql> UPDATE sessions  SET outgoing_seqnum = 99  WHERE sendercompid = 'CAXDemo_Account_Trd';
    Query OK, 1 row affected (0.00 sec)
    Rows matched: 1  Changed: 1  Warnings: 0



DB値を確認
mysql> SELECT incoming_seqnum, outgoing_seqnum  FROM sessions  WHERE sendercompid = 'CAXDemo_Account_Trd';
    +-----------------+-----------------+
    | incoming_seqnum | outgoing_seqnum |
    +-----------------+-----------------+
    |               1 |              99 |
    +-----------------+-----------------+
    1 row in set (0.00 sec)




■準正常系の試験(7.通信連番不一致(連番が大きい場合))
examples]# ./tradeclient/tradeclient  tradeclient.cfg
        1) TestRequest Trade
        2) TestRequest Ratefeed
        q) Quit
        Action:
        Logon - FIX.4.4:CAXDemo_Account_Trd->CNX
        q

        Logout - FIX.4.4:CAXDemo_Account_Trd->CNX


DBを確認
−−−−−−−−−−−−
12:42:43.288 CAXDemo_Account_Trd  CNX  8=FIX.4.49=9435=A34=9949=CAXDemo_Account_Trd52=20160401-12:42:43.28256=CNX554=Pass123498=0108=3010=167
12:42:43.828 CNX  CAXDemo_Account_Trd  8=FIX.4.49=8035=A49=CNX34=452=20160401-12:42:43.74556=CAXDemo_Account_Trd98=0108=3010=033
12:42:43.881 CAXDemo_Account_Trd  CNX  8=FIX.4.49=7935=234=10049=CAXDemo_Account_Trd52=20160401-12:42:43.85456=CNX7=116=010=218
12:42:43.885 CNX  CAXDemo_Account_Trd  8=FIX.4.49=7735=249=CNX34=552=20160401-12:42:43.74556=CAXDemo_Account_Trd16=07=310=125
12:42:43.901 CAXDemo_Account_Trd  CNX  8=FIX.4.49=11235=434=343=Y49=CAXDemo_Account_Trd52=20160401-12:42:43.90156=CNX122=20160401-12:42:43.90136=101123=Y10=126
12:42:43.905 CNX  CAXDemo_Account_Trd  8=FIX.4.49=8035=h49=CNX34=652=20160401-12:42:43.74556=CAXDemo_Account_Trd336=0340=210=066
12:42:44.46  CNX  CAXDemo_Account_Trd  8=FIX.4.49=10635=449=CNX34=152=20160401-12:42:43.96056=CAXDemo_Account_Trd122=20160401-12:42:4343=Y36=7123=Y10=097
12:43:13.471 CAXDemo_Account_Trd  CNX  8=FIX.4.49=7035=034=10149=CAXDemo_Account_Trd52=20160401-12:43:13.45956=CNX10=084
12:43:14.477 CNX  CAXDemo_Account_Trd  8=FIX.4.49=6835=049=CNX34=752=20160401-12:43:14.39356=CAXDemo_Account_Trd10=254
12:43:22.549 CAXDemo_Account_Trd  CNX  8=FIX.4.49=7035=534=10249=CAXDemo_Account_Trd52=20160401-12:43:22.53656=CNX10=086
12:43:22.719 CNX  CAXDemo_Account_Trd  8=FIX.4.49=6835=549=CNX34=852=20160401-12:43:22.63456=CAXDemo_Account_Trd10=001



期待する結果
 QuickFIX  --> Currenex  35=A  ログインすると
 QuickFIX <--  Currenex  35=A  ログイン許可が来るけど
 QuickFIX <--  Currenex  35=2  ResendRequest も来て
 QuickFIX <--  Currenex  35=h  取引可能 が来て
 QuickFIX  --> Currenex  35=4  連番リセットを送る

確認結果
 QuickFIX  --> Currenex  35=A  42:43.288 ログインすると
 QuickFIX <--  Currenex  35=A  42:43.828 ログイン許可が来て
 QuickFIX  --> Currenex  35=2  42:43.881 ResendRequest を送って??
 QuickFIX <--  Currenex  35=2  42:43.885 ResendRequest も来て
 QuickFIX  --> Currenex  35=4  42:43.901 連番リセット を送って??
 QuickFIX <--  Currenex  35=h  42:43.905 取引可能が来て
 QuickFIX <--  Currenex  35=4  42:44.46  連番リセット が来る??
 QuickFIX  --> Currenex  35=0  43:13.471 あとはハートビート
 QuickFIX <--  Currenex  35=0  43:14.477 ハートビート


うーん。。
DBの受信側の連番 Sessions.incoming_seqnum を変更しなかったから、
サーバから来た番号がおかしいと思って、こっちからも < 2 >と< 4 >を送っちゃったのかな。

ということは、今は連番がサーバ側と一致してるはずだから
DBの連番をさらに大きく変更して
mysql> UPDATE sessions  SET outgoing_seqnum = 999  WHERE sendercompid = 'CAXDemo_Account_Trd';
    Query OK, 1 row affected (0.07 sec)
    Rows matched: 1  Changed: 1  Warnings: 0



DB値を確認
mysql> SELECT incoming_seqnum, outgoing_seqnum  FROM sessions  WHERE sendercompid = 'CAXDemo_Account_Trd';
    +-----------------+-----------------+
    | incoming_seqnum | outgoing_seqnum |
    +-----------------+-----------------+
    |               9 |             999 |
    +-----------------+-----------------+
    1 row in set (0.00 sec)



もう一度トライ!!
examples]# ./tradeclient/tradeclient  tradeclient.cfg
        1) TestRequest Trade
        2) TestRequest Ratefeed
        q) Quit
        Action:
        Logon - FIX.4.4:CAXDemo_Account_Trd->CNX

        IN: 8=FIX.4.49=8135=h34=1149=CNX52=20160401-12:56:02.06356=CAXDemo_Account_Trd336=0340=210=104
        q

        Logout - FIX.4.4:CAXDemo_Account_Trd->CNX

ん? 35=h のIN: 表示が・・さっきはなかったな・・


DBを確認
−−−−−−−−−−−−
12:56:01.456 CAXDemo_Account_Trd  CNX  8=FIX.4.49=9535=A34=99949=CAXDemo_Account_Trd52=20160401-12:56:01.45156=CNX554=Pass123498=0108=3010=222
12:56:02.151 CNX  CAXDemo_Account_Trd  8=FIX.4.49=8035=A49=CNX34=952=20160401-12:56:02.06356=CAXDemo_Account_Trd98=0108=3010=031
12:56:02.165 CNX  CAXDemo_Account_Trd  8=FIX.4.49=8035=249=CNX34=1052=20160401-12:56:02.06356=CAXDemo_Account_Trd16=07=10310=253
12:56:02.174 CAXDemo_Account_Trd  CNX  8=FIX.4.49=11535=434=10343=Y49=CAXDemo_Account_Trd52=20160401-12:56:02.17456=CNX122=20160401-12:56:02.17436=1000123=Y10=021
12:56:02.184 CNX  CAXDemo_Account_Trd  8=FIX.4.49=8135=h49=CNX34=1152=20160401-12:56:02.06356=CAXDemo_Account_Trd336=0340=210=104
12:56:32.481 CNX  CAXDemo_Account_Trd  8=FIX.4.49=6935=049=CNX34=1252=20160401-12:56:32.39356=CAXDemo_Account_Trd10=047
12:56:32.499 CAXDemo_Account_Trd  CNX  8=FIX.4.49=7135=034=100049=CAXDemo_Account_Trd52=20160401-12:56:32.49556=CNX10=137
12:57:02.482 CNX  CAXDemo_Account_Trd  8=FIX.4.49=6935=049=CNX34=1352=20160401-12:57:02.39356=CAXDemo_Account_Trd10=046
12:57:02.504 CAXDemo_Account_Trd  CNX  8=FIX.4.49=7135=034=100149=CAXDemo_Account_Trd52=20160401-12:57:02.49356=CNX10=134
12:57:08.648 CAXDemo_Account_Trd  CNX  8=FIX.4.49=7135=534=100249=CAXDemo_Account_Trd52=20160401-12:57:08.63956=CNX10=148
12:57:08.813 CNX  CAXDemo_Account_Trd  8=FIX.4.49=6935=549=CNX34=1452=20160401-12:57:08.72156=CAXDemo_Account_Trd10=053



期待する結果
 QuickFIX  --> Currenex  35=A  ログインすると
 QuickFIX <--  Currenex  35=A  ログイン許可が来るけど
 QuickFIX <--  Currenex  35=2  ResendRequest も来て
 QuickFIX <--  Currenex  35=h  取引可能 が来て
 QuickFIX  --> Currenex  35=4  連番リセットを送る

確認結果
 QuickFIX  --> Currenex  35=A  56:01.456 ログインすると
 QuickFIX <--  Currenex  35=A  56:02.151 ログイン許可が来て
 QuickFIX <--  Currenex  35=2  56:02.165 ResendRequest も来て
 QuickFIX  --> Currenex  35=4  56:02.174 連番リセットを送って
 QuickFIX <--  Currenex  35=h  56:02.184 取引可能がくる

 QuickFIX <--  Currenex  35=0  56:32.481 あとはハートビート
 QuickFIX  --> Currenex  35=0  56:32.499 ハートビート
 QuickFIX <--  Currenex  35=0  57:02.482 ハートビート
 QuickFIX  --> Currenex  35=0  57:02.504 ハートビート

< 4 > と < h > の順番が入れ替わってるのは、単純にタイミングの問題だから
期待する結果通りとなりました♪



■準正常系の準備:DBの連番を変更(現在より小さく変更)
同じ流れでこっちも試験しときます。
現在、DBの連番がでかくなっているので、これを小さくすればよいだけだし

mysql> SELECT incoming_seqnum, outgoing_seqnum  FROM sessions  WHERE sendercompid = 'CAXDemo_Account_Trd';
        +-----------------+-----------------+
        | incoming_seqnum | outgoing_seqnum |
        +-----------------+-----------------+
        |              15 |            1003 |
        +-----------------+-----------------+
        1 row in set (0.00 sec)


現在値は 1003なので、適当に 444番くらいにしておく
mysql> UPDATE sessions  SET outgoing_seqnum = 444  WHERE sendercompid = 'CAXDemo_Account_Trd';
        Query OK, 1 row affected (0.01 sec)
        Rows matched: 1  Changed: 1  Warnings: 0

mysql> SELECT incoming_seqnum, outgoing_seqnum  FROM sessions  WHERE sendercompid = 'CAXDemo_Account_Trd';
        +-----------------+-----------------+
        | incoming_seqnum | outgoing_seqnum |
        +-----------------+-----------------+
        |              15 |             444 |
        +-----------------+-----------------+
        1 row in set (0.00 sec)



■準正常系の試験(6.通信連番不一致(連番が小さい場合))
試験準備はOK
実行です。
examples]# ./tradeclient/tradeclient tradeclient.cfg
        1) TestRequest Trade
        2) TestRequest Ratefeed
        q) Quit
        Action:
        Logout - FIX.4.4:CAXDemo_Account_Trd->CNX

        Logout - FIX.4.4:CAXDemo_Account_Trd->CNX
        q


あれ? Logout が2回??
しかも、自動でログアウトしてるし

DBを確認
−−−−−−−−−−−−
13:12:03.555 CAXDemo_Account_Trd  CNX  8=FIX.4.49=9535=A34=44449=CAXDemo_Account_Trd52=20160401-13:12:03.54956=CNX554=Pass123498=0108=3010=210
13:12:04.268 CNX  CAXDemo_Account_Trd  8=FIX.4.49=12335=549=CNX34=1552=20160401-13:12:04.17756=CAXDemo_Account_Trd58=MsgSeqNum too low, expecting 1003 but received 44410=234
13:12:04.287 CAXDemo_Account_Trd  CNX  8=FIX.4.49=7035=534=44549=CAXDemo_Account_Trd52=20160401-13:12:04.28056=CNX10=089


< A > ログイン要求を送ったら < 5 > ログアウトが返ってきた
理由は[ 58=MsgSeqNum too low, expecting 1003 but received 444 ]
1003 のはずが 444 が来たよってことね
< 5 >ログアウトが返ってきた後に自分からも < 5 > を送ってるから2回 Logout があるのかな


期待する結果は。。
[ 58=MsgSeqNum too low, ]でログアウトされるべし、ってことなので、試験結果はOKです



■準正常系の準備:設定ファイルの変更(パスワードを間違えとく)
今度はログイン失敗の試験だから、設定ファイルのパスワードを間違えておく
ついでに、連番の初期化を戻しておきましょう
examples]# vi tradeclient.cfg
−−−抜粋−−−−
        ResetOnLogout=Y
        ResetOnLogon=Y
        
        [SESSION]
        Password=Pass4321
ーーーーーーーーー


■準正常系の試験(5.ログイン失敗)
examples]# ./tradeclient/tradeclient tradeclient.cfg
        1) TestRequest Trade
        2) TestRequest Ratefeed
        q) Quit
        Action:
        Logout - FIX.4.4:CAXDemo_Account_Trd->CNX

        Logout - FIX.4.4:CAXDemo_Account_Trd->CNX
        q

今回もログアウトが2回か。。


DBを確認
−−−−−−−−−−−−
13:25:04.135 CAXDemo_Account_Trd  CNX  8=FIX.4.49=9935=A34=149=CAXDemo_Account_Trd52=20160401-13:25:04.12956=CNX554=Pass432198=0108=30141=Y10=151
13:25:04.844 CNX  CAXDemo_Account_Trd  8=FIX.4.49=9435=549=CNX34=152=20160401-13:25:04.74556=CAXDemo_Account_Trd58=Authentication Failure10=080
13:25:04.864 CAXDemo_Account_Trd  CNX  8=FIX.4.49=6835=534=249=CAXDemo_Account_Trd52=20160401-13:25:04.85756=CNX10=003


期待する結果は。。
[ 58=authentication failure ]でログアウトされるべし、ってことなので、試験結果はOKです






ーーーーーーーー
残る試験は。。

(準正常系)
    5.ログイン失敗
    6.通信連番不一致(連番が小さい場合)
    7.通信連番不一致(連番が大きい場合)
    8.通信量制限

(異常系)
    9.ネットワーク断



8.通信量制限。。これは注文系をつくってから考えよう
9.ネットワーク断。。これの内容をみると、Currenexから切断って試験なのかな?
まぁ問い合わせてからにしよう。。


ということで、通信系の試験はひとまず終了

 
まこ | FIX | 22:18 | comments(0) | trackbacks(0) |
スポンサーサイト
スポンサードリンク | - | 22:18 | - | - |
Comment









Trackback
URL: