comparison env/lib/python3.9/site-packages/boto/sdb/db/test_db.py @ 0:4f3585e2f14b draft default tip

"planemo upload commit 60cee0fc7c0cda8592644e1aad72851dec82c959"
author shellac
date Mon, 22 Mar 2021 18:12:50 +0000
parents
children
comparison
equal deleted inserted replaced
-1:000000000000 0:4f3585e2f14b
1 import logging
2 import time
3 from datetime import datetime
4
5 from boto.sdb.db.model import Model
6 from boto.sdb.db.property import StringProperty, IntegerProperty, BooleanProperty
7 from boto.sdb.db.property import DateTimeProperty, FloatProperty, ReferenceProperty
8 from boto.sdb.db.property import PasswordProperty, ListProperty, MapProperty
9 from boto.exception import SDBPersistenceError
10
11 logging.basicConfig()
12 log = logging.getLogger('test_db')
13 log.setLevel(logging.DEBUG)
14
15 _objects = {}
16
17 #
18 # This will eventually be moved to the boto.tests module and become a real unit test
19 # but for now it will live here. It shows examples of each of the Property types in
20 # use and tests the basic operations.
21 #
22 class TestBasic(Model):
23
24 name = StringProperty()
25 size = IntegerProperty()
26 foo = BooleanProperty()
27 date = DateTimeProperty()
28
29 class TestFloat(Model):
30
31 name = StringProperty()
32 value = FloatProperty()
33
34 class TestRequired(Model):
35
36 req = StringProperty(required=True, default='foo')
37
38 class TestReference(Model):
39
40 ref = ReferenceProperty(reference_class=TestBasic, collection_name='refs')
41
42 class TestSubClass(TestBasic):
43
44 answer = IntegerProperty()
45
46 class TestPassword(Model):
47 password = PasswordProperty()
48
49 class TestList(Model):
50
51 name = StringProperty()
52 nums = ListProperty(int)
53
54 class TestMap(Model):
55
56 name = StringProperty()
57 map = MapProperty()
58
59 class TestListReference(Model):
60
61 name = StringProperty()
62 basics = ListProperty(TestBasic)
63
64 class TestAutoNow(Model):
65
66 create_date = DateTimeProperty(auto_now_add=True)
67 modified_date = DateTimeProperty(auto_now=True)
68
69 class TestUnique(Model):
70 name = StringProperty(unique=True)
71
72 def test_basic():
73 global _objects
74 t = TestBasic()
75 t.name = 'simple'
76 t.size = -42
77 t.foo = True
78 t.date = datetime.now()
79 log.debug('saving object')
80 t.put()
81 _objects['test_basic_t'] = t
82 time.sleep(5)
83 log.debug('now try retrieving it')
84 tt = TestBasic.get_by_id(t.id)
85 _objects['test_basic_tt'] = tt
86 assert tt.id == t.id
87 l = TestBasic.get_by_id([t.id])
88 assert len(l) == 1
89 assert l[0].id == t.id
90 assert t.size == tt.size
91 assert t.foo == tt.foo
92 assert t.name == tt.name
93 #assert t.date == tt.date
94 return t
95
96 def test_float():
97 global _objects
98 t = TestFloat()
99 t.name = 'float object'
100 t.value = 98.6
101 log.debug('saving object')
102 t.save()
103 _objects['test_float_t'] = t
104 time.sleep(5)
105 log.debug('now try retrieving it')
106 tt = TestFloat.get_by_id(t.id)
107 _objects['test_float_tt'] = tt
108 assert tt.id == t.id
109 assert tt.name == t.name
110 assert tt.value == t.value
111 return t
112
113 def test_required():
114 global _objects
115 t = TestRequired()
116 _objects['test_required_t'] = t
117 t.put()
118 return t
119
120 def test_reference(t=None):
121 global _objects
122 if not t:
123 t = test_basic()
124 tt = TestReference()
125 tt.ref = t
126 tt.put()
127 time.sleep(10)
128 tt = TestReference.get_by_id(tt.id)
129 _objects['test_reference_tt'] = tt
130 assert tt.ref.id == t.id
131 for o in t.refs:
132 log.debug(o)
133
134 def test_subclass():
135 global _objects
136 t = TestSubClass()
137 _objects['test_subclass_t'] = t
138 t.name = 'a subclass'
139 t.size = -489
140 t.save()
141
142 def test_password():
143 global _objects
144 t = TestPassword()
145 _objects['test_password_t'] = t
146 t.password = "foo"
147 t.save()
148 time.sleep(5)
149 # Make sure it stored ok
150 tt = TestPassword.get_by_id(t.id)
151 _objects['test_password_tt'] = tt
152 #Testing password equality
153 assert tt.password == "foo"
154 #Testing password not stored as string
155 assert str(tt.password) != "foo"
156
157 def test_list():
158 global _objects
159 t = TestList()
160 _objects['test_list_t'] = t
161 t.name = 'a list of ints'
162 t.nums = [1, 2, 3, 4, 5]
163 t.put()
164 tt = TestList.get_by_id(t.id)
165 _objects['test_list_tt'] = tt
166 assert tt.name == t.name
167 for n in tt.nums:
168 assert isinstance(n, int)
169
170 def test_list_reference():
171 global _objects
172 t = TestBasic()
173 t.put()
174 _objects['test_list_ref_t'] = t
175 tt = TestListReference()
176 tt.name = "foo"
177 tt.basics = [t]
178 tt.put()
179 time.sleep(5)
180 _objects['test_list_ref_tt'] = tt
181 ttt = TestListReference.get_by_id(tt.id)
182 assert ttt.basics[0].id == t.id
183
184 def test_unique():
185 global _objects
186 t = TestUnique()
187 name = 'foo' + str(int(time.time()))
188 t.name = name
189 t.put()
190 _objects['test_unique_t'] = t
191 time.sleep(10)
192 tt = TestUnique()
193 _objects['test_unique_tt'] = tt
194 tt.name = name
195 try:
196 tt.put()
197 assert False
198 except(SDBPersistenceError):
199 pass
200
201 def test_datetime():
202 global _objects
203 t = TestAutoNow()
204 t.put()
205 _objects['test_datetime_t'] = t
206 time.sleep(5)
207 tt = TestAutoNow.get_by_id(t.id)
208 assert tt.create_date.timetuple() == t.create_date.timetuple()
209
210 def test():
211 log.info('test_basic')
212 t1 = test_basic()
213 log.info('test_required')
214 test_required()
215 log.info('test_reference')
216 test_reference(t1)
217 log.info('test_subclass')
218 test_subclass()
219 log.info('test_password')
220 test_password()
221 log.info('test_list')
222 test_list()
223 log.info('test_list_reference')
224 test_list_reference()
225 log.info("test_datetime")
226 test_datetime()
227 log.info('test_unique')
228 test_unique()
229
230 if __name__ == "__main__":
231 test()