func (b *Broker) fetchFile(controller Controller, message *messages.Client, conn *websocket.Conn) { fetchFile := message.GetFetchFile() err := controller.FetchFile(fetchFile.GetFileId(), fetchFile.GetName()) if err != nil && err.Uri == "" { b.writeError(err.Error(), message, conn) return } b.writeFileLocation(err, message, conn) }
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)) Expect(msg.GetFetchFile().GetName()).To(Equal("some-file-1"))