arnaucube
arnaucube/hermez-nodePublic Self-hosted repository
hermez-node/test/proofserver/cli/main.go
test/proofserver/cli/main.goRaw
 1package main
 2
 3import (
 4	"context"
 5	"flag"
 6	"log"
 7	"os"
 8	"os/signal"
 9	"sync"
10	"time"
11
12	"github.com/hermeznetwork/hermez-node/test/proofserver"
13)
14
15func main() {
16	var addr string
17	flag.StringVar(&addr, "a", "localhost:3000", "listen address")
18	var provingDuration time.Duration
19	flag.DurationVar(&provingDuration, "d", 2*time.Second, "proving time duration") //nolint:gomnd
20	flag.Parse()
21
22	mock := proofserver.NewMock(addr, provingDuration)
23	ctx, cancel := context.WithCancel(context.Background())
24	var wg sync.WaitGroup
25	wg.Add(1)
26	go func() {
27		if err := mock.Run(ctx); err != nil {
28			log.Fatal(err)
29		}
30		wg.Done()
31	}()
32
33	stopCh := make(chan interface{})
34	// catch ^C to send the stop signal
35	ossig := make(chan os.Signal, 1)
36	signal.Notify(ossig, os.Interrupt)
37	go func() {
38		for sig := range ossig {
39			if sig == os.Interrupt {
40				stopCh <- nil
41			}
42		}
43	}()
44	<-stopCh
45	cancel()
46	wg.Wait()
47}