You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@mesos.apache.org by Niklas Nielsen <ni...@qni.dk> on 2015/03/03 00:44:14 UTC

Review Request 31645: Added upgrade path test script

-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/31645/
-----------------------------------------------------------

Review request for mesos, Ben Mahler and Vinod Kone.


Bugs: MESOS-2372
    https://issues.apache.org/jira/browse/MESOS-2372


Repository: mesos


Description
-------

Upgrade path test script runs previous and new framework versions (i.e. different versions of test framework+libmesos) against different versions of mesos slave and master. We can hopefully generate the upgrade paths we want to test systematically (applying some combinatorics) and cover those in this script.


Diffs
-----

  support/test-upgrade.py PRE-CREATION 

Diff: https://reviews.apache.org/r/31645/diff/


Testing
-------

The output from running the script against 0.21.0 and HEAD (0.23.0):

$ python ./support/run-upgrade.py --prev=../mesos/build-0.21.0/ --next=build
Running upgrade test from mesos 0.21.0 to mesos 0.23.0
+--------------+----------------+----------------+---------------+
| Test case    |   Framework    |     Master     |     Slave     |
+--------------+----------------+----------------+---------------+
|    #1        |  mesos 0.21.0  | mesos 0.21.0   | mesos 0.21.0  |
|    #2 (live) |  mesos 0.21.0  | mesos 0.21.0   | mesos 0.23.0  |
|    #3        |  mesos 0.23.0  | mesos 0.21.0   | mesos 0.23.0  |
|    #4        |  mesos 0.23.0  | mesos 0.23.0   | mesos 0.23.0  |
+--------------+----------------+----------------+---------------+

NOTE: live denotes that master process keeps running from previous case.


Test case 1 (Run of previous setup)
##### Starting mesos 0.21.0 master #####
Run ['../mesos/build-0.21.0/bin/mesos-master.sh', '--ip=127.0.0.1', '--work_dir=/var/folders/y3/w04yjljd5gbcvbvxvd5bhmp40000gn/T/tmp2UMcJv', '--credentials=/var/folders/y3/w04yjljd5gbcvbvxvd5bhmp40000gn/T
/tmpEMpQQd'], output: /var/folders/y3/w04yjljd5gbcvbvxvd5bhmp40000gn/T/tmpEXE5wH
##### Starting mesos 0.21.0 slave #####
Run ['../mesos/build-0.21.0/bin/mesos-slave.sh', '--master=localhost:5050', '--credential=/var/folders/y3/w04yjljd5gbcvbvxvd5bhmp40000gn/T/tmpEMpQQd'], output: /var/folders/y3/w04yjljd5gbcvbvxvd5bhmp40000
gn/T/tmpnGiJfB
##### Starting mesos 0.21.0 framework #####
Waiting for mesos 0.21.0 framework to complete (10 sec max)...
Run ['../mesos/build-0.21.0/src/test-framework', '--master=localhost:5050'], output: /var/folders/y3/w04yjljd5gbcvbvxvd5bhmp40000gn/T/tmp5cfI3A

Test case 2 (Upgrade of slave)
##### Stopping mesos 0.21.0 slave #####
##### Starting mesos 0.23.0 slave #####
Run ['build/bin/mesos-slave.sh', '--master=localhost:5050', '--credential=/var/folders/y3/w04yjljd5gbcvbvxvd5bhmp40000gn/T/tmpEMpQQd'], output: /var/folders/y3/w04yjljd5gbcvbvxvd5bhmp40000gn/T/tmpj9sM2K
##### Starting mesos 0.21.0 framework #####
Waiting for mesos 0.21.0 framework to complete (10 sec max)...
Run ['../mesos/build-0.21.0/src/test-framework', '--master=localhost:5050'], output: /var/folders/y3/w04yjljd5gbcvbvxvd5bhmp40000gn/T/tmpltfC_p

Test case 3 (Upgrade framework)
##### Starting mesos 0.23.0 framework #####
Waiting for mesos 0.23.0 framework to complete (10 sec max)...
Run ['build/src/test-framework', '--master=localhost:5050'], output: /var/folders/y3/w04yjljd5gbcvbvxvd5bhmp40000gn/T/tmpJVWJjW

Test case 4 (Run of next setup)
##### Stopping mesos 0.23.0 slave ####
##### Stopping mesos 0.21.0 slave ####
Run ['build/bin/mesos-master.sh', '--ip=127.0.0.1', '--work_dir=/var/folders/y3/w04yjljd5gbcvbvxvd5bhmp40000gn/T/tmpALCpmO', '--credentials=/var/folders/y3/w04yjljd5gbcvbvxvd5bhmp40000gn/T/tmpEMpQQd'], o$tput: /var/folders/y3/w04yjljd5gbcvbvxvd5bhmp40000gn/T/tmp6oLkTt
##### Starting mesos 0.23.0 slave #####
Run ['build/bin/mesos-slave.sh', '--master=localhost:5050', '--credential=/var/folders/y3/w04yjljd5gbcvbvxvd5bhmp40000gn/T/tmpEMpQQd'], output: /var/folders/y3/w04yjljd5gbcvbvxvd5bhmp40000gn/T/tmpYOCLCM
##### Starting mesos 0.23.0 framework #####
Waiting for mesos 0.23.0 framework to complete (10 sec max)...
Run ['build/src/test-framework', '--master=localhost:5050'], output: /var/folders/y3/w04yjljd5gbcvbvxvd5bhmp40000gn/T/tmpCVjtu3


Thanks,

Niklas Nielsen


Re: Review Request 31645: Added upgrade path test script

Posted by Mesos ReviewBot <de...@mesos.apache.org>.
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/31645/#review74868
-----------------------------------------------------------


Patch looks great!

Reviews applied: [31645]

All tests passed.

- Mesos ReviewBot


On March 2, 2015, 11:44 p.m., Niklas Nielsen wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/31645/
> -----------------------------------------------------------
> 
> (Updated March 2, 2015, 11:44 p.m.)
> 
> 
> Review request for mesos, Ben Mahler and Vinod Kone.
> 
> 
> Bugs: MESOS-2372
>     https://issues.apache.org/jira/browse/MESOS-2372
> 
> 
> Repository: mesos
> 
> 
> Description
> -------
> 
> Upgrade path test script runs previous and new framework versions (i.e. different versions of test framework+libmesos) against different versions of mesos slave and master. We can hopefully generate the upgrade paths we want to test systematically (applying some combinatorics) and cover those in this script.
> 
> 
> Diffs
> -----
> 
>   support/test-upgrade.py PRE-CREATION 
> 
> Diff: https://reviews.apache.org/r/31645/diff/
> 
> 
> Testing
> -------
> 
> The output from running the script against 0.21.0 and HEAD (0.23.0):
> 
> $ python ./support/run-upgrade.py --prev=../mesos/build-0.21.0/ --next=build
> Running upgrade test from mesos 0.21.0 to mesos 0.23.0
> +--------------+----------------+----------------+---------------+
> | Test case    |   Framework    |     Master     |     Slave     |
> +--------------+----------------+----------------+---------------+
> |    #1        |  mesos 0.21.0  | mesos 0.21.0   | mesos 0.21.0  |
> |    #2 (live) |  mesos 0.21.0  | mesos 0.21.0   | mesos 0.23.0  |
> |    #3        |  mesos 0.23.0  | mesos 0.21.0   | mesos 0.23.0  |
> |    #4        |  mesos 0.23.0  | mesos 0.23.0   | mesos 0.23.0  |
> +--------------+----------------+----------------+---------------+
> 
> NOTE: live denotes that master process keeps running from previous case.
> 
> 
> Test case 1 (Run of previous setup)
> ##### Starting mesos 0.21.0 master #####
> Run ['../mesos/build-0.21.0/bin/mesos-master.sh', '--ip=127.0.0.1', '--work_dir=/var/folders/y3/w04yjljd5gbcvbvxvd5bhmp40000gn/T/tmp2UMcJv', '--credentials=/var/folders/y3/w04yjljd5gbcvbvxvd5bhmp40000gn/T
> /tmpEMpQQd'], output: /var/folders/y3/w04yjljd5gbcvbvxvd5bhmp40000gn/T/tmpEXE5wH
> ##### Starting mesos 0.21.0 slave #####
> Run ['../mesos/build-0.21.0/bin/mesos-slave.sh', '--master=localhost:5050', '--credential=/var/folders/y3/w04yjljd5gbcvbvxvd5bhmp40000gn/T/tmpEMpQQd'], output: /var/folders/y3/w04yjljd5gbcvbvxvd5bhmp40000
> gn/T/tmpnGiJfB
> ##### Starting mesos 0.21.0 framework #####
> Waiting for mesos 0.21.0 framework to complete (10 sec max)...
> Run ['../mesos/build-0.21.0/src/test-framework', '--master=localhost:5050'], output: /var/folders/y3/w04yjljd5gbcvbvxvd5bhmp40000gn/T/tmp5cfI3A
> 
> Test case 2 (Upgrade of slave)
> ##### Stopping mesos 0.21.0 slave #####
> ##### Starting mesos 0.23.0 slave #####
> Run ['build/bin/mesos-slave.sh', '--master=localhost:5050', '--credential=/var/folders/y3/w04yjljd5gbcvbvxvd5bhmp40000gn/T/tmpEMpQQd'], output: /var/folders/y3/w04yjljd5gbcvbvxvd5bhmp40000gn/T/tmpj9sM2K
> ##### Starting mesos 0.21.0 framework #####
> Waiting for mesos 0.21.0 framework to complete (10 sec max)...
> Run ['../mesos/build-0.21.0/src/test-framework', '--master=localhost:5050'], output: /var/folders/y3/w04yjljd5gbcvbvxvd5bhmp40000gn/T/tmpltfC_p
> 
> Test case 3 (Upgrade framework)
> ##### Starting mesos 0.23.0 framework #####
> Waiting for mesos 0.23.0 framework to complete (10 sec max)...
> Run ['build/src/test-framework', '--master=localhost:5050'], output: /var/folders/y3/w04yjljd5gbcvbvxvd5bhmp40000gn/T/tmpJVWJjW
> 
> Test case 4 (Run of next setup)
> ##### Stopping mesos 0.23.0 slave ####
> ##### Stopping mesos 0.21.0 slave ####
> Run ['build/bin/mesos-master.sh', '--ip=127.0.0.1', '--work_dir=/var/folders/y3/w04yjljd5gbcvbvxvd5bhmp40000gn/T/tmpALCpmO', '--credentials=/var/folders/y3/w04yjljd5gbcvbvxvd5bhmp40000gn/T/tmpEMpQQd'], o$tput: /var/folders/y3/w04yjljd5gbcvbvxvd5bhmp40000gn/T/tmp6oLkTt
> ##### Starting mesos 0.23.0 slave #####
> Run ['build/bin/mesos-slave.sh', '--master=localhost:5050', '--credential=/var/folders/y3/w04yjljd5gbcvbvxvd5bhmp40000gn/T/tmpEMpQQd'], output: /var/folders/y3/w04yjljd5gbcvbvxvd5bhmp40000gn/T/tmpYOCLCM
> ##### Starting mesos 0.23.0 framework #####
> Waiting for mesos 0.23.0 framework to complete (10 sec max)...
> Run ['build/src/test-framework', '--master=localhost:5050'], output: /var/folders/y3/w04yjljd5gbcvbvxvd5bhmp40000gn/T/tmpCVjtu3
> 
> 
> Thanks,
> 
> Niklas Nielsen
> 
>


Re: Review Request 31645: Added upgrade path test script

Posted by Kapil Arya <ka...@mesosphere.io>.
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/31645/#review80102
-----------------------------------------------------------


In order to make this script work, I had to do the following:
    export LD_LIBRARY_PATH=$HOME/mesos/master/build/src/.libs:$HOME/mesos/mesos-0.22.0/build/src/.libs

Otherwise, the test-executor has problem finding the correct libraries.


support/test-upgrade.py
<https://reviews.apache.org/r/31645/#comment129862>

    s/prev_slave/prev_master/ 
    
    The previous slave has already been killed on line 161.  We do need to kill the prev_master though, otherwise it complains about address being in use when launching the new master.


- Kapil Arya


On March 2, 2015, 6:44 p.m., Niklas Nielsen wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/31645/
> -----------------------------------------------------------
> 
> (Updated March 2, 2015, 6:44 p.m.)
> 
> 
> Review request for mesos, Ben Mahler and Vinod Kone.
> 
> 
> Bugs: MESOS-2372
>     https://issues.apache.org/jira/browse/MESOS-2372
> 
> 
> Repository: mesos
> 
> 
> Description
> -------
> 
> Upgrade path test script runs previous and new framework versions (i.e. different versions of test framework+libmesos) against different versions of mesos slave and master. We can hopefully generate the upgrade paths we want to test systematically (applying some combinatorics) and cover those in this script.
> 
> 
> Diffs
> -----
> 
>   support/test-upgrade.py PRE-CREATION 
> 
> Diff: https://reviews.apache.org/r/31645/diff/
> 
> 
> Testing
> -------
> 
> The output from running the script against 0.21.0 and HEAD (0.23.0):
> 
> $ python ./support/run-upgrade.py --prev=../mesos/build-0.21.0/ --next=build
> Running upgrade test from mesos 0.21.0 to mesos 0.23.0
> +--------------+----------------+----------------+---------------+
> | Test case    |   Framework    |     Master     |     Slave     |
> +--------------+----------------+----------------+---------------+
> |    #1        |  mesos 0.21.0  | mesos 0.21.0   | mesos 0.21.0  |
> |    #2 (live) |  mesos 0.21.0  | mesos 0.21.0   | mesos 0.23.0  |
> |    #3        |  mesos 0.23.0  | mesos 0.21.0   | mesos 0.23.0  |
> |    #4        |  mesos 0.23.0  | mesos 0.23.0   | mesos 0.23.0  |
> +--------------+----------------+----------------+---------------+
> 
> NOTE: live denotes that master process keeps running from previous case.
> 
> 
> Test case 1 (Run of previous setup)
> ##### Starting mesos 0.21.0 master #####
> Run ['../mesos/build-0.21.0/bin/mesos-master.sh', '--ip=127.0.0.1', '--work_dir=/var/folders/y3/w04yjljd5gbcvbvxvd5bhmp40000gn/T/tmp2UMcJv', '--credentials=/var/folders/y3/w04yjljd5gbcvbvxvd5bhmp40000gn/T
> /tmpEMpQQd'], output: /var/folders/y3/w04yjljd5gbcvbvxvd5bhmp40000gn/T/tmpEXE5wH
> ##### Starting mesos 0.21.0 slave #####
> Run ['../mesos/build-0.21.0/bin/mesos-slave.sh', '--master=localhost:5050', '--credential=/var/folders/y3/w04yjljd5gbcvbvxvd5bhmp40000gn/T/tmpEMpQQd'], output: /var/folders/y3/w04yjljd5gbcvbvxvd5bhmp40000
> gn/T/tmpnGiJfB
> ##### Starting mesos 0.21.0 framework #####
> Waiting for mesos 0.21.0 framework to complete (10 sec max)...
> Run ['../mesos/build-0.21.0/src/test-framework', '--master=localhost:5050'], output: /var/folders/y3/w04yjljd5gbcvbvxvd5bhmp40000gn/T/tmp5cfI3A
> 
> Test case 2 (Upgrade of slave)
> ##### Stopping mesos 0.21.0 slave #####
> ##### Starting mesos 0.23.0 slave #####
> Run ['build/bin/mesos-slave.sh', '--master=localhost:5050', '--credential=/var/folders/y3/w04yjljd5gbcvbvxvd5bhmp40000gn/T/tmpEMpQQd'], output: /var/folders/y3/w04yjljd5gbcvbvxvd5bhmp40000gn/T/tmpj9sM2K
> ##### Starting mesos 0.21.0 framework #####
> Waiting for mesos 0.21.0 framework to complete (10 sec max)...
> Run ['../mesos/build-0.21.0/src/test-framework', '--master=localhost:5050'], output: /var/folders/y3/w04yjljd5gbcvbvxvd5bhmp40000gn/T/tmpltfC_p
> 
> Test case 3 (Upgrade framework)
> ##### Starting mesos 0.23.0 framework #####
> Waiting for mesos 0.23.0 framework to complete (10 sec max)...
> Run ['build/src/test-framework', '--master=localhost:5050'], output: /var/folders/y3/w04yjljd5gbcvbvxvd5bhmp40000gn/T/tmpJVWJjW
> 
> Test case 4 (Run of next setup)
> ##### Stopping mesos 0.23.0 slave ####
> ##### Stopping mesos 0.21.0 slave ####
> Run ['build/bin/mesos-master.sh', '--ip=127.0.0.1', '--work_dir=/var/folders/y3/w04yjljd5gbcvbvxvd5bhmp40000gn/T/tmpALCpmO', '--credentials=/var/folders/y3/w04yjljd5gbcvbvxvd5bhmp40000gn/T/tmpEMpQQd'], o$tput: /var/folders/y3/w04yjljd5gbcvbvxvd5bhmp40000gn/T/tmp6oLkTt
> ##### Starting mesos 0.23.0 slave #####
> Run ['build/bin/mesos-slave.sh', '--master=localhost:5050', '--credential=/var/folders/y3/w04yjljd5gbcvbvxvd5bhmp40000gn/T/tmpEMpQQd'], output: /var/folders/y3/w04yjljd5gbcvbvxvd5bhmp40000gn/T/tmpYOCLCM
> ##### Starting mesos 0.23.0 framework #####
> Waiting for mesos 0.23.0 framework to complete (10 sec max)...
> Run ['build/src/test-framework', '--master=localhost:5050'], output: /var/folders/y3/w04yjljd5gbcvbvxvd5bhmp40000gn/T/tmpCVjtu3
> 
> 
> Thanks,
> 
> Niklas Nielsen
> 
>


Re: Review Request 31645: Added upgrade path test script

Posted by Niklas Nielsen <ni...@qni.dk>.
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/31645/#review80798
-----------------------------------------------------------


Closing this review for now. Kapil will take over this test effort and upload a new review request :)

- Niklas Nielsen


On March 2, 2015, 3:44 p.m., Niklas Nielsen wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/31645/
> -----------------------------------------------------------
> 
> (Updated March 2, 2015, 3:44 p.m.)
> 
> 
> Review request for mesos, Ben Mahler and Vinod Kone.
> 
> 
> Bugs: MESOS-2372
>     https://issues.apache.org/jira/browse/MESOS-2372
> 
> 
> Repository: mesos
> 
> 
> Description
> -------
> 
> Upgrade path test script runs previous and new framework versions (i.e. different versions of test framework+libmesos) against different versions of mesos slave and master. We can hopefully generate the upgrade paths we want to test systematically (applying some combinatorics) and cover those in this script.
> 
> 
> Diffs
> -----
> 
>   support/test-upgrade.py PRE-CREATION 
> 
> Diff: https://reviews.apache.org/r/31645/diff/
> 
> 
> Testing
> -------
> 
> The output from running the script against 0.21.0 and HEAD (0.23.0):
> 
> $ python ./support/run-upgrade.py --prev=../mesos/build-0.21.0/ --next=build
> Running upgrade test from mesos 0.21.0 to mesos 0.23.0
> +--------------+----------------+----------------+---------------+
> | Test case    |   Framework    |     Master     |     Slave     |
> +--------------+----------------+----------------+---------------+
> |    #1        |  mesos 0.21.0  | mesos 0.21.0   | mesos 0.21.0  |
> |    #2 (live) |  mesos 0.21.0  | mesos 0.21.0   | mesos 0.23.0  |
> |    #3        |  mesos 0.23.0  | mesos 0.21.0   | mesos 0.23.0  |
> |    #4        |  mesos 0.23.0  | mesos 0.23.0   | mesos 0.23.0  |
> +--------------+----------------+----------------+---------------+
> 
> NOTE: live denotes that master process keeps running from previous case.
> 
> 
> Test case 1 (Run of previous setup)
> ##### Starting mesos 0.21.0 master #####
> Run ['../mesos/build-0.21.0/bin/mesos-master.sh', '--ip=127.0.0.1', '--work_dir=/var/folders/y3/w04yjljd5gbcvbvxvd5bhmp40000gn/T/tmp2UMcJv', '--credentials=/var/folders/y3/w04yjljd5gbcvbvxvd5bhmp40000gn/T
> /tmpEMpQQd'], output: /var/folders/y3/w04yjljd5gbcvbvxvd5bhmp40000gn/T/tmpEXE5wH
> ##### Starting mesos 0.21.0 slave #####
> Run ['../mesos/build-0.21.0/bin/mesos-slave.sh', '--master=localhost:5050', '--credential=/var/folders/y3/w04yjljd5gbcvbvxvd5bhmp40000gn/T/tmpEMpQQd'], output: /var/folders/y3/w04yjljd5gbcvbvxvd5bhmp40000
> gn/T/tmpnGiJfB
> ##### Starting mesos 0.21.0 framework #####
> Waiting for mesos 0.21.0 framework to complete (10 sec max)...
> Run ['../mesos/build-0.21.0/src/test-framework', '--master=localhost:5050'], output: /var/folders/y3/w04yjljd5gbcvbvxvd5bhmp40000gn/T/tmp5cfI3A
> 
> Test case 2 (Upgrade of slave)
> ##### Stopping mesos 0.21.0 slave #####
> ##### Starting mesos 0.23.0 slave #####
> Run ['build/bin/mesos-slave.sh', '--master=localhost:5050', '--credential=/var/folders/y3/w04yjljd5gbcvbvxvd5bhmp40000gn/T/tmpEMpQQd'], output: /var/folders/y3/w04yjljd5gbcvbvxvd5bhmp40000gn/T/tmpj9sM2K
> ##### Starting mesos 0.21.0 framework #####
> Waiting for mesos 0.21.0 framework to complete (10 sec max)...
> Run ['../mesos/build-0.21.0/src/test-framework', '--master=localhost:5050'], output: /var/folders/y3/w04yjljd5gbcvbvxvd5bhmp40000gn/T/tmpltfC_p
> 
> Test case 3 (Upgrade framework)
> ##### Starting mesos 0.23.0 framework #####
> Waiting for mesos 0.23.0 framework to complete (10 sec max)...
> Run ['build/src/test-framework', '--master=localhost:5050'], output: /var/folders/y3/w04yjljd5gbcvbvxvd5bhmp40000gn/T/tmpJVWJjW
> 
> Test case 4 (Run of next setup)
> ##### Stopping mesos 0.23.0 slave ####
> ##### Stopping mesos 0.21.0 slave ####
> Run ['build/bin/mesos-master.sh', '--ip=127.0.0.1', '--work_dir=/var/folders/y3/w04yjljd5gbcvbvxvd5bhmp40000gn/T/tmpALCpmO', '--credentials=/var/folders/y3/w04yjljd5gbcvbvxvd5bhmp40000gn/T/tmpEMpQQd'], o$tput: /var/folders/y3/w04yjljd5gbcvbvxvd5bhmp40000gn/T/tmp6oLkTt
> ##### Starting mesos 0.23.0 slave #####
> Run ['build/bin/mesos-slave.sh', '--master=localhost:5050', '--credential=/var/folders/y3/w04yjljd5gbcvbvxvd5bhmp40000gn/T/tmpEMpQQd'], output: /var/folders/y3/w04yjljd5gbcvbvxvd5bhmp40000gn/T/tmpYOCLCM
> ##### Starting mesos 0.23.0 framework #####
> Waiting for mesos 0.23.0 framework to complete (10 sec max)...
> Run ['build/src/test-framework', '--master=localhost:5050'], output: /var/folders/y3/w04yjljd5gbcvbvxvd5bhmp40000gn/T/tmpCVjtu3
> 
> 
> Thanks,
> 
> Niklas Nielsen
> 
>


Re: Review Request 31645: Added upgrade path test script

Posted by Marco Massenzio <ma...@mesosphere.io>.
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/31645/#review79271
-----------------------------------------------------------



support/test-upgrade.py
<https://reviews.apache.org/r/31645/#comment128511>

    not sure what the 'accepted standard' is here, but I'd suggest we make this code Python 3-ready:
    ```
    from __future__ import print_function
    
    ...
    print('foo bar')
    ```
    Also, I would much prefer the use of `string.format()` to the use of `%`
    
    ```
    print("Run {}, output: {}".format(args, outfile))
    ```
    
    Finally (but it really is nit-picking here): you are blindly printing args, if they include a password they may show up in logs, etc.



support/test-upgrade.py
<https://reviews.apache.org/r/31645/#comment128513>

    ummm... not really a `sleep` method this one, is it? :)
    
    also, I'd document that we return a `bool` (and what the meaning is)



support/test-upgrade.py
<https://reviews.apache.org/r/31645/#comment128512>

    can you make poll_time a configurable arg for this method?
    ```
    def sleep(self, seconds, poll_time=0.1)
    ```
    (or it could even be part of the class `__init__()`)



support/test-upgrade.py
<https://reviews.apache.org/r/31645/#comment128515>

    umm... shouldn't you call this one with Python's intuitive and friendly way to call the super-class?
    ```
    super(Slave, self).__init__(...)
    ```
    (not sure how you make this Python3-friendly for the future, but that's probably another story)



support/test-upgrade.py
<https://reviews.apache.org/r/31645/#comment128514>

    why not adding a `framework` arg:
    ```
    def __init__(self, path, credfile, framework='test-framework')
    ```



support/test-upgrade.py
<https://reviews.apache.org/r/31645/#comment128516>

    not sure I completely agree with a function that returns objects of different types depending on the codepath... sure, this works, to the extent that one can do:
    ```
    if not version(path):
        # blow up
    ```
    but I'd prefer a `None` returned (same effect as above)



support/test-upgrade.py
<https://reviews.apache.org/r/31645/#comment128517>

    are you trying to trim the `\n` here?
    (if not, what? sorry, can't quite recall what p.communicate() returns)
    how about `output.strip()`?
    (that is, assuming that's what this is doing)



support/test-upgrade.py
<https://reviews.apache.org/r/31645/#comment128518>

    the "pythonic" way of doing this would be to
    ```
    def parse_args():
       ...
       return parser.parse_args()
       
       
    def main(config):
        ....
        
    if __name__ == '__main__':
        config = parse_args()
        main(config)
    ```
    
    Also please split the argparsing into its own `parse_args()` method and just pass a `config` to main()



support/test-upgrade.py
<https://reviews.apache.org/r/31645/#comment128519>

    what is this?



support/test-upgrade.py
<https://reviews.apache.org/r/31645/#comment128520>

    I would very *strongly* advocate the use of Jinja2 templates here ;)



support/test-upgrade.py
<https://reviews.apache.org/r/31645/#comment128521>

    if you use `string.format()` this becomes a much more pleasant:
    ```
    "...
    #1    | {version}\t | ....
    ...".format(version=prev_version)
    ```



support/test-upgrade.py
<https://reviews.apache.org/r/31645/#comment128523>

    DRY
    how about factoring this out to a common method?
    (or, god forbid, a decorator)


This looks good - but it looks to me that the 'main' part could be written so as to be more data-driven (such as reading a JSON file and executing each test case there described).
If you want, I'd be happy to have a go at it.

- Marco Massenzio


On March 2, 2015, 11:44 p.m., Niklas Nielsen wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/31645/
> -----------------------------------------------------------
> 
> (Updated March 2, 2015, 11:44 p.m.)
> 
> 
> Review request for mesos, Ben Mahler and Vinod Kone.
> 
> 
> Bugs: MESOS-2372
>     https://issues.apache.org/jira/browse/MESOS-2372
> 
> 
> Repository: mesos
> 
> 
> Description
> -------
> 
> Upgrade path test script runs previous and new framework versions (i.e. different versions of test framework+libmesos) against different versions of mesos slave and master. We can hopefully generate the upgrade paths we want to test systematically (applying some combinatorics) and cover those in this script.
> 
> 
> Diffs
> -----
> 
>   support/test-upgrade.py PRE-CREATION 
> 
> Diff: https://reviews.apache.org/r/31645/diff/
> 
> 
> Testing
> -------
> 
> The output from running the script against 0.21.0 and HEAD (0.23.0):
> 
> $ python ./support/run-upgrade.py --prev=../mesos/build-0.21.0/ --next=build
> Running upgrade test from mesos 0.21.0 to mesos 0.23.0
> +--------------+----------------+----------------+---------------+
> | Test case    |   Framework    |     Master     |     Slave     |
> +--------------+----------------+----------------+---------------+
> |    #1        |  mesos 0.21.0  | mesos 0.21.0   | mesos 0.21.0  |
> |    #2 (live) |  mesos 0.21.0  | mesos 0.21.0   | mesos 0.23.0  |
> |    #3        |  mesos 0.23.0  | mesos 0.21.0   | mesos 0.23.0  |
> |    #4        |  mesos 0.23.0  | mesos 0.23.0   | mesos 0.23.0  |
> +--------------+----------------+----------------+---------------+
> 
> NOTE: live denotes that master process keeps running from previous case.
> 
> 
> Test case 1 (Run of previous setup)
> ##### Starting mesos 0.21.0 master #####
> Run ['../mesos/build-0.21.0/bin/mesos-master.sh', '--ip=127.0.0.1', '--work_dir=/var/folders/y3/w04yjljd5gbcvbvxvd5bhmp40000gn/T/tmp2UMcJv', '--credentials=/var/folders/y3/w04yjljd5gbcvbvxvd5bhmp40000gn/T
> /tmpEMpQQd'], output: /var/folders/y3/w04yjljd5gbcvbvxvd5bhmp40000gn/T/tmpEXE5wH
> ##### Starting mesos 0.21.0 slave #####
> Run ['../mesos/build-0.21.0/bin/mesos-slave.sh', '--master=localhost:5050', '--credential=/var/folders/y3/w04yjljd5gbcvbvxvd5bhmp40000gn/T/tmpEMpQQd'], output: /var/folders/y3/w04yjljd5gbcvbvxvd5bhmp40000
> gn/T/tmpnGiJfB
> ##### Starting mesos 0.21.0 framework #####
> Waiting for mesos 0.21.0 framework to complete (10 sec max)...
> Run ['../mesos/build-0.21.0/src/test-framework', '--master=localhost:5050'], output: /var/folders/y3/w04yjljd5gbcvbvxvd5bhmp40000gn/T/tmp5cfI3A
> 
> Test case 2 (Upgrade of slave)
> ##### Stopping mesos 0.21.0 slave #####
> ##### Starting mesos 0.23.0 slave #####
> Run ['build/bin/mesos-slave.sh', '--master=localhost:5050', '--credential=/var/folders/y3/w04yjljd5gbcvbvxvd5bhmp40000gn/T/tmpEMpQQd'], output: /var/folders/y3/w04yjljd5gbcvbvxvd5bhmp40000gn/T/tmpj9sM2K
> ##### Starting mesos 0.21.0 framework #####
> Waiting for mesos 0.21.0 framework to complete (10 sec max)...
> Run ['../mesos/build-0.21.0/src/test-framework', '--master=localhost:5050'], output: /var/folders/y3/w04yjljd5gbcvbvxvd5bhmp40000gn/T/tmpltfC_p
> 
> Test case 3 (Upgrade framework)
> ##### Starting mesos 0.23.0 framework #####
> Waiting for mesos 0.23.0 framework to complete (10 sec max)...
> Run ['build/src/test-framework', '--master=localhost:5050'], output: /var/folders/y3/w04yjljd5gbcvbvxvd5bhmp40000gn/T/tmpJVWJjW
> 
> Test case 4 (Run of next setup)
> ##### Stopping mesos 0.23.0 slave ####
> ##### Stopping mesos 0.21.0 slave ####
> Run ['build/bin/mesos-master.sh', '--ip=127.0.0.1', '--work_dir=/var/folders/y3/w04yjljd5gbcvbvxvd5bhmp40000gn/T/tmpALCpmO', '--credentials=/var/folders/y3/w04yjljd5gbcvbvxvd5bhmp40000gn/T/tmpEMpQQd'], o$tput: /var/folders/y3/w04yjljd5gbcvbvxvd5bhmp40000gn/T/tmp6oLkTt
> ##### Starting mesos 0.23.0 slave #####
> Run ['build/bin/mesos-slave.sh', '--master=localhost:5050', '--credential=/var/folders/y3/w04yjljd5gbcvbvxvd5bhmp40000gn/T/tmpEMpQQd'], output: /var/folders/y3/w04yjljd5gbcvbvxvd5bhmp40000gn/T/tmpYOCLCM
> ##### Starting mesos 0.23.0 framework #####
> Waiting for mesos 0.23.0 framework to complete (10 sec max)...
> Run ['build/src/test-framework', '--master=localhost:5050'], output: /var/folders/y3/w04yjljd5gbcvbvxvd5bhmp40000gn/T/tmpCVjtu3
> 
> 
> Thanks,
> 
> Niklas Nielsen
> 
>