Hi Andy, Probably there is some error that his hidden behind this weird traceback. Can't look into it at the moment. Can you come with a repeatable example and maybe file an issue? In any case i am off for three weeks so don't expect an answer from my side, maybe somebody else can help you, though.
cheers, holger On Fri, Dec 10, 2010 at 09:17 -0500, Andy Fundinger wrote: > Continuing my attempted upgrade to pytest 2.0.0 I'm running into some errors > with using xdist for parallel testing, this test is meant to run on two local > nodes in parallel and boxed, but somehow it's trying to remove something that > isn't there. Any ideas? The full log is below with a few bits removed > because they reference my source code, if they're critical I can obscure the > data rather than removing them or try to reproduce with non-project code. > > > Andy Fundinger > > > > scheduling tests via LoadScheduling > INTERNALERROR> config = <_pytest.config.Config object > at 0xff22a90> > INTERNALERROR> > INTERNALERROR> def > pytest_cmdline_main(config): > INTERNALERROR> > """ default command line protocol for initialization, session, > INTERNALERROR> > running tests and reporting. """ > INTERNALERROR> > session = Session(config) > INTERNALERROR> > session.exitstatus = EXIT_OK > INTERNALERROR> > try: > INTERNALERROR> > config.pluginmanager.do_configure(config) > INTERNALERROR> > config.hook.pytest_sessionstart(session=session) > INTERNALERROR> > config.hook.pytest_collection(session=session) > INTERNALERROR> > config.hook.pytest_runtestloop(session=session) > INTERNALERROR> > INTERNALERROR> config = > <_pytest.config.Config object at 0xff22a90> > INTERNALERROR> session = <Session > 'gauss_tools'> > INTERNALERROR> > INTERNALERROR> > /home/andy/trunk/ext_linux64/python264/lib/python2.6/site-packages/pytest-2.0.1.dev5-py2.6.egg/_pytest/main.py:65: > INTERNALERROR> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > _ > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > INTERNALERROR> > INTERNALERROR> self = <HookCaller > 'pytest_runtestloop'> > INTERNALERROR> > INTERNALERROR> def __call__(self, > **kwargs): > INTERNALERROR> > methods = self.hookrelay._pm.listattr(self.name) > INTERNALERROR> > > return self._docall(methods, kwargs) > INTERNALERROR> > INTERNALERROR> kwargs = > {'session': <Session 'gauss_tools'>} > INTERNALERROR> methods = [<function > pytest_runtestloop at 0x1001b758>, <bound method > DSession.pytest_runtestloop of <xdist.dsession.DSession instance at > 0x180b5368>>] > INTERNALERROR> self = > <HookCaller 'pytest_runtestloop'> > INTERNALERROR> > INTERNALERROR> > /home/andy/trunk/ext_linux64/python264/lib/python2.6/site-packages/pytest-2.0.1.dev5-py2.6.egg/_pytest/core.py:390: > INTERNALERROR> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > _ > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > INTERNALERROR> > INTERNALERROR> self = <HookCaller > 'pytest_runtestloop'> > INTERNALERROR> methods = [<function pytest_runtestloop > at 0x1001b758>, <bound method DSession.pytest_runtestloop of > <xdist.dsession.DSession instance at 0x180b5368>>] > INTERNALERROR> kwargs = {'session': <Session > 'gauss_tools'>} > INTERNALERROR> > INTERNALERROR> def _docall(self, > methods, kwargs): > INTERNALERROR> > self.trace(self.name, kwargs) > INTERNALERROR> > self.trace.root.indent += 1 > INTERNALERROR> > mc = MultiCall(methods, kwargs, firstresult=self.firstresult) > INTERNALERROR> > try: > INTERNALERROR> > > res = > mc.execute() > INTERNALERROR> > INTERNALERROR> kwargs = > {'session': <Session 'gauss_tools'>} > INTERNALERROR> > mc = <MultiCall 0 results, 1 > meths, kwargs={'session': <Session 'gauss_tools'>}> > INTERNALERROR> methods = [<function > pytest_runtestloop at 0x1001b758>, <bound method > DSession.pytest_runtestloop of <xdist.dsession.DSession instance at > 0x180b5368>>] > INTERNALERROR> self = > <HookCaller 'pytest_runtestloop'> > INTERNALERROR> > INTERNALERROR> > /home/andy/trunk/ext_linux64/python264/lib/python2.6/site-packages/pytest-2.0.1.dev5-py2.6.egg/_pytest/core.py:401: > INTERNALERROR> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > _ > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > INTERNALERROR> > INTERNALERROR> self = <MultiCall 0 results, 1 meths, > kwargs={'session': <Session 'gauss_tools'>}> > INTERNALERROR> > INTERNALERROR> def execute(self): > INTERNALERROR> > while self.methods: > INTERNALERROR> > method = self.methods.pop() > INTERNALERROR> > kwargs = self.getkwargs(method) > INTERNALERROR> > > res = > method(**kwargs) > INTERNALERROR> > INTERNALERROR> kwargs = {} > INTERNALERROR> method = <bound > method DSession.pytest_runtestloop of <xdist.dsession.DSession instance at > 0x180b5368>> > INTERNALERROR> self = > <MultiCall 0 results, 1 meths, kwargs={'session': <Session > 'gauss_tools'>}> > INTERNALERROR> > INTERNALERROR> > /home/andy/trunk/ext_linux64/python264/lib/python2.6/site-packages/pytest-2.0.1.dev5-py2.6.egg/_pytest/core.py:322: > INTERNALERROR> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > _ > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > INTERNALERROR> > INTERNALERROR> self = <xdist.dsession.DSession > instance at 0x180b5368> > INTERNALERROR> > INTERNALERROR> def > pytest_runtestloop(self): > INTERNALERROR> > numnodes = len(self.nodemanager.specs) > INTERNALERROR> > dist = self.config.getvalue("dist") > INTERNALERROR> > if dist == "load": > INTERNALERROR> > self.sched = LoadScheduling(numnodes, log=self.log) > INTERNALERROR> > elif dist == "each": > INTERNALERROR> > self.sched = EachScheduling(numnodes, log=self.log) > INTERNALERROR> > else: > INTERNALERROR> > assert 0, dist > INTERNALERROR> > self.shouldstop = False > INTERNALERROR> > self.session_finished = False > INTERNALERROR> > while not self.session_finished: > INTERNALERROR> > > > self.loop_once() > INTERNALERROR> > INTERNALERROR> dist = > 'load' > INTERNALERROR> numnodes = 2 > INTERNALERROR> self = > <xdist.dsession.DSession instance at 0x180b5368> > INTERNALERROR> > INTERNALERROR> > /home/andy/trunk/ext_linux64/python264/lib/python2.6/site-packages/pytest_xdist-1.6.dev2-py2.6.egg/xdist/dsession.py:204: > INTERNALERROR> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > _ > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > INTERNALERROR> > INTERNALERROR> self = <xdist.dsession.DSession > instance at 0x180b5368> > INTERNALERROR> > INTERNALERROR> def > loop_once(self): > INTERNALERROR> > """ process one callback from one of the slaves. > """ > INTERNALERROR> while > 1: > INTERNALERROR> > try: > INTERNALERROR> > eventcall = self.queue.get(timeout=2.0) > INTERNALERROR> > break > INTERNALERROR> > except queue.Empty: > INTERNALERROR> > continue > INTERNALERROR> callname, > kwargs = eventcall > INTERNALERROR> > assert callname, kwargs > INTERNALERROR> > method = "slave_" + callname > INTERNALERROR> > call = getattr(self, method) > INTERNALERROR> > self.log("calling method: %s(**%s)" % (method, kwargs)) > INTERNALERROR> > > call(**kwargs) > INTERNALERROR> > INTERNALERROR> call = > <bound method DSession.slave_testreport of <xdist.dsession.DSession > instance at 0x180b5368>> > INTERNALERROR> callname = 'testreport' > INTERNALERROR> eventcall = ('testreport', {'node': > <SlaveController gw0>, 'rep': {snip} > > when='call' outcome='passed'>}) > INTERNALERROR> kwargs = {'node': > <SlaveController gw0>, 'rep': {snip} > when='call' outcome='passed'>} > INTERNALERROR> method = > 'slave_testreport' > INTERNALERROR> self = > <xdist.dsession.DSession instance at 0x180b5368> > INTERNALERROR> > INTERNALERROR> > /home/andy/trunk/ext_linux64/python264/lib/python2.6/site-packages/pytest_xdist-1.6.dev2-py2.6.egg/xdist/dsession.py:222: > INTERNALERROR> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > _ > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > INTERNALERROR> > INTERNALERROR> self = <xdist.dsession.DSession > instance at 0x180b5368>, node = <SlaveController gw0> > INTERNALERROR> rep = <TestReport {snip} > when='call' outcome='passed'> > INTERNALERROR> > INTERNALERROR> def > slave_testreport(self, node, rep): > INTERNALERROR> if > rep.when in ("setup", "call"): > INTERNALERROR> > > > self.sched.remove_item(node, rep.nodeid) > INTERNALERROR> > INTERNALERROR> node = > <SlaveController gw0> > INTERNALERROR> > rep = <TestReport {snip} > when='call' outcome='passed'> > INTERNALERROR> self = > <xdist.dsession.DSession instance at 0x180b5368> > INTERNALERROR> > INTERNALERROR> > /home/andy/trunk/ext_linux64/python264/lib/python2.6/site-packages/pytest_xdist-1.6.dev2-py2.6.egg/xdist/dsession.py:283: > INTERNALERROR> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > _ > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > INTERNALERROR> > INTERNALERROR> self = <xdist.dsession.LoadScheduling > instance at 0x1930f368>, node = <SlaveController gw0> > > > {item removed} > > INTERNALERROR> > INTERNALERROR> def > remove_item(self, node, item): > INTERNALERROR> > if item not in self.item2nodes: > INTERNALERROR> > raise AssertiDN_XSS_NEUTRALIZE_onError(item, self.item2nodes) > INTERNALERROR> > nodes = self.item2nodes[item] > INTERNALERROR> > if node in nodes: # the node might have gone down already > INTERNALERROR> > nodes.remove(node) > INTERNALERROR> > #if not nodes: > INTERNALERROR> > # del self.item2nodes[item] > INTERNALERROR> > pending = self.node2pending[node] > INTERNALERROR> > > pending.remove(item) > INTERNALERROR> E > ValueError: list.remove(x): x not in list > INTERNALERROR> > {item and pending removed} > > INTERNALERROR> node = > <SlaveController gw0> > > INTERNALERROR> nodes = [] > INTERNALERROR> self = > <xdist.dsession.LoadScheduling instance at 0x1930f368> > > INTERNALERROR> > > > INTERNALERROR> > /home/andy/trunk/ext_linux64/python264/lib/python2.6/site-packages/pytest_xdist-1.6.dev2-py2.6.egg/xdist/dsession.py:103: > ValueError > > > Regards, > > Andy Fundinger > > Risk Focus Inc. > 424.243.6227 > > > New York Office: +1 917 725 6006 Fax: +1 917 591 1616 > > London Office: +44 (0) 207 760 7184 Fax: +44 (0) 207 691 7165 > _______________________________________________ > py-dev mailing list > py-dev@codespeak.net > http://codespeak.net/mailman/listinfo/py-dev -- _______________________________________________ py-dev mailing list py-dev@codespeak.net http://codespeak.net/mailman/listinfo/py-dev