コード例 #1
0
    def test_AbsoluteFileURI(self):
        domLoggingConfigArg = os.path.join(scatest.getSdrPath(), "dom/mgr/logging.properties")
        devLoggingConfigArg = os.path.join(scatest.getSdrPath(), "dev/mgr/logging.properties")

        domLoggingConfigUri, devLoggingConfigUri = self._testLoggingConfigURI(domLoggingConfigArg, devLoggingConfigArg)

        expectedDomLoggingConfigUri = "file://" + os.path.join(scatest.getSdrPath(), "dom/mgr/logging.properties")
        expectedDevLoggingConfigUri = "file://" + os.path.join(scatest.getSdrPath(), "dev/mgr/logging.properties")
        self.assertEqual(domLoggingConfigUri, expectedDomLoggingConfigUri)
        self.assertEqual(devLoggingConfigUri, expectedDevLoggingConfigUri)
コード例 #2
0
    def test_RelativeFileURI(self):
        domLoggingConfigArg = "dom/mgr/logging.properties"
        devLoggingConfigArg = "dev/mgr/logging.properties"

        domLoggingConfigUri, devLoggingConfigUri = self._testLoggingConfigURI(
            domLoggingConfigArg, devLoggingConfigArg)

        expectedDomLoggingConfigUri = "file://" + os.path.join(
            scatest.getSdrPath(), "dom/mgr/logging.properties")
        expectedDevLoggingConfigUri = "file://" + os.path.join(
            scatest.getSdrPath(), "dev/mgr/logging.properties")
        self.assertEqual(domLoggingConfigUri, expectedDomLoggingConfigUri)
        self.assertEqual(devLoggingConfigUri, expectedDevLoggingConfigUri)
コード例 #3
0
    def test_nodeBooterShutdown(self):
        """Test that nodeBooter correctly cleans up.
        In OSSIE 0.7.4, and possibly before, killing a nodebooter that was running
        a device manager would prevent you from restarting the devicemanager without
        first restarting the domainmanager.  Test that this condition is fixed"""
        #  It is important that these core pieces somewhat work for all the other tests to succeed
        nb1= Popen("../../control/framework/nodeBooter -D --nopersist", cwd=scatest.getSdrPath(), shell=True)
        domainName = scatest.getTestDomainName()

        domMgr = self.waitDomainManager(scatest.getDomainMgrURI())
        self.assertNotEqual(domMgr, None)
        self.assertEqual(len(domMgr._get_deviceManagers()), 0)

        nb2 = Popen("../../control/framework/nodeBooter -d /nodes/test_ExecutableDevice_node/DeviceManager.dcd.xml --domainname %s" % domainName, 
            cwd=scatest.getSdrPath(), shell=True)
        self.assertPredicateWithWait(lambda: len(domMgr._get_deviceManagers()) == 1)

        # Wait until the DeviceManager has finished launching its devices
        devMgr = domMgr._get_deviceManagers()[0]
        self.assertPredicateWithWait(lambda: len(devMgr._get_registeredDevices()) == 1)

        os.kill(nb2.pid, signal.SIGINT)
        self.assertPredicateWithWait(lambda: nb2.poll() != None)
        self.assertEqual(len(domMgr._get_deviceManagers()), 0)

        # Restart the device manager to prove that the shutdown was graceful.
        # In OSSIE 0.7.4 this would fail.
        nb3 = Popen("../../control/framework/nodeBooter -d /nodes/test_ExecutableDevice_node/DeviceManager.dcd.xml --domainname %s" % domainName, 
            cwd=scatest.getSdrPath(), shell=True)
        self.assertPredicateWithWait(lambda: len(domMgr._get_deviceManagers()) == 1)

        # Wait until the DeviceManager has finished launching its devices
        devMgr = domMgr._get_deviceManagers()[0]
        self.assertPredicateWithWait(lambda: len(devMgr._get_registeredDevices()) == 1)

        os.kill(nb3.pid, signal.SIGINT)
        self.assertPredicateWithWait(lambda: nb3.poll() != None)
        self.assertEqual(len(domMgr._get_deviceManagers()), 0)

        os.kill(nb1.pid, signal.SIGINT)
        self.assertPredicateWithWait(lambda: nb1.poll() != None)

        # Test that we cleaned up the name; this should be automatic because
        # the naming context should be empty.
        try:
            domMgr = self._root.resolve(scatest.getDomainMgrURI())
            self.assertEqual(domMgr, None)
        except CosNaming.NamingContext.NotFound:
            pass # This exception is expected
コード例 #4
0
    def test_nodeBooterDomainNameFromDMD(self):
        """Test that we read the correct domainname from the DMD file, the test domain
        should have been created by the test runner"""
        domainName = scatest.getTestDomainName()
        # Test that we don't already have a bound domain
        try:
            domMgr = self._root.resolve(scatest.getDomainMgrURI())
            self.assertEqual(domMgr, None)
        except CosNaming.NamingContext.NotFound:
            pass # This exception is expected
        
        nb = Popen("../../control/framework/nodeBooter -D -debug 9 --nopersist", cwd=scatest.getSdrPath(), shell=True)
        
        time.sleep(5)
        # Test that the name exists and is a DomainManager
        domMgr = self._root.resolve(scatest.getDomainMgrURI())._narrow(CF.DomainManager)
        self.assertNotEqual(domMgr, None)

        # Kill the nodebooter
        os.kill(nb.pid, signal.SIGINT)
        time.sleep(5) # Give it time to shutdown
        self.assertEqual(nb.poll(), 0)

        # Test that we cleaned up the name; this should be automatic because
        # the naming context should be empty.
        try:
            domMgr = self._root.resolve(scatest.getDomainMgrURI())
            self.assertEqual(domMgr, None)
        except CosNaming.NamingContext.NotFound:
            pass # This exception is expected
コード例 #5
0
    def test_SimpleLaunch(self):
        os.environ['OSSIEHOME'] = 'foo'
        # Simulate ScaComponentTestProgram
        testing.setSoftPkg(
            os.path.join(scatest.getSdrPath(), "dom", "components",
                         "CommandWrapper", "CommandWrapper.spd.xml"))
        testing.setImplId("DCE:535a68a7-64e4-424b-9045-5ffc7659bf9d")

        testing.ScaComponentTestCase.runTest = lambda: None
        tc = testing.ScaComponentTestCase()
        tc.setUp()

        self.assertEqual(tc.comp_obj, None)
        self.assertEqual(tc.comp, None)

        tc.launch(ossiehome=os.getcwd() + '/../')
        pid = None
        comp_obj = None
        try:
            self.assertNotEqual(tc.comp_obj, None)
            self.assertNotEqual(tc.comp, None)
            comp_obj = tc.comp_obj
            self.assertEqual(comp_obj._non_existent(), False)
            self.assertEqual(comp_obj._is_a("IDL:CF/Resource:1.0"), True)
        finally:
            tc.tearDown()

        self.assertNotEqual(comp_obj, None)
        try:
            nonExistent = comp_obj._non_existent()
        except CORBA.TRANSIENT:
            nonExistent = True
        self.assertEqual(nonExistent, True)
        self.assertEqual(tc.comp_obj, None)
コード例 #6
0
    def test_nodeBooterDomainNameFromDMD(self):
        """Test that we read the correct domainname from the DMD file, the test domain
        should have been created by the test runner"""
        domainName = scatest.getTestDomainName()
        # Test that we don't already have a bound domain
        try:
            domMgr = self._root.resolve(scatest.getDomainMgrURI())
            self.assertEqual(domMgr, None)
        except CosNaming.NamingContext.NotFound:
            pass # This exception is expected
        
        nb = Popen("../../control/framework/nodeBooter -D -debug 9 --nopersist", cwd=scatest.getSdrPath(), shell=True)
        domMgr = self.waitDomainManager(scatest.getDomainMgrURI())
        self.assertNotEqual(domMgr, None)

        # Kill the nodebooter
        os.kill(nb.pid, signal.SIGINT)
        self.assertPredicateWithWait(lambda: nb.poll() == 0)

        # Test that we cleaned up the name; this should be automatic because
        # the naming context should be empty.
        try:
            domMgr = self._root.resolve(scatest.getDomainMgrURI())
            self.assertEqual(domMgr, None)
        except CosNaming.NamingContext.NotFound:
            pass # This exception is expected
コード例 #7
0
    def test_cpp_DirectoryLoad(self):
        self.assertNotEqual(self._domMgr, None)

        # Verify in the devices cache is emtpy
        componentDir = os.path.join(scatest.getSdrPath(), "dom", "components",
                                    "CommandWrapperWithDirectoryLoad")
        deviceCacheDir = os.path.join(scatest.getSdrCache(),
                                      ".ExecutableDevice_node",
                                      "ExecutableDevice1", "components",
                                      "CommandWrapperWithDirectoryLoad")
        if os.path.exists(deviceCacheDir):
            os.system("rm -rf %s" % deviceCacheDir)

        self.assertEqual(len(self._domMgr._get_applicationFactories()), 0)
        self.assertEqual(len(self._domMgr._get_applications()), 0)

        self._domMgr.installApplication(
            "/waveforms/CommandWrapperWithDirectoryLoad/CommandWrapper.sad.xml"
        )
        self.assertEqual(len(self._domMgr._get_applicationFactories()), 1)
        self.assertEqual(len(self._domMgr._get_applications()), 0)

        # Ensure the expected device is available
        devBooter, devMgr = self.launchDeviceManager(
            "/nodes/test_ExecutableDevice_node/DeviceManager.dcd.xml")
        self.assertNotEqual(devMgr, None)
        self.assertEqual(len(devMgr._get_registeredDevices()), 1)
        device = devMgr._get_registeredDevices()[0]

        appFact = self._domMgr._get_applicationFactories()[0]

        app = appFact.create(appFact._get_name(), [], [])  # LOOK MA, NO DAS!

        self.assertEqual(len(self._domMgr._get_applicationFactories()), 1)
        self.assertEqual(len(self._domMgr._get_applications()), 1)

        # Verify that properties have been changed from their defaults
        self.assertEqual(len(app._get_componentNamingContexts()), 1)
        compName = app._get_componentNamingContexts()[0]
        comp = self._root.resolve(URI.stringToName(
            compName.elementId))._narrow(CF.Resource)
        self.assertNotEqual(comp, None)

        cmd = comp.query([
            CF.DataType(id="DCE:a4e7b230-1d17-4a86-aeff-ddc6ea3df26e",
                        value=any.to_any(None))
        ])[0]
        args = comp.query([
            CF.DataType(id="DCE:5d8bfe8d-bc25-4f26-8144-248bc343aa53",
                        value=any.to_any(None))
        ])[0]
        self.assertEqual(cmd.value._v, "/bin/echo")
        self.assertEqual(args.value._v, ["Hello World"])

        app.stop()
        app.releaseObject()
        self.assertEqual(len(self._domMgr._get_applicationFactories()), 1)
        self.assertEqual(len(self._domMgr._get_applications()), 0)

        self._domMgr.uninstallApplication(appFact._get_identifier())
コード例 #8
0
    def test_DomainManagerApplicationLifecycle(self):
        self.assertNotEqual(self._domMgr, None)
        self.assertEqual(len(self._domMgr._get_applicationFactories()), 0)
        self.assertEqual(len(self._domMgr._get_applications()), 0)

        # This filename isn't in compliance with SCA, but it is necessary for OSSIE
        self._domMgr.installApplication(
            "/waveforms/CommandWrapper/CommandWrapper.sad.xml")
        self.assertEqual(len(self._domMgr._get_applicationFactories()), 1)
        self.assertEqual(len(self._domMgr._get_applications()), 0)

        appFact = self._domMgr._get_applicationFactories()[0]
        dom = minidom.parse(
            os.path.join(
                scatest.getSdrPath(),
                "dom/waveforms/CommandWrapper/CommandWrapper.sad.xml"))
        expectedId = dom.getElementsByTagName(
            "softwareassembly")[0].getAttribute("id")
        providedId = appFact._get_identifier()
        self.assertEqual(providedId,
                         expectedId,
                         msg="Violation of SR:155 and/or SR:156")

        expectedName = dom.getElementsByTagName(
            "softwareassembly")[0].getAttribute("name")
        providedName = appFact._get_name()
        self.assertEqual(providedName, expectedName, msg="Violation of SR:153")

        self._domMgr.uninstallApplication(providedId)
        self.assertEqual(len(self._domMgr._get_applicationFactories()), 0)
        self.assertEqual(len(self._domMgr._get_applications()), 0)
コード例 #9
0
    def test_nodeBooterShutdownSIGQUIT(self):
        """Test that nodeBooter correctly cleans up.
        In OSSIE 0.7.4, and possibly before, killing a nodebooter that was running
        a device manager would prevent you from restarting the devicemanager without
        first restarting the domainmanager.  Test that this condition is fixed"""
        #  It is important that these core pieces somewhat work for all the other tests to succeed
        nb1= Popen("../../control/framework/nodeBooter -D -debug 9 --nopersist", cwd=scatest.getSdrPath(), shell=True)
        time.sleep(5) # Give it time to start

        domainName = scatest.getTestDomainName()
        domMgr = self._root.resolve(scatest.getDomainMgrURI())._narrow(CF.DomainManager)
        self.assertNotEqual(domMgr, None)
        self.assertEqual(len(domMgr._get_deviceManagers()), 0)

        nb2 = Popen("../../control/framework/nodeBooter -d /nodes/test_ExecutableDevice_node/DeviceManager.dcd.xml -debug 9 --domainname %s" % domainName, 
            cwd=scatest.getSdrPath(), shell=True)
        time.sleep(5) # Give it time to start
        self.assertEqual(len(domMgr._get_deviceManagers()), 1)

        os.kill(nb2.pid, signal.SIGQUIT)
        time.sleep(5) # Give it time to shutdown
        self.assertNotEqual(nb2.poll(), None)
        self.assertEqual(len(domMgr._get_deviceManagers()), 0)

        # Restart the device manager to prove that the shutdown was graceful.
        # In OSSIE 0.7.4 this would fail.
        nb3 = Popen("../../control/framework/nodeBooter -d /nodes/test_ExecutableDevice_node/DeviceManager.dcd.xml -debug 9 --domainname %s" % domainName, 
            cwd=scatest.getSdrPath(), shell=True)
        time.sleep(5) # Give it time to start
        self.assertEqual(len(domMgr._get_deviceManagers()), 1)

        os.kill(nb3.pid, signal.SIGQUIT)
        time.sleep(5) # Give it time to shutdown
        self.assertNotEqual(nb3.poll(), None)
        self.assertEqual(len(domMgr._get_deviceManagers()), 0)

        os.kill(nb1.pid, signal.SIGQUIT)
        time.sleep(5) # Give it time to shutdown
        self.assertNotEqual(nb1.poll(), None)

        # Test that we cleaned up the name; this should be automatic because
        # the naming context should be empty.
        try:
            domMgr = self._root.resolve(scatest.getDomainMgrURI())
            self.assertEqual(domMgr, None)
        except CosNaming.NamingContext.NotFound:
            pass # This exception is expected
コード例 #10
0
    def test_cpp_DirectoryLoad(self):
        self.assertNotEqual(self._domMgr, None)

        # Verify in the devices cache is emtpy
        componentDir = os.path.join(scatest.getSdrPath(), "dom", "components", "CommandWrapperWithDirectoryLoad")
        deviceCacheDir = os.path.join(scatest.getSdrPath(), "dev", ".ExecutableDevice_node", "ExecutableDevice1", "components", "CommandWrapperWithDirectoryLoad")
        if os.path.exists(deviceCacheDir):
            os.system("rm -rf %s" % deviceCacheDir)

        self.assertEqual(len(self._domMgr._get_applicationFactories()), 0)
        self.assertEqual(len(self._domMgr._get_applications()), 0)

        self._domMgr.installApplication("/waveforms/CommandWrapperWithDirectoryLoad/CommandWrapper.sad.xml")
        self.assertEqual(len(self._domMgr._get_applicationFactories()), 1)
        self.assertEqual(len(self._domMgr._get_applications()), 0)

        # Ensure the expected device is available
        devBooter, devMgr = self.launchDeviceManager("/nodes/test_ExecutableDevice_node/DeviceManager.dcd.xml", debug=9)
        self.assertNotEqual(devMgr, None)
        self.assertEqual(len(devMgr._get_registeredDevices()), 1)
        device = devMgr._get_registeredDevices()[0]

        appFact = self._domMgr._get_applicationFactories()[0]

        app = appFact.create(appFact._get_name(), [], []) # LOOK MA, NO DAS!

        self.assertEqual(len(self._domMgr._get_applicationFactories()), 1)
        self.assertEqual(len(self._domMgr._get_applications()), 1)

        # Verify that properties have been changed from their defaults
        self.assertEqual(len(app._get_componentNamingContexts()), 1)
        compName = app._get_componentNamingContexts()[0]
        comp = self._root.resolve(URI.stringToName(compName.elementId))._narrow(CF.Resource)
        self.assertNotEqual(comp, None)

        cmd = comp.query([CF.DataType(id="DCE:a4e7b230-1d17-4a86-aeff-ddc6ea3df26e", value=any.to_any(None))])[0]
        args = comp.query([CF.DataType(id="DCE:5d8bfe8d-bc25-4f26-8144-248bc343aa53", value=any.to_any(None))])[0]
        self.assertEqual(cmd.value._v, "/bin/echo")
        self.assertEqual(args.value._v, ["Hello World"])

        app.stop()
        app.releaseObject()
        self.assertEqual(len(self._domMgr._get_applicationFactories()), 1)
        self.assertEqual(len(self._domMgr._get_applications()), 0)

        self._domMgr.uninstallApplication(appFact._get_identifier())
コード例 #11
0
    def test_ApplicationFactoryCreateURIOverride(self):
        domNB, domMgr = self.launchDomainManager(loggingURI="dom/mgr/logging.properties")
        self.assertNotEqual(domMgr, None)

        # Launch a device manager
        devNB, devMgr = self.launchDeviceManager(
            "/nodes/test_BasicTestDevice_node/DeviceManager.dcd.xml", loggingURI="dev/mgr/logging.properties"
        )
        self.assertNotEqual(domMgr, None)

        # Double check the DomainManager LOGGING_CONFIG_URI
        prop = CF.DataType(id="LOGGING_CONFIG_URI", value=any.to_any(None))
        result = domMgr.query([prop])
        self.assertEqual(len(result), 1)
        self.assertEqual(result[0].id, "LOGGING_CONFIG_URI")
        devLoggingConfigURI = result[0].value._v
        expectedDomLoggingConfigUri = "file://" + os.path.join(scatest.getSdrPath(), "dom/mgr/logging.properties")
        self.assertEqual(devLoggingConfigURI, expectedDomLoggingConfigUri)

        # Launch an application
        domMgr.installApplication("/waveforms/CommandWrapper/CommandWrapper.sad.xml")
        self.assertEqual(len(domMgr._get_applicationFactories()), 1)
        self.assertEqual(len(domMgr._get_applications()), 0)

        appFact = domMgr._get_applicationFactories()[0]
        uriOverride = CF.DataType(id="LOGGING_CONFIG_URI", value=any.to_any("sca:///mgr/logging.properties"))
        app = appFact.create(appFact._get_name(), [uriOverride], [])

        # Get the desired component
        self.assertEqual(len(app._get_componentNamingContexts()), 1)
        compName = app._get_componentNamingContexts()[0]
        comp = self._root.resolve(URI.stringToName(compName.elementId))._narrow(CF.Resource)
        self.assertNotEqual(comp, None)

        # Check the components exec params
        execparams = comp.query([CF.DataType(id="DCE:85d133fd-1658-4e4d-b3ff-1443cd44c0e2", value=any.to_any(None))])[0]
        args = any.from_any(execparams.value)
        execparams = {}
        for b in args:
            a = eval(b)
            name = a[0]
            value = a[1]
            execparams[name] = value

        self.assert_(execparams.has_key("LOGGING_CONFIG_URI"))
        self.assertEqual(execparams["LOGGING_CONFIG_URI"].split("?fs=")[0], "sca:///mgr/logging.properties")
        execparamObj = self._orb.string_to_object(execparams["LOGGING_CONFIG_URI"].split("?fs=")[1])
        # Need to compare actual objects since the IOR strings could potentially differ for the same object
        self.assert_(domMgr._get_fileMgr()._is_equivalent(execparamObj))

        # Launch an application with a C++ component to exercise Resource_impl logging configure
        domMgr.installApplication("/waveforms/TestCppProps/TestCppProps.sad.xml")
        self.assertEqual(len(domMgr._get_applicationFactories()), 2)
        for appFact in domMgr._get_applicationFactories():
            if appFact._get_name() == "TestCppProps":
                app = appFact.create(appFact._get_name(), [uriOverride], [])
                break
        self.assertEqual(len(domMgr._get_applications()), 2)
コード例 #12
0
    def test_Move(self):
        #################
        # test move
        #################
        self.assertNotEqual(self._domMgr, None)
        fileMgr = self._domMgr._get_fileMgr()

        # Test move on the same file system
        original = os.path.join(scatest.getSdrPath(),
                                "dom/mgr/DomainManager.spd.xml")
        domoldfile = "/components/old.txt"
        domnewfile = "/waveforms/new.txt"
        devfile = "/ExecutableDevice_node/nodes/dev.txt"
        domlocaloldfile = os.path.join(scatest.getSdrPath(),
                                       'dom' + domoldfile)
        domlocalnewfile = os.path.join(scatest.getSdrPath(),
                                       'dom' + domnewfile)
        devlocalfile = os.path.join(scatest.getSdrPath(), "dev/nodes/dev.txt")

        shutil.copyfile(original, domlocaloldfile)
        if os.path.exists(domlocalnewfile):
            os.remove(domlocalnewfile)

        try:
            fileMgr.move(domoldfile, domnewfile)
        except:
            self.fail("Exception in local move")
        self.assertEqual(fileMgr.exists(domoldfile), False)
        self.assertEqual(fileMgr.exists(domnewfile), True)

        self.assertEqual(file(original).read(), file(domlocalnewfile).read())

        # Test move across file systems
        if os.path.exists(devlocalfile):
            os.remove(devlocalfile)
        try:
            fileMgr.move(domnewfile, devfile)
        except:
            self.fail("Exception in local->remote move")
        self.assertEqual(fileMgr.exists(domnewfile), False)
        self.assertEqual(fileMgr.exists(devfile), True)

        self.assertEqual(file(original).read(), file(devlocalfile).read())

        os.remove(devlocalfile)
コード例 #13
0
    def test_DASAllocationFail(self):
        self._domMgr.installApplication(
            "/waveforms/CapacityUsage/CapacityUsage.sad.xml")

        # Start the first DeviceManager
        nb1, node1 = self.launchDeviceManager(
            "/nodes/test_BasicTestDevice_node/DeviceManager.dcd.xml", debug=9)

        # Ensure the expected device is available
        self.assertNotEqual(node1, None)
        self.assertEqual(len(node1._get_registeredDevices()), 1)
        device1 = node1._get_registeredDevices()[0]
        self.assertEqual(self._getBogoMips(device1), 100000000)

        appFact = self._domMgr._get_applicationFactories()[0]

        # load the device assignment sequence
        das = minidom.parse(
            os.path.join(scatest.getSdrPath(),
                         "dom/waveforms/CapacityUsage/CapacityUsage_DAS.xml"))
        ds = []
        deviceAssignmentTypeNodeList = das.getElementsByTagName(
            "deviceassignmenttype")
        for node in deviceAssignmentTypeNodeList:
            componentid = node.getElementsByTagName(
                "componentid")[0].firstChild.data
            assigndeviceid = node.getElementsByTagName(
                "assigndeviceid")[0].firstChild.data
            ds.append(
                CF.DeviceAssignmentType(str(componentid), str(assigndeviceid)))

        # Create two applications to take up the capacity of the first device

        # first on uses DAS
        app1 = appFact.create(appFact._get_name(), [], ds)
        self.assertEqual(self._getBogoMips(device1), 50000000)

        # second one is sans DAS
        app2 = appFact.create(appFact._get_name(), [], [])
        self.assertEqual(self._getBogoMips(device1), 0)

        # Try to create another app, which should fail due to lack of capacity.
        # doing this with DAS since it exercises a different piece of code
        try:
            failApp = appFact.create(appFact._get_name(), [], ds)
            failApp.releaseObject()
            self.fail("Created application with no capacity")
        except:
            pass

        app2.releaseObject()
        self.assertEqual(self._getBogoMips(device1), 50000000)
        app1.releaseObject()
        self.assertEqual(self._getBogoMips(device1), 100000000)

        self._domMgr.uninstallApplication(appFact._get_identifier())
コード例 #14
0
    def test_Move(self):
        #################
        # test move
        #################
        self.assertNotEqual(self._domMgr, None)
        fileMgr = self._domMgr._get_fileMgr()

        # Test move on the same file system
        original = os.path.join(scatest.getSdrPath(), "dom/mgr/DomainManager.spd.xml")
        domoldfile = "/components/old.txt"
        domnewfile = "/waveforms/new.txt"
        devfile = "/ExecutableDevice_node/nodes/dev.txt"
        domlocaloldfile = os.path.join(scatest.getSdrPath(), 'dom' + domoldfile)
        domlocalnewfile = os.path.join(scatest.getSdrPath(), 'dom' + domnewfile)
        devlocalfile = os.path.join(scatest.getSdrPath(), "dev/nodes/dev.txt")

        shutil.copyfile(original, domlocaloldfile)
        if os.path.exists(domlocalnewfile):
            os.remove(domlocalnewfile)

        try:
            fileMgr.move(domoldfile, domnewfile)
        except:
            self.fail("Exception in local move")
        self.assertEqual(fileMgr.exists(domoldfile), False)
        self.assertEqual(fileMgr.exists(domnewfile), True)

        self.assertEqual(file(original).read(), file(domlocalnewfile).read())

        # Test move across file systems
        if os.path.exists(devlocalfile):
            os.remove(devlocalfile)
        try:
            fileMgr.move(domnewfile, devfile)
        except:
            self.fail("Exception in local->remote move")
        self.assertEqual(fileMgr.exists(domnewfile), False)
        self.assertEqual(fileMgr.exists(devfile), True)

        self.assertEqual(file(original).read(), file(devlocalfile).read())

        os.remove(devlocalfile)
コード例 #15
0
    def test_DomainManagerId(self):
        self.assertNotEqual(self._domMgr, None)

        # Load the ID from the XML file
        dom = minidom.parse(os.path.join(scatest.getSdrPath(), "dom/domain/DomainManager.dmd.xml"))
        expectedId = dom.getElementsByTagName("domainmanagerconfiguration")[0].getAttribute("id")
        providedId = self._domMgr._get_identifier()
        self.assertEqual(providedId, expectedId, msg="Violation of SR:213 and/or SR:214")

        # According to SCA section D.8.1, the id is supposed to be a DCE UUID
        self.assertIsDceUUID(expectedId, msg="Violation of SCA D.8.1")
コード例 #16
0
    def test_GetPropertySet(self):
        testing.setSoftPkg(os.path.join(scatest.getSdrPath(), "dom", "components", "CommandWrapper", "CommandWrapper.spd.xml"))
        testing.setImplId("DCE:535a68a7-64e4-424b-9045-5ffc7659bf9d")
        testing.ScaComponentTestCase.runTest = lambda : None
        tc = testing.ScaComponentTestCase()
        tc.setUp()

        execparams = tc.getPropertySet(kinds=("execparam",), modes=("readwrite", "writeonly"))
        execparams = dict([(p.id, any.from_any(p.value)) for p in execparams])
        self.assertEqual(execparams.has_key("EXEC_PARAM_1"), True)
        self.assertEqual(execparams.has_key("EXEC_PARAM_2"), True)
        self.assertEqual(execparams.has_key("EXEC_PARAM_4"), True)
        self.assertEqual(execparams.has_key("SOMEOBJREF"), True)

        self.assertEqual(execparams["EXEC_PARAM_1"], "Test1")
        self.assertEqual(execparams["EXEC_PARAM_2"], 2)
        self.assertEqual(execparams["EXEC_PARAM_4"], True)
        self.assertEqual(execparams["SOMEOBJREF"], None)

        execparams = tc.getPropertySet(kinds=("execparam",), modes=("readwrite", "writeonly"), includeNil=False)
        execparams = dict([(p.id, any.from_any(p.value)) for p in execparams])
        self.assertEqual(execparams.has_key("EXEC_PARAM_1"), True)
        self.assertEqual(execparams.has_key("EXEC_PARAM_2"), True)
        self.assertEqual(execparams.has_key("EXEC_PARAM_4"), True)
        self.assertEqual(execparams.has_key("SOMEOBJREF"), False)

        self.assertEqual(execparams["EXEC_PARAM_1"], "Test1")
        self.assertEqual(execparams["EXEC_PARAM_2"], 2)
        self.assertEqual(execparams["EXEC_PARAM_4"], True)

        cfgparams = tc.getPropertySet(kinds=("configure",), modes=("readwrite", "writeonly"))
        cfgparams = dict([(p.id, any.from_any(p.value)) for p in cfgparams])
        self.assertEqual(cfgparams.has_key("DCE:a4e7b230-1d17-4a86-aeff-ddc6ea3df26e"), True)
        self.assertEqual(cfgparams.has_key("DCE:5d8bfe8d-bc25-4f26-8144-248bc343aa53"), True)
        self.assertEqual(cfgparams.has_key("DCE:ffe634c9-096d-425b-86cc-df1cce50612f"), True)
        self.assertEqual(cfgparams.has_key("DCE:fa8c5924-845c-484a-81df-7941f2c5baa9"), True)
        self.assertEqual(cfgparams.has_key("DCE:a7de97ee-1e78-45e9-8e2b-204c141656fc"), True)
        self.assertEqual(cfgparams.has_key("DCE:9ec6e2ff-6a4f-4452-8f38-4df47d6eebc1"), True)
        self.assertEqual(cfgparams.has_key("DCE:cf623573-a09d-4fb1-a2ae-24b0b507115d"), True)
        self.assertEqual(cfgparams.has_key("DCE:6ad84383-49cf-4017-b7ca-0ec4c4917952"), True)
        
        self.assertEqual(cfgparams["DCE:a4e7b230-1d17-4a86-aeff-ddc6ea3df26e"], "/bin/echo")
        self.assertEqual(cfgparams["DCE:5d8bfe8d-bc25-4f26-8144-248bc343aa53"], ["Hello World"])
        self.assertEqual(cfgparams["DCE:ffe634c9-096d-425b-86cc-df1cce50612f"], [{"id": 'item1', 'value': 'value1'},
                                                                                 {"id": 'item2', 'value': 100},
                                                                                 {"id": 'item3', 'value': 3.14156}
                                                                                ])
        self.assertEqual(cfgparams["DCE:fa8c5924-845c-484a-81df-7941f2c5baa9"], 10000)
        self.assertEqual(cfgparams["DCE:a7de97ee-1e78-45e9-8e2b-204c141656fc"], 12345678901)
        self.assertEqual(cfgparams["DCE:9ec6e2ff-6a4f-4452-8f38-4df47d6eebc1"], 11111111111)
        self.assertEqual(cfgparams["DCE:cf623573-a09d-4fb1-a2ae-24b0b507115d"], 500.0)
        self.assertEqual(cfgparams["DCE:6ad84383-49cf-4017-b7ca-0ec4c4917952"], None)
    def test_DASAllocationFail(self):
        self._domMgr.installApplication("/waveforms/CapacityUsage/CapacityUsage.sad.xml")

        # Start the first DeviceManager
        nb1, node1 = self.launchDeviceManager("/nodes/test_BasicTestDevice_node/DeviceManager.dcd.xml", debug=9)

        # Ensure the expected device is available
        self.assertNotEqual(node1, None)
        self.assertEqual(len(node1._get_registeredDevices()), 1) 
        device1 = node1._get_registeredDevices()[0]
        self.assertEqual(self._getBogoMips(device1), 100000000)

        appFact = self._domMgr._get_applicationFactories()[0]

        # load the device assignment sequence
        das = minidom.parse(os.path.join(scatest.getSdrPath(), "dom/waveforms/CapacityUsage/CapacityUsage_DAS.xml"))
        ds = []
        deviceAssignmentTypeNodeList = das.getElementsByTagName("deviceassignmenttype")
        for node in deviceAssignmentTypeNodeList:
            componentid = node.getElementsByTagName("componentid")[0].firstChild.data
            assigndeviceid = node.getElementsByTagName("assigndeviceid")[0].firstChild.data
            ds.append( CF.DeviceAssignmentType(str(componentid),str(assigndeviceid)) )

        # Create two applications to take up the capacity of the first device

        # first on uses DAS
        app1 = appFact.create(appFact._get_name(), [], ds)
        self.assertEqual(self._getBogoMips(device1), 50000000)

        # second one is sans DAS
        app2 = appFact.create(appFact._get_name(), [], [])
        self.assertEqual(self._getBogoMips(device1), 0)

        # Try to create another app, which should fail due to lack of capacity.
        # doing this with DAS since it exercises a different piece of code
        try:
            failApp = appFact.create(appFact._get_name(), [], ds)
            failApp.releaseObject()
            self.fail("Created application with no capacity")
        except:
            pass

        app2.releaseObject()
        self.assertEqual(self._getBogoMips(device1), 50000000)
        app1.releaseObject()
        self.assertEqual(self._getBogoMips(device1), 100000000)

        self._domMgr.uninstallApplication(appFact._get_identifier())
コード例 #18
0
    def test_DomainManagerId(self):
        self.assertNotEqual(self._domMgr, None)

        # Load the ID from the XML file
        dom = minidom.parse(
            os.path.join(scatest.getSdrPath(),
                         "dom/domain/DomainManager.dmd.xml"))
        expectedId = dom.getElementsByTagName(
            "domainmanagerconfiguration")[0].getAttribute("id")
        providedId = self._domMgr._get_identifier()
        self.assertEqual(providedId,
                         expectedId,
                         msg="Violation of SR:213 and/or SR:214")

        # According to SCA section D.8.1, the id is supposed to be a DCE UUID
        self.assertIsDceUUID(expectedId, msg="Violation of SCA D.8.1")
コード例 #19
0
    def test_DeviceLaunch(self):
        # Simulate ScaComponentTestProgram
        testing.setSoftPkg(os.path.join(scatest.getSdrPath(), "dev", "devices", "BasicTestDevice", "BasicTestDevice.spd.xml"))
        testing.setImplId("DCE:0ef71fab-731d-4ee1-a528-a6da2207e0c5")

        testing.ScaComponentTestCase.runTest = lambda : None
        tc = testing.ScaComponentTestCase()
        tc.setUp()

        self.assertEqual(tc.comp_obj, None)
        self.assertEqual(len(tc._processes), 0)

        tc.launch(ossiehome=os.getcwd()+'/../base/')
        pid = None
        comp_obj = None
        try:
            self.assertNotEqual(tc.comp_obj, None)
            self.assertEqual(len(tc._processes), 1)
            pid = tc._processes.keys()[0]
            comp_obj = tc.comp_obj
            try:
                os.kill(pid, 0)
            except OSError:
                self.fail("Component process not alive")
            self.assertEqual(comp_obj._non_existent(), False)
            self.assertEqual(tc.comp_obj._is_a("IDL:CF/Resource:1.0"), True)
            self.assertEqual(tc.comp_obj._is_a("IDL:CF/Device:1.0"), True)
            self.assertEqual(tc.comp_obj._is_a("IDL:CF/LoadableDevice:1.0"), True)
            self.assertEqual(tc.comp_obj._is_a("IDL:CF/ExecutableDevice:1.0"), True)
        finally:
            tc.tearDown()

        self.assertNotEqual(comp_obj, None)
        try:
            nonExistent = comp_obj._non_existent()
        except CORBA.TRANSIENT:
            nonExistent = True
        self.assertEqual(nonExistent, True)
        self.assertEqual(tc.comp_obj, None)
        self.assertEqual(len(tc._processes), 0)
        self.assertNotEqual(pid, None)
        try:
            os.kill(pid, 0)
        except OSError:
            pass
        else:
            self.fail("Component process did not die")
コード例 #20
0
    def test_SimpleLaunch(self):
        os.environ['OSSIEHOME'] = 'foo'
        # Simulate ScaComponentTestProgram
        testing.setSoftPkg(os.path.join(scatest.getSdrPath(), "dom", "components", "CommandWrapper", "CommandWrapper.spd.xml"))
        testing.setImplId("DCE:535a68a7-64e4-424b-9045-5ffc7659bf9d")

        testing.ScaComponentTestCase.runTest = lambda : None
        tc = testing.ScaComponentTestCase()
        tc.setUp()

        self.assertEqual(tc.comp_obj, None)
        self.assertEqual(len(tc._processes), 0)

        tc.launch(ossiehome=os.getcwd()+'/../base/')
        pid = None
        comp_obj = None
        try:
            self.assertNotEqual(tc.comp_obj, None)
            self.assertEqual(len(tc._processes), 1)
            pid = tc._processes.keys()[0]
            comp_obj = tc.comp_obj
            try:
                os.kill(pid, 0)
            except OSError:
                self.fail("Component process not alive")
            self.assertEqual(comp_obj._non_existent(), False)
            self.assertEqual(tc.comp_obj._is_a("IDL:CF/Resource:1.0"), True)
        finally:
            tc.tearDown()

        self.assertNotEqual(comp_obj, None)
        try:
            nonExistent = comp_obj._non_existent()
        except CORBA.TRANSIENT:
            nonExistent = True
        self.assertEqual(nonExistent, True)
        self.assertEqual(tc.comp_obj, None)
        self.assertEqual(len(tc._processes), 0)
        self.assertNotEqual(pid, None)
        try:
            os.kill(pid, 0)
        except OSError:
            pass
        else:
            self.fail("Component process did not die")
コード例 #21
0
    def _test_FileChanged(self, nodeName, deviceName):
        # Test that updating a file in the SCA filesystem causes a device to reload that file
        # in its cache.
        deviceCacheDir = os.path.join(scatest.getSdrPath(), "dev", "." + nodeName, deviceName)
        if os.path.exists(deviceCacheDir):
            os.system("rm -rf %s" % deviceCacheDir)

        self.assertNotEqual(self._domMgr, None)
        fileMgr = self._domMgr._get_fileMgr()
        
        # Ensure the expected device is available
        devBooter, devMgr = self.launchDeviceManager(dcdFile="/nodes/test_%s/DeviceManager.dcd.xml" % nodeName, debug=9)
        self.assertNotEqual(devMgr, None)
        self.assertEqual(len(devMgr._get_registeredDevices()), 1)
        device = devMgr._get_registeredDevices()[0]

        # Create the initial file we'll be loading.
        testFile = 'test.out'
        scaPath = '/' + testFile
        srcFile = os.path.join(os.environ['SDRROOT'], 'dom', testFile)
        f = open(srcFile, 'w')
        f.write('Pre')
        f.close()
        self._testFiles.append(srcFile)

        # Load the initial file onto the device and verify that it contains the expected text.
        device.load(fileMgr, scaPath, CF.LoadableDevice.EXECUTABLE)
        cacheFile = os.path.join(deviceCacheDir, testFile)
        f = open(cacheFile, 'r')
        self.assertEqual(f.readline(), 'Pre')
        f.close()

        # Update the file, making sure that the modification time is more recent than the cached file.
        f = open(srcFile, 'w')
        f.write('Post')
        f.close()
        os.utime(srcFile, (os.path.getatime(cacheFile), os.path.getmtime(cacheFile)+1))

        # Load the file again and verify that the cache has been updated.
        device.load(fileMgr, scaPath, CF.LoadableDevice.EXECUTABLE)
        f = open(cacheFile, 'r')
        self.assertEqual(f.readline(), 'Post')
        f.close()
コード例 #22
0
    def test_DeviceManagerURIOverride(self):
        # Test that the device manager DCD can override the log4cxx URI
        domNB, domMgr = self.launchDomainManager(loggingURI="")
        self.assertNotEqual(domMgr, None)

        # Launch a device manager
        devNB, devMgr = self.launchDeviceManager(
            "/nodes/test_LoggingBasicTestDevice_node/DeviceManager.dcd.xml",
            loggingURI="dev/mgr/logging.properties")
        self.assertNotEqual(devMgr, None)

        # Double check the DeviceManager LOGGING_CONFIG_URI
        prop = CF.DataType(id="LOGGING_CONFIG_URI", value=any.to_any(None))
        result = devMgr.query([prop])
        self.assertEqual(len(result), 1)
        self.assertEqual(result[0].id, "LOGGING_CONFIG_URI")
        devLoggingConfigURI = result[0].value._v
        expectedDevLoggingConfigUri = "file://" + os.path.join(
            scatest.getSdrPath(), "dev/mgr/logging.properties")
        self.assertEqual(devLoggingConfigURI, expectedDevLoggingConfigUri)

        # Check the devices exec params
        self.assertEqual(len(devMgr._get_registeredDevices()), 1)
        device = devMgr._get_registeredDevices()[0]
        execparams = device.query([
            CF.DataType(id="DCE:85d133fd-1658-4e4d-b3ff-1443cd44c0e2",
                        value=any.to_any(None))
        ])[0]
        args = execparams.value._v.split()
        execparams = {}
        while len(args) > 0:
            name = args.pop(0)
            value = args.pop(0)
            execparams[name] = value

        self.assert_(execparams.has_key("LOGGING_CONFIG_URI"))
        devMgrFileSysIOR = self._orb.object_to_string(devMgr._get_fileSys())
        self.assertEqual(execparams["LOGGING_CONFIG_URI"].split("?fs=")[0],
                         "sca:///mgr/logging.properties")
        execparamObj = self._orb.string_to_object(
            execparams["LOGGING_CONFIG_URI"].split("?fs=")[1])
        # Need to compare actual objects since the IOR strings could potentially differ for the same object
        self.assert_(devMgr._get_fileSys()._is_equivalent(execparamObj))
コード例 #23
0
    def test_DeviceManagerURIOverride(self):
        # Test that the device manager DCD can override the log4cxx URI
        domNB, domMgr = self.launchDomainManager(loggingURI="")
        self.assertNotEqual(domMgr, None)

        # Launch a device manager
        devNB, devMgr = self.launchDeviceManager(
            "/nodes/test_LoggingBasicTestDevice_node/DeviceManager.dcd.xml", loggingURI="dev/mgr/logging.properties"
        )
        self.assertNotEqual(devMgr, None)

        # Double check the DeviceManager LOGGING_CONFIG_URI
        prop = CF.DataType(id="LOGGING_CONFIG_URI", value=any.to_any(None))
        result = devMgr.query([prop])
        self.assertEqual(len(result), 1)
        self.assertEqual(result[0].id, "LOGGING_CONFIG_URI")
        devLoggingConfigURI = result[0].value._v
        expectedDevLoggingConfigUri = "file://" + os.path.join(scatest.getSdrPath(), "dev/mgr/logging.properties")
        self.assertEqual(devLoggingConfigURI, expectedDevLoggingConfigUri)

        # Check the devices exec params
        self.assertEqual(len(devMgr._get_registeredDevices()), 1)
        device = devMgr._get_registeredDevices()[0]
        execparams = device.query([CF.DataType(id="DCE:85d133fd-1658-4e4d-b3ff-1443cd44c0e2", value=any.to_any(None))])[
            0
        ]
        args = execparams.value._v.split()
        execparams = {}
        while len(args) > 0:
            name = args.pop(0)
            value = args.pop(0)
            execparams[name] = value

        self.assert_(execparams.has_key("LOGGING_CONFIG_URI"))
        devMgrFileSysIOR = self._orb.object_to_string(devMgr._get_fileSys())
        self.assertEqual(execparams["LOGGING_CONFIG_URI"].split("?fs=")[0], "sca:///mgr/logging.properties")
        execparamObj = self._orb.string_to_object(execparams["LOGGING_CONFIG_URI"].split("?fs=")[1])
        # Need to compare actual objects since the IOR strings could potentially differ for the same object
        self.assert_(devMgr._get_fileSys()._is_equivalent(execparamObj))
コード例 #24
0
    def test_DomainManagerApplicationLifecycle(self):
        self.assertNotEqual(self._domMgr, None)
        self.assertEqual(len(self._domMgr._get_applicationFactories()), 0)
        self.assertEqual(len(self._domMgr._get_applications()), 0)

        # This filename isn't in compliance with SCA, but it is necessary for OSSIE
        self._domMgr.installApplication("/waveforms/CommandWrapper/CommandWrapper.sad.xml")
        self.assertEqual(len(self._domMgr._get_applicationFactories()), 1)
        self.assertEqual(len(self._domMgr._get_applications()), 0)

        appFact = self._domMgr._get_applicationFactories()[0]
        dom = minidom.parse(os.path.join(scatest.getSdrPath(), "dom/waveforms/CommandWrapper/CommandWrapper.sad.xml"))
        expectedId = dom.getElementsByTagName("softwareassembly")[0].getAttribute("id")
        providedId = appFact._get_identifier() 
        self.assertEqual(providedId, expectedId, msg="Violation of SR:155 and/or SR:156")
        
        expectedName = dom.getElementsByTagName("softwareassembly")[0].getAttribute("name")
        providedName = appFact._get_name() 
        self.assertEqual(providedName, expectedName, msg="Violation of SR:153")

        self._domMgr.uninstallApplication(providedId)
        self.assertEqual(len(self._domMgr._get_applicationFactories()), 0)
        self.assertEqual(len(self._domMgr._get_applications()), 0)
コード例 #25
0
    def test_DeviceLaunch(self):
        # Simulate ScaComponentTestProgram
        testing.setSoftPkg(
            os.path.join(scatest.getSdrPath(), "dev", "devices",
                         "BasicTestDevice", "BasicTestDevice.spd.xml"))
        testing.setImplId("DCE:0ef71fab-731d-4ee1-a528-a6da2207e0c5")

        testing.ScaComponentTestCase.runTest = lambda: None
        tc = testing.ScaComponentTestCase()
        tc.setUp()

        self.assertEqual(tc.comp_obj, None)
        self.assertEqual(tc.comp, None)

        tc.launch(ossiehome=os.getcwd() + '/../')
        comp_obj = None
        try:
            self.assertNotEqual(tc.comp_obj, None)
            self.assertNotEqual(tc.comp, None)
            comp_obj = tc.comp_obj
            self.assertEqual(comp_obj._non_existent(), False)
            self.assertEqual(tc.comp_obj._is_a("IDL:CF/Resource:1.0"), True)
            self.assertEqual(tc.comp_obj._is_a("IDL:CF/Device:1.0"), True)
            self.assertEqual(tc.comp_obj._is_a("IDL:CF/LoadableDevice:1.0"),
                             True)
            self.assertEqual(tc.comp_obj._is_a("IDL:CF/ExecutableDevice:1.0"),
                             True)
        finally:
            tc.tearDown()

        self.assertNotEqual(comp_obj, None)
        try:
            nonExistent = comp_obj._non_existent()
        except CORBA.TRANSIENT:
            nonExistent = True
        self.assertEqual(nonExistent, True)
        self.assertEqual(tc.comp_obj, None)
コード例 #26
0
    def test_py_UnloadOnRelease(self):
        # Test that releasing the device unloads all files
        deviceCacheDir = os.path.join(scatest.getSdrPath(), "dev", ".BasicTestDevice_node", "BasicTestDevice1")
        if os.path.exists(deviceCacheDir):
            os.system("rm -rf %s" % deviceCacheDir)

        self.assertNotEqual(self._domMgr, None)

        # Ensure the expected device is available
        devBooter, devMgr = self.launchDeviceManager("/nodes/test_BasicTestDevice_node/DeviceManager.dcd.xml", debug=9)
        self.assertNotEqual(devMgr, None)
        self.assertEqual(len(devMgr._get_registeredDevices()), 1)
        device = devMgr._get_registeredDevices()[0]

        self.assert_(not os.path.exists(deviceCacheDir + "/components/CommandWrapper"))
        self.assert_(not os.path.exists(deviceCacheDir + "/components/CapacityUser"))

        # Load a some files and directories
        device.load(self._domMgr._get_fileMgr(), "/components/CommandWrapper", CF.LoadableDevice.EXECUTABLE)
        device.load(self._domMgr._get_fileMgr(), "/components/CapacityUser/CapacityUser.py", CF.LoadableDevice.EXECUTABLE)
        device.load(self._domMgr._get_fileMgr(), "/components/CapacityUser/CapacityUser.prf.xml", CF.LoadableDevice.EXECUTABLE)
        device.load(self._domMgr._get_fileMgr(), "/components/CapacityUser/CapacityUser.scd.xml", CF.LoadableDevice.EXECUTABLE)
        device.load(self._domMgr._get_fileMgr(), "/components/CapacityUser/CapacityUser.spd.xml", CF.LoadableDevice.EXECUTABLE)

        # Simply check that the cache dir isn't empty and has the correct number of files
        self.assertEqual(len(os.listdir(deviceCacheDir + "/components/CommandWrapper")), 4)
        self.assertEqual(len(os.listdir(deviceCacheDir + "/components/CapacityUser")), 4)

        device.releaseObject()
        
        # Wait for the device to unregister.
        self.assert_(self._waitRegisteredDevices(devMgr, 0))

        self.assertEqual(len(os.listdir(deviceCacheDir + "/components/CommandWrapper")), 0)
        self.assertEqual(len(os.listdir(deviceCacheDir + "/components/CapacityUser")), 0)

        self.assertEqual(len(self._domMgr._get_deviceManagers()), 1)
コード例 #27
0
    def test_ComponentLoggingRedirect(self):
        logfile = "/var/tmp/commandwrapper.log"
        fp = open(logfile, "w")
        fp.close()

        domNB, domMgr = self.launchDomainManager(loggingURI="dom/mgr/logging_2.properties")
        self.assertNotEqual(domMgr, None)

        # Launch a device manager
        devNB, devMgr = self.launchDeviceManager(
            "/nodes/test_BasicTestDevice_node/DeviceManager.dcd.xml", loggingURI="dev/mgr/logging.properties"
        )
        self.assertNotEqual(domMgr, None)

        # Double check the DomainManager LOGGING_CONFIG_URI
        prop = CF.DataType(id="LOGGING_CONFIG_URI", value=any.to_any(None))
        result = domMgr.query([prop])
        self.assertEqual(len(result), 1)
        self.assertEqual(result[0].id, "LOGGING_CONFIG_URI")
        devLoggingConfigURI = result[0].value._v
        expectedDomLoggingConfigUri = "file://" + os.path.join(scatest.getSdrPath(), "dom/mgr/logging_2.properties")
        self.assertEqual(devLoggingConfigURI, expectedDomLoggingConfigUri)

        # Launch an application
        domMgr.installApplication("/waveforms/CommandWrapper/CommandWrapper.sad.xml")
        self.assertEqual(len(domMgr._get_applicationFactories()), 1)
        self.assertEqual(len(domMgr._get_applications()), 0)

        appFact = domMgr._get_applicationFactories()[0]
        uriOverride = CF.DataType(id="LOGGING_CONFIG_URI", value=any.to_any("sca:///mgr/logging_2.properties"))
        app = appFact.create(appFact._get_name(), [uriOverride], [])

        # Get the desired component
        self.assertEqual(len(app._get_componentNamingContexts()), 1)
        compName = app._get_componentNamingContexts()[0]
        comp = self._root.resolve(URI.stringToName(compName.elementId))._narrow(CF.Resource)
        self.assertNotEqual(comp, None)

        # Check the components exec params
        execparams = comp.query([CF.DataType(id="DCE:85d133fd-1658-4e4d-b3ff-1443cd44c0e2", value=any.to_any(None))])[0]
        args = any.from_any(execparams.value)
        execparams = {}
        for a in args:
            name = a[0]
            value = a[1]
            execparams[name] = value

        app.start()
        app.stop()

        app.releaseObject()

        fp = open(logfile, "r")
        log_contents = fp.read()
        fp.close()
        count_debugs = log_contents.count("DEBUG:")
        count_command = log_contents.count("DEBUG:CommandWrapper")
        self.assertEqual(count_debugs, count_command)

        # Launch an application with a C++ component to exercise Resource_impl logging configure
        domMgr.installApplication("/waveforms/TestCppProps/TestCppProps.sad.xml")
        self.assertEqual(len(domMgr._get_applicationFactories()), 2)
        for appFact in domMgr._get_applicationFactories():
            if appFact._get_name() == "TestCppProps":
                app = appFact.create(appFact._get_name(), [uriOverride], [])
                break
        self.assertEqual(len(domMgr._get_applications()), 1)
コード例 #28
0
    def test_GetPropertySet(self):
        testing.setSoftPkg(
            os.path.join(scatest.getSdrPath(), "dom", "components",
                         "CommandWrapper", "CommandWrapper.spd.xml"))
        testing.setImplId("DCE:535a68a7-64e4-424b-9045-5ffc7659bf9d")
        testing.ScaComponentTestCase.runTest = lambda: None
        tc = testing.ScaComponentTestCase()
        tc.setUp()

        execparams = tc.getPropertySet(kinds=("execparam", ),
                                       modes=("readwrite", "writeonly"))
        execparams = dict([(p.id, any.from_any(p.value)) for p in execparams])
        self.assertEqual(execparams.has_key("EXEC_PARAM_1"), True)
        self.assertEqual(execparams.has_key("EXEC_PARAM_2"), True)
        self.assertEqual(execparams.has_key("EXEC_PARAM_4"), True)
        self.assertEqual(execparams.has_key("SOMEOBJREF"), True)

        self.assertEqual(execparams["EXEC_PARAM_1"], "Test1")
        self.assertEqual(execparams["EXEC_PARAM_2"], 2)
        self.assertEqual(execparams["EXEC_PARAM_4"], True)
        self.assertEqual(execparams["SOMEOBJREF"], None)

        execparams = tc.getPropertySet(kinds=("execparam", ),
                                       modes=("readwrite", "writeonly"),
                                       includeNil=False)
        execparams = dict([(p.id, any.from_any(p.value)) for p in execparams])
        self.assertEqual(execparams.has_key("EXEC_PARAM_1"), True)
        self.assertEqual(execparams.has_key("EXEC_PARAM_2"), True)
        self.assertEqual(execparams.has_key("EXEC_PARAM_4"), True)
        self.assertEqual(execparams.has_key("SOMEOBJREF"), False)

        self.assertEqual(execparams["EXEC_PARAM_1"], "Test1")
        self.assertEqual(execparams["EXEC_PARAM_2"], 2)
        self.assertEqual(execparams["EXEC_PARAM_4"], True)

        cfgparams = tc.getPropertySet(kinds=("configure", ),
                                      modes=("readwrite", "writeonly"))
        cfgparams = dict([(p.id, any.from_any(p.value)) for p in cfgparams])
        self.assertEqual(
            cfgparams.has_key("DCE:a4e7b230-1d17-4a86-aeff-ddc6ea3df26e"),
            True)
        self.assertEqual(
            cfgparams.has_key("DCE:5d8bfe8d-bc25-4f26-8144-248bc343aa53"),
            True)
        self.assertEqual(
            cfgparams.has_key("DCE:ffe634c9-096d-425b-86cc-df1cce50612f"),
            True)
        self.assertEqual(
            cfgparams.has_key("DCE:fa8c5924-845c-484a-81df-7941f2c5baa9"),
            True)
        self.assertEqual(
            cfgparams.has_key("DCE:a7de97ee-1e78-45e9-8e2b-204c141656fc"),
            True)
        self.assertEqual(
            cfgparams.has_key("DCE:9ec6e2ff-6a4f-4452-8f38-4df47d6eebc1"),
            True)
        self.assertEqual(
            cfgparams.has_key("DCE:cf623573-a09d-4fb1-a2ae-24b0b507115d"),
            True)
        self.assertEqual(
            cfgparams.has_key("DCE:6ad84383-49cf-4017-b7ca-0ec4c4917952"),
            True)

        self.assertEqual(cfgparams["DCE:a4e7b230-1d17-4a86-aeff-ddc6ea3df26e"],
                         "/bin/echo")
        self.assertEqual(cfgparams["DCE:5d8bfe8d-bc25-4f26-8144-248bc343aa53"],
                         ["Hello World"])
        self.assertEqual(cfgparams["DCE:ffe634c9-096d-425b-86cc-df1cce50612f"],
                         [{
                             "id": 'item1',
                             'value': 'value1'
                         }, {
                             "id": 'item2',
                             'value': 100
                         }, {
                             "id": 'item3',
                             'value': 3.14156
                         }])
        self.assertEqual(cfgparams["DCE:fa8c5924-845c-484a-81df-7941f2c5baa9"],
                         10000)
        self.assertEqual(cfgparams["DCE:a7de97ee-1e78-45e9-8e2b-204c141656fc"],
                         12345678901)
        self.assertEqual(cfgparams["DCE:9ec6e2ff-6a4f-4452-8f38-4df47d6eebc1"],
                         11111111111)
        self.assertEqual(cfgparams["DCE:cf623573-a09d-4fb1-a2ae-24b0b507115d"],
                         500.0)
        self.assertEqual(cfgparams["DCE:6ad84383-49cf-4017-b7ca-0ec4c4917952"],
                         None)
コード例 #29
0
    def test_DirectoryOperation(self):
        #################
        # test mkdir
        #################

        self.assertNotEqual(self._domMgr, None)
        fileMgr = self._domMgr._get_fileMgr()

        domdir = '/mkdir_test_directory_tmp_local'
        localdomdir = 'dom/mkdir_test_directory_tmp_local'
        devdir = "/DeviceManager/mkdir_test_directory_tmp_mounted"
        localdevdir = "dev/mkdir_test_directory_tmp_mounted"
        domdir_nestedbase = '/mkdir_test_directory_tmp_nested1'
        localdomdir_nestedbase = 'dom/mkdir_test_directory_tmp_nested1'
        devdir_nestedbase = '/DeviceManager/mkdir_test_directory_tmp_nested1'
        localdevdir_nestedbase = 'dev/mkdir_test_directory_tmp_nested1'
        tmpdevfile = '/DeviceManager/mkdir_test_directory_tmp_nested1/foo.txt'
        tmpdevfilenested = '/DeviceManager/mkdir_test_directory_tmp_nested1/nested2/foo.txt'

        # test local mkdir
        if os.path.exists(os.path.join(scatest.getSdrPath(), localdomdir)):
            os.rmdir(os.path.join(scatest.getSdrPath(), localdomdir))
        try:
            fileMgr.mkdir(domdir)
        except:
            self.fail("Something bad happened in fileMgr.mkdir(newdir_local)")
        self.assertEqual(fileMgr.exists(domdir), True)

        # test mounted mkdir
        if os.path.exists(os.path.join(scatest.getSdrPath(), localdevdir)):
            os.rmdir(os.path.join(scatest.getSdrPath(), localdevdir))
        try:
            fileMgr.mkdir(devdir)
        except:
            self.fail(
                "Something bad happened in fileMgr.mkdir(newdir_mounted)")
        self.assertEqual(fileMgr.exists(devdir), True)

        # test nested mkdir local
        if os.path.exists(
                os.path.join(scatest.getSdrPath(),
                             localdomdir_nestedbase + '/nested2')):
            os.rmdir(
                os.path.join(scatest.getSdrPath(),
                             localdomdir_nestedbase + '/nested2'))
        if os.path.exists(
                os.path.join(scatest.getSdrPath(), localdomdir_nestedbase)):
            os.rmdir(os.path.join(scatest.getSdrPath(),
                                  localdomdir_nestedbase))
        try:
            fileMgr.mkdir(domdir_nestedbase + '/nested2')
        except:
            self.fail(
                "Something bad happened in fileMgr.mkdir(domdir_nestedbase)")
        self.assertEqual(fileMgr.exists(domdir_nestedbase + '/nested2'), True)

        # test nested mkdir mounted
        # also test trailing '/'
        if os.path.exists(
                os.path.join(scatest.getSdrPath(),
                             localdevdir_nestedbase + '/nested2')):
            os.rmdir(
                os.path.join(scatest.getSdrPath(),
                             localdevdir_nestedbase + '/nested2'))
        if os.path.exists(
                os.path.join(scatest.getSdrPath(), localdevdir_nestedbase)):
            os.rmdir(os.path.join(scatest.getSdrPath(),
                                  localdevdir_nestedbase))
        try:
            fileMgr.mkdir(devdir_nestedbase + '/nested2/')
        except:
            self.fail(
                "Something bad happened in fileMgr.mkdir(devdir_nestedbase)")
        self.assertEqual(fileMgr.exists(devdir_nestedbase + '/nested2'), True)

        #################
        # test rmdir
        #################

        #remove empty directory
        try:
            fileMgr.rmdir(domdir)
            fileMgr.rmdir(devdir)
        except:
            self.fail("Something bad happened in fileMgr.rmdir()")
        self.assertEqual(fileMgr.exists(domdir), False)
        self.assertEqual(fileMgr.exists(devdir), False)

        #remove nested empty directories
        try:
            fileMgr.rmdir(domdir_nestedbase)
        except:
            self.fail(
                "Something bad happened in fileMgr.rmdir(domdir_nestedbase)")
        self.assertEqual(fileMgr.exists(domdir_nestedbase + '/nested2'), False)
        self.assertEqual(fileMgr.exists(domdir_nestedbase), False)

        #make sure remove doesn't happen if files are in directory
        newfile = fileMgr.create(tmpdevfile)
        newfile.close()
        try:
            fileMgr.rmdir(devdir_nestedbase)
            self.fail("rmdir should not have worked. Directory not empty")
        except:
            self.assertEqual(fileMgr.exists(devdir_nestedbase + '/nested2'),
                             True)
        fileMgr.remove(tmpdevfile)
        self.assertEqual(fileMgr.exists(tmpdevfile), False)

        #same thing as above, but in a nested directory
        newfile = fileMgr.create(tmpdevfilenested)
        newfile.close()
        try:
            fileMgr.rmdir(devdir_nestedbase)
            self.fail("rmdir should not have worked. Directory not empty")
        except:
            self.assertEqual(fileMgr.exists(devdir_nestedbase + '/nested2'),
                             True)
        fileMgr.remove(tmpdevfilenested)
        self.assertEqual(fileMgr.exists(tmpdevfilenested), False)

        #remove the mounted nested directories
        try:
            fileMgr.rmdir(devdir_nestedbase)
        except:
            self.fail(
                "Something bad happened in fileMgr.rmdir(devdir_nestedbase)")
        self.assertEqual(fileMgr.exists(devdir_nestedbase + '/nested2'), False)
        self.assertEqual(fileMgr.exists(devdir_nestedbase), False)

        # make sure error is thrown if trying to remove a directory that doesn't exists
        try:
            fileMgr.rmdir(domdir)
            self.fail("mdir should not have worked. Directory does not exist")
        except:
            self.assertEqual(fileMgr.exists(domdir), False)
コード例 #30
0
    def test_ComponentLoggingRedirect(self):
        logfile = '/var/tmp/commandwrapper.log'
        fp = open(logfile, 'w')
        fp.close()

        domNB, domMgr = self.launchDomainManager(
            loggingURI="dom/mgr/logging_2.properties")
        self.assertNotEqual(domMgr, None)

        # Launch a device manager
        devNB, devMgr = self.launchDeviceManager(
            "/nodes/test_BasicTestDevice_node/DeviceManager.dcd.xml",
            loggingURI="dev/mgr/logging.properties")
        self.assertNotEqual(domMgr, None)

        # Double check the DomainManager LOGGING_CONFIG_URI
        prop = CF.DataType(id="LOGGING_CONFIG_URI", value=any.to_any(None))
        result = domMgr.query([prop])
        self.assertEqual(len(result), 1)
        self.assertEqual(result[0].id, "LOGGING_CONFIG_URI")
        devLoggingConfigURI = result[0].value._v
        expectedDomLoggingConfigUri = "file://" + os.path.join(
            scatest.getSdrPath(), "dom/mgr/logging_2.properties")
        self.assertEqual(devLoggingConfigURI, expectedDomLoggingConfigUri)

        # Launch an application
        domMgr.installApplication(
            "/waveforms/CommandWrapper/CommandWrapper.sad.xml")
        self.assertEqual(len(domMgr._get_applicationFactories()), 1)
        self.assertEqual(len(domMgr._get_applications()), 0)

        appFact = domMgr._get_applicationFactories()[0]
        uriOverride = CF.DataType(
            id="LOGGING_CONFIG_URI",
            value=any.to_any("sca:///mgr/logging_2.properties"))
        app = appFact.create(appFact._get_name(), [uriOverride], [])

        # Get the desired component
        self.assertEqual(len(app._get_componentNamingContexts()), 1)
        compName = app._get_componentNamingContexts()[0]
        comp = self._root.resolve(URI.stringToName(
            compName.elementId))._narrow(CF.Resource)
        self.assertNotEqual(comp, None)

        # Check the components exec params
        execparams = comp.query([
            CF.DataType(id="DCE:85d133fd-1658-4e4d-b3ff-1443cd44c0e2",
                        value=any.to_any(None))
        ])[0]
        args = any.from_any(execparams.value)
        execparams = {}
        for a in args:
            name = a[0]
            value = a[1]
            execparams[name] = value

        app.start()
        app.stop()

        app.releaseObject()

        fp = open(logfile, 'r')
        log_contents = fp.read()
        fp.close()
        count_debugs = log_contents.count('DEBUG:')
        count_command = log_contents.count('DEBUG:CommandWrapper')
        self.assertEqual(count_debugs, count_command)

        # Launch an application with a C++ component to exercise Resource_impl logging configure
        domMgr.installApplication(
            "/waveforms/TestCppProps/TestCppProps.sad.xml")
        self.assertEqual(len(domMgr._get_applicationFactories()), 2)
        for appFact in domMgr._get_applicationFactories():
            if appFact._get_name() == "TestCppProps":
                app = appFact.create(appFact._get_name(), [uriOverride], [])
                break
        self.assertEqual(len(domMgr._get_applications()), 1)
コード例 #31
0
    def test_nodeBooterDomainNameOverride(self):
        """Test that we can allow the user to override the domainname with the --domainname argument."""
        domainName = scatest.getTestDomainName()
        domainMgrURI = URI.stringToName("%s/%s" % (domainName, domainName))
        # Test that we don't already have a bound domain
        try:
            domMgr = self._root.resolve(domainMgrURI)
            self.assertEqual(domMgr, None)
        except CosNaming.NamingContext.NotFound:
            pass # This exception is expected

        nb = Popen("../../control/framework/nodeBooter -D --domainname %s -debug 9 --nopersist" % (domainName), cwd=scatest.getSdrPath(), shell=True)
        domMgr = self.waitDomainManager(domainMgrURI)
        self.assertNotEqual(domMgr, None)

        # Kill the nodebooter
        os.kill(nb.pid, signal.SIGINT)
        self.assertPredicateWithWait(lambda: nb.poll() == 0)

        # Test that we cleaned up the name; this should be automatic because
        # the naming context should be empty.
        try:
            domMgr = self._root.resolve(domainMgrURI)
            self.assertEqual(domMgr, None)
        except CosNaming.NamingContext.NotFound:
            pass # This exception is expected
コード例 #32
0
    def test_nodeBooterDomainNameOverride(self):
        """Test that we can allow the user to override the domainname with the --domainname argument."""
        domainName = scatest.getTestDomainName()
        domainMgrURI = URI.stringToName("%s/%s" % (domainName, domainName))
        # Test that we don't already have a bound domain
        try:
            domMgr = self._root.resolve(domainMgrURI)
            self.assertEqual(domMgr, None)
        except CosNaming.NamingContext.NotFound:
            pass # This exception is expected

        nb = Popen("../../control/framework/nodeBooter -D --domainname %s -debug 9 --nopersist" % (domainName), cwd=scatest.getSdrPath(), shell=True)
        time.sleep(5)

        # Test that the name exists and is a DomainManager
        domMgr = self._root.resolve(domainMgrURI)._narrow(CF.DomainManager)
        self.assertNotEqual(domMgr, None)

        # Kill the nodebooter
        os.kill(nb.pid, signal.SIGINT)
        time.sleep(5) # Give it time to shutdown
        self.assertEqual(nb.poll(), 0)

        # Test that we cleaned up the name; this should be automatic because
        # the naming context should be empty.
        try:
            domMgr = self._root.resolve(domainMgrURI)
            self.assertEqual(domMgr, None)
        except CosNaming.NamingContext.NotFound:
            pass # This exception is expected
コード例 #33
0
 def setUp(self):
     self.devRoot = os.path.join(scatest.getSdrPath(), 'dev')
コード例 #34
0
            "OSSIEUNITTESTSLOGCONFIG already exists as %s. Do you want to continue [Y]/N? "
            % os.environ[OSSIEUNITTESTSLOGCONFIG]).upper()
        if ans == "N":
            sys.exit()
    else:
        os.environ['OSSIEUNITTESTSLOGCONFIG'] = os.path.abspath(
            options.logconfig)

    print ""
    print "Creating the Test Domain"
    print ""
    scatest.createTestDomain()

    print ""
    print "R U N N I N G  T E S T S"
    print "SDRROOT: ", scatest.getSdrPath()
    print ""

    suite = TestCollector(files,
                          testMethodPrefix=options.prefix,
                          prompt=options.prompt)

    if options.xmlfile == None:
        runner = unittest.TextTestRunner(verbosity=options.verbosity)
    else:
        stream = open(options.xmlfile, "w")
        runner = xmlrunner.XMLTestRunner(stream)
    if options.debug:
        import pdb
        pdb.run("runner.run(suite)")
    else:
コード例 #35
0
    def test_py_DirectoryLoad(self):
        self.assertNotEqual(self._domMgr, None)

        self.assertEqual(len(self._domMgr._get_applicationFactories()), 0)
        self.assertEqual(len(self._domMgr._get_applications()), 0)

        # Verify in the devices cache is emtpy
        componentDir = os.path.join(scatest.getSdrPath(), "dom", "components", "CommandWrapperWithDirectoryLoad")
        deviceCacheDir = os.path.join(scatest.getSdrPath(), "dev", ".BasicTestDevice_node", "BasicTestDevice1", "components", "CommandWrapperWithDirectoryLoad")
        if os.path.exists(deviceCacheDir):
            os.system("rm -rf %s" % deviceCacheDir)

        self._domMgr.installApplication("/waveforms/CommandWrapperWithDirectoryLoad/CommandWrapper.sad.xml")
        self.assertEqual(len(self._domMgr._get_applicationFactories()), 1)
        self.assertEqual(len(self._domMgr._get_applications()), 0)

        # Ensure the expected device is available
        devBooter, devMgr = self.launchDeviceManager("/nodes/test_BasicTestDevice_node/DeviceManager.dcd.xml", debug=9)
        self.assertNotEqual(devMgr, None)
        self.assertEqual(len(devMgr._get_registeredDevices()), 1)
        device = devMgr._get_registeredDevices()[0]

        appFact = self._domMgr._get_applicationFactories()[0]

        app = appFact.create(appFact._get_name(), [], []) # LOOK MA, NO DAS!

        self.assertEqual(len(self._domMgr._get_applicationFactories()), 1)
        self.assertEqual(len(self._domMgr._get_applications()), 1)

        # Verify that properties have been changed from their defaults
        self.assertEqual(len(app._get_componentNamingContexts()), 1)
        compName = app._get_componentNamingContexts()[0]
        comp = self._root.resolve(URI.stringToName(compName.elementId))._narrow(CF.Resource)
        self.assertNotEqual(comp, None)

        cmd = comp.query([CF.DataType(id="DCE:a4e7b230-1d17-4a86-aeff-ddc6ea3df26e", value=any.to_any(None))])[0]
        args = comp.query([CF.DataType(id="DCE:5d8bfe8d-bc25-4f26-8144-248bc343aa53", value=any.to_any(None))])[0]
        self.assertEqual(cmd.value._v, "/bin/echo")
        self.assertEqual(args.value._v, ["Hello World"])

        # Verify in the devices cache that the directory structure was mirrored exactly
        for root, dirs, files in os.walk(componentDir):
            # turn the abs path in to a relative path
            rel_root = root[len(componentDir)+1:]
            for dir in dirs:
                # Hidden files aren't loaded
                if dir[0] != ".":
                    expectedDir = os.path.join(deviceCacheDir, rel_root, dir)
                    self.assertEqual(os.path.isdir(expectedDir), True, "Dir %s not found at %s" % (dir, expectedDir))
                else:
                    # Don't descend into hidden sub-dirs
                    dirs.remove(dir)
            for f in files:
                # Hidden files aren't loaded
                if f[0] != ".":
                    expectedFile = os.path.join(deviceCacheDir, rel_root, f)
                    self.assertEqual(os.path.isfile(expectedFile), True, "File %s not found at %s" % (f, expectedFile))

        app.stop()
        app.releaseObject()
        self.assertEqual(len(self._domMgr._get_applicationFactories()), 1)
        self.assertEqual(len(self._domMgr._get_applications()), 0)

        self._domMgr.uninstallApplication(appFact._get_identifier())
    def test_BasicOperation(self):
        nodebooter, domMgr = self.launchDomainManager(debug=9)
        self.assertNotEqual(domMgr, None)
        self.assertEqual(len(domMgr._get_applicationFactories()), 0)
        self.assertEqual(len(domMgr._get_applications()), 0)

        domMgr.installApplication("/waveforms/CommandWrapper/CommandWrapper.sad.xml")
        self.assertEqual(len(domMgr._get_applicationFactories()), 1)
        self.assertEqual(len(domMgr._get_applications()), 0)

        # Load on the  device ID
        das = minidom.parse(os.path.join(scatest.getSdrPath(), "dom/waveforms/CommandWrapper/CommandWrapper_DAS.xml"))
        ds = []
        deviceAssignmentTypeNodeList = das.getElementsByTagName("deviceassignmenttype")
        for node in deviceAssignmentTypeNodeList:
            componentid = node.getElementsByTagName("componentid")[0].firstChild.data
            assigndeviceid = node.getElementsByTagName("assigndeviceid")[0].firstChild.data
            ds.append( CF.DeviceAssignmentType(str(componentid),str(assigndeviceid)) )

        # Ensure the expected device is available
        nodebooter, devMgr = self.launchDeviceManager(dcdFile="/nodes/test_BasicTestDevice_node/DeviceManager.dcd.xml", debug=9)
        self.assertNotEqual(devMgr, None)
        self.assertEqual(len(ds), 1)
        self.assertEqual(len(devMgr._get_registeredDevices()), 1)
        device = devMgr._get_registeredDevices()[0]
        self.assertEqual(device._get_identifier(), ds[0].assignedDeviceId)

        # Query the known allocation properties
        memCapacity = device.query([CF.DataType(id="DCE:8dcef419-b440-4bcf-b893-cab79b6024fb", value=any.to_any(None))])[0]
        bogoMips = device.query([CF.DataType(id="DCE:5636c210-0346-4df7-a5a3-8fd34c5540a8", value=any.to_any(None))])[0]
        self.assertEqual(memCapacity.value._v, 100000000)
        self.assertEqual(bogoMips.value._v, 100000000)
        # query all properties, make sure that only 'external' properties show up
        allProps = device.query([])

        # convert props to a dict
        allProps = dict([(x.id, x.value) for x in allProps])
        # This isn't all of them...but a fair amount
        self.assertEqual(allProps.has_key("DCE:4a23ad60-0b25-4121-a630-68803a498f75"), False)  # os_name
        self.assertEqual(allProps.has_key("DCE:fefb9c66-d14a-438d-ad59-2cfd1adb272b"), False) # processor_name
        self.assertEqual(allProps.has_key("DCE:7f36cdfb-f828-4e4f-b84f-446e17f1a85b"), False) # DeviceKind
        self.assertEqual(allProps.has_key("DCE:64303822-4c67-4c04-9a5c-bf670f27cf39"), False) # RunsAs
        self.assertEqual(allProps.has_key("DCE:021f10cf-7a05-46ec-a507-04b513b84bd4"), False) # HasXMIDAS

        appFact = domMgr._get_applicationFactories()[0]
        app = appFact.create(appFact._get_name(), [], ds)

        self.assertEqual(len(domMgr._get_applicationFactories()), 1)
        self.assertEqual(len(domMgr._get_applications()), 1)
        
        self.assertEqual(app._get_started(), False)
        app.start()
        self.assertEqual(app._get_started(), True)

        # Verify that capacity was allocated
        memCapacity = device.query([CF.DataType(id="DCE:8dcef419-b440-4bcf-b893-cab79b6024fb", value=any.to_any(None))])[0]
        bogoMips = device.query([CF.DataType(id="DCE:5636c210-0346-4df7-a5a3-8fd34c5540a8", value=any.to_any(None))])[0]
        self.assertEqual(memCapacity.value._v, 100000000-5000)
        self.assertEqual(bogoMips.value._v, 100000000-1000)

        app.stop()
        self.assertEqual(app._get_started(), False)
        app.releaseObject()
        self.assertEqual(len(domMgr._get_applicationFactories()), 1)
        self.assertEqual(len(domMgr._get_applications()), 0)

        # Verify that capacity was deallocated
        memCapacity = device.query([CF.DataType(id="DCE:8dcef419-b440-4bcf-b893-cab79b6024fb", value=any.to_any(None))])[0]
        bogoMips = device.query([CF.DataType(id="DCE:5636c210-0346-4df7-a5a3-8fd34c5540a8", value=any.to_any(None))])[0]
        self.assertEqual(memCapacity.value._v, 100000000)
        self.assertEqual(bogoMips.value._v, 100000000)

        domMgr.uninstallApplication(appFact._get_identifier())
コード例 #37
0
    def test_BasicOperation(self):
        self.assertNotEqual(self._domMgr, None)
        fileMgr = self._domMgr._get_fileMgr()

        devfile = "/ExecutableDevice_node/nodes/test_ExecutableDevice_node/DeviceManager.dcd.xml"
        devlocalfile = "dev/nodes/test_ExecutableDevice_node/DeviceManager.dcd.xml"
        domfile = "/waveforms/CommandWrapper/CommandWrapper_DAS.xml"
        domlocalfile = "dom/waveforms/CommandWrapper/CommandWrapper_DAS.xml"
        addon = "foo.txt"
        devnewfile = "/ExecutableDevice_node/nodes/testdev.txt"
        devlocalnewfile = "dev/nodes/testdev.txt"
        domnewfile = "/waveforms/testdom.txt"
        domlocalnewfile = "dom/waveforms/testdom.txt"
        
        str_to_write_dev = "testing 1,2,3 dev"
        str_to_write_dom = "testing 1,2,3 dom"
        


        #################
        # Test exists
        #################
        try:
            fileMgr.exists(devfile)
        except:
            self.fail("Something bad happened in fileMgr.exists(devfile) for mountPoint lookup")
        
        try:
            fileMgr.exists(domfile)
        except:
            self.fail("Something bad happened in fileMgr.exists(domfile) for domain (local fs) lookup")
        
        try:
            fileMgr.exists(devfile + addon)
        except:
            self.fail("Something bad happened in fileMgr.exists(devfile + addon) for mountPoint lookup")
        
        try:
            fileMgr.exists(domfile + addon)
        except:
            self.fail("Something bad happened in fileMgr.exists(domfile + addon) for domain (local fs) lookup")

        self.assertEqual(fileMgr.exists(devfile), True)
        self.assertEqual(fileMgr.exists(domfile), True)
        
        self.assertEqual(fileMgr.exists(devfile+addon), False)
        self.assertEqual(fileMgr.exists(domfile+addon), False)

        #################
        # test open
        #################
        try:
            myfile = fileMgr.open(devfile, True)
        except:
            self.fail("Something bad happened in fileMgr.open(devfile, True) for mountPoint lookup")

        expectedSize = os.stat(os.path.join(scatest.getSdrPath(), devlocalfile))[6]
        self.assertEqual(myfile.sizeOf(), expectedSize)

        try:
            myfile.close()
        except:
            self.fail("Something bad happened in fileMgr.close(devfile, True) for mountPoint lookup")
        
        try:
            myfile = fileMgr.open(domfile, True)
        except:
            self.fail("Something bad happened in fileMgr.open(domfile, True) for domain (local fs) lookup")

        expectedSize = os.stat(os.path.join(scatest.getSdrPath(), domlocalfile))[6]
        self.assertEqual(myfile.sizeOf(), expectedSize)
        
        try:
            myfile.close()
        except:
            self.fail("Something bad happened in fileMgr.close(devfile, True) for mountPoint lookup")

        try:
            myfile = fileMgr.open(devfile+addon, True)
            self.fail("fileMgr.open(devfile+addon, True) should have thrown and exception and it didn't")
        except: pass
        
        try:
            myfile = fileMgr.open(domfile+addon, True)
            self.fail("fileMgr.open(domfile+addon, True) should have thrown and exception and it didn't")
        except: pass
        
        #################
        # test create
        #################
        if os.path.exists(os.path.join(scatest.getSdrPath(), devlocalnewfile)):
            os.remove(os.path.join(scatest.getSdrPath(), devlocalnewfile))

        try:
            myfile = fileMgr.create(devnewfile)
            myfile.write(str_to_write_dev)
            myfile.close()
        except:
            self.fail("Something bad happened in fileMgr.create(devnewfile) for mountPoint lookup")
        self.assertEqual(fileMgr.exists(devnewfile), True)
        
        if os.path.exists(os.path.join(scatest.getSdrPath(), domlocalnewfile)):
            os.remove(os.path.join(scatest.getSdrPath(), domlocalnewfile))

        try:
            myfile = fileMgr.create(domnewfile)
            myfile.write(str_to_write_dom)
            myfile.close()
        except:
            self.fail("Something bad happened in fileMgr.create(domnewfile) for domain (local fs) lookup")
        self.assertEqual(fileMgr.exists(domnewfile), True)
        
        #################
        # test remove
        #################
        try:
            fileMgr.remove(devnewfile)
        except:
            self.fail("Something bad happened in fileMgr.remove(devnewfile) for mountPoint lookup")
        self.assertEqual(fileMgr.exists(devnewfile), False)
        
        try:
            fileMgr.remove(domnewfile)
        except:
            self.fail("Something bad happened in fileMgr.remove(domnewfile) for domain (local fs) lookup")
        self.assertEqual(fileMgr.exists(domnewfile), False)
コード例 #38
0
    def test_DirectoryOperation(self):
        #################
        # test mkdir
        #################

        self.assertNotEqual(self._domMgr, None)
        fileMgr = self._domMgr._get_fileMgr()
        
        domdir = '/mkdir_test_directory_tmp_local'
        localdomdir = 'dom/mkdir_test_directory_tmp_local'
        devdir = "/DeviceManager/mkdir_test_directory_tmp_mounted"
        localdevdir = "dev/mkdir_test_directory_tmp_mounted"
        domdir_nestedbase = '/mkdir_test_directory_tmp_nested1'
        localdomdir_nestedbase = 'dom/mkdir_test_directory_tmp_nested1'
        devdir_nestedbase = '/DeviceManager/mkdir_test_directory_tmp_nested1'
        localdevdir_nestedbase = 'dev/mkdir_test_directory_tmp_nested1'
        tmpdevfile = '/DeviceManager/mkdir_test_directory_tmp_nested1/foo.txt'
        tmpdevfilenested = '/DeviceManager/mkdir_test_directory_tmp_nested1/nested2/foo.txt'
        
        # test local mkdir
        if os.path.exists(os.path.join(scatest.getSdrPath(), localdomdir)):
            os.rmdir(os.path.join(scatest.getSdrPath(), localdomdir))
        try:
            fileMgr.mkdir(domdir)
        except:
            self.fail("Something bad happened in fileMgr.mkdir(newdir_local)")
        self.assertEqual(fileMgr.exists(domdir), True)
            
        # test mounted mkdir
        if os.path.exists(os.path.join(scatest.getSdrPath(), localdevdir)):
            os.rmdir(os.path.join(scatest.getSdrPath(), localdevdir))
        try:
            fileMgr.mkdir(devdir)
        except:
            self.fail("Something bad happened in fileMgr.mkdir(newdir_mounted)")
        self.assertEqual(fileMgr.exists(devdir), True)
        
        # test nested mkdir local
        if os.path.exists(os.path.join(scatest.getSdrPath(), localdomdir_nestedbase + '/nested2')):
            os.rmdir(os.path.join(scatest.getSdrPath(), localdomdir_nestedbase + '/nested2'))
        if os.path.exists(os.path.join(scatest.getSdrPath(), localdomdir_nestedbase)):
            os.rmdir(os.path.join(scatest.getSdrPath(), localdomdir_nestedbase))
        try:
            fileMgr.mkdir(domdir_nestedbase + '/nested2')
        except:
            self.fail("Something bad happened in fileMgr.mkdir(domdir_nestedbase)")
        self.assertEqual(fileMgr.exists(domdir_nestedbase + '/nested2'), True)

        # test nested mkdir mounted
        # also test trailing '/'
        if os.path.exists(os.path.join(scatest.getSdrPath(), localdevdir_nestedbase + '/nested2')):
            os.rmdir(os.path.join(scatest.getSdrPath(), localdevdir_nestedbase + '/nested2'))
        if os.path.exists(os.path.join(scatest.getSdrPath(), localdevdir_nestedbase)):
            os.rmdir(os.path.join(scatest.getSdrPath(), localdevdir_nestedbase))
        try:
            fileMgr.mkdir(devdir_nestedbase + '/nested2/')
        except:
            self.fail("Something bad happened in fileMgr.mkdir(devdir_nestedbase)")
        self.assertEqual(fileMgr.exists(devdir_nestedbase + '/nested2'), True)

        #################
        # test rmdir
        #################

        #remove empty directory
        try:
            fileMgr.rmdir(domdir)
            fileMgr.rmdir(devdir)
        except:
            self.fail("Something bad happened in fileMgr.rmdir()")
        self.assertEqual(fileMgr.exists(domdir), False)
        self.assertEqual(fileMgr.exists(devdir), False)

        #remove nested empty directories
        try:
            fileMgr.rmdir(domdir_nestedbase)
        except:
            self.fail("Something bad happened in fileMgr.rmdir(domdir_nestedbase)")
        self.assertEqual(fileMgr.exists(domdir_nestedbase + '/nested2'), False)
        self.assertEqual(fileMgr.exists(domdir_nestedbase), False)

        #make sure remove doesn't happen if files are in directory
        newfile = fileMgr.create(tmpdevfile)
        newfile.close()
        try:
            fileMgr.rmdir(devdir_nestedbase)
            self.fail("rmdir should not have worked. Directory not empty")
        except:
            self.assertEqual(fileMgr.exists(devdir_nestedbase + '/nested2'), True)
        fileMgr.remove(tmpdevfile)
        self.assertEqual(fileMgr.exists(tmpdevfile), False)

        #same thing as above, but in a nested directory
        newfile = fileMgr.create(tmpdevfilenested)
        newfile.close()
        try:
            fileMgr.rmdir(devdir_nestedbase)
            self.fail("rmdir should not have worked. Directory not empty")
        except:
            self.assertEqual(fileMgr.exists(devdir_nestedbase + '/nested2'), True)
        fileMgr.remove(tmpdevfilenested)
        self.assertEqual(fileMgr.exists(tmpdevfilenested), False)

        #remove the mounted nested directories
        try:
            fileMgr.rmdir(devdir_nestedbase)
        except:
            self.fail("Something bad happened in fileMgr.rmdir(devdir_nestedbase)")
        self.assertEqual(fileMgr.exists(devdir_nestedbase + '/nested2'), False)
        self.assertEqual(fileMgr.exists(devdir_nestedbase), False)

        # make sure error is thrown if trying to remove a directory that doesn't exists
        try:
            fileMgr.rmdir(domdir)
            self.fail("mdir should not have worked. Directory does not exist")
        except:
            self.assertEqual(fileMgr.exists(domdir), False)
コード例 #39
0
    def test_BasicOperation(self):
        self._nb_domMgr, self._domMgr = self.launchDomainManager(
            endpoint="giop:tcp::5679", dbURI=self._dbfile)
        self._nb_devMgr, devMgr = self.launchDeviceManager(
            "/nodes/test_PortTestDevice_node/DeviceManager.dcd.xml")

        self._fileMgr = self._domMgr._get_fileMgr()
        self._files = self._fileMgr.list("/")

        self.assertEqual(len(self._domMgr._get_applicationFactories()), 0)
        self.assertEqual(len(self._domMgr._get_applications()), 0)

        self._domMgr.installApplication(
            "/waveforms/PortConnectProvidesPort/PortConnectProvidesPort.sad.xml"
        )
        self.assertEqual(len(self._domMgr._get_applicationFactories()), 1)
        self.assertEqual(len(self._domMgr._get_applications()), 0)

        # Load on the  device ID
        das = minidom.parse(
            os.path.join(
                scatest.getSdrPath(),
                "dom/waveforms/PortConnectProvidesPort/PortConnectProvidesPort_DAS.xml"
            ))
        ds = []
        deviceAssignmentTypeNodeList = das.getElementsByTagName(
            "deviceassignmenttype")
        for node in deviceAssignmentTypeNodeList:
            componentid = node.getElementsByTagName(
                "componentid")[0].firstChild.data
            assigndeviceid = node.getElementsByTagName(
                "assigndeviceid")[0].firstChild.data
            ds.append(
                CF.DeviceAssignmentType(str(componentid), str(assigndeviceid)))

        # Ensure the expected device is available
        self.assertNotEqual(devMgr, None)
        self.assertEqual(len(devMgr._get_registeredDevices()), 2)
        device1 = None
        device2 = None
        for dev in devMgr._get_registeredDevices():
            if dev._get_identifier(
            ) == "DCE:322fb9b2-de57-42a2-ad03-217bcb244262":
                device1 = dev
            elif dev._get_identifier(
            ) == "DCE:47dc45d8-19b5-4b7e-bcd4-b165babe5b84":
                device2 = dev
        self.assertNotEqual(device1, None)
        self.assertNotEqual(device2, None)

        # Query the known allocation properties
        memCapacity1 = device1.query([
            CF.DataType(id="DCE:8dcef419-b440-4bcf-b893-cab79b6024fb",
                        value=any.to_any(None))
        ])[0]
        bogoMips1 = device1.query([
            CF.DataType(id="DCE:5636c210-0346-4df7-a5a3-8fd34c5540a8",
                        value=any.to_any(None))
        ])[0]
        self.assertEqual(memCapacity1.value._v, 100000000)
        self.assertEqual(bogoMips1.value._v, 100000000)

        memCapacity2 = device2.query([
            CF.DataType(id="DCE:8dcef419-b440-4bcf-b893-cab79b6024fb",
                        value=any.to_any(None))
        ])[0]
        bogoMips2 = device2.query([
            CF.DataType(id="DCE:5636c210-0346-4df7-a5a3-8fd34c5540a8",
                        value=any.to_any(None))
        ])[0]
        self.assertEqual(memCapacity2.value._v, 100000000)
        self.assertEqual(bogoMips2.value._v, 100000000)

        appFact = self._domMgr._get_applicationFactories()[0]
        app = appFact.create(appFact._get_name(), [], ds)

        self.assertEqual(len(self._domMgr._get_applicationFactories()), 1)
        self.assertEqual(len(self._domMgr._get_applications()), 1)
        app = self._domMgr._get_applications()[0]

        # cache off some variables for later for testing purposes
        self.assertEqual(len(app._get_componentNamingContexts()), 2)
        self.assertEqual(len(app._get_componentProcessIds()), 2)
        self.assertEqual(len(app._get_componentDevices()), 4)
        self.assertEqual(len(app._get_componentImplementations()), 2)

        origNamingContexts = app._get_componentNamingContexts()
        origProcessIds = app._get_componentProcessIds()
        origDevices = app._get_componentDevices()
        origImplementations = app._get_componentImplementations()
        origQuery = app.query([])

        # Verify that capacity was allocated
        memCapacity1 = device1.query([
            CF.DataType(id="DCE:8dcef419-b440-4bcf-b893-cab79b6024fb",
                        value=any.to_any(None))
        ])[0]
        bogoMips1 = device1.query([
            CF.DataType(id="DCE:5636c210-0346-4df7-a5a3-8fd34c5540a8",
                        value=any.to_any(None))
        ])[0]
        self.assertEqual(memCapacity1.value._v, 100000000 - (5000))
        self.assertEqual(bogoMips1.value._v, 100000000 - (1000))

        memCapacity2 = device2.query([
            CF.DataType(id="DCE:8dcef419-b440-4bcf-b893-cab79b6024fb",
                        value=any.to_any(None))
        ])[0]
        bogoMips2 = device2.query([
            CF.DataType(id="DCE:5636c210-0346-4df7-a5a3-8fd34c5540a8",
                        value=any.to_any(None))
        ])[0]
        self.assertEqual(memCapacity2.value._v, 100000000 - (5000))
        self.assertEqual(bogoMips2.value._v, 100000000 - (1000))

        # Kill the domainMgr
        os.kill(self._nb_domMgr.pid, signal.SIGTERM)

        # TODO if SIGKILL is used (simulating a nodeBooter unexpected abort,
        # the IOR and the newly spawned domain manager do not work
        if not self.waitTermination(self._nb_domMgr):
            self.fail("Domain Manager Failed to Die")

        # Start the domainMgr again
        self._nb_domMgr, newDomMgr = self.launchDomainManager(
            endpoint="giop:tcp::5679", dbURI=self._dbfile)

        # Verify our client reference still is valid
        newDomMgr._get_identifier()
        self.assertEqual(False, newDomMgr._non_existent())
        #self.assertEqual(self._orb.object_to_string(newDomMgr), self._orb.object_to_string(self._domMgr))
        self.assertEqual(False, self._domMgr._non_existent())

        # Verify that the file manager is still valid
        self.new_files = self._fileMgr.list("/")
        self.assertEqual(len(self._files), len(self.new_files))

        self.assertEqual(len(self._domMgr._get_deviceManagers()), 1)
        newDevMgr = self._domMgr._get_deviceManagers()[0]
        self.assertEqual(self._orb.object_to_string(devMgr),
                         self._orb.object_to_string(newDevMgr))

        self.assertEqual(len(devMgr._get_registeredDevices()), 2)
        newDevice1 = None
        newDevice2 = None
        for dev in devMgr._get_registeredDevices():
            if dev._get_identifier(
            ) == "DCE:322fb9b2-de57-42a2-ad03-217bcb244262":
                newDevice1 = dev
            elif dev._get_identifier(
            ) == "DCE:47dc45d8-19b5-4b7e-bcd4-b165babe5b84":
                newDevice2 = dev
        self.assertNotEqual(newDevice1, None)
        self.assertNotEqual(newDevice2, None)
        self.assertEqual(self._orb.object_to_string(device1),
                         self._orb.object_to_string(newDevice1))
        self.assertEqual(self._orb.object_to_string(device2),
                         self._orb.object_to_string(newDevice2))

        self.assertEqual(len(self._domMgr._get_applicationFactories()), 1)
        newAppFact = self._domMgr._get_applicationFactories()[0]
        self.assertEqual(appFact._get_identifier(),
                         newAppFact._get_identifier())
        self.assertEqual(appFact._get_name(), newAppFact._get_name())

        self.assertEqual(len(self._domMgr._get_applications()), 1)
        newApp = self._domMgr._get_applications()[0]
        # Applications are currently not using persistent POAs, so the IORs will change
        #        self.assertEqual(self._orb.object_to_string(app), self._orb.object_to_string(newApp))

        newNamingContexts = app._get_componentNamingContexts()
        newProcessIds = app._get_componentProcessIds()
        newDevices = app._get_componentDevices()
        newImplementations = app._get_componentImplementations()

        # We have to compare elements individually since newDevices == origDevices even when the contents are identical
        self.assertEqual(len(newDevices), len(origDevices))
        for x in xrange(len(newDevices)):
            self.assertEqual(newDevices[x].componentId,
                             origDevices[x].componentId)
            self.assertEqual(newDevices[x].assignedDeviceId,
                             origDevices[x].assignedDeviceId)

        self.assertEqual(len(newProcessIds), len(origProcessIds))
        for x in xrange(len(newProcessIds)):
            self.assertEqual(newProcessIds[x].componentId,
                             origProcessIds[x].componentId)
            self.assertEqual(newProcessIds[x].processId,
                             origProcessIds[x].processId)

        self.assertEqual(len(newImplementations), len(origImplementations))
        for x in xrange(len(newImplementations)):
            self.assertEqual(newImplementations[x].componentId,
                             origImplementations[x].componentId)
            self.assertEqual(newImplementations[x].elementId,
                             origImplementations[x].elementId)

        self.assertEqual(len(newNamingContexts), len(origNamingContexts))
        for x in xrange(len(newNamingContexts)):
            self.assertEqual(newNamingContexts[x].componentId,
                             origNamingContexts[x].componentId)
            self.assertEqual(newNamingContexts[x].elementId,
                             origNamingContexts[x].elementId)

        # Verify that the connection between the CF::Application and the assemblyController was
        # restored.
        newQuery = app.query([])
        self.assertEqual(len(newQuery), len(origQuery))
        for x in xrange(len(newQuery)):
            self.assertEqual(newQuery[x].id, origQuery[x].id)
            self.assertEqual(newQuery[x].value._v, origQuery[x].value._v)
#
        app.stop()
        app.releaseObject()

        # TODO how can we verify that the ports were disconnected as part of release?
        time.sleep(1)

        self.assertEqual(len(self._domMgr._get_applicationFactories()), 1)
        self.assertEqual(len(self._domMgr._get_applications()), 0)

        # Verify that capacity was deallocated
        memCapacity1 = device1.query([
            CF.DataType(id="DCE:8dcef419-b440-4bcf-b893-cab79b6024fb",
                        value=any.to_any(None))
        ])[0]
        bogoMips1 = device1.query([
            CF.DataType(id="DCE:5636c210-0346-4df7-a5a3-8fd34c5540a8",
                        value=any.to_any(None))
        ])[0]
        self.assertEqual(memCapacity1.value._v, 100000000)
        self.assertEqual(bogoMips1.value._v, 100000000)

        memCapacity2 = device2.query([
            CF.DataType(id="DCE:8dcef419-b440-4bcf-b893-cab79b6024fb",
                        value=any.to_any(None))
        ])[0]
        bogoMips2 = device2.query([
            CF.DataType(id="DCE:5636c210-0346-4df7-a5a3-8fd34c5540a8",
                        value=any.to_any(None))
        ])[0]
        self.assertEqual(memCapacity2.value._v, 100000000)
        self.assertEqual(bogoMips2.value._v, 100000000)

        newDevMgr.shutdown()
        self.assertEqual(len(self._domMgr._get_deviceManagers()), 0)

        self._domMgr.uninstallApplication(appFact._get_identifier())
        self.assertEqual(len(self._domMgr._get_applicationFactories()), 0)
コード例 #40
0
    if os.environ.has_key('OSSIEUNITTESTSLOGCONFIG'):
        ans = raw_input("OSSIEUNITTESTSLOGCONFIG already exists as %s. Do you want to continue [Y]/N? " % os.environ[OSSIEUNITTESTSLOGCONFIG]).upper()
        if ans == "N":
            sys.exit()
    else:
        os.environ['OSSIEUNITTESTSLOGCONFIG'] = os.path.abspath(options.logconfig)
                
    print ""
    print "Creating the Test Domain"
    print ""
    scatest.createTestDomain()

    print ""
    print "R U N N I N G  T E S T S"
    print "SDRROOT: ", scatest.getSdrPath()
    print ""

    suite = TestCollector(files, testMethodPrefix=options.prefix, prompt=options.prompt)

    if options.xmlfile == None:
        runner = unittest.TextTestRunner(verbosity=options.verbosity)
    else:
        stream = open(options.xmlfile, "w")
        runner = xmlrunner.XMLTestRunner(stream)
    if options.debug:
        import pdb
        pdb.run("runner.run(suite)")
    else:
        runner.run(suite)                                                               
コード例 #41
0
    def test_BasicOperation(self):
        nodebooter, domMgr = self.launchDomainManager(debug=9)
        self.assertNotEqual(domMgr, None)
        self.assertEqual(len(domMgr._get_applicationFactories()), 0)
        self.assertEqual(len(domMgr._get_applications()), 0)

        domMgr.installApplication(
            "/waveforms/CommandWrapper/CommandWrapper.sad.xml")
        self.assertEqual(len(domMgr._get_applicationFactories()), 1)
        self.assertEqual(len(domMgr._get_applications()), 0)

        # Load on the  device ID
        das = minidom.parse(
            os.path.join(
                scatest.getSdrPath(),
                "dom/waveforms/CommandWrapper/CommandWrapper_DAS.xml"))
        ds = []
        deviceAssignmentTypeNodeList = das.getElementsByTagName(
            "deviceassignmenttype")
        for node in deviceAssignmentTypeNodeList:
            componentid = node.getElementsByTagName(
                "componentid")[0].firstChild.data
            assigndeviceid = node.getElementsByTagName(
                "assigndeviceid")[0].firstChild.data
            ds.append(
                CF.DeviceAssignmentType(str(componentid), str(assigndeviceid)))

        # Ensure the expected device is available
        nodebooter, devMgr = self.launchDeviceManager(
            dcdFile="/nodes/test_BasicTestDevice_node/DeviceManager.dcd.xml",
            debug=9)
        self.assertNotEqual(devMgr, None)
        self.assertEqual(len(ds), 1)
        self.assertEqual(len(devMgr._get_registeredDevices()), 1)
        device = devMgr._get_registeredDevices()[0]
        self.assertEqual(device._get_identifier(), ds[0].assignedDeviceId)

        # Query the known allocation properties
        memCapacity = device.query([
            CF.DataType(id="DCE:8dcef419-b440-4bcf-b893-cab79b6024fb",
                        value=any.to_any(None))
        ])[0]
        bogoMips = device.query([
            CF.DataType(id="DCE:5636c210-0346-4df7-a5a3-8fd34c5540a8",
                        value=any.to_any(None))
        ])[0]
        self.assertEqual(memCapacity.value._v, 100000000)
        self.assertEqual(bogoMips.value._v, 100000000)
        # query all properties, make sure that only 'external' properties show up
        allProps = device.query([])

        # convert props to a dict
        allProps = dict([(x.id, x.value) for x in allProps])
        # This isn't all of them...but a fair amount
        self.assertEqual(
            allProps.has_key("DCE:4a23ad60-0b25-4121-a630-68803a498f75"),
            False)  # os_name
        self.assertEqual(
            allProps.has_key("DCE:fefb9c66-d14a-438d-ad59-2cfd1adb272b"),
            False)  # processor_name
        self.assertEqual(
            allProps.has_key("DCE:7f36cdfb-f828-4e4f-b84f-446e17f1a85b"),
            False)  # DeviceKind
        self.assertEqual(
            allProps.has_key("DCE:64303822-4c67-4c04-9a5c-bf670f27cf39"),
            False)  # RunsAs
        self.assertEqual(
            allProps.has_key("DCE:021f10cf-7a05-46ec-a507-04b513b84bd4"),
            False)  # HasXMIDAS

        appFact = domMgr._get_applicationFactories()[0]
        app = appFact.create(appFact._get_name(), [], ds)

        self.assertEqual(len(domMgr._get_applicationFactories()), 1)
        self.assertEqual(len(domMgr._get_applications()), 1)

        self.assertEqual(app._get_started(), False)
        app.start()
        self.assertEqual(app._get_started(), True)

        # Verify that capacity was allocated
        memCapacity = device.query([
            CF.DataType(id="DCE:8dcef419-b440-4bcf-b893-cab79b6024fb",
                        value=any.to_any(None))
        ])[0]
        bogoMips = device.query([
            CF.DataType(id="DCE:5636c210-0346-4df7-a5a3-8fd34c5540a8",
                        value=any.to_any(None))
        ])[0]
        self.assertEqual(memCapacity.value._v, 100000000 - 5000)
        self.assertEqual(bogoMips.value._v, 100000000 - 1000)

        app.stop()
        self.assertEqual(app._get_started(), False)
        app.releaseObject()
        self.assertEqual(len(domMgr._get_applicationFactories()), 1)
        self.assertEqual(len(domMgr._get_applications()), 0)

        # Verify that capacity was deallocated
        memCapacity = device.query([
            CF.DataType(id="DCE:8dcef419-b440-4bcf-b893-cab79b6024fb",
                        value=any.to_any(None))
        ])[0]
        bogoMips = device.query([
            CF.DataType(id="DCE:5636c210-0346-4df7-a5a3-8fd34c5540a8",
                        value=any.to_any(None))
        ])[0]
        self.assertEqual(memCapacity.value._v, 100000000)
        self.assertEqual(bogoMips.value._v, 100000000)

        domMgr.uninstallApplication(appFact._get_identifier())
コード例 #42
0
    def test_ApplicationFactoryCreateURIOverride(self):
        domNB, domMgr = self.launchDomainManager(
            loggingURI="dom/mgr/logging.properties")
        self.assertNotEqual(domMgr, None)

        # Launch a device manager
        devNB, devMgr = self.launchDeviceManager(
            "/nodes/test_BasicTestDevice_node/DeviceManager.dcd.xml",
            loggingURI="dev/mgr/logging.properties")
        self.assertNotEqual(domMgr, None)

        # Double check the DomainManager LOGGING_CONFIG_URI
        prop = CF.DataType(id="LOGGING_CONFIG_URI", value=any.to_any(None))
        result = domMgr.query([prop])
        self.assertEqual(len(result), 1)
        self.assertEqual(result[0].id, "LOGGING_CONFIG_URI")
        devLoggingConfigURI = result[0].value._v
        expectedDomLoggingConfigUri = "file://" + os.path.join(
            scatest.getSdrPath(), "dom/mgr/logging.properties")
        self.assertEqual(devLoggingConfigURI, expectedDomLoggingConfigUri)

        # Launch an application
        domMgr.installApplication(
            "/waveforms/CommandWrapper/CommandWrapper.sad.xml")
        self.assertEqual(len(domMgr._get_applicationFactories()), 1)
        self.assertEqual(len(domMgr._get_applications()), 0)

        appFact = domMgr._get_applicationFactories()[0]
        uriOverride = CF.DataType(
            id="LOGGING_CONFIG_URI",
            value=any.to_any("sca:///mgr/logging.properties"))
        app = appFact.create(appFact._get_name(), [uriOverride], [])

        # Get the desired component
        self.assertEqual(len(app._get_componentNamingContexts()), 1)
        compName = app._get_componentNamingContexts()[0]
        comp = self._root.resolve(URI.stringToName(
            compName.elementId))._narrow(CF.Resource)
        self.assertNotEqual(comp, None)

        # Check the components exec params
        execparams = comp.query([
            CF.DataType(id="DCE:85d133fd-1658-4e4d-b3ff-1443cd44c0e2",
                        value=any.to_any(None))
        ])[0]
        args = any.from_any(execparams.value)
        execparams = {}
        for b in args:
            a = eval(b)
            name = a[0]
            value = a[1]
            execparams[name] = value

        self.assert_(execparams.has_key("LOGGING_CONFIG_URI"))
        self.assertEqual(execparams["LOGGING_CONFIG_URI"].split("?fs=")[0],
                         "sca:///mgr/logging.properties")
        execparamObj = self._orb.string_to_object(
            execparams["LOGGING_CONFIG_URI"].split("?fs=")[1])
        # Need to compare actual objects since the IOR strings could potentially differ for the same object
        self.assert_(domMgr._get_fileMgr()._is_equivalent(execparamObj))

        # Launch an application with a C++ component to exercise Resource_impl logging configure
        domMgr.installApplication(
            "/waveforms/TestCppProps/TestCppProps.sad.xml")
        self.assertEqual(len(domMgr._get_applicationFactories()), 2)
        for appFact in domMgr._get_applicationFactories():
            if appFact._get_name() == "TestCppProps":
                app = appFact.create(appFact._get_name(), [uriOverride], [])
                break
        self.assertEqual(len(domMgr._get_applications()), 2)
コード例 #43
0
    def test_py_DirectoryLoad(self):
        self.assertNotEqual(self._domMgr, None)

        self.assertEqual(len(self._domMgr._get_applicationFactories()), 0)
        self.assertEqual(len(self._domMgr._get_applications()), 0)

        # Verify in the devices cache is emtpy
        componentDir = os.path.join(scatest.getSdrPath(), "dom", "components",
                                    "CommandWrapperWithDirectoryLoad")
        deviceCacheDir = os.path.join(scatest.getSdrCache(),
                                      ".BasicTestDevice_node",
                                      "BasicTestDevice1", "components",
                                      "CommandWrapperWithDirectoryLoad")
        if os.path.exists(deviceCacheDir):
            os.system("rm -rf %s" % deviceCacheDir)

        self._domMgr.installApplication(
            "/waveforms/CommandWrapperWithDirectoryLoad/CommandWrapper.sad.xml"
        )
        self.assertEqual(len(self._domMgr._get_applicationFactories()), 1)
        self.assertEqual(len(self._domMgr._get_applications()), 0)

        # Ensure the expected device is available
        devBooter, devMgr = self.launchDeviceManager(
            "/nodes/test_BasicTestDevice_node/DeviceManager.dcd.xml")
        self.assertNotEqual(devMgr, None)
        self.assertEqual(len(devMgr._get_registeredDevices()), 1)
        device = devMgr._get_registeredDevices()[0]

        appFact = self._domMgr._get_applicationFactories()[0]

        app = appFact.create(appFact._get_name(), [], [])  # LOOK MA, NO DAS!

        self.assertEqual(len(self._domMgr._get_applicationFactories()), 1)
        self.assertEqual(len(self._domMgr._get_applications()), 1)

        # Verify that properties have been changed from their defaults
        self.assertEqual(len(app._get_componentNamingContexts()), 1)
        compName = app._get_componentNamingContexts()[0]
        comp = self._root.resolve(URI.stringToName(
            compName.elementId))._narrow(CF.Resource)
        self.assertNotEqual(comp, None)

        cmd = comp.query([
            CF.DataType(id="DCE:a4e7b230-1d17-4a86-aeff-ddc6ea3df26e",
                        value=any.to_any(None))
        ])[0]
        args = comp.query([
            CF.DataType(id="DCE:5d8bfe8d-bc25-4f26-8144-248bc343aa53",
                        value=any.to_any(None))
        ])[0]
        self.assertEqual(cmd.value._v, "/bin/echo")
        self.assertEqual(args.value._v, ["Hello World"])

        # Verify in the devices cache that the directory structure was mirrored exactly
        for root, dirs, files in os.walk(componentDir):
            # turn the abs path in to a relative path
            rel_root = root[len(componentDir) + 1:]
            for dir in dirs:
                # Hidden files aren't loaded
                if dir[0] != ".":
                    expectedDir = os.path.join(deviceCacheDir, rel_root, dir)
                    self.assertEqual(
                        os.path.isdir(expectedDir), True,
                        "Dir %s not found at %s" % (dir, expectedDir))
                else:
                    # Don't descend into hidden sub-dirs
                    dirs.remove(dir)
            for f in files:
                # Hidden files aren't loaded
                if f[0] != ".":
                    expectedFile = os.path.join(deviceCacheDir, rel_root, f)
                    self.assertEqual(
                        os.path.isfile(expectedFile), True,
                        "File %s not found at %s" % (f, expectedFile))

        app.stop()
        app.releaseObject()
        self.assertEqual(len(self._domMgr._get_applicationFactories()), 1)
        self.assertEqual(len(self._domMgr._get_applications()), 0)

        self._domMgr.uninstallApplication(appFact._get_identifier())
コード例 #44
0
 def setUp(self):
     self.devRoot = os.path.join(scatest.getSdrPath(), 'dev')
コード例 #45
0
    def test_cpp_LoadUnload(self):
        # Test that releasing the device unloads all files
        deviceCacheDir = os.path.join(scatest.getSdrPath(), "dev", ".ExecutableDevice_node", "ExecutableDevice1")
        if os.path.exists(deviceCacheDir):
            os.system("rm -rf %s" % deviceCacheDir)

        self.assertNotEqual(self._domMgr, None)

        # Ensure the expected device is available
        devBooter, devMgr = self.launchDeviceManager("/nodes/test_ExecutableDevice_node/DeviceManager.dcd.xml", debug=9)
        self.assertNotEqual(devMgr, None)
        self.assertEqual(len(devMgr._get_registeredDevices()), 1)
        device = devMgr._get_registeredDevices()[0]

        self.assert_(not os.path.exists(deviceCacheDir + "/components/CommandWrapper"))
        self.assert_(not os.path.exists(deviceCacheDir + "/components/CapacityUser"))

        # Load a some files and directories
        device.load(self._domMgr._get_fileMgr(), "/components/CommandWrapper", CF.LoadableDevice.EXECUTABLE)
        device.load(self._domMgr._get_fileMgr(), "/components/CapacityUser/CapacityUser.py", CF.LoadableDevice.EXECUTABLE)
        device.load(self._domMgr._get_fileMgr(), "/components/CapacityUser/CapacityUser.prf.xml", CF.LoadableDevice.EXECUTABLE)
        device.load(self._domMgr._get_fileMgr(), "/components/CapacityUser/CapacityUser.scd.xml", CF.LoadableDevice.EXECUTABLE)
        device.load(self._domMgr._get_fileMgr(), "/components/CapacityUser/CapacityUser.spd.xml", CF.LoadableDevice.EXECUTABLE)

        # Simply check that the cache dir isn't empty and has the correct number of files
        self.assertEqual(len(os.listdir(deviceCacheDir + "/components/CommandWrapper")), 4)
        self.assertEqual(len(os.listdir(deviceCacheDir + "/components/CapacityUser")), 4)

        # Check that a second load doesn't do anything weird
        device.load(self._domMgr._get_fileMgr(), "/components/CommandWrapper", CF.LoadableDevice.EXECUTABLE)
        device.load(self._domMgr._get_fileMgr(), "/components/CapacityUser/CapacityUser.py", CF.LoadableDevice.EXECUTABLE)
        device.load(self._domMgr._get_fileMgr(), "/components/CapacityUser/CapacityUser.prf.xml", CF.LoadableDevice.EXECUTABLE)
        device.load(self._domMgr._get_fileMgr(), "/components/CapacityUser/CapacityUser.scd.xml", CF.LoadableDevice.EXECUTABLE)
        device.load(self._domMgr._get_fileMgr(), "/components/CapacityUser/CapacityUser.spd.xml", CF.LoadableDevice.EXECUTABLE)

        self.assertEqual(len(os.listdir(deviceCacheDir + "/components/CommandWrapper")), 4)
        self.assertEqual(len(os.listdir(deviceCacheDir + "/components/CapacityUser")), 4)

        # Clear out the deviceCache
        os.system("rm -rf %s" % (deviceCacheDir + "/components/CommandWrapper"))
        os.system("rm -rf %s" % (deviceCacheDir + "/components/CapacityUser/CapacityUser.py"))

        self.assertEqual(os.path.exists(deviceCacheDir + "/components/CommandWrapper"), False)
        self.assertEqual(len(os.listdir(deviceCacheDir + "/components/CapacityUser")), 3)

        # Load files and directories, this should copy the files over because they don't exist, even if though the refCnt > 0
        device.load(self._domMgr._get_fileMgr(), "/components/CommandWrapper", CF.LoadableDevice.EXECUTABLE)
        device.load(self._domMgr._get_fileMgr(), "/components/CapacityUser/CapacityUser.py", CF.LoadableDevice.EXECUTABLE)
        device.load(self._domMgr._get_fileMgr(), "/components/CapacityUser/CapacityUser.prf.xml", CF.LoadableDevice.EXECUTABLE)
        device.load(self._domMgr._get_fileMgr(), "/components/CapacityUser/CapacityUser.scd.xml", CF.LoadableDevice.EXECUTABLE)
        device.load(self._domMgr._get_fileMgr(), "/components/CapacityUser/CapacityUser.spd.xml", CF.LoadableDevice.EXECUTABLE)

        self.assertEqual(len(os.listdir(deviceCacheDir + "/components/CommandWrapper")), 4)
        self.assertEqual(len(os.listdir(deviceCacheDir + "/components/CapacityUser")), 4)

        # Now we need to unload 3 times
        print os.listdir(deviceCacheDir + "/components")
        for i in xrange(3):
            self.assertEqual(len(os.listdir(deviceCacheDir + "/components/CommandWrapper")), 4)
            self.assertEqual(len(os.listdir(deviceCacheDir + "/components/CapacityUser")), 4)

            device.unload("/components/CommandWrapper")
            device.unload("/components/CapacityUser/CapacityUser.py")
            device.unload("/components/CapacityUser/CapacityUser.prf.xml")
            device.unload("/components/CapacityUser/CapacityUser.scd.xml")
            device.unload("/components/CapacityUser/CapacityUser.spd.xml")


        #self.assertEqual(len(os.listdir(deviceCacheDir + "/components/CommandWrapper")), 0)
        # Empty directories get deleted
        self.assert_(not os.path.exists(deviceCacheDir + "/components/CommandWrapper"))
        self.assertEqual(len(os.listdir(deviceCacheDir + "/components/CapacityUser")), 0)

        device.releaseObject()

        # Wait for the device to unregister.
        self.assert_(self._waitRegisteredDevices(devMgr, 0))

        self.assertEqual(len(self._domMgr._get_deviceManagers()), 1)
コード例 #46
0
    def test_BasicOperation(self):
        self._nb_domMgr, self._domMgr = self.launchDomainManager(endpoint="giop:tcp::5679", dbURI=self._dbfile)
        self._nb_devMgr, devMgr = self.launchDeviceManager("/nodes/test_PortTestDevice_node/DeviceManager.dcd.xml")
        
        self._fileMgr = self._domMgr._get_fileMgr()
        self._files = self._fileMgr.list("/")

        self.assertEqual(len(self._domMgr._get_applicationFactories()), 0)
        self.assertEqual(len(self._domMgr._get_applications()), 0)

        self._domMgr.installApplication("/waveforms/PortConnectProvidesPort/PortConnectProvidesPort.sad.xml")
        self.assertEqual(len(self._domMgr._get_applicationFactories()), 1)
        self.assertEqual(len(self._domMgr._get_applications()), 0)
        
        # Load on the  device ID
        das = minidom.parse(os.path.join(scatest.getSdrPath(), "dom/waveforms/PortConnectProvidesPort/PortConnectProvidesPort_DAS.xml"))
        ds = []
        deviceAssignmentTypeNodeList = das.getElementsByTagName("deviceassignmenttype")
        for node in deviceAssignmentTypeNodeList:
            componentid = node.getElementsByTagName("componentid")[0].firstChild.data
            assigndeviceid = node.getElementsByTagName("assigndeviceid")[0].firstChild.data
            ds.append( CF.DeviceAssignmentType(str(componentid),str(assigndeviceid)) )

        # Ensure the expected device is available
        self.assertNotEqual(devMgr, None)
        self.assertEqual(len(devMgr._get_registeredDevices()), 2)
        device1 = None
        device2 = None
        for dev in devMgr._get_registeredDevices():
            if dev._get_identifier() == "DCE:322fb9b2-de57-42a2-ad03-217bcb244262":
                device1 = dev
            elif dev._get_identifier() == "DCE:47dc45d8-19b5-4b7e-bcd4-b165babe5b84":
                device2 = dev
        self.assertNotEqual(device1, None)
        self.assertNotEqual(device2, None)

        # Query the known allocation properties
        memCapacity1 = device1.query([CF.DataType(id="DCE:8dcef419-b440-4bcf-b893-cab79b6024fb", value=any.to_any(None))])[0]
        bogoMips1 = device1.query([CF.DataType(id="DCE:5636c210-0346-4df7-a5a3-8fd34c5540a8", value=any.to_any(None))])[0]
        self.assertEqual(memCapacity1.value._v, 100000000)
        self.assertEqual(bogoMips1.value._v, 100000000)

        memCapacity2 = device2.query([CF.DataType(id="DCE:8dcef419-b440-4bcf-b893-cab79b6024fb", value=any.to_any(None))])[0]
        bogoMips2 = device2.query([CF.DataType(id="DCE:5636c210-0346-4df7-a5a3-8fd34c5540a8", value=any.to_any(None))])[0]
        self.assertEqual(memCapacity2.value._v, 100000000)
        self.assertEqual(bogoMips2.value._v, 100000000)

        appFact = self._domMgr._get_applicationFactories()[0]
        app = appFact.create(appFact._get_name(), [], ds)

        self.assertEqual(len(self._domMgr._get_applicationFactories()), 1)
        self.assertEqual(len(self._domMgr._get_applications()), 1)
        app = self._domMgr._get_applications()[0]

        # cache off some variables for later for testing purposes
        self.assertEqual(len(app._get_componentNamingContexts()), 2)
        self.assertEqual(len(app._get_componentProcessIds()), 2)
        self.assertEqual(len(app._get_componentDevices()), 4)
        self.assertEqual(len(app._get_componentImplementations()), 2)
        
        origNamingContexts = app._get_componentNamingContexts()
        origProcessIds = app._get_componentProcessIds()
        origDevices = app._get_componentDevices()
        origImplementations = app._get_componentImplementations()
        origQuery = app.query([])

        # Verify that capacity was allocated
        memCapacity1 = device1.query([CF.DataType(id="DCE:8dcef419-b440-4bcf-b893-cab79b6024fb", value=any.to_any(None))])[0]
        bogoMips1 = device1.query([CF.DataType(id="DCE:5636c210-0346-4df7-a5a3-8fd34c5540a8", value=any.to_any(None))])[0]
        self.assertEqual(memCapacity1.value._v, 100000000-(5000))
        self.assertEqual(bogoMips1.value._v, 100000000-(1000))

        memCapacity2 = device2.query([CF.DataType(id="DCE:8dcef419-b440-4bcf-b893-cab79b6024fb", value=any.to_any(None))])[0]
        bogoMips2 = device2.query([CF.DataType(id="DCE:5636c210-0346-4df7-a5a3-8fd34c5540a8", value=any.to_any(None))])[0]
        self.assertEqual(memCapacity2.value._v, 100000000-(5000))
        self.assertEqual(bogoMips2.value._v, 100000000-(1000))

        # Kill the domainMgr
        os.kill(self._nb_domMgr.pid, signal.SIGTERM)

        # TODO if SIGKILL is used (simulating a nodeBooter unexpected abort, 
        # the IOR and the newly spawned domain manager do not work
        if not self.waitTermination(self._nb_domMgr):
            self.fail("Domain Manager Failed to Die")
      
        # Start the domainMgr again
        self._nb_domMgr, newDomMgr = self.launchDomainManager(endpoint="giop:tcp::5679", dbURI=self._dbfile)
        
        # Verify our client reference still is valid
        newDomMgr._get_identifier()
        self.assertEqual(False, newDomMgr._non_existent())
        #self.assertEqual(self._orb.object_to_string(newDomMgr), self._orb.object_to_string(self._domMgr))
        self.assertEqual(False, self._domMgr._non_existent())

        # Verify that the file manager is still valid
        self.new_files = self._fileMgr.list("/")
        self.assertEqual(len(self._files), len(self.new_files))

        self.assertEqual(len(self._domMgr._get_deviceManagers()), 1)
        newDevMgr = self._domMgr._get_deviceManagers()[0]
        self.assertEqual(self._orb.object_to_string(devMgr), self._orb.object_to_string(newDevMgr))

        self.assertEqual(len(devMgr._get_registeredDevices()), 2)
        newDevice1 = None
        newDevice2 = None
        for dev in devMgr._get_registeredDevices():
            if dev._get_identifier() == "DCE:322fb9b2-de57-42a2-ad03-217bcb244262":
                newDevice1 = dev
            elif dev._get_identifier() == "DCE:47dc45d8-19b5-4b7e-bcd4-b165babe5b84":
                newDevice2 = dev
        self.assertNotEqual(newDevice1, None)
        self.assertNotEqual(newDevice2, None)
        self.assertEqual(self._orb.object_to_string(device1), self._orb.object_to_string(newDevice1))
        self.assertEqual(self._orb.object_to_string(device2), self._orb.object_to_string(newDevice2))

        self.assertEqual(len(self._domMgr._get_applicationFactories()), 1)
        newAppFact = self._domMgr._get_applicationFactories()[0]
        self.assertEqual(appFact._get_identifier(), newAppFact._get_identifier());
        self.assertEqual(appFact._get_name(), newAppFact._get_name());

        self.assertEqual(len(self._domMgr._get_applications()), 1)
        newApp = self._domMgr._get_applications()[0]
        # Applications are currently not using persistent POAs, so the IORs will change
#        self.assertEqual(self._orb.object_to_string(app), self._orb.object_to_string(newApp))

        newNamingContexts = app._get_componentNamingContexts()
        newProcessIds = app._get_componentProcessIds()
        newDevices = app._get_componentDevices()
        newImplementations = app._get_componentImplementations()

        # We have to compare elements individually since newDevices == origDevices even when the contents are identical
        self.assertEqual(len(newDevices), len(origDevices))
        for x in xrange(len(newDevices)):
            self.assertEqual(newDevices[x].componentId, origDevices[x].componentId)
            self.assertEqual(newDevices[x].assignedDeviceId, origDevices[x].assignedDeviceId)

        self.assertEqual(len(newProcessIds), len(origProcessIds))
        for x in xrange(len(newProcessIds)):
            self.assertEqual(newProcessIds[x].componentId, origProcessIds[x].componentId)
            self.assertEqual(newProcessIds[x].processId, origProcessIds[x].processId)

        self.assertEqual(len(newImplementations), len(origImplementations))
        for x in xrange(len(newImplementations)):
            self.assertEqual(newImplementations[x].componentId, origImplementations[x].componentId)
            self.assertEqual(newImplementations[x].elementId, origImplementations[x].elementId)

        self.assertEqual(len(newNamingContexts), len(origNamingContexts))
        for x in xrange(len(newNamingContexts)):
            self.assertEqual(newNamingContexts[x].componentId, origNamingContexts[x].componentId)
            self.assertEqual(newNamingContexts[x].elementId, origNamingContexts[x].elementId)

        # Verify that the connection between the CF::Application and the assemblyController was 
        # restored.
        newQuery = app.query([])
        self.assertEqual(len(newQuery), len(origQuery))
        for x in xrange(len(newQuery)):
            self.assertEqual(newQuery[x].id, origQuery[x].id)
            self.assertEqual(newQuery[x].value._v, origQuery[x].value._v)
#
        app.stop()
        app.releaseObject()

        # TODO how can we verify that the ports were disconnected as part of release?
        time.sleep(1)

        self.assertEqual(len(self._domMgr._get_applicationFactories()), 1)
        self.assertEqual(len(self._domMgr._get_applications()), 0)

        # Verify that capacity was deallocated
        memCapacity1 = device1.query([CF.DataType(id="DCE:8dcef419-b440-4bcf-b893-cab79b6024fb", value=any.to_any(None))])[0]
        bogoMips1 = device1.query([CF.DataType(id="DCE:5636c210-0346-4df7-a5a3-8fd34c5540a8", value=any.to_any(None))])[0]
        self.assertEqual(memCapacity1.value._v, 100000000)
        self.assertEqual(bogoMips1.value._v, 100000000)

        memCapacity2 = device2.query([CF.DataType(id="DCE:8dcef419-b440-4bcf-b893-cab79b6024fb", value=any.to_any(None))])[0]
        bogoMips2 = device2.query([CF.DataType(id="DCE:5636c210-0346-4df7-a5a3-8fd34c5540a8", value=any.to_any(None))])[0]
        self.assertEqual(memCapacity2.value._v, 100000000)
        self.assertEqual(bogoMips2.value._v, 100000000)

        newDevMgr.shutdown()
        self.assertEqual(len(self._domMgr._get_deviceManagers()), 0)

        self._domMgr.uninstallApplication(appFact._get_identifier())
        self.assertEqual(len(self._domMgr._get_applicationFactories()), 0)
コード例 #47
0
    def test_BasicOperation(self):
        self.assertNotEqual(self._domMgr, None)
        fileMgr = self._domMgr._get_fileMgr()

        devfile = "/ExecutableDevice_node/nodes/test_ExecutableDevice_node/DeviceManager.dcd.xml"
        devlocalfile = "dev/nodes/test_ExecutableDevice_node/DeviceManager.dcd.xml"
        domfile = "/waveforms/CommandWrapper/CommandWrapper_DAS.xml"
        domlocalfile = "dom/waveforms/CommandWrapper/CommandWrapper_DAS.xml"
        addon = "foo.txt"
        devnewfile = "/ExecutableDevice_node/nodes/testdev.txt"
        devlocalnewfile = "dev/nodes/testdev.txt"
        domnewfile = "/waveforms/testdom.txt"
        domlocalnewfile = "dom/waveforms/testdom.txt"

        str_to_write_dev = "testing 1,2,3 dev"
        str_to_write_dom = "testing 1,2,3 dom"

        #################
        # Test exists
        #################
        try:
            fileMgr.exists(devfile)
        except:
            self.fail(
                "Something bad happened in fileMgr.exists(devfile) for mountPoint lookup"
            )

        try:
            fileMgr.exists(domfile)
        except:
            self.fail(
                "Something bad happened in fileMgr.exists(domfile) for domain (local fs) lookup"
            )

        try:
            fileMgr.exists(devfile + addon)
        except:
            self.fail(
                "Something bad happened in fileMgr.exists(devfile + addon) for mountPoint lookup"
            )

        try:
            fileMgr.exists(domfile + addon)
        except:
            self.fail(
                "Something bad happened in fileMgr.exists(domfile + addon) for domain (local fs) lookup"
            )

        self.assertEqual(fileMgr.exists(devfile), True)
        self.assertEqual(fileMgr.exists(domfile), True)

        self.assertEqual(fileMgr.exists(devfile + addon), False)
        self.assertEqual(fileMgr.exists(domfile + addon), False)

        #################
        # test open
        #################
        try:
            myfile = fileMgr.open(devfile, True)
        except:
            self.fail(
                "Something bad happened in fileMgr.open(devfile, True) for mountPoint lookup"
            )

        expectedSize = os.stat(os.path.join(scatest.getSdrPath(),
                                            devlocalfile))[6]
        self.assertEqual(myfile.sizeOf(), expectedSize)

        try:
            myfile.close()
        except:
            self.fail(
                "Something bad happened in fileMgr.close(devfile, True) for mountPoint lookup"
            )

        try:
            myfile = fileMgr.open(domfile, True)
        except:
            self.fail(
                "Something bad happened in fileMgr.open(domfile, True) for domain (local fs) lookup"
            )

        expectedSize = os.stat(os.path.join(scatest.getSdrPath(),
                                            domlocalfile))[6]
        self.assertEqual(myfile.sizeOf(), expectedSize)

        try:
            myfile.close()
        except:
            self.fail(
                "Something bad happened in fileMgr.close(devfile, True) for mountPoint lookup"
            )

        try:
            myfile = fileMgr.open(devfile + addon, True)
            self.fail(
                "fileMgr.open(devfile+addon, True) should have thrown and exception and it didn't"
            )
        except:
            pass

        try:
            myfile = fileMgr.open(domfile + addon, True)
            self.fail(
                "fileMgr.open(domfile+addon, True) should have thrown and exception and it didn't"
            )
        except:
            pass

        #################
        # test create
        #################
        if os.path.exists(os.path.join(scatest.getSdrPath(), devlocalnewfile)):
            os.remove(os.path.join(scatest.getSdrPath(), devlocalnewfile))

        try:
            myfile = fileMgr.create(devnewfile)
            myfile.write(str_to_write_dev)
            myfile.close()
        except:
            self.fail(
                "Something bad happened in fileMgr.create(devnewfile) for mountPoint lookup"
            )
        self.assertEqual(fileMgr.exists(devnewfile), True)

        if os.path.exists(os.path.join(scatest.getSdrPath(), domlocalnewfile)):
            os.remove(os.path.join(scatest.getSdrPath(), domlocalnewfile))

        try:
            myfile = fileMgr.create(domnewfile)
            myfile.write(str_to_write_dom)
            myfile.close()
        except:
            self.fail(
                "Something bad happened in fileMgr.create(domnewfile) for domain (local fs) lookup"
            )
        self.assertEqual(fileMgr.exists(domnewfile), True)

        #################
        # test remove
        #################
        try:
            fileMgr.remove(devnewfile)
        except:
            self.fail(
                "Something bad happened in fileMgr.remove(devnewfile) for mountPoint lookup"
            )
        self.assertEqual(fileMgr.exists(devnewfile), False)

        try:
            fileMgr.remove(domnewfile)
        except:
            self.fail(
                "Something bad happened in fileMgr.remove(domnewfile) for domain (local fs) lookup"
            )
        self.assertEqual(fileMgr.exists(domnewfile), False)