at 18.09-beta 1.5 kB view raw
1import ./make-test.nix ({ ... } : 2 3let 4 node = { pkgs, ... } : { 5 networking = { 6 firewall = { 7 allowedUDPPorts = [ 4791 ]; # open RoCE port 8 allowedTCPPorts = [ 4800 ]; # port for test utils 9 }; 10 rxe = { 11 enable = true; 12 interfaces = [ "eth1" ]; 13 }; 14 }; 15 16 environment.systemPackages = with pkgs; [ rdma-core screen ]; 17 }; 18 19in { 20 name = "rxe"; 21 22 nodes = { 23 server = node; 24 client = node; 25 }; 26 27 testScript = '' 28 # Test if rxe interface comes up 29 $server->waitForUnit("default.target"); 30 $server->succeed("systemctl status rxe.service"); 31 $server->succeed("ibv_devices | grep rxe0"); 32 33 $client->waitForUnit("default.target"); 34 35 # ping pong test 36 $server->succeed("screen -dmS rc_pingpong ibv_rc_pingpong -p 4800 -g0"); 37 $client->succeed("sleep 2; ibv_rc_pingpong -p 4800 -g0 server"); 38 39 $server->succeed("screen -dmS uc_pingpong ibv_uc_pingpong -p 4800 -g0"); 40 $client->succeed("sleep 2; ibv_uc_pingpong -p 4800 -g0 server"); 41 42 $server->succeed("screen -dmS ud_pingpong ibv_ud_pingpong -p 4800 -s 1024 -g0"); 43 $client->succeed("sleep 2; ibv_ud_pingpong -p 4800 -s 1024 -g0 server"); 44 45 $server->succeed("screen -dmS srq_pingpong ibv_srq_pingpong -p 4800 -g0"); 46 $client->succeed("sleep 2; ibv_srq_pingpong -p 4800 -g0 server"); 47 48 $server->succeed("screen -dmS rping rping -s -a server -C 10"); 49 $client->succeed("sleep 2; rping -c -a server -C 10"); 50 ''; 51}) 52 53