@@ -33,8 +33,6 @@ import (
3333const (
3434 // We expect at least 3 blocks for a valid test run.
3535 defaultExpectedTXs = defaultBlockSize * 3
36- // Each server's SAN is localhost.
37- defaultServerSAN = "localhost"
3836)
3937
4038// We can enforce exact limits only for the sidecar and the coordinator.
@@ -49,7 +47,7 @@ func TestLoadGenForLoadGen(t *testing.T) {
4947 for _ , mode := range test .ServerModes {
5048 t .Run (fmt .Sprintf ("tls-mode:%s" , mode ), func (t * testing.T ) {
5149 t .Parallel ()
52- serverTLSConfig , clientTLSConfig := createServerAndClientTLSConfig (t , mode )
50+ serverTLSConfig , clientTLSConfig := test . CreateServerAndClientTLSConfig (t , mode )
5351 for _ , limit := range defaultLimits {
5452 t .Run (limitToString (limit ), func (t * testing.T ) {
5553 t .Parallel ()
@@ -84,7 +82,7 @@ func TestLoadGenForVCService(t *testing.T) {
8482 for _ , mode := range test .ServerModes {
8583 t .Run (fmt .Sprintf ("tls-mode:%s" , mode ), func (t * testing.T ) {
8684 t .Parallel ()
87- serverTLSConfig , clientTLSConfig := createServerAndClientTLSConfig (t , mode )
85+ serverTLSConfig , clientTLSConfig := test . CreateServerAndClientTLSConfig (t , mode )
8886 for _ , limit := range defaultLimits {
8987 t .Run (limitToString (limit ), func (t * testing.T ) {
9088 t .Parallel ()
@@ -104,7 +102,7 @@ func TestLoadGenForSigVerifier(t *testing.T) {
104102 for _ , mode := range test .ServerModes {
105103 t .Run (fmt .Sprintf ("tls-mode:%s" , mode ), func (t * testing.T ) {
106104 t .Parallel ()
107- serverTLSConfig , clientTLSConfig := createServerAndClientTLSConfig (t , mode )
105+ serverTLSConfig , clientTLSConfig := test . CreateServerAndClientTLSConfig (t , mode )
108106 for _ , limit := range defaultLimits {
109107 t .Run (limitToString (limit ), func (t * testing.T ) {
110108 t .Parallel ()
@@ -145,7 +143,7 @@ func TestLoadGenForCoordinator(t *testing.T) {
145143 for _ , mode := range test .ServerModes {
146144 t .Run (fmt .Sprintf ("tls-mode:%s" , mode ), func (t * testing.T ) {
147145 t .Parallel ()
148- serverTLSConfig , clientTLSConfig := createServerAndClientTLSConfig (t , mode )
146+ serverTLSConfig , clientTLSConfig := test . CreateServerAndClientTLSConfig (t , mode )
149147 for _ , limit := range append (
150148 defaultLimits ,
151149 & adapters.GenerateLimit {Blocks : 5 },
@@ -191,7 +189,7 @@ func TestLoadGenForSidecar(t *testing.T) {
191189 for _ , mode := range test .ServerModes {
192190 t .Run (fmt .Sprintf ("tls-mode:%s" , mode ), func (t * testing.T ) {
193191 t .Parallel ()
194- serverTLSConfig , clientTLSConfig := createServerAndClientTLSConfig (t , mode )
192+ serverTLSConfig , clientTLSConfig := test . CreateServerAndClientTLSConfig (t , mode )
195193 for _ , limit := range append (
196194 defaultLimits ,
197195 & adapters.GenerateLimit {Blocks : 5 },
@@ -208,18 +206,18 @@ func TestLoadGenForSidecar(t *testing.T) {
208206 // To avoid manually pre-choosing ports that might conflict with other tests,
209207 // we pre allocate them by starting a listener that picks a port automatically and bind to it.
210208 // In real evaluation scenario, the ports will be selected by the deployment infrastructure.
211- sidecarServerConf := preAllocatePorts (t )
209+ sidecarServerConf := preAllocatePorts (t , serverTLSConfig )
212210 ordererServers := make ([]* connection.ServerConfig , 3 )
213211 for i := range ordererServers {
214- ordererServers [i ] = preAllocatePorts (t )
212+ ordererServers [i ] = preAllocatePorts (t , serverTLSConfig )
215213 }
216- sidecarServerConf .TLS = serverTLSConfig
217214 // Start server under test
218215 sidecarConf := & sidecar.Config {
219216 Server : sidecarServerConf ,
220217 Orderer : ordererconn.Config {
221218 Connection : ordererconn.ConnectionConfig {
222219 Endpoints : ordererconn .NewEndpoints (0 , "org" , ordererServers ... ),
220+ TLS : clientTLSConfig ,
223221 },
224222 ChannelID : clientConf .LoadProfile .Transaction .Policy .ChannelID ,
225223 Identity : clientConf .LoadProfile .Transaction .Policy .Identity ,
@@ -253,109 +251,136 @@ func TestLoadGenForSidecar(t *testing.T) {
253251
254252func TestLoadGenForOrderer (t * testing.T ) {
255253 t .Parallel ()
256- for _ , limit := range defaultLimits {
257- t .Run (limitToString ( limit ), func (t * testing.T ) {
254+ for _ , mode := range test . ServerModes {
255+ t .Run (fmt . Sprintf ( "tls-mode:%s" , mode ), func (t * testing.T ) {
258256 t .Parallel ()
259- clientConf := DefaultClientConf ()
260- clientConf .Limit = limit
261- // Start dependencies
262- orderer , ordererServer := mock .StartMockOrderingServices (
263- t , & mock.OrdererConfig {NumService : 3 , BlockSize : 100 },
264- )
265- _ , coordinatorServer := mock .StartMockCoordinatorService (t )
266-
267- endpoints := ordererconn .NewEndpoints (0 , "msp" , ordererServer .Configs ... )
268- sidecarConf := & sidecar.Config {
269- Server : connection .NewLocalHostServerWithTLS (test .InsecureTLSConfig ),
270- Orderer : ordererconn.Config {
271- Connection : ordererconn.ConnectionConfig {
272- Endpoints : endpoints ,
273- },
274- ChannelID : clientConf .LoadProfile .Transaction .Policy .ChannelID ,
275- Identity : clientConf .LoadProfile .Transaction .Policy .Identity ,
276- ConsensusType : ordererconn .Bft ,
277- },
278- LastCommittedBlockSetInterval : 100 * time .Millisecond ,
279- WaitingTxsLimit : 5000 ,
280- Committer : test .NewInsecureClientConfig (& coordinatorServer .Configs [0 ].Endpoint ),
281- Monitoring : defaultMonitoring (),
282- Ledger : sidecar.LedgerConfig {
283- Path : t .TempDir (),
284- },
285- }
257+ serverTLSConfig , clientTLSConfig := test .CreateServerAndClientTLSConfig (t , mode )
258+ for _ , limit := range defaultLimits {
259+ t .Run (limitToString (limit ), func (t * testing.T ) {
260+ t .Parallel ()
261+ clientConf := DefaultClientConf ()
262+ clientConf .Limit = limit
263+ numService := 3
264+ sc := make ([]* connection.ServerConfig , numService )
265+ for i := range sc {
266+ sc [i ] = connection .NewLocalHostServerWithTLS (serverTLSConfig )
267+ }
268+ // Start dependencies
269+ orderer , ordererServer := mock .StartMockOrderingServices (
270+ t , & mock.OrdererConfig {ServerConfigs : sc , NumService : numService , BlockSize : 100 },
271+ )
272+ _ , coordinatorServer := mock .StartMockCoordinatorService (t )
273+
274+ endpoints := ordererconn .NewEndpoints (0 , "msp" , ordererServer .Configs ... )
275+ sidecarConf := & sidecar.Config {
276+ Server : connection .NewLocalHostServerWithTLS (serverTLSConfig ),
277+ Orderer : ordererconn.Config {
278+ Connection : ordererconn.ConnectionConfig {
279+ Endpoints : endpoints ,
280+ TLS : clientTLSConfig ,
281+ },
282+ ChannelID : clientConf .LoadProfile .Transaction .Policy .ChannelID ,
283+ Identity : clientConf .LoadProfile .Transaction .Policy .Identity ,
284+ ConsensusType : ordererconn .Bft ,
285+ },
286+ LastCommittedBlockSetInterval : 100 * time .Millisecond ,
287+ WaitingTxsLimit : 5000 ,
288+ Committer : test .NewInsecureClientConfig (
289+ & coordinatorServer .Configs [0 ].Endpoint ,
290+ ),
291+ Monitoring : defaultMonitoring (),
292+ Ledger : sidecar.LedgerConfig {
293+ Path : t .TempDir (),
294+ },
295+ }
296+
297+ // Start sidecar.
298+ service , err := sidecar .New (sidecarConf )
299+ require .NoError (t , err )
300+ t .Cleanup (service .Close )
301+ test .RunServiceAndGrpcForTest (t .Context (), t , service , sidecarConf .Server )
286302
287- // Start sidecar.
288- service , err := sidecar .New (sidecarConf )
289- require .NoError (t , err )
290- t .Cleanup (service .Close )
291- test .RunServiceAndGrpcForTest (t .Context (), t , service , sidecarConf .Server )
292-
293- // Submit default config block.
294- require .NotNil (t , clientConf .LoadProfile )
295- clientConf .LoadProfile .Transaction .Policy .OrdererEndpoints = endpoints
296- configBlock , err := workload .CreateConfigBlock (clientConf .LoadProfile .Transaction .Policy )
297- require .NoError (t , err )
298- err = orderer .SubmitBlock (t .Context (), configBlock )
299- require .NoError (t , err )
300-
301- // Start client
302- clientConf .Adapter .OrdererClient = & adapters.OrdererClientConfig {
303- SidecarClient : test .NewInsecureClientConfig (& sidecarConf .Server .Endpoint ),
304- Orderer : sidecarConf .Orderer ,
305- BroadcastParallelism : 5 ,
303+ // Submit default config block.
304+ require .NotNil (t , clientConf .LoadProfile )
305+ clientConf .LoadProfile .Transaction .Policy .OrdererEndpoints = endpoints
306+ configBlock , err := workload .CreateConfigBlock (clientConf .LoadProfile .Transaction .Policy )
307+ require .NoError (t , err )
308+ err = orderer .SubmitBlock (t .Context (), configBlock )
309+ require .NoError (t , err )
310+
311+ // Start client
312+ clientConf .Adapter .OrdererClient = & adapters.OrdererClientConfig {
313+ SidecarClient : test .NewTLSClientConfig (clientTLSConfig , & sidecarConf .Server .Endpoint ),
314+ Orderer : sidecarConf .Orderer ,
315+ BroadcastParallelism : 5 ,
316+ }
317+ testLoadGenerator (t , clientConf )
318+ })
306319 }
307- testLoadGenerator (t , clientConf )
308320 })
309321 }
310322}
311323
312324func TestLoadGenForOnlyOrderer (t * testing.T ) {
313325 t .Parallel ()
314- for _ , limit := range defaultLimits {
315- clientConf := DefaultClientConf ()
316- clientConf .Limit = limit
317- t .Run (limitToString (limit ), func (t * testing.T ) {
326+ for _ , mode := range test .ServerModes {
327+ t .Run (fmt .Sprintf ("tls-mode:%s" , mode ), func (t * testing.T ) {
318328 t .Parallel ()
319- // Start dependencies
320- orderer , ordererServer := mock .StartMockOrderingServices (
321- t , & mock.OrdererConfig {
322- NumService : 3 ,
323- BlockSize : int (clientConf .LoadProfile .Block .Size ), //nolint:gosec // uint64 -> int.
324- },
325- )
326-
327- endpoints := ordererconn .NewEndpoints (0 , "msp" , ordererServer .Configs ... )
328-
329- // Submit default config block.
330- // This is ignored when sidecar isn't used.
331- // We validate the test doesn't break when config block is delivered.
332- require .NotNil (t , clientConf .LoadProfile )
333- clientConf .LoadProfile .Transaction .Policy .OrdererEndpoints = endpoints
334- configBlock , err := workload .CreateConfigBlock (clientConf .LoadProfile .Transaction .Policy )
335- require .NoError (t , err )
336- err = orderer .SubmitBlock (t .Context (), configBlock )
337- require .NoError (t , err )
338-
339- // Start client
340- clientConf .Adapter .OrdererClient = & adapters.OrdererClientConfig {
341- Orderer : ordererconn.Config {
342- Connection : ordererconn.ConnectionConfig {
343- Endpoints : endpoints ,
344- },
345- ChannelID : clientConf .LoadProfile .Transaction .Policy .ChannelID ,
346- Identity : clientConf .LoadProfile .Transaction .Policy .Identity ,
347- ConsensusType : ordererconn .Bft ,
348- },
349- BroadcastParallelism : 5 ,
329+ serverTLSConfig , clientTLSConfig := test .CreateServerAndClientTLSConfig (t , mode )
330+ for _ , limit := range defaultLimits {
331+ clientConf := DefaultClientConf ()
332+ clientConf .Limit = limit
333+ t .Run (limitToString (limit ), func (t * testing.T ) {
334+ t .Parallel ()
335+ numService := 3
336+ sc := make ([]* connection.ServerConfig , numService )
337+ for i := range sc {
338+ sc [i ] = connection .NewLocalHostServerWithTLS (serverTLSConfig )
339+ }
340+ // Start dependencies
341+ orderer , ordererServer := mock .StartMockOrderingServices (
342+ t , & mock.OrdererConfig {
343+ ServerConfigs : sc ,
344+ NumService : numService ,
345+ BlockSize : int (clientConf .LoadProfile .Block .Size ), //nolint:gosec // uint64 -> int.
346+ },
347+ )
348+
349+ endpoints := ordererconn .NewEndpoints (0 , "msp" , ordererServer .Configs ... )
350+
351+ // Submit default config block.
352+ // This is ignored when sidecar isn't used.
353+ // We validate the test doesn't break when config block is delivered.
354+ require .NotNil (t , clientConf .LoadProfile )
355+ clientConf .LoadProfile .Transaction .Policy .OrdererEndpoints = endpoints
356+ configBlock , err := workload .CreateConfigBlock (clientConf .LoadProfile .Transaction .Policy )
357+ require .NoError (t , err )
358+ err = orderer .SubmitBlock (t .Context (), configBlock )
359+ require .NoError (t , err )
360+
361+ // Start client
362+ clientConf .Adapter .OrdererClient = & adapters.OrdererClientConfig {
363+ Orderer : ordererconn.Config {
364+ Connection : ordererconn.ConnectionConfig {
365+ Endpoints : endpoints ,
366+ TLS : clientTLSConfig ,
367+ },
368+ ChannelID : clientConf .LoadProfile .Transaction .Policy .ChannelID ,
369+ Identity : clientConf .LoadProfile .Transaction .Policy .Identity ,
370+ ConsensusType : ordererconn .Bft ,
371+ },
372+ BroadcastParallelism : 5 ,
373+ }
374+ testLoadGenerator (t , clientConf )
375+ })
350376 }
351- testLoadGenerator (t , clientConf )
352377 })
353378 }
354379}
355380
356- func preAllocatePorts (t * testing.T ) * connection.ServerConfig {
381+ func preAllocatePorts (t * testing.T , tlsConfig connection. TLSConfig ) * connection.ServerConfig {
357382 t .Helper ()
358- server := connection .NewLocalHostServerWithTLS (test . InsecureTLSConfig )
383+ server := connection .NewLocalHostServerWithTLS (tlsConfig )
359384 listener , err := server .PreAllocateListener ()
360385 require .NoError (t , err )
361386 t .Cleanup (func () {
@@ -445,15 +470,3 @@ func limitToString(m *adapters.GenerateLimit) string {
445470 }
446471 return strings .Join (out , "," )
447472}
448-
449- // createServerAndClientTLSConfig creates tls configurations for
450- // both the server and client.
451- func createServerAndClientTLSConfig (t * testing.T , tlsMode string ) (
452- serverTLSConfig , clientTLSConfig connection.TLSConfig ,
453- ) {
454- t .Helper ()
455- credsFactory := test .NewCredentialsFactory (t )
456- clientTLSConfig , _ = credsFactory .CreateServerCredentials (t , tlsMode , defaultServerSAN )
457- serverTLSConfig , _ = credsFactory .CreateClientCredentials (t , tlsMode )
458- return clientTLSConfig , serverTLSConfig
459- }
0 commit comments