public void A_AAAA_NS以外タイプは例外が発生する() { //setUp var sut = new RrDb(); //exercise RrDbTest.AddNamedCaLine(sut, "", ". 3600000 IN MX A.ROOT-SERVERS.NET."); }
public void Aタイプで不正なアドレスを指定すると例外が発生する() { //setUp var sut = new RrDb(); //exercise RrDbTest.AddNamedCaLine(sut, "", "A.ROOT-SERVERS.NET. 3600000 A 1.1.1.1.1"); }
public void AAAAタイプでアドレスに矛盾があると例外が発生する() { //setUp var sut = new RrDb(); //exercise RrDbTest.AddNamedCaLine(sut, "", "A.ROOT-SERVERS.NET. 3600000 AAAA 192.168.0.1"); }
protected override bool OnStartServer() { //ルートキャッシュの初期化 _rootCache = null; var namedCaPath = string.Format("{0}\\{1}", _kernel.ProgDir(), Conf.Get("rootCache")); if (File.Exists(namedCaPath)) { try { //named.ca読み込み用コンストラクタ var expire = (int)Conf.Get("soaExpire"); //var expire = (uint)Conf.Get("soaExpire"); _rootCache = new RrDb(namedCaPath, (uint)expire); Logger.Set(LogKind.Detail, null, 6, namedCaPath); } catch (IOException) { Logger.Set(LogKind.Error, null, 2, string.Format("filename={0}", namedCaPath)); } } else { Logger.Set(LogKind.Error, null, 3, namedCaPath); } //設定したドメイン情報を初期化する if (_cacheList != null) { _cacheList.Clear(); } _cacheList = new List <RrDb>(); var op = _kernel.ListOption.Get("DnsDomain"); if (op != null) { var domainList = (Dat)op.GetValue("domainList"); if (domainList != null) { foreach (OneDat o in domainList) { if (o.Enable) { //ドメインごとのリソースの読込 var domainName = o.StrList[0]; //Ver6.1.0 var authority = bool.Parse(o.StrList[1]); var res = _kernel.ListOption.Get("Resource-" + domainName); if (res != null) { var resource = (Dat)res.GetValue("resourceList"); var rrDb = new RrDb(Logger, Conf, resource, domainName, authority); _cacheList.Add(rrDb); Logger.Set(LogKind.Detail, null, 21, "Resource-" + domainName); } } } } } return(true); }
public void 新規のリソース追加は成功する() { //setUp var sut = new RrDb(); var expected = true; //成功 //exercise var actual = sut.Add(new RrA("domain", 100, new Ip("1.2.3.4"))); //verify Assert.That(actual, Is.EqualTo(expected)); }
public void 予め同一ドメインのNSレコードが無い場合失敗する_レコードが無い() { //setUp RrDb sut = new RrDb(); bool expected = false; //exercise bool actual = RrDbTest.InitSoa(sut, "aaa.com.", "mail.", 1, 2, 3, 4, 5); //verify Assert.That(actual, Is.EqualTo(expected)); }
public void 予め同一ドメインのNSレコードが無い場合失敗する_NSレコードはあるがドメインが違う() { //setUp RrDb sut = new RrDb(); bool expected = false; sut.Add(new RrNs("bbb.com.", 0, "ns.bbb.com.")); //NSレコードはあるがドメインが違う //exercise bool actual = RrDbTest.InitSoa(sut, "aaa.com.", "mail.", 1, 2, 3, 4, 5); //verify Assert.That(actual, Is.EqualTo(expected)); }
public void Aレコードの処理() { //setUp var sut = new RrDb(); //exercise var retName = RrDbTest.AddNamedCaLine(sut, "", "A.ROOT-SERVERS.NET. 3600000 A 198.41.0.4"); //verify Assert.That(retName, Is.EqualTo("A.ROOT-SERVERS.NET.")); Assert.That(RrDbTest.Size(sut), Is.EqualTo(1)); //A Assert.That(print(RrDbTest.Get(sut, 0)), Is.EqualTo("A A.ROOT-SERVERS.NET. TTL=0 198.41.0.4")); //TTLは強制的に0になる }
public void AAAAレコードの処理() { //setUp var sut = new RrDb(); //exercise var retName = RrDbTest.AddNamedCaLine(sut, "", "A.ROOT-SERVERS.NET. 3600000 AAAA 2001:503:BA3E::2:30"); //verify Assert.That(retName, Is.EqualTo("A.ROOT-SERVERS.NET.")); Assert.That(RrDbTest.Size(sut), Is.EqualTo(1)); //Aaaa Assert.That(print(RrDbTest.Get(sut, 0)), Is.EqualTo("Aaaa A.ROOT-SERVERS.NET. TTL=0 2001:503:ba3e::2:30")); //TTLは強制的に0になる }
public void 件数は4件になる() { //setUp var sut = new RrDb(); var expected = 5; //exercise RrDbTest.InitLocalHost(sut); var actual = RrDbTest.Size(sut); //verify Assert.That(actual, Is.EqualTo(expected)); }
public void 予め同一ドメインのNSレコードが無い場合失敗する_ドメインは同じだがNSレコードではない() { //setUp RrDb sut = new RrDb(); bool expected = false; sut.Add(new RrA("aaa.com.", 0, new Ip("192.168.0.1"))); //ドメインは同じだがNSレコードではない //exercise bool actual = RrDbTest.InitSoa(sut, "aaa.com.", "mail.", 1, 2, 3, 4, 5); //verify Assert.That(actual, Is.EqualTo(expected)); }
public void 予め同一ドメインのNSレコードが有る場合成功する() { //setUp RrDb sut = new RrDb(); bool expected = true; sut.Add(new RrNs("aaa.com.", 0, "ns.aaa.com.")); //exercise bool actual = RrDbTest.InitSoa(sut, "aaa.com.", "mail.", 1, 2, 3, 4, 5); //verify Assert.That(actual, Is.EqualTo(expected)); }
public void リソース確認_3番目はAAAAレコードとなる() { //setUp var sut = new RrDb(); //exercise RrDbTest.InitLocalHost(sut); var o = (RrAaaa) RrDbTest.Get(sut, 2); //verify //Assert.That(o.getDnsType(), Is.EqualTo(DnsType.Aaaa)); //Assert.That(o.getName(), Is.EqualTo("localhost.")); Assert.That(o.Ip.ToString(), Is.EqualTo("::1")); }
public void リソース確認_1番目はAレコードとなる() { //setUp var sut = new RrDb(); //exercise RrDbTest.InitLocalHost(sut); var o = (RrA) RrDbTest.Get(sut, 0); //verify Assert.That(o.DnsType, Is.EqualTo(DnsType.A)); Assert.That(o.Name, Is.EqualTo("localhost.")); Assert.That(o.Ip.ToString(), Is.EqualTo("127.0.0.1")); }
public void リソース確認_4番目はPTRレコードとなる() { //setUp var sut = new RrDb(); //exercise RrDbTest.InitLocalHost(sut); var o = (RrPtr) RrDbTest.Get(sut, 3); //verify Assert.That(o.DnsType, Is.EqualTo(DnsType.Ptr)); Assert.That(o.Name, Is.EqualTo("1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.IP6.ARPA.")); Assert.That(o.Ptr, Is.EqualTo("localhost.")); }
public void リソース確認_5番目はNSレコードとなる() { //setUp var sut = new RrDb(); //exercise RrDbTest.InitLocalHost(sut); var o = (RrNs) RrDbTest.Get(sut, 4); //verify Assert.That(o.DnsType, Is.EqualTo(DnsType.Ns)); Assert.That(o.Name, Is.EqualTo("localhost.")); Assert.That(o.NsName, Is.EqualTo("localhost.")); }
//リフレクションを使用してプライベートメソッドにアクセスする RrDb.addOneDat(string,OneDat) public static void AddOneDat(RrDb sut, string domainName, OneDat oneDat) { var type = sut.GetType(); var func = type.GetMethod("AddOneDat", BindingFlags.NonPublic | BindingFlags.Instance); try{ func.Invoke(sut, new object[]{domainName, oneDat}); } catch (Exception e) { //リフレクションで呼び出したメソッドで例外が発生すると、System.Reflection.TargetInvocationException //でラップされて、InnerException プロパティに発生した例外が設定される throw e.InnerException; } }
public void 同一リソースの追加_TTLが0以外の場合は上書きされる() { //setUp var sut = new RrDb(); //exercise var ttl = 10u; //最初のリソースはTTL=0以外 sut.Add(new RrA("domain", ttl, new Ip("1.2.3.4"))); sut.Add(new RrA("domain", 20, new Ip("1.2.3.4"))); //verify Assert.That(RrDbTest.Size(sut), Is.EqualTo(1)); //件数は1件になる Assert.That(RrDbTest.Get(sut, 0).Ttl, Is.EqualTo(20)); //TTLは後から追加した20になる }
//リフレクションを使用してプライベートメソッドにアクセスする RrDb.addNamedCaLine(string tmpName, string str) public static string AddNamedCaLine(RrDb sut, string tmpName, string str) { var type = sut.GetType(); var func = type.GetMethod("AddNamedCaLine", BindingFlags.NonPublic | BindingFlags.Instance); try{ return (string) func.Invoke(sut, new object[]{tmpName, str}); } catch (Exception e){ //リフレクションで呼び出したメソッドで例外が発生すると、System.Reflection.TargetInvocationException //でラップされて、InnerException プロパティに発生した例外が設定される throw e.InnerException; } }
public void CNAMEレコードを読み込んだ時_CNAMEが保存される() { //setUp var sut = new RrDb(); var oneDat = new OneDat(true, new[]{"3", "cname", "alias", "255.254.253.252", "0"}, _isSecret); //exercise RrDbTest.AddOneDat(sut, DomainName, oneDat); //verify Assert.That(RrDbTest.Size(sut), Is.EqualTo(1)); //Cname Assert.That(print(RrDbTest.Get(sut, 0)), Is.EqualTo("Cname alias.aaa.com. TTL=0 cname.aaa.com.")); }
public void 同一リソースの追加_TTLが0の場合は失敗する() { //setUp var sut = new RrDb(); var expected = false; //失敗 //exercise var ttl = 0u; //最初のリソースはTTL=0 sut.Add(new RrA("domain", ttl, new Ip("1.2.3.4"))); var actual = sut.Add(new RrA("domain", 100, new Ip("1.2.3.4"))); //verify Assert.That(actual, Is.EqualTo(expected)); }
public void enable_falseのデータを追加すると例外が発生する() { //実際に発生するのはValidObjExceptionだが、privateメソッドの制約のためExceptionの発生をテストする //setUp var sut = new RrDb(); var oneDat = new OneDat(false, new[]{"0", "www", "alias", "192.168.0.1", "10"}, _isSecret); //exercise RrDbTest.AddOneDat(sut, DomainName, oneDat); //verify Assert.Fail("ここが実行されたらテスト失敗"); }
public void Aレコードを読み込んだ時_A及びPTRが保存される() { //setUp var sut = new RrDb(); var oneDat = new OneDat(true, new[]{"0", "www", "alias", "192.168.0.1", "10"}, _isSecret); //exercise RrDbTest.AddOneDat(sut, DomainName, oneDat); //verify Assert.That(RrDbTest.Size(sut), Is.EqualTo(2)); //A,PTR Assert.That(print(RrDbTest.Get(sut, 0)), Is.EqualTo("A www.aaa.com. TTL=0 192.168.0.1")); Assert.That(print(RrDbTest.Get(sut, 1)), Is.EqualTo("Ptr 1.0.168.192.in-addr.arpa. TTL=0 www.aaa.com.")); }
public void AAAAレコードを読み込んだ時_AAAA及びPTRが保存される() { //setUp var sut = new RrDb(); var oneDat = new OneDat(true, new[]{"4", "www", "alias", "fe80::f509:c5be:437b:3bc5", "10"}, _isSecret); //exercise RrDbTest.AddOneDat(sut, DomainName, oneDat); //verify Assert.That(RrDbTest.Size(sut), Is.EqualTo(2)); //AAAA,PTR Assert.That(print(RrDbTest.Get(sut, 0)), Is.EqualTo("Aaaa www.aaa.com. TTL=0 fe80::f509:c5be:437b:3bc5")); Assert.That(print(RrDbTest.Get(sut, 1)), Is.EqualTo("Ptr 5.c.b.3.b.7.3.4.e.b.5.c.9.0.5.f.0.0.0.0.0.0.0.0.0.0.0.0.0.8.e.f.ip6.arpa. TTL=0 www.aaa.com.")); }
public void 異なるリソースの追加() { //setUp var sut = new RrDb(); var expected = 3; //全部で3件になる //exercise sut.Add(new RrA("domain", 10, new Ip("1.2.3.4"))); sut.Add(new RrA("domain", 10, new Ip("3.4.5.6"))); sut.Add(new RrNs("domain", 10, "ns")); var actual = RrDbTest.Size(sut); //verify Assert.That(actual, Is.EqualTo(expected)); }
protected override bool OnStartServer() { //ルートキャッシュの初期化 _rootCache = null; var namedCaPath = string.Format("{0}\\{1}", _kernel.ProgDir(), Conf.Get("rootCache")); if (File.Exists(namedCaPath)) { try { //named.ca読み込み用コンストラクタ var expire = (int) Conf.Get("soaExpire"); //var expire = (uint)Conf.Get("soaExpire"); _rootCache = new RrDb(namedCaPath, (uint) expire); Logger.Set(LogKind.Detail, null, 6, namedCaPath); } catch (IOException) { Logger.Set(LogKind.Error, null, 2, string.Format("filename={0}", namedCaPath)); } } else { Logger.Set(LogKind.Error, null, 3, namedCaPath); } //設定したドメイン情報を初期化する if (_cacheList != null) { _cacheList.Clear(); } _cacheList = new List<RrDb>(); var op = _kernel.ListOption.Get("DnsDomain"); if (op != null) { var domainList = (Dat) op.GetValue("domainList"); if (domainList != null) { foreach (OneDat o in domainList) { if (o.Enable) { //ドメインごとのリソースの読込 var domainName = o.StrList[0]; //Ver6.1.0 var authority = bool.Parse(o.StrList[1]); var res = _kernel.ListOption.Get("Resource-" + domainName); if (res != null) { var resource = (Dat) res.GetValue("resourceList"); var rrDb = new RrDb(Logger, Conf, resource, domainName, authority); _cacheList.Add(rrDb); Logger.Set(LogKind.Detail, null, 21, "Resource-" + domainName); } } } } } return true; }
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 追加に成功したばあのSOAレコードの検証() { //setUp RrDb sut = new RrDb(); sut.Add(new RrNs("aaa.com.", 0, "ns.aaa.com.")); //exercise RrDbTest.InitSoa(sut, "aaa.com.", "*****@*****.**", 1, 2, 3, 4, 5); //verify Assert.That(RrDbTest.Size(sut), Is.EqualTo(2)); //NS及びSOAの2件になっている RrSoa o = (RrSoa) RrDbTest.Get(sut, 1); Assert.That(o.NameServer, Is.EqualTo("ns.aaa.com.")); Assert.That(o.PostMaster, Is.EqualTo("root.aaa.com.")); //変換が完了している(@=>. 最後に.追加) Assert.That(o.Serial, Is.EqualTo(1)); Assert.That(o.Refresh, Is.EqualTo(2)); Assert.That(o.Retry, Is.EqualTo(3)); Assert.That(o.Expire, Is.EqualTo(4)); Assert.That(o.Minimum, Is.EqualTo(5)); }
public void findによる検索_ヒットするデータが存在する場合() { //setUp var sut = new RrDb(null, null, null, "example.com", true); sut.Add(new RrA("www1.example.com.", 100, new Ip("192.168.0.1"))); sut.Add(new RrA("www.example.com.", 100, new Ip("192.168.0.1"))); var expected = true; //exercise var actual = sut.Find("www.example.com.", DnsType.A); //verify Assert.That(actual, Is.EqualTo(expected)); }
//リフレクションを使用してプライベートメソッドにアクセスする RrDb.size() public static int Size(RrDb sut) { var type = sut.GetType(); var func = type.GetMethod("Size", BindingFlags.NonPublic | BindingFlags.Instance); return (int) func.Invoke(sut, new object[]{}); }
//リフレクションを使用してプライベートメソッドにアクセスする RrDb.addOneDat(string,OneDat) public static bool InitSoa(RrDb sut, string domainName, string mail, uint serial, uint refresh, uint retry, uint expire, uint minimum) { var type = sut.GetType(); var func = type.GetMethod("InitSoa", BindingFlags.NonPublic | BindingFlags.Instance); return (bool) func.Invoke(sut, new object[]{domainName, mail, serial, refresh, retry, expire, minimum}); }
//リフレクションを使用してプライベートメソッドにアクセスする RrDb.initLocalHost() public static void InitLocalHost(RrDb sut) { var type = sut.GetType(); var func = type.GetMethod("InitLocalHost", BindingFlags.NonPublic | BindingFlags.Instance); func.Invoke(sut, new object[]{}); }