1import os 2 3import infra.basetest 4 5 6class TestOla(infra.basetest.BRTest): 7 config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \ 8 """ 9 BR2_PACKAGE_OLA=y 10 BR2_PACKAGE_OLA_EXAMPLES=y 11 BR2_PACKAGE_OLA_PLUGIN_DUMMY=y 12 BR2_PACKAGE_OLA_PYTHON_BINDINGS=y 13 BR2_PACKAGE_OLA_WEB=y 14 BR2_PACKAGE_PYTHON3=y 15 BR2_ROOTFS_OVERLAY="{}" 16 BR2_TARGET_ROOTFS_CPIO=y 17 # BR2_TARGET_ROOTFS_TAR is not set 18 """.format( 19 # overlay to add a script to test ola python bindings 20 infra.filepath("tests/package/test_ola/rootfs-overlay")) 21 22 def test_run(self): 23 cpio_file = os.path.join(self.builddir, "images", "rootfs.cpio") 24 self.emulator.boot(arch="armv5", 25 kernel="builtin", 26 options=["-initrd", cpio_file]) 27 self.emulator.login() 28 29 # Check program executes 30 cmd = "olad --version" 31 self.assertRunOk(cmd) 32 33 # Start the daemon and wait a bit for it to settle 34 cmd = "olad --daemon && sleep 2" 35 self.assertRunOk(cmd) 36 37 # Check dummy plugin is loaded 38 cmd = "ola_plugin_info | grep -Fi dummy" 39 self.assertRunOk(cmd) 40 41 # Check dummy device and port are listed 42 cmd = "ola_dev_info" 43 output, exit_code = self.emulator.run(cmd) 44 self.assertEqual(exit_code, 0) 45 self.assertIn("Device 1: Dummy Device", output[0]) 46 self.assertIn("port 0, OUT Dummy Port", output[1]) 47 48 # Create Universe 0 49 cmd = "ola_patch --device 1 --port 0 --universe 0" 50 self.assertRunOk(cmd) 51 52 # Check Universe 0 is created 53 cmd = "ola_dev_info" 54 output, exit_code = self.emulator.run(cmd) 55 self.assertEqual(exit_code, 0) 56 self.assertIn("patched to universe 0", output[1]) 57 58 # Discover Dummy device RDM UID 59 cmd = "ola_rdm_discover --universe 0 | head -1" 60 output, exit_code = self.emulator.run(cmd) 61 self.assertEqual(exit_code, 0) 62 rdm_uid = output[0] 63 64 # Get RDM manufacturer_label PID 65 cmd = "ola_rdm_get --universe 0 --uid {} manufacturer_label".format(rdm_uid) 66 output, exit_code = self.emulator.run(cmd) 67 self.assertEqual(exit_code, 0) 68 self.assertEqual(output[0], "Open Lighting Project") 69 70 # Get RDM dmx_start_address PID, checks default value is 1 71 cmd = "ola_rdm_get --universe 0 --uid {} dmx_start_address".format(rdm_uid) 72 output, exit_code = self.emulator.run(cmd) 73 self.assertEqual(exit_code, 0) 74 self.assertEqual(output[0], "DMX Address: 1") 75 76 # Set RDM dmx_start_address PID to 2 77 cmd = "ola_rdm_set --universe 0 --uid {} dmx_start_address 2".format(rdm_uid) 78 self.assertRunOk(cmd) 79 80 # Get the new RDM dmx_start_address PID, checks value is now 2 81 cmd = "ola_rdm_get --universe 0 --uid {} dmx_start_address".format(rdm_uid) 82 output, exit_code = self.emulator.run(cmd) 83 self.assertEqual(exit_code, 0) 84 self.assertEqual(output[0], "DMX Address: 2") 85 86 # Perform a full RDM discovery using python bindings. The test 87 # expect to find the same UID detected with the C client. 88 cmd = "sample_ola_rdm_discovery.py | head -1" 89 output, exit_code = self.emulator.run(cmd) 90 self.assertEqual(exit_code, 0) 91 self.assertEqual(output[0], rdm_uid) 92 93 # Test olad web interface 94 cmd = "wget -q -O - http://127.0.0.1:9090/ola.html | grep -F '<title>OLA Admin</title>'" 95 self.assertRunOk(cmd) 96