18754a1a087a9553b277829583b46f05c07beb369Shuqian Zhao#!/usr/bin/python
28754a1a087a9553b277829583b46f05c07beb369Shuqian Zhao# Copyright (c) 2014 The Chromium OS Authors. All rights reserved.
38754a1a087a9553b277829583b46f05c07beb369Shuqian Zhao# Use of this source code is governed by a BSD-style license that can be
48754a1a087a9553b277829583b46f05c07beb369Shuqian Zhao# found in the LICENSE file.
58754a1a087a9553b277829583b46f05c07beb369Shuqian Zhao
68754a1a087a9553b277829583b46f05c07beb369Shuqian Zhao"""Unittests for deploy_server_local.py."""
78754a1a087a9553b277829583b46f05c07beb369Shuqian Zhao
88754a1a087a9553b277829583b46f05c07beb369Shuqian Zhaofrom __future__ import print_function
98754a1a087a9553b277829583b46f05c07beb369Shuqian Zhao
108754a1a087a9553b277829583b46f05c07beb369Shuqian Zhaoimport unittest
118754a1a087a9553b277829583b46f05c07beb369Shuqian Zhao
128754a1a087a9553b277829583b46f05c07beb369Shuqian Zhaoimport deploy_server as deploy_server
138754a1a087a9553b277829583b46f05c07beb369Shuqian Zhao
148754a1a087a9553b277829583b46f05c07beb369Shuqian Zhao
158754a1a087a9553b277829583b46f05c07beb369Shuqian Zhaoclass TestDeployServer(unittest.TestCase):
168754a1a087a9553b277829583b46f05c07beb369Shuqian Zhao    """Test deploy_server_local with commands mocked out."""
178754a1a087a9553b277829583b46f05c07beb369Shuqian Zhao
188754a1a087a9553b277829583b46f05c07beb369Shuqian Zhao    def test_parse_arguments(self):
198754a1a087a9553b277829583b46f05c07beb369Shuqian Zhao        """Test deploy_server_local.parse_arguments."""
208754a1a087a9553b277829583b46f05c07beb369Shuqian Zhao        # Only requires args.
218754a1a087a9553b277829583b46f05c07beb369Shuqian Zhao        results = deploy_server.parse_arguments(['--afe', 'foo'])
228754a1a087a9553b277829583b46f05c07beb369Shuqian Zhao        self.assertEqual(
238754a1a087a9553b277829583b46f05c07beb369Shuqian Zhao                {'afe': 'foo', 'servers': [], 'args': [],
248754a1a087a9553b277829583b46f05c07beb369Shuqian Zhao                 'cont': False, 'dryrun': False, 'verbose': False,
259febd45bbbcaba56b66cd4b1febcb85f8b5bb591Shuqian Zhao                 'force_update': False, 'logfile': '/tmp/deployment.log',
269febd45bbbcaba56b66cd4b1febcb85f8b5bb591Shuqian Zhao                 'update_push_servers': False},
278754a1a087a9553b277829583b46f05c07beb369Shuqian Zhao                vars(results))
288754a1a087a9553b277829583b46f05c07beb369Shuqian Zhao
298754a1a087a9553b277829583b46f05c07beb369Shuqian Zhao        # Dryrun, continue
308754a1a087a9553b277829583b46f05c07beb369Shuqian Zhao        results = deploy_server.parse_arguments(['--afe', 'foo',
318754a1a087a9553b277829583b46f05c07beb369Shuqian Zhao                                                 '--dryrun', '--continue'])
328754a1a087a9553b277829583b46f05c07beb369Shuqian Zhao        self.assertDictContainsSubset(
338754a1a087a9553b277829583b46f05c07beb369Shuqian Zhao                {'afe': 'foo', 'servers': [], 'args': [],
348754a1a087a9553b277829583b46f05c07beb369Shuqian Zhao                 'cont': True, 'dryrun': True, 'verbose': False,
359febd45bbbcaba56b66cd4b1febcb85f8b5bb591Shuqian Zhao                 'force_update': False, 'logfile': '/tmp/deployment.log',
369febd45bbbcaba56b66cd4b1febcb85f8b5bb591Shuqian Zhao                 'update_push_servers': False},
378754a1a087a9553b277829583b46f05c07beb369Shuqian Zhao                vars(results))
388754a1a087a9553b277829583b46f05c07beb369Shuqian Zhao
398754a1a087a9553b277829583b46f05c07beb369Shuqian Zhao        # List some servers
408754a1a087a9553b277829583b46f05c07beb369Shuqian Zhao        results = deploy_server.parse_arguments(['--afe', 'foo',
418754a1a087a9553b277829583b46f05c07beb369Shuqian Zhao                                                 'dummy', 'bar'])
428754a1a087a9553b277829583b46f05c07beb369Shuqian Zhao        self.assertDictContainsSubset(
438754a1a087a9553b277829583b46f05c07beb369Shuqian Zhao                {'afe': 'foo', 'servers': ['dummy', 'bar'], 'args': [],
448754a1a087a9553b277829583b46f05c07beb369Shuqian Zhao                 'cont': False, 'dryrun': False, 'verbose': False,
459febd45bbbcaba56b66cd4b1febcb85f8b5bb591Shuqian Zhao                 'force_update': False, 'logfile': '/tmp/deployment.log',
469febd45bbbcaba56b66cd4b1febcb85f8b5bb591Shuqian Zhao                 'update_push_servers': False},
478754a1a087a9553b277829583b46f05c07beb369Shuqian Zhao                vars(results))
488754a1a087a9553b277829583b46f05c07beb369Shuqian Zhao
498754a1a087a9553b277829583b46f05c07beb369Shuqian Zhao        # List some local args
508754a1a087a9553b277829583b46f05c07beb369Shuqian Zhao        results = deploy_server.parse_arguments(['--afe', 'foo',
518754a1a087a9553b277829583b46f05c07beb369Shuqian Zhao                                                     '--', 'dummy', 'bar'])
528754a1a087a9553b277829583b46f05c07beb369Shuqian Zhao        self.assertDictContainsSubset(
538754a1a087a9553b277829583b46f05c07beb369Shuqian Zhao                {'afe': 'foo', 'servers': [], 'args': ['dummy', 'bar'],
548754a1a087a9553b277829583b46f05c07beb369Shuqian Zhao                 'cont': False, 'dryrun': False, 'verbose': False,
559febd45bbbcaba56b66cd4b1febcb85f8b5bb591Shuqian Zhao                 'force_update': False, 'logfile': '/tmp/deployment.log',
569febd45bbbcaba56b66cd4b1febcb85f8b5bb591Shuqian Zhao                 'update_push_servers': False},
578754a1a087a9553b277829583b46f05c07beb369Shuqian Zhao                 vars(results))
588754a1a087a9553b277829583b46f05c07beb369Shuqian Zhao
598754a1a087a9553b277829583b46f05c07beb369Shuqian Zhao        # List everything.
608754a1a087a9553b277829583b46f05c07beb369Shuqian Zhao        results = deploy_server.parse_arguments(
618754a1a087a9553b277829583b46f05c07beb369Shuqian Zhao                ['--continue', '--afe', 'foo', '--dryrun', 'dummy', 'bar',
62a3438a5f7b385b204a0c8ccec6fa809c89b544bcShuqian Zhao                 '--', '--actions-only', '--dryrun', '--update_push_servers',
63a3438a5f7b385b204a0c8ccec6fa809c89b544bcShuqian Zhao                 '--force_update'])
648754a1a087a9553b277829583b46f05c07beb369Shuqian Zhao        self.assertDictContainsSubset(
658754a1a087a9553b277829583b46f05c07beb369Shuqian Zhao                {'afe': 'foo', 'servers': ['dummy', 'bar'],
668754a1a087a9553b277829583b46f05c07beb369Shuqian Zhao                 'args': ['--actions-only', '--dryrun',
67a3438a5f7b385b204a0c8ccec6fa809c89b544bcShuqian Zhao                          '--update_push_servers', '--force_update'],
688754a1a087a9553b277829583b46f05c07beb369Shuqian Zhao                 'cont': True, 'dryrun': True, 'verbose': False},
698754a1a087a9553b277829583b46f05c07beb369Shuqian Zhao                vars(results))
708754a1a087a9553b277829583b46f05c07beb369Shuqian Zhao
718754a1a087a9553b277829583b46f05c07beb369Shuqian Zhao
728754a1a087a9553b277829583b46f05c07beb369Shuqian Zhaoif __name__ == '__main__':
738754a1a087a9553b277829583b46f05c07beb369Shuqian Zhao    unittest.main()
74