github.com/pivotal-cf/go-pivnet/v6@v6.0.2/download/progress_test.go (about) 1 package download_test 2 3 import ( 4 "io/ioutil" 5 "time" 6 7 "golang.org/x/sync/errgroup" 8 9 "github.com/pivotal-cf/go-pivnet/v6/download" 10 11 . "github.com/onsi/ginkgo" 12 . "github.com/onsi/gomega" 13 ) 14 15 var _ = Describe("Progress", func() { 16 var ( 17 b download.Bar 18 ) 19 20 BeforeEach(func() { 21 b = download.NewBar() 22 b.SetOutput(GinkgoWriter) 23 }) 24 25 It("handles concurrent writes without racing", func() { 26 total := 10 27 28 b.SetTotal(int64(total)) 29 b.Output = ioutil.Discard 30 b.Kickoff() 31 32 var g errgroup.Group 33 for i := 0; i < total; i++ { 34 g.Go(func() error { 35 time.Sleep(10 * time.Millisecond) 36 37 _, err := b.Write([]byte("a")) 38 return err 39 }) 40 } 41 42 err := g.Wait() 43 Expect(err).NotTo(HaveOccurred()) 44 }) 45 })