Commit bc169fef authored by Adrian Reber's avatar Adrian Reber Committed by Andrei Vagin

RPC: add script to test the new RPC version interface

This script connects to 'criu swrk' and asks for the version. If running
from a git checkout the output would look like this:

 $ ./version.py
 Connecting to CRIU in swrk mode to check the version:
 RPC: Success
 CRIU major 2
 CRIU minor 12
 CRIU gitid v2.12-635-g6d3ae4d

If not running from git checkout it looks like this:

 $ ./version.py
 Connecting to CRIU in swrk mode to check the version:
 RPC: Success
 CRIU major 2
 CRIU minor 12

If running with a CRIU binary which does not support the VERSION
command:

 $ ./version.py
 Connecting to CRIU in swrk mode to check the version:
 Error (cr-service.c:116): RPC error: Invalid req: Success
 RPC: Unexpected msg type
Signed-off-by: 's avatarAdrian Reber <areber@redhat.com>
Signed-off-by: 's avatarAndrei Vagin <avagin@virtuozzo.com>
parent 9d2e1dfe
#!/usr/bin/python2
import socket
import sys
import rpc_pb2 as rpc
import argparse
import subprocess
print('Connecting to CRIU in swrk mode to check the version:')
css = socket.socketpair(socket.AF_UNIX, socket.SOCK_SEQPACKET)
swrk = subprocess.Popen(['./criu', "swrk", "%d" % css[0].fileno()])
css[0].close()
s = css[1]
# Create criu msg, set it's type to dump request
# and set dump options. Checkout more options in protobuf/rpc.proto
req = rpc.criu_req()
req.type = rpc.VERSION
# Send request
s.send(req.SerializeToString())
# Recv response
resp = rpc.criu_resp()
MAX_MSG_SIZE = 1024
resp.ParseFromString(s.recv(MAX_MSG_SIZE))
if resp.type != rpc.VERSION:
print('RPC: Unexpected msg type')
sys.exit(-1)
else:
if resp.success:
print('RPC: Success')
print('CRIU major %d' % resp.version.major)
print('CRIU minor %d' % resp.version.minor)
if resp.version.HasField('gitid'):
print('CRIU gitid %s' % resp.version.gitid)
if resp.version.HasField('sublevel'):
print('CRIU sublevel %s' % resp.version.sublevel)
if resp.version.HasField('extra'):
print('CRIU extra %s' % resp.version.extra)
if resp.version.HasField('name'):
print('CRIU name %s' % resp.version.name)
else:
print 'Fail'
sys.exit(-1)
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment