summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--mgmtd/mgmt.h12
-rw-r--r--mgmtd/mgmt_ds.h3
-rw-r--r--mgmtd/mgmt_fe_adapter.c4
-rw-r--r--mgmtd/mgmt_history.c54
-rw-r--r--mgmtd/mgmt_history.h38
-rw-r--r--pimd/pim6_mld.c15
-rw-r--r--tests/topotests/ospf_metric_propagation/r1/frr.conf6
-rw-r--r--tests/topotests/ospf_metric_propagation/r2/frr.conf6
-rw-r--r--tests/topotests/ospf_metric_propagation/r3/frr.conf6
-rw-r--r--tests/topotests/ospf_metric_propagation/r4/frr.conf6
-rw-r--r--tests/topotests/ospf_metric_propagation/ra/frr.conf6
-rw-r--r--tests/topotests/ospf_metric_propagation/rb/frr.conf6
-rw-r--r--tests/topotests/ospf_metric_propagation/rc/frr.conf4
-rw-r--r--tests/topotests/ospf_metric_propagation/test_ospf_metric_propagation.py39
14 files changed, 118 insertions, 87 deletions
diff --git a/mgmtd/mgmt.h b/mgmtd/mgmt.h
index 83353e8171..603296bb38 100644
--- a/mgmtd/mgmt.h
+++ b/mgmtd/mgmt.h
@@ -108,16 +108,4 @@ extern void mgmt_master_init(struct event_loop *master, const int buffer_size);
extern void mgmt_init(void);
extern void mgmt_vty_init(void);
-static inline char *mgmt_realtime_to_string(struct timeval *tv, char *buf,
- size_t sz)
-{
- struct tm tm;
- size_t n;
-
- localtime_r((const time_t *)&tv->tv_sec, &tm);
- n = strftime(buf, sz, "%Y-%m-%dT%H:%M:%S", &tm);
- snprintf(&buf[n], sz - n, ",%06u000", (unsigned int)tv->tv_usec);
- return buf;
-}
-
#endif /* _FRR_MGMTD_H */
diff --git a/mgmtd/mgmt_ds.h b/mgmtd/mgmt_ds.h
index 8d01f3d5b1..2a32eb641a 100644
--- a/mgmtd/mgmt_ds.h
+++ b/mgmtd/mgmt_ds.h
@@ -28,12 +28,9 @@
for ((id) = MGMTD_DS_NONE; (id) < MGMTD_DS_MAX_ID; (id)++)
#define MGMTD_MAX_COMMIT_LIST 10
-#define MGMTD_MD5_HASH_LEN 16
-#define MGMTD_MD5_HASH_STR_HEX_LEN 33
#define MGMTD_COMMIT_FILE_PATH DAEMON_DB_DIR "/commit-%s.json"
#define MGMTD_COMMIT_INDEX_FILE_NAME DAEMON_DB_DIR "/commit-index.dat"
-#define MGMTD_COMMIT_TIME_STR_LEN 100
extern struct nb_config *running_config;
diff --git a/mgmtd/mgmt_fe_adapter.c b/mgmtd/mgmt_fe_adapter.c
index abf1f954da..262741b665 100644
--- a/mgmtd/mgmt_fe_adapter.c
+++ b/mgmtd/mgmt_fe_adapter.c
@@ -1714,7 +1714,7 @@ static void
mgmt_fe_adapter_cmt_stats_write(struct vty *vty,
struct mgmt_fe_client_adapter *adapter)
{
- char buf[100] = {0};
+ char buf[MGMT_LONG_TIME_MAX_LEN];
if (!mm->perf_stats_en)
return;
@@ -1795,7 +1795,7 @@ static void
mgmt_fe_adapter_setcfg_stats_write(struct vty *vty,
struct mgmt_fe_client_adapter *adapter)
{
- char buf[100] = {0};
+ char buf[MGMT_LONG_TIME_MAX_LEN];
if (!mm->perf_stats_en)
return;
diff --git a/mgmtd/mgmt_history.c b/mgmtd/mgmt_history.c
index 2251c49f1c..a49718a490 100644
--- a/mgmtd/mgmt_history.c
+++ b/mgmtd/mgmt_history.c
@@ -18,8 +18,8 @@
struct mgmt_cmt_info_t {
struct mgmt_cmt_infos_item cmts;
- char cmtid_str[MGMTD_MD5_HASH_STR_HEX_LEN];
- char time_str[MGMTD_COMMIT_TIME_STR_LEN];
+ char cmtid_str[MGMT_SHORT_TIME_MAX_LEN];
+ char time_str[MGMT_LONG_TIME_MAX_LEN];
char cmt_json_file[PATH_MAX];
};
@@ -54,36 +54,30 @@ static void mgmt_history_remove_file(char *name)
zlog_err("Old commit info deletion failed");
}
-static void mgmt_history_hash(const char *input_str, char *hash)
+static struct mgmt_cmt_info_t *mgmt_history_new_cmt_info(void)
{
- int i;
- unsigned char digest[MGMTD_MD5_HASH_LEN];
- MD5_CTX ctx;
-
- memset(&ctx, 0, sizeof(ctx));
- MD5Init(&ctx);
- MD5Update(&ctx, input_str, strlen(input_str));
- MD5Final(digest, &ctx);
-
- for (i = 0; i < MGMTD_MD5_HASH_LEN; i++)
- snprintf(&hash[i * 2], MGMTD_MD5_HASH_STR_HEX_LEN, "%02x",
- (unsigned int)digest[i]);
+ struct mgmt_cmt_info_t *new;
+ struct timespec tv;
+ struct tm tm;
+
+ new = XCALLOC(MTYPE_MGMTD_CMT_INFO, sizeof(struct mgmt_cmt_info_t));
+
+ clock_gettime(CLOCK_REALTIME, &tv);
+ localtime_r(&tv.tv_sec, &tm);
+
+ mgmt_time_to_string(&tv, true, new->time_str, sizeof(new->time_str));
+ mgmt_time_to_string(&tv, false, new->cmtid_str, sizeof(new->cmtid_str));
+ snprintf(new->cmt_json_file, sizeof(new->cmt_json_file),
+ MGMTD_COMMIT_FILE_PATH, new->cmtid_str);
+
+ return new;
}
static struct mgmt_cmt_info_t *mgmt_history_create_cmt_rec(void)
{
- struct mgmt_cmt_info_t *new;
+ struct mgmt_cmt_info_t *new = mgmt_history_new_cmt_info();
struct mgmt_cmt_info_t *cmt_info;
struct mgmt_cmt_info_t *last_cmt_info = NULL;
- struct timeval cmt_recd_tv;
-
- new = XCALLOC(MTYPE_MGMTD_CMT_INFO, sizeof(struct mgmt_cmt_info_t));
- gettimeofday(&cmt_recd_tv, NULL);
- mgmt_realtime_to_string(&cmt_recd_tv, new->time_str,
- sizeof(new->time_str));
- mgmt_history_hash(new->time_str, new->cmtid_str);
- snprintf(new->cmt_json_file, sizeof(new->cmt_json_file) - 1,
- MGMTD_COMMIT_FILE_PATH, new->cmtid_str);
if (mgmt_cmt_infos_count(&mm->cmts) == MGMTD_MAX_COMMIT_LIST) {
FOREACH_CMT_REC (mm, cmt_info)
@@ -106,8 +100,7 @@ mgmt_history_find_cmt_record(const char *cmtid_str)
struct mgmt_cmt_info_t *cmt_info;
FOREACH_CMT_REC (mm, cmt_info) {
- if (strncmp(cmt_info->cmtid_str, cmtid_str,
- MGMTD_MD5_HASH_STR_HEX_LEN) == 0)
+ if (strcmp(cmt_info->cmtid_str, cmtid_str) == 0)
return cmt_info;
}
@@ -282,8 +275,7 @@ int mgmt_history_rollback_by_id(struct vty *vty, const char *cmtid_str)
}
FOREACH_CMT_REC (mm, cmt_info) {
- if (strncmp(cmt_info->cmtid_str, cmtid_str,
- MGMTD_MD5_HASH_STR_HEX_LEN) == 0) {
+ if (strcmp(cmt_info->cmtid_str, cmtid_str) == 0) {
ret = mgmt_history_rollback_to_cmt(vty, cmt_info,
false);
return ret;
@@ -349,9 +341,9 @@ void show_mgmt_cmt_history(struct vty *vty)
int slno = 0;
vty_out(vty, "Last 10 commit history:\n");
- vty_out(vty, " Sl.No\tCommit-ID(HEX)\t\t\t Commit-Record-Time\n");
+ vty_out(vty, "Slot Commit-ID Commit-Record-Time\n");
FOREACH_CMT_REC (mm, cmt_info) {
- vty_out(vty, " %d\t%s %s\n", slno, cmt_info->cmtid_str,
+ vty_out(vty, "%4d %23s %s\n", slno, cmt_info->cmtid_str,
cmt_info->time_str);
slno++;
}
diff --git a/mgmtd/mgmt_history.h b/mgmtd/mgmt_history.h
index 5f96cf90e1..d3f7958952 100644
--- a/mgmtd/mgmt_history.h
+++ b/mgmtd/mgmt_history.h
@@ -54,4 +54,42 @@ extern void mgmt_history_new_record(struct mgmt_ds_ctx *ds_ctx);
extern void mgmt_history_destroy(void);
extern void mgmt_history_init(void);
+/*
+ * 012345678901234567890123456789
+ * 2023-12-31T12:12:12,012345678
+ * 20231231121212012345678
+ */
+#define MGMT_LONG_TIME_FMT "%Y-%m-%dT%H:%M:%S"
+#define MGMT_LONG_TIME_MAX_LEN 30
+#define MGMT_SHORT_TIME_FMT "%Y%m%d%H%M%S"
+#define MGMT_SHORT_TIME_MAX_LEN 24
+
+static inline const char *
+mgmt_time_to_string(struct timespec *tv, bool long_fmt, char *buffer, size_t sz)
+{
+ struct tm tm;
+ size_t n;
+
+ localtime_r(&tv->tv_sec, &tm);
+
+ if (long_fmt) {
+ n = strftime(buffer, sz, MGMT_LONG_TIME_FMT, &tm);
+ snprintf(&buffer[n], sz - n, ",%09lu", tv->tv_nsec);
+ } else {
+ n = strftime(buffer, sz, MGMT_SHORT_TIME_FMT, &tm);
+ snprintf(&buffer[n], sz - n, "%09lu", tv->tv_nsec);
+ }
+
+ return buffer;
+}
+
+static inline const char *mgmt_realtime_to_string(struct timeval *tv, char *buf,
+ size_t sz)
+{
+ struct timespec ts = {.tv_sec = tv->tv_sec,
+ .tv_nsec = tv->tv_usec * 1000};
+
+ return mgmt_time_to_string(&ts, true, buf, sz);
+}
+
#endif /* _FRR_MGMTD_HISTORY_H_ */
diff --git a/pimd/pim6_mld.c b/pimd/pim6_mld.c
index 5eedfb7dca..aa39be63db 100644
--- a/pimd/pim6_mld.c
+++ b/pimd/pim6_mld.c
@@ -344,7 +344,8 @@ static const char *const gm_states[] = {
};
/* clang-format on */
-CPP_NOTICE("TODO: S,G entries in EXCLUDE (i.e. prune) unsupported");
+/* TODO: S,G entries in EXCLUDE (i.e. prune) unsupported" */
+
/* tib_sg_gm_prune() below is an "un-join", it doesn't prune S,G when *,G is
* joined. Whether we actually want/need to support this is a separate
* question - it is almost never used. In fact this is exactly what RFC5790
@@ -645,7 +646,7 @@ static void gm_handle_v2_pass1(struct gm_packet_state *pkt,
*/
gm_packet_sg_drop(old_grp);
gm_sg_update(grp, false);
- CPP_NOTICE("need S,G PRUNE => NO_INFO transition here");
+/* TODO "need S,G PRUNE => NO_INFO transition here" */
}
break;
@@ -793,7 +794,8 @@ static void gm_handle_v2_pass2_excl(struct gm_packet_state *pkt, size_t offs)
gm_sg_update(sg_grp, false);
}
-CPP_NOTICE("TODO: QRV/QQIC are not copied from queries to local state");
+/* TODO: QRV/QQIC are not copied from queries to local state" */
+
/* on receiving a query, we need to update our robustness/query interval to
* match, so we correctly process group/source specific queries after last
* member leaves
@@ -949,7 +951,8 @@ static void gm_handle_v1_report(struct gm_if *gm_ifp,
item = gm_packet_sg_setup(pkt, grp, true, false);
item->n_exclude = 0;
- CPP_NOTICE("set v1-seen timer on grp here");
+
+/* TODO "set v1-seen timer on grp here" */
/* } */
@@ -1012,7 +1015,9 @@ static void gm_handle_v1_leave(struct gm_if *gm_ifp,
if (old_grp) {
gm_packet_sg_drop(old_grp);
gm_sg_update(grp, false);
- CPP_NOTICE("need S,G PRUNE => NO_INFO transition here");
+
+/* TODO "need S,G PRUNE => NO_INFO transition here" */
+
}
}
diff --git a/tests/topotests/ospf_metric_propagation/r1/frr.conf b/tests/topotests/ospf_metric_propagation/r1/frr.conf
index 9f388dbd0f..85230494dd 100644
--- a/tests/topotests/ospf_metric_propagation/r1/frr.conf
+++ b/tests/topotests/ospf_metric_propagation/r1/frr.conf
@@ -8,18 +8,18 @@ interface r1-eth0
ip address 10.0.1.1/24
ip ospf cost 100
ip ospf hello-interval 1
- ip ospf dead-interval 3
+ ip ospf dead-interval 30
!
interface r1-eth1 vrf blue
ip address 10.0.10.1/24
ip ospf hello-interval 1
- ip ospf dead-interval 3
+ ip ospf dead-interval 30
!
!
interface r1-eth2 vrf green
ip address 10.0.91.1/24
ip ospf hello-interval 1
- ip ospf dead-interval 3
+ ip ospf dead-interval 30
!
!
router ospf
diff --git a/tests/topotests/ospf_metric_propagation/r2/frr.conf b/tests/topotests/ospf_metric_propagation/r2/frr.conf
index 469ae5da88..e67a374ff5 100644
--- a/tests/topotests/ospf_metric_propagation/r2/frr.conf
+++ b/tests/topotests/ospf_metric_propagation/r2/frr.conf
@@ -8,18 +8,18 @@ interface r2-eth0
ip address 10.0.1.2/24
ip ospf cost 100
ip ospf hello-interval 1
- ip ospf dead-interval 3
+ ip ospf dead-interval 30
!
interface r2-eth1 vrf blue
ip address 10.0.20.2/24
ip ospf hello-interval 1
- ip ospf dead-interval 3
+ ip ospf dead-interval 30
!
interface r2-eth2 vrf green
ip address 10.0.70.2/24
ip ospf cost 1000
ip ospf hello-interval 1
- ip ospf dead-interval 3
+ ip ospf dead-interval 30
!
router ospf
ospf router-id 10.0.255.2
diff --git a/tests/topotests/ospf_metric_propagation/r3/frr.conf b/tests/topotests/ospf_metric_propagation/r3/frr.conf
index 8dbbaf0fc4..175851d427 100644
--- a/tests/topotests/ospf_metric_propagation/r3/frr.conf
+++ b/tests/topotests/ospf_metric_propagation/r3/frr.conf
@@ -8,18 +8,18 @@ interface r3-eth0
ip address 10.0.3.3/24
ip ospf cost 100
ip ospf hello-interval 1
- ip ospf dead-interval 3
+ ip ospf dead-interval 30
!
interface r3-eth1 vrf blue
ip address 10.0.30.3/24
ip ospf hello-interval 1
- ip ospf dead-interval 3
+ ip ospf dead-interval 30
!
interface r3-eth2 vrf green
ip address 10.0.80.3/24
ip ospf cost 1000
ip ospf hello-interval 1
- ip ospf dead-interval 3
+ ip ospf dead-interval 30
!
router ospf
ospf router-id 10.0.255.3
diff --git a/tests/topotests/ospf_metric_propagation/r4/frr.conf b/tests/topotests/ospf_metric_propagation/r4/frr.conf
index af1005063b..70a47e34fa 100644
--- a/tests/topotests/ospf_metric_propagation/r4/frr.conf
+++ b/tests/topotests/ospf_metric_propagation/r4/frr.conf
@@ -8,17 +8,17 @@ interface r4-eth0
ip address 10.0.3.4/24
ip ospf cost 100
ip ospf hello-interval 1
- ip ospf dead-interval 3
+ ip ospf dead-interval 30
!
interface r4-eth1 vrf blue
ip address 10.0.40.4/24
ip ospf hello-interval 1
- ip ospf dead-interval 3
+ ip ospf dead-interval 30
!
interface r4-eth2 vrf green
ip address 10.0.94.4/24
ip ospf hello-interval 1
- ip ospf dead-interval 3
+ ip ospf dead-interval 30
!
router ospf
ospf router-id 10.0.255.4
diff --git a/tests/topotests/ospf_metric_propagation/ra/frr.conf b/tests/topotests/ospf_metric_propagation/ra/frr.conf
index 0bc2ec5679..7be9e5c33e 100644
--- a/tests/topotests/ospf_metric_propagation/ra/frr.conf
+++ b/tests/topotests/ospf_metric_propagation/ra/frr.conf
@@ -7,17 +7,17 @@ ip forwarding
interface ra-eth0
ip address 10.0.50.5/24
ip ospf hello-interval 1
- ip ospf dead-interval 3
+ ip ospf dead-interval 30
!
interface ra-eth1
ip address 10.0.10.5/24
ip ospf hello-interval 1
- ip ospf dead-interval 3
+ ip ospf dead-interval 30
!
interface ra-eth2
ip address 10.0.20.5/24
ip ospf hello-interval 1
- ip ospf dead-interval 3
+ ip ospf dead-interval 30
!
router ospf
ospf router-id 10.0.255.5
diff --git a/tests/topotests/ospf_metric_propagation/rb/frr.conf b/tests/topotests/ospf_metric_propagation/rb/frr.conf
index 6f540d125e..a7dbf82278 100644
--- a/tests/topotests/ospf_metric_propagation/rb/frr.conf
+++ b/tests/topotests/ospf_metric_propagation/rb/frr.conf
@@ -7,17 +7,17 @@ ip forwarding
interface rb-eth0
ip address 10.0.50.6/24
ip ospf hello-interval 1
- ip ospf dead-interval 3
+ ip ospf dead-interval 30
!
interface rb-eth1
ip address 10.0.30.6/24
ip ospf hello-interval 1
- ip ospf dead-interval 3
+ ip ospf dead-interval 30
!
interface rb-eth2
ip address 10.0.40.6/24
ip ospf hello-interval 1
- ip ospf dead-interval 3
+ ip ospf dead-interval 30
!
router ospf
ospf router-id 10.0.255.6
diff --git a/tests/topotests/ospf_metric_propagation/rc/frr.conf b/tests/topotests/ospf_metric_propagation/rc/frr.conf
index 9fc0ef718f..f5a2ed7c4f 100644
--- a/tests/topotests/ospf_metric_propagation/rc/frr.conf
+++ b/tests/topotests/ospf_metric_propagation/rc/frr.conf
@@ -7,12 +7,12 @@ ip forwarding
interface rc-eth0
ip address 10.0.70.7/24
ip ospf hello-interval 1
- ip ospf dead-interval 3
+ ip ospf dead-interval 30
!
interface rc-eth1
ip address 10.0.80.7/24
ip ospf hello-interval 1
- ip ospf dead-interval 3
+ ip ospf dead-interval 30
!
router ospf
ospf router-id 10.0.255.7
diff --git a/tests/topotests/ospf_metric_propagation/test_ospf_metric_propagation.py b/tests/topotests/ospf_metric_propagation/test_ospf_metric_propagation.py
index 709e07649b..4d78bd2372 100644
--- a/tests/topotests/ospf_metric_propagation/test_ospf_metric_propagation.py
+++ b/tests/topotests/ospf_metric_propagation/test_ospf_metric_propagation.py
@@ -71,7 +71,6 @@ def build_topo(tgen):
tgen.add_router("h1")
tgen.add_router("h2")
-
# Interconect router 1, 2
switch = tgen.add_switch("s1-2")
switch.add_link(tgen.gears["r1"])
@@ -127,6 +126,7 @@ def build_topo(tgen):
switch.add_link(tgen.gears["r3"])
switch.add_link(tgen.gears["rc"])
+
def setup_module(mod):
logger.info("OSPF Metric Propagation:\n {}".format(TOPOLOGY))
@@ -148,8 +148,12 @@ def setup_module(mod):
for cmd in vrf_setup_cmds:
tgen.net["r{}".format(routern)].cmd(cmd)
for routern in range(1, 5):
- tgen.net["r{}".format(routern)].cmd("ip link set dev r{}-eth1 vrf blue up".format(routern))
- tgen.net["r{}".format(routern)].cmd("ip link set dev r{}-eth2 vrf green up".format(routern))
+ tgen.net["r{}".format(routern)].cmd(
+ "ip link set dev r{}-eth1 vrf blue up".format(routern)
+ )
+ tgen.net["r{}".format(routern)].cmd(
+ "ip link set dev r{}-eth2 vrf green up".format(routern)
+ )
for rname, router in router_list.items():
logger.info("Loading router %s" % rname)
@@ -181,7 +185,7 @@ def test_all_links_up():
test_func = partial(
topotest.router_json_cmp, r1, "show ip route vrf green 10.0.94.2 json", expected
)
- _, result = topotest.run_and_expect(test_func, None, count=40, wait=1)
+ _, result = topotest.run_and_expect(test_func, None, count=60, wait=1)
assertmsg = "r1 JSON output mismatches"
assert result is None, assertmsg
@@ -202,7 +206,7 @@ def test_link_1_down():
test_func = partial(
topotest.router_json_cmp, r1, "show ip route vrf green 10.0.94.2 json", expected
)
- _, result = topotest.run_and_expect(test_func, None, count=20, wait=1)
+ _, result = topotest.run_and_expect(test_func, None, count=60, wait=1)
assertmsg = "r1 JSON output mismatches"
assert result is None, assertmsg
@@ -216,6 +220,10 @@ def test_link_1_2_down():
pytest.skip("skipped because of router(s) failure")
tgen.net["r2"].cmd("ip link set dev r2-eth1 down")
+ tgen.net["r2"].cmd("ip link set dev r2-eth2 down")
+ # ospf dead-interval is set to 30 seconds, wait 35 seconds to clear the neighbor
+ sleep(35)
+ tgen.net["r2"].cmd("ip link set dev r2-eth2 up")
r1 = tgen.gears["r1"]
json_file = "{}/r1/show_ip_route-3.json".format(CWD)
@@ -223,7 +231,7 @@ def test_link_1_2_down():
test_func = partial(
topotest.router_json_cmp, r1, "show ip route vrf green 10.0.94.2 json", expected
)
- _, result = topotest.run_and_expect(test_func, None, count=20, wait=1)
+ _, result = topotest.run_and_expect(test_func, None, count=60, wait=1)
assertmsg = "r1 JSON output mismatches"
assert result is None, assertmsg
@@ -238,8 +246,8 @@ def test_link_1_2_3_down():
tgen.net["r3"].cmd("ip link set dev r3-eth0 down")
tgen.net["r3"].cmd("ip link set dev r3-eth1 down")
- # ospf dead-interval is set to 3 seconds, wait 5 seconds to clear the neighbor
- sleep(5)
+ # ospf dead-interval is set to 30 seconds, wait 35 seconds to clear the neighbor
+ sleep(35)
tgen.net["r3"].cmd("ip link set dev r3-eth0 up")
r1 = tgen.gears["r1"]
@@ -248,11 +256,12 @@ def test_link_1_2_3_down():
test_func = partial(
topotest.router_json_cmp, r1, "show ip route vrf green 10.0.94.2 json", expected
)
- _, result = topotest.run_and_expect(test_func, None, count=20, wait=1)
+ _, result = topotest.run_and_expect(test_func, None, count=60, wait=1)
assertmsg = "r1 JSON output mismatches"
assert result is None, assertmsg
+
def test_link_1_2_3_4_down():
"Test path R1 -> R2 -> Rc -> R3 -> R4"
tgen = get_topogen()
@@ -268,11 +277,12 @@ def test_link_1_2_3_4_down():
test_func = partial(
topotest.router_json_cmp, r1, "show ip route vrf green 10.0.94.2 json", expected
)
- _, result = topotest.run_and_expect(test_func, None, count=20, wait=1)
+ _, result = topotest.run_and_expect(test_func, None, count=60, wait=1)
assertmsg = "r1 JSON output mismatches"
assert result is None, assertmsg
+
def test_link_1_2_4_down():
"Test path R1 -> R2 -> Rc -> R3 -> R4"
tgen = get_topogen()
@@ -289,11 +299,12 @@ def test_link_1_2_4_down():
test_func = partial(
topotest.router_json_cmp, r1, "show ip route vrf green 10.0.94.2 json", expected
)
- _, result = topotest.run_and_expect(test_func, None, count=20, wait=1)
+ _, result = topotest.run_and_expect(test_func, None, count=60, wait=1)
assertmsg = "r1 JSON output mismatches"
assert result is None, assertmsg
+
def test_link_1_4_down():
"Test path R1 -> R2 -> Ra -> Rb -> R3 -> R4"
tgen = get_topogen()
@@ -310,7 +321,7 @@ def test_link_1_4_down():
test_func = partial(
topotest.router_json_cmp, r1, "show ip route vrf green 10.0.94.2 json", expected
)
- _, result = topotest.run_and_expect(test_func, None, count=20, wait=1)
+ _, result = topotest.run_and_expect(test_func, None, count=60, wait=1)
assertmsg = "r1 JSON output mismatches"
assert result is None, assertmsg
@@ -332,7 +343,7 @@ def test_link_4_down():
test_func = partial(
topotest.router_json_cmp, r1, "show ip route vrf green 10.0.94.2 json", expected
)
- _, result = topotest.run_and_expect(test_func, None, count=20, wait=1)
+ _, result = topotest.run_and_expect(test_func, None, count=60, wait=1)
assertmsg = "r1 JSON output mismatches"
assert result is None, assertmsg
@@ -354,7 +365,7 @@ def test_link_1_2_3_4_up():
test_func = partial(
topotest.router_json_cmp, r1, "show ip route vrf green 10.0.94.2 json", expected
)
- _, result = topotest.run_and_expect(test_func, None, count=20, wait=1)
+ _, result = topotest.run_and_expect(test_func, None, count=60, wait=1)
assertmsg = "r1 JSON output mismatches"
assert result is None, assertmsg