def setUp(self): """Set up controller for test""" self.sensor = Sensor('127.0.0.1', 8000) self.pump = Pump('127.0.0.1', 8000) self.decider = Decider(10, 0.05) self.controller = Controller(self.sensor, self.pump, self.decider)
def test_decider_current_action_pumpoff_height_in_target_and_margin_range( self): decider = Decider(target_height=5000, margin=1000) pump = Pump('127.0.0.1', 8000) sensor = Sensor('127.0.0.1', 8000) controller = Controller(sensor, pump, decider) #equal to target + margin case result = decider.decide(current_height=4000, current_action=Pump.PUMP_OFF, actions=controller.actions) self.assertEqual(result, Pump.PUMP_OFF) #equal to target + margin case result = decider.decide(current_height=4000, current_action=Pump.PUMP_OFF, actions=controller.actions) self.assertEqual(result, Pump.PUMP_OFF) #in the range of (target - margin to target + margin) result = decider.decide(current_height=5800, current_action=Pump.PUMP_OFF, actions=controller.actions) self.assertEqual(result, Pump.PUMP_OFF) #in the range of (target - margin to target + margin) result = decider.decide(current_height=4200, current_action=Pump.PUMP_OFF, actions=controller.actions) self.assertEqual(result, Pump.PUMP_OFF)
def setUp(self): """ This method does a setup for integration testing raterregulation """ self.pump = Pump('127.0.0.1', 1000) self.sensor = Sensor('127.0.0.2', 2000) self.decider = Decider(100, 0.05) self.controller = Controller(self.sensor, self.pump, self.decider)
def setUp(self): """ This method does a setup for unit testing Controller """ self.pump = Pump('127.0.0.1', 1000) self.sensor = Sensor('127.0.0.2', 2000) self.decider = Decider(100, 0.05) self.controller = Controller(self.sensor, self.pump, self.decider)
def test_decider_current_action_pump_off_height_less_than_target(self): decider = Decider(target_height=10000, margin=1000) pump = Pump('127.0.0.1', 8000) sensor = Sensor('127.0.0.1', 8000) controller = Controller(sensor, pump, decider) result = decider.decide(current_height=5000, current_action=Pump.PUMP_OFF, actions=controller.actions) self.assertEqual(result, Pump.PUMP_IN)
def setUp(self): """ setup :return: """ self.pump = Pump('127.0.0.1', 8000) self.sensor = Sensor('127.1.1.3', 9000) self.decider = Decider(100, 0.05) self.controller = Controller(self.sensor, self.pump, self.decider)
def setUp(self): """ Setup for test_tick """ self.sensor = Sensor('127.0.0.1', '8000') self.pump = Pump('127.0.0.1', '8001') self.decider = Decider(30, 0.05) self.sensor.measure = MagicMock(return_value=True) self.pump.set_state = MagicMock(return_value=True) self.pump.get_state = MagicMock(return_value="PUMP_IN") self.controller = Controller(self.sensor, self.pump, self.decider)
def test_decider_current_action_pumpoff_height_greater_target_and_margin( self): decider = Decider(target_height=1000, margin=200) pump = Pump('127.0.0.1', 8000) sensor = Sensor('127.0.0.1', 8000) controller = Controller(sensor, pump, decider) result = decider.decide(current_height=1250, current_action=Pump.PUMP_OFF, actions=controller.actions) self.assertEqual(result, Pump.PUMP_OUT)
def test_integration_set_pump_state_fail(self): decider = Decider(target_height=3000, margin=500) pump = Pump('127.0.0.1', 8000) sensor = Sensor('127.0.0.1', 8000) pump.set_state = MagicMock(return_value=False) pump.get_state = MagicMock(return_value=Pump.PUMP_OFF) sensor.measure = MagicMock(return_value=3500) controller = Controller(sensor, pump, decider) result = controller.tick() self.assertEqual(result, False)
def test_tick(self): """ Testing Sensor.tick """ sensor = Sensor('127.0.0.1', '8000') sensor.measure = MagicMock(return_value=10) pump = Pump('127.0.0.1', '8000') pump.get_state = MagicMock(return_value='PUMP_OFF') pump.set_state = MagicMock(return_value='PUMP_OFF') decider = Decider(10, 0.1) decider.decide = MagicMock(return_value='PUMP_OFF') controller = Controller(sensor, pump, decider) self.assertTrue(controller.tick())
def test_decide(self): """ test decide method from Decider class """ pump = Pump('127.0.0.1', 8000) actions = { 'PUMP_IN': pump.PUMP_IN, 'PUMP_OUT': pump.PUMP_OUT, 'PUMP_OFF': pump.PUMP_OFF, } self.assertEqual(self.decider.decide(110, 'PUMP_OFF', actions), 1) self.assertEqual(self.decider.decide(60, 'PUMP_OFF', actions), -1) self.assertEqual(self.decider.decide(105, 'PUMP_OFF', actions), 0) self.assertEqual(self.decider.decide(120, 'PUMP_IN', actions), 0) self.assertEqual(self.decider.decide(90, 'PUMP_OUT', actions), 0) self.assertEqual(self.decider.decide(115, 'PUMP_OUT', actions), -1)
def setUp(self): """ Set up method for test_controller """ self.sensor = Sensor('127.0.0.1', 8000) self.sensor.measure = MagicMock(return_value=100) self.pump = Pump('127.0.0.1', 8000) self.pump.set_state = MagicMock(return_value=True) self.pump.get_state = MagicMock(return_value=self.pump.PUMP_OFF) self.decider = Decider(100, .10) self.decider.decide = MagicMock(return_value=self.pump.PUMP_OFF) self.controller = Controller(self.sensor, self.pump, self.decider) self.controller.tick() self.actions = { 'PUMP_IN': self.pump.PUMP_IN, 'PUMP_OUT': self.pump.PUMP_OUT, 'PUMP_OFF': self.pump.PUMP_OFF }
def test_decide(self): """ This method performs a unit test on decide """ pump = Pump('127.0.0.1', 1000) actions = { 'PUMP_IN': pump.PUMP_IN, 'PUMP_OUT': pump.PUMP_OUT, 'PUMP_OFF': pump.PUMP_OFF, } self.assertEqual(self.decider.decide(130, 'PUMP_OFF', actions), 1) self.assertEqual(self.decider.decide(40, 'PUMP_OFF', actions), -1) self.assertEqual(self.decider.decide(105, 'PUMP_OFF', actions), 0) self.assertEqual(self.decider.decide(140, 'PUMP_IN', actions), 0) self.assertEqual(self.decider.decide(85, 'PUMP_OUT', actions), 0) self.assertEqual(self.decider.decide(110, 'PUMP_OUT', actions), -1)
def test_all(self): """ Run full test on all components of waterregulation """ pump_address = Pump('127.0.0.1', '2048') sensor_address = Sensor('127.0.0.1', '2048') decider_margins = Decider(100, .10) controller_all = Controller(sensor_address, pump_address, decider_margins) controller_all.pump.set_state = MagicMock(return_value=True) for action in controller_all.actions.values(): for water_level in range(25, 150, 100): # water level (mocked) controller_all.sensor.measure = \ MagicMock(return_value=water_level) # pump state (mocked) controller_all.pump.get_state = MagicMock( return_value=decider_margins.decide( water_level, action, controller_all.actions)) controller_all.tick()
def setUp(self): """ setup for PumpTest class :return: """ self.pump = Pump('127.0.0.1', 8000)
def main(): """ The main function. Does the work of Simple VIVO :return: None """ import sys import logging from datetime import datetime from pump.vivopump import get_args, DefNotFoundException, InvalidDefException from pump.pump import Pump logging.captureWarnings(True) logger = logging.getLogger(__name__) formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') handler = logging.StreamHandler(sys.stderr) handler.setFormatter(formatter) logger.addHandler(handler) logger.setLevel(logging.DEBUG) return_code = 0 print datetime.now(), "Start" args = get_args() # Create a Pump and use it to perform the requested actions based on arguments try: p = Pump(args.defn, args.src) except DefNotFoundException: print args.defn, "definition file not found" sys.exit(1) except InvalidDefException as invalid: print "Invalid definition file", args.defn, "\n", invalid sys.exit(1) p.filter = not args.nofilters p.inter = args.inter p.intra = args.intra p.rdfprefix = args.rdfprefix p.uriprefix = args.uriprefix p.queryuri = args.queryuri p.username = args.username p.password = args.password p.prefix = args.prefix p.query_parms = {'queryuri': p.queryuri, 'username': p.username, 'password': p.password, 'uriprefix': p.uriprefix, 'prefix': p.prefix} if args.action == 'get': n_rows = p.get() print datetime.now(), n_rows, "rows in", args.src elif args.action == 'update': try: [add_graph, sub_graph] = p.update() except IOError: print args.src, "file not found" return_code = 1 else: add_file = open(args.rdfprefix + '_add.nt', 'w') print >>add_file, add_graph.serialize(format='nt') add_file.close() sub_file = open(args.rdfprefix + '_sub.nt', 'w') print >>sub_file, sub_graph.serialize(format='nt') sub_file.close() print datetime.now(), len(add_graph), 'triples to add', len(sub_graph), 'triples to sub' elif args.action == 'summarize': print p.summarize() elif args.action == 'serialize': print p.serialize() elif args.action == 'test': test_result = p.test() print test_result if 'Check' in test_result: return_code = 1 else: print datetime.now(), "Unknown action. Try sv -h for help" print datetime.now(), "Finish" sys.exit(return_code)
def setUp(self): """ This method does a setup for unit testing Pump """ self.pump = Pump('127.0.0.1', 1000)
def setUp(self): self.sensor = Sensor('127.0.0.1', '168') self.pump = Pump('127.0.0.1', '168') self.decider = Decider(10, 0.5) self.controller = Controller(self.sensor, self.pump, self.decider)