1#!/usr/bin/env python3.4 2 3# Copyright 2016 - The Android Open Source Project 4# 5# Licensed under the Apache License, Version 2.0 (the "License"); 6# you may not use this file except in compliance with the License. 7# You may obtain a copy of the License at 8# 9# http://www.apache.org/licenses/LICENSE-2.0 10# 11# Unless required by applicable law or agreed to in writing, software 12# distributed under the License is distributed on an "AS IS" BASIS, 13# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14# See the License for the specific language governing permissions and 15# limitations under the License. 16 17import inspect 18import io 19import os 20import sys 21import time 22import unittest 23import re 24 25from acts.controllers.utils_lib.ssh import connection 26from acts.controllers.utils_lib.ssh import settings 27 28SSH_HOST = None 29SSH_USER = None 30 31 32class SshTestCases(unittest.TestCase): 33 def setUp(self): 34 self.settings = settings.SshSettings(SSH_HOST, SSH_USER) 35 36 def test_ssh_run(self): 37 """Test running an ssh command. 38 39 Test that running an ssh command works. 40 """ 41 conn = connection.SshConnection(self.settings) 42 43 result = conn.run('echo "Hello World"') 44 self.assertTrue(result.stdout.find('Hello World') > -1) 45 46 def test_ssh_env(self): 47 """Test that special envirment variables get sent over ssh. 48 49 Test that given a dictonary of enviroment variables they will be sent 50 to the remote host. 51 """ 52 conn = connection.SshConnection(self.settings) 53 54 result = conn.run('printenv', env={'MYSPECIALVAR': 20}) 55 self.assertTrue(result.stdout.find('MYSPECIALVAR=20')) 56 57 def test_ssh_permission_denied(self): 58 """Test that permission denied works. 59 60 Connect to a remote host using an invalid username and see if we are 61 rejected. 62 """ 63 with self.assertRaises(connection.Error): 64 bad_settings = settings.SshSettings(SSH_HOST, SSH_USER + 'BAD') 65 conn = connection.SshConnection(bad_settings) 66 result = conn.run('echo "Hello World"') 67 68 def test_ssh_unknown_host(self): 69 """Test that permission denied works. 70 71 Connect to a remote host using an invalid username and see if we are 72 rejected. 73 """ 74 with self.assertRaises(connection.Error): 75 bad_settings = settings.SshSettings('BADHOSTNAME', SSH_USER) 76 conn = connection.SshConnection(bad_settings) 77 result = conn.run('echo "Hello World"') 78 79 80if __name__ == '__main__': 81 # Get host info from command line arguments. 82 if len(sys.argv) < 3: 83 raise ValueError("usage: %s <username> <hostname to ssh to>" % 84 sys.argv[0]) 85 SSH_HOST = sys.argv[2] 86 SSH_USER = sys.argv[1] 87 unittest.main(argv=sys.argv[0:1] + sys.argv[3:]) 88