Exemplo n.º 1
0
class TestAppButton(unittest.TestCase):
    def pins_listener(self, pin_number, pin_level):
        if pin_number == 17 and pin_level == 0:
            self.is_led_on = True

    def setUp(self):
        self.vlab = Vlab(working_directory=dir)
        self.vlab.load(fw_bin)
        self.vlab.on_pin_level_event(self.pins_listener)
        self.vlab.run_for_ms(500)
        print('Virtual device is running')
        self.is_led_on = False

    def tearDown(self):
        self.vlab.stop()

    def test_should_ignore_button_noise(self):
        self.vlab.BUTTON1.on()
        self.vlab.run_for_ms(1)
        self.vlab.BUTTON1.off()
        self.vlab.run_for_ms(500)
        self.assertFalse(self.is_led_on)

    def test_led_should_turn_on_on_button_push(self):
        self.vlab.BUTTON1.on()
        self.vlab.run_for_ms(60)
        self.vlab.BUTTON1.off()
        self.vlab.run_for_ms(500)
        self.assertTrue(self.is_led_on)
class TestAppButton(unittest.TestCase):
    def setUp(self):
        print(self.id().split('.')[-1])  # test name
        self.vlab = Vlab(working_directory=dir)
        self.vlab.load(fw_bin)
        self.vlab.on_pin_level_event(self.pins_listener)
        self.vlab.run_for_ms(500)
        print('Virtual device is running')
        self.is_led_on = False

    def pins_listener(self, pin_number, pin_level):
        if pin_number == 17 and pin_level == 0:
            self.is_led_on = True

    def tearDown(self):
        self.vlab.stop()

    def print_device_time(self):
        print('Device time: ' + str(self.vlab.get_device_time_ms()) + ' ms')

    def test_led_should_turn_on_on_button_push(self):
        self.print_device_time()
        print('Button on')
        self.vlab.BUTTON1.on()
        self.vlab.run_for_ms(60)
        self.print_device_time()
        print('Button off')
        self.vlab.BUTTON1.off()
        self.vlab.run_for_ms(500)

        # in this case we are going to poll for the pin level
        self.assertEqual(self.vlab.get_pin_level(17), 0)

    def test_should_ignore_button_noise(self):
        self.print_device_time()
        print('Button on')
        self.vlab.BUTTON1.on()
        self.vlab.run_for_ms(1)
        self.print_device_time()
        print('Button off')
        self.vlab.BUTTON1.off()
        self.vlab.run_for_ms(500)
        self.assertFalse(self.is_led_on)
class TestEndToEnd(unittest.TestCase):
    def setUp(self):
        print(self.id().split('.')[-1])  # test name
        self.vlab = Vlab(working_directory=setting.dir, print_uart=True)
        self.vlab.load(setting.fw_bin)
        self.uart = self.vlab.uart
        self.vlab.run_for_ms(500)
        print('Virtual device is running')

    def tearDown(self):
        self.vlab.stop()

    def push_button(self):
        print('Button on')
        self.vlab.BUTTON1.on()
        self.vlab.run_for_ms(60)
        print('Button off')
        self.vlab.BUTTON1.off()
        self.vlab.run_for_ms(200)

    '''
    Black Box Test 
    Set temperature, click a button and verify that the same temperature was printed to UART
    '''

    def test_2_Black_Box(self):
        for i in range(3):
            self.push_button()
            line = self.uart.read()
            match = re.search('(Temperature: )(\d{2})', line)
            temp_uart = int(match.group(2))
            self.assertTrue(20 <= temp_uart <= 40)
Exemplo n.º 4
0
class TestBma280(unittest.TestCase):
    def setUp(self):
        self.vlab = Vlab(working_directory=dir, print_uart=True)
        self.vlab.load(fw_bin)
        self.uart = self.vlab.uart
        # self.vlab.run_for_ms(500)
        self.vlab.start()
        print('Virtual device is running')

    def tearDown(self):
        self.vlab.stop()

    def test_should_recognize_low_g(self):
        self.vlab.BMA280Device.set_interrupt('low_g')
        self.vlab.run_for_ms(1000)
        self.assertRegexpMatches(
            self.uart.read(), "Firmware recognized bma280 interrupt: low_g")

    def test_should_recognize_orient_xy(self):
        self.vlab.BMA280Device.set_interrupt('orient_xy')
        self.vlab.run_for_ms(1000)
        self.assertRegexpMatches(
            self.uart.read(),
            "Firmware recognized bma280 interrupt: orient_xy")

    def test_should_recognize_slope_x(self):
        self.vlab.BMA280Device.set_interrupt('slope_x')
        self.vlab.run_for_ms(1000)
        self.assertRegexpMatches(
            self.uart.read(), "Firmware recognized bma280 interrupt: slope_x")
class TestEndToEnd(unittest.TestCase):
    def setUp(self):
        print(self.id().split('.')[-1])
        tcp_server_dir = os.path.join(here, '..', 'tcp-server')
        self.gateway_process = subprocess.Popen(
            ['python', 'aws-temprature.py'], cwd=tcp_server_dir)
        sleep(2)
        self.vlab = Vlab(working_directory=setting.dir, print_uart=True)
        self.vlab.load(setting.fw_bin_aws)
        self.uart = self.vlab.uart
        self.vlab.run_for_ms(500)
        print('Virtual device is running')

    def tearDown(self):
        self.vlab.stop()
        self.gateway_process.terminate()
        self.gateway_process.wait()

    def push_button(self):
        print('Button on')
        self.vlab.BUTTON1.on()
        self.vlab.run_for_ms(60)
        print('Button off')
        self.vlab.BUTTON1.off()
        self.vlab.run_for_ms(1000)

    def read_from_aws(self):
        response = client.get_thing_shadow(thingName='my_temp_sensor')
        streaming_body = response["payload"]
        raw_data_bytes = streaming_body.read()
        raw_data_string = raw_data_bytes.decode('utf-8')  # Python 3.x specific
        json_state = json.loads(raw_data_string)
        return json_state['state']['desired']['temprature']

    '''
    Integration Test
    Set temperature, click a button and verify that the shadow device on AWS was updated with the same temperature
    '''

    def test_3_Integration_Test(self):
        for i in range(3):
            self.push_button()
            match = re.search('(Temperature: )(\d{2})', self.uart.read())
            temp_uart = int(match.group(2))
            success = False
            temp_aws = 0
            for j in range(60):
                try:
                    temp_aws = int(self.read_from_aws())
                    print('Temperature from aws: ' + str(temp_aws))
                    success = temp_uart == temp_aws
                    if success:
                        break
                except Exception as e:
                    pass
                sleep(1)

            self.assertTrue(20 <= temp_aws <= 40)
            self.assertTrue(success)
Exemplo n.º 6
0
class TestBq24160(unittest.TestCase):
    def setUp(self):
        self.vlab = Vlab(working_directory=dir)
        self.vlab.load(fw_bin)
        self.uart = self.vlab.uart
        self.vlab.run_for_ms(500)
        self.vlab.on_pin_level_event(self.pins_listener)
        print('Virtual device is running')
        self.success = False
        self.need_to_be_on = False
        self.pin_number_should_toggle = 6

    def pins_listener(self, pin_number, pin_level):
        if self.pin_number_should_toggle == pin_number:
            self.success = True

    def tearDown(self):
        self.vlab.stop()

    def test_should_raise_interrupt_bq24160(self):
        print("raise watchdog interrupt")
        self.pin_number_should_toggle = 3
        self.success = False
        self.vlab.bq24160.interrupt(
            self.vlab.bq24160.WATCHDOG_EXPIRATION_INTERRUPT)
        self.vlab.run_for_ms(0.5)
        self.assertTrue(self.success)
        self.pin_number_should_toggle = 7
        self.success = False
        self.vlab.run_for_ms(1.2)
        self.assertTrue(self.success)

    def test_should_charge_discharge_bq24160(self):
        print("charge usb")
        self.pin_number_should_toggle = 6
        self.success = False
        self.vlab.bq24160.charge("usb")
        self.vlab.run_for_ms(500)
        self.assertTrue(self.success)
        self.assertRegexpMatches(self.uart.read(), "Charging from usb")
        self.pin_number_should_toggle = 8
        self.success = False
        print("discharge")
        self.vlab.bq24160.discharge()
        self.vlab.run_for_ms(500)
        self.assertTrue(self.success)
        self.assertRegexpMatches(self.uart.read(), "Stopped charging")
        self.pin_number_should_toggle = 5
        self.success = False
        print("charge in")
        self.success = False
        self.vlab.bq24160.charge("in")
        self.vlab.run_for_ms(500)
        self.assertTrue(self.success)
        self.assertRegexpMatches(self.uart.read(), "Charging from in")
        self.pin_number_should_toggle = 8
        self.success = False
        print("discharge")
        self.vlab.bq24160.discharge()
        self.vlab.run_for_ms(500)
        self.assertTrue(self.success)
        self.assertRegexpMatches(self.uart.read(), "Stopped charging")
Exemplo n.º 7
0
class TestDebouncer(unittest.TestCase):
    def setUp(self):
        # set up the device simulation
        self.v = Vlab(working_directory=".",
                      print_uart=True,
                      token="demo-token-for-ci")
        self.v.load("BUILD/STM32_Button_Debounce.bin")
        self.v.on_pin_level_event(self.pin_listener)
        # running for a while to get the BSP done
        self.v.run_for_ms(10)
        self.is_led_on = False
        self.times_pressed = 0

    def tearDown(self):
        self.v.stop()

    def pin_listener(self, pin_number, pin_level):
        if pin_number == 5 and pin_level == 1:
            self.is_led_on = True
            self.times_pressed = self.times_pressed + 1

    def test_debouncer(self):
        self.v.UserButton.on()
        self.v.run_for_ms(10)
        self.v.UserButton.off()
        self.v.run_for_ms(10)
        self.v.UserButton.on()
        self.v.run_for_ms(10)
        self.v.UserButton.off()
        self.v.run_for_ms(10)
        self.v.UserButton.on()
        self.v.UserButton.off()
        self.v.run_for_ms(280)
        self.assertEqual(self.is_led_on, True)
        self.assertEqual(self.times_pressed, 1)
Exemplo n.º 8
0
import os
from jumper.vlab import Vlab


CHIP_ID_REGISTER = 0xD0
TEMP_LSB_REGISTER = 0xFB
TEMP_MSB_REGISTER = 0xFA

dir = os.path.dirname(os.path.abspath(__file__))
fw_bin = os.path.join(dir, 'pca10040', 'blank', 'armgcc', '_build', 'nrf52832_xxaa.bin')


vlab = Vlab(working_directory=dir, print_uart=False)
vlab.load(fw_bin)
vlab.run_for_ms(500)
vlab.resume()
print('Virtual device is running')

print('Reading chip ID from register {}'.format(hex(CHIP_ID_REGISTER)))
chip_id = vlab.BME280.get_register_value(CHIP_ID_REGISTER)
print('Chip id is: {}'.format(hex(chip_id)))

chip_id = 0xFF
print('Setting chip ID to {}'.format(hex(chip_id)))
vlab.BME280.set_register_value(CHIP_ID_REGISTER, chip_id)
print('Reading chip ID from register {}'.format(hex(CHIP_ID_REGISTER)))
chip_id = vlab.BME280.get_register_value(CHIP_ID_REGISTER)
print('Chip id is: {}'.format(hex(chip_id)))

vlab.pause()
for i in range(10):
Exemplo n.º 9
0
#!/usr/bin/python2
from jumper.vlab import Vlab

# set up the device simulation
v = Vlab(working_directory=".", print_uart=True, platform="nrf52832")
v.load("build/zephyr/zephyr.bin")

v.run_for_ms(500)
v.BUTTON1.on()
v.run_for_ms(500)
v.BUTTON1.off()
v.run_for_ms(500)
v.stop()