Пример #1
0
    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)
Пример #2
0
    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)
Пример #4
0
    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)
Пример #5
0
 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)
Пример #6
0
    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)
Пример #7
0
 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)
Пример #8
0
    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)
Пример #9
0
    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)
Пример #10
0
 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())
Пример #11
0
    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)
Пример #12
0
    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
        }
Пример #13
0
    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()
Пример #15
0
 def setUp(self):
     """
     setup for PumpTest class
     :return:
     """
     self.pump = Pump('127.0.0.1', 8000)
Пример #16
0
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)
Пример #17
0
 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)