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 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
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