}) Describe("Execute", func() { It("it calls StartMonitor inside the HostNamespace", func() { hostNS.ExecuteStub = func(callback func(_ *os.File) error) error { Expect(fakeWatcher.StartMonitorCallCount()).To(Equal(0)) callback(nil) Expect(fakeWatcher.StartMonitorCallCount()).To(Equal(1)) return nil } err := startMonitor.Execute(context) Expect(err).NotTo(HaveOccurred()) Expect(sandboxRepository.GetCallCount()).To(Equal(1)) Expect(sandboxRepository.GetArgsForCall(0)).To(Equal("some-sandbox")) Expect(hostNS.ExecuteCallCount()).To(Equal(1)) ns, linkName := fakeWatcher.StartMonitorArgsForCall(0) Expect(ns).To(Equal(sandboxNS)) Expect(linkName).To(Equal("some-vxlan-name")) }) Context("when getting the sandbox namespace fails", func() { BeforeEach(func() { sandboxRepository.GetReturns(nil, errors.New("potato")) }) It("wraps and propogates the error", func() {
sboxFile, err = ioutil.TempFile(sboxNamespaceDir, "test") sboxFileName = path.Base(sboxFile.Name()) Expect(err).NotTo(HaveOccurred()) namespaceRepo.GetReturns(sboxNamespace, nil) }) It("reads in files from the sanboxNamespaceDir into memory", func() { sbox, err := sandboxRepo.Get(sboxFileName) Expect(err).To(Equal(sandbox.NotFoundError)) Expect(sbox).To(BeNil()) err = sandboxRepo.Load(sboxNamespaceDir) Expect(err).NotTo(HaveOccurred()) Expect(namespaceRepo.GetCallCount()).To(Equal(1)) Expect(namespaceRepo.GetArgsForCall(0)).To(Equal(sboxFileName)) sbox, err = sandboxRepo.Get(sboxFileName) Expect(err).NotTo(HaveOccurred()) Expect(sbox).NotTo(BeNil()) }) It("locks and unlocks", func() { err := sandboxRepo.Load(sboxNamespaceDir) Expect(err).NotTo(HaveOccurred()) Expect(locker.LockCallCount()).To(Equal(1)) Expect(locker.UnlockCallCount()).To(Equal(1)) })