Rename zuul-launcher to zuul-executor

To avoid confusion with nodepool-launcher, we've decided to rename
zuul-launcher to zuul-executor.

Change-Id: I7d03cf0f0093400f4ba2e4beb1c92694224a3e8c
Signed-off-by: Paul Belanger <pabelanger@redhat.com>
diff --git a/tests/base.py b/tests/base.py
index 3fe29b2..a2a70c2 100755
--- a/tests/base.py
+++ b/tests/base.py
@@ -57,8 +57,8 @@
 import zuul.scheduler
 import zuul.webapp
 import zuul.rpclistener
-import zuul.launcher.server
-import zuul.launcher.client
+import zuul.executor.server
+import zuul.executor.client
 import zuul.lib.connections
 import zuul.merger.client
 import zuul.merger.merger
@@ -570,9 +570,9 @@
 class FakeBuild(object):
     log = logging.getLogger("zuul.test")
 
-    def __init__(self, launch_server, job):
+    def __init__(self, executor_server, job):
         self.daemon = True
-        self.launch_server = launch_server
+        self.executor_server = executor_server
         self.job = job
         self.jobdir = None
         self.uuid = job.unique
@@ -638,7 +638,7 @@
     def run(self):
         self.log.debug('Running build %s' % self.unique)
 
-        if self.launch_server.hold_jobs_in_build:
+        if self.executor_server.hold_jobs_in_build:
             self.log.debug('Holding build %s' % self.unique)
             self._wait()
         self.log.debug("Build %s continuing" % self.unique)
@@ -654,7 +654,7 @@
         return result
 
     def shouldFail(self):
-        changes = self.launch_server.fail_tests.get(self.name, [])
+        changes = self.executor_server.fail_tests.get(self.name, [])
         for change in changes:
             if self.hasChanges(change):
                 return True
@@ -691,21 +691,21 @@
         return True
 
 
-class RecordingLaunchServer(zuul.launcher.server.LaunchServer):
-    """An Ansible launcher to be used in tests.
+class RecordingExecutorServer(zuul.executor.server.ExecutorServer):
+    """An Ansible executor to be used in tests.
 
-    :ivar bool hold_jobs_in_build: If true, when jobs are launched
+    :ivar bool hold_jobs_in_build: If true, when jobs are executed
         they will report that they have started but then pause until
         released before reporting completion.  This attribute may be
         changed at any time and will take effect for subsequently
-        launched builds, but previously held builds will still need to
+        executed builds, but previously held builds will still need to
         be explicitly released.
 
     """
     def __init__(self, *args, **kw):
         self._run_ansible = kw.pop('_run_ansible', False)
         self._test_root = kw.pop('_test_root', False)
-        super(RecordingLaunchServer, self).__init__(*args, **kw)
+        super(RecordingExecutorServer, self).__init__(*args, **kw)
         self.hold_jobs_in_build = False
         self.lock = threading.Lock()
         self.running_builds = []
@@ -714,7 +714,7 @@
         self.job_builds = {}
 
     def failJob(self, name, change):
-        """Instruct the launcher to report matching builds as failures.
+        """Instruct the executor to report matching builds as failures.
 
         :arg str name: The name of the job to fail.
         :arg Change change: The :py:class:`~tests.base.FakeChange`
@@ -748,7 +748,7 @@
         self.log.debug("Done releasing builds %s (%s)" %
                        (regex, len(self.running_builds)))
 
-    def launchJob(self, job):
+    def executeJob(self, job):
         build = FakeBuild(self, job)
         job.build = build
         self.running_builds.append(build)
@@ -767,32 +767,32 @@
             if build.unique == uuid:
                 build.aborted = True
                 build.release()
-        super(RecordingLaunchServer, self).stopJob(job)
+        super(RecordingExecutorServer, self).stopJob(job)
 
 
-class RecordingAnsibleJob(zuul.launcher.server.AnsibleJob):
+class RecordingAnsibleJob(zuul.executor.server.AnsibleJob):
     def runPlaybooks(self, args):
-        build = self.launcher_server.job_builds[self.job.unique]
+        build = self.executor_server.job_builds[self.job.unique]
         build.jobdir = self.jobdir
 
         result = super(RecordingAnsibleJob, self).runPlaybooks(args)
 
-        self.launcher_server.lock.acquire()
-        self.launcher_server.build_history.append(
+        self.executor_server.lock.acquire()
+        self.executor_server.build_history.append(
             BuildHistory(name=build.name, result=result, changes=build.changes,
                          node=build.node, uuid=build.unique,
                          parameters=build.parameters, jobdir=build.jobdir,
                          pipeline=build.parameters['ZUUL_PIPELINE'])
         )
-        self.launcher_server.running_builds.remove(build)
-        del self.launcher_server.job_builds[self.job.unique]
-        self.launcher_server.lock.release()
+        self.executor_server.running_builds.remove(build)
+        del self.executor_server.job_builds[self.job.unique]
+        self.executor_server.lock.release()
         return result
 
     def runAnsible(self, cmd, timeout, trusted=False):
-        build = self.launcher_server.job_builds[self.job.unique]
+        build = self.executor_server.job_builds[self.job.unique]
 
-        if self.launcher_server._run_ansible:
+        if self.executor_server._run_ansible:
             result = super(RecordingAnsibleJob, self).runAnsible(
                 cmd, timeout, trusted=trusted)
         else:
@@ -828,7 +828,7 @@
         for queue in [self.high_queue, self.normal_queue, self.low_queue]:
             for job in queue:
                 if not hasattr(job, 'waiting'):
-                    if job.name.startswith('launcher:launch'):
+                    if job.name.startswith('executor:execute'):
                         job.waiting = self.hold_jobs_in_queue
                     else:
                         job.waiting = False
@@ -855,7 +855,7 @@
                 len(self.low_queue))
         self.log.debug("releasing queued job %s (%s)" % (regex, qlen))
         for job in self.getQueue():
-            if job.name != 'launcher:launch':
+            if job.name != 'executor:execute':
                 continue
             parameters = json.loads(job.arguments)
             if not regex or re.match(regex, parameters.get('job')):
@@ -991,7 +991,7 @@
                     created_time=now,
                     updated_time=now,
                     image_id=None,
-                    launcher='fake-nodepool')
+                    executor='fake-nodepool')
         data = json.dumps(data)
         path = self.client.create(path, data,
                                   makepath=True,
@@ -1223,13 +1223,13 @@
         server that all of the Zuul components in this test use to
         communicate with each other.
 
-    :ivar RecordingLaunchServer launch_server: An instance of
-        :py:class:`~tests.base.RecordingLaunchServer` which is the
-        Ansible launch server used to run jobs for this test.
+    :ivar RecordingExecutorServer executor_server: An instance of
+        :py:class:`~tests.base.RecordingExecutorServer` which is the
+        Ansible execute server used to run jobs for this test.
 
     :ivar list builds: A list of :py:class:`~tests.base.FakeBuild` objects
         representing currently running builds.  They are appended to
-        the list in the order they are launched, and removed from this
+        the list in the order they are executed, and removed from this
         list upon completion.
 
     :ivar list history: A list of :py:class:`~tests.base.BuildHistory`
@@ -1261,7 +1261,7 @@
         self.test_root = os.path.join(tmp_root, "zuul-test")
         self.upstream_root = os.path.join(self.test_root, "upstream")
         self.merger_src_root = os.path.join(self.test_root, "merger-git")
-        self.launcher_src_root = os.path.join(self.test_root, "launcher-git")
+        self.executor_src_root = os.path.join(self.test_root, "executor-git")
         self.state_root = os.path.join(self.test_root, "lib")
 
         if os.path.exists(self.test_root):
@@ -1276,7 +1276,7 @@
                         os.path.join(FIXTURE_DIR,
                                      self.config.get('zuul', 'tenant_config')))
         self.config.set('merger', 'git_dir', self.merger_src_root)
-        self.config.set('launcher', 'git_dir', self.launcher_src_root)
+        self.config.set('executor', 'git_dir', self.executor_src_root)
         self.config.set('zuul', 'state_dir', self.state_root)
 
         # For each project in config:
@@ -1337,17 +1337,17 @@
 
         self._startMerger()
 
-        self.launch_server = RecordingLaunchServer(
+        self.executor_server = RecordingExecutorServer(
             self.config, self.connections,
             jobdir_root=self.test_root,
             _run_ansible=self.run_ansible,
             _test_root=self.test_root,
             keep_jobdir=KEEP_TEMPDIRS)
-        self.launch_server.start()
-        self.history = self.launch_server.build_history
-        self.builds = self.launch_server.running_builds
+        self.executor_server.start()
+        self.history = self.executor_server.build_history
+        self.builds = self.executor_server.running_builds
 
-        self.launch_client = zuul.launcher.client.LaunchClient(
+        self.executor_client = zuul.executor.client.ExecutorClient(
             self.config, self.sched)
         self.merge_client = zuul.merger.client.MergeClient(
             self.config, self.sched)
@@ -1360,7 +1360,7 @@
             self.zk_chroot_fixture.zookeeper_port,
             self.zk_chroot_fixture.zookeeper_chroot)
 
-        self.sched.setLauncher(self.launch_client)
+        self.sched.setExecutor(self.executor_client)
         self.sched.setMerger(self.merge_client)
         self.sched.setNodepool(self.nodepool)
         self.sched.setZooKeeper(self.zk)
@@ -1372,7 +1372,7 @@
         self.sched.start()
         self.webapp.start()
         self.rpc.start()
-        self.launch_client.gearman.waitForServer()
+        self.executor_client.gearman.waitForServer()
         self.addCleanup(self.shutdown)
 
         self.sched.reconfigure(self.config)
@@ -1488,11 +1488,11 @@
 
     def shutdown(self):
         self.log.debug("Shutting down after tests")
-        self.launch_client.stop()
+        self.executor_client.stop()
         self.merge_server.stop()
         self.merge_server.join()
         self.merge_client.stop()
-        self.launch_server.stop()
+        self.executor_server.stop()
         self.sched.stop()
         self.sched.join()
         self.statsd.stop()
@@ -1579,29 +1579,29 @@
 
     def haveAllBuildsReported(self):
         # See if Zuul is waiting on a meta job to complete
-        if self.launch_client.meta_jobs:
+        if self.executor_client.meta_jobs:
             return False
         # Find out if every build that the worker has completed has been
         # reported back to Zuul.  If it hasn't then that means a Gearman
         # event is still in transit and the system is not stable.
         for build in self.history:
-            zbuild = self.launch_client.builds.get(build.uuid)
+            zbuild = self.executor_client.builds.get(build.uuid)
             if not zbuild:
                 # It has already been reported
                 continue
             # It hasn't been reported yet.
             return False
         # Make sure that none of the worker connections are in GRAB_WAIT
-        for connection in self.launch_server.worker.active_connections:
+        for connection in self.executor_server.worker.active_connections:
             if connection.state == 'GRAB_WAIT':
                 return False
         return True
 
     def areAllBuildsWaiting(self):
-        builds = self.launch_client.builds.values()
+        builds = self.executor_client.builds.values()
         for build in builds:
             client_job = None
-            for conn in self.launch_client.gearman.active_connections:
+            for conn in self.executor_client.gearman.active_connections:
                 for j in conn.related_jobs.values():
                     if j.unique == build.uuid:
                         client_job = j
@@ -1626,7 +1626,8 @@
             if build.url is None:
                 self.log.debug("%s has not reported start" % build)
                 return False
-            worker_build = self.launch_server.job_builds.get(server_job.unique)
+            worker_build = self.executor_server.job_builds.get(
+                server_job.unique)
             if worker_build:
                 if worker_build.isWaiting():
                     continue
@@ -1673,7 +1674,7 @@
                 raise Exception("Timeout waiting for Zuul to settle")
             # Make sure no new events show up while we're checking
 
-            self.launch_server.lock.acquire()
+            self.executor_server.lock.acquire()
             # have all build states propogated to zuul?
             if self.haveAllBuildsReported():
                 # Join ensures that the queue is empty _and_ events have been
@@ -1691,11 +1692,11 @@
                     # components were stable, we don't erroneously
                     # report that we are settled.
                     self.sched.run_handler_lock.release()
-                    self.launch_server.lock.release()
+                    self.executor_server.lock.release()
                     self.log.debug("...settled.")
                     return
                 self.sched.run_handler_lock.release()
-            self.launch_server.lock.release()
+            self.executor_server.lock.release()
             self.sched.wake_event.wait(0.1)
 
     def countJobResults(self, jobs, result):
@@ -1912,7 +1913,7 @@
 
 
 class AnsibleZuulTestCase(ZuulTestCase):
-    """ZuulTestCase but with an actual ansible launcher running"""
+    """ZuulTestCase but with an actual ansible executor running"""
     run_ansible = True
 
 
diff --git a/tests/fixtures/zuul-connections-multiple-gerrits.conf b/tests/fixtures/zuul-connections-multiple-gerrits.conf
index c1a335d..b3182d7 100644
--- a/tests/fixtures/zuul-connections-multiple-gerrits.conf
+++ b/tests/fixtures/zuul-connections-multiple-gerrits.conf
@@ -12,8 +12,8 @@
 git_user_name=zuul
 zuul_url=http://zuul.example.com/p
 
-[launcher]
-git_dir=/tmp/zuul-test/launcher-git
+[executor]
+git_dir=/tmp/zuul-test/executor-git
 
 [connection review_gerrit]
 driver=gerrit
diff --git a/tests/fixtures/zuul-connections-same-gerrit.conf b/tests/fixtures/zuul-connections-same-gerrit.conf
index 5c10444..69f5239 100644
--- a/tests/fixtures/zuul-connections-same-gerrit.conf
+++ b/tests/fixtures/zuul-connections-same-gerrit.conf
@@ -12,8 +12,8 @@
 git_user_name=zuul
 zuul_url=http://zuul.example.com/p
 
-[launcher]
-git_dir=/tmp/zuul-test/launcher-git
+[executor]
+git_dir=/tmp/zuul-test/executor-git
 
 [connection review_gerrit]
 driver=gerrit
diff --git a/tests/fixtures/zuul-git-driver.conf b/tests/fixtures/zuul-git-driver.conf
index 868e272..936c530 100644
--- a/tests/fixtures/zuul-git-driver.conf
+++ b/tests/fixtures/zuul-git-driver.conf
@@ -12,8 +12,8 @@
 git_user_name=zuul
 zuul_url=http://zuul.example.com/p
 
-[launcher]
-git_dir=/tmp/zuul-test/launcher-git
+[executor]
+git_dir=/tmp/zuul-test/executor-git
 
 [swift]
 authurl=https://identity.api.example.org/v2.0/
diff --git a/tests/fixtures/zuul.conf b/tests/fixtures/zuul.conf
index f0b6068..516ce08 100644
--- a/tests/fixtures/zuul.conf
+++ b/tests/fixtures/zuul.conf
@@ -12,8 +12,8 @@
 git_user_name=zuul
 zuul_url=http://zuul.example.com/p
 
-[launcher]
-git_dir=/tmp/zuul-test/launcher-git
+[executor]
+git_dir=/tmp/zuul-test/executor-git
 
 [swift]
 authurl=https://identity.api.example.org/v2.0/
diff --git a/tests/unit/test_cloner.py b/tests/unit/test_cloner.py
index da0f774..e65904b 100644
--- a/tests/unit/test_cloner.py
+++ b/tests/unit/test_cloner.py
@@ -610,7 +610,7 @@
 
         # Start a periodic job
         self.worker.hold_jobs_in_build = True
-        self.launcher.negative_function_cache_ttl = 0
+        self.executor.negative_function_cache_ttl = 0
         self.config.set('zuul', 'layout_config',
                         'tests/fixtures/layout-timer.yaml')
         self.sched.reconfigure(self.config)
diff --git a/tests/unit/test_connection.py b/tests/unit/test_connection.py
index 8954832..22cf331 100644
--- a/tests/unit/test_connection.py
+++ b/tests/unit/test_connection.py
@@ -46,7 +46,7 @@
                          'jenkins')
 
         B = self.fake_review_gerrit.addFakeChange('org/project', 'master', 'B')
-        self.launch_server.failJob('project-test2', B)
+        self.executor_server.failJob('project-test2', B)
         self.addEvent('review_gerrit', B.getPatchsetCreatedEvent(1))
 
         self.waitUntilSettled()
@@ -239,7 +239,7 @@
     tenant_config_file = 'config/zuul-connections-multiple-gerrits/main.yaml'
 
     def test_multiple_project_separate_gerrits(self):
-        self.launch_server.hold_jobs_in_build = True
+        self.executor_server.hold_jobs_in_build = True
 
         A = self.fake_another_gerrit.addFakeChange(
             'org/project1', 'master', 'A')
@@ -276,6 +276,6 @@
                  pipeline='review_check'),
         ])
 
-        self.launch_server.hold_jobs_in_build = False
-        self.launch_server.release()
+        self.executor_server.hold_jobs_in_build = False
+        self.executor_server.release()
         self.waitUntilSettled()
diff --git a/tests/unit/test_openstack.py b/tests/unit/test_openstack.py
index 670e578..c7a47ec 100644
--- a/tests/unit/test_openstack.py
+++ b/tests/unit/test_openstack.py
@@ -58,7 +58,7 @@
                          'ubuntu-trusty')
 
     def test_dsvm_keystone_repo(self):
-        self.launch_server.keep_jobdir = True
+        self.executor_server.keep_jobdir = True
         A = self.fake_gerrit.addFakeChange('openstack/nova', 'master', 'A')
         self.fake_gerrit.addEvent(A.getPatchsetCreatedEvent(1))
         self.waitUntilSettled()
@@ -68,9 +68,9 @@
         build = self.getJobFromHistory('dsvm')
 
         # Check that a change to nova triggered a keystone clone
-        launcher_git_dir = os.path.join(self.launcher_src_root,
+        executor_git_dir = os.path.join(self.executor_src_root,
                                         'openstack', 'keystone', '.git')
-        self.assertTrue(os.path.exists(launcher_git_dir),
+        self.assertTrue(os.path.exists(executor_git_dir),
                         msg='openstack/keystone should be cloned.')
 
         jobdir_git_dir = os.path.join(build.jobdir.src_root,
@@ -79,7 +79,7 @@
                         msg='openstack/keystone should be cloned.')
 
     def test_dsvm_nova_repo(self):
-        self.launch_server.keep_jobdir = True
+        self.executor_server.keep_jobdir = True
         A = self.fake_gerrit.addFakeChange('openstack/keystone', 'master', 'A')
         self.fake_gerrit.addEvent(A.getPatchsetCreatedEvent(1))
         self.waitUntilSettled()
@@ -89,9 +89,9 @@
         build = self.getJobFromHistory('dsvm')
 
         # Check that a change to keystone triggered a nova clone
-        launcher_git_dir = os.path.join(self.launcher_src_root,
+        executor_git_dir = os.path.join(self.executor_src_root,
                                         'openstack', 'nova', '.git')
-        self.assertTrue(os.path.exists(launcher_git_dir),
+        self.assertTrue(os.path.exists(executor_git_dir),
                         msg='openstack/nova should be cloned.')
 
         jobdir_git_dir = os.path.join(build.jobdir.src_root,
diff --git a/tests/unit/test_scheduler.py b/tests/unit/test_scheduler.py
index 1e56fae..e32e41b 100755
--- a/tests/unit/test_scheduler.py
+++ b/tests/unit/test_scheduler.py
@@ -39,8 +39,8 @@
 class TestScheduler(ZuulTestCase):
     tenant_config_file = 'config/single-tenant/main.yaml'
 
-    def test_jobs_launched(self):
-        "Test that jobs are launched and a change is merged"
+    def test_jobs_executed(self):
+        "Test that jobs are executed and a change is merged"
 
         A = self.fake_gerrit.addFakeChange('org/project', 'master', 'A')
         A.addApproval('code-review', 2)
@@ -106,7 +106,7 @@
     def test_parallel_changes(self):
         "Test that changes are tested in parallel and merged in series"
 
-        self.launch_server.hold_jobs_in_build = True
+        self.executor_server.hold_jobs_in_build = True
         A = self.fake_gerrit.addFakeChange('org/project', 'master', 'A')
         B = self.fake_gerrit.addFakeChange('org/project', 'master', 'B')
         C = self.fake_gerrit.addFakeChange('org/project', 'master', 'C')
@@ -123,7 +123,7 @@
         self.assertEqual(self.builds[0].name, 'project-merge')
         self.assertTrue(self.builds[0].hasChanges(A))
 
-        self.launch_server.release('.*-merge')
+        self.executor_server.release('.*-merge')
         self.waitUntilSettled()
         self.assertEqual(len(self.builds), 3)
         self.assertEqual(self.builds[0].name, 'project-test1')
@@ -133,7 +133,7 @@
         self.assertEqual(self.builds[2].name, 'project-merge')
         self.assertTrue(self.builds[2].hasChanges(A, B))
 
-        self.launch_server.release('.*-merge')
+        self.executor_server.release('.*-merge')
         self.waitUntilSettled()
         self.assertEqual(len(self.builds), 5)
         self.assertEqual(self.builds[0].name, 'project-test1')
@@ -149,7 +149,7 @@
         self.assertEqual(self.builds[4].name, 'project-merge')
         self.assertTrue(self.builds[4].hasChanges(A, B, C))
 
-        self.launch_server.release('.*-merge')
+        self.executor_server.release('.*-merge')
         self.waitUntilSettled()
         self.assertEqual(len(self.builds), 6)
         self.assertEqual(self.builds[0].name, 'project-test1')
@@ -167,8 +167,8 @@
         self.assertEqual(self.builds[5].name, 'project-test2')
         self.assertTrue(self.builds[5].hasChanges(A, B, C))
 
-        self.launch_server.hold_jobs_in_build = False
-        self.launch_server.release()
+        self.executor_server.hold_jobs_in_build = False
+        self.executor_server.release()
         self.waitUntilSettled()
         self.assertEqual(len(self.builds), 0)
 
@@ -182,21 +182,21 @@
 
     def test_failed_changes(self):
         "Test that a change behind a failed change is retested"
-        self.launch_server.hold_jobs_in_build = True
+        self.executor_server.hold_jobs_in_build = True
 
         A = self.fake_gerrit.addFakeChange('org/project', 'master', 'A')
         B = self.fake_gerrit.addFakeChange('org/project', 'master', 'B')
         A.addApproval('code-review', 2)
         B.addApproval('code-review', 2)
 
-        self.launch_server.failJob('project-test1', A)
+        self.executor_server.failJob('project-test1', A)
 
         self.fake_gerrit.addEvent(A.addApproval('approved', 1))
         self.fake_gerrit.addEvent(B.addApproval('approved', 1))
         self.waitUntilSettled()
         self.assertBuilds([dict(name='project-merge', changes='1,1')])
 
-        self.launch_server.release('.*-merge')
+        self.executor_server.release('.*-merge')
         self.waitUntilSettled()
         # A/project-merge is complete
         self.assertBuilds([
@@ -205,7 +205,7 @@
             dict(name='project-merge', changes='1,1 2,1'),
         ])
 
-        self.launch_server.release('.*-merge')
+        self.executor_server.release('.*-merge')
         self.waitUntilSettled()
         # A/project-merge is complete
         # B/project-merge is complete
@@ -217,7 +217,7 @@
         ])
 
         # Release project-test1 for A which will fail.  This will
-        # abort both running B jobs and relaunch project-merge for B.
+        # abort both running B jobs and reexecute project-merge for B.
         self.builds[0].release()
         self.waitUntilSettled()
 
@@ -242,7 +242,7 @@
     def test_independent_queues(self):
         "Test that changes end up in the right queues"
 
-        self.launch_server.hold_jobs_in_build = True
+        self.executor_server.hold_jobs_in_build = True
         A = self.fake_gerrit.addFakeChange('org/project', 'master', 'A')
         B = self.fake_gerrit.addFakeChange('org/project1', 'master', 'B')
         C = self.fake_gerrit.addFakeChange('org/project2', 'master', 'C')
@@ -271,7 +271,7 @@
         self.builds[0].release()
         self.waitUntilSettled()
         # Release the merge job for project2 which is behind project1
-        self.launch_server.release('.*-merge')
+        self.executor_server.release('.*-merge')
         self.waitUntilSettled()
 
         # All the test builds should be running:
@@ -316,7 +316,7 @@
     def test_failed_change_at_head(self):
         "Test that if a change at the head fails, jobs behind it are canceled"
 
-        self.launch_server.hold_jobs_in_build = True
+        self.executor_server.hold_jobs_in_build = True
         A = self.fake_gerrit.addFakeChange('org/project', 'master', 'A')
         B = self.fake_gerrit.addFakeChange('org/project', 'master', 'B')
         C = self.fake_gerrit.addFakeChange('org/project', 'master', 'C')
@@ -324,7 +324,7 @@
         B.addApproval('code-review', 2)
         C.addApproval('code-review', 2)
 
-        self.launch_server.failJob('project-test1', A)
+        self.executor_server.failJob('project-test1', A)
 
         self.fake_gerrit.addEvent(A.addApproval('approved', 1))
         self.fake_gerrit.addEvent(B.addApproval('approved', 1))
@@ -336,11 +336,11 @@
             dict(name='project-merge', changes='1,1'),
         ])
 
-        self.launch_server.release('.*-merge')
+        self.executor_server.release('.*-merge')
         self.waitUntilSettled()
-        self.launch_server.release('.*-merge')
+        self.executor_server.release('.*-merge')
         self.waitUntilSettled()
-        self.launch_server.release('.*-merge')
+        self.executor_server.release('.*-merge')
         self.waitUntilSettled()
 
         self.assertBuilds([
@@ -381,9 +381,9 @@
                  changes='1,1 2,1 3,1'),
         ], ordered=False)
 
-        self.launch_server.release('.*-merge')
+        self.executor_server.release('.*-merge')
         self.waitUntilSettled()
-        self.launch_server.release('.*-merge')
+        self.executor_server.release('.*-merge')
         self.waitUntilSettled()
         self.orderedRelease()
 
@@ -431,7 +431,7 @@
     def test_failed_change_in_middle(self):
         "Test a failed change in the middle of the queue"
 
-        self.launch_server.hold_jobs_in_build = True
+        self.executor_server.hold_jobs_in_build = True
         A = self.fake_gerrit.addFakeChange('org/project', 'master', 'A')
         B = self.fake_gerrit.addFakeChange('org/project', 'master', 'B')
         C = self.fake_gerrit.addFakeChange('org/project', 'master', 'C')
@@ -439,7 +439,7 @@
         B.addApproval('code-review', 2)
         C.addApproval('code-review', 2)
 
-        self.launch_server.failJob('project-test1', B)
+        self.executor_server.failJob('project-test1', B)
 
         self.fake_gerrit.addEvent(A.addApproval('approved', 1))
         self.fake_gerrit.addEvent(B.addApproval('approved', 1))
@@ -447,11 +447,11 @@
 
         self.waitUntilSettled()
 
-        self.launch_server.release('.*-merge')
+        self.executor_server.release('.*-merge')
         self.waitUntilSettled()
-        self.launch_server.release('.*-merge')
+        self.executor_server.release('.*-merge')
         self.waitUntilSettled()
-        self.launch_server.release('.*-merge')
+        self.executor_server.release('.*-merge')
         self.waitUntilSettled()
 
         self.assertEqual(len(self.builds), 6)
@@ -471,7 +471,7 @@
         self.assertEqual(len(self.builds), 4)
         self.assertEqual(self.countJobResults(self.history, 'ABORTED'), 2)
 
-        self.launch_server.release('.*-merge')
+        self.executor_server.release('.*-merge')
         self.waitUntilSettled()
 
         # project-test1 and project-test2 for A
@@ -492,8 +492,8 @@
         self.assertEqual(self.countJobResults(builds, 'SUCCESS'), 1)
         self.assertEqual(self.countJobResults(builds, None), 2)
 
-        self.launch_server.hold_jobs_in_build = False
-        self.launch_server.release()
+        self.executor_server.hold_jobs_in_build = False
+        self.executor_server.release()
         self.waitUntilSettled()
 
         self.assertEqual(len(self.builds), 0)
@@ -516,7 +516,7 @@
         B.addApproval('code-review', 2)
         C.addApproval('code-review', 2)
 
-        self.launch_server.failJob('project-test1', A)
+        self.executor_server.failJob('project-test1', A)
 
         self.fake_gerrit.addEvent(A.addApproval('approved', 1))
         self.fake_gerrit.addEvent(B.addApproval('approved', 1))
@@ -526,7 +526,7 @@
         queue = self.gearman_server.getQueue()
         self.assertEqual(len(self.builds), 0)
         self.assertEqual(len(queue), 1)
-        self.assertEqual(queue[0].name, 'launcher:launch')
+        self.assertEqual(queue[0].name, 'executor:execute')
         job_args = json.loads(queue[0].arguments)
         self.assertEqual(job_args['job'], 'project-merge')
         self.assertEqual(job_args['items'][0]['number'], '%d' % A.number)
@@ -578,7 +578,7 @@
 
     @skip("Disabled for early v3 development")
     def _test_time_database(self, iteration):
-        self.launch_server.hold_jobs_in_build = True
+        self.executor_server.hold_jobs_in_build = True
         A = self.fake_gerrit.addFakeChange('org/project', 'master', 'A')
         A.addApproval('code-review', 2)
         self.fake_gerrit.addEvent(A.addApproval('approved', 1))
@@ -607,8 +607,8 @@
             self.assertTrue(found_job['estimated_time'] >= 2)
             self.assertIsNotNone(found_job['remaining_time'])
 
-        self.launch_server.hold_jobs_in_build = False
-        self.launch_server.release()
+        self.executor_server.hold_jobs_in_build = False
+        self.executor_server.release()
         self.waitUntilSettled()
 
     @skip("Disabled for early v3 development")
@@ -621,7 +621,7 @@
     def test_two_failed_changes_at_head(self):
         "Test that changes are reparented correctly if 2 fail at head"
 
-        self.launch_server.hold_jobs_in_build = True
+        self.executor_server.hold_jobs_in_build = True
         A = self.fake_gerrit.addFakeChange('org/project', 'master', 'A')
         B = self.fake_gerrit.addFakeChange('org/project', 'master', 'B')
         C = self.fake_gerrit.addFakeChange('org/project', 'master', 'C')
@@ -629,19 +629,19 @@
         B.addApproval('code-review', 2)
         C.addApproval('code-review', 2)
 
-        self.launch_server.failJob('project-test1', A)
-        self.launch_server.failJob('project-test1', B)
+        self.executor_server.failJob('project-test1', A)
+        self.executor_server.failJob('project-test1', B)
 
         self.fake_gerrit.addEvent(A.addApproval('approved', 1))
         self.fake_gerrit.addEvent(B.addApproval('approved', 1))
         self.fake_gerrit.addEvent(C.addApproval('approved', 1))
         self.waitUntilSettled()
 
-        self.launch_server.release('.*-merge')
+        self.executor_server.release('.*-merge')
         self.waitUntilSettled()
-        self.launch_server.release('.*-merge')
+        self.executor_server.release('.*-merge')
         self.waitUntilSettled()
-        self.launch_server.release('.*-merge')
+        self.executor_server.release('.*-merge')
         self.waitUntilSettled()
 
         self.assertEqual(len(self.builds), 6)
@@ -664,7 +664,7 @@
         self.waitUntilSettled()
 
         # restart of C after B failure
-        self.launch_server.release('.*-merge')
+        self.executor_server.release('.*-merge')
         self.waitUntilSettled()
 
         self.assertEqual(len(self.builds), 5)
@@ -689,9 +689,9 @@
         self.waitUntilSettled()
 
         # restart of B,C after A failure
-        self.launch_server.release('.*-merge')
+        self.executor_server.release('.*-merge')
         self.waitUntilSettled()
-        self.launch_server.release('.*-merge')
+        self.executor_server.release('.*-merge')
         self.waitUntilSettled()
 
         self.assertEqual(len(self.builds), 4)
@@ -710,8 +710,8 @@
         self.assertTrue(self.builds[2].hasChanges(B))
         self.assertTrue(self.builds[2].hasChanges(C))
 
-        self.launch_server.hold_jobs_in_build = False
-        self.launch_server.release()
+        self.executor_server.hold_jobs_in_build = False
+        self.executor_server.release()
         self.waitUntilSettled()
 
         self.assertEqual(len(self.builds), 0)
@@ -819,7 +819,7 @@
         for connection in self.connections.connections.values():
             connection.maintainCache([])
 
-        self.launch_server.hold_jobs_in_build = True
+        self.executor_server.hold_jobs_in_build = True
         A.addApproval('approved', 1)
         B.addApproval('approved', 1)
         D.addApproval('approved', 1)
@@ -829,10 +829,10 @@
         self.fake_gerrit.addEvent(C.addApproval('approved', 1))
 
         for x in range(8):
-            self.launch_server.release('.*-merge')
+            self.executor_server.release('.*-merge')
             self.waitUntilSettled()
-        self.launch_server.hold_jobs_in_build = False
-        self.launch_server.release()
+        self.executor_server.hold_jobs_in_build = False
+        self.executor_server.release()
         self.waitUntilSettled()
 
         self.assertEqual(A.data['status'], 'MERGED')
@@ -854,7 +854,7 @@
 
     def test_source_cache(self):
         "Test that the source cache operates correctly"
-        self.launch_server.hold_jobs_in_build = True
+        self.executor_server.hold_jobs_in_build = True
 
         A = self.fake_gerrit.addFakeChange('org/project', 'master', 'A')
         B = self.fake_gerrit.addFakeChange('org/project', 'master', 'B')
@@ -889,8 +889,8 @@
         # there should still be changes in the cache
         self.assertNotEqual(len(self.fake_gerrit._change_cache.keys()), 0)
 
-        self.launch_server.hold_jobs_in_build = False
-        self.launch_server.release()
+        self.executor_server.hold_jobs_in_build = False
+        self.executor_server.release()
         self.waitUntilSettled()
 
         self.assertEqual(A.data['status'], 'MERGED')
@@ -1069,7 +1069,7 @@
         B.setDependsOn(A, 1)
         A.setDependsOn(M1, 1)
 
-        self.launch_server.failJob('project-merge', A)
+        self.executor_server.failJob('project-merge', A)
 
         self.fake_gerrit.addEvent(C.addApproval('approved', 1))
         self.fake_gerrit.addEvent(B.addApproval('approved', 1))
@@ -1087,7 +1087,7 @@
 
     def test_failing_dependent_changes(self):
         "Test that failing dependent patches are taken out of stream"
-        self.launch_server.hold_jobs_in_build = True
+        self.executor_server.hold_jobs_in_build = True
         A = self.fake_gerrit.addFakeChange('org/project', 'master', 'A')
         B = self.fake_gerrit.addFakeChange('org/project', 'master', 'B')
         C = self.fake_gerrit.addFakeChange('org/project', 'master', 'C')
@@ -1104,7 +1104,7 @@
         D.setDependsOn(C, 1)
         C.setDependsOn(B, 1)
 
-        self.launch_server.failJob('project-test1', B)
+        self.executor_server.failJob('project-test1', B)
 
         self.fake_gerrit.addEvent(A.addApproval('approved', 1))
         self.fake_gerrit.addEvent(D.addApproval('approved', 1))
@@ -1113,24 +1113,24 @@
         self.fake_gerrit.addEvent(E.addApproval('approved', 1))
 
         self.waitUntilSettled()
-        self.launch_server.release('.*-merge')
+        self.executor_server.release('.*-merge')
         self.waitUntilSettled()
-        self.launch_server.release('.*-merge')
+        self.executor_server.release('.*-merge')
         self.waitUntilSettled()
-        self.launch_server.release('.*-merge')
+        self.executor_server.release('.*-merge')
         self.waitUntilSettled()
-        self.launch_server.release('.*-merge')
+        self.executor_server.release('.*-merge')
         self.waitUntilSettled()
-        self.launch_server.release('.*-merge')
+        self.executor_server.release('.*-merge')
         self.waitUntilSettled()
 
-        self.launch_server.hold_jobs_in_build = False
+        self.executor_server.hold_jobs_in_build = False
         for build in self.builds:
             if build.parameters['ZUUL_CHANGE'] != '1':
                 build.release()
                 self.waitUntilSettled()
 
-        self.launch_server.release()
+        self.executor_server.release()
         self.waitUntilSettled()
 
         self.assertEqual(A.data['status'], 'MERGED')
@@ -1155,7 +1155,7 @@
         # If it's dequeued more than once, we should see extra
         # aborted jobs.
 
-        self.launch_server.hold_jobs_in_build = True
+        self.executor_server.hold_jobs_in_build = True
         A = self.fake_gerrit.addFakeChange('org/project1', 'master', 'A')
         B = self.fake_gerrit.addFakeChange('org/project1', 'master', 'B')
         C = self.fake_gerrit.addFakeChange('org/project1', 'master', 'C')
@@ -1163,9 +1163,9 @@
         B.addApproval('code-review', 2)
         C.addApproval('code-review', 2)
 
-        self.launch_server.failJob('project-test1', A)
-        self.launch_server.failJob('project-test2', A)
-        self.launch_server.failJob('project1-project2-integration', A)
+        self.executor_server.failJob('project-test1', A)
+        self.executor_server.failJob('project-test2', A)
+        self.executor_server.failJob('project1-project2-integration', A)
 
         self.fake_gerrit.addEvent(A.addApproval('approved', 1))
         self.fake_gerrit.addEvent(B.addApproval('approved', 1))
@@ -1177,11 +1177,11 @@
         self.assertEqual(self.builds[0].name, 'project-merge')
         self.assertTrue(self.builds[0].hasChanges(A))
 
-        self.launch_server.release('.*-merge')
+        self.executor_server.release('.*-merge')
         self.waitUntilSettled()
-        self.launch_server.release('.*-merge')
+        self.executor_server.release('.*-merge')
         self.waitUntilSettled()
-        self.launch_server.release('.*-merge')
+        self.executor_server.release('.*-merge')
         self.waitUntilSettled()
 
         self.assertEqual(len(self.builds), 9)
@@ -1201,8 +1201,8 @@
         self.assertEqual(len(self.builds), 3)  # test2,integration, merge for B
         self.assertEqual(self.countJobResults(self.history, 'ABORTED'), 6)
 
-        self.launch_server.hold_jobs_in_build = False
-        self.launch_server.release()
+        self.executor_server.hold_jobs_in_build = False
+        self.executor_server.release()
         self.waitUntilSettled()
 
         self.assertEqual(len(self.builds), 0)
@@ -1221,7 +1221,7 @@
         A = self.fake_gerrit.addFakeChange('org/nonvoting-project',
                                            'master', 'A')
         A.addApproval('code-review', 2)
-        self.launch_server.failJob('nonvoting-project-test2', A)
+        self.executor_server.failJob('nonvoting-project-test2', A)
         self.fake_gerrit.addEvent(A.addApproval('approved', 1))
 
         self.waitUntilSettled()
@@ -1262,7 +1262,7 @@
         "Test failed check queue jobs."
 
         A = self.fake_gerrit.addFakeChange('org/project', 'master', 'A')
-        self.launch_server.failJob('project-test2', A)
+        self.executor_server.failJob('project-test2', A)
         self.fake_gerrit.addEvent(A.getPatchsetCreatedEvent(1))
 
         self.waitUntilSettled()
@@ -1284,7 +1284,7 @@
         # This complicated test is a reproduction of a real life bug
         self.sched.reconfigure(self.config)
 
-        self.launch_server.hold_jobs_in_build = True
+        self.executor_server.hold_jobs_in_build = True
         A = self.fake_gerrit.addFakeChange('org/project1', 'master', 'A')
         B = self.fake_gerrit.addFakeChange('org/project1', 'master', 'B')
         C = self.fake_gerrit.addFakeChange('org/project2', 'master', 'C')
@@ -1310,9 +1310,9 @@
         self.fake_gerrit.addEvent(B.addApproval('approved', 1))
         self.waitUntilSettled()
 
-        self.launch_server.release('.*-merge')
+        self.executor_server.release('.*-merge')
         self.waitUntilSettled()
-        self.launch_server.release('.*-merge')
+        self.executor_server.release('.*-merge')
         self.waitUntilSettled()
 
         self.fake_gerrit.addEvent(C.addApproval('approved', 1))
@@ -1324,13 +1324,13 @@
         self.fake_gerrit.addEvent(F.addApproval('approved', 1))
         self.waitUntilSettled()
 
-        self.launch_server.release('.*-merge')
+        self.executor_server.release('.*-merge')
         self.waitUntilSettled()
-        self.launch_server.release('.*-merge')
+        self.executor_server.release('.*-merge')
         self.waitUntilSettled()
-        self.launch_server.release('.*-merge')
+        self.executor_server.release('.*-merge')
         self.waitUntilSettled()
-        self.launch_server.release('.*-merge')
+        self.executor_server.release('.*-merge')
         self.waitUntilSettled()
 
         # all jobs running
@@ -1344,8 +1344,8 @@
         c.release()
         self.waitUntilSettled()
 
-        self.launch_server.hold_jobs_in_build = False
-        self.launch_server.release()
+        self.executor_server.hold_jobs_in_build = False
+        self.executor_server.release()
         self.waitUntilSettled()
 
         self.assertEqual(A.data['status'], 'NEW')
@@ -1386,7 +1386,7 @@
         path = os.path.join(self.merger_src_root, "org/project")
         if os.path.exists(path):
             repack_repo(path)
-        path = os.path.join(self.launcher_src_root, "org/project")
+        path = os.path.join(self.executor_src_root, "org/project")
         if os.path.exists(path):
             repack_repo(path)
 
@@ -1405,7 +1405,7 @@
 
     def test_merger_repack_large_change(self):
         "Test that the merger works with large changes after a repack"
-        # https://bugs.launchpad.net/zuul/+bug/1078946
+        # https://bugs.executepad.net/zuul/+bug/1078946
         # This test assumes the repo is already cloned; make sure it is
         tenant = self.sched.abide.tenants.get('tenant-one')
         url = self.fake_gerrit.getGitUrl(
@@ -1418,7 +1418,7 @@
         path = os.path.join(self.merger_src_root, "org/project1")
         if os.path.exists(path):
             repack_repo(path)
-        path = os.path.join(self.launcher_src_root, "org/project1")
+        path = os.path.join(self.executor_src_root, "org/project1")
         if os.path.exists(path):
             repack_repo(path)
 
@@ -1437,7 +1437,7 @@
     def test_new_patchset_dequeues_old(self):
         "Test that a new patchset causes the old to be dequeued"
         # D -> C (depends on B) -> B (depends on A) -> A -> M
-        self.launch_server.hold_jobs_in_build = True
+        self.executor_server.hold_jobs_in_build = True
         M = self.fake_gerrit.addFakeChange('org/project', 'master', 'M')
         M.setMerged()
 
@@ -1464,8 +1464,8 @@
         self.fake_gerrit.addEvent(B.getPatchsetCreatedEvent(2))
         self.waitUntilSettled()
 
-        self.launch_server.hold_jobs_in_build = False
-        self.launch_server.release()
+        self.executor_server.hold_jobs_in_build = False
+        self.executor_server.release()
         self.waitUntilSettled()
 
         self.assertEqual(A.data['status'], 'MERGED')
@@ -1481,7 +1481,7 @@
     def test_new_patchset_check(self):
         "Test a new patchset in check"
 
-        self.launch_server.hold_jobs_in_build = True
+        self.executor_server.hold_jobs_in_build = True
 
         A = self.fake_gerrit.addFakeChange('org/project', 'master', 'A')
         B = self.fake_gerrit.addFakeChange('org/project', 'master', 'B')
@@ -1559,8 +1559,8 @@
         self.waitUntilSettled()
         self.builds[0].release()
         self.waitUntilSettled()
-        self.launch_server.hold_jobs_in_build = False
-        self.launch_server.release()
+        self.executor_server.hold_jobs_in_build = False
+        self.executor_server.release()
         self.waitUntilSettled()
 
         self.assertEqual(A.reported, 1)
@@ -1577,7 +1577,7 @@
     def test_abandoned_gate(self):
         "Test that an abandoned change is dequeued from gate"
 
-        self.launch_server.hold_jobs_in_build = True
+        self.executor_server.hold_jobs_in_build = True
 
         A = self.fake_gerrit.addFakeChange('org/project', 'master', 'A')
         A.addApproval('code-review', 2)
@@ -1589,7 +1589,7 @@
         self.fake_gerrit.addEvent(A.getChangeAbandonedEvent())
         self.waitUntilSettled()
 
-        self.launch_server.release('.*-merge')
+        self.executor_server.release('.*-merge')
         self.waitUntilSettled()
 
         self.assertBuilds([])
@@ -1602,7 +1602,7 @@
     def test_abandoned_check(self):
         "Test that an abandoned change is dequeued from check"
 
-        self.launch_server.hold_jobs_in_build = True
+        self.executor_server.hold_jobs_in_build = True
 
         A = self.fake_gerrit.addFakeChange('org/project', 'master', 'A')
         B = self.fake_gerrit.addFakeChange('org/project', 'master', 'B')
@@ -1643,8 +1643,8 @@
         self.assertEqual(items[1].change.number, '2')
         self.assertTrue(items[1].live)
 
-        self.launch_server.hold_jobs_in_build = False
-        self.launch_server.release()
+        self.executor_server.hold_jobs_in_build = False
+        self.executor_server.release()
         self.waitUntilSettled()
 
         self.assertEqual(len(self.history), 4)
@@ -1656,7 +1656,7 @@
     def test_abandoned_not_timer(self):
         "Test that an abandoned change does not cancel timer jobs"
 
-        self.launch_server.hold_jobs_in_build = True
+        self.executor_server.hold_jobs_in_build = True
 
         # Start timer trigger - also org/project
         self.updateConfigLayout('layout-idle')
@@ -1683,13 +1683,13 @@
 
         self.assertEqual(len(self.builds), 2, "Two timer jobs remain")
 
-        self.launch_server.release()
+        self.executor_server.release()
         self.waitUntilSettled()
 
     def test_zuul_url_return(self):
         "Test if ZUUL_URL is returning when zuul_url is set in zuul.conf"
         self.assertTrue(self.sched.config.has_option('merger', 'zuul_url'))
-        self.launch_server.hold_jobs_in_build = True
+        self.executor_server.hold_jobs_in_build = True
 
         A = self.fake_gerrit.addFakeChange('org/project', 'master', 'A')
         A.addApproval('code-review', 2)
@@ -1700,14 +1700,14 @@
         for build in self.builds:
             self.assertTrue('ZUUL_URL' in build.parameters)
 
-        self.launch_server.hold_jobs_in_build = False
-        self.launch_server.release()
+        self.executor_server.hold_jobs_in_build = False
+        self.executor_server.release()
         self.waitUntilSettled()
 
     def test_new_patchset_dequeues_old_on_head(self):
         "Test that a new patchset causes the old to be dequeued (at head)"
         # D -> C (depends on B) -> B (depends on A) -> A -> M
-        self.launch_server.hold_jobs_in_build = True
+        self.executor_server.hold_jobs_in_build = True
         M = self.fake_gerrit.addFakeChange('org/project', 'master', 'M')
         M.setMerged()
         A = self.fake_gerrit.addFakeChange('org/project', 'master', 'A')
@@ -1733,8 +1733,8 @@
         self.fake_gerrit.addEvent(A.getPatchsetCreatedEvent(2))
         self.waitUntilSettled()
 
-        self.launch_server.hold_jobs_in_build = False
-        self.launch_server.release()
+        self.executor_server.hold_jobs_in_build = False
+        self.executor_server.release()
         self.waitUntilSettled()
 
         self.assertEqual(A.data['status'], 'NEW')
@@ -1749,7 +1749,7 @@
 
     def test_new_patchset_dequeues_old_without_dependents(self):
         "Test that a new patchset causes only the old to be dequeued"
-        self.launch_server.hold_jobs_in_build = True
+        self.executor_server.hold_jobs_in_build = True
         A = self.fake_gerrit.addFakeChange('org/project', 'master', 'A')
         B = self.fake_gerrit.addFakeChange('org/project', 'master', 'B')
         C = self.fake_gerrit.addFakeChange('org/project', 'master', 'C')
@@ -1766,8 +1766,8 @@
         self.fake_gerrit.addEvent(B.getPatchsetCreatedEvent(2))
         self.waitUntilSettled()
 
-        self.launch_server.hold_jobs_in_build = False
-        self.launch_server.release()
+        self.executor_server.hold_jobs_in_build = False
+        self.executor_server.release()
         self.waitUntilSettled()
 
         self.assertEqual(A.data['status'], 'MERGED')
@@ -1780,7 +1780,7 @@
 
     def test_new_patchset_dequeues_old_independent_queue(self):
         "Test that a new patchset causes the old to be dequeued (independent)"
-        self.launch_server.hold_jobs_in_build = True
+        self.executor_server.hold_jobs_in_build = True
         A = self.fake_gerrit.addFakeChange('org/project', 'master', 'A')
         B = self.fake_gerrit.addFakeChange('org/project', 'master', 'B')
         C = self.fake_gerrit.addFakeChange('org/project', 'master', 'C')
@@ -1793,8 +1793,8 @@
         self.fake_gerrit.addEvent(B.getPatchsetCreatedEvent(2))
         self.waitUntilSettled()
 
-        self.launch_server.hold_jobs_in_build = False
-        self.launch_server.release()
+        self.executor_server.hold_jobs_in_build = False
+        self.executor_server.release()
         self.waitUntilSettled()
 
         self.assertEqual(A.data['status'], 'NEW')
@@ -1839,7 +1839,7 @@
 
     def test_zuul_refs(self):
         "Test that zuul refs exist and have the right changes"
-        self.launch_server.hold_jobs_in_build = True
+        self.executor_server.hold_jobs_in_build = True
         M1 = self.fake_gerrit.addFakeChange('org/project1', 'master', 'M1')
         M1.setMerged()
         M2 = self.fake_gerrit.addFakeChange('org/project2', 'master', 'M2')
@@ -1859,13 +1859,13 @@
         self.fake_gerrit.addEvent(D.addApproval('approved', 1))
 
         self.waitUntilSettled()
-        self.launch_server.release('.*-merge')
+        self.executor_server.release('.*-merge')
         self.waitUntilSettled()
-        self.launch_server.release('.*-merge')
+        self.executor_server.release('.*-merge')
         self.waitUntilSettled()
-        self.launch_server.release('.*-merge')
+        self.executor_server.release('.*-merge')
         self.waitUntilSettled()
-        self.launch_server.release('.*-merge')
+        self.executor_server.release('.*-merge')
         self.waitUntilSettled()
 
         a_zref = b_zref = c_zref = d_zref = None
@@ -1911,8 +1911,8 @@
         # should have a and b in 1, c and d in 2
         self.assertTrue(d_build.hasChanges(A, B, C, D))
 
-        self.launch_server.hold_jobs_in_build = False
-        self.launch_server.release()
+        self.executor_server.hold_jobs_in_build = False
+        self.executor_server.release()
         self.waitUntilSettled()
 
         self.assertEqual(A.data['status'], 'MERGED')
@@ -1926,15 +1926,15 @@
 
     def test_rerun_on_error(self):
         "Test that if a worker fails to run a job, it is run again"
-        self.launch_server.hold_jobs_in_build = True
+        self.executor_server.hold_jobs_in_build = True
         A = self.fake_gerrit.addFakeChange('org/project', 'master', 'A')
         A.addApproval('code-review', 2)
         self.fake_gerrit.addEvent(A.addApproval('approved', 1))
         self.waitUntilSettled()
 
         self.builds[0].requeue = True
-        self.launch_server.hold_jobs_in_build = False
-        self.launch_server.release()
+        self.executor_server.hold_jobs_in_build = False
+        self.executor_server.release()
         self.waitUntilSettled()
         self.assertEqual(self.countJobResults(self.history, None), 1)
         self.assertEqual(self.countJobResults(self.history, 'SUCCESS'), 3)
@@ -2094,7 +2094,7 @@
         "Test that queue precedence works"
 
         self.gearman_server.hold_jobs_in_queue = True
-        self.launch_server.hold_jobs_in_build = True
+        self.executor_server.hold_jobs_in_build = True
         A = self.fake_gerrit.addFakeChange('org/project', 'master', 'A')
         self.fake_gerrit.addEvent(A.getPatchsetCreatedEvent(1))
         A.addApproval('code-review', 2)
@@ -2107,7 +2107,7 @@
 
         # Run one build at a time to ensure non-race order:
         self.orderedRelease()
-        self.launch_server.hold_jobs_in_build = False
+        self.executor_server.hold_jobs_in_build = False
         self.waitUntilSettled()
 
         self.log.debug(self.history)
@@ -2120,13 +2120,13 @@
 
     def test_json_status(self):
         "Test that we can retrieve JSON status info"
-        self.launch_server.hold_jobs_in_build = True
+        self.executor_server.hold_jobs_in_build = True
         A = self.fake_gerrit.addFakeChange('org/project', 'master', 'A')
         A.addApproval('code-review', 2)
         self.fake_gerrit.addEvent(A.addApproval('approved', 1))
         self.waitUntilSettled()
 
-        self.launch_server.release('project-merge')
+        self.executor_server.release('project-merge')
         self.waitUntilSettled()
 
         port = self.webapp.server.socket.getsockname()[1]
@@ -2145,8 +2145,8 @@
         self.assertIn('Expires', headers)
         data = f.read()
 
-        self.launch_server.hold_jobs_in_build = False
-        self.launch_server.release()
+        self.executor_server.hold_jobs_in_build = False
+        self.executor_server.release()
         self.waitUntilSettled()
 
         data = json.loads(data)
@@ -2193,7 +2193,7 @@
         self.updateConfigLayout('layout-mutex')
         self.sched.reconfigure(self.config)
 
-        self.launch_server.hold_jobs_in_build = True
+        self.executor_server.hold_jobs_in_build = True
         A = self.fake_gerrit.addFakeChange('org/project', 'master', 'A')
         B = self.fake_gerrit.addFakeChange('org/project', 'master', 'B')
         self.assertFalse('test-mutex' in self.sched.mutex.mutexes)
@@ -2206,7 +2206,7 @@
         self.assertEqual(self.builds[1].name, 'mutex-one')
         self.assertEqual(self.builds[2].name, 'project-test1')
 
-        self.launch_server.release('mutex-one')
+        self.executor_server.release('mutex-one')
         self.waitUntilSettled()
 
         self.assertEqual(len(self.builds), 3)
@@ -2215,7 +2215,7 @@
         self.assertEqual(self.builds[2].name, 'mutex-two')
         self.assertTrue('test-mutex' in self.sched.mutex.mutexes)
 
-        self.launch_server.release('mutex-two')
+        self.executor_server.release('mutex-two')
         self.waitUntilSettled()
 
         self.assertEqual(len(self.builds), 3)
@@ -2224,7 +2224,7 @@
         self.assertEqual(self.builds[2].name, 'mutex-one')
         self.assertTrue('test-mutex' in self.sched.mutex.mutexes)
 
-        self.launch_server.release('mutex-one')
+        self.executor_server.release('mutex-one')
         self.waitUntilSettled()
 
         self.assertEqual(len(self.builds), 3)
@@ -2233,7 +2233,7 @@
         self.assertEqual(self.builds[2].name, 'mutex-two')
         self.assertTrue('test-mutex' in self.sched.mutex.mutexes)
 
-        self.launch_server.release('mutex-two')
+        self.executor_server.release('mutex-two')
         self.waitUntilSettled()
 
         self.assertEqual(len(self.builds), 2)
@@ -2241,8 +2241,8 @@
         self.assertEqual(self.builds[1].name, 'project-test1')
         self.assertFalse('test-mutex' in self.sched.mutex.mutexes)
 
-        self.launch_server.hold_jobs_in_build = False
-        self.launch_server.release()
+        self.executor_server.hold_jobs_in_build = False
+        self.executor_server.release()
 
         self.waitUntilSettled()
         self.assertEqual(len(self.builds), 0)
@@ -2256,7 +2256,7 @@
         self.updateConfigLayout('layout-mutex')
         self.sched.reconfigure(self.config)
 
-        self.launch_server.hold_jobs_in_build = True
+        self.executor_server.hold_jobs_in_build = True
 
         tenant = self.sched.abide.tenants.get('openstack')
         check_pipeline = tenant.layout.pipelines['check']
@@ -2279,8 +2279,8 @@
         # The mutex should be released
         self.assertFalse('test-mutex' in self.sched.mutex.mutexes)
 
-        self.launch_server.hold_jobs_in_build = False
-        self.launch_server.release()
+        self.executor_server.hold_jobs_in_build = False
+        self.executor_server.release()
         self.waitUntilSettled()
 
     def test_mutex_reconfigure(self):
@@ -2288,7 +2288,7 @@
         self.updateConfigLayout('layout-mutex')
         self.sched.reconfigure(self.config)
 
-        self.launch_server.hold_jobs_in_build = True
+        self.executor_server.hold_jobs_in_build = True
 
         A = self.fake_gerrit.addFakeChange('org/project', 'master', 'A')
         self.assertFalse('test-mutex' in self.sched.mutex.mutexes)
@@ -2302,7 +2302,7 @@
         self.sched.reconfigure(self.config)
         self.waitUntilSettled()
 
-        self.launch_server.release('project-test1')
+        self.executor_server.release('project-test1')
         self.waitUntilSettled()
 
         # There should be no builds anymore
@@ -2313,7 +2313,7 @@
 
     def test_live_reconfiguration(self):
         "Test that live reconfiguration works"
-        self.launch_server.hold_jobs_in_build = True
+        self.executor_server.hold_jobs_in_build = True
         A = self.fake_gerrit.addFakeChange('org/project', 'master', 'A')
         A.addApproval('code-review', 2)
         self.fake_gerrit.addEvent(A.addApproval('approved', 1))
@@ -2322,8 +2322,8 @@
         self.sched.reconfigure(self.config)
         self.waitUntilSettled()
 
-        self.launch_server.hold_jobs_in_build = False
-        self.launch_server.release()
+        self.executor_server.hold_jobs_in_build = False
+        self.executor_server.release()
         self.waitUntilSettled()
         self.assertEqual(self.getJobFromHistory('project-merge').result,
                          'SUCCESS')
@@ -2341,7 +2341,7 @@
         # sitting in the queue.  The job gets added to the change and
         # enqueued and the change gets stuck.
         self.worker.registerFunction('build:project-test3')
-        self.launch_server.hold_jobs_in_build = True
+        self.executor_server.hold_jobs_in_build = True
 
         # This change is fine.  It's here to stop the queue long
         # enough for the next change to be subject to the
@@ -2376,8 +2376,8 @@
         self.sched.reconfigure(self.config)
         self.waitUntilSettled()
 
-        self.launch_server.hold_jobs_in_build = False
-        self.launch_server.release()
+        self.executor_server.hold_jobs_in_build = False
+        self.executor_server.release()
         self.waitUntilSettled()
 
         self.assertEqual(A.data['status'], 'MERGED')
@@ -2400,7 +2400,7 @@
         # that tests a job added to a job tree with a failed root does
         # not run.
         self.worker.registerFunction('build:project-test3')
-        self.launch_server.hold_jobs_in_build = True
+        self.executor_server.hold_jobs_in_build = True
 
         # This change is fine.  It's here to stop the queue long
         # enough for the next change to be subject to the
@@ -2410,16 +2410,16 @@
         A.addApproval('code-review', 2)
         self.fake_gerrit.addEvent(A.addApproval('approved', 1))
         self.waitUntilSettled()
-        self.launch_server.release('.*-merge')
+        self.executor_server.release('.*-merge')
         self.waitUntilSettled()
 
         B = self.fake_gerrit.addFakeChange('org/project', 'master', 'B')
-        self.launch_server.failJob('project-merge', B)
+        self.executor_server.failJob('project-merge', B)
         B.addApproval('code-review', 2)
         self.fake_gerrit.addEvent(B.addApproval('approved', 1))
         self.waitUntilSettled()
 
-        self.launch_server.release('.*-merge')
+        self.executor_server.release('.*-merge')
         self.waitUntilSettled()
 
         # Both -merge jobs have run, but no others.
@@ -2439,8 +2439,8 @@
         self.sched.reconfigure(self.config)
         self.waitUntilSettled()
 
-        self.launch_server.hold_jobs_in_build = False
-        self.launch_server.release()
+        self.executor_server.hold_jobs_in_build = False
+        self.executor_server.release()
         self.waitUntilSettled()
 
         self.assertEqual(A.data['status'], 'MERGED')
@@ -2464,18 +2464,18 @@
         # bug where the code to re-set build statuses would run on
         # that build and raise an exception because the job no longer
         # existed.
-        self.launch_server.hold_jobs_in_build = True
+        self.executor_server.hold_jobs_in_build = True
 
         A = self.fake_gerrit.addFakeChange('org/project', 'master', 'A')
 
         # This change will fail and later be removed by the reconfiguration.
-        self.launch_server.failJob('project-test1', A)
+        self.executor_server.failJob('project-test1', A)
 
         self.fake_gerrit.addEvent(A.getPatchsetCreatedEvent(1))
         self.waitUntilSettled()
-        self.launch_server.release('.*-merge')
+        self.executor_server.release('.*-merge')
         self.waitUntilSettled()
-        self.launch_server.release('project-test1')
+        self.executor_server.release('project-test1')
         self.waitUntilSettled()
 
         self.assertEqual(A.data['status'], 'NEW')
@@ -2493,8 +2493,8 @@
         self.sched.reconfigure(self.config)
         self.waitUntilSettled()
 
-        self.launch_server.hold_jobs_in_build = False
-        self.launch_server.release()
+        self.executor_server.hold_jobs_in_build = False
+        self.executor_server.release()
         self.waitUntilSettled()
 
         self.assertEqual(self.getJobFromHistory('project-test2').result,
@@ -2515,17 +2515,17 @@
         # this project but otherwise still exists in the system does
         # not disrupt reconfiguration.
 
-        self.launch_server.hold_jobs_in_build = True
+        self.executor_server.hold_jobs_in_build = True
 
         A = self.fake_gerrit.addFakeChange('org/project1', 'master', 'A')
 
-        self.launch_server.failJob('project1-project2-integration', A)
+        self.executor_server.failJob('project1-project2-integration', A)
 
         self.fake_gerrit.addEvent(A.getPatchsetCreatedEvent(1))
         self.waitUntilSettled()
-        self.launch_server.release('.*-merge')
+        self.executor_server.release('.*-merge')
         self.waitUntilSettled()
-        self.launch_server.release('project1-project2-integration')
+        self.executor_server.release('project1-project2-integration')
         self.waitUntilSettled()
 
         self.assertEqual(A.data['status'], 'NEW')
@@ -2543,8 +2543,8 @@
         self.sched.reconfigure(self.config)
         self.waitUntilSettled()
 
-        self.launch_server.hold_jobs_in_build = False
-        self.launch_server.release()
+        self.executor_server.hold_jobs_in_build = False
+        self.executor_server.release()
         self.waitUntilSettled()
 
         self.assertEqual(self.getJobFromHistory('project1-merge').result,
@@ -2572,7 +2572,7 @@
 
         # A failure may indicate incorrect caching or cleaning up of
         # references during a reconfiguration.
-        self.launch_server.hold_jobs_in_build = True
+        self.executor_server.hold_jobs_in_build = True
 
         A = self.fake_gerrit.addFakeChange('org/project1', 'master', 'A')
         B = self.fake_gerrit.addFakeChange('org/project1', 'master', 'B')
@@ -2583,7 +2583,7 @@
         # Add the parent change.
         self.fake_gerrit.addEvent(A.addApproval('approved', 1))
         self.waitUntilSettled()
-        self.launch_server.release('.*-merge')
+        self.executor_server.release('.*-merge')
         self.waitUntilSettled()
 
         # Reconfigure (with only one change in the pipeline).
@@ -2593,15 +2593,15 @@
         # Add the child change.
         self.fake_gerrit.addEvent(B.addApproval('approved', 1))
         self.waitUntilSettled()
-        self.launch_server.release('.*-merge')
+        self.executor_server.release('.*-merge')
         self.waitUntilSettled()
 
         # Reconfigure (with both in the pipeline).
         self.sched.reconfigure(self.config)
         self.waitUntilSettled()
 
-        self.launch_server.hold_jobs_in_build = False
-        self.launch_server.release()
+        self.executor_server.hold_jobs_in_build = False
+        self.executor_server.release()
         self.waitUntilSettled()
 
         self.assertEqual(len(self.history), 8)
@@ -2616,7 +2616,7 @@
         # Test project deletion from layout
         # while changes are enqueued
 
-        self.launch_server.hold_jobs_in_build = True
+        self.executor_server.hold_jobs_in_build = True
         A = self.fake_gerrit.addFakeChange('org/project', 'master', 'A')
         B = self.fake_gerrit.addFakeChange('org/project1', 'master', 'B')
         C = self.fake_gerrit.addFakeChange('org/project1', 'master', 'C')
@@ -2629,7 +2629,7 @@
         self.fake_gerrit.addEvent(A.getPatchsetCreatedEvent(1))
         self.fake_gerrit.addEvent(C.getPatchsetCreatedEvent(1))
         self.waitUntilSettled()
-        self.launch_server.release('.*-merge')
+        self.executor_server.release('.*-merge')
         self.waitUntilSettled()
         self.assertEqual(len(self.builds), 5)
 
@@ -2645,8 +2645,8 @@
         self.assertEqual(job_c.changes, '3,1')
         self.assertEqual(job_c.result, 'ABORTED')
 
-        self.launch_server.hold_jobs_in_build = False
-        self.launch_server.release()
+        self.executor_server.hold_jobs_in_build = False
+        self.executor_server.release()
         self.waitUntilSettled()
 
         self.assertEqual(self.getJobFromHistory('project-test1').changes,
@@ -2736,8 +2736,8 @@
         p = 'org/delete-project'
         if os.path.exists(os.path.join(self.merger_src_root, p)):
             shutil.rmtree(os.path.join(self.merger_src_root, p))
-        if os.path.exists(os.path.join(self.launcher_src_root, p)):
-            shutil.rmtree(os.path.join(self.launcher_src_root, p))
+        if os.path.exists(os.path.join(self.executor_src_root, p)):
+            shutil.rmtree(os.path.join(self.executor_src_root, p))
 
         B = self.fake_gerrit.addFakeChange('org/delete-project', 'master', 'B')
 
@@ -2777,7 +2777,7 @@
 
     def test_timer(self):
         "Test that a periodic job is triggered"
-        self.launch_server.hold_jobs_in_build = True
+        self.executor_server.hold_jobs_in_build = True
         self.updateConfigLayout('layout-timer')
         self.sched.reconfigure(self.config)
 
@@ -2795,12 +2795,12 @@
         f = urllib.request.urlopen(req)
         data = f.read()
 
-        self.launch_server.hold_jobs_in_build = False
+        self.executor_server.hold_jobs_in_build = False
         # Stop queuing timer triggered jobs so that the assertions
         # below don't race against more jobs being queued.
         self.commitLayoutUpdate('layout-timer', 'layout-no-timer')
         self.sched.reconfigure(self.config)
-        self.launch_server.release()
+        self.executor_server.release()
         self.waitUntilSettled()
 
         self.assertEqual(self.getJobFromHistory(
@@ -2822,7 +2822,7 @@
 
     def test_idle(self):
         "Test that frequent periodic jobs work"
-        self.launch_server.hold_jobs_in_build = True
+        self.executor_server.hold_jobs_in_build = True
         self.updateConfigLayout('layout-idle')
 
         for x in range(1, 3):
@@ -2843,7 +2843,7 @@
             self.waitUntilSettled()
             self.assertEqual(len(self.builds), 2,
                              'Timer builds iteration #%d' % x)
-            self.launch_server.release('.*')
+            self.executor_server.release('.*')
             self.waitUntilSettled()
             self.assertEqual(len(self.builds), 0)
             self.assertEqual(len(self.history), x * 2)
@@ -2885,7 +2885,7 @@
 
     def test_timer_smtp(self):
         "Test that a periodic job is triggered"
-        self.launch_server.hold_jobs_in_build = True
+        self.executor_server.hold_jobs_in_build = True
         self.updateConfigLayout('layout-timer-smtp')
         self.sched.reconfigure(self.config)
 
@@ -2895,7 +2895,7 @@
         self.waitUntilSettled()
 
         self.assertEqual(len(self.builds), 2)
-        self.launch_server.release('.*')
+        self.executor_server.release('.*')
         self.waitUntilSettled()
         self.assertEqual(len(self.history), 2)
 
@@ -2922,7 +2922,7 @@
         self.commitLayoutUpdate('layout-timer-smtp', 'layout-no-timer')
         self.sched.reconfigure(self.config)
         self.waitUntilSettled()
-        self.launch_server.release('.*')
+        self.executor_server.release('.*')
         self.waitUntilSettled()
 
     @skip("Disabled for early v3 development")
@@ -3072,7 +3072,7 @@
 
     def test_client_promote(self):
         "Test that the RPC client can promote a change"
-        self.launch_server.hold_jobs_in_build = True
+        self.executor_server.hold_jobs_in_build = True
         A = self.fake_gerrit.addFakeChange('org/project', 'master', 'A')
         B = self.fake_gerrit.addFakeChange('org/project', 'master', 'B')
         C = self.fake_gerrit.addFakeChange('org/project', 'master', 'C')
@@ -3105,11 +3105,11 @@
                 enqueue_times[str(item.change)], item.enqueue_time)
 
         self.waitUntilSettled()
-        self.launch_server.release('.*-merge')
+        self.executor_server.release('.*-merge')
         self.waitUntilSettled()
-        self.launch_server.release('.*-merge')
+        self.executor_server.release('.*-merge')
         self.waitUntilSettled()
-        self.launch_server.release('.*-merge')
+        self.executor_server.release('.*-merge')
         self.waitUntilSettled()
 
         self.assertEqual(len(self.builds), 6)
@@ -3132,7 +3132,7 @@
         self.assertTrue(self.builds[4].hasChanges(C))
         self.assertTrue(self.builds[4].hasChanges(A))
 
-        self.launch_server.release()
+        self.executor_server.release()
         self.waitUntilSettled()
 
         self.assertEqual(A.data['status'], 'MERGED')
@@ -3149,7 +3149,7 @@
         "Test that the RPC client can promote a dependent change"
         # C (depends on B) -> B -> A ; then promote C to get:
         # A -> C (depends on B) -> B
-        self.launch_server.hold_jobs_in_build = True
+        self.executor_server.hold_jobs_in_build = True
         A = self.fake_gerrit.addFakeChange('org/project', 'master', 'A')
         B = self.fake_gerrit.addFakeChange('org/project', 'master', 'B')
         C = self.fake_gerrit.addFakeChange('org/project', 'master', 'C')
@@ -3173,11 +3173,11 @@
                            change_ids=['3,1'])
 
         self.waitUntilSettled()
-        self.launch_server.release('.*-merge')
+        self.executor_server.release('.*-merge')
         self.waitUntilSettled()
-        self.launch_server.release('.*-merge')
+        self.executor_server.release('.*-merge')
         self.waitUntilSettled()
-        self.launch_server.release('.*-merge')
+        self.executor_server.release('.*-merge')
         self.waitUntilSettled()
 
         self.assertEqual(len(self.builds), 6)
@@ -3200,7 +3200,7 @@
         self.assertTrue(self.builds[4].hasChanges(C))
         self.assertTrue(self.builds[4].hasChanges(A))
 
-        self.launch_server.release()
+        self.executor_server.release()
         self.waitUntilSettled()
 
         self.assertEqual(A.data['status'], 'MERGED')
@@ -3215,7 +3215,7 @@
 
     def test_client_promote_negative(self):
         "Test that the RPC client returns errors for promotion"
-        self.launch_server.hold_jobs_in_build = True
+        self.executor_server.hold_jobs_in_build = True
         A = self.fake_gerrit.addFakeChange('org/project', 'master', 'A')
         A.addApproval('code-review', 2)
         self.fake_gerrit.addEvent(A.addApproval('approved', 1))
@@ -3238,8 +3238,8 @@
             client.shutdown()
             self.assertEqual(r, False)
 
-        self.launch_server.hold_jobs_in_build = False
-        self.launch_server.release()
+        self.executor_server.hold_jobs_in_build = False
+        self.executor_server.release()
         self.waitUntilSettled()
 
     @skip("Disabled for early v3 development")
@@ -3248,13 +3248,13 @@
         self.updateConfigLayout(
             'tests/fixtures/layout-rate-limit.yaml')
         self.sched.reconfigure(self.config)
-        self.launch_server.hold_jobs_in_build = True
+        self.executor_server.hold_jobs_in_build = True
         A = self.fake_gerrit.addFakeChange('org/project', 'master', 'A')
         B = self.fake_gerrit.addFakeChange('org/project', 'master', 'B')
         C = self.fake_gerrit.addFakeChange('org/project', 'master', 'C')
 
         C.setDependsOn(B, 1)
-        self.launch_server.failJob('project-test1', A)
+        self.executor_server.failJob('project-test1', A)
 
         A.addApproval('code-review', 2)
         B.addApproval('code-review', 2)
@@ -3271,9 +3271,9 @@
         self.assertEqual(self.builds[0].name, 'project-merge')
         self.assertEqual(self.builds[1].name, 'project-merge')
 
-        self.launch_server.release('.*-merge')
+        self.executor_server.release('.*-merge')
         self.waitUntilSettled()
-        self.launch_server.release('.*-merge')
+        self.executor_server.release('.*-merge')
         self.waitUntilSettled()
 
         # Only A and B will have their test jobs queued because
@@ -3284,7 +3284,7 @@
         self.assertEqual(self.builds[2].name, 'project-test1')
         self.assertEqual(self.builds[3].name, 'project-test2')
 
-        self.launch_server.release('project-.*')
+        self.executor_server.release('project-.*')
         self.waitUntilSettled()
 
         queue = self.sched.layout.pipelines['gate'].queues[0]
@@ -3298,7 +3298,7 @@
         self.assertEqual(len(self.builds), 1)
         self.assertEqual(self.builds[0].name, 'project-merge')
 
-        self.launch_server.release('.*-merge')
+        self.executor_server.release('.*-merge')
         self.waitUntilSettled()
 
         # Only B's test jobs are queued because window is still 1.
@@ -3306,7 +3306,7 @@
         self.assertEqual(self.builds[0].name, 'project-test1')
         self.assertEqual(self.builds[1].name, 'project-test2')
 
-        self.launch_server.release('project-.*')
+        self.executor_server.release('project-.*')
         self.waitUntilSettled()
 
         # B was successfully merged so window is increased to 2.
@@ -3318,7 +3318,7 @@
         self.assertEqual(len(self.builds), 1)
         self.assertEqual(self.builds[0].name, 'project-merge')
 
-        self.launch_server.release('.*-merge')
+        self.executor_server.release('.*-merge')
         self.waitUntilSettled()
 
         # After successful merge job the test jobs for C are queued.
@@ -3326,7 +3326,7 @@
         self.assertEqual(self.builds[0].name, 'project-test1')
         self.assertEqual(self.builds[1].name, 'project-test2')
 
-        self.launch_server.release('project-.*')
+        self.executor_server.release('project-.*')
         self.waitUntilSettled()
 
         # C successfully merged so window is bumped to 3.
@@ -3340,14 +3340,14 @@
         self.updateConfigLayout(
             'tests/fixtures/layout-rate-limit.yaml')
         self.sched.reconfigure(self.config)
-        self.launch_server.hold_jobs_in_build = True
+        self.executor_server.hold_jobs_in_build = True
         A = self.fake_gerrit.addFakeChange('org/project', 'master', 'A')
         B = self.fake_gerrit.addFakeChange('org/project', 'master', 'B')
         C = self.fake_gerrit.addFakeChange('org/project', 'master', 'C')
 
         B.setDependsOn(A, 1)
 
-        self.launch_server.failJob('project-test1', A)
+        self.executor_server.failJob('project-test1', A)
 
         A.addApproval('code-review', 2)
         B.addApproval('code-review', 2)
@@ -3364,9 +3364,9 @@
         self.assertEqual(self.builds[0].name, 'project-merge')
         self.assertEqual(self.builds[1].name, 'project-merge')
 
-        self.launch_server.release('.*-merge')
+        self.executor_server.release('.*-merge')
         self.waitUntilSettled()
-        self.launch_server.release('.*-merge')
+        self.executor_server.release('.*-merge')
         self.waitUntilSettled()
 
         # Only A and B will have their test jobs queued because
@@ -3377,7 +3377,7 @@
         self.assertEqual(self.builds[2].name, 'project-test1')
         self.assertEqual(self.builds[3].name, 'project-test2')
 
-        self.launch_server.release('project-.*')
+        self.executor_server.release('project-.*')
         self.waitUntilSettled()
 
         queue = self.sched.layout.pipelines['gate'].queues[0]
@@ -3392,7 +3392,7 @@
         self.assertEqual(len(self.builds), 1)
         self.assertEqual(self.builds[0].name, 'project-merge')
 
-        self.launch_server.release('.*-merge')
+        self.executor_server.release('.*-merge')
         self.waitUntilSettled()
 
         # Only C's test jobs are queued because window is still 1.
@@ -3400,7 +3400,7 @@
         self.assertEqual(self.builds[0].name, 'project-test1')
         self.assertEqual(self.builds[1].name, 'project-test2')
 
-        self.launch_server.release('project-.*')
+        self.executor_server.release('project-.*')
         self.waitUntilSettled()
 
         # C was successfully merged so window is increased to 2.
@@ -3411,24 +3411,24 @@
     @skip("Disabled for early v3 development")
     def test_worker_update_metadata(self):
         "Test if a worker can send back metadata about itself"
-        self.launch_server.hold_jobs_in_build = True
+        self.executor_server.hold_jobs_in_build = True
 
         A = self.fake_gerrit.addFakeChange('org/project', 'master', 'A')
         A.addApproval('code-review', 2)
         self.fake_gerrit.addEvent(A.addApproval('approved', 1))
         self.waitUntilSettled()
 
-        self.assertEqual(len(self.launcher.builds), 1)
+        self.assertEqual(len(self.executor.builds), 1)
 
         self.log.debug('Current builds:')
-        self.log.debug(self.launcher.builds)
+        self.log.debug(self.executor.builds)
 
         start = time.time()
         while True:
             if time.time() - start > 10:
                 raise Exception("Timeout waiting for gearman server to report "
                                 + "back to the client")
-            build = self.launcher.builds.values()[0]
+            build = self.executor.builds.values()[0]
             if build.worker.name == "My Worker":
                 break
             else:
@@ -3443,8 +3443,8 @@
         self.assertEqual("v1.1", build.worker.version)
         self.assertEqual({'something': 'else'}, build.worker.extra)
 
-        self.launch_server.hold_jobs_in_build = False
-        self.launch_server.release()
+        self.executor_server.hold_jobs_in_build = False
+        self.executor_server.release()
         self.waitUntilSettled()
 
     def test_footer_message(self):
@@ -3454,7 +3454,7 @@
 
         A = self.fake_gerrit.addFakeChange('org/project', 'master', 'A')
         A.addApproval('code-review', 2)
-        self.launch_server.failJob('project-test1', A)
+        self.executor_server.failJob('project-test1', A)
         self.fake_gerrit.addEvent(A.addApproval('approved', 1))
         self.waitUntilSettled()
 
@@ -3535,7 +3535,7 @@
         # Check a test failure isn't reported to SMTP
         A = self.fake_gerrit.addFakeChange('org/project', 'master', 'A')
         A.addApproval('code-review', 2)
-        self.launch_server.failJob('project-test1', A)
+        self.executor_server.failJob('project-test1', A)
         self.fake_gerrit.addEvent(A.addApproval('approved', 1))
         self.waitUntilSettled()
 
@@ -3587,7 +3587,7 @@
 
     def test_client_get_running_jobs(self):
         "Test that the RPC client can get a list of running jobs"
-        self.launch_server.hold_jobs_in_build = True
+        self.executor_server.hold_jobs_in_build = True
         A = self.fake_gerrit.addFakeChange('org/project', 'master', 'A')
         A.addApproval('code-review', 2)
         self.fake_gerrit.addEvent(A.addApproval('approved', 1))
@@ -3602,7 +3602,7 @@
             if time.time() - start > 10:
                 raise Exception("Timeout waiting for gearman server to report "
                                 + "back to the client")
-            build = self.launch_client.builds.values()[0]
+            build = self.executor_client.builds.values()[0]
             if build.worker.name == "My Worker":
                 break
             else:
@@ -3636,8 +3636,8 @@
                 self.assertEqual('gate', job['pipeline'])
                 break
 
-        self.launch_server.hold_jobs_in_build = False
-        self.launch_server.release()
+        self.executor_server.hold_jobs_in_build = False
+        self.executor_server.release()
         self.waitUntilSettled()
 
         running_items = client.get_running_jobs()
@@ -3700,17 +3700,17 @@
         for connection in self.connections.connections.values():
             connection.maintainCache([])
 
-        self.launch_server.hold_jobs_in_build = True
+        self.executor_server.hold_jobs_in_build = True
         B.addApproval('approved', 1)
         self.fake_gerrit.addEvent(A.addApproval('approved', 1))
         self.waitUntilSettled()
 
-        self.launch_server.release('.*-merge')
+        self.executor_server.release('.*-merge')
         self.waitUntilSettled()
-        self.launch_server.release('.*-merge')
+        self.executor_server.release('.*-merge')
         self.waitUntilSettled()
-        self.launch_server.hold_jobs_in_build = False
-        self.launch_server.release()
+        self.executor_server.hold_jobs_in_build = False
+        self.executor_server.release()
         self.waitUntilSettled()
 
         self.assertEqual(AM2.queried, 0)
@@ -3740,20 +3740,20 @@
         A.data['commitMessage'] = '%s\n\nDepends-On: %s\n' % (
             A.subject, B.data['id'])
 
-        self.launch_server.hold_jobs_in_build = True
+        self.executor_server.hold_jobs_in_build = True
         B.addApproval('approved', 1)
         C.addApproval('approved', 1)
         self.fake_gerrit.addEvent(A.addApproval('approved', 1))
         self.waitUntilSettled()
 
-        self.launch_server.release('.*-merge')
+        self.executor_server.release('.*-merge')
         self.waitUntilSettled()
-        self.launch_server.release('.*-merge')
+        self.executor_server.release('.*-merge')
         self.waitUntilSettled()
-        self.launch_server.release('.*-merge')
+        self.executor_server.release('.*-merge')
         self.waitUntilSettled()
-        self.launch_server.hold_jobs_in_build = False
-        self.launch_server.release()
+        self.executor_server.hold_jobs_in_build = False
+        self.executor_server.release()
         self.waitUntilSettled()
 
         self.assertEqual(A.data['status'], 'MERGED')
@@ -3780,20 +3780,20 @@
         A.data['commitMessage'] = '%s\n\nDepends-On: %s\nDepends-On: %s\n' % (
             A.subject, B.data['id'], C.data['id'])
 
-        self.launch_server.hold_jobs_in_build = True
+        self.executor_server.hold_jobs_in_build = True
         B.addApproval('approved', 1)
         C.addApproval('approved', 1)
         self.fake_gerrit.addEvent(A.addApproval('approved', 1))
         self.waitUntilSettled()
 
-        self.launch_server.release('.*-merge')
+        self.executor_server.release('.*-merge')
         self.waitUntilSettled()
-        self.launch_server.release('.*-merge')
+        self.executor_server.release('.*-merge')
         self.waitUntilSettled()
-        self.launch_server.release('.*-merge')
+        self.executor_server.release('.*-merge')
         self.waitUntilSettled()
-        self.launch_server.hold_jobs_in_build = False
-        self.launch_server.release()
+        self.executor_server.hold_jobs_in_build = False
+        self.executor_server.release()
         self.waitUntilSettled()
 
         self.assertEqual(A.data['status'], 'MERGED')
@@ -3863,17 +3863,17 @@
         self.assertEqual(A.data['status'], 'NEW')
         self.assertEqual(B.data['status'], 'NEW')
 
-        self.launch_server.hold_jobs_in_build = True
+        self.executor_server.hold_jobs_in_build = True
         A.addApproval('approved', 1)
         self.fake_gerrit.addEvent(B.addApproval('approved', 1))
         self.waitUntilSettled()
 
-        self.launch_server.release('.*-merge')
+        self.executor_server.release('.*-merge')
         self.waitUntilSettled()
-        self.launch_server.release('.*-merge')
+        self.executor_server.release('.*-merge')
         self.waitUntilSettled()
-        self.launch_server.hold_jobs_in_build = False
-        self.launch_server.release()
+        self.executor_server.hold_jobs_in_build = False
+        self.executor_server.release()
         self.waitUntilSettled()
 
         self.assertEqual(A.data['status'], 'MERGED')
@@ -3952,7 +3952,7 @@
     def test_crd_check(self):
         "Test cross-repo dependencies in independent pipelines"
 
-        self.launch_server.hold_jobs_in_build = True
+        self.executor_server.hold_jobs_in_build = True
         self.gearman_server.hold_jobs_in_queue = True
         A = self.fake_gerrit.addFakeChange('org/project1', 'master', 'A')
         B = self.fake_gerrit.addFakeChange('org/project2', 'master', 'B')
@@ -3970,7 +3970,7 @@
         self.gearman_server.release()
         self.waitUntilSettled()
 
-        self.launch_server.release('.*-merge')
+        self.executor_server.release('.*-merge')
         self.waitUntilSettled()
 
         path = os.path.join(self.builds[0].jobdir.src_root, "org/project1")
@@ -3989,8 +3989,8 @@
             'initial commit', 'add content from fixture', 'B-1']
         self.assertEqual(repo_messages, correct_messages)
 
-        self.launch_server.hold_jobs_in_build = False
-        self.launch_server.release()
+        self.executor_server.hold_jobs_in_build = False
+        self.executor_server.release()
         self.waitUntilSettled()
 
         self.assertEqual(A.data['status'], 'NEW')
@@ -4035,7 +4035,7 @@
 
     def test_crd_check_duplicate(self):
         "Test duplicate check in independent pipelines"
-        self.launch_server.hold_jobs_in_build = True
+        self.executor_server.hold_jobs_in_build = True
         A = self.fake_gerrit.addFakeChange('org/project1', 'master', 'A')
         B = self.fake_gerrit.addFakeChange('org/project1', 'master', 'B')
         tenant = self.sched.abide.tenants.get('tenant-one')
@@ -4060,8 +4060,8 @@
         # Release jobs in order to avoid races with change A jobs
         # finishing before change B jobs.
         self.orderedRelease()
-        self.launch_server.hold_jobs_in_build = False
-        self.launch_server.release()
+        self.executor_server.hold_jobs_in_build = False
+        self.executor_server.release()
         self.waitUntilSettled()
 
         self.assertEqual(A.data['status'], 'NEW')
@@ -4305,17 +4305,17 @@
         J = self.fake_gerrit.addFakeChange('org/project', 'master', 'J')
         K = self.fake_gerrit.addFakeChange('org/project', 'master', 'K')
 
-        self.launch_server.failJob('project-test1', A)
-        self.launch_server.failJob('project-test1', B)
+        self.executor_server.failJob('project-test1', A)
+        self.executor_server.failJob('project-test1', B)
         # Let C pass, resetting the counter
-        self.launch_server.failJob('project-test1', D)
-        self.launch_server.failJob('project-test1', E)
-        self.launch_server.failJob('project-test1', F)
-        self.launch_server.failJob('project-test1', G)
-        self.launch_server.failJob('project-test1', H)
+        self.executor_server.failJob('project-test1', D)
+        self.executor_server.failJob('project-test1', E)
+        self.executor_server.failJob('project-test1', F)
+        self.executor_server.failJob('project-test1', G)
+        self.executor_server.failJob('project-test1', H)
         # I also passes but should only report to the disabled reporters
-        self.launch_server.failJob('project-test1', J)
-        self.launch_server.failJob('project-test1', K)
+        self.executor_server.failJob('project-test1', J)
+        self.executor_server.failJob('project-test1', K)
 
         self.fake_gerrit.addEvent(A.getPatchsetCreatedEvent(1))
         self.fake_gerrit.addEvent(B.getPatchsetCreatedEvent(1))
@@ -4409,30 +4409,30 @@
         self.assertEqual(3, len(self.smtp_messages))
 
     def test_rerun_on_abort(self):
-        "Test that if a launch server fails to run a job, it is run again"
+        "Test that if a execute server fails to run a job, it is run again"
 
-        self.launch_server.hold_jobs_in_build = True
+        self.executor_server.hold_jobs_in_build = True
         A = self.fake_gerrit.addFakeChange('org/project', 'master', 'A')
         self.fake_gerrit.addEvent(A.getPatchsetCreatedEvent(1))
         self.waitUntilSettled()
 
-        self.launch_server.release('.*-merge')
+        self.executor_server.release('.*-merge')
         self.waitUntilSettled()
 
         self.assertEqual(len(self.builds), 2)
         self.builds[0].requeue = True
-        self.launch_server.release('.*-test*')
+        self.executor_server.release('.*-test*')
         self.waitUntilSettled()
 
         for x in range(3):
             self.assertEqual(len(self.builds), 1,
                              'len of builds at x=%d is wrong' % x)
             self.builds[0].requeue = True
-            self.launch_server.release('.*-test1')
+            self.executor_server.release('.*-test1')
             self.waitUntilSettled()
 
-        self.launch_server.hold_jobs_in_build = False
-        self.launch_server.release()
+        self.executor_server.hold_jobs_in_build = False
+        self.executor_server.release()
         self.waitUntilSettled()
         self.assertEqual(len(self.history), 6)
         self.assertEqual(self.countJobResults(self.history, 'SUCCESS'), 2)
@@ -4440,7 +4440,7 @@
         self.assertIn('RETRY_LIMIT', A.messages[0])
 
     def test_zookeeper_disconnect(self):
-        "Test that jobs are launched after a zookeeper disconnect"
+        "Test that jobs are executed after a zookeeper disconnect"
 
         self.fake_nodepool.paused = True
         A = self.fake_gerrit.addFakeChange('org/project', 'master', 'A')
@@ -4537,8 +4537,8 @@
 class TestSchedulerTemplatedProject(ZuulTestCase):
     tenant_config_file = 'config/templated-project/main.yaml'
 
-    def test_job_from_templates_launched(self):
-        "Test whether a job generated via a template can be launched"
+    def test_job_from_templates_executed(self):
+        "Test whether a job generated via a template can be executed"
 
         A = self.fake_gerrit.addFakeChange(
             'org/templated-project', 'master', 'A')
@@ -4551,7 +4551,7 @@
                          'SUCCESS')
 
     def test_layered_templates(self):
-        "Test whether a job generated via a template can be launched"
+        "Test whether a job generated via a template can be executed"
 
         A = self.fake_gerrit.addFakeChange(
             'org/layered-project', 'master', 'A')
@@ -4603,7 +4603,7 @@
             'docs-draft-test/%s/publish-docs/' % uuid,
             body[2])
 
-        # NOTE: This default URL is currently hard-coded in launcher/server.py
+        # NOTE: This default URL is currently hard-coded in executor/server.py
         self.assertIn(
             '- docs-draft-test2 https://server/job',
             body[3])
@@ -4613,9 +4613,9 @@
     tenant_config_file = 'config/merges/main.yaml'
 
     def _test_project_merge_mode(self, mode):
-        self.launch_server.keep_jobdir = False
+        self.executor_server.keep_jobdir = False
         project = 'org/project-%s' % mode
-        self.launch_server.hold_jobs_in_build = True
+        self.executor_server.hold_jobs_in_build = True
         A = self.fake_gerrit.addFakeChange(project, 'master', 'A')
         B = self.fake_gerrit.addFakeChange(project, 'master', 'B')
         C = self.fake_gerrit.addFakeChange(project, 'master', 'C')
@@ -4635,8 +4635,8 @@
         repo_messages = [c.message.strip() for c in repo.iter_commits(ref)]
         repo_messages.reverse()
 
-        self.launch_server.hold_jobs_in_build = False
-        self.launch_server.release()
+        self.executor_server.hold_jobs_in_build = False
+        self.executor_server.release()
         self.waitUntilSettled()
 
         return repo_messages
@@ -4675,7 +4675,7 @@
         "Test that the right commits are on alternate branches"
         self.create_branch('org/project-merge-branches', 'mp')
 
-        self.launch_server.hold_jobs_in_build = True
+        self.executor_server.hold_jobs_in_build = True
         A = self.fake_gerrit.addFakeChange(
             'org/project-merge-branches', 'mp', 'A')
         B = self.fake_gerrit.addFakeChange(
@@ -4690,11 +4690,11 @@
         self.fake_gerrit.addEvent(C.addApproval('approved', 1))
         self.waitUntilSettled()
 
-        self.launch_server.release('.*-merge')
+        self.executor_server.release('.*-merge')
         self.waitUntilSettled()
-        self.launch_server.release('.*-merge')
+        self.executor_server.release('.*-merge')
         self.waitUntilSettled()
-        self.launch_server.release('.*-merge')
+        self.executor_server.release('.*-merge')
         self.waitUntilSettled()
 
         build = self.builds[-1]
@@ -4713,15 +4713,15 @@
             'A-1', 'B-1', 'C-1']
         self.assertEqual(repo_messages, correct_messages)
 
-        self.launch_server.hold_jobs_in_build = False
-        self.launch_server.release()
+        self.executor_server.hold_jobs_in_build = False
+        self.executor_server.release()
         self.waitUntilSettled()
 
     def test_merge_multi_branch(self):
         "Test that dependent changes on multiple branches are merged"
         self.create_branch('org/project-merge-branches', 'mp')
 
-        self.launch_server.hold_jobs_in_build = True
+        self.executor_server.hold_jobs_in_build = True
         A = self.fake_gerrit.addFakeChange(
             'org/project-merge-branches', 'master', 'A')
         B = self.fake_gerrit.addFakeChange(
@@ -4755,7 +4755,7 @@
             'initial commit', 'add content from fixture', 'A-1']
         self.assertEqual(repo_messages, correct_messages)
 
-        self.launch_server.release('.*-merge')
+        self.executor_server.release('.*-merge')
         self.waitUntilSettled()
 
         job_B = None
@@ -4777,7 +4777,7 @@
             'initial commit', 'add content from fixture', 'mp commit', 'B-1']
         self.assertEqual(repo_messages, correct_messages)
 
-        self.launch_server.release('.*-merge')
+        self.executor_server.release('.*-merge')
         self.waitUntilSettled()
 
         job_C = None
@@ -4801,6 +4801,6 @@
         # Ensure the right commits are in the history for this ref
         self.assertEqual(repo_messages, correct_messages)
 
-        self.launch_server.hold_jobs_in_build = False
-        self.launch_server.release()
+        self.executor_server.hold_jobs_in_build = False
+        self.executor_server.release()
         self.waitUntilSettled()
diff --git a/tests/unit/test_webapp.py b/tests/unit/test_webapp.py
index 2211d1b..acff09a 100644
--- a/tests/unit/test_webapp.py
+++ b/tests/unit/test_webapp.py
@@ -27,7 +27,7 @@
 
     def setUp(self):
         super(TestWebapp, self).setUp()
-        self.launch_server.hold_jobs_in_build = True
+        self.executor_server.hold_jobs_in_build = True
         A = self.fake_gerrit.addFakeChange('org/project', 'master', 'A')
         A.addApproval('code-review', 2)
         self.fake_gerrit.addEvent(A.addApproval('approved', 1))
@@ -38,8 +38,8 @@
         self.port = self.webapp.server.socket.getsockname()[1]
 
     def tearDown(self):
-        self.launch_server.hold_jobs_in_build = False
-        self.launch_server.release()
+        self.executor_server.hold_jobs_in_build = False
+        self.executor_server.release()
         self.waitUntilSettled()
         super(TestWebapp, self).tearDown()
 
diff --git a/tests/unit/test_zuultrigger.py b/tests/unit/test_zuultrigger.py
index 5d9c6e0..476cb74 100644
--- a/tests/unit/test_zuultrigger.py
+++ b/tests/unit/test_zuultrigger.py
@@ -27,7 +27,7 @@
         # When A is enqueued in the gate, B1 and B2 should both attempt
         # to be enqueued in both pipelines.  B1 should end up in check
         # and B2 in gate because of differing pipeline requirements.
-        self.launch_server.hold_jobs_in_build = True
+        self.executor_server.hold_jobs_in_build = True
         A = self.fake_gerrit.addFakeChange('org/project', 'master', 'A')
         B1 = self.fake_gerrit.addFakeChange('org/project', 'master', 'B1')
         B2 = self.fake_gerrit.addFakeChange('org/project', 'master', 'B2')
@@ -46,8 +46,8 @@
         # to enqueue behind 1,1 so that the test is more
         # deterministic.
         self.waitUntilSettled()
-        self.launch_server.hold_jobs_in_build = False
-        self.launch_server.release()
+        self.executor_server.hold_jobs_in_build = False
+        self.executor_server.release()
         self.waitUntilSettled()
 
         self.assertEqual(len(self.history), 3)