r15345: Add a read-only test to tdb torture tester.
[Samba.git] / source4 / scripting / swig / torture / torture_tdb.py
blob7f97caf6cbdda4308feb66257f0cf84dd78ed1ca
1 #!/usr/bin/python
3 import sys, os
4 import Tdb
6 def fail(msg):
7 print 'FAILED:', msg
8 sys.exit(1)
10 tdb_file = '/tmp/torture_tdb.tdb'
12 # Create temporary tdb file
14 t = Tdb.Tdb(tdb_file, flags = Tdb.CLEAR_IF_FIRST)
16 # Check non-existent key throws KeyError exception
18 try:
19 t['__none__']
20 except KeyError:
21 pass
22 else:
23 fail('non-existent key did not throw KeyError')
25 # Check storing key
27 t['bar'] = '1234'
28 if t['bar'] != '1234':
29 fail('store key failed')
31 # Check key exists
33 if not t.has_key('bar'):
34 fail('has_key() failed for existing key')
36 if t.has_key('__none__'):
37 fail('has_key() succeeded for non-existent key')
39 # Delete key
41 try:
42 del(t['__none__'])
43 except KeyError:
44 pass
45 else:
46 fail('delete of non-existent key did not throw KeyError')
48 del t['bar']
49 if t.has_key('bar'):
50 fail('delete of existing key did not delete key')
52 # Clear all keys
54 t.clear()
55 if len(t) != 0:
56 fail('clear failed to remove all keys')
58 # Other dict functions
60 t['a'] = '1'
61 t['ab'] = '12'
62 t['abc'] = '123'
64 if len(t) != 3:
65 fail('len method produced wrong value')
67 keys = t.keys()
68 values = t.values()
69 items = t.items()
71 if set(keys) != set(['a', 'ab', 'abc']):
72 fail('keys method produced wrong values')
74 if set(values) != set(['1', '12', '123']):
75 fail('values method produced wrong values')
77 if set(items) != set([('a', '1'), ('ab', '12'), ('abc', '123')]):
78 fail('values method produced wrong values')
80 t.close()
82 # Re-open read-only
84 t = Tdb.Tdb(tdb_file, open_flags = os.O_RDONLY)
85 t.keys()
86 t.close()
88 # Clean up
90 os.unlink(tdb_file)