'Starts a server on an unused port.
Any kwargs passed to this method will override the configuration
value in the conf file used in starting the server.
:param server: the server to launch
:param expect_launch: true iff the server is expected to
successfully start
:param expect_exit: true iff the launched process is expected
to exit in a timely fashion
:param expected_exitcode: expected exitcode from the launcher'

def start_server(self, server, expect_launch, expect_exit=True, expected_exitcode=0, **kwargs):

    self.cleanup()
    (exitcode, out, err) = server.start(expect_exit=expect_exit, expected_exitcode=expected_exitcode, **kwargs)
    if expect_exit:
        self.assertEqual(expected_exitcode, exitcode, ('Failed    to    spin    up    the    requested    server.    Got:    %s' % err))
    self.launched_servers.append(server)
    launch_msg = self.wait_for_servers([server], expect_launch)
    self.assertTrue((launch_msg is None), launch_msg)
