File: aside.py

package info (click to toggle)
metakit 2.4.3-3
  • links: PTS
  • area: main
  • in suites: woody
  • size: 6,468 kB
  • ctags: 3,548
  • sloc: xml: 29,455; cpp: 23,339; sh: 9,051; tcl: 1,195; python: 577; makefile: 254; ansic: 14
file content (153 lines) | stat: -rw-r--r-- 2,876 bytes parent folder | download | duplicates (2)
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")