def test_setup_teardown_ssh(self): hosts = [HostInfo('localhost:%s' % self.dest)] setup_events = [] teardown_events = [] tmpdir = self.source config = py.test.config._reparse([tmpdir]) hm = HostManager(config, hosts) nodes = hm.setup_hosts(setup_events.append) hm.teardown_hosts(teardown_events.append, [node.channel for node in nodes], nodes) count_rsyn_calls = [i for i in setup_events if isinstance(i, repevent.HostRSyncing)] assert len(count_rsyn_calls) == len([i for i in hosts]) count_ready_calls = [i for i in setup_events if isinstance(i, repevent.HostRSyncRootReady)] assert len(count_ready_calls) == len([i for i in hosts]) # same for teardown events teardown_wait_starts = [i for i in teardown_events if isinstance(i, repevent.CallStart)] teardown_wait_ends = [i for i in teardown_events if isinstance(i, repevent.CallFinish)] assert len(teardown_wait_starts) == len(hosts) assert len(teardown_wait_ends) == len(hosts)
def test_hostmanage_optimise_localhost(self): hosts = [HostInfo("localhost") for i in range(3)] config = py.test.config._reparse([self.source]) hm = HostManager(config, hosts=hosts) events = [] hm.init_rsync(events.append) for host in hosts: assert host.inplacelocal assert host.gw_remotepath is None assert not host.relpath assert events
def XXXtest_ssh_rsync_samehost_twice(self): #XXX we have no easy way to have a temp directory remotely! option = py.test.config.option if option.sshtarget is None: py.test.skip("no known ssh target, use -S to set one") host1 = HostInfo("%s" % (option.sshtarget, )) host2 = HostInfo("%s" % (option.sshtarget, )) hm = HostManager(config, hosts=[host1, host2]) events = [] hm.init_rsync(events.append) print events assert 0
def test_hostmanager_init_rsync_roots(self): dir2 = self.source.ensure("dir1", "dir2", dir=1) self.source.ensure("dir1", "somefile", dir=1) dir2.ensure("hello") self.source.ensure("bogusdir", "file") self.source.join("conftest.py").write(py.code.Source(""" dist_rsync_roots = ['dir1/dir2'] """)) config = py.test.config._reparse([self.source]) hm = HostManager(config, hosts=[HostInfo("localhost:" + str(self.dest))]) events = [] hm.init_rsync(reporter=events.append) assert self.dest.join("dir2").check() assert not self.dest.join("dir1").check() assert not self.dest.join("bogus").check()
def test_setup_teardown_run_ssh(self): hosts = [HostInfo('localhost:%s' % self.dest)] allevents = [] hm = HostManager(self.config, hosts=hosts) nodes = hm.setup_hosts(allevents.append) from py.__.test.rsession.testing.test_executor \ import ItemTestPassing, ItemTestFailing, ItemTestSkipping itempass = self.getexample("pass") itemfail = self.getexample("fail") itemskip = self.getexample("skip") itemprint = self.getexample("print") # actually run some tests for node in nodes: node.send(itempass) node.send(itemfail) node.send(itemskip) node.send(itemprint) hm.teardown_hosts(allevents.append, [node.channel for node in nodes], nodes) events = [i for i in allevents if isinstance(i, repevent.ReceivedItemOutcome)] passed = [i for i in events if i.outcome.passed] skipped = [i for i in events if i.outcome.skipped] assert len(passed) == 2 * len(nodes) assert len(skipped) == len(nodes) assert len(events) == 4 * len(nodes) # one of passed for each node has non-empty stdout passed_stdout = [i for i in passed if i.outcome.stdout.find('samfing') != -1] assert len(passed_stdout) == len(nodes), passed
def main(self, reporter=None): """ main loop for running tests. """ args = self.config.args hm = HostManager(self.config) reporter, startserverflag = self.init_reporter(reporter, hm.hosts, RemoteReporter) reporter, checkfun = self.wrap_reporter(reporter) reporter(repevent.TestStarted(hm.hosts, self.config.topdir, hm.roots)) try: nodes = hm.setup_hosts(reporter) reporter(repevent.RsyncFinished()) try: self.dispatch_tests(nodes, reporter, checkfun) except (KeyboardInterrupt, SystemExit): print >>sys.stderr, "C-c pressed waiting for gateways to teardown..." channels = [node.channel for node in nodes] hm.kill_channels(channels) hm.teardown_gateways(reporter, channels) print >>sys.stderr, "... Done" raise channels = [node.channel for node in nodes] hm.teardown_hosts(reporter, channels, nodes, exitfirst=self.config.option.exitfirst) reporter(repevent.Nodes(nodes)) retval = reporter(repevent.TestFinished()) self.kill_server(startserverflag) return retval except (KeyboardInterrupt, SystemExit): reporter(repevent.InterruptedExecution()) self.kill_server(startserverflag) raise except: reporter(repevent.CrashedExecution()) self.kill_server(startserverflag) raise