def test_server(self):
        logging.debug('')
        logging.debug('test_server')

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

        try:
            # Create a server.
            server = ObjServer()

            # Create a component.
            exec_comp = server.create('openmdao.test.execcomp.ExecComp')
            exec_comp.run()
            egg_info = exec_comp.save_to_egg('exec_comp', '0')

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

            # Try to execute a command.
            cmd = 'dir' if sys.platform == 'win32' else 'ls'
            rdesc = {'remote_command': cmd,
                     'output_path': 'cmd.out',
                     'hard_runtime_limit': 10}
            code = 'server.execute_command(rdesc)'
            assert_raises(self, code, globals(), locals(), RuntimeError,
                          'shell access is not allowed by this server')

            # Try to load a model.
            assert_raises(self, 'server.load_model(egg_info[0])',
                          globals(), locals(), RuntimeError,
                          'shell access is not allowed by this server')

            # Bogus file accesses.
            assert_raises(self, "server.open('../xyzzy', 'r')", globals(), locals(),
                          RuntimeError, "Can't open '../xyzzy', not within root ")
            assert_raises(self, "server.open('xyzzy', 'r')", globals(), locals(),
                          IOError, "[Errno 2] No such file or directory: 'xyzzy'")

            # Create a file using context.
            with server.open('xyzzy', 'w') as out:
                out.write('Hello world!\n')

            # Create another file using file proxy.
            out = server.open('fred', 'w')
            out.write('Hello fred!\n')
            out.flush()  # Not really necessary, just for coverage.
            out.close()

            # Zip it.
            server.pack_zipfile(['xyzzy', 'fred'], 'zipped')

            # Make it read-only.
            server.chmod('zipped', 0400)

            if sys.platform == 'win32':
                msg = '[Error 2] The system cannot find the file specified'
            else:
                msg = "[Errno 2] No such file or directory: 'no-such-file'"
            assert_raises(self, "server.chmod('no-such-file', 0400)",
                          globals(), locals(), OSError, msg)

            # Get stats.
            info = server.stat('zipped')

            assert_raises(self, "server.stat('no-such-file')",
                          globals(), locals(), OSError, msg)

            # Remove zipped contents.
            server.remove('xyzzy')
            server.remove('fred')

            if sys.platform == 'win32':
                msg = '[Error 2] The system cannot find the file specified'
            else:
                msg = "[Errno 2] No such file or directory: 'xyzzy'"
            assert_raises(self, "server.remove('xyzzy')",
                          globals(), locals(), OSError, msg)

            # Unpack.
            server.unpack_zipfile('zipped')
            server.chmod('zipped', 0600)  # Ensure we can remove under Windows.

            # Verify contents.
            with server.open('xyzzy', 'r') as inp:
                data = inp.read()
                self.assertEqual(data, 'Hello world!\n')

            inp = server.open('fred', 'r')
            try:
                data = inp.read(1000)
                self.assertEqual(data, 'Hello fred!\n')
            finally:
                inp.close()

            # Try to create a process.
            args = 'dir' if sys.platform == 'win32' else 'ls'
            try:
                proc = server.create('subprocess.Popen', args=args, shell=True)
                proc.wait()
            except __HOLE__ as exc:
                msg = "'subprocess.Popen' is not an allowed type"
                self.assertEqual(str(exc), msg)
            else:
                self.fail('Expected TypeError')

            # isdir().
            self.assertTrue(server.isdir('.'))

            # listdir().
            self.assertEqual(sorted(server.listdir('.')),
                             [egg_info[0], 'fred', 'xyzzy', 'zipped'])
            if sys.platform == 'win32':
                msg = "[Error 3] The system cannot find the path specified: '42/*.*'"
            else:
                msg = "[Errno 2] No such file or directory: '42'"
            assert_raises(self, "server.listdir('42')",
                          globals(), locals(), OSError, msg)
        finally:
            SimulationRoot.chroot('..')
            shutil.rmtree(testdir, onerror=onerror)
dataset/ETHPy150Open OpenMDAO/OpenMDAO-Framework/openmdao.main/src/openmdao/main/test/test_objserverfactory.py/TestCase.test_server