//ネームサーバ一覧から、そのアドレスの一覧を作成する private List <Ip> GetNsIpList(IEnumerable <string> nsList, Ip remoteAddr) { var ipList = new List <Ip>(); foreach (var ns in nsList) { var rrList = _rootCache.GetList(ns, DnsType.A); //IP情報が無い場合、再帰検索 if (ipList.Count == 0 && rrList.Count == 0) { SearchLoop(ns, DnsType.A, remoteAddr); rrList = _rootCache.GetList(ns, DnsType.A); } rrList.AddRange(_rootCache.GetList(ns, DnsType.Aaaa)); foreach (var o in rrList) { Ip ip = null; if (o.DnsType == DnsType.A) { ip = ((RrA)o).Ip; } else if (o.DnsType == DnsType.Aaaa) { ip = ((RrAaaa)o).Ip; } //重複は追加しない if (ipList.IndexOf(ip) == -1) { ipList.Add(ip); } } } return(ipList); }
private List <OneRr> GetAllCname(RrDb rrDb, String name, List <OneRr> rrList) { var ar = rrDb.GetList(name, DnsType.Cname); if (ar.Count == 0) { return(rrList); } foreach (RrCname a in ar) { rrList.Add(a); rrList = GetAllCname(rrDb, a.CName, rrList); } return(rrList); }
public void GetListを使用すると期限の切れたリソースが削除される() { //setUp var ttl = 1u; //TTL=1秒 var sut = new RrDb(null, null, null, "example.com", true); sut.Add(new RrA("www.example.com.", ttl, new Ip("1.1.1.1"))); sut.Add(new RrA("www.example.com.", ttl, new Ip("2.2.2.2"))); var expected = 0; TestUtil.WaitDisp("RrDb.getList()で期限切れリソースの削除を確認するため、TTL指定時間が経過するまで待機"); Thread.Sleep(2000); //2秒経過 //exercise sut.GetList("www.example.com.", DnsType.A); var actual = RrDbTest.Size(sut); //DBのサイズは0になっている //verify Assert.That(actual, Is.EqualTo(expected)); //TearDown TestUtil.WaitDisp(null); }
public void GetListによる検索_名前が同じでタイプのデータが存在する場合() { //setUp var sut = new RrDb(null, null, null, "example.com", true); sut.Add(new RrAaaa("www.example.com.", 100, new Ip("::1"))); var expected = 0; //exercise var actual = sut.GetList("www.example.com.", DnsType.A).Count; //verify Assert.That(actual, Is.EqualTo(expected)); }
public void getListによる検索_ヒットするデータが存在する場合() { //setUp var sut = new RrDb(null, null, null, "example.com", true); sut.Add(new RrA("www.example.com.", 100, new Ip("192.168.0.1"))); var expected = 1; //exercise int actual = sut.GetList("www.example.com.", DnsType.A).Count; //verify Assert.That(actual, Is.EqualTo(expected)); }
private List<OneRr> GetAllCname(RrDb rrDb, String name, List<OneRr> rrList) { var ar = rrDb.GetList(name, DnsType.Cname); if (ar.Count == 0) { return rrList; } foreach (RrCname a in ar) { rrList.Add(a); rrList = GetAllCname(rrDb, a.CName, rrList); } return rrList; }