From a5c5680c5b446d183ac874ddd096dd602a738094 Mon Sep 17 00:00:00 2001 From: Max Hirschhorn Date: Mon, 27 May 2019 09:06:22 -0400 Subject: SERVER-41169 Add powercycle Evergreen tasks to SSL Ubuntu 16.04 builder. (cherry picked from commit cf57e33764ba12a6a30ba6b75ef2aa3ccc192a78) --- etc/evergreen.yml | 26 +++++++++++++++++++++++++- pytests/powertest.py | 5 ++++- 2 files changed, 29 insertions(+), 2 deletions(-) diff --git a/etc/evergreen.yml b/etc/evergreen.yml index 3cf1ab35eae..ff0733a0871 100644 --- a/etc/evergreen.yml +++ b/etc/evergreen.yml @@ -1571,7 +1571,10 @@ functions: cmds="$cmds; fi" cmds="$cmds; else echo Cannot change the core pattern and no core dumps will be generated." cmds="$cmds; fi" - cmds="$cmds; $sudo reboot" + # The following line for restarting the machine is based on + # https://unix.stackexchange.com/a/349558 in order to ensure the ssh client gets a + # response from the remote machine before it restarts. + cmds="$cmds; nohup $sudo reboot &>/dev/null & exit" ssh_connection_options="${ssh_identity} ${ssh_connection_options}" ${activate_virtualenv} $python buildscripts/remote_operations.py \ @@ -6216,6 +6219,27 @@ buildvariants: - name: bulk_gle_passthrough_WT - name: parallel_WT - name: parallel_compatibility_WT + - name: powercycle_WT + distros: + - ubuntu1604-powercycle + - name: powercycle_fcv3.4_WT + distros: + - ubuntu1604-powercycle + - name: powercycle_kill_mongod + distros: + - ubuntu1604-powercycle + - name: powercycle_replication_WT + distros: + - ubuntu1604-powercycle + - name: powercycle_replication_smalloplog_WT + distros: + - ubuntu1604-powercycle + - name: powercycle_syncdelay_WT + distros: + - ubuntu1604-powercycle + - name: powercycle_write_concern_majority_WT + distros: + - ubuntu1604-powercycle - name: concurrency_WT - name: concurrency_replication_WT - name: concurrency_sharded_WT diff --git a/pytests/powertest.py b/pytests/powertest.py index ccd0f3ac4db..5a449f95353 100755 --- a/pytests/powertest.py +++ b/pytests/powertest.py @@ -786,7 +786,10 @@ class ProcessControl(object): """ Returns a list of 'proc' for the associated pids.""" procs = [] for pid in self.get_pids(): - procs.append(psutil.Process(pid)) + try: + procs.append(psutil.Process(pid)) + except psutil.NoSuchProcess: + pass return procs def is_running(self): -- cgit v1.2.3