Skip to content

Commit

Permalink
Merge "Add tests to verify service chain and static route counts" int…
Browse files Browse the repository at this point in the history
…o R2.20
  • Loading branch information
Zuul authored and opencontrail-ci-admin committed Jul 12, 2015
2 parents 3d9226e + 8b705d1 commit 7735d93
Show file tree
Hide file tree
Showing 3 changed files with 64 additions and 0 deletions.
35 changes: 35 additions & 0 deletions src/bgp/test/service_chain_test.cc
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
#include <boost/assign/list_of.hpp>
#include <pugixml/pugixml.hpp>

#include "base/task_annotations.h"
#include "base/test/task_test_util.h"
#include "bgp/bgp_config.h"
#include "bgp/bgp_config_ifmap.h"
Expand Down Expand Up @@ -967,6 +968,16 @@ class ServiceChainTest : public ::testing::Test {
task_util::WaitForIdle();
}

void VerifyServiceChainCount(uint32_t count) {
ConcurrencyScope scope("bgp::Config");
TASK_UTIL_EXPECT_EQ(count, bgp_server_->num_service_chains());
}

void VerifyDownServiceChainCount(uint32_t count) {
ConcurrencyScope scope("bgp::Config");
TASK_UTIL_EXPECT_EQ(count, bgp_server_->num_down_service_chains());
}

EventManager evm_;
DB config_db_;
DBGraph config_graph_;
Expand Down Expand Up @@ -1007,9 +1018,15 @@ TEST_P(ServiceChainParamTest, Basic) {
NetworkConfig(instance_names, connections);
VerifyNetworkConfig(instance_names);

VerifyServiceChainCount(0);
VerifyDownServiceChainCount(0);

SetServiceChainInformation("blue-i1",
"controller/src/bgp/testdata/service_chain_1.xml");

VerifyServiceChainCount(1);
VerifyDownServiceChainCount(1);

// Add More specific
AddInetRoute(NULL, "red", "192.168.1.1/32", 100);

Expand All @@ -1019,6 +1036,9 @@ TEST_P(ServiceChainParamTest, Basic) {
// Add Connected
AddConnectedRoute(NULL, "1.1.2.3/32", 100, "2.3.4.5");

VerifyServiceChainCount(1);
VerifyDownServiceChainCount(0);

// Check for aggregated route
VerifyInetRouteExists("blue", "192.168.1.0/24");
VerifyInetRouteAttributes("blue", "192.168.1.0/24", "2.3.4.5", "red");
Expand All @@ -1028,6 +1048,9 @@ TEST_P(ServiceChainParamTest, Basic) {

// Delete connected route
DeleteConnectedRoute(NULL, "1.1.2.3/32");

VerifyServiceChainCount(1);
VerifyDownServiceChainCount(1);
}

TEST_P(ServiceChainParamTest, IgnoreNonInetServiceChainAddress1) {
Expand Down Expand Up @@ -1440,12 +1463,18 @@ TEST_P(ServiceChainParamTest, PendingChain) {
NetworkConfig(instance_names, connections);
VerifyNetworkConfig(instance_names);

VerifyServiceChainCount(0);
VerifyDownServiceChainCount(0);

SetServiceChainInformation("blue-i1",
"controller/src/bgp/testdata/service_chain_1.xml");

// Add Connected
AddConnectedRoute(NULL, "1.1.2.3/32", 100, "2.3.4.5");

VerifyServiceChainCount(1);
VerifyDownServiceChainCount(1);

// Check for aggregated route
VerifyInetRouteNoExists("blue", "192.168.1.0/24");

Expand All @@ -1459,6 +1488,9 @@ TEST_P(ServiceChainParamTest, PendingChain) {
NetworkConfig(instance_names, connections);
VerifyNetworkConfig(instance_names);

VerifyServiceChainCount(1);
VerifyDownServiceChainCount(0);

// Add MoreSpecific
AddInetRoute(NULL, "red", "192.168.1.1/32", 100);

Expand All @@ -1468,6 +1500,9 @@ TEST_P(ServiceChainParamTest, PendingChain) {
// Delete More specific & connected
DeleteInetRoute(NULL, "red", "192.168.1.1/32");
DeleteConnectedRoute(NULL, "1.1.2.3/32");

VerifyServiceChainCount(1);
VerifyDownServiceChainCount(1);
}

TEST_P(ServiceChainParamTest, UnresolvedPendingChain) {
Expand Down
26 changes: 26 additions & 0 deletions src/bgp/test/static_route_test.cc
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
#include <boost/lexical_cast.hpp>
#include <boost/assign/list_of.hpp>

#include "base/task_annotations.h"
#include "base/test/task_test_util.h"
#include "bgp/bgp_config.h"
#include "bgp/bgp_config_ifmap.h"
Expand Down Expand Up @@ -352,6 +353,16 @@ class StaticRouteTest : public ::testing::Test {
bgp_server_->database()->FindTable(table_name) == NULL);
}

void VerifyStaticRouteCount(uint32_t count) {
ConcurrencyScope scope("bgp::Config");
TASK_UTIL_EXPECT_EQ(count, bgp_server_->num_static_routes());
}

void VerifyDownStaticRouteCount(uint32_t count) {
ConcurrencyScope scope("bgp::Config");
TASK_UTIL_EXPECT_EQ(count, bgp_server_->num_down_static_routes());
}

EventManager evm_;
DB config_db_;
DBGraph config_graph_;
Expand Down Expand Up @@ -756,17 +767,26 @@ TEST_F(StaticRouteTest, MultiplePrefix) {

set<string> config_list = list_of("target:64496:1");

VerifyStaticRouteCount(0);
VerifyDownStaticRouteCount(0);

std::auto_ptr<autogen::StaticRouteEntriesType> params =
GetStaticRouteConfig("controller/src/bgp/testdata/static_route_2.xml");

ifmap_test_util::IFMapMsgPropertyAdd(&config_db_, "routing-instance",
"nat", "static-route-entries", params.release(), 0);
task_util::WaitForIdle();

VerifyStaticRouteCount(3);
VerifyDownStaticRouteCount(3);

// Add Nexthop Route
AddInetRoute(NULL, "nat", "192.168.1.254/32", 100, "2.3.4.5");
task_util::WaitForIdle();

VerifyStaticRouteCount(3);
VerifyDownStaticRouteCount(2);

// Check for Static route
TASK_UTIL_WAIT_NE_NO_MSG(InetRouteLookup("blue", "192.168.1.0/24"),
NULL, 1000, 10000,
Expand All @@ -788,6 +808,9 @@ TEST_F(StaticRouteTest, MultiplePrefix) {
AddInetRoute(NULL, "nat", "192.168.2.1/32", 100, "9.8.7.6");
task_util::WaitForIdle();

VerifyStaticRouteCount(3);
VerifyDownStaticRouteCount(0);

// Check for Static route
TASK_UTIL_WAIT_NE_NO_MSG(InetRouteLookup("blue", "192.168.2.0/24"),
NULL, 1000, 10000,
Expand Down Expand Up @@ -827,6 +850,9 @@ TEST_F(StaticRouteTest, MultiplePrefix) {
DeleteInetRoute(NULL, "nat", "192.168.1.254/32");
DeleteInetRoute(NULL, "nat", "192.168.2.1/32");
task_util::WaitForIdle();

VerifyStaticRouteCount(3);
VerifyDownStaticRouteCount(3);
}

TEST_F(StaticRouteTest, MultiplePrefixSameNexthopAndUpdateNexthop) {
Expand Down
3 changes: 3 additions & 0 deletions src/control-node/main.cc
Original file line number Diff line number Diff line change
Expand Up @@ -289,18 +289,21 @@ bool ControlNodeInfoLogger(BgpServer *server,
if (router_id != prev_state.get_router_id() || first) {
state.set_router_id(router_id);
prev_state.set_router_id(router_id);
change = true;
}

uint32_t local_asn = server->local_autonomous_system();
if (local_asn != prev_state.get_local_asn() || first) {
state.set_local_asn(local_asn);
prev_state.set_local_asn(local_asn);
change = true;
}

uint32_t global_asn = server->autonomous_system();
if (global_asn != prev_state.get_global_asn() || first) {
state.set_global_asn(global_asn);
prev_state.set_global_asn(global_asn);
change = true;
}

if (first) {
Expand Down

0 comments on commit 7735d93

Please sign in to comment.