def testSetBusControllerSecondReturnType02(self): s = sat.Satellite() bc = busC.BusController() s.setBusController(bc) bc1 = busC.BusController() self.assertEqual(s.setBusController(bc1), False, 'setBusController does not set bus controller')
def testSetPollFrameInvalidrtListErrorMessage06(self): s = sat.Satellite() bc = busC.BusController() s.setBusController(bc) rtList = [56, 44] self.assertRaisesRegexp(Exception, "^BusController.setPollFrame:\s\s", bc.setPollFrame, (rtList))
def testSetPollFrameWithNonExistingRTErrorMessage01(self): s = sat.Satellite() bc = busC.BusController() s.setBusController(bc) rtList = [1] self.assertRaisesRegexp(Exception, "^BusController.setPollFrame:\s\s", bc.setPollFrame, (rtList))
def testSetPollFrameOnertListReturnValue03(self): s = sat.Satellite() bc = busC.BusController() s.setBusController(bc) s.addRemoteTerminal(rt=remT.RemoteTerminal(address=30)) rtList = [30] self.assertEqual(bc.setPollFrame(rtList), 1)
def testLaunchErrorType02(self): s = sat.Satellite() bc = busC.BusController() s.setBusController(bc) for i in range(1, 3): s.addRemoteTerminal(rt=remT.RemoteTerminal(address=i)) bc.setPollFrame(rtList=[1, 2]) self.assertRaises(ValueError, s.launch, (1.2))
def testSetPollFrameRepeatrtListReturnValue01(self): s = sat.Satellite() bc = busC.BusController() s.setBusController(bc) rt = remT.RemoteTerminal(address=1) s.addRemoteTerminal(rt) rtList = [1, 1] self.assertEqual(bc.setPollFrame(rtList), 2)
def testLaunchReturnValue03(self): s = sat.Satellite() bc = busC.BusController() s.setBusController(bc) for i in range(1, 6): s.addRemoteTerminal(rt=remT.RemoteTerminal(address=i)) bc.setPollFrame(rtList=[1, 2, 3, 4, 5]) self.assertEqual(s.launch(), 5, 'launch does not launch buscontroller')
def testPollPolled03(self): s = sat.Satellite() bc = busC.BusController() s.setBusController(bc) bc.setPollFrame(rtList=[]) bc.poll() self.assertEqual(bc.polledTerminals, [], 'Buscontroller does not poll properly')
def testPollReturnValue06(self): s = sat.Satellite() bc = busC.BusController() s.setBusController(bc) for i in range(1, 6): s.addRemoteTerminal(rt=remT.RemoteTerminal(address=i)) bc.setPollFrame(rtList=[1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 3]) self.assertEqual(bc.poll(), 3, 'Buscontroller does not poll properly')
def testSetPollFrameTwortListReturnValue02(self): s = sat.Satellite() bc = busC.BusController() s.setBusController(bc) s.addRemoteTerminal(rt=remT.RemoteTerminal(address=15)) s.addRemoteTerminal(rt=remT.RemoteTerminal(address=29)) rtList = [15, 29] self.assertEqual(bc.setPollFrame(rtList), 2)
def testLaunchPolledNo05(self): s = sat.Satellite() bc = busC.BusController() s.setBusController(bc) for i in range(1, 3): s.addRemoteTerminal(rt=remT.RemoteTerminal(address=i)) bc.setPollFrame(rtList=[1, 2]) s.launch(frameCount=5) self.assertEqual(s.polled, 5, 'launch does not launch buscontroller')
def testSetPollFrameWithNonExistingRTErrorType03(self): s = sat.Satellite() bc = busC.BusController() s.setBusController(bc) s.addRemoteTerminal(rt=remT.RemoteTerminal(address=1)) s.addRemoteTerminal(rt=remT.RemoteTerminal(address=4)) s.addRemoteTerminal(rt=remT.RemoteTerminal(address=8)) rtList = [1, 4, 6, 6, 8] self.assertRaises(ValueError, bc.setPollFrame, (rtList))
def testPollAscOrder02(self): s = sat.Satellite() bc = busC.BusController() s.setBusController(bc) for i in range(0, 30, -1): s.addRemoteTerminal(rt=remT.RemoteTerminal(address=i)) bc.setPollFrame(rtList=[]) bc.poll() self.assertEqual(sorted(bc.remoteTerminals), bc.polledTerminals, 'Buscontroller does not poll properly')
def testLaunchErrorMessage02(self): s = sat.Satellite() bc = busC.BusController() s.setBusController(bc) for i in range(1, 3): s.addRemoteTerminal(rt=remT.RemoteTerminal(address=i)) bc.setPollFrame(rtList=[1, 2]) s.launch(frameCount=5) self.assertRaisesRegexp(Exception, "^Satellite.launch:\s\s", s.launch, (1.2))
def testSetPollFrameWithNonExistingRTErrorMessage03(self): s = sat.Satellite() bc = busC.BusController() s.setBusController(bc) s.addRemoteTerminal(rt=remT.RemoteTerminal(address=1)) s.addRemoteTerminal(rt=remT.RemoteTerminal(address=4)) s.addRemoteTerminal(rt=remT.RemoteTerminal(address=8)) rtList = [1, 4, 6, 6, 8] self.assertRaisesRegexp(Exception, "^BusController.setPollFrame:\s\s", bc.setPollFrame, (rtList))
def testSetPollFrameFourrtListReturnValue(self): s = sat.Satellite() bc = busC.BusController() s.setBusController(bc) s.addRemoteTerminal(rt=remT.RemoteTerminal(address=1)) s.addRemoteTerminal(rt=remT.RemoteTerminal(address=6)) s.addRemoteTerminal(rt=remT.RemoteTerminal(address=27)) s.addRemoteTerminal(rt=remT.RemoteTerminal(address=29)) rtList = [1, 6, 27, 29] self.assertEqual(bc.setPollFrame(rtList), 4)
def testScenario(self): # Create some remote terminals rt1 = remT.RemoteTerminal(1) rt2 = remT.RemoteTerminal(2) rt3 = remT.RemoteTerminal(3) # Create a bus controller bc = busC.BusController() # Create a satellite and install the subsystems s = sat.Satellite() s.setBusController(bc) s.addRemoteTerminal(rt1) s.addRemoteTerminal(rt2) s.addRemoteTerminal(rt3) # Tell the bus controller the order in which to poll remote terminals pollFrame = [1, 2, 2, 3] bc.setPollFrame(pollFrame) # Start the subsystems s.launch()
def test100_020_ShouldPollAllRts(self): theBC = busC.BusController() self.sat.setBusController(theBC) self.assertEquals(3, theBC.poll())
def testSetPollFrameEmptyrtListReturnValue(self): bc = busC.BusController() rtList = [] self.assertEqual(bc.setPollFrame(rtList), 0)
def test100_010_ShouldPollSpecifiedRt(self): theBC = busC.BusController() self.sat.setBusController(theBC) theBC.setPollFrame([self.rt1.getAddress()]) self.assertEquals(1, theBC.poll())
def test100_010_ShouldDetermineApproximateBusBehavior(self): theBC = busC.BusController() self.sat.setBusController(theBC) theBC.setPollFrame([self.rt1.getAddress()]) # polling rt1: # Because this is a blackbox test at the satellite level, we don't have # direct visibility into exactly what is being written to the bus, # only how many words have been written. (NB: We have unit tests # at the component level that, presumably, pass. This gives us # confidence that the components work in isolation. What we # want to do now is get some degree of confidence that they work # when integrated together.) # What we know: # * the original specs say that a remote terminal has p(no service) = .5 # and p(service requested) = .5 # * if service is requested, then p(transmit) = .5 and p(receive) = .5 # * overall, this means that p(no service) = .5, p(transmit) = .25, # p(receive)=.25 # # * our scenarios specify that a remote terminal transmits/receives n words, # where n is the address # # Given this information: # 1. rt1 requests no service # BC requests status = 1 word # RT responds with status = 1 word # = 2 words # # 2. rt1 requests service, service is transmit command # BC requests status = 1 word # RT responds with status = 1 word # BC requests vector word = 1 word # RT responds with status + transmit command = 2 words # BC issues transmit command = 1 word # RT responds with status + 1 data word = 2 words # = 8 words # # 3. rt1 requests service, service is receive command # BC requests status = 1 word # RT responds with status = 1 word # BC requests vector word = 1 word # RT responds with status + receive command = 2 words # BC issues receive command + 1 data word = 2 word # RT responds with status = 1 words # = 8 words # # # Each time we run BusController.poll(), we will get 1 in return. # This doesn't give us much insight. # # But, we can run run Satellite.launch() and get an idea of whether our # software is approximating our expected behavior by examining the number # of words written to the bus. Given the probabilities above, # we expect, on the average, 5 words written each time RT1 is polled. # Alternative 1: Satellite.launch(n) should return n*5 sampleSize = 10000 averageWordCount = 5 expectedCount = float(sampleSize * averageWordCount) actualCount = float(self.sat.launch(sampleSize)) self.assertAlmostEquals( abs(actualCount - expectedCount) / expectedCount, 1.0, 1) # Alternative 2: Call Satellite.launch(1) n times. # 2 should be returned half the time, 8 the other half. sampleSize = 10000 twoWordTally = 0 eightWordTally = 0 for samples in range(sampleSize): result = self.sat.launch(1) if (result == 2): twoWordTally += 1 elif (result == 8): eightWordTally += 1 else: self.fail() self.assertAlmostEquals( float(twoWordTally) / float(eightWordTally), 1.0, 1)
def testSetPollFrameWithNonExistingRTErrorType01(self): s = sat.Satellite() bc = busC.BusController() s.setBusController(bc) rtList = [1] self.assertRaises(ValueError, bc.setPollFrame, (rtList))
def testSetPollFrameNoParamsReturnValue(self): bc = busC.BusController() self.assertEqual(bc.setPollFrame(), 0)
def testSetPollFrameInvalidrtListErrorType06(self): s = sat.Satellite() bc = busC.BusController() s.setBusController(bc) rtList = [56, 44] self.assertRaises(ValueError, bc.setPollFrame, (rtList))
def testBusControllerInstantiationStatusChange(self): bc = busC.BusController() self.assertEqual(bc.rtList.__len__(), 0)
def testBusControllerInstantiationReturnType(self): bc = busC.BusController() assert (isinstance(bc, busC.BusController))
def testPollReturnValue03(self): s = sat.Satellite() bc = busC.BusController() s.setBusController(bc) bc.setPollFrame(rtList=[]) self.assertEqual(bc.poll(), 0, 'Buscontroller does not poll properly')
def testSetBusControllerFirstReturnType02(self): s = sat.Satellite() bc = busC.BusController() self.assertEqual(s.setBusController(bc), True, 'setBusController does not set bus controller')