[pgpool-hackers: 2007] Pgproto: new tool to test Pgpool-II

Tatsuo Ishii ishii at sraoss.co.jp
Wed Jan 25 17:24:20 JST 2017


Hi Pgpool-II users/developers,

I have just released a open source test tool called "Pgproto".

https://github.com/tatsuo-ishii/pgproto

By using Pgproto, you can test Pgpool-II (or any other programs
including PostgreSQL, that understand frontend/backend protocol) by
providing arbitrary message data.

Basic idea is, preparin a text file which describes data to be sent to
Pgpool-II and feed it to pgproto.

#
# Test data example
#
'Q' "SELECT * FROM aaa"
'Y'
'P' "S1"    "BEGIN" 0
'B' ""  "S1"    0   0   0
'E' ""  0
'C' 'S' "S1"
'P' "foo"   "SELECT 1"  0
'B' "myportal"  "foo"   0   0   0
'E' "myportal"  0
'P' "S2"    "COMMIT"    0
'B' ""  "S2"    0   0   0
'E' ""  0
'C' 'S' "S2"
'S'
'Y'
'X'

Pgproto reads the file and send them to Pgpool-II.

Here is an example trace data:

FE=> Query(query="SELECT * FROM aaa")
<= BE ErrorResponse(S ERROR V ERROR C 42P01 M relation "aaa" does not exist P 15 F parse_relation.c L 1159 R parserOpenTable )
<= BE ReadyForQuery(I)
FE=> Parse(stmt="S1", query="BEGIN")
FE=> Bind(stmt="S1", portal="")
FE=> Execute(portal="")
FE=> Close(stmt="S1")
FE=> Parse(stmt="foo", query="SELECT 1")
FE=> Bind(stmt="foo", portal="myportal")
FE=> Execute(portal="myportal")
FE=> Parse(stmt="S2", query="COMMIT")
FE=> Bind(stmt="S2", portal="")
FE=> Execute(portal="")
FE=> Close(stmt="S2")
FE=> Sync
<= BE ParseComplete
<= BE BindComplete
<= BE CommandComplete(BEGIN)
<= BE CloseComplete
<= BE ParseComplete
<= BE BindComplete
<= BE DataRow
<= BE CommandComplete(SELECT 1)
<= BE ParseComplete
<= BE BindComplete
<= BE CommandComplete(COMMIT)
<= BE CloseComplete
<= BE ReadyForQuery(I)
FE=> Terminate

Pgproto is still being under development. Patches are welcome!
--
Tatsuo Ishii
SRA OSS, Inc. Japan
English: http://www.sraoss.co.jp/index_en.php
Japanese:http://www.sraoss.co.jp


More information about the pgpool-hackers mailing list