public void TransferServiceInfo() { var publishInfo = new ServiceInfo(); publishInfo.Name = "Pubtest"; publishInfo.Port = 9999; publishInfo.Priority = 10; publishInfo.Weight = 10; publishInfo.Flags.Add("TestFlag"); publishInfo.Data["TestData"] = "TestValue"; ServiceInfo recvInfo = null; var service = new ConnectedServiceMock("10.99.99.99"); using (var publisher = new ServicePublisher(service)) { var watcher = new ServiceWatchManager(service); publisher.AddService("_pubtest._tcp.local", publishInfo); publisher.Start(); var watch = watcher.WatchService("_pubtest._tcp.local", (nic, x) => recvInfo = x); watch.Start(); Assert.AreEqual(publishInfo.Name, recvInfo.Name); Assert.AreEqual(publishInfo.Port, recvInfo.Port); Assert.AreEqual(publishInfo.Priority, recvInfo.Priority); Assert.AreEqual(publishInfo.Weight, recvInfo.Weight); Assert.AreEqual(publishInfo.Flags[0], recvInfo.Flags[0]); Assert.AreEqual(publishInfo.Data["TestData"], recvInfo.Data["TestData"]); Assert.AreEqual(IPAddress.Parse("10.99.99.99"), recvInfo.IP4Address); } Assert.IsFalse(service.Running); }
public void RespondWithServiceInfo() { var core = BuildService("10.99.99.99", "fe80::20c:29ff:fe0d:e789"); Packet received = null; core.Setup(x => x.SendPacket(It.IsAny <Packet>())).Callback <Packet>(x => received = x); using (var service = new ServicePublisher(core.Object)) { var publishInfo = new ServiceInfo(); publishInfo.Name = "Pubtest"; publishInfo.IP4Address = IPAddress.Parse("10.0.0.10"); publishInfo.IP6Address = IPAddress.Parse("fe80::20c:29ff:fe0d:e789"); publishInfo.Port = 9999; publishInfo.Priority = 10; publishInfo.Weight = 10; publishInfo.Flags.Add("TestFlag"); publishInfo.Data["TestData"] = "TestValue"; service.LocalName = "Scooby"; service.AddService("_pubtest._tcp.local", publishInfo); service.Start(); core.Raise(x => x.PacketReceived += null, BuildQueryPacket("_pubtest._tcp.local"), new IPEndPoint(IPAddress.Parse("10.0.0.10"), 5353)); Assert.IsTrue(received.Flags.IsResponse); Assert.IsTrue(received.Flags.IsAuthoritative); var ptrAnswer = received.Answers.Where(x => x.Record.RecordType == PTRAnswer.RecordType).First().Data as PTRAnswer; Assert.AreEqual("Pubtest._pubtest._tcp.local", ptrAnswer.DomainName); var srv = received.Answers.Where(x => x.Record.RecordType == SRVAnswer.RecordType).First(); var srvAnswer = srv.Data as SRVAnswer; Assert.AreEqual(SRVAnswer.GetService(srv.Record), "Pubtest"); Assert.AreEqual(SRVAnswer.GetProtocol(srv.Record), "_pubtest"); Assert.AreEqual(SRVAnswer.GetName(srv.Record), "_tcp.local"); //Assert.AreEqual("Pubtest._pubtest._tcp.local", srvAnswer.Name); Assert.AreEqual(9999, srvAnswer.Port); Assert.AreEqual(10, srvAnswer.Priority); Assert.AreEqual(10, srvAnswer.Weight); Assert.AreEqual("Scooby.local", srvAnswer.Target); var txtAnswer = received.Answers.Where(x => x.Record.RecordType == TXTAnswer.RecordType).First().Data as TXTAnswer; Assert.AreEqual("TestFlag", txtAnswer.Flags[0]); Assert.AreEqual("TestValue", txtAnswer.Data["TestData"]); var aAnswer = received.Answers.Where(x => x.Record.RecordType == AAnswer.RecordType).First().Data as AAnswer; Assert.AreEqual(IPAddress.Parse("10.99.99.99"), aAnswer.Address); var aaaaAnswer = received.Answers.Where(x => x.Record.RecordType == AAAAAnswer.RecordType).First().Data as AAAAAnswer; Assert.AreEqual(IPAddress.Parse("fe80::20c:29ff:fe0d:e789"), aaaaAnswer.Address); } }