Backed out changeset 2cf4290c2eef (bug 1388424) for failing marionette's test_quit_restart.py TestQuitRestart.test_force_clean_restart. r=backout

This commit is contained in:
Sebastian Hengst 2017-08-11 12:11:14 +02:00
parent fcb33eb27c
commit c3f9d66a33
3 changed files with 16 additions and 22 deletions

View File

@ -1126,6 +1126,7 @@ class Marionette(object):
"on Gecko instances launched by Marionette")
context = self._send_message("getContext", key="value")
session_id = self.session_id
if in_app:
if clean:
@ -1154,7 +1155,7 @@ class Marionette(object):
self.instance.restart(clean=clean)
self.raise_for_port(timeout=self.DEFAULT_STARTUP_TIMEOUT)
self.start_session()
self.start_session(session_id=session_id)
# Restore the context as used before the restart
self.set_context(context)
@ -1174,7 +1175,7 @@ class Marionette(object):
return "{0}{1}".format(self.baseurl, relative_url)
@do_process_check
def start_session(self, capabilities=None, timeout=60):
def start_session(self, capabilities=None, session_id=None, timeout=60):
"""Create a new WebDriver session.
This method must be called before performing any other action.
@ -1186,6 +1187,8 @@ class Marionette(object):
or requriedCapabilities), and only recognises extension
capabilities that are specific to Marionette.
:param timeout: Timeout in seconds for the server to be ready.
:param session_id: Unique identifier for the session. If no
session ID is passed in then one will be generated.
:returns: A dictionary of the capabilities offered.
@ -1209,24 +1212,7 @@ class Marionette(object):
self.wait_for_port(timeout=timeout)
self.protocol, _ = self.client.connect()
body = capabilities
if body is None:
body = {}
# Duplicate capabilities object so the body we end up
# sending looks like this:
#
# {acceptInsecureCerts: true, {capabilities: {acceptInsecureCerts: true}}}
#
# We do this because geckodriver sends the capabilities at the
# top-level, and after bug 1388424 removed support for overriding
# the session ID, we also do this with this client. However,
# because this client is used with older Firefoxen (through upgrade
# tests et al.) we need to preserve backwards compatibility until
# Firefox 60.
if "capabilities" not in body and capabilities is not None:
body["capabilities"] = dict(capabilities)
body = {"capabilities": capabilities, "sessionId": session_id}
resp = self._send_message("newSession", body)
self.session_id = resp["sessionId"]

View File

@ -772,11 +772,12 @@ GeckoDriver.prototype.newSession = function* (cmd, resp) {
throw new SessionNotCreatedError("Maximum number of active sessions");
}
this.sessionID = element.generateUUID();
this.sessionID = cmd.parameters.sessionId || element.generateUUID();
this.newSessionCommandId = cmd.id;
try {
this.capabilities = session.Capabilities.fromJSON(cmd.parameters);
this.capabilities = session.Capabilities.fromJSON(
cmd.parameters.capabilities);
} catch (e) {
throw new SessionNotCreatedError(e);
}

View File

@ -36,6 +36,13 @@ class TestSession(MarionetteTestCase):
self.assertTrue(self.marionette.session_id is not None)
self.assertTrue(isinstance(self.marionette.session_id, unicode))
def test_set_the_session_id(self):
# Sends newSession
self.marionette.start_session(session_id="ILoveCheese")
self.assertEqual(self.marionette.session_id, "ILoveCheese")
self.assertTrue(isinstance(self.marionette.session_id, unicode))
def test_session_already_started(self):
self.marionette.start_session()
self.assertTrue(isinstance(self.marionette.session_id, unicode))