It("returns an error", func(done Done) { defer close(done) mockServer.serverCh <- buildError(99, "some-error") go func() { defer GinkgoRecover() err := connection.FetchFile(9, "some-file") Expect(err).ToNot(BeNil()) Expect(err.Error()).To(Equal("some-error")) }() var clientMsg *messages.Client Eventually(mockServer.clientCh).Should(Receive(&clientMsg)) Expect(clientMsg.GetMessageType()).To(Equal(messages.Client_FetchFile)) Expect(clientMsg.FetchFile.GetName()).To(Equal("some-file")) Expect(clientMsg.FetchFile.GetFileId()).To(BeEquivalentTo(9)) }) It("returns the file ID", func(done Done) { defer close(done) mockServer.serverCh <- buildFileLocation(99) go func() { defer GinkgoRecover() err := connection.FetchFile(9, "some-file") Expect(err).To(BeNil()) }()
var wg sync.WaitGroup defer wg.Wait() wg.Add(len(mockServers)) for i := range mockServers { go func(iter int) { defer GinkgoRecover() defer wg.Done() _, err := client.FetchFile(fmt.Sprintf("some-file-%d", iter)) Expect(err).ToNot(HaveOccurred()) }(i) } for i, server := range mockServers { var msg *messages.Client Eventually(server.clientCh).Should(Receive(&msg)) Expect(msg.GetMessageType()).To(Equal(messages.Client_FetchFile)) Expect(msg.GetFetchFile().GetName()).To(Equal(fmt.Sprintf("some-file-%d", i))) } }, 5) It("re-fetches a file if it is redirected", func(done Done) { defer close(done) mockServers[0].serverCh <- buildRemoteFileLocation(1, servers[1].URL) mockServers[1].serverCh <- buildFileLocation(1) _, err := client.FetchFile("some-file-1") Expect(err).ToNot(HaveOccurred()) var msg *messages.Client Eventually(mockServers[1].clientCh).Should(Receive(&msg)) Expect(msg.GetMessageType()).To(Equal(messages.Client_FetchFile))