summaryrefslogtreecommitdiff
path: root/cpp/demo/Freeze/backup/expect.py
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/demo/Freeze/backup/expect.py')
-rwxr-xr-xcpp/demo/Freeze/backup/expect.py108
1 files changed, 108 insertions, 0 deletions
diff --git a/cpp/demo/Freeze/backup/expect.py b/cpp/demo/Freeze/backup/expect.py
new file mode 100755
index 00000000000..1b37cdc5718
--- /dev/null
+++ b/cpp/demo/Freeze/backup/expect.py
@@ -0,0 +1,108 @@
+#!/usr/bin/env python
+# **********************************************************************
+#
+# Copyright (c) 2003-2007 ZeroC, Inc. All rights reserved.
+#
+# This copy of Ice is licensed to you under the terms described in the
+# ICE_LICENSE file included in this distribution.
+#
+# **********************************************************************
+
+import pexpect, sys, os
+
+try:
+ import demoscript
+except ImportError:
+ for toplevel in [".", "..", "../..", "../../..", "../../../.."]:
+ toplevel = os.path.normpath(toplevel)
+ if os.path.exists(os.path.join(toplevel, "demoscript")):
+ break
+ else:
+ raise "can't find toplevel directory!"
+ sys.path.append(os.path.join(toplevel))
+ import demoscript
+
+import demoscript.Util
+import signal, time
+
+print "cleaning databases...",
+sys.stdout.flush()
+os.system('rm -fr db.save')
+demoscript.Util.cleanDbDir("db/data")
+demoscript.Util.cleanDbDir("db/logs")
+os.system('rm -fr db/__*')
+for d in os.listdir('.'):
+ if d.startswith('hotbackup'):
+ os.system('rm -rf %s' % (d))
+print "ok"
+
+client = demoscript.Util.spawn('./client')
+
+print "populating map...",
+sys.stdout.flush()
+client.expect('Updating map', timeout=60)
+time.sleep(3) # Let the client do some work for a bit.
+print "ok"
+
+
+print "performing full backup...",
+sys.stdout.flush()
+backup = demoscript.Util.spawn('./backup full')
+backup.expect('hot backup started', timeout=30)
+backup.expect(pexpect.EOF, timeout=30)
+assert backup.wait() == 0
+print "ok"
+
+print "sleeping 5s...",
+sys.stdout.flush()
+time.sleep(5)
+print "ok"
+
+print "performing incremental backup...",
+sys.stdout.flush()
+backup = demoscript.Util.spawn('./backup incremental')
+backup.expect('hot backup started', timeout=30)
+backup.expect(pexpect.EOF, timeout=30)
+print "ok"
+
+print "sleeping 30s...",
+sys.stdout.flush()
+time.sleep(30)
+print "ok"
+
+assert os.path.isdir('hotbackup')
+
+print "killing client with SIGTERM...",
+sys.stdout.flush()
+client.kill(signal.SIGTERM)
+client.expect(pexpect.EOF, timeout=30)
+assert client.wait() != 0
+print "ok"
+
+print "Client output: ",
+print "%s " % (client.before)
+
+print "restarting client...",
+sys.stdout.flush()
+os.system('rm -fr db/data/* db/logs/* db/__*')
+os.system('cp -Rp hotbackup/* db')
+sys.stdout.flush()
+
+rclient = demoscript.Util.spawn('./client')
+rclient.expect('(.*)Updating map', timeout=60)
+assert rclient.match.group(1).find('Creating new map') == -1
+print "ok"
+
+print "sleeping 5s...",
+sys.stdout.flush()
+time.sleep(5)
+print "ok"
+
+print "killing client with SIGTERM...",
+rclient.kill(signal.SIGTERM)
+rclient.expect(pexpect.EOF, timeout=30)
+assert rclient.wait() != 0
+print "ok"
+
+print "Restarted client output:",
+print "%s " % (rclient.before)