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 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153
|
# The new MK 2.3 commit-aside feature, in Python
#
# Expected output:
# 1 2 3 ok
import os
import Mk4py
mk = Mk4py
def t1(): # add several rows using commit-aside
try: os.remove("_f.mk")
except: pass
try: os.remove("_f.mka")
except: pass
db = mk.storage("_f.mk", 1)
vw = db.getas("a[i:I]")
vw.append(i=111)
vw.append(i=222)
vw.append(i=333)
db.commit()
del db
db = mk.storage("_f.mk", 0)
vw = db.view("a")
assert len(vw) == 3
dba = mk.storage("_f.mka", 1)
db.aside(dba)
vw = db.view("a")
assert len(vw) == 3
vw.append(i=444)
vw.append(i=555)
assert len(vw) == 5
db.commit()
dba.commit()
del db
del dba
db = mk.storage("_f.mk", 0)
vw = db.view("a")
assert len(vw) == 3 # now it has three rows
assert vw[0].i == 111
assert vw[1].i == 222
assert vw[2].i == 333
dba = mk.storage("_f.mka", 0)
db.aside(dba)
vw = db.view("a")
assert len(vw) == 5 # now it has five :)
assert vw[0].i == 111
assert vw[1].i == 222
assert vw[2].i == 333
assert vw[3].i == 444
assert vw[4].i == 555
def t2(): # add second property using commit-aside
try: os.remove("_f.mk")
except: pass
try: os.remove("_f.mka")
except: pass
db = mk.storage("_f.mk", 1)
vw = db.getas("a[i:I]")
vw.append(i=111)
db.commit()
del db
db = mk.storage("_f.mk", 0)
vw = db.view("a")
assert len(vw) == 1
dba = mk.storage("_f.mka", 1)
db.aside(dba)
vw = db.getas("a[i:I,j:I]")
assert len(vw) == 1
vw.append(i=222,j=333)
assert len(vw) == 2
db.commit()
dba.commit()
del db
del dba
db = mk.storage("_f.mk", 0)
vw = db.view("a")
assert len(vw) == 1 # now it has one property and row
assert len(vw.structure()) == 1
assert vw[0].i == 111
dba = mk.storage("_f.mka", 0)
db.aside(dba)
vw = db.view("a")
assert len(vw) == 2 # now it has two of both :)
assert len(vw.structure()) == 2
assert vw[0].i == 111
assert vw[0].j == 0
assert vw[1].i == 222
assert vw[1].j == 333
def t3(): # remove second property using commit-aside
try: os.remove("_f.mk")
except: pass
try: os.remove("_f.mka")
except: pass
db = mk.storage("_f.mk", 1)
vw = db.getas("a[i:I,j:I]")
vw.append(i=111,j=222)
db.commit()
del db
db = mk.storage("_f.mk", 0)
vw = db.view("a")
assert len(vw) == 1
dba = mk.storage("_f.mka", 1)
db.aside(dba)
vw = db.getas("a[i:I]")
assert len(vw) == 1
db.commit()
dba.commit()
del db
del dba
db = mk.storage("_f.mk", 0)
vw = db.view("a")
assert len(vw) == 1
assert len(vw.structure()) == 2 # now you see j
assert vw[0].i == 111
assert vw[0].j == 222
dba = mk.storage("_f.mka", 0)
db.aside(dba)
vw = db.view("a")
assert len(vw) == 1
assert len(vw.structure()) == 1 # now you don't :)
assert vw[0].i == 111
print 1,
t1()
print 2,
t2()
print 3,
t3()
print "ok"
os.remove("_f.mk")
os.remove("_f.mka")
|