• Z
    tests/test-filter-redirector: Add unit test for filter-redirector · 9fd3c5d5
    Zhang Chen 提交于
    In this unit test,we will test the filter redirector function.
    
    Case 1, tx traffic flow:
    
    qemu side              | test side
                           |
    +---------+            |  +-------+
    | backend <---------------+ sock0 |
    +----+----+            |  +-------+
         |                 |
    +----v----+  +-------+ |
    |  rd0    +->+chardev| |
    +---------+  +---+---+ |
                     |     |
    +---------+      |     |
    |  rd1    <------+     |
    +----+----+            |
         |                 |
    +----v----+            |  +-------+
    |  rd2    +--------------->sock1  |
    +---------+            |  +-------+
                           +
    
    a. we(sock0) inject packet to qemu socket backend
    b. backend pass packet to filter redirector0(rd0)
    c. rd0 redirect packet to out_dev(chardev) which is connected with
    filter redirector1's(rd1) in_dev
    d. rd1 read this packet from in_dev, and pass to next filter redirector2(rd2)
    e. rd2 redirect packet to rd2's out_dev which is connected with an opened socketed(sock1)
    f. we read packet from sock1 and compare to what we inject
    
    Start qemu with:
    
    "-netdev socket,id=qtest-bn0,fd=%d "
    "-device rtl8139,netdev=qtest-bn0,id=qtest-e0 "
    "-chardev socket,id=redirector0,path=%s,server,nowait "
    "-chardev socket,id=redirector1,path=%s,server,nowait "
    "-chardev socket,id=redirector2,path=%s,nowait "
    "-object filter-redirector,id=qtest-f0,netdev=qtest-bn0,"
    "queue=tx,outdev=redirector0 "
    "-object filter-redirector,id=qtest-f1,netdev=qtest-bn0,"
    "queue=tx,indev=redirector2 "
    "-object filter-redirector,id=qtest-f2,netdev=qtest-bn0,"
    "queue=tx,outdev=redirector1 "
    
    --------------------------------------
    Case 2, rx traffic flow
    qemu side              | test side
                           |
    +---------+            |  +-------+
    | backend +---------------> sock1 |
    +----^----+            |  +-------+
         |                 |
    +----+----+  +-------+ |
    |  rd0    +<-+chardev| |
    +---------+  +---+---+ |
                     ^     |
    +---------+      |     |
    |  rd1    +------+     |
    +----^----+            |
         |                 |
    +----+----+            |  +-------+
    |  rd2    <---------------+sock0  |
    +---------+            |  +-------+
    
    a. we(sock0) insert packet to filter redirector2(rd2)
    b. rd2 pass packet to filter redirector1(rd1)
    c. rd1 redirect packet to out_dev(chardev) which is connected with
       filter redirector0's(rd0) in_dev
    d. rd0 read this packet from in_dev, and pass ti to qemu backend which is
       connected with an opened socketed(sock1)
    e. we read packet from sock1 and compare to what we inject
    
    Start qemu with:
    
    "-netdev socket,id=qtest-bn0,fd=%d "
    "-device rtl8139,netdev=qtest-bn0,id=qtest-e0 "
    "-chardev socket,id=redirector0,path=%s,server,nowait "
    "-chardev socket,id=redirector1,path=%s,server,nowait "
    "-chardev socket,id=redirector2,path=%s,nowait "
    "-object filter-redirector,id=qtest-f0,netdev=qtest-bn0,"
    "queue=rx,outdev=redirector0 "
    "-object filter-redirector,id=qtest-f1,netdev=qtest-bn0,"
    "queue=rx,indev=redirector2 "
    "-object filter-redirector,id=qtest-f2,netdev=qtest-bn0,"
    "queue=rx,outdev=redirector1 "
    Signed-off-by: NZhang Chen <zhangchen.fnst@cn.fujitsu.com>
    Signed-off-by: NWen Congyang <wency@cn.fujitsu.com>
    Signed-off-by: NLi Zhijian <lizhijian@cn.fujitsu.com>
    Signed-off-by: NJason Wang <jasowang@redhat.com>
    9fd3c5d5
Makefile 33.1 KB