def test_cb_callback(self): cb1 = CollateBuffer(nant=NANT,npol=1,nchan=2048,nwin=1) cb2 = CollateBuffer(nant=NANT,npol=1,nchan=2048,nwin=1, sdisp=1, sdisp_destination_ip="192.168.1.196") def callback(i,j,pol,t,data, flags): global data_in_readout data_in_readout = True cb1.set_callback(callback) bs = BufferSocket() bs.set_callback(cb1) bs.start(PORT) xengs = [sim.XEngine(nant=NANT,npol=1,nchan=2048,engine_id=x, intlen=1562500) \ for x in range(NANT)] xstreams = [x.get_pkt_stream() for x in xengs] timestamp = None cnt = 0 while True: for x in xstreams: pkt = x.next() pkt.currerr = cnt cnt += 1 if timestamp is None: timestamp = pkt.timestamp if pkt.timestamp > timestamp + 2: break loopback(pkt.pack(), port=PORT) cb2.collate_packet(pkt) time.sleep(.0001) if pkt.timestamp > timestamp + 2: break bs.stop() self.assertTrue(data_in_readout)
def dtest_set_unset_callback(self): def callback(s): pass self.bs.set_callback(callback) self.bs.unset_callback() cb = CollateBuffer(nant=8,npol=1,nchan=2048,nwin=1) self.bs.set_callback(cb) self.bs.unset_callback() self.assertRaises(TypeError, self.bs.set_callback, (None,))
def dtest_all_data(self): cb = CollateBuffer(nant=NANT,npol=1,nchan=2048,nwin=1) def callback(i,j,pol,t,data,flags): self.assertTrue(n.all(flags == 0)) cb.set_callback(callback) bs = BufferSocket() bs.set_callback(cb) bs.start(PORT) xengs = [sim.XEngine(nant=NANT,npol=1,nchan=2048,engine_id=x) \ for x in range(NANT)] xstreams = [x.get_pkt_stream() for x in xengs] timestamp = None while True: for x in xstreams: pkt = x.next() if timestamp is None: timestamp = pkt.timestamp if pkt.timestamp > timestamp + 2: break loopback(pkt.pack(), port=PORT) time.sleep(.0001) if pkt.timestamp > timestamp + 2: break bs.stop()
def test_readout(self): cb = CollateBuffer(nant=NANT, npol=1, nchan=2048, nwin=1) xengs = [sim.XEngine(nant=NANT,npol=1,nchan=2048,engine_id=x) \ for x in range(NANT)] xstreams = [x.get_pkt_stream() for x in xengs] timestamp = None def callback(i, j, pol, t, data, flags): self.assertEqual(data.shape, (2048, )) self.assertEqual(flags.shape, (2048, )) self.assertTrue(data.flags.owndata) self.assertTrue(flags.flags.owndata) data_r = n.array([sim.decode_32bit(d) \ for d in data.real.astype(n.int32)]) data_i = n.array([sim.decode_32bit(d) \ for d in data.imag.astype(n.int32)]) #print i,j,pol,t,flags.sum(), #print data_r[0,:], data_i[0,:] self.assertTrue(n.all(data_r[:, 0] == i)) # not enough dynamic range in float to resolve j #self.assertTrue(n.all(data_r[:,1] == j)) self.assertTrue(n.all(data_r[:, 2] == pol)) self.assertTrue(n.all(data_r[:, 3] == 0)) self.assertTrue(n.all(data_r[:, 4] == n.arange(2048))) self.assertTrue(n.all(data_i[:, 0] == i)) # not enough dynamic range in float to resolve j #self.assertTrue(n.all(data_i[:,1] == j)) self.assertTrue(n.all(data_i[:, 2] == pol)) self.assertTrue(n.all(data_i[:, 3] == 1)) self.assertTrue(n.all(data_i[:, 4] == n.arange(2048))) cb.set_callback(callback) while True: for x in xstreams: pkt = x.next() if timestamp is None: timestamp = pkt.timestamp if pkt.timestamp > timestamp + 2: break cb.collate_packet(pkt) if pkt.timestamp > timestamp + 2: break
def setUp(self): self.cb = CollateBuffer(nant=NANT, npol=1, nchan=2048, nwin=1)
def test_xeng_bl_order(self): for i in range(32): h = CollateBuffer(nant=i, npol=1, nchan=1, nwin=1) self.assertEqual(h.xeng_bl_order(), sim.get_bl_order(i))