@@ -17,6 +17,7 @@ import (
1717 "github.com/ava-labs/libevm/core/types"
1818 "github.com/ava-labs/libevm/crypto"
1919 "github.com/ava-labs/libevm/ethclient"
20+ "github.com/google/uuid"
2021 "github.com/prometheus/client_golang/prometheus"
2122 "github.com/stretchr/testify/require"
2223 "golang.org/x/exp/maps"
@@ -97,19 +98,36 @@ func main() {
9798 require .NoError (metricsServer .Stop ())
9899 })
99100
100- var workers []load.Worker
101+ var (
102+ workers []load.Worker
103+ labels map [string ]string
104+ )
105+
101106 if devnetConfigPath != "" {
102107 b , err := os .ReadFile (devnetConfigPath )
103108 require .NoError (err )
104109
105110 var devnetConfig load.DevnetConfig
106111 require .NoError (json .Unmarshal (b , & devnetConfig ))
107112
108- workers = load .ConnectNetwork (tc , metricsServer , devnetConfig )
113+ workers = load .ConnectNetwork (tc , devnetConfig )
114+
115+ networkUUID := uuid .New ()
116+ labels = map [string ]string {
117+ "job" : "load-test" ,
118+ "is_ephemeral_node" : "false" ,
119+ "chain" : "C" ,
120+ "networkUUID" : networkUUID .String (),
121+ }
109122 } else {
110- workers = startNetwork (tc , metricsServer )
123+ network , wkrs := startNetwork (tc )
124+
125+ workers = wkrs
126+ labels = network .GetMonitoringLabels ()
111127 }
112128
129+ startPrometheusMonitoring (tc , labels , metricsServer .Address ())
130+
113131 chainID , err := workers [0 ].Client .ChainID (ctx )
114132 require .NoError (err )
115133
@@ -143,7 +161,7 @@ func main() {
143161// interact with the network.
144162//
145163// Customization of the network and the number of workers can be set via flags.
146- func startNetwork (tc tests.TestContext , metricsServer * tests. PrometheusServer ) []load.Worker {
164+ func startNetwork (tc tests.TestContext ) ( * tmpnet. Network , []load.Worker ) {
147165 require := require .New (tc )
148166
149167 numNodes , err := flagVars .NodeCount ()
@@ -169,19 +187,6 @@ func startNetwork(tc tests.TestContext, metricsServer *tests.PrometheusServer) [
169187 wsURIs , err := tmpnet .GetNodeWebsocketURIs (network .Nodes , blockchainID )
170188 require .NoError (err )
171189
172- monitoringConfigFilePath , err := tmpnet .WritePrometheusSDConfig ("load-test" , tmpnet.SDConfig {
173- Targets : []string {metricsServer .Address ()},
174- Labels : network .GetMonitoringLabels (),
175- }, false )
176- require .NoError (err , "failed to generate monitoring config file" )
177-
178- tc .DeferCleanup (func () {
179- require .NoError (
180- os .Remove (monitoringConfigFilePath ),
181- "failed †o remove monitoring config file" ,
182- )
183- })
184-
185190 workers := make ([]load.Worker , len (keys ))
186191 for i := range len (keys ) {
187192 wsURI := wsURIs [i % len (wsURIs )]
@@ -194,7 +199,27 @@ func startNetwork(tc tests.TestContext, metricsServer *tests.PrometheusServer) [
194199 }
195200 }
196201
197- return workers
202+ return network , workers
203+ }
204+
205+ // startPrometheusMonitoring enables Prometheus monitoring for any client-side
206+ // metrics and registers a cleanup function to remove the monitoring
207+ // configuration file when the test completes.
208+ func startPrometheusMonitoring (tc tests.TestContext , labels map [string ]string , serverAddress string ) {
209+ require := require .New (tc )
210+
211+ monitoringConfigFilePath , err := tmpnet .WritePrometheusSDConfig ("load-test" , tmpnet.SDConfig {
212+ Targets : []string {serverAddress },
213+ Labels : labels ,
214+ }, false )
215+ require .NoError (err , "failed to generate monitoring config file" )
216+
217+ tc .DeferCleanup (func () {
218+ require .NoError (
219+ os .Remove (monitoringConfigFilePath ),
220+ "failed †o remove monitoring config file" ,
221+ )
222+ })
198223}
199224
200225// newTokenContract deploys an instance of an ERC20 token and distributes the
0 commit comments