~ntt-pf-lab/nova/monkey_patch_notification

« back to all changes in this revision

Viewing changes to vendor/boto/boto/sdb/persist/test_persist.py

  • Committer: Jesse Andrews
  • Date: 2010-05-28 06:05:26 UTC
  • Revision ID: git-v1:bf6e6e718cdc7488e2da87b21e258ccc065fe499
initial commit

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
from boto.sdb.persist.object import SDBObject
 
2
from boto.sdb.persist.property import StringProperty, PositiveIntegerProperty, IntegerProperty
 
3
from boto.sdb.persist.property import BooleanProperty, DateTimeProperty, S3KeyProperty
 
4
from boto.sdb.persist.property import ObjectProperty, StringListProperty
 
5
from boto.sdb.persist.property import PositiveIntegerListProperty, BooleanListProperty, ObjectListProperty
 
6
from boto.sdb.persist import Manager
 
7
from datetime import datetime
 
8
import time
 
9
 
 
10
#
 
11
# This will eventually be moved to the boto.tests module and become a real unit test
 
12
# but for now it will live here.  It shows examples of each of the Property types in
 
13
# use and tests the basic operations.
 
14
#
 
15
class TestScalar(SDBObject):
 
16
 
 
17
    name = StringProperty()
 
18
    description = StringProperty()
 
19
    size = PositiveIntegerProperty()
 
20
    offset = IntegerProperty()
 
21
    foo = BooleanProperty()
 
22
    date = DateTimeProperty()
 
23
    file = S3KeyProperty()
 
24
 
 
25
class TestRef(SDBObject):
 
26
 
 
27
    name = StringProperty()
 
28
    ref = ObjectProperty(ref_class=TestScalar)
 
29
 
 
30
class TestSubClass1(TestRef):
 
31
 
 
32
    answer = PositiveIntegerProperty()
 
33
 
 
34
class TestSubClass2(TestScalar):
 
35
 
 
36
    flag = BooleanProperty()
 
37
 
 
38
class TestList(SDBObject):
 
39
 
 
40
    names = StringListProperty()
 
41
    numbers = PositiveIntegerListProperty()
 
42
    bools = BooleanListProperty()
 
43
    objects = ObjectListProperty(ref_class=TestScalar)
 
44
    
 
45
def test1():
 
46
    s = TestScalar()
 
47
    s.name = 'foo'
 
48
    s.description = 'This is foo'
 
49
    s.size = 42
 
50
    s.offset = -100
 
51
    s.foo = True
 
52
    s.date = datetime.now()
 
53
    s.save()
 
54
    return s
 
55
 
 
56
def test2(ref_name):
 
57
    s = TestRef()
 
58
    s.name = 'testref'
 
59
    rs = TestScalar.find(name=ref_name)
 
60
    s.ref = rs.next()
 
61
    s.save()
 
62
    return s
 
63
 
 
64
def test3():
 
65
    s = TestScalar()
 
66
    s.name = 'bar'
 
67
    s.description = 'This is bar'
 
68
    s.size = 24
 
69
    s.foo = False
 
70
    s.date = datetime.now()
 
71
    s.save()
 
72
    return s
 
73
 
 
74
def test4(ref1, ref2):
 
75
    s = TestList()
 
76
    s.names.append(ref1.name)
 
77
    s.names.append(ref2.name)
 
78
    s.numbers.append(ref1.size)
 
79
    s.numbers.append(ref2.size)
 
80
    s.bools.append(ref1.foo)
 
81
    s.bools.append(ref2.foo)
 
82
    s.objects.append(ref1)
 
83
    s.objects.append(ref2)
 
84
    s.save()
 
85
    return s
 
86
 
 
87
def test5(ref):
 
88
    s = TestSubClass1()
 
89
    s.answer = 42
 
90
    s.ref = ref
 
91
    s.save()
 
92
    # test out free form attribute
 
93
    s.fiddlefaddle = 'this is fiddlefaddle'
 
94
    s._fiddlefaddle = 'this is not fiddlefaddle'
 
95
    return s
 
96
 
 
97
def test6():
 
98
    s = TestSubClass2()
 
99
    s.name = 'fie'
 
100
    s.description = 'This is fie'
 
101
    s.size = 4200
 
102
    s.offset = -820
 
103
    s.foo = False
 
104
    s.date = datetime.now()
 
105
    s.flag = True
 
106
    s.save()
 
107
    return s
 
108
 
 
109
def test(domain_name):
 
110
    print 'Initialize the Persistance system'
 
111
    Manager.DefaultDomainName = domain_name
 
112
    print 'Call test1'
 
113
    s1 = test1()
 
114
    # now create a new instance and read the saved data from SDB
 
115
    print 'Now sleep to wait for things to converge'
 
116
    time.sleep(5)
 
117
    print 'Now lookup the object and compare the fields'
 
118
    s2 = TestScalar(s1.id)
 
119
    assert s1.name == s2.name
 
120
    assert s1.description == s2.description
 
121
    assert s1.size == s2.size
 
122
    assert s1.offset == s2.offset
 
123
    assert s1.foo == s2.foo
 
124
    #assert s1.date == s2.date
 
125
    print 'Call test2'
 
126
    s2 = test2(s1.name)
 
127
    print 'Call test3'
 
128
    s3 = test3()
 
129
    print 'Call test4'
 
130
    s4 = test4(s1, s3)
 
131
    print 'Call test5'
 
132
    s6 = test6()
 
133
    s5 = test5(s6)
 
134
    domain = s5._manager.domain
 
135
    item1 = domain.get_item(s1.id)
 
136
    item2 = domain.get_item(s2.id)
 
137
    item3 = domain.get_item(s3.id)
 
138
    item4 = domain.get_item(s4.id)
 
139
    item5 = domain.get_item(s5.id)
 
140
    item6 = domain.get_item(s6.id)
 
141
    return [(s1, item1), (s2, item2), (s3, item3), (s4, item4), (s5, item5), (s6, item6)]