Exemplo n.º 1
0
    def test(self):

        plane = GafferScene.Plane()
        plane["sets"].setValue("a")

        with IECore.CapturingMessageHandler() as mh:
            with GafferSceneTest.ContextSanitiser():
                with Gaffer.Context() as c:

                    c["scene:path"] = IECore.InternedStringVectorData(
                        ["plane"])
                    plane["out"]["globals"].getValue()

                    c["scene:setName"] = IECore.InternedStringData("a")
                    plane["out"]["set"].getValue()

                    plane["out"]["object"].getValue()

        for message in mh.messages:
            self.assertEqual(message.level, mh.Level.Warning)
            self.assertEqual(message.context, "ContextSanitiser")

        self.assertEqual([m.message for m in mh.messages], [
            "scene:path in context for Plane.out.globals computeNode:hash",
            "scene:path in context for Plane.out.globals computeNode:hash",
            "scene:path in context for Plane.out.set computeNode:hash",
            "scene:path in context for Plane.out.set computeNode:hash",
            "scene:setName in context for Plane.out.object computeNode:hash",
            "scene:setName in context for Plane.out.object computeNode:hash",
        ])
Exemplo n.º 2
0
	def setUp( self ) :

		GafferImageTest.ImageTestCase.setUp( self )

		sanitiser = GafferSceneTest.ContextSanitiser()
		sanitiser.__enter__()
		self.addCleanup( sanitiser.__exit__, None, None, None )
Exemplo n.º 3
0
    def __writeScene(self, script, args):

        import GafferDispatch
        import GafferScene
        import GafferSceneTest

        scene = script.descendant(args["scene"].value)
        if isinstance(scene, GafferScene.Render):
            scene = scene["task"]
        elif isinstance(scene, Gaffer.Node):
            scene = next((x for x in scene.children(GafferScene.ScenePlug)),
                         None)

        if scene is None:
            IECore.msg(IECore.Msg.Level.Error, "stats",
                       "Scene \"%s\" does not exist" % args["scene"].value)
            return

        contextSanitiser = _NullContextManager()
        if args["contextSanitiser"].value:
            contextSanitiser = GafferSceneTest.ContextSanitiser()

        def computeScene():

            with self.__context(script, args) as context:
                for frame in self.__frames(script, args):
                    context.setFrame(frame)

                    if isinstance(scene, GafferDispatch.TaskNode.TaskPlug):
                        context[
                            "scene:render:sceneTranslationOnly"] = IECore.BoolData(
                                True)
                        scene.execute()
                    else:
                        if args["sets"]:
                            GafferScene.SceneAlgo.sets(scene, args["sets"])
                        else:
                            GafferSceneTest.traverseScene(scene)

        if args["preCache"].value:
            computeScene()

        memory = _Memory.maxRSS()
        with _Timer() as sceneTimer:
            with self.__performanceMonitor or _NullContextManager(
            ), self.__contextMonitor or _NullContextManager(
            ), self.__vtuneMonitor or _NullContextManager():
                with contextSanitiser:
                    computeScene()

        self.__timers["Scene generation"] = sceneTimer
        self.__memory["Scene generation"] = _Memory.maxRSS() - memory