github.com/onsi/ginkgo@v1.16.6-0.20211118180735-4e1925ba4c95/internal/test_helpers/set_up_server.go (about)

     1  package test_helpers
     2  
     3  import (
     4  	. "github.com/onsi/ginkgo"
     5  	"github.com/onsi/ginkgo/internal/parallel_support"
     6  	"github.com/onsi/ginkgo/reporters"
     7  	. "github.com/onsi/gomega"
     8  )
     9  
    10  func SetUpServerAndClient(numNodes int) (parallel_support.Server, parallel_support.Client, map[int]chan interface{}) {
    11  	server, err := parallel_support.NewServer(numNodes, reporters.NoopReporter{})
    12  	Ω(err).ShouldNot(HaveOccurred())
    13  	server.Start()
    14  	client := parallel_support.NewClient(server.Address())
    15  	Eventually(client.Connect).Should(BeTrue())
    16  
    17  	exitChannels := map[int]chan interface{}{}
    18  	for node := 1; node <= numNodes; node++ {
    19  		c := make(chan interface{})
    20  		exitChannels[node] = c
    21  		server.RegisterAlive(node, func() bool {
    22  			select {
    23  			case <-c:
    24  				return false
    25  			default:
    26  				return true
    27  			}
    28  		})
    29  	}
    30  
    31  	DeferCleanup(server.Close)
    32  	DeferCleanup(client.Close)
    33  
    34  	return server, client, exitChannels
    35  }