-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathmain.go
More file actions
45 lines (38 loc) · 1.03 KB
/
main.go
File metadata and controls
45 lines (38 loc) · 1.03 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
package main
import (
"flag"
"log"
"net/http"
"os"
"strconv"
)
func main() {
var (
blockCount = flag.Int("blocks", 50, "number of blocks to prebuild per chain")
numChains = flag.Int("chains", 3, "number of chains to serve")
startPort = flag.Int("start-port", 60000, "starting port for first chain")
startChainID = flag.Uint64("start-chain-id", 5, "starting chain ID")
)
flag.Parse()
chains := make([]*mockChain, 0, *numChains)
for i := 0; i < *numChains; i++ {
chainID := *startChainID + uint64(i)
chain := newMockChain(*blockCount, chainID)
chains = append(chains, chain)
port := *startPort + i
addr := ":" + strconv.Itoa(port)
mux := http.NewServeMux()
registerRoutes(mux, chain)
log.Printf("mock RPC server ready on %s (chainID=%d)", addr, chainID)
go func(address string, mux *http.ServeMux) {
log.Fatal(http.ListenAndServe(address, mux))
}(addr, mux)
}
select {} // block forever
}
func env(key, fallback string) string {
if v := os.Getenv(key); v != "" {
return v
}
return fallback
}