Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

TIPC reconnect failed, but TCP reconnected OK, test in the REQ-REP mode. #4212

Open
caivi123 opened this issue Jun 11, 2021 · 0 comments
Open

Comments

@caivi123
Copy link

caivi123 commented Jun 11, 2021

Please use this template for reporting suspected bugs or requests for help.

Issue description

TIPC reconnect failed, but TCP reconnected OK!
Test in the same environment with the same demo(zmq server/client).

Environment

  • libzmq version (commit hash if unreleased): zeromq-4.3.4.tar.gz
  • OS: Ubuntu 20.04.2 LTS (GNU/Linux 5.4.0-65-generic x86_64)

Network topology

┍┈┈┈┈┈PC-A

HUB┈┈┈PC-B

┕┈┈┈┈┈PC-C

Test Environment

Test PC: Dell OptiPlex 380(PC-A, PC-B, PC-C)
CPU: Pentium(R) Dual-Core CPU E5300 @ 2.60GHz
MEM: 4G

Network Connector: 10M HUB

OS: Ubuntu 20.04.2 LTS (GNU/Linux 5.4.0-65-generic x86_64)
cat /proc/version
Linux version 5.4.0-65-generic (buildd@lcy01-amd64-018) (gcc version 9.3.0 (Ubuntu 9.3.0-17ubuntu1~20.04)) #73-Ubuntu SMP Mon Jan 18 17:25:17 UTC 2021

cat /etc/issue
Ubuntu 20.04.2 LTS \n \l

PC-A Network configuration

IP info:
inet 10.1.1.11/24 brd 10.1.1.255 scope global enp2s0

TIPC info:
root@ubuntu:/home/tipc# modprobe tipc
root@ubuntu:/home/tipc# lsmod | grep tipc
tipc 135168 0
ip6_udp_tunnel 16384 1 tipc
udp_tunnel 16384 1 tipc
root@ubuntu:/home/tipc# tipc-config -netid=5678 -addr=1.1.111 -be=eth:enp2s0
root@ubuntu:/home/tipc# tipc-config -a
node address: <1.1.111>
root@ubuntu:/home/tipc# tipc-config -b
Bearers:
eth:enp2s0
root@ubuntu:/home/tipc# tipc-config -n
Neighbors:
<1.1.122>: up
<1.1.133>: up
root@ubuntu:/home/tipc# tipc-config -l
Links:
broadcast-link: up
100106f:enp2s0-100107a:enp2s0: up
100106f:enp2s0-1001085:enp2s0: up

PC-B Network configuration

IP info:
inet 10.1.1.12/24 brd 10.1.1.255 scope global enp2s0

TIPC info:
root@ubuntu:/home/tipc# modprobe tipc
root@ubuntu:/home/tipc# lsmod | grep tipc
tipc 258048 0
ip6_udp_tunnel 16384 1 tipc
udp_tunnel 16384 1 tipc
root@ubuntu:/home/tipc# tipc-config -netid=5678 -addr=1.1.122 -be=eth:enp2s0
root@ubuntu:/home/tipc# tipc-config -a
node address: <1.1.122>
root@ubuntu:/home/tipc# tipc-config -b
Bearers:
eth:enp2s0
root@ubuntu:/home/tipc# tipc-config -n
Neighbors:
<1.1.111>: up
<1.1.133>: up
root@ubuntu:/home/tipc# tipc-config -l
Links:
broadcast-link: up
100107a:enp2s0-100106f:enp2s0: up
100107a:enp2s0-1001085:enp2s0: up

PC-C Network configuration

IP info:
inet 10.1.1.13/24 brd 10.1.1.255 scope global enp2s0

TIPC info:
root@ubuntu:/home/tipc# modprobe tipc
root@ubuntu:/home/tipc# lsmod | grep tipc
tipc 131072 0
ip6_udp_tunnel 16384 1 tipc
udp_tunnel 16384 1 tipc
root@ubuntu:/home/tipc# tipc-config -netid=5678 -addr=1.1.133 -be=eth:enp2s0
root@ubuntu:/home/tipc# tipc-config -a
node address: <1.1.133>
root@ubuntu:/home/tipc# tipc-config -b
Bearers:
eth:enp2s0
root@ubuntu:/home/tipc# tipc-config -n
Neighbors:
<1.1.111>: up
<1.1.122>: up
root@ubuntu:/home/tipc# tipc-config -l
Links:
broadcast-link: up
1001085:enp2s0-100106f:enp2s0: up
1001085:enp2s0-100107a:enp2s0: up

Minimal test code / Steps to reproduce the issue

zmq server code

`

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <libgen.h>

#include "zmq.h"

#define SHOW_DATA_LEN 16
static char prog_name[256] = {0};

int main (int argc, char *argv[])
{
    int rc = 0;
    int i = 0, n = 0;
    int loop_cnt = -1;
    void *ctx = NULL;
    void *rep = NULL;
    size_t msg_size;
    zmq_msg_t msg;
    const char *bind_to;
    uint8_t rcvbuf[8192] = {0};

    strcpy(prog_name, basename(argv[0]));

    if (argc != 4) {
        fprintf (stderr, "usage: %s <bind_to> <msg_size> <loop_cnt>\n", prog_name);
        fprintf (stderr, "\t bind_to tcp: \"tcp://10.50.200.1:12345\"\n");
        fprintf (stderr, "\t bind_to tipc: \"tipc://{5566,5566,5566}\"\n");
        fprintf (stderr, "\t msg_size: 64-n\n");
        fprintf (stderr, "\t loop_cnt: 1-n, or -1(forever)\n");
        return 1;
    }
    bind_to  = argv[1];
    msg_size = atoi (argv[2]);
    loop_cnt = atoi (argv[3]);

    ctx = zmq_init (1);
    fprintf (stderr, "zmq_init: %s\n", zmq_strerror (errno));
    if (!ctx) {
        //fprintf (stderr, "error in zmq_init: %s\n", zmq_strerror (errno));
        return -1;
    }

    rep = zmq_socket (ctx, ZMQ_REP);
    fprintf (stderr, "zmq_socket: %s\n", zmq_strerror (errno));
    if (!rep) {
        //fprintf (stderr, "error in zmq_socket: %s\n", zmq_strerror (errno));
        return -1;
    }

    rc = zmq_bind (rep, bind_to);
    fprintf (stderr, "zmq_bind: %s\n", zmq_strerror (errno));
    if (rc != 0) {
        //fprintf (stderr, "error in zmq_bind: %s\n", zmq_strerror (errno));
        return -1;
    }

    rc = zmq_msg_init (&msg);
    fprintf (stderr, "zmq_msg_init: %s\n", zmq_strerror (errno));
    if (rc != 0) {
        //fprintf (stderr, "error in zmq_msg_init: %s\n", zmq_strerror (errno));
        return -1;
    }

    for (i = 0; i != loop_cnt; i++) {
        rc = zmq_recvmsg (rep, &msg, 0);
        fprintf (stderr, "zmq_recvmsg: rc=%d\n", rc);
        if (rc < 0) {
            //fprintf (stderr, "error in zmq_recvmsg: %s\n", zmq_strerror (errno));
            return -1;
        }

    #if 1
        memcpy (rcvbuf, zmq_msg_data (&msg), zmq_msg_size (&msg));
        fprintf (stderr, ">>>>>>data[%d]: [\033[032m", SHOW_DATA_LEN);
        for (n = 0; n < SHOW_DATA_LEN; n++) {
            fprintf (stderr, "%c", rcvbuf[n]);
        }
        fprintf (stderr, "\033[0m]\n");
    #endif
        
        if (zmq_msg_size (&msg) != msg_size) {
            fprintf (stderr, "message of incorrect size received\n");
            return -1;
        }
        rc = zmq_sendmsg (rep, &msg, 0);
        fprintf (stderr, "zmq_sendmsg: rc=%d\n", rc);
        if (rc < 0) {
            //fprintf (stderr, "error in zmq_sendmsg: %s\n", zmq_strerror (errno));
            return -1;
        }
    }

    rc = zmq_msg_close (&msg);
    if (rc != 0) {
        fprintf (stderr, "error in zmq_msg_close: %s\n", zmq_strerror (errno));
        return -1;
    }

    zmq_sleep (1);

    rc = zmq_close (rep);
    if (rc != 0) {
        fprintf (stderr, "error in zmq_close: %s\n", zmq_strerror (errno));
        return -1;
    }

    rc = zmq_ctx_term (ctx);
    if (rc != 0) {
        fprintf (stderr, "error in zmq_ctx_term: %s\n", zmq_strerror (errno));
        return -1;
    }

    return 0;
}

`

zmq client code

`

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <libgen.h>

#include "zmq.h"


static char prog_name[256] = {0};

int main (int argc, char *argv[])
{
    const char *connect_to;
    int loop_cnt;
    size_t msg_size;
    void *ctx;
    void *req;
    int rc;
    int i;
    int slot_id = 0;
    zmq_msg_t msg;
    void *watch;
    unsigned long elapsed;
    double latency;
    char sndbuf[1024] = {0};
    //int timeout = 250;

    strcpy(prog_name, basename(argv[0]));
    if (argc != 5) {
        fprintf (stderr, "usage: %s <connect_to> <msg_size> <loop_cnt> <slot_id>\n", prog_name);
        fprintf (stderr, "\t connect_to tcp: \"tcp://10.50.200.1:12345\"\n");
        fprintf (stderr, "\t connect_to tipc: \"tipc://{5566,5566}\"\n");
        fprintf (stderr, "\t msg_size: 64-n\n");
        fprintf (stderr, "\t loop_cnt: 1-n, or -1(forever)\n");
        fprintf (stderr, "\t slot_id: 1-n\n");
        return 1;
    }
    connect_to = argv[1];
    msg_size = atoi (argv[2]);
    loop_cnt = atoi (argv[3]);
    slot_id  = atoi (argv[4]);

    ctx = zmq_init (1);
    fprintf (stderr, "zmq_init: %s\n", zmq_strerror (errno));
    if (!ctx) {
        //fprintf (stderr, "error in zmq_init: %s\n", zmq_strerror (errno));
        return -1;
    }

    req = zmq_socket (ctx, ZMQ_REQ);
    fprintf (stderr, "zmq_socket: %s\n", zmq_strerror (errno));
    if (!req) {
        //fprintf (stderr, "error in zmq_socket: %s\n", zmq_strerror (errno));
        return -1;
    }

    rc = zmq_connect (req, connect_to);
    fprintf (stderr, "zmq_connect: %s\n", zmq_strerror (errno));
    if (rc != 0) {
        //fprintf (stderr, "error in zmq_connect: %s\n", zmq_strerror (errno));
        return -1;
    }

    rc = zmq_msg_init_size (&msg, msg_size);
    fprintf (stderr, "zmq_msg_init_size: %s\n", zmq_strerror (errno));
    if (rc != 0) {
        //fprintf (stderr, "error in zmq_msg_init_size: %s\n", zmq_strerror (errno));
        return -1;
    }
    memset (zmq_msg_data (&msg), 0, msg_size);

    watch = zmq_stopwatch_start ();

    for (i = 0; i != loop_cnt; i++) {
        sleep(1);
        sprintf(sndbuf, "%s-slot%d-%d", prog_name, slot_id, i+1);
        memcpy (zmq_msg_data (&msg), sndbuf, strlen(sndbuf));
        fprintf (stderr, "\n\033[035m .....sendmsg: %s\033[0m\n", sndbuf);

        //zmq_setsockopt (req, ZMQ_SNDTIMEO, &timeout, sizeof (int));
        rc = zmq_sendmsg (req, &msg, 0);
        fprintf (stderr, "zmq_sendmsg: rc=%d\n", rc);
        if (rc < 0) {
            fprintf (stderr, "error in zmq_sendmsg: %s\n", zmq_strerror (errno));
            return -1;
            //continue;
        }

        //zmq_setsockopt (req, ZMQ_RCVTIMEO, &timeout, sizeof (int));
        rc = zmq_recvmsg (req, &msg, 0);
        fprintf (stderr, "zmq_recvmsg: rc=%d\n", rc);
        if (rc < 0) {
            fprintf (stderr, "error in zmq_recvmsg: %s\n", zmq_strerror (errno));
            return -1;
            //continue;
        }
        if (zmq_msg_size (&msg) != msg_size) {
            fprintf (stderr, "message of incorrect size received\n");
            return -1;
            //continue;
        }
    }

    elapsed = zmq_stopwatch_stop (watch);

    rc = zmq_msg_close (&msg);
    if (rc != 0) {
        fprintf (stderr, "error in zmq_msg_close: %s\n", zmq_strerror (errno));
        return -1;
    }

    latency = (double) elapsed / (loop_cnt * 2);

    fprintf (stderr, "MSG_SIZE: %d [B]\n", (int) msg_size);
    fprintf (stderr, "LOOP_CNT: %d\n", (int) loop_cnt);
    fprintf (stderr, "USING_TM: %.3f [us]\n", (double) latency);

    rc = zmq_close (req);
    if (rc != 0) {
        fprintf (stderr, "error in zmq_close: %s\n", zmq_strerror (errno));
        return -1;
    }

    rc = zmq_ctx_term (ctx);
    if (rc != 0) {
        fprintf (stderr, "error in zmq_ctx_term: %s\n", zmq_strerror (errno));
        return -1;
    }

    return 0;
}

`

zmq demo info

root@ubuntu:/home/tipc# ./zsrv -h
usage: zsrv <bind_to> <msg_size> <loop_cnt>
bind_to tcp: "tcp://10.50.200.1:12345"
bind_to tipc: "tipc://{5566,5566,5566}"
msg_size: 64-n
loop_cnt: 1-n, or -1(forever)

root@ubuntu:/home/tipc# ./zcli -h
usage: zcli <connect_to> <msg_size> <loop_cnt> <slot_id>
connect_to tcp: "tcp://10.50.200.1:12345"
connect_to tipc: "tipc://{5566,5566}"
msg_size: 64-n
loop_cnt: 1-n, or -1(forever)
slot_id: 1-n

Testcase 1: TCP protocol + ZMQ REQ-REP mode, Unplug/plug in cable

PC-A(server): ./zsrv "tcp://10.1.1.11:12345" 64 20000000
PC-B(client1): ./zcli "tcp://10.1.1.11:12345" 64 1000000 22
PC-C(client2): ./zcli "tcp://10.1.1.11:12345" 64 1000000 33

step1) Running server, client1, client2 by order
step2) Start to send and recv msg
--client1 send msg to server ok.
--client2 send msg to server ok.
--server recv msg from client1 ok.
--server recv msg from client2 ok.
step3) Unplug the network cable on the PC-B.
--client1 send msg to server failed, and starting reconnect.
--client2 send msg to server ok.
--server cannot recv msg from client1.
--server recv msg from client2 ok.
step4) About 3 minutes later, plug in the network cable on the PC-B again.
--client1 reconnect to server successful, and it's send msg to server ok.
--client2 send msg to server ok.
--server recv msg from client1 ok.
--server recv msg from client2 ok.

Testcase 2: TCP protocol + ZMQ REQ-REP mode, ifconfig down/up enp2s0

PC-A(server): ./zsrv "tcp://10.1.1.11:12345" 64 20000000
PC-B(client1): ./zcli "tcp://10.1.1.11:12345" 64 1000000 22
PC-C(client2): ./zcli "tcp://10.1.1.11:12345" 64 1000000 33

step1) Running server, client1, client2 by order
step2) Start to send and recv msg
--client1 send msg to server ok.
--client2 send msg to server ok.
--server recv msg from client1 ok.
--server recv msg from client2 ok.
step3) "ifconfig down enp2s0" on the PC-B.
--client1 send msg to server failed, and starting reconnect.
--client2 send msg to server ok.
--server cannot recv msg from client1.
--server recv msg from client2 ok.
step4) About 3 minutes later, "ifconfig up enp2s0" on the PC-B again.
--client1 reconnect to server successful, and it's send msg to server ok.
--client2 send msg to server ok.
--server recv msg from client1 ok.
--server recv msg from client2 ok.

Testcase 3: TIPC protocol + ZMQ REQ-REP mode, ifconfig down/up enp2s0

PC-A(server): ./zsrv "tipc://{5566,5566,5566}" 64 20000000
PC-B(client1): ./zcli "tipc://{5566,5566}" 64 1000000 22
PC-C(client2): ./zcli "tipc://{5566,5566}" 64 1000000 33

step1) Running server, client1, client2 by order
step2) Start to send and recv msg
--client1 send msg to server ok.
--client2 send msg to server ok.
--server recv msg from client1 ok.
--server recv msg from client2 ok.
step3) "ifconfig down enp2s0" on the PC-B.
--client1 send msg to server failed, and starting reconnect.
--client2 send msg to server ok.
--server cannot recv msg from client1.
--server recv msg from client2 ok.
step4) About 3 minutes later, "ifconfig up enp2s0" on the PC-B again.
--client1 reconnect to server successful, and it's send msg to server ok.
--client2 send msg to server ok.
--server recv msg from client1 ok.
--server recv msg from client2 ok.

Testcase 4: TIPC protocol + ZMQ REQ-REP mode, Unplug/plug in cable

PC-A(server): ./zsrv "tipc://{5566,5566,5566}" 64 20000000
PC-B(client1): ./zcli "tipc://{5566,5566}" 64 1000000 22
PC-C(client2): ./zcli "tipc://{5566,5566}" 64 1000000 33

step1) Running server, client1, client2 by order
step2) Start to send and recv msg
--client1 send msg to server ok.
--client2 send msg to server ok.
--server recv msg from client1 ok.
--server recv msg from client2 ok.
step3) Unplug the network cable on the PC-B.
--client1 send msg to server failed, and starting reconnect.
--client2 send msg to server ok.
--server cannot recv msg from client1.
--server recv msg from client2 ok.
step4) About 3 minutes later, plug in the network cable on the PC-B again.
--client1 reconnect failed, and never successfully reconnects to the server.
--client2 send msg to server ok.
--server cannot recv msg from client1.
--server recv msg from client2 ok.

What's the actual result? (include assertion message & call stack if applicable)

Testcase 1: TCP protocol + ZMQ REQ-REP mode, Unplug/plug in cable
-- Actual Result: reconnect successful, send-recv msg OK.
Testcase 2: TCP protocol + ZMQ REQ-REP mode, ifconfig down/up enp2s0
-- Actual Result: reconnect successful, send-recv msg OK.
Testcase 3: TICP protocol + ZMQ REQ-REP mode, ifconfig down/up enp2s0
-- Actual Result: reconnect failed, cannot send-recv msg.
Testcase 4: TICP protocol + ZMQ REQ-REP mode, Unplug/plug in cable
-- Actual Result: reconnect successful, send-recv msg OK.


More information

dmesg

[ 2499.780165] tg3 0000:02:00.0 enp2s0: Link is down
[ 2499.780303] tipc: Resetting bearer eth:enp2s0
[ 2503.876417] tg3 0000:02:00.0 enp2s0: Link is up at 10 Mbps, half duplex
[ 2503.876420] tg3 0000:02:00.0 enp2s0: Flow control is off for TX and off for RX

[ 2516.164569] tg3 0000:02:00.0 enp2s0: Link is down
[ 2516.164782] tipc: Resetting bearer eth:enp2s0
[ 2538.692414] tg3 0000:02:00.0 enp2s0: Link is up at 10 Mbps, half duplex
[ 2538.692418] tg3 0000:02:00.0 enp2s0: Flow control is off for TX and off for RX

[ 2565.316161] tg3 0000:02:00.0 enp2s0: Link is down
[ 2565.316284] tipc: Resetting bearer eth:enp2s0
[ 2651.332415] tg3 0000:02:00.0 enp2s0: Link is up at 10 Mbps, half duplex
[ 2651.332419] tg3 0000:02:00.0 enp2s0: Flow control is off for TX and off for RX

[ 3262.660203] tg3 0000:02:00.0 enp2s0: Link is down
[ 3262.660649] tipc: Resetting bearer eth:enp2s0
[ 3280.068423] tg3 0000:02:00.0 enp2s0: Link is up at 10 Mbps, half duplex
[ 3280.068427] tg3 0000:02:00.0 enp2s0: Flow control is off for TX and off for RX

lspci

lspci
00:00.0 Host bridge: Intel Corporation 4 Series Chipset DRAM Controller (rev 03)
00:01.0 PCI bridge: Intel Corporation 4 Series Chipset PCI Express Root Port (rev 03)
00:02.0 VGA compatible controller: Intel Corporation 4 Series Chipset Integrated Graphics Controller (rev 03)
00:02.1 Display controller: Intel Corporation 4 Series Chipset Integrated Graphics Controller (rev 03)
00:1b.0 Audio device: Intel Corporation NM10/ICH7 Family High Definition Audio Controller (rev 01)
00:1c.0 PCI bridge: Intel Corporation NM10/ICH7 Family PCI Express Port 1 (rev 01)
00:1d.0 USB controller: Intel Corporation NM10/ICH7 Family USB UHCI Controller #1 (rev 01)
00:1d.1 USB controller: Intel Corporation NM10/ICH7 Family USB UHCI Controller #2 (rev 01)
00:1d.2 USB controller: Intel Corporation NM10/ICH7 Family USB UHCI Controller #3 (rev 01)
00:1d.3 USB controller: Intel Corporation NM10/ICH7 Family USB UHCI Controller #4 (rev 01)
00:1d.7 USB controller: Intel Corporation NM10/ICH7 Family USB2 EHCI Controller (rev 01)
00:1e.0 PCI bridge: Intel Corporation 82801 PCI Bridge (rev e1)
00:1f.0 ISA bridge: Intel Corporation 82801GB/GR (ICH7 Family) LPC Interface Bridge (rev 01)
00:1f.1 IDE interface: Intel Corporation 82801G (ICH7 Family) IDE Controller (rev 01)
00:1f.2 IDE interface: Intel Corporation NM10/ICH7 Family SATA Controller [IDE mode] (rev 01)
00:1f.3 SMBus: Intel Corporation NM10/ICH7 Family SMBus Controller (rev 01)
02:00.0 Ethernet controller: Broadcom Inc. and subsidiaries NetLink BCM57780 Gigabit Ethernet PCIe (rev 01)
root@ubuntu:~#

modinfo

root@ubuntu:~# modinfo tipc
filename: /lib/modules/5.4.0-65-generic/kernel/net/tipc/tipc.ko
version: 2.0.0
license: Dual BSD/GPL
description: TIPC: Transparent Inter Process Communication
srcversion: 5860C79AD1D4E43A3B2189C
depends: udp_tunnel,ip6_udp_tunnel
retpoline: Y
intree: Y
name: tipc
vermagic: 5.4.0-65-generic SMP mod_unload
sig_id: PKCS#7
signer: Build time autogenerated kernel key
sig_key: 44:6A:A8:96:83:1E:3C:56:C1:0F:55:7B:7B:95:7A:1F:F9:6B:72:D6
sig_hashalgo: sha512
signature: 28:FF:C8:75:E9:F5:5E:6F:24:52:80:56:1F:C3:18:89:0A:E2:05:9B:
47:4E:2D:5C:0B:7B:F2:04:7A:96:10:D3:EA:10:7E:71:AD:EF:A7:B4:
89:7A:B5:2E:51:0D:11:CA:B4:26:9F:0F:A1:AA:B1:36:41:F8:BF:71:
1A:82:98:FB:5D:BB:FC:1F:BA:6C:02:67:70:69:5B:00:9A:E7:EE:5B:
73:43:FD:E0:F3:97:99:3E:39:47:28:5E:46:80:72:64:0B:90:A6:37:
58:5A:4C:C8:80:C4:69:BB:26:F4:3D:1F:70:54:AF:E4:B1:2B:FC:06:
54:68:49:35:7A:44:76:56:4A:BF:47:38:C5:AD:F5:08:E4:43:00:C0:
C4:87:10:C8:35:5F:FB:79:D7:33:04:1A:3D:AA:C7:B4:F7:EC:DF:EB:
4D:5A:49:D2:FF:43:E7:52:55:DB:FB:3F:87:D5:EC:CC:7F:C8:9D:30:
0F:8B:90:8E:C8:77:58:0D:55:DB:B9:47:82:F7:CE:E0:7F:AD:D4:61:
54:EC:8C:16:1A:6E:9C:49:D2:FF:25:8A:26:94:70:5A:60:F9:91:E2:
02:C5:32:CB:1F:FE:25:78:B1:39:85:6C:FC:2D:1B:63:E5:B5:BF:1D:
25:4F:6A:06:FA:CB:4B:4D:06:5B:83:55:D9:86:E0:93:13:5B:C1:B1:
65:D3:AA:28:AA:DE:AD:DD:46:10:28:31:2E:89:48:A8:1B:41:49:E3:
2B:78:9C:E1:97:89:DA:3E:08:EC:01:95:01:98:2D:7B:26:64:0E:44:
FF:2E:1A:A7:70:D3:51:71:74:F4:DF:42:13:A1:91:BE:11:5C:AE:06:
46:9B:F2:12:EB:68:77:D1:44:98:C9:E3:B7:0C:01:64:0C:A7:3D:A1:
25:D3:83:8F:CC:3B:3F:ED:D7:DC:92:36:7B:DF:95:06:3D:0A:97:D0:
F4:8E:02:CA:F1:F6:B9:76:4B:80:EB:B8:F9:E5:9D:9E:F6:82:A2:3B:
8B:ED:52:7F:98:16:68:23:23:00:E4:52:67:C4:9C:BB:3B:E2:7A:8B:
B8:2B:4F:5E:12:3A:2F:1C:C4:A9:07:A8:10:66:B5:05:FA:87:1E:E0:
B7:D6:10:8D:B4:5C:F2:9E:F1:0A:3A:13:90:06:0A:DD:30:33:CD:30:
B5:A5:39:CF:F0:03:AF:49:C6:51:75:4E:3C:2C:FE:96:0F:C6:60:6B:
4E:E3:BC:DD:D9:24:DE:C2:66:17:A1:FD:27:40:D4:5D:CD:73:C3:1A:
E6:17:A0:4E:8E:1E:1B:83:AE:90:AC:7D:7D:EC:39:00:70:C5:D5:9B:
F4:F3:04:3B:D3:B1:E7:8C:63:E4:13:A2

What's the expected result?

Testcase 1: TCP protocol + ZMQ REQ-REP mode, Unplug/plug in cable
-- Expected Result: reconnect successful, send-recv msg OK.
Testcase 2: TCP protocol + ZMQ REQ-REP mode, ifconfig down/up enp2s0
-- Expected Result: reconnect successful, send-recv msg OK.
Testcase 3: TICP protocol + ZMQ REQ-REP mode, ifconfig down/up enp2s0
-- Expected Result: reconnect successful, send-recv msg OK.
Testcase 4: TICP protocol + ZMQ REQ-REP mode, Unplug/plug in cable
-- Expected Result: reconnect successful, send-recv msg OK.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant