mirror of
https://github.com/checkpoint-restore/criu.git
synced 2026-07-18 00:58:31 +00:00
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: Adrian Reber <areber@redhat.com> Signed-off-by: Andrei Vagin <avagin@virtuozzo.com>
This commit is contained in:
parent
9d2e1dfebe
commit
bc169fefb1
1 changed files with 48 additions and 0 deletions
48
test/others/rpc/version.py
Executable file
48
test/others/rpc/version.py
Executable file
|
|
@ -0,0 +1,48 @@
|
|||
#!/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)
|
||||
Loading…
Add table
Add a link
Reference in a new issue