--- a/src/routing/static-route-manager.cc Mon Jul 09 22:03:41 2007 -0700
+++ b/src/routing/static-route-manager.cc Mon Jul 09 22:04:55 2007 -0700
@@ -89,21 +89,122 @@
bool
StaticRouteManagerTest::RunTests (void)
{
- DebugComponentEnable("StaticRouteManager");
bool ok = true;
-#if 0
+
+ // Build fake link state database; four routers (0-3), 3 point-to-point
+ // links
+ //
+ // n0
+ // \ link 0
+ // \ link 2
+ // n2 -------------------------n3
+ // /
+ // / link 1
+ // n1
+ //
+ // link0: 10.1.1.1/30, 10.1.1.2/30
+ // link1: 10.1.2.1/30, 10.1.2.2/30
+ // link2: 10.1.3.1/30, 10.1.3.2/30
+ //
+ // Router 0
+ StaticRouterLinkRecord* lr0 = new StaticRouterLinkRecord();
+ lr0->m_linkId.Set(2); // router ID 0.0.0.2
+ lr0->m_linkData.Set("10.1.1.1");
+ lr0->m_linkType = StaticRouterLinkRecord::PointToPoint;
+ lr0->m_metric = 1;
StaticRouterLinkRecord* lr1 = new StaticRouterLinkRecord();
- lr1->m_linkId.Set(1);
- lr1->m_linkData.Set(0xffffffff);
- lr1->m_linkType = StaticRouterLinkRecord::PointToPoint;
+ lr1->m_linkId.Set("10.1.1.1");
+ lr1->m_linkData.Set("255.255.255.252");
+ lr1->m_linkType = StaticRouterLinkRecord::StubNetwork;
lr1->m_metric = 1;
+ StaticRouterLSA* lsa0 = new StaticRouterLSA();
+ lsa0->m_linkStateId.Set(1);
+ lsa0->m_advertisingRtr.Set(1);
+ lsa0->AddLinkRecord(lr0);
+ lsa0->AddLinkRecord(lr1);
+
+ // Router 1
+ StaticRouterLinkRecord* lr2 = new StaticRouterLinkRecord();
+ lr2->m_linkId.Set(2); // router ID 0.0.0.2
+ lr2->m_linkData.Set("10.1.2.1");
+ lr2->m_linkType = StaticRouterLinkRecord::PointToPoint;
+ lr2->m_metric = 1;
+ StaticRouterLinkRecord* lr3 = new StaticRouterLinkRecord();
+ lr3->m_linkId.Set("10.1.2.1");
+ lr3->m_linkData.Set("255.255.255.252");
+ lr3->m_linkType = StaticRouterLinkRecord::StubNetwork;
+ lr3->m_metric = 1;
StaticRouterLSA* lsa1 = new StaticRouterLSA();
lsa1->m_linkStateId.Set(1);
lsa1->m_advertisingRtr.Set(1);
- lsa1->Add(lr1);
+ lsa1->AddLinkRecord(lr2);
+ lsa1->AddLinkRecord(lr3);
+ // Router 2
+ StaticRouterLinkRecord* lr4 = new StaticRouterLinkRecord();
+ lr4->m_linkId.Set("0.0.0.0");
+ lr4->m_linkData.Set("10.1.1.2");
+ lr4->m_linkType = StaticRouterLinkRecord::PointToPoint;
+ lr4->m_metric = 1;
+ StaticRouterLinkRecord* lr5 = new StaticRouterLinkRecord();
+ lr5->m_linkId.Set("10.1.1.2");
+ lr5->m_linkData.Set("255.255.255.252");
+ lr5->m_linkType = StaticRouterLinkRecord::StubNetwork;
+ lr5->m_metric = 1;
+ StaticRouterLinkRecord* lr6 = new StaticRouterLinkRecord();
+ lr6->m_linkId.Set(1);
+ lr6->m_linkData.Set("10.1.2.2");
+ lr6->m_linkType = StaticRouterLinkRecord::PointToPoint;
+ lr6->m_metric = 1;
+ StaticRouterLinkRecord* lr7 = new StaticRouterLinkRecord();
+ lr7->m_linkId.Set("10.1.2.2");
+ lr7->m_linkData.Set("255.255.255.252");
+ lr7->m_linkType = StaticRouterLinkRecord::StubNetwork;
+ lr7->m_metric = 1;
+ StaticRouterLinkRecord* lr8 = new StaticRouterLinkRecord();
+ lr8->m_linkId.Set(3);
+ lr8->m_linkData.Set("10.1.3.2");
+ lr8->m_linkType = StaticRouterLinkRecord::PointToPoint;
+ lr8->m_metric = 1;
+ StaticRouterLinkRecord* lr9 = new StaticRouterLinkRecord();
+ lr9->m_linkId.Set("10.1.3.2");
+ lr9->m_linkData.Set("255.255.255.252");
+ lr9->m_linkType = StaticRouterLinkRecord::StubNetwork;
+ lr9->m_metric = 1;
+ StaticRouterLSA* lsa2 = new StaticRouterLSA();
+ lsa2->m_linkStateId.Set(2);
+ lsa2->m_advertisingRtr.Set(2);
+ lsa2->AddLinkRecord(lr4);
+ lsa2->AddLinkRecord(lr5);
+ lsa2->AddLinkRecord(lr6);
+ lsa2->AddLinkRecord(lr7);
+ lsa2->AddLinkRecord(lr8);
+ lsa2->AddLinkRecord(lr9);
+
+ // Router 3
+ StaticRouterLinkRecord* lr10 = new StaticRouterLinkRecord();
+ lr10->m_linkId.Set(2); // router ID 0.0.0.2
+ lr10->m_linkData.Set("10.1.2.1");
+ lr10->m_linkType = StaticRouterLinkRecord::PointToPoint;
+ lr10->m_metric = 1;
+ StaticRouterLinkRecord* lr11 = new StaticRouterLinkRecord();
+ lr11->m_linkId.Set("10.1.2.1");
+ lr11->m_linkData.Set("255.255.255.252");
+ lr11->m_linkType = StaticRouterLinkRecord::StubNetwork;
+ lr11->m_metric = 1;
+ StaticRouterLSA* lsa3 = new StaticRouterLSA();
+ lsa3->m_linkStateId.Set(3);
+ lsa3->m_advertisingRtr.Set(3);
+ lsa3->AddLinkRecord(lr2);
+ lsa3->AddLinkRecord(lr3);
+
+ // Add four LSAs to the database; XXX todo next
+
+ delete lsa0;
delete lsa1;
-#endif
+ delete lsa2;
+ delete lsa3;
+
return ok;
}