@@ -45,11 +45,10 @@ use crate::{
4545 util:: ChildExt ,
4646} ;
4747
48- /// Maximum number of shards allowed .
49- const MAX_NUMBER_SHARD : usize = 100 ;
48+ /// Maximum allowed number of shards over all validators .
49+ const MAX_NUMBER_SHARDS : usize = 1000 ;
5050
51- /// Maximum number of validators allowed.
52- const MAX_NUMBER_VALIDATOR : usize = 10 ;
51+ pub const FIRST_PUBLIC_PORT : usize = 13000 ;
5352
5453pub enum ProcessInbox {
5554 Skip ,
@@ -346,17 +345,12 @@ impl LineraNetConfig for LocalNetConfig {
346345 self . num_initial_validators > 0 ,
347346 "There should be at least one initial validator"
348347 ) ;
348+ let total_number_shards = self . num_initial_validators * self . num_shards ;
349349 ensure ! (
350- self . num_initial_validators <= MAX_NUMBER_VALIDATOR ,
351- "Number of initial validators ({}) exceeds maximum allowed ({})" ,
352- self . num_initial_validators,
353- MAX_NUMBER_VALIDATOR
354- ) ;
355- ensure ! (
356- self . num_shards <= MAX_NUMBER_SHARD ,
357- "Number of shards ({}) exceeds maximum allowed ({})" ,
350+ total_number_shards <= MAX_NUMBER_SHARDS ,
351+ "Total number of shards ({}) exceeds maximum allowed ({})" ,
358352 self . num_shards,
359- MAX_NUMBER_SHARD
353+ MAX_NUMBER_SHARDS
360354 ) ;
361355 net. generate_initial_validator_config ( ) . await ?;
362356 client
@@ -449,32 +443,36 @@ impl LocalNet {
449443 crate :: util:: read_json ( path. join ( "genesis.json" ) )
450444 }
451445
452- pub fn proxy_public_port ( validator : usize , proxy_id : usize ) -> usize {
453- 13000 + validator * MAX_NUMBER_SHARD + proxy_id + 1
446+ fn shard_port ( & self , validator : usize , shard : usize ) -> usize {
447+ 9000 + validator * self . num_shards + shard + 1
448+ }
449+
450+ fn proxy_internal_port ( & self , validator : usize , proxy_id : usize ) -> usize {
451+ 10000 + validator * self . num_shards + proxy_id + 1
454452 }
455453
456- fn proxy_internal_port ( validator : usize , proxy_id : usize ) -> usize {
457- 10000 + validator * MAX_NUMBER_SHARD + proxy_id + 1
454+ fn shard_metrics_port ( & self , validator : usize , shard : usize ) -> usize {
455+ 11000 + validator * self . num_shards + shard + 1
458456 }
459457
460- fn shard_port ( validator : usize , shard : usize ) -> usize {
461- 9000 + validator * MAX_NUMBER_SHARD + shard + 1
458+ fn proxy_metrics_port ( & self , validator : usize , proxy_id : usize ) -> usize {
459+ 12000 + validator * self . num_shards + proxy_id + 1
462460 }
463461
464- fn proxy_metrics_port ( validator : usize , proxy_id : usize ) -> usize {
465- 12000 + validator * MAX_NUMBER_SHARD + proxy_id + 1
462+ fn block_exporter_port ( & self , validator : usize , exporter_id : usize ) -> usize {
463+ 12000 + validator * self . num_shards + exporter_id + 1
466464 }
467465
468- fn shard_metrics_port ( validator : usize , shard : usize ) -> usize {
469- 11000 + validator * MAX_NUMBER_SHARD + shard + 1
466+ pub fn proxy_public_port ( & self , validator : usize , proxy_id : usize ) -> usize {
467+ FIRST_PUBLIC_PORT + validator * self . num_shards + proxy_id + 1
470468 }
471469
472- fn block_exporter_port ( validator : usize , exporter_id : usize ) -> usize {
473- 12000 + validator * MAX_NUMBER_SHARD + exporter_id + 1
470+ pub fn first_public_port ( ) -> usize {
471+ FIRST_PUBLIC_PORT + 1
474472 }
475473
476474 fn block_exporter_metrics_port ( exporter_id : usize ) -> usize {
477- 13000 + exporter_id + 1
475+ FIRST_PUBLIC_PORT + exporter_id + 1
478476 }
479477
480478 fn configuration_string ( & self , server_number : usize ) -> Result < String > {
@@ -483,7 +481,7 @@ impl LocalNet {
483481 . path_provider
484482 . path ( )
485483 . join ( format ! ( "validator_{n}.toml" ) ) ;
486- let port = Self :: proxy_public_port ( n, 0 ) ;
484+ let port = self . proxy_public_port ( n, 0 ) ;
487485 let external_protocol = self . network . external . toml ( ) ;
488486 let internal_protocol = self . network . internal . toml ( ) ;
489487 let external_host = self . network . external . localhost ( ) ;
@@ -499,8 +497,8 @@ impl LocalNet {
499497 ) ;
500498
501499 for k in 0 ..self . num_proxies {
502- let internal_port = Self :: proxy_internal_port ( n, k) ;
503- let metrics_port = Self :: proxy_metrics_port ( n, k) ;
500+ let internal_port = self . proxy_internal_port ( n, k) ;
501+ let metrics_port = self . proxy_metrics_port ( n, k) ;
504502 // In the local network, the validator ingress is
505503 // the proxy - so the `public_port` is the validator
506504 // port.
@@ -517,8 +515,8 @@ impl LocalNet {
517515 }
518516
519517 for k in 0 ..self . num_shards {
520- let shard_port = Self :: shard_port ( n, k) ;
521- let shard_metrics_port = Self :: shard_metrics_port ( n, k) ;
518+ let shard_port = self . shard_port ( n, k) ;
519+ let shard_metrics_port = self . shard_metrics_port ( n, k) ;
522520 content. push_str ( & format ! (
523521 r#"
524522
@@ -534,7 +532,7 @@ impl LocalNet {
534532 ExportersSetup :: Local ( ref exporters) => {
535533 for ( j, exporter) in exporters. iter ( ) . enumerate ( ) {
536534 let host = Network :: Grpc . localhost ( ) ;
537- let port = Self :: block_exporter_port ( n, j) ;
535+ let port = self . block_exporter_port ( n, j) ;
538536 let config_content = format ! (
539537 r#"
540538
@@ -593,7 +591,7 @@ impl LocalNet {
593591 ) -> String {
594592 let n = validator;
595593 let host = Network :: Grpc . localhost ( ) ;
596- let port = Self :: block_exporter_port ( n, exporter_id as usize ) ;
594+ let port = self . block_exporter_port ( n, exporter_id as usize ) ;
597595 let metrics_port = Self :: block_exporter_metrics_port ( exporter_id as usize ) ;
598596 let mut config = format ! (
599597 r#"
@@ -713,7 +711,7 @@ impl LocalNet {
713711 . args ( [ "--storage" , & storage. to_string ( ) ] )
714712 . spawn_into ( ) ?;
715713
716- let port = Self :: proxy_public_port ( validator, 0 ) ;
714+ let port = self . proxy_public_port ( validator, 0 ) ;
717715 let nickname = format ! ( "validator proxy {validator}" ) ;
718716 match self . network . external {
719717 Network :: Grpc => {
@@ -753,12 +751,12 @@ impl LocalNet {
753751
754752 match self . network . internal {
755753 Network :: Grpc => {
756- let port = Self :: block_exporter_port ( validator, exporter_id as usize ) ;
754+ let port = self . block_exporter_port ( validator, exporter_id as usize ) ;
757755 let nickname = format ! ( "block exporter {validator}:{exporter_id}" ) ;
758756 Self :: ensure_grpc_server_has_started ( & nickname, port, "http" ) . await ?;
759757 }
760758 Network :: Grpcs => {
761- let port = Self :: block_exporter_port ( validator, exporter_id as usize ) ;
759+ let port = self . block_exporter_port ( validator, exporter_id as usize ) ;
762760 let nickname = format ! ( "block exporter {validator}:{exporter_id}" ) ;
763761 Self :: ensure_grpc_server_has_started ( & nickname, port, "https" ) . await ?;
764762 }
@@ -884,7 +882,7 @@ impl LocalNet {
884882 . args ( self . cross_chain_config . to_args ( ) ) ;
885883 let child = command. spawn_into ( ) ?;
886884
887- let port = Self :: shard_port ( validator, shard) ;
885+ let port = self . shard_port ( validator, shard) ;
888886 let nickname = format ! ( "validator server {validator}:{shard}" ) ;
889887 match self . network . internal {
890888 Network :: Grpc => {
@@ -962,7 +960,7 @@ impl LocalNet {
962960 /// Returns the address to connect to a validator's proxy.
963961 /// In local networks, the zeroth proxy _is_ the validator ingress.
964962 pub fn validator_address ( & self , validator : usize ) -> String {
965- let port = Self :: proxy_public_port ( validator, 0 ) ;
963+ let port = self . proxy_public_port ( validator, 0 ) ;
966964 let schema = self . network . external . schema ( ) ;
967965
968966 format ! ( "{schema}:localhost:{port}" )
0 commit comments