func (aa AddAddress) Execute(context executor.Context) error { err := context.AddressManager().AddAddress(aa.InterfaceName, &aa.Address) if err != nil { return fmt.Errorf("add address: %s", err) } return nil }
func (sd StartDNSServer) Execute(context executor.Context) error { listenerFactory := context.ListenerFactory() listenAddress, err := net.ResolveUDPAddr("udp", sd.ListenAddress) if err != nil { return fmt.Errorf("resolve udp address: %s", err) } sbox, err := context.SandboxRepository().Get(sd.SandboxName) if err != nil { return fmt.Errorf("get sandbox: %s", err) } sbox.Lock() defer sbox.Unlock() namespace := sbox.Namespace() var conn *net.UDPConn err = namespace.Execute(func(*os.File) error { linkFactory := context.LinkFactory() err := linkFactory.CreateDummy(DNS_INTERFACE_NAME) if err != nil { return fmt.Errorf("create dummy: %s", err) } dnsAddress := &net.IPNet{ IP: listenAddress.IP, Mask: net.CIDRMask(32, 32), } err = context.AddressManager().AddAddress(DNS_INTERFACE_NAME, dnsAddress) if err != nil { return fmt.Errorf("add address: %s", err) } err = linkFactory.SetUp(DNS_INTERFACE_NAME) if err != nil { return fmt.Errorf("set up: %s", err) } conn, err = listenerFactory.ListenUDP("udp", listenAddress) if err != nil { return fmt.Errorf("listen udp: %s", err) } return nil }) if err != nil { return fmt.Errorf("namespace execute: %s", err) } dnsServerRunner := context.DNSServerFactory().New(conn, namespace) err = sbox.LaunchDNS(dnsServerRunner) if err != nil { return fmt.Errorf("sandbox launch dns: %s", err) } return nil }
Expect(command.ExecuteCallCount()).To(Equal(1)) }) Describe("Context", func() { var context executor.Context BeforeEach(func() { ex.Execute(command) Expect(command.ExecuteCallCount()).To(Equal(1)) context = command.ExecuteArgsForCall(0) }) Describe("AddressManager", func() { It("returns the address manager", func() { Expect(context.AddressManager()).To(Equal(addressManager)) }) }) Describe("LinkFactory", func() { It("returns the link factory", func() { Expect(context.LinkFactory()).To(Equal(linkFactory)) }) }) Describe("RouteManager", func() { It("returns the route manager", func() { Expect(context.RouteManager()).To(Equal(routeManager)) }) })