22 _suites = [
'all',
'cclass']
26 sys.path.append(
"../cma")
29 from frameinfo
import *
30 from AssimCclasses
import *
33 from AssimCtypes
import proj_class_incr_debug, proj_class_decr_debug
36 CheckForDanglingClasses =
True
37 WorstDanglingCount = 0
41 global CheckForDanglingClasses
42 global WorstDanglingCount
46 if count > WorstDanglingCount
and CheckForDanglingClasses:
47 WorstDanglingCount = count
49 raise AssertionError,
"Dangling C-class objects - %d still around" % count
52 "A pyNetAddr is a network address of some kind... - let's test it"
54 if DEBUG:
print >>sys.stderr,
"===============test_constructor(pyNetAddrTest)"
59 ipv6 =
pyNetAddr((1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16),)
60 self.assertEqual(str(ipv4),
"1.2.3.4")
61 self.assertEqual(str(ipv4b),
"1.2.3.5")
62 self.assertEqual(str(mac48),
"01:02:03:04:05:06")
63 self.assertEqual(str(mac64),
"01:02:03:04:05:06:07:08")
64 self.assertFalse(ipv4 != ipv4)
65 self.assertTrue(ipv4 == ipv4)
66 self.assertTrue(mac48 == mac48)
67 self.assertTrue(mac64 == mac64)
68 self.assertFalse(ipv4 == ipv4b)
69 self.assertFalse(ipv4 == mac48)
70 self.assertFalse(mac48 == ipv4)
71 self.assertFalse(ipv4 == mac64)
72 self.assertFalse(mac64 == ipv4)
73 self.assertFalse(mac48 == mac64)
74 self.assertFalse(mac64 == mac48)
75 self.assertRaises(ValueError, pyNetAddr, (1,))
76 self.assertRaises(ValueError, pyNetAddr, (1,2,))
77 self.assertRaises(ValueError, pyNetAddr, (1,2,3))
78 self.assertRaises(ValueError, pyNetAddr, (1,2,3,4,5))
79 self.assertRaises(ValueError, pyNetAddr, (1,2,3,4,5,6,7))
80 self.assertRaises(ValueError, pyNetAddr, (1,2,3,4,5,6,7,8,9))
81 self.assertRaises(ValueError, pyNetAddr, (1,2,3,4,5,6,7,8,9,10))
82 self.assertRaises(ValueError, pyNetAddr, (1,2,3,4,5,6,7,8,9,10,11))
83 self.assertRaises(ValueError, pyNetAddr, (1,2,3,4,5,6,7,8,9,10,11,12))
84 self.assertRaises(ValueError, pyNetAddr, (1,2,3,4,5,6,7,8,9,10,11,12,13))
85 self.assertRaises(ValueError, pyNetAddr, (1,2,3,4,5,6,7,8,9,10,11,12,13,14))
86 self.assertRaises(ValueError, pyNetAddr, (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15))
87 self.assertRaises(ValueError, pyNetAddr, (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17))
90 'Test if various ipv4 addresses are equal'
98 'Test if various ipv6 addresses are equal'
107 'Test if various ipv4/v6 addresses are equal to each other'
112 self.assertEqual(
pyNetAddr((0,0,0,0,0,0,0,0,0,0, 0xff, 0xff, 127, 0, 0, 1),),
pyNetAddr(
'::1'))
115 'Test if various ipv4/v6 addresses hash to the same values - or not'
118 self.assertEqual(
pyNetAddr(
'[::1]:80').__hash__(),
pyNetAddr(
'127.0.0.1:80').__hash__())
119 self.assertNotEqual(
pyNetAddr(
'[::1]:80').__hash__(),
pyNetAddr(
'127.0.0.1:1984').__hash__())
121 self.assertEqual(
pyNetAddr(
'[::ffff:7f00:1]:25').__hash__(),
pyNetAddr(
'[::1]:25').__hash__())
122 self.assertNotEqual(
pyNetAddr(
'[::ffff:7f00:1]:25').__hash__(),
pyNetAddr(
'[::1]:26').__hash__())
124 self.assertEqual(
pyNetAddr(
'::ffff:7f00:1').__hash__(),
pyNetAddr(
'127.0.0.1').__hash__())
125 self.assertEqual(
pyNetAddr((0,0,0,0,0,0,0,0,0,0, 0xff, 0xff, 127, 0, 0, 1),).__hash__(),
pyNetAddr(
'::1').__hash__())
128 'Test the str() function for ipv6 - worth a separate test.'
129 if DEBUG:
print >>sys.stderr,
"===============test_ipv6_str(pyNetAddrTest)"
130 ipv6 =
pyNetAddr((0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0),)
131 self.assertEqual(str(ipv6),
"::")
132 ipv6 =
pyNetAddr((0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,01),)
133 self.assertEqual(str(ipv6),
"::1")
134 ipv6 =
pyNetAddr((0,0,0,0,0,0,0,0,0,0,0,0,0,0,01,02),)
135 self.assertEqual(str(ipv6),
"::102")
136 ipv6 =
pyNetAddr((0,0,0,1,0,2,0,3,0,4,0,5,0,6,0,7),)
137 self.assertEqual(str(ipv6),
"0:1:2:3:4:5:6:7")
138 ipv6 =
pyNetAddr((0,0,0,0,0,2,0,3,0,4,0,5,0,6,0,7),)
139 self.assertEqual(str(ipv6),
"::2:3:4:5:6:7")
143 ipv6 =
pyNetAddr((0,0,0,0,0,0,0,0,0,0,255,255,192,0,2,128),)
144 self.assertEqual(str(ipv6),
"::ffff:192.0.2.128")
147 'Test constructing ipv4 addresses from strings.'
148 if DEBUG:
print >>sys.stderr,
"===============test_ipv4_strinit(pyNetAddrTest)"
150 self.assertEqual(str(ipv4),
'1.2.3.4')
152 self.assertEqual(str(ipv4),
'1.2.3.5')
154 self.assertEqual(str(ipv4),
'1.2.3.4:80')
156 self.assertEqual(str(ipv4),
'1.2.3.5:80')
157 self.assertRaises(ValueError, pyNetAddr,
'1.2.ff.5')
158 self.assertRaises(ValueError, pyNetAddr,
'1.2.3.4:')
159 self.assertRaises(ValueError, pyNetAddr,
'1.2.3.4:ff')
162 'Test converting IPv4 addresses to IPv6'
163 ipstr=
'213.138.100.204:57225'
165 self.assertEqual(str(ipv4),ipstr)
167 self.assertEqual(str(ipv6),
'[::ffff:213.138.100.204]:57225')
169 self.assertEqual(str(ipv6),
'[::ffff:213.138.100.204]:57225')
171 self.assertEqual(str(ipv6),
'[::ffff:213.138.100.204]:57225')
173 ipstr=
'213.138.100.255:65535'
175 self.assertEqual(str(ipv4),ipstr)
177 self.assertEqual(str(ipv6),
'[::ffff:213.138.100.255]:65535')
179 self.assertEqual(str(ipv6),
'[::ffff:213.138.100.255]:65535')
181 self.assertEqual(str(ipv6),
'[::ffff:213.138.100.255]:65535')
183 ipstr=
'255.255.255.255:65535'
185 self.assertEqual(str(ipv4),ipstr)
187 self.assertEqual(str(ipv6),
'[::ffff:255.255.255.255]:65535')
189 self.assertEqual(str(ipv6),
'[::ffff:255.255.255.255]:65535')
191 self.assertEqual(str(ipv6),
'[::ffff:255.255.255.255]:65535')
194 'Test constructing ipv6 addresses from strings.'
198 if DEBUG:
print >>sys.stderr,
"===============test_ipv6_strinit(pyNetAddrTest)"
200 self.assertEqual(str(ipv6),
'::1')
203 self.assertEqual(str(ipv6),
'::')
206 self.assertEqual(str(ipv6),
'0:1:2:3:4:5:6:7')
209 self.assertEqual(str(ipv6),
'::2:3:4:5:6:7')
212 self.assertEqual(str(ipv6),
'[::]:1984')
215 self.assertEqual(str(ipv6),
'[::1]:80')
217 ipv6 =
pyNetAddr(
'[0:1:2:3:4:5:6:7]:8080')
218 self.assertEqual(str(ipv6),
'[0:1:2:3:4:5:6:7]:8080')
221 self.assertEqual(str(ipv6),
'::2:3:4:5:6:7')
224 self.assertEqual(str(ipv6),
'::a:b:c:d:e:f')
227 self.assertEqual(str(ipv6),
'::ffff:1.2.3.4')
230 self.assertEqual(str(ipv6),
'[::ffff:1.2.3.4]:80')
232 ipv6 =
pyNetAddr(
'[::ffff:255.255.255.255]:65535')
233 self.assertEqual(str(ipv6),
'[::ffff:255.255.255.255]:65535')
235 self.assertRaises(ValueError, pyNetAddr,
'0:1:2:3:4:5:6:7::')
236 self.assertRaises(ValueError, pyNetAddr,
'::fffff')
237 self.assertRaises(ValueError, pyNetAddr,
'[0:1:2:3:4:5:6:7]10')
238 self.assertRaises(ValueError, pyNetAddr,
'[0:1:2:3:4:5:6:7]:ff')
239 self.assertRaises(ValueError, pyNetAddr,
'0:1:2:3:4:5g:6:7')
240 self.assertRaises(ValueError, pyNetAddr,
'[0:1:2:3:4:5g:6:7]:10')
241 self.assertRaises(ValueError, pyNetAddr,
'ffff:1.2.3.256')
242 self.assertRaises(ValueError, pyNetAddr,
'ffff:1.2.3:4')
243 self.assertRaises(ValueError, pyNetAddr,
'[ffff:1.2.3:4]:99')
244 self.assertRaises(ValueError, pyNetAddr,
'[ffff:1.2.3.4]:65536')
254 '''Frames are our basic superclass for things we put on the wire.
255 This base class just has a generic binary blob with no special
256 properties. They are all valid (if they have a value)'''
258 if DEBUG:
print >>sys.stderr,
"===============test_constructor(pyFrameTest)"
260 self.assertEqual(pyf.frametype(), 100)
261 self.assertTrue(pyf.isvalid())
264 if DEBUG:
print >>sys.stderr,
"===============test_setvalue(pyFrameTest)"
267 self.assertTrue(pyf.isvalid(),
"PyFrame('fred') failed isvalid())")
268 self.assertEqual(pyf.framelen(), 5)
269 self.assertEqual(pyf.dataspace(), 9)
270 self.assertEqual(string_at(pyf.framevalue()),
'fred')
277 'An AddrFrame wraps a NetAddr for sending on the wire'
279 if DEBUG:
print >>sys.stderr,
"===============test_constructor(pyAddrFrameTest)"
281 self.assertEqual(pyf.frametype(), 200)
282 self.assertEqual(pyf.framelen(), 6)
283 self.assertEqual(str(pyf),
'pyAddrFrame(200, (1.2.3.4))')
284 self.assertEqual(pyf.addrtype(), 1)
285 self.assertTrue(pyf.isvalid(),
"AddrFrame(200, (1,2,3,4)) failed isvalid()")
286 self.assertRaises(ValueError, pyAddrFrame, 201, addrstring=(1,2,3))
294 'An IpPortFrame wraps a NetAddr (with port!) for sending on the wire'
296 if DEBUG:
print >>sys.stderr,
'===============test_constructor(pyIpPortFrameTest1)'
299 self.assertEqual(py4.frametype(), 201)
300 self.assertEqual(py4.framelen(), 8)
301 self.assertEqual(str(py4),
'201: IpPortFrame(201, 1.2.3.4:1984)')
302 self.assertEqual(py4.addrtype(), 1)
303 self.assertTrue(py4.isvalid(),
'pyIpPortFrame(201, (1.2.3.4:1984)) failed isvalid()')
304 self.assertRaises(ValueError, pyIpPortFrame, 201,
pyNetAddr((1,2,3,4,5,6),))
307 self.assertEqual(py6.frametype(), 302)
308 self.assertEqual(py6.framelen(), 20)
309 self.assertEqual(str(py6),
'302: IpPortFrame(302, [::1]:79)')
317 'An AddrFrame wraps a NetAddr *with a port* for sending on the wire'
319 if DEBUG:
print >>sys.stderr,
"===============test_constructor(pyIpAddrFrameTest)"
321 self.assertEqual(pyf.frametype(), 200)
322 self.assertEqual(pyf.framelen(), 8)
323 self.assertEqual(str(pyf),
'200: IpPortFrame(200, 1.2.3.4:1984)')
324 self.assertEqual(pyf.getnetaddr(),
pyNetAddr(
'1.2.3.4:1984'))
325 self.assertEqual(pyf.addrtype(), 1)
326 self.assertTrue(pyf.isvalid(),
"pyIpPortFrame(200, (1,2,3,4:1984)) failed isvalid()")
327 self.assertRaises(ValueError, pyIpPortFrame, 201, (1,2,3),80)
328 pyf =
pyIpPortFrame(202, (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16), 1984)
329 self.assertEqual(pyf.frametype(), 202)
330 self.assertEqual(pyf.framelen(), 20)
331 self.assertEqual(pyf.addrtype(), 2)
332 self.assertTrue(pyf.isvalid(),
'pyIpPortFrame(202, ([102:304:506:708:90a:b0c:d0e:f10]:1984))')
333 self.assertEqual(str(pyf),
'202: IpPortFrame(202, [102:304:506:708:90a:b0c:d0e:f10]:1984)')
334 sameaddr =
pyNetAddr([0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10], port=1984)
335 self.assertEqual(pyf.getnetaddr(), sameaddr)
337 self.assertEqual(str(pyf),
'202: IpPortFrame(202, [102:304:506:708:90a:b0c:d0e:f10]:1984)')
338 self.assertEqual(pyf.getnetaddr(), sameaddr)
346 'An IntFrame wraps various sizes of unsigned integers for sending on the wire'
348 if DEBUG:
print >>sys.stderr,
"========================test_constructor(pyIntFrameTest)"
350 for size
in (5, 6, 7, 9, 10):
351 self.assertRaises(ValueError, pyIntFrame, 300+size-1, intbytes=size)
353 for size
in (1, 2, 3, 4, 8):
354 pyf =
pyIntFrame(310+size, initval=42, intbytes=size)
355 self.assertTrue(pyf.isvalid())
356 self.assertEqual(pyf.intlength(), size)
357 self.assertEqual(int(pyf), 42)
358 self.assertEqual(str(pyf),
'pyIntFrame(%d, (42))' % (310+size))
361 'Test setting integer values for all the size integers'
362 if DEBUG:
print >>sys.stderr,
"========================test_set(pyIntFrameTest)"
363 for size
in (1, 2, 3, 4, 8):
364 pyf =
pyIntFrame(320, initval=0, intbytes=size)
367 self.assertEqual(int(pyf), val)
368 self.assertEqual(str(pyf), (
'pyIntFrame(320, (%d))' % val))
376 "An unknown frame is one we don't recognize the type of."
378 if DEBUG:
print >>sys.stderr,
"========================test_constructor(pyUnknownFrameTest)"
380 self.assertEqual(pyf.frametype(), 400)
382 self.assertFalse(pyf.isvalid(),
"pyUnkownFrame(400) should not have passed isvalid()")
390 'A SeqnoFrame is a frame wrapping an ordered pair for a sequence number'
392 if DEBUG:
print >>sys.stderr,
"========================test_constructor(pySeqnoFrameTest)"
394 self.assertEqual(pyf.frametype(), 500)
395 self.assertTrue(pyf.isvalid(),
'pySeqnoFrame(500) did not pass isvalid()')
397 self.assertEqual(pyf.frametype(), 501)
398 self.assertTrue(pyf.isvalid(),
'pySeqnoFrame(501) did not pass isvalid()')
401 'reqid is the request id of a sequence number'
402 if DEBUG:
print >>sys.stderr,
"========================test_reqid(pySeqnoFrameTest)"
405 self.assertTrue(pyf.getreqid, 42)
407 self.assertTrue(pyf.getreqid, 43)
410 'qid is analogous to a port - it is the id of a queue on the other side'
411 if DEBUG:
print >>sys.stderr,
"========================test_qid(pySeqnoFrameTest)"
414 self.assertTrue(pyf.getqid, 6)
416 self.assertTrue(pyf.getqid, 7)
419 'A bit of overkill, but nothing really wrong with it'
420 if DEBUG:
print >>sys.stderr,
"========================test_equal(pySeqnoFrameTest)"
427 self.assertTrue(seqFrame1 == seqFrame1)
428 self.assertTrue(seqFrame1 == seqFrame1b)
429 self.assertTrue(seqFrame1b == seqFrame1)
430 self.assertFalse(seqFrame1 == seqFrame2)
431 self.assertFalse(seqFrame1 == seqFrame3)
432 self.assertFalse(seqFrame1 == seqFrame4)
433 self.assertFalse(seqFrame1 == seqFrame4b)
434 self.assertFalse(seqFrame2 == seqFrame1)
435 self.assertFalse(seqFrame2 == seqFrame1b)
436 self.assertFalse(seqFrame2 == seqFrame1)
437 self.assertTrue (seqFrame2 == seqFrame2)
438 self.assertFalse(seqFrame2 == seqFrame3)
439 self.assertFalse(seqFrame2 == seqFrame4)
440 self.assertFalse(seqFrame1 == seqFrame4b)
441 self.assertFalse(seqFrame3 == seqFrame1)
442 self.assertFalse(seqFrame3 == seqFrame1b)
443 self.assertFalse(seqFrame3 == seqFrame1)
444 self.assertFalse(seqFrame3 == seqFrame2)
445 self.assertTrue (seqFrame3 == seqFrame3)
446 self.assertFalse(seqFrame3 == seqFrame4)
447 self.assertFalse(seqFrame3 == seqFrame4b)
448 self.assertFalse(seqFrame4 == seqFrame1)
449 self.assertFalse(seqFrame4 == seqFrame1b)
450 self.assertFalse(seqFrame4 == seqFrame1)
451 self.assertFalse(seqFrame4 == seqFrame2)
452 self.assertFalse(seqFrame4 == seqFrame3)
453 self.assertTrue (seqFrame4 == seqFrame4)
454 self.assertTrue (seqFrame4 == seqFrame4b)
455 self.assertTrue(seqFrame4b == seqFrame4)
463 '''A CstringFrame is a frame which can only hold NUL-terminated C strings.
464 The last byte must be the one and only NUL character in a CstringFrame value.'''
466 if DEBUG:
print >>sys.stderr,
"========================test_constructor(pyCstringFrameTest)"
468 self.assertTrue(pyf.isvalid())
469 self.assertEqual(str(pyf),
'600: CstringFrame(600, "Hello, World.")')
471 self.assertFalse(pyf2.isvalid())
473 self.assertTrue(pyf2.isvalid())
474 self.assertEqual(str(pyf2),
'601: CstringFrame(601, "42")')
481 'A SignFrame is a digital signature frame.'
483 if DEBUG:
print >>sys.stderr,
"========================test_constructor(pySignFrameTest)"
485 self.assertTrue(pyf.isvalid())
486 self.assertRaises(ValueError, pySignFrame, 935)
494 'A FrameSet is a collection of frames - typically to be sent over the wire'
499 s = re.sub(
' at 0x[^{}]*',
' at 0xsomewhere', s)
503 if DEBUG:
print >>sys.stderr,
"========================test_constructor(pyFrameSetTest)"
505 self.assertEqual(pyf.get_framesettype(), 700)
508 if DEBUG:
print >>sys.stderr,
"========================test_flags(pyFrameSetTest)"
509 'Flags are bit masks, to be turned on or off. They are 16-bits only.'
511 self.assertEqual(pyf.get_flags(), 0x00)
513 self.assertEqual(pyf.get_flags(), 0x01)
515 self.assertEqual(pyf.get_flags(), 0x01)
517 self.assertEqual(pyf.get_flags(), 0x03)
518 pyf.clear_flags(0x01)
519 self.assertEqual(pyf.get_flags(), 0x02)
520 pyf.set_flags(0x0fffffffffffffffff)
521 self.assertEqual(pyf.get_flags(), 0x0ffff)
522 pyf.clear_flags(0x5555)
523 self.assertEqual(pyf.get_flags(), 0x0AAAA)
526 'Build a FrameSet using append and verify that it gets built right'
527 if DEBUG:
print >>sys.stderr,
"========================test_buildlistforward(pyFrameSetTest)"
534 pyIpPortFrame(202, (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16), 1984)
538 self.assertEqual(len(pyfs), 7)
543 for frame
in pyfs.iter():
545 for i
in range(0,len(ylist)):
549 self.assertEqual(f.frametype(), y.frametype())
550 self.assertEqual(type(f), type(y))
551 self.assertEqual(str(f), str(y))
554 pyfs.construct_packet(sign)
557 for frame
in pyfs.iter():
559 self.assertEqual(len(pyfs), 9)
560 self.assertEqual(len(ylist), len(pyfs))
561 for i
in range(0,len(flist)):
565 self.assertEqual(f.frametype(), y.frametype())
566 self.assertEqual(type(f), type(y))
568 self.assertEqual(ylist[0].frametype(), 1)
569 self.assertEqual(ylist[8].frametype(), 0)
572 '''Build a FrameSet using prepend and verify that it gets built right.
573 Similar to the append testing above, but backwards ;-)'''
574 if DEBUG:
print >>sys.stderr,
"========================test_buildlistbackwards(pyFrameSetTest)"
577 flist = (
pyFrame(708),
pyAddrFrame(709, (42,42,42,42)),
pyIntFrame(710,42),
pyCstringFrame(711,
"HhGttG"),
581 self.assertEqual(len(pyfs), 5)
584 for frame
in pyfs.iter():
586 for i
in range(0,len(flist)):
590 self.assertEqual(f.frametype(), y.frametype())
591 self.assertEqual(type(f), type(y))
592 self.assertEqual(f.__class__, y.__class__)
593 if DEBUG:
print >>sys.stderr,
"Classes are", f.__class__,
"lens are", f.framelen(), y.framelen()
594 self.assertEqual(f.framelen(), y.framelen())
597 'Build a FrameSet, then make it into a packet, and make a frameset list out of the packet'
598 if DEBUG:
print >>sys.stderr,
"========================test_buildpacket(pyFrameSetTest)"
602 pyIntFrame(FrameTypes.CINTVAL,3000000, intbytes=4),
603 pyIntFrame(FrameTypes.CINTVAL,3000000000000, intbytes=8),
605 pyIpPortFrame(FrameTypes.IPPORT, (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16), 1984),
606 pyIntFrame(FrameTypes.CINTVAL,4242, intbytes=3))
607 if DEBUG:
print >>sys.stderr,
"flist:", flist
611 pyfs.construct_packet(sign)
612 if DEBUG:
print >>sys.stderr,
"packet constructed"
614 for frame
in pyfs.iter():
616 if DEBUG:
print >>sys.stderr,
"xlist constructed"
617 pktdata = pyfs.getpacket()
618 if DEBUG:
print >>sys.stderr,
"getpacket done", pktdata
619 cp_pyfs = decoder.fslist_from_pktdata(pktdata)
620 if DEBUG:
print >>sys.stderr,
"decoder done", cp_pyfs
623 for frame
in fs0.iter():
625 for i
in range(0,len(xlist)):
628 self.assertEqual(x.frametype(), y.frametype())
629 self.assertEqual(x.framelen(), y.framelen())
630 self.assertEqual(x.dataspace(), y.dataspace())
631 self.assertEqual(type(x), type(y))
632 self.assertEqual(x.__class__, y.__class__)
634 strx = re.sub(str(x),
' instance at .*>',
' instance at -somewhere- >')
635 stry = re.sub(str(y),
' instance at .*>',
' instance at -somewhere- >')
636 self.assertEqual(strx, stry)
637 self.assertEqual(pyFrameSetTest.cmpstring(x), pyFrameSetTest.cmpstring(y))
647 if DEBUG:
print >>sys.stderr,
"===============test_constructor(pyConfigContextTest)"
651 self.assertEqual(foo.getint(
'int1'), 42)
652 self.assertEqual(foo.getstring(
'str1'),
'forty-two')
653 self.assertRaises(IndexError, foo.getaddr, (
'int1'))
654 self.assertRaises(IndexError, foo.getstring, (
'int1'))
655 self.assertRaises(IndexError, foo.getaddr, (
'str1'))
656 self.assertRaises(IndexError, foo.getframe, (
'str1'))
657 self.assertRaises(IndexError, foo.getframe, (
'int1'))
658 self.assertEqual(foo[
'int1'], 42)
659 self.assertEqual(foo[
'str1'],
'forty-two')
660 self.assertEqual(foo.getint(
'fred'), -1)
662 self.assertEqual(foo[
'bar'],
pyNetAddr((1,2,3,4),))
663 self.assertEqual(str(foo[
'bar']),
'1.2.3.4')
664 self.assertEqual(str(foo[
'csf']),
'42: CstringFrame(42, "41+1")')
665 self.assertEqual(str(foo),
'{"bar":"1.2.3.4","csf":"CstringFrame(42, \\"41+1\\")","int1":42,"str1":"forty-two"}')
667 foo[
'isf'] =
pyIntFrame(310, initval=42, intbytes=3)
668 if DEBUG:
print >>sys.stderr,
"test_constructor.18(pyConfigContextTest)"
669 self.assertEqual(str(foo),
670 '{"bar":"1.2.3.4","csf":"CstringFrame(42, \\"41+1\\")","int1":42,"isf":"IntFrame(310, 3, 42)","str1":"forty-two"}')
671 if DEBUG:
print >>sys.stderr,
"test_constructor.19(pyConfigContextTest)"
674 if DEBUG:
print >>sys.stderr,
"test_string(pyConfigContextTest)"
676 foo[
'arthur'] =
'dent'
677 foo[
'seven'] =
'ofnine'
678 foo[
'JeanLuc'] =
'Picard'
679 foo[
'important'] =
'towel'
681 self.assertEqual(foo[
'arthur'],
'dent')
682 self.assertEqual(foo[
'seven'],
'ofnine')
683 self.assertEqual(foo[
'JeanLuc'],
'Picard')
684 self.assertEqual(foo[
'important'],
'towel')
685 self.assertRaises(IndexError, foo.getstring, (
'towel'))
686 self.assertEqual(str(foo),
'{"JeanLuc":"Picard","arthur":"dent","important":"towel","integer":42,"seven":"ofnine"}')
688 self.assertEqual(foo[
'seven'],
'7')
689 self.assertEqual(type(foo[
'seven']), str)
690 foo[
'JeanLuc'] =
'Locutus'
691 self.assertEqual(foo[
'JeanLuc'],
'Locutus')
692 self.assertEqual(str(foo),
'{"JeanLuc":"Locutus","arthur":"dent","important":"towel","integer":42,"seven":"7"}')
695 if DEBUG:
print >>sys.stderr,
"test_int(pyConfigContextTest)"
699 self.assertEqual(foo[
'arthur'], 42)
700 self.assertEqual(foo[
'seven'], 9)
701 self.assertEqual(str(foo),
'{"arthur":42,"seven":9}')
703 self.assertEqual(type(foo[
'seven']), int)
704 self.assertEqual(foo[
"seven"], 7)
705 self.assertEqual(str(foo),
'{"arthur":42,"seven":7}')
708 if DEBUG:
print >>sys.stderr,
"========================test_child_ConfigContext(pyConfigContextTest)"
710 foo[
'ford'] =
'prefect'
712 baz[
'Kathryn'] =
'Janeway'
713 baz[
'there\'s no place like'] =
pyNetAddr((127,0,0,1),)
717 if DEBUG:
print >>sys.stderr,
"EQUAL TEST"
718 self.assertEqual(str(bar),
'{"hhgttg":{"ford":"prefect"},"voyager":{"Kathryn":"Janeway","there\'s no place like":"127.0.0.1"}}')
720 if DEBUG:
print >>sys.stderr,
"JSON TEST"
722 if DEBUG:
print >>sys.stderr,
"JSON COMPARE"
723 self.assertEqual(str(bar), str(bar2))
724 self.assertEqual(bar[
"voyager"][
"Kathryn"],
"Janeway")
725 self.assertEqual(bar[
"hhgttg"][
"ford"],
"prefect")
726 self.assertEqual(bar2[
"voyager"][
"Kathryn"],
"Janeway")
727 self.assertEqual(bar2[
"hhgttg"][
"ford"],
"prefect")
728 if DEBUG:
print >>sys.stderr,
"COMPARE DONE"
730 if DEBUG:
print >>sys.stderr,
"END OF ========================test_child_ConfigContext(pyConfigContextTest)"
734 if DEBUG:
print >>sys.stderr,
"===============test_keys(pyConfigContextTest)"
736 foo[
'arthur'] =
'dent'
737 foo[
'seven'] =
'ofnine'
738 foo[
'JeanLuc'] =
'Picard'
739 foo[
'important'] =
'towel'
741 self.assertEqual(str(foo.keys()),
"['JeanLuc', 'arthur', 'important', 'integer', 'seven']")
744 if DEBUG:
print >>sys.stderr,
"===============textConfigContext_array(pyConfigContextTest)"
745 array1str =
'{"a":[1,2,3,4,"a",{"b":true},[5,6,7,8,3.14]]}'
747 self.assertEqual(array1str, str(array1config))
750 'This problem actually occurred - hence the test case...'
751 if DEBUG:
print >>sys.stderr,
"===============textConfigContext_array_with_netaddr(pyConfigContextTest)"
752 array1str =
'{"a":["1.2.3.4",1,2,3,4,"a",{"b":true},[5,6,7,8,3.14,"10.10.10.1"],"::1"]}'
753 array1str =
'{"a":["1.2.3.4"]}'
756 self.assertEqual(array1str, str(array1config))
765 '{"cmdline":["192.168.122.1"]}',
767 '{"cmdline":["/usr/sbin/dnsmasq","-u","libvirt-dnsmasq","--strict-order","--bind-interfaces","--pid-file=/var/run/libvirt/network/default.pid","--conf-file=","--except-interface","lo","--listen-address","192.168.122.1"]}',
768 '{"cmdline":["--listen-address","192.168.122.1"]}',
769 '{"cmdline":["/usr/sbin/dnsmasq","-u","libvirt-dnsmasq","--strict-order","--bind-interfaces","--pid-file=/var/run/libvirt/network/default.pid","--conf-file=","--except-interface","lo","--listen-address","192.168.122.1","--dhcp-range","192.168.122.2,192.168.122.254","--dhcp-leasefile=/var/lib/libvirt/dnsmasq/default.leases","--dhcp-lease-max=253","--dhcp-no-override" ]}',
770 '{"cmdline":["--listen-address","192.168.122.1","--dhcp-range","192.168.122.2,192.168.122.254","--dhcp-leasefile=/var/lib/libvirt/dnsmasq/default.leases","--dhcp-lease-max=253","--dhcp-no-override" ]}',
771 '{"cmdline":["--listen-address","192.168.122.1","--dhcp-range"]}',
772 '{"cmdline":["192.168.122.1","--dhcp-range"]}',
773 '{"cmdline":["192.168.122.1","anything"]}',
774 '{"cmdline":["192.168.122.1",1]}',
775 '{"cmdline":["192.168.122.1",false]}',
778 if DEBUG:
print >>sys.stderr, (
'Creating pyConfigContext("%s")' % s)
780 if DEBUG: rint >>sys.stderr, (
'sc.keys() == %s' % sc.keys())
781 for key
in sc.keys():
783 if DEBUG:
print >>sys.stderr, (
'Looking at key %s: sc[key] = %s' % (key, sc[key]))
785 if DEBUG:
print >>sys.stderr, (
'Looking at element %s' % str(elem))
786 self.assertNotEqual(str(elem),
"")
787 if isinstance(elem, pyAssimObj):
788 if DEBUG:
print '++++++++++++++++++ REFCOUNT(%s): %d' % (str(elem), elem.refcount())
790 self.assertEqual(elem.refcount(), 2)
793 print >>sys.stderr,
":::::::::::::GC GARBAGE: %s" % gc.garbage
795 while (hasattr(foo,
'baseclass')):
798 print >>sys.stderr,
":::::::::::::GC refcount %d, REFERRERS: %s" % (sys.getrefcount(elem), gc.get_referrers(elem))
799 print >>sys.stderr,
":::::::::::::FOO: %s" % foo
801 if DEBUG:
print '++++++++++++++++++ REFCOUNT SECOND VERSE: %s' % (foo._refcount)
815 if DEBUG:
print >>sys.stderr,
"========================test_constructor(pyNetIOudpTest)"
818 self.assertTrue(io.getfd() > 2)
821 if DEBUG:
print >>sys.stderr,
"========================test_members(pyNetIOudpTest)"
823 self.assertTrue(io.getmaxpktsize() > 65000)
824 self.assertTrue(io.getmaxpktsize() < 65535)
825 io.setmaxpktsize(1500)
826 self.assertEqual(io.getmaxpktsize(), 1500)
831 if DEBUG:
print >>sys.stderr,
"========================test_send(pyNetIOudpTest)"
835 pyIntFrame(FrameTypes.PORTNUM,3000000, intbytes=4),
836 pyIntFrame(FrameTypes.HBINTERVAL,3000000000000, intbytes=8),
838 pyIntFrame(FrameTypes.CINTVAL,4242, intbytes=3))
842 io.sendframesets(home, fs)
843 io.sendframesets(home, (fs,fs,fs))
846 if DEBUG:
print >>sys.stderr,
"========================test_receiveandsend(pyNetIOudpTest)"
852 pyAddrFrame(FrameTypes.IPADDR,(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16)),
853 pyIntFrame(FrameTypes.HBINTERVAL,3000000, intbytes=4),
854 pyIntFrame(FrameTypes.HBDEADTIME,3000000000000, intbytes=8),
856 pyIntFrame(FrameTypes.PORTNUM,4242, intbytes=3))
861 io.sendframesets(home, fs)
862 (addr, framesetlist) = io.recvframesets()
864 self.assertEqual(addr, home)
865 self.assertEqual(len(framesetlist), 1)
867 for frame
in framesetlist[0].iter():
869 self.assertEqual(len(flist), len(ylist)-2)
870 for i
in range(0,len(flist)):
873 self.assertEqual(x.frametype(), y.frametype())
874 self.assertEqual(x.framelen(), y.framelen())
875 self.assertEqual(x.dataspace(), y.dataspace())
876 self.assertEqual(type(x), type(y))
877 self.assertEqual(x.__class__, y.__class__)
878 self.assertEqual(pyFrameSetTest.cmpstring(x), pyFrameSetTest.cmpstring(y))
884 if __name__ ==
"__main__":