aboutsummaryrefslogtreecommitdiffstats
path: root/tools/xenstore/testsuite/08transaction.sh
blob: 2c23ed249677f7baec04e7883908a07d30ad4d32 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#! /bin/sh
# Test transactions.

# Simple transaction: create a file inside transaction.
[ "`echo -e '1 start /
1 write /entry1 create contents
2 dir /
1 dir /
1 commit
2 read /entry1' | ./xs_test`" = "1:entry1
2:contents" ]
echo rm /entry1 | ./xs_test

# Create a file and abort transaction.
[ "`echo -e '1 start /
1 write /entry1 create contents
2 dir /
1 dir /
1 abort
2 dir /' | ./xs_test`" = "1:entry1" ]

echo write /entry1 create contents | ./xs_test
# Delete in transaction, commit
[ "`echo -e '1 start /
1 rm /entry1
2 dir /
1 dir /
1 commit
2 dir /' | ./xs_test`" = "2:entry1" ]

# Delete in transaction, abort.
echo write /entry1 create contents | ./xs_test
[ "`echo -e '1 start /
1 rm /entry1
2 dir /
1 dir /
1 abort
2 dir /' | ./xs_test`" = "2:entry1
2:entry1" ]

# Transactions can take as long as the want...
[ "`echo -e 'start /
sleep 1
rm /entry1
commit
dir /' | ./xs_test`" = "" ]

# ... as long as noone is waiting.
[ "`echo -e '1 start /
2 mkdir /dir
1 mkdir /dir
1 dir /
1 commit' | ./xs_test 2>&1`" = "1:dir
FATAL: 1: commit: Connection timed out" ]