Best Python code snippet using playwright-python
multibody_plant_subgraph_test_helpers.py
Source:multibody_plant_subgraph_test_helpers.py
1"""2Helpers for test code.3"""4from collections import defaultdict5import random6import numpy as np7from numpy.testing import assert_array_equal8from pydrake.geometry import Box, GeometryInstance, HalfSpace9from pydrake.math import RigidTransform10from pydrake.multibody.plant import CoulombFriction11from pydrake.multibody.tree import (12 BallRpyJoint,13 FixedOffsetFrame,14 PrismaticJoint,15 RevoluteJoint,16 SpatialInertia,17 UnitInertia,18 UniversalJoint,19 WeldJoint,20)21from pydrake.systems.primitives import ConstantVectorSource22from multibody_plant_prototypes.containers import strict_zip23from .. import multibody_extras as me24from .. import multibody_plant_subgraph as mut25JOINT_CLS_LIST = [26 PrismaticJoint,27 RevoluteJoint,28 BallRpyJoint,29 UniversalJoint,30 WeldJoint,31]32def build_with_no_control(builder, plant, model):33 """Connects a zero-torque input to a given model instance in a plant."""34 # TODO(eric.cousineau): Use `multibody_plant_prototypes.control` if the dependency can35 # be simplified.36 nu = plant.num_actuated_dofs(model)37 constant = builder.AddSystem(ConstantVectorSource(np.zeros(nu)))38 builder.Connect(39 constant.get_output_port(0),40 plant.get_actuation_input_port(model))41def compare_frame_poses(42 plant, context, sub_plant, sub_context,43 base_frame_name, test_frame_name, **kwargs):44 """Compares the poses of two frames."""45 X_BT_sub = sub_plant.CalcRelativeTransform(46 sub_context,47 sub_plant.GetFrameByName(base_frame_name),48 sub_plant.GetFrameByName(test_frame_name))49 X_BT = plant.CalcRelativeTransform(50 context,51 plant.GetFrameByName(base_frame_name, **kwargs),52 plant.GetFrameByName(test_frame_name, **kwargs))53 np.testing.assert_allclose(54 X_BT_sub.GetAsMatrix4(),55 X_BT.GetAsMatrix4(), rtol=0., atol=1e-10)56def add_arbitrary_multibody_stuff(57 plant, num_bodies=30, slight_difference=False):58 """59 Deterministic, physically valid, jumble of arbitrary stuff.60 The goal of this factory is to:61 - Produce a set of elements and cases that exercise each code path in62 `MultibodyPlantSubgraph.add_to` and `MultibodyPlantElementsMap`.63 - Ensure each element has somewhat "random" but unique properties for each64 element produced.65 - Allow for a slight difference to show that strict plant comparison can be66 falsified.67 """68 count = defaultdict(lambda: 0)69 def i_next(key=None):70 # Increments for a given key.71 count[key] += 172 return count[key]73 def maybe():74 # Returns True or False randomly.75 return random.choice([True, False])76 def random_model_instance():77 # Returns a "random" model instance (by incrementing).78 i = i_next()79 return plant.AddModelInstance(f"model_{i}")80 def random_position():81 # Returns a random position.82 return [0.2 * random.random(), 0, 0]83 def random_X():84 # Returns a random pose.85 return RigidTransform(random_position())86 def random_body():87 # Returns a random body, with an incrementing name.88 inertia = SpatialInertia(89 mass=random.uniform(0.2, 1.),90 p_PScm_E=random_position(),91 G_SP_E=UnitInertia(92 Ixx=random.uniform(0.2, 0.3),93 Iyy=random.uniform(0.2, 0.3),94 Izz=random.uniform(0.2, 0.3),95 ),96 )97 return plant.AddRigidBody(98 name=f"body_{i_next()}",99 M_BBo_B=inertia,100 model_instance=random_model_instance(),101 )102 def random_frame(parent_frame):103 # Returns a random frame, with an incrementing name.104 i = i_next()105 return plant.AddFrame(FixedOffsetFrame(106 name=f"frame_{i}", P=parent_frame,107 X_PF=random_X(),108 model_instance=parent_frame.model_instance(),109 ))110 def random_joint(parent, child):111 # Returns a random joint, but with an incrementing name. Note that we112 # use a separate index so that we ensure we can loop through all113 # joints.114 i = i_next("joint")115 name = f"joint_{i}"116 joint_cls = JOINT_CLS_LIST[i % len(JOINT_CLS_LIST)]117 frame_on_parent = random_frame(parent.body_frame())118 frame_on_child = random_frame(child.body_frame())119 axis = np.zeros(3)120 axis[i_next() % 3] = 1121 damping = random.random()122 if joint_cls == BallRpyJoint:123 joint = BallRpyJoint(124 name,125 frame_on_parent=frame_on_parent,126 frame_on_child=frame_on_child,127 damping=damping,128 )129 elif joint_cls == PrismaticJoint:130 joint = PrismaticJoint(131 name,132 frame_on_parent=frame_on_parent,133 frame_on_child=frame_on_child,134 axis=axis,135 damping=damping,136 )137 elif joint_cls == RevoluteJoint:138 joint = RevoluteJoint(139 name,140 frame_on_parent=frame_on_parent,141 frame_on_child=frame_on_child,142 axis=axis,143 damping=damping,144 )145 elif joint_cls == UniversalJoint:146 joint = UniversalJoint(147 name,148 frame_on_parent=frame_on_parent,149 frame_on_child=frame_on_child,150 damping=damping,151 )152 elif joint_cls == WeldJoint:153 joint = WeldJoint(154 name,155 frame_on_parent_P=frame_on_parent,156 frame_on_child_C=frame_on_child,157 X_PC=random_X(),158 )159 else:160 assert False161 return plant.AddJoint(joint)162 def random_joint_actuator(joint):163 # Creates a random joint actuator.164 assert joint is not None165 i = i_next()166 return plant.AddJointActuator(167 f"actuator_{i}", joint, effort_limit=random.uniform(1, 2))168 def random_geometry(body):169 # Creates a random geometry.170 i = i_next()171 box = Box(172 width=random.uniform(0.1, 0.3),173 depth=random.uniform(0.1, 0.3),174 height=random.uniform(0.1, 0.3),175 )176 plant.RegisterVisualGeometry(177 body=body,178 X_BG=random_X(),179 shape=box,180 name=f"visual_{i}",181 diffuse_color=[random.random(), 0, 0, 0.75],182 )183 static_friction = random.uniform(0.1, 1.)184 plant.RegisterCollisionGeometry(185 body=body,186 X_BG=random_X(),187 shape=box,188 name=f"collision_{i}",189 coulomb_friction=CoulombFriction(190 static_friction=static_friction,191 dynamic_friction=static_friction / 2,192 )193 )194 # Add ground plane.195 X_FH = HalfSpace.MakePose([0, 0, 1], [0, 0, 0])196 plant.RegisterCollisionGeometry(197 plant.world_body(), X_FH, HalfSpace(), "ground_plane_collision",198 CoulombFriction(0.8, 0.3))199 grid_rows = 5200 prev_body = None201 for i in range(num_bodies):202 random.seed(i)203 body = random_body()204 grid_col = i % grid_rows205 grid_row = int(i / grid_rows)206 if slight_difference:207 grid_row += 1208 plant.SetDefaultFreeBodyPose(209 body, RigidTransform([grid_col, grid_row, 2]))210 random_frame(body.body_frame())211 # Consider attaching a joint and/or frame to the world.212 if maybe() or num_bodies < 3:213 prev_body = plant.world_body()214 random_frame(plant.world_frame())215 if prev_body is not None and (maybe() or num_bodies < 3):216 joint = random_joint(prev_body, body)217 if joint.num_velocities() == 1 and (maybe() or num_bodies < 3):218 random_joint_actuator(joint)219 if plant.geometry_source_is_registered():220 random_geometry(body)221 prev_body = body222def assert_inertia_equals(a, b):223 assert_array_equal(a.CopyToFullMatrix6(), b.CopyToFullMatrix6())224def assert_pose_equals(a, b):225 assert_array_equal(a.GetAsMatrix4(), b.GetAsMatrix4())226def check_element(a, b, check_index=True):227 """Checks that two multibody elements have similar base properties."""228 assert a is not b229 if check_index:230 assert a.index() == b.index()231 assert a.name() == b.name(), (a.name(), b.name())232 assert type(a) == type(b)233 assert a.model_instance() == b.model_instance()234def assert_shape_equals(a, b):235 assert type(a) == type(b)236 if type(a) == Box:237 assert a.width() == b.width()238 assert a.height() == b.height()239 assert a.depth() == b.depth()240 elif type(a) == HalfSpace:241 pass242 else:243 assert False244def assert_value_equals(value_a, value_b):245 a = value_a.get_value()246 b = value_b.get_value()247 assert type(a) == type(b)248 if type(a) == CoulombFriction:249 assert a.static_friction() == b.static_friction()250 assert a.dynamic_friction() == b.dynamic_friction()251 else:252 assert a == b253def assert_properties_equals(prop_a, prop_b):254 if prop_a is None:255 assert prop_b is None256 return257 groups = prop_a.GetGroupNames()258 assert groups == prop_b.GetGroupNames()259 for group_name in groups:260 group_a = prop_a.GetPropertiesInGroup(group_name)261 group_b = prop_b.GetPropertiesInGroup(group_name)262 assert len(group_a) == len(group_b)263 for name, value_a in group_a.items():264 value_b = group_b[name]265 try:266 assert_value_equals(value_a, value_b)267 except RuntimeError as e:268 if "AddValueInstantiation" in str(e):269 # TODO(eric.cosuineau): Fix this stuff for Vector4d.270 assert (group_name, name) == ("phong", "diffuse")271 else:272 raise273def assert_plant_equals(plant_a, scene_graph_a, plant_b, scene_graph_b):274 """275 Asserts that two plants are (almost) completely equal; more specifically:276 - All model instances, bodies, joints, and joint actuators have the same277 indices.278 - Frames may have different indices, due to ordering.279 - All properties of each element are "exactly" the same.280 """281 assert plant_a is not plant_b282 if scene_graph_b is not None:283 assert scene_graph_a is not None284 elem_a = mut.get_elements_from_plant(plant_a, scene_graph_a)285 checked_a = mut.MultibodyPlantElements(plant_a, scene_graph_a)286 elem_b = mut.get_elements_from_plant(plant_b, scene_graph_b)287 checked_b = mut.MultibodyPlantElements(plant_b, scene_graph_b)288 def assert_body_equals(body_a, body_b):289 check_element(body_a, body_b)290 assert_inertia_equals(291 body_a.default_spatial_inertia(), body_b.default_spatial_inertia())292 assert body_a.model_instance() in checked_a.model_instances293 assert body_b.model_instance() in checked_b.model_instances294 assert_pose_equals(295 plant_a.GetDefaultFreeBodyPose(body_a),296 plant_b.GetDefaultFreeBodyPose(body_b))297 checked_a.bodies.add(body_a)298 checked_b.bodies.add(body_b)299 def assert_frame_equals(frame_a, frame_b):300 check_element(frame_a, frame_b, check_index=False)301 assert frame_a.body() in checked_a.bodies302 assert frame_b.body() in checked_b.bodies303 assert_pose_equals(304 frame_a.GetFixedPoseInBodyFrame(),305 frame_b.GetFixedPoseInBodyFrame())306 checked_a.frames.add(frame_a)307 checked_b.frames.add(frame_b)308 def assert_joint_equals(joint_a, joint_b):309 check_element(joint_a, joint_b)310 assert joint_a.frame_on_parent() in checked_a.frames311 assert joint_b.frame_on_parent() in checked_b.frames312 assert joint_a.frame_on_child() in checked_a.frames313 assert joint_b.frame_on_child() in checked_b.frames314 assert_array_equal(315 joint_a.position_lower_limits(),316 joint_b.position_lower_limits())317 assert_array_equal(318 joint_a.position_upper_limits(),319 joint_b.position_upper_limits())320 assert_array_equal(321 joint_a.velocity_upper_limits(),322 joint_b.velocity_upper_limits())323 assert_array_equal(324 joint_a.velocity_lower_limits(),325 joint_b.velocity_lower_limits())326 assert_array_equal(327 joint_a.acceleration_lower_limits(),328 joint_b.acceleration_lower_limits())329 assert_array_equal(330 joint_a.acceleration_upper_limits(),331 joint_b.acceleration_upper_limits())332 assert_array_equal(333 joint_a.default_positions(),334 joint_b.default_positions())335 # TODO(eric.cousineau): Fix damping for BallRpyJoint.336 if type(joint_a) in [PrismaticJoint, RevoluteJoint, UniversalJoint]:337 assert joint_a.damping() == joint_b.damping()338 if type(joint_a) == PrismaticJoint:339 assert_array_equal(340 joint_a.translation_axis(),341 joint_b.translation_axis())342 if type(joint_a) == RevoluteJoint:343 assert_array_equal(344 joint_a.revolute_axis(), joint_b.revolute_axis())345 if type(joint_a) == WeldJoint:346 assert_pose_equals(joint_a.X_PC(), joint_b.X_PC())347 checked_a.joints.add(joint_a)348 checked_b.joints.add(joint_b)349 def assert_geometry_equals(a, b):350 inspector_a = scene_graph_a.model_inspector()351 body_a = plant_a.GetBodyFromFrameId(inspector_a.GetFrameId(a))352 assert body_a in checked_a.bodies353 geometry_a = inspector_a.CloneGeometryInstance(a)354 inspector_b = scene_graph_b.model_inspector()355 body_b = plant_b.GetBodyFromFrameId(inspector_b.GetFrameId(b))356 assert body_b in checked_b.bodies357 geometry_b = inspector_b.CloneGeometryInstance(b)358 assert geometry_a.name() == geometry_b.name(), (359 geometry_a.name(), geometry_b.name())360 assert_pose_equals(geometry_a.pose(), geometry_b.pose())361 assert_shape_equals(362 geometry_a.release_shape(), geometry_b.release_shape())363 prop_funcs = [364 GeometryInstance.perception_properties,365 GeometryInstance.proximity_properties,366 GeometryInstance.illustration_properties,367 ]368 for prop_func in prop_funcs:369 assert_properties_equals(370 prop_func(geometry_a), prop_func(geometry_b))371 def frame_map(frames):372 out = defaultdict(set)373 for frame in frames:374 # Some frames may not have a name :(375 key = (frame.body().name(), frame.name())376 out[key].add(frame)377 return out378 for a, b in strict_zip(elem_a.model_instances, elem_b.model_instances):379 assert a is not b380 assert a == b381 checked_a.model_instances.add(a)382 checked_b.model_instances.add(b)383 for body_a, body_b in strict_zip(elem_a.bodies, elem_b.bodies):384 assert_body_equals(body_a, body_b)385 # N.B. Because frame indices can be shifted when adding bodies, we cannot386 # trust this ordering. Instead, we need to find an identifier.387 frame_map_a = frame_map(elem_a.frames)388 frame_map_b = frame_map(elem_b.frames)389 assert len(frame_map_a) == len(frame_map_b)390 for key, frames_a in frame_map_a.items():391 frames_b = frame_map_b[key]392 for frame_a, frame_b in strict_zip(frames_a, frames_b):393 assert_frame_equals(frame_a, frame_b)394 for joint_a, joint_b in strict_zip(elem_a.joints, elem_b.joints):395 assert_joint_equals(joint_a, joint_b)396 cur_iter = strict_zip(elem_a.joint_actuators, elem_b.joint_actuators)397 for joint_actuator_a, joint_actuator_b in cur_iter:398 check_element(joint_actuator_a, joint_actuator_b)399 assert (400 joint_actuator_a.effort_limit() == joint_actuator_b.effort_limit())401 if scene_graph_b is not None:402 cur_iter = strict_zip(elem_a.geometry_ids, elem_b.geometry_ids)403 for geometry_id_a, geometry_id_b in cur_iter:...
Process_movies_argparse_tests.py
Source:Process_movies_argparse_tests.py
...123 with patch('sys.argv', testargs):124 obj = m()125 self.assertEqual('1_a_{}', obj.micrograph_name) 126 127 def test_frame_name(self):128 testargs = 'foo.py -filename 1_a_###.mrc'.split()129 with patch('sys.argv', testargs):130 obj = m()131 self.assertEqual('1_a_{}_frames_n{}', obj.frame_name)132 133class test_get_file_list(unittest.TestCase):134 135 def setUp(self):136 self.testfiles = ['1_a_001_frames_n{}.mrc'.format(str(i)) \137 for i in range (7)]138 self.tempdir = tempfile.mkdtemp()139 for i in self.testfiles:140 f= open(os.path.join(self.tempdir, i), 'w')141 ...
test_frames.py
Source:test_frames.py
...170 server.EMPTY_PAGE,171 )172 assert len(page.frames) == 2173 assert page.frames[1].url == server.EMPTY_PAGE174async def test_frame_name(page, server, utils):175 await utils.attach_frame(page, "theFrameId", server.EMPTY_PAGE)176 await page.evaluate(177 """url => {178 frame = document.createElement('iframe');179 frame.name = 'theFrameName';180 frame.src = url;181 document.body.appendChild(frame);182 return new Promise(x => frame.onload = x);183 }""",184 server.EMPTY_PAGE,185 )186 assert page.frames[0].name == ""187 assert page.frames[1].name == "theFrameId"188 assert page.frames[2].name == "theFrameName"...
frame_test.py
Source:frame_test.py
1#!/usr/bin/env python2# Copyright Contributors to the OpenCue Project3#4# Licensed under the Apache License, Version 2.0 (the "License");5# you may not use this file except in compliance with the License.6# You may obtain a copy of the License at7#8# http://www.apache.org/licenses/LICENSE-2.09#10# Unless required by applicable law or agreed to in writing, software11# distributed under the License is distributed on an "AS IS" BASIS,12# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.13# See the License for the specific language governing permissions and14# limitations under the License.15"""Tests for `opencue.wrappers.frame`."""16from __future__ import print_function17from __future__ import division18from __future__ import absolute_import19import time20import unittest21import mock22from opencue.compiled_proto import depend_pb223from opencue.compiled_proto import job_pb224import opencue.wrappers.frame25import opencue.wrappers.job26import opencue.wrappers.layer27TEST_FRAME_NAME = 'testFrame'28@mock.patch('opencue.cuebot.Cuebot.getStub')29class FrameTests(unittest.TestCase):30 def testEat(self, getStubMock):31 stubMock = mock.Mock()32 stubMock.Eat.return_value = job_pb2.FrameEatResponse()33 getStubMock.return_value = stubMock34 frame = opencue.wrappers.frame.Frame(35 job_pb2.Frame(name=TEST_FRAME_NAME, state=job_pb2.WAITING))36 frame.eat()37 stubMock.Eat.assert_called_with(38 job_pb2.FrameEatRequest(frame=frame.data), timeout=mock.ANY)39 def testKill(self, getStubMock):40 stubMock = mock.Mock()41 stubMock.Kill.return_value = job_pb2.FrameKillResponse()42 getStubMock.return_value = stubMock43 frame = opencue.wrappers.frame.Frame(44 job_pb2.Frame(name=TEST_FRAME_NAME, state=job_pb2.RUNNING))45 frame.kill()46 stubMock.Kill.assert_called_with(47 job_pb2.FrameKillRequest(frame=frame.data), timeout=mock.ANY)48 def testRetry(self, getStubMock):49 stubMock = mock.Mock()50 stubMock.Retry.return_value = job_pb2.FrameRetryResponse()51 getStubMock.return_value = stubMock52 frame = opencue.wrappers.frame.Frame(53 job_pb2.Frame(name=TEST_FRAME_NAME, state=job_pb2.RUNNING))54 frame.retry()55 stubMock.Retry.assert_called_with(56 job_pb2.FrameRetryRequest(frame=frame.data), timeout=mock.ANY)57 def testGetWhatDependsOnThis(self, getStubMock):58 dependId = 'ddd-dddd-ddd'59 stubMock = mock.Mock()60 stubMock.GetWhatDependsOnThis.return_value = job_pb2.FrameGetWhatDependsOnThisResponse(61 depends=depend_pb2.DependSeq(depends=[depend_pb2.Depend(id=dependId)]))62 getStubMock.return_value = stubMock63 frame = opencue.wrappers.frame.Frame(64 job_pb2.Frame(name=TEST_FRAME_NAME, state=job_pb2.RUNNING))65 depends = frame.getWhatDependsOnThis()66 stubMock.GetWhatDependsOnThis.assert_called_with(67 job_pb2.FrameGetWhatDependsOnThisRequest(frame=frame.data), timeout=mock.ANY)68 self.assertEqual(len(depends), 1)69 self.assertEqual(depends[0].id(), dependId)70 def testGetWhatThisDependsOn(self, getStubMock):71 dependId = 'ddd-dddd-ddd'72 stubMock = mock.Mock()73 stubMock.GetWhatThisDependsOn.return_value = job_pb2.FrameGetWhatThisDependsOnResponse(74 depends=depend_pb2.DependSeq(depends=[depend_pb2.Depend(id=dependId)]))75 getStubMock.return_value = stubMock76 frame = opencue.wrappers.frame.Frame(77 job_pb2.Frame(name=TEST_FRAME_NAME, state=job_pb2.RUNNING))78 depends = frame.getWhatThisDependsOn()79 stubMock.GetWhatThisDependsOn.assert_called_with(80 job_pb2.FrameGetWhatThisDependsOnRequest(frame=frame.data), timeout=mock.ANY)81 self.assertEqual(len(depends), 1)82 self.assertEqual(depends[0].id(), dependId)83 def testCreateDependencyOnFrame(self, getStubMock):84 dependId = 'ddd-dddd-ddd'85 stubMock = mock.Mock()86 stubMock.CreateDependencyOnFrame.return_value = \87 job_pb2.FrameCreateDependencyOnFrameResponse(depend=depend_pb2.Depend(id=dependId))88 getStubMock.return_value = stubMock89 dependFrameName = 'frameDependTest'90 frame = opencue.wrappers.frame.Frame(91 job_pb2.Frame(name=TEST_FRAME_NAME))92 dependOnFrame = opencue.wrappers.frame.Frame(93 job_pb2.Frame(name=dependFrameName))94 depend = frame.createDependencyOnFrame(dependOnFrame)95 stubMock.CreateDependencyOnFrame.assert_called_with(96 job_pb2.FrameCreateDependencyOnFrameRequest(frame=frame.data,97 depend_on_frame=dependOnFrame.data),98 timeout=mock.ANY)99 self.assertEqual(depend.id(), dependId)100 def testCreateDependencyOnJob(self, getStubMock):101 dependId = 'ddd-dddd-ddd'102 stubMock = mock.Mock()103 stubMock.CreateDependencyOnJob.return_value = \104 job_pb2.FrameCreateDependencyOnJobResponse(depend=depend_pb2.Depend(id=dependId))105 getStubMock.return_value = stubMock106 dependJobName = 'jobDependTest'107 frame = opencue.wrappers.frame.Frame(108 job_pb2.Frame(name=TEST_FRAME_NAME, state=job_pb2.RUNNING))109 dependOnJob = opencue.wrappers.job.Job(110 job_pb2.Job(name=dependJobName))111 depend = frame.createDependencyOnJob(dependOnJob)112 stubMock.CreateDependencyOnJob.assert_called_with(113 job_pb2.FrameCreateDependencyOnJobRequest(frame=frame.data, job=dependOnJob.data),114 timeout=mock.ANY)115 self.assertEqual(depend.id(), dependId)116 def testCreateDependencyOnLayer(self, getStubMock):117 dependId = 'ddd-dddd-ddd'118 stubMock = mock.Mock()119 stubMock.CreateDependencyOnLayer.return_value = \120 job_pb2.FrameCreateDependencyOnLayerResponse(depend=depend_pb2.Depend(id=dependId))121 getStubMock.return_value = stubMock122 dependLayerName = 'layerDependTest'123 frame = opencue.wrappers.frame.Frame(124 job_pb2.Frame(name=TEST_FRAME_NAME, state=job_pb2.RUNNING))125 dependOnLayer = opencue.wrappers.layer.Layer(126 job_pb2.Layer(name=dependLayerName))127 depend = frame.createDependencyOnLayer(dependOnLayer)128 stubMock.CreateDependencyOnLayer.assert_called_with(129 job_pb2.FrameCreateDependencyOnLayerRequest(frame=frame.data, layer=dependOnLayer.data),130 timeout=mock.ANY)131 self.assertEqual(depend.id(), dependId)132 def testMarkAsWaiting(self, getStubMock):133 stubMock = mock.Mock()134 stubMock.MarkAsWaiting.return_value = job_pb2.FrameMarkAsWaitingResponse()135 getStubMock.return_value = stubMock136 frame = opencue.wrappers.frame.Frame(137 job_pb2.Frame(name=TEST_FRAME_NAME, state=job_pb2.RUNNING))138 frame.markAsWaiting()139 stubMock.MarkAsWaiting.assert_called_with(140 job_pb2.FrameMarkAsWaitingRequest(frame=frame.data), timeout=mock.ANY)141 def testRunTimeZero(self, getStubMock):142 zeroFrame = opencue.wrappers.frame.Frame(143 job_pb2.Frame(name=TEST_FRAME_NAME, start_time=0, stop_time=1000))144 self.assertEqual(zeroFrame.runTime(), 0)145 def testRunTimeRunning(self, getStubMock):146 curTime = int(time.time())147 startTime = 100148 expected = curTime - startTime149 runningFrame = opencue.wrappers.frame.Frame(150 job_pb2.Frame(name=TEST_FRAME_NAME, start_time=startTime, stop_time=0))151 threshold = abs(runningFrame.runTime() - expected)152 self.assertTrue(threshold < 1)153 def testRunTimeDone(self, getStubMock):154 startTime = 100155 stopTime = 500156 expected = stopTime - startTime157 runningFrame = opencue.wrappers.frame.Frame(158 job_pb2.Frame(name=TEST_FRAME_NAME, start_time=startTime, stop_time=stopTime))159 self.assertEqual(runningFrame.runTime(), expected)160class FrameEnumTests(unittest.TestCase):161 def testCheckpointState(self):162 self.assertEqual(opencue.api.Frame.CheckpointState.DISABLED,163 opencue.compiled_proto.job_pb2.DISABLED)164 self.assertEqual(opencue.api.Frame.CheckpointState.DISABLED, 0)165 def testFrameExitStatus(self):166 self.assertEqual(opencue.api.Frame.FrameExitStatus.NO_RETRY,167 opencue.compiled_proto.job_pb2.NO_RETRY)168 self.assertEqual(opencue.api.Frame.FrameExitStatus.NO_RETRY, 256)169 def testFrameState(self):170 self.assertEqual(opencue.api.Frame.FrameState.RUNNING,171 opencue.compiled_proto.job_pb2.RUNNING)172 self.assertEqual(opencue.api.Frame.FrameState.RUNNING, 2)173if __name__ == '__main__':...
LambdaTest’s Playwright tutorial will give you a broader idea about the Playwright automation framework, its unique features, and use cases with examples to exceed your understanding of Playwright testing. This tutorial will give A to Z guidance, from installing the Playwright framework to some best practices and advanced concepts.
Get 100 minutes of automation test minutes FREE!!