@@ -12,8 +12,10 @@ import (
1212 "encoding/json"
1313 "fmt"
1414 "path/filepath"
15+ "sync/atomic"
1516 "testing"
1617
18+ "github.com/hyperledger-labs/fabric-smart-client/integration/benchmark"
1719 "github.com/hyperledger-labs/fabric-token-sdk/token"
1820 "github.com/hyperledger-labs/fabric-token-sdk/token/core"
1921 fabtoken "github.com/hyperledger-labs/fabric-token-sdk/token/core/fabtoken/v1/driver"
@@ -64,6 +66,50 @@ func TestRegression(t *testing.T) {
6466 }
6567}
6668
69+ func BenchmarkTranferRegression2in2out (b * testing.B ) {
70+ rootDir := "testdata/32-BLS12_381_BBS_GURVY"
71+ subFolder := "transfers_i2_o2"
72+
73+ paramsData , err := testDataFS .ReadFile (filepath .Join (rootDir , "params.txt" ))
74+ require .NoError (b , err )
75+ ppRaw , err := base64 .StdEncoding .DecodeString (string (paramsData ))
76+ require .NoError (b , err )
77+ _ , tokenValidator , err := tokenServicesFactory (ppRaw )
78+ require .NoError (b , err )
79+
80+ type testVector struct {
81+ ReqRaw []byte `json:"req_raw"`
82+ TXID string `json:"txid"`
83+ }
84+ vectors := make ([]testVector , 64 )
85+ for i := range vectors {
86+ jsonData , err := testDataFS .ReadFile (
87+ filepath .Join (rootDir , subFolder , fmt .Sprintf ("output.%d.json" , i )),
88+ )
89+ require .NoError (b , err )
90+ err = json .Unmarshal (jsonData , & vectors [i ])
91+ require .NoError (b , err )
92+ }
93+
94+ var idx atomic.Int64
95+ b .Run ("2in2out" , func (b * testing.B ) {
96+ b .ResetTimer ()
97+ b .RunParallel (func (pb * testing.PB ) {
98+ for pb .Next () {
99+ v := vectors [idx .Add (1 )% int64 (len (vectors ))]
100+ _ , _ , err := tokenValidator .UnmarshallAndVerifyWithMetadata (
101+ b .Context (),
102+ & fakeLedger {},
103+ token .RequestAnchor (v .TXID ),
104+ v .ReqRaw ,
105+ )
106+ require .NoError (b , err )
107+ }
108+ })
109+ benchmark .ReportTPS (b )
110+ })
111+ }
112+
67113func testRegressionParallel (t * testing.T , rootDir , subFolder string ) {
68114 t .Helper ()
69115 t .Run (fmt .Sprintf ("%s-%s" , rootDir , subFolder ), func (t * testing.T ) {
@@ -72,7 +118,7 @@ func testRegressionParallel(t *testing.T, rootDir, subFolder string) {
72118 })
73119}
74120
75- func testRegression (t * testing.T , rootDir , subFolder string ) {
121+ func testRegression (t testing.TB , rootDir , subFolder string ) {
76122 t .Helper ()
77123 t .Logf ("regression test for [%s:%s]" , rootDir , subFolder )
78124 paramsData , err := testDataFS .ReadFile (filepath .Join (rootDir , "params.txt" ))
0 commit comments