def test_factory(self):
        logging.debug("")
        logging.debug("test_factory")

        testdir = "test_factory"
        if os.path.exists(testdir):
            shutil.rmtree(testdir)
        os.mkdir(testdir)
        os.chdir(testdir)

        factory = None
        try:
            # Create a factory.
            factory = ObjServerFactory()

            # Echo some arguments.
            args = factory.echo("Hello", "world!")
            self.assertEqual(args[0], "Hello")
            self.assertEqual(args[1], "world!")

            # List types.
            types = factory.get_available_types()
            names = [name for name, version in types]
            self.assertTrue("openmdao.test.execcomp.ExecComp" in names)

            # Create a component.
            exec_comp = factory.create("openmdao.test.execcomp.ExecComp")
            exec_comp.run()

            # Force failed factory server startup via invalid port.
            assert_raises(
                self, "start_server(port='xyzzy')", globals(), locals(), RuntimeError, "Server startup failed"
            )

            # Try to release a server that doesn't exist (release takes an
            # OpenMDAO_Proxy as argument, string here is easier).
            assert_raises(
                self,
                "factory.release('xyzzy')",
                globals(),
                locals(),
                ValueError,
                "can't identify server at 'not-a-proxy'",
            )
        finally:
            if factory is not None:
                factory.cleanup()
            SimulationRoot.chroot("..")
            if sys.platform == "win32":
                time.sleep(2)  # Wait for process shutdown.
            keep_dirs = int(os.environ.get("OPENMDAO_KEEPDIRS", "0"))
            if not keep_dirs:
                shutil.rmtree(testdir)
    def test_factory(self):
        logging.debug('')
        logging.debug('test_factory')

        testdir = 'test_factory'
        if os.path.exists(testdir):
            shutil.rmtree(testdir)
        os.mkdir(testdir)
        os.chdir(testdir)

        factory = None
        try:
            # Create a factory.
            factory = ObjServerFactory()

            # Echo some arguments.
            args = factory.echo('Hello', 'world!')
            self.assertEqual(args[0], 'Hello')
            self.assertEqual(args[1], 'world!')

            # List types.
            types = factory.get_available_types()
            names = [name for name, version in types]
            self.assertTrue('openmdao.test.execcomp.ExecComp' in names)

            # Create a component.
            exec_comp = factory.create('openmdao.test.execcomp.ExecComp')
            exec_comp.run()

            # Force failed factory server startup via invalid port.
            assert_raises(self, "start_server(port='xyzzy')", globals(),
                          locals(), RuntimeError, 'Server startup failed')

            # Try to release a server that doesn't exist (release takes an
            # OpenMDAO_Proxy as argument, string here is easier).
            assert_raises(self, "factory.release('xyzzy')", globals(),
                          locals(), ValueError,
                          "can't identify server at 'not-a-proxy'")
        finally:
            if factory is not None:
                factory.cleanup()
            SimulationRoot.chroot('..')
            if sys.platform == 'win32':
                time.sleep(2)  # Wait for process shutdown.
            keep_dirs = int(os.environ.get('OPENMDAO_KEEPDIRS', '0'))
            if not keep_dirs:
                shutil.rmtree(testdir)
Exemplo n.º 3
0
    def test_factory(self):
        logging.debug('')
        logging.debug('test_factory')

        testdir = 'test_factory'
        if os.path.exists(testdir):
            shutil.rmtree(testdir, onerror=onerror)
        os.mkdir(testdir)
        os.chdir(testdir)

        factory = None
        try:
            # Create a factory.
            factory = ObjServerFactory()

            # Echo some arguments.
            args = factory.echo('Hello', 'world!')
            self.assertEqual(args[0], 'Hello')
            self.assertEqual(args[1], 'world!')

            # List types.
            types = factory.get_available_types()
            names = [name for name, version in types]
            self.assertTrue('openmdao.test.execcomp.ExecComp' in names)

            # Create a component.
            exec_comp = factory.create('openmdao.test.execcomp.ExecComp')
            exec_comp.run()
            directory = 'Server_1' + os.sep
            if sys.platform == 'win32':
                directory = directory.lower()
            self.assertTrue(exec_comp.get_abs_directory().endswith(directory))

            # Create another in specified directory.
            exec_comp = factory.create('openmdao.test.execcomp.ExecComp',
                                       res_desc={'working_directory': 'floyd'})
            exec_comp.run()
            directory = 'floyd' + os.sep
            if sys.platform == 'win32':
                directory = directory.lower()
            self.assertTrue(exec_comp.get_abs_directory().endswith(directory))

            # Start server, connect, stop.
            server, cfg = start_server()
            proxy = connect_to_server(cfg)
            shutil.copy(cfg, 'saved_cfg')
            stop_server(server, cfg)

            _PROXIES.clear()
            assert_raises(self, "connect_to_server('saved_cfg')", globals(),
                          locals(), RuntimeError,
                          "Can't connect to server at ")

            # Force failed factory server startup via invalid port.
            address = socket.gethostbyname(socket.gethostname())
            code = "start_server(address=address, port='xyzzy'," \
                   " allow_shell=True, tunnel=True, resources='')"
            assert_raises(self, code, globals(), locals(), RuntimeError,
                          'Server startup failed')

            # Try to release a server that doesn't exist (release takes an
            # OpenMDAO_Proxy as argument, string here is easier).
            assert_raises(self, "factory.release('xyzzy')", globals(),
                          locals(), ValueError,
                          "can't identify server at 'not-a-proxy'")

            # get_ram() is used by RAM.add_remotes().
            ram = factory.get_ram()
            self.assertTrue(ram is RAM._get_instance())

        finally:
            if factory is not None:
                factory.cleanup()
            SimulationRoot.chroot('..')
            if sys.platform == 'win32':
                time.sleep(2)  # Wait for process shutdown.
            keep_dirs = int(os.environ.get('OPENMDAO_KEEPDIRS', '0'))
            if not keep_dirs:
                shutil.rmtree(testdir, onerror=onerror)
    def test_factory(self):
        logging.debug('')
        logging.debug('test_factory')

        testdir = 'test_factory'
        if os.path.exists(testdir):
            shutil.rmtree(testdir, onerror=onerror)
        os.mkdir(testdir)
        os.chdir(testdir)

        factory = None
        try:
            # Create a factory.
            factory = ObjServerFactory()

            # Echo some arguments.
            args = factory.echo('Hello', 'world!')
            self.assertEqual(args[0], 'Hello')
            self.assertEqual(args[1], 'world!')

            # List types.
            types = factory.get_available_types()
            names = [name for name, version in types]
            self.assertTrue('openmdao.test.execcomp.ExecComp' in names)

            # Create a component.
            exec_comp = factory.create('openmdao.test.execcomp.ExecComp')
            exec_comp.run()

            # Start server, connect, stop.
            server, cfg = start_server()
            proxy = connect_to_server(cfg)
            shutil.copy(cfg, 'saved_cfg')
            stop_server(server, cfg)

            _PROXIES.clear()
            assert_raises(self, "connect_to_server('saved_cfg')",
                          globals(), locals(), RuntimeError,
                          "Can't connect to server at ")

            # Force failed factory server startup via invalid port.
            address = socket.gethostbyname(socket.gethostname())
            code = "start_server(address=address, port='xyzzy'," \
                                 " allow_shell=True, tunnel=True, resources='')"
            assert_raises(self, code, globals(), locals(), RuntimeError,
                          'Server startup failed')

            # Try to release a server that doesn't exist (release takes an
            # OpenMDAO_Proxy as argument, string here is easier).
            assert_raises(self, "factory.release('xyzzy')",
                          globals(), locals(), ValueError,
                          "can't identify server at 'not-a-proxy'")

            # get_ram() is used by RAM.add_remotes().
            ram = factory.get_ram()
            self.assertTrue(ram is RAM._get_instance())

        finally:
            if factory is not None:
                factory.cleanup()
            SimulationRoot.chroot('..')
            if sys.platform == 'win32':
                time.sleep(2)  # Wait for process shutdown.
            keep_dirs = int(os.environ.get('OPENMDAO_KEEPDIRS', '0'))
            if not keep_dirs:
                shutil.rmtree(testdir, onerror=onerror)