Initial commit of OpenSPARC T2 architecture model.
[OpenSPARC-T2-SAM] / sam-t2 / devtools / amd64 / lib / python2.4 / test / test_MimeWriter.py
CommitLineData
920dae64
AT
1"""Test program for MimeWriter module.
2
3The test program was too big to comfortably fit in the MimeWriter
4class, so it's here in its own file.
5
6This should generate Barry's example, modulo some quotes and newlines.
7
8"""
9
10
11from MimeWriter import MimeWriter
12
13SELLER = '''\
14INTERFACE Seller-1;
15
16TYPE Seller = OBJECT
17 DOCUMENTATION "A simple Seller interface to test ILU"
18 METHODS
19 price():INTEGER,
20 END;
21'''
22
23BUYER = '''\
24class Buyer:
25 def __setup__(self, maxprice):
26 self._maxprice = maxprice
27
28 def __main__(self, kos):
29 """Entry point upon arrival at a new KOS."""
30 broker = kos.broker()
31 # B4 == Barry's Big Bass Business :-)
32 seller = broker.lookup('Seller_1.Seller', 'B4')
33 if seller:
34 price = seller.price()
35 print 'Seller wants $', price, '... '
36 if price > self._maxprice:
37 print 'too much!'
38 else:
39 print "I'll take it!"
40 else:
41 print 'no seller found here'
42''' # Don't ask why this comment is here
43
44STATE = '''\
45# instantiate a buyer instance and put it in a magic place for the KOS
46# to find.
47__kp__ = Buyer()
48__kp__.__setup__(500)
49'''
50
51SIMPLE_METADATA = [
52 ("Interpreter", "python"),
53 ("Interpreter-Version", "1.3"),
54 ("Owner-Name", "Barry Warsaw"),
55 ("Owner-Rendezvous", "bwarsaw@cnri.reston.va.us"),
56 ("Home-KSS", "kss.cnri.reston.va.us"),
57 ("Identifier", "hdl://cnri.kss/my_first_knowbot"),
58 ("Launch-Date", "Mon Feb 12 16:39:03 EST 1996"),
59 ]
60
61COMPLEX_METADATA = [
62 ("Metadata-Type", "complex"),
63 ("Metadata-Key", "connection"),
64 ("Access", "read-only"),
65 ("Connection-Description", "Barry's Big Bass Business"),
66 ("Connection-Id", "B4"),
67 ("Connection-Direction", "client"),
68 ]
69
70EXTERNAL_METADATA = [
71 ("Metadata-Type", "complex"),
72 ("Metadata-Key", "generic-interface"),
73 ("Access", "read-only"),
74 ("Connection-Description", "Generic Interface for All Knowbots"),
75 ("Connection-Id", "generic-kp"),
76 ("Connection-Direction", "client"),
77 ]
78
79
80def main():
81 import sys
82
83 # Toplevel headers
84
85 toplevel = MimeWriter(sys.stdout)
86 toplevel.addheader("From", "bwarsaw@cnri.reston.va.us")
87 toplevel.addheader("Date", "Mon Feb 12 17:21:48 EST 1996")
88 toplevel.addheader("To", "kss-submit@cnri.reston.va.us")
89 toplevel.addheader("MIME-Version", "1.0")
90
91 # Toplevel body parts
92
93 f = toplevel.startmultipartbody("knowbot", "801spam999",
94 [("version", "0.1")], prefix=0)
95 f.write("This is a multi-part message in MIME format.\n")
96
97 # First toplevel body part: metadata
98
99 md = toplevel.nextpart()
100 md.startmultipartbody("knowbot-metadata", "802spam999")
101
102 # Metadata part 1
103
104 md1 = md.nextpart()
105 md1.addheader("KP-Metadata-Type", "simple")
106 md1.addheader("KP-Access", "read-only")
107 m = MimeWriter(md1.startbody("message/rfc822"))
108 for key, value in SIMPLE_METADATA:
109 m.addheader("KPMD-" + key, value)
110 m.flushheaders()
111 del md1
112
113 # Metadata part 2
114
115 md2 = md.nextpart()
116 for key, value in COMPLEX_METADATA:
117 md2.addheader("KP-" + key, value)
118 f = md2.startbody("text/isl")
119 f.write(SELLER)
120 del md2
121
122 # Metadata part 3
123
124 md3 = md.nextpart()
125 f = md3.startbody("message/external-body",
126 [("access-type", "URL"),
127 ("URL", "hdl://cnri.kss/generic-knowbot")])
128 m = MimeWriter(f)
129 for key, value in EXTERNAL_METADATA:
130 md3.addheader("KP-" + key, value)
131 md3.startbody("text/isl")
132 # Phantom body doesn't need to be written
133
134 md.lastpart()
135
136 # Second toplevel body part: code
137
138 code = toplevel.nextpart()
139 code.startmultipartbody("knowbot-code", "803spam999")
140
141 # Code: buyer program source
142
143 buyer = code.nextpart()
144 buyer.addheader("KP-Module-Name", "BuyerKP")
145 f = buyer.startbody("text/plain")
146 f.write(BUYER)
147
148 code.lastpart()
149
150 # Third toplevel body part: state
151
152 state = toplevel.nextpart()
153 state.addheader("KP-Main-Module", "main")
154 state.startmultipartbody("knowbot-state", "804spam999")
155
156 # State: a bunch of assignments
157
158 st = state.nextpart()
159 st.addheader("KP-Module-Name", "main")
160 f = st.startbody("text/plain")
161 f.write(STATE)
162
163 state.lastpart()
164
165 # End toplevel body parts
166
167 toplevel.lastpart()
168
169
170main()