import os import shutil import tests.download.sshd import infra class SSHTestBase(infra.basetest.BRConfigTest): config = infra.basetest.MINIMAL_CONFIG + ''' BR2_BACKUP_SITE="" ''' sshd_test_dir = infra.filepath("tests/download/sshd") sshd = None def setUp(self): super(SSHTestBase, self).setUp() self.show_msg("Generating keys") tests.download.sshd.generate_keys(self.builddir, self.logtofile) self.show_msg("Starting sshd") self.sshd = tests.download.sshd.OpenSSHDaemon(self.builddir, self.logtofile) def tearDown(self): self.show_msg("Stopping sshd") if self.sshd: self.sshd.stop() super(SSHTestBase, self).tearDown() def download_package(self, package): self.show_msg("Downloading {}".format(package)) # store downloaded tarball inside the output dir so the test infra # cleans it up at the end dl_dir = os.path.join(self.builddir, "dl") ssh_identity = os.path.join(self.builddir, tests.download.sshd.SSH_CLIENT_KEY) # enforce that we test the download if os.path.exists(dl_dir): shutil.rmtree(dl_dir) env = {"BR2_DL_DIR": dl_dir, "SSHD_PORT_NUMBER": str(self.sshd.port), "SSHD_TEST_DIR": self.sshd_test_dir, "SSH_IDENTITY": ssh_identity} self.b.build(["{}-dirclean".format(package), "{}-source".format(package)], env) class TestSCP(SSHTestBase): br2_external = [infra.filepath("tests/download/br2-external/ssh")] def test_run(self): self.download_package("scp") class TestSFTP(SSHTestBase): br2_external = [infra.filepath("tests/download/br2-external/ssh")] def test_run(self): self.download_package("sftp")