Best Python code snippet using avocado_python
layout_optimizer_test.py
Source:layout_optimizer_test.py
...119 elems = (x1, x2, x3, x4)120 outputs = functional_ops.map_fn(121 _model_with_vec_and_4d, elems, dtype=dtypes.float32)122 return outputs123def _get_config(layout_optimizer=True):124 if layout_optimizer:125 rewrite_options = rewriter_config_pb2.RewriterConfig(126 layout_optimizer=rewriter_config_pb2.RewriterConfig.ON,127 # do not remove duplicated nodes128 arithmetic_optimization=rewriter_config_pb2.RewriterConfig.OFF)129 else:130 rewrite_options = rewriter_config_pb2.RewriterConfig(131 layout_optimizer=rewriter_config_pb2.RewriterConfig.OFF,132 # do not remove duplicated nodes133 arithmetic_optimization=rewriter_config_pb2.RewriterConfig.OFF)134 rewrite_options.min_graph_nodes = -1135 graph_options = config_pb2.GraphOptions(136 rewrite_options=rewrite_options, build_cost_model=1)137 config = config_pb2.ConfigProto(graph_options=graph_options)138 config.graph_options.optimizer_options.opt_level = -1139 return config140def _simple_metagraph(depthwise=False):141 random_seed.set_random_seed(0)142 x = variables.Variable(random_ops.truncated_normal([1, 200, 200, 3], seed=0))143 conv = conv_layers.separable_conv2d if depthwise else conv_layers.conv2d144 y = conv(x, 32, [3, 3])145 z = conv(y, 32, [3, 3])146 optimizer = gradient_descent.GradientDescentOptimizer(1e-4)147 loss = math_ops.reduce_mean(z)148 train_op = optimizer.minimize(loss)149 graph = ops.get_default_graph()150 graph.add_to_collection('train_op', train_op)151 meta_graph = saver_lib.export_meta_graph(graph_def=graph.as_graph_def())152 return meta_graph153def _get_cluster():154 named_device = device_properties_pb2.NamedDevice()155 named_device.name = '/GPU:0'156 named_device.properties.type = 'GPU'157 named_device.properties.num_cores = 24158 named_device.properties.frequency = 1000159 named_device.properties.environment['architecture'] = '4'160 cluster = gcluster.Cluster(devices=[named_device])161 return cluster162def _is_transpose(node):163 return node.endswith('TransposeNHWCToNCHW-LayoutOptimizer') or node.endswith(164 'TransposeNCHWToNHWC-LayoutOptimizer')165def _is_permute(node):166 return node.endswith('VecPermuteNHWCToNCHW-LayoutOptimizer') or node.endswith(167 'VecPermuteNCHWToNHWC-LayoutOptimizer')168class LayoutOptimizerTest(test.TestCase):169 """Tests the Grappler layout optimizer."""170 def _assert_trans_nchw_to_nhwc(self, name, nodes):171 self.assertIn(name + '-TransposeNCHWToNHWC-LayoutOptimizer', nodes)172 def _assert_trans_nhwc_to_nchw(self, name, nodes):173 self.assertIn(name + '-TransposeNHWCToNCHW-LayoutOptimizer', nodes)174 def _assert_map_nhwc_to_nchw(self, name, nodes):175 self.assertIn(name + '-DimMapNHWCToNCHW-LayoutOptimizer', nodes)176 def _assert_vec_nchw_to_nhwc(self, name, nodes):177 self.assertIn(name + '-VecPermuteNCHWToNHWC-LayoutOptimizer', nodes)178 def _assert_vec_nhwc_to_nchw(self, name, nodes):179 self.assertIn(name + '-VecPermuteNHWCToNCHW-LayoutOptimizer', nodes)180 def _train(self, checkpoint_path, layout_optimizer=False, restore=False):181 ops.reset_default_graph()182 graph = ops.get_default_graph()183 with session.Session(184 config=_get_config(layout_optimizer), graph=graph) as sess:185 batch = 2186 height = 6187 width = 7188 input_channels = 3189 shape = [batch, height, width, input_channels]190 image = array_ops.placeholder(dtype='float32', shape=shape)191 conv1 = conv_layers.conv2d(image, 32, [3, 3])192 conv2 = conv_layers.conv2d(conv1, 32, [3, 3])193 optimizer = gradient_descent.GradientDescentOptimizer(0.01)194 loss = math_ops.reduce_mean(conv2)195 train_op = optimizer.minimize(loss)196 saver = saver_lib.Saver(write_version=saver_pb2.SaverDef.V2)197 if restore:198 saver.restore(sess, checkpoint_path)199 else:200 sess.run(variables.global_variables_initializer())201 np.random.seed(0)202 for _ in range(2):203 image_val = np.random.rand(*shape).astype(np.float32)204 sess.run([loss, train_op], feed_dict={image: image_val})205 if restore:206 all_vars = ops.get_collection(ops.GraphKeys.GLOBAL_VARIABLES)207 all_vars_values = [var.eval(session=sess) for var in all_vars]208 return all_vars_values209 else:210 saver.save(sess, checkpoint_path)211 def testTwoConvLayers(self):212 if test.is_gpu_available(cuda_only=True):213 random_seed.set_random_seed(0)214 x = random_ops.truncated_normal([1, 784], seed=0)215 output = _two_layer_model(x)216 with session.Session(config=_get_config(False)) as sess:217 output_val_ref = sess.run(output)218 with session.Session(config=_get_config()) as sess:219 metadata = config_pb2.RunMetadata()220 output_val = sess.run(output, run_metadata=metadata)221 nodes = []222 num_transposes = 0223 for node in metadata.cost_graph.node:224 if _is_transpose(node.name):225 num_transposes += 1226 nodes.append(node.name)227 # Four transposes were initially added in the Expand phase of228 # LayoutOptimizer; two of them are cancelled out in the Collapse phase.229 expected_num_transposes = 2230 self.assertEqual(expected_num_transposes, num_transposes)231 self._assert_trans_nhwc_to_nchw('Conv2D-0', nodes)232 self._assert_trans_nchw_to_nhwc('Relu_1-0-0', nodes)233 self.assertAllClose(output_val_ref, output_val, atol=1e-3)234 def testSplitWithNonConstAxis(self):235 if test.is_gpu_available(cuda_only=True):236 random_seed.set_random_seed(0)237 x = random_ops.truncated_normal([1, 784], seed=0)238 conv = _two_layer_model(x)239 dim = array_ops.placeholder(dtype='int32')240 split = array_ops.split(conv, 2, axis=dim)241 scale = constant_op.constant(0.1, shape=[32])242 offset = constant_op.constant(0.3, shape=[32])243 bn0 = nn.fused_batch_norm(split[0], scale, offset)244 bn1 = nn.fused_batch_norm(split[1], scale, offset)245 add = bn0[0] + bn1[0]246 output = array_ops.identity(add)247 with session.Session(config=_get_config(False)) as sess:248 output_val_ref = sess.run(output, feed_dict={dim: 3})249 with session.Session(config=_get_config()) as sess:250 metadata = config_pb2.RunMetadata()251 output_val = sess.run(output, run_metadata=metadata, feed_dict={dim: 3})252 nodes = []253 num_transposes = 0254 for node in metadata.cost_graph.node:255 if _is_transpose(node.name):256 num_transposes += 1257 nodes.append(node.name)258 expected_num_transposes = 2259 self.assertEqual(expected_num_transposes, num_transposes)260 self._assert_trans_nhwc_to_nchw('Conv2D-0', nodes)261 self._assert_trans_nchw_to_nhwc('add_2-0-0', nodes)262 self._assert_map_nhwc_to_nchw('split-0', nodes)263 self.assertAllClose(output_val_ref, output_val, atol=1e-3)264 def testSplitVWithNonConstAxis(self):265 if test.is_gpu_available(cuda_only=True):266 random_seed.set_random_seed(0)267 x = random_ops.truncated_normal([1, 784], seed=0)268 conv = _two_layer_model(x)269 dim = array_ops.placeholder(dtype='int32')270 sizes = constant_op.constant([50, 10, 4], shape=[3])271 split = gen_array_ops.split_v(272 value=conv, size_splits=sizes, axis=dim, num_split=3)273 output = math_ops.reduce_sum(split[0])274 with session.Session(config=_get_config(False)) as sess:275 output_val_ref = sess.run(output, feed_dict={dim: 3})276 with session.Session(config=_get_config()) as sess:277 metadata = config_pb2.RunMetadata()278 output_val = sess.run(output, run_metadata=metadata, feed_dict={dim: 3})279 nodes = []280 num_transposes = 0281 for node in metadata.cost_graph.node:282 if _is_transpose(node.name):283 num_transposes += 1284 nodes.append(node.name)285 # Four transposes were initially added in the Expand phase of286 # LayoutOptimizer; two of them are cancelled out in the Collapse phase.287 expected_num_transposes = 2288 self.assertEqual(expected_num_transposes, num_transposes)289 self._assert_trans_nhwc_to_nchw('Conv2D-0', nodes)290 self._assert_trans_nchw_to_nhwc('SplitV-0-0', nodes)291 self._assert_map_nhwc_to_nchw('SplitV-2', nodes)292 self.assertAllClose(output_val_ref, output_val, atol=1e-3)293 def testPadWithConstPaddings(self):294 if test.is_gpu_available(cuda_only=True):295 random_seed.set_random_seed(0)296 x = random_ops.truncated_normal([1, 784], seed=0)297 conv = _two_layer_model(x)298 paddings_val = [[1, 2], [3, 4], [5, 6], [7, 8]]299 paddings = constant_op.constant(300 paddings_val, dtype='int32', name='PaddingsConst')301 pad = array_ops.pad(conv, paddings)302 output = array_ops.identity(pad)303 with session.Session(config=_get_config(False)) as sess:304 output_val_ref = sess.run(output)305 with session.Session(config=_get_config()) as sess:306 metadata = config_pb2.RunMetadata()307 output_val = sess.run(output, run_metadata=metadata)308 nodes = []309 num_transposes = 0310 for node in metadata.cost_graph.node:311 if _is_transpose(node.name):312 num_transposes += 1313 nodes.append(node.name)314 # Four transposes were initially added in the Expand phase of315 # LayoutOptimizer; two of them are cancelled out in the Collapse phase.316 expected_num_transposes = 2317 self.assertEqual(expected_num_transposes, num_transposes)318 self._assert_trans_nhwc_to_nchw('Conv2D-0', nodes)319 self._assert_trans_nchw_to_nhwc('Pad-0-0', nodes)320 self.assertIn('Pad-1-LayoutOptimizer', nodes)321 self.assertAllClose(output_val_ref, output_val, atol=1e-3)322 def testReduceSum(self):323 if test.is_gpu_available(cuda_only=True):324 random_seed.set_random_seed(0)325 x = random_ops.truncated_normal([1, 784], seed=0)326 conv = _two_layer_model(x)327 reduce_sum = math_ops.reduce_sum(conv)328 output = array_ops.identity(reduce_sum)329 with session.Session(config=_get_config(False)) as sess:330 output_val_ref = sess.run(output)331 with session.Session(config=_get_config()) as sess:332 metadata = config_pb2.RunMetadata()333 output_val = sess.run(output, run_metadata=metadata)334 nodes = []335 num_transposes = 0336 for node in metadata.cost_graph.node:337 if _is_transpose(node.name):338 num_transposes += 1339 nodes.append(node.name)340 # Three transposes were initially added in the Expand phase of341 # LayoutOptimizer; two of them are cancelled out in the Collapse phase.342 expected_num_transposes = 1343 self.assertEqual(expected_num_transposes, num_transposes)344 self._assert_trans_nhwc_to_nchw('Conv2D-0', nodes)345 self.assertAllClose(output_val_ref, output_val, atol=1e-3)346 def testCast(self):347 if test.is_gpu_available(cuda_only=True):348 random_seed.set_random_seed(0)349 x = random_ops.truncated_normal([1, 784], seed=0)350 conv = _two_layer_model(x)351 cast = math_ops.cast(conv, dtype='bool')352 output = array_ops.identity(cast)353 with session.Session(config=_get_config(False)) as sess:354 output_val_ref = sess.run(output)355 with session.Session(config=_get_config()) as sess:356 metadata = config_pb2.RunMetadata()357 output_val = sess.run(output, run_metadata=metadata)358 nodes = []359 num_transposes = 0360 for node in metadata.cost_graph.node:361 if _is_transpose(node.name):362 num_transposes += 1363 nodes.append(node.name)364 # Four transposes were initially added in the Expand phase of365 # LayoutOptimizer; two of them are cancelled out in the Collapse phase.366 expected_num_transposes = 2367 self.assertEqual(expected_num_transposes, num_transposes)368 self._assert_trans_nhwc_to_nchw('Conv2D-0', nodes)369 self._assert_trans_nchw_to_nhwc('Cast-0-0', nodes)370 self.assertAllClose(output_val_ref, output_val, atol=1e-3)371 def testSqueeze(self):372 if test.is_gpu_available(cuda_only=True):373 random_seed.set_random_seed(0)374 x = random_ops.truncated_normal([1, 784], seed=0)375 conv = _two_layer_model(x)376 reduce_sum = math_ops.reduce_sum(conv, axis=[1, 2])377 squeeze = array_ops.squeeze(reduce_sum)378 output = array_ops.identity(squeeze)379 with session.Session(config=_get_config(False)) as sess:380 output_val_ref = sess.run(output)381 with session.Session(config=_get_config()) as sess:382 metadata = config_pb2.RunMetadata()383 output_val = sess.run(output, run_metadata=metadata)384 nodes = []385 num_transposes = 0386 for node in metadata.cost_graph.node:387 if _is_transpose(node.name):388 num_transposes += 1389 nodes.append(node.name)390 # Three transposes were initially added in the Expand phase of391 # LayoutOptimizer; two of them are cancelled out in the Collapse phase.392 expected_num_transposes = 1393 self.assertEqual(expected_num_transposes, num_transposes)394 self._assert_trans_nhwc_to_nchw('Conv2D-0', nodes)395 self.assertAllClose(output_val_ref, output_val, atol=1e-3)396 def testSqueezeAlongHW(self):397 if test.is_gpu_available(cuda_only=True):398 random_seed.set_random_seed(0)399 x = random_ops.truncated_normal([1, 784], seed=0)400 conv = _two_layer_model(x)401 reduce_sum = math_ops.reduce_sum(conv, axis=[1, 2], keepdims=True)402 squeeze = array_ops.squeeze(reduce_sum, axis=[1, 2])403 output = array_ops.identity(squeeze)404 with session.Session(config=_get_config(False)) as sess:405 output_val_ref = sess.run(output)406 with session.Session(config=_get_config()) as sess:407 metadata = config_pb2.RunMetadata()408 output_val = sess.run(output, run_metadata=metadata)409 nodes = []410 num_transposes = 0411 for node in metadata.cost_graph.node:412 if _is_transpose(node.name):413 num_transposes += 1414 nodes.append(node.name)415 # Three transposes were initially added in the Expand phase of416 # LayoutOptimizer; two of them are cancelled out in the Collapse phase.417 expected_num_transposes = 1418 self.assertEqual(expected_num_transposes, num_transposes)419 self._assert_trans_nhwc_to_nchw('Conv2D-0', nodes)420 self.assertAllClose(output_val_ref, output_val, atol=1e-3)421 def testSqueezeAlongNHW(self):422 if test.is_gpu_available(cuda_only=True):423 random_seed.set_random_seed(0)424 x = random_ops.truncated_normal([1, 784], seed=0)425 conv = _two_layer_model(x)426 reduce_sum = math_ops.reduce_sum(conv, axis=[0, 1, 2], keepdims=True)427 squeeze = array_ops.squeeze(reduce_sum, axis=[0, 1, 2])428 output = array_ops.identity(squeeze)429 with session.Session(config=_get_config(False)) as sess:430 output_val_ref = sess.run(output)431 with session.Session(config=_get_config()) as sess:432 metadata = config_pb2.RunMetadata()433 output_val = sess.run(output, run_metadata=metadata)434 nodes = []435 num_transposes = 0436 for node in metadata.cost_graph.node:437 if _is_transpose(node.name):438 num_transposes += 1439 nodes.append(node.name)440 # Three transposes were initially added in the Expand phase of441 # LayoutOptimizer; two of them are cancelled out in the Collapse phase.442 expected_num_transposes = 1443 self.assertEqual(expected_num_transposes, num_transposes)444 self._assert_trans_nhwc_to_nchw('Conv2D-0', nodes)445 self.assertAllClose(output_val_ref, output_val, atol=1e-3)446 def testReduceSumAlongHWC(self):447 if test.is_gpu_available(cuda_only=True):448 random_seed.set_random_seed(0)449 x = random_ops.truncated_normal([1, 784], seed=0)450 conv = _two_layer_model(x)451 reduce_sum = math_ops.reduce_sum(conv, axis=[1, 2, 3])452 output = array_ops.identity(reduce_sum)453 with session.Session(config=_get_config(False)) as sess:454 output_val_ref = sess.run(output)455 with session.Session(config=_get_config()) as sess:456 metadata = config_pb2.RunMetadata()457 output_val = sess.run(output, run_metadata=metadata)458 nodes = []459 num_transposes = 0460 for node in metadata.cost_graph.node:461 if _is_transpose(node.name):462 num_transposes += 1463 nodes.append(node.name)464 # Three transposes were initially added in the Expand phase of465 # LayoutOptimizer; two of them are cancelled out in the Collapse phase.466 expected_num_transposes = 1467 self.assertEqual(expected_num_transposes, num_transposes)468 self._assert_trans_nhwc_to_nchw('Conv2D-0', nodes)469 self.assertAllClose(output_val_ref, output_val, atol=1e-3)470 def testReduceSumAlongNHW(self):471 if test.is_gpu_available(cuda_only=True):472 random_seed.set_random_seed(0)473 x = random_ops.truncated_normal([1, 784], seed=0)474 conv = _two_layer_model(x)475 reduce_sum = math_ops.reduce_sum(conv, axis=[0, 1, 2])476 output = array_ops.identity(reduce_sum)477 with session.Session(config=_get_config(False)) as sess:478 output_val_ref = sess.run(output)479 with session.Session(config=_get_config()) as sess:480 metadata = config_pb2.RunMetadata()481 output_val = sess.run(output, run_metadata=metadata)482 nodes = []483 num_transposes = 0484 for node in metadata.cost_graph.node:485 if _is_transpose(node.name):486 num_transposes += 1487 nodes.append(node.name)488 # Three transposes were initially added in the Expand phase of489 # LayoutOptimizer; two of them are cancelled out in the Collapse phase.490 expected_num_transposes = 1491 self.assertEqual(expected_num_transposes, num_transposes)492 self._assert_trans_nhwc_to_nchw('Conv2D-0', nodes)493 self.assertAllClose(output_val_ref, output_val, atol=1e-3)494 def testReduceSumAlongC(self):495 if test.is_gpu_available(cuda_only=True):496 random_seed.set_random_seed(0)497 x = random_ops.truncated_normal([1, 784], seed=0)498 conv = _two_layer_model(x)499 reduce_sum = math_ops.reduce_sum(conv, axis=[3])500 output = array_ops.identity(reduce_sum)501 with session.Session(config=_get_config(False)) as sess:502 output_val_ref = sess.run(output)503 with session.Session(config=_get_config()) as sess:504 metadata = config_pb2.RunMetadata()505 output_val = sess.run(output, run_metadata=metadata)506 nodes = []507 num_transposes = 0508 for node in metadata.cost_graph.node:509 if _is_transpose(node.name):510 num_transposes += 1511 nodes.append(node.name)512 # Three transposes were initially added in the Expand phase of513 # LayoutOptimizer; two of them are cancelled out in the Collapse phase.514 expected_num_transposes = 1515 self.assertEqual(expected_num_transposes, num_transposes)516 self._assert_trans_nhwc_to_nchw('Conv2D-0', nodes)517 self.assertAllClose(output_val_ref, output_val, atol=1e-3)518 def testReduceSumAlongCKeepDims(self):519 if test.is_gpu_available(cuda_only=True):520 random_seed.set_random_seed(0)521 x = random_ops.truncated_normal([1, 784], seed=0)522 conv = _two_layer_model(x)523 reduce_sum = math_ops.reduce_sum(conv, axis=[3], keepdims=True)524 output = array_ops.identity(reduce_sum)525 with session.Session(config=_get_config(False)) as sess:526 output_val_ref = sess.run(output)527 with session.Session(config=_get_config()) as sess:528 metadata = config_pb2.RunMetadata()529 output_val = sess.run(output, run_metadata=metadata)530 nodes = []531 num_transposes = 0532 for node in metadata.cost_graph.node:533 if _is_transpose(node.name):534 num_transposes += 1535 nodes.append(node.name)536 # Four transposes were initially added in the Expand phase of537 # LayoutOptimizer; two of them are cancelled out in the Collapse phase.538 expected_num_transposes = 2539 self.assertEqual(expected_num_transposes, num_transposes)540 self._assert_trans_nhwc_to_nchw('Conv2D-0', nodes)541 self._assert_trans_nchw_to_nhwc('Sum-0-0', nodes)542 self.assertAllClose(output_val_ref, output_val, atol=1e-3)543 def testReduceSumAlongHKeepDims(self):544 if test.is_gpu_available(cuda_only=True):545 random_seed.set_random_seed(0)546 x = random_ops.truncated_normal([1, 784], seed=0)547 conv = _two_layer_model(x)548 reduce_sum = math_ops.reduce_sum(conv, axis=[2], keepdims=True)549 output = array_ops.identity(reduce_sum)550 with session.Session(config=_get_config(False)) as sess:551 output_val_ref = sess.run(output)552 with session.Session(config=_get_config()) as sess:553 metadata = config_pb2.RunMetadata()554 output_val = sess.run(output, run_metadata=metadata)555 nodes = []556 num_transposes = 0557 for node in metadata.cost_graph.node:558 if _is_transpose(node.name):559 num_transposes += 1560 nodes.append(node.name)561 # Four transposes were initially added in the Expand phase of562 # LayoutOptimizer; two of them are cancelled out in the Collapse phase.563 expected_num_transposes = 2564 self.assertEqual(expected_num_transposes, num_transposes)565 self._assert_trans_nhwc_to_nchw('Conv2D-0', nodes)566 self.assertAllClose(output_val_ref, output_val, atol=1e-3)567 def testReduceSumAlongWCKeepDims(self):568 if test.is_gpu_available(cuda_only=True):569 random_seed.set_random_seed(0)570 x = random_ops.truncated_normal([1, 784], seed=0)571 conv = _two_layer_model(x)572 reduce_sum = math_ops.reduce_sum(conv, axis=[2, 3], keepdims=True)573 output = array_ops.identity(reduce_sum)574 with session.Session(config=_get_config(False)) as sess:575 output_val_ref = sess.run(output)576 with session.Session(config=_get_config()) as sess:577 metadata = config_pb2.RunMetadata()578 output_val = sess.run(output, run_metadata=metadata)579 nodes = []580 num_transposes = 0581 for node in metadata.cost_graph.node:582 if _is_transpose(node.name):583 num_transposes += 1584 nodes.append(node.name)585 # Four transposes were initially added in the Expand phase of586 # LayoutOptimizer; two of them are cancelled out in the Collapse phase.587 expected_num_transposes = 2588 self.assertEqual(expected_num_transposes, num_transposes)589 self._assert_trans_nhwc_to_nchw('Conv2D-0', nodes)590 self.assertAllClose(output_val_ref, output_val, atol=1e-3)591 def testConcatWithControlDependency(self):592 if test.is_gpu_available(cuda_only=True):593 random_seed.set_random_seed(0)594 x = random_ops.truncated_normal([1, 784], seed=0)595 conv = _two_layer_model(x)596 axis = constant_op.constant(3)597 var = variables.Variable(3)598 assign = state_ops.assign(var, 6)599 with ops.control_dependencies([assign]):600 concat = array_ops.concat([conv, conv], axis)601 output = array_ops.identity(concat)602 with session.Session(config=_get_config(False)) as sess:603 output_val_ref = sess.run(output)604 with session.Session(config=_get_config()) as sess:605 metadata = config_pb2.RunMetadata()606 output_val = sess.run(output, run_metadata=metadata)607 nodes = []608 num_transposes = 0609 for node in metadata.cost_graph.node:610 if _is_transpose(node.name):611 num_transposes += 1612 nodes.append(node.name)613 # Four transposes were initially added in the Expand phase of614 # LayoutOptimizer; two of them are cancelled out in the Collapse phase.615 expected_num_transposes = 2616 self.assertEqual(expected_num_transposes, num_transposes)617 self._assert_trans_nhwc_to_nchw('Conv2D-0', nodes)618 self._assert_trans_nchw_to_nhwc('concat-0-0', nodes)619 self.assertIn('concat-2-LayoutOptimizer', nodes)620 self.assertAllClose(output_val_ref, output_val, atol=1e-3)621 def testFill(self):622 if test.is_gpu_available(cuda_only=True):623 random_seed.set_random_seed(0)624 x = array_ops.placeholder(dtype='float32')625 conv = _two_layer_model(x)626 shape = array_ops.shape(conv)627 scalar = array_ops.constant(5.7)628 fill = array_ops.fill(shape, scalar)629 output = array_ops.identity(fill)630 x_val = [3.4] * 784631 with session.Session(config=_get_config(False)) as sess:632 output_val_ref = sess.run(output, feed_dict={x: x_val})633 with session.Session(config=_get_config()) as sess:634 metadata = config_pb2.RunMetadata()635 output_val = sess.run(636 output, run_metadata=metadata, feed_dict={637 x: x_val638 })639 nodes = []640 num_transposes = 0641 num_vec_permute = 0642 for node in metadata.cost_graph.node:643 if _is_transpose(node.name):644 num_transposes += 1645 if _is_permute(node.name):646 num_vec_permute += 1647 nodes.append(node.name)648 # Four transposes were initially added in the Expand phase of649 # LayoutOptimizer; two of them are cancelled out in the Collapse phase.650 expected_num_transposes = 2651 self.assertEqual(expected_num_transposes, num_transposes)652 # Two vector permute nodes were initially added in the Expand phase of653 # LayoutOptimizer; they cancelled out each other in the Collapse phase.654 expected_vec_permute = 0655 self.assertEqual(expected_vec_permute, num_vec_permute)656 self._assert_trans_nhwc_to_nchw('Conv2D-0', nodes)657 self._assert_trans_nchw_to_nhwc('Fill-0-0', nodes)658 self.assertAllClose(output_val_ref, output_val, atol=1e-3)659 def testTile(self):660 if test.is_gpu_available(cuda_only=True):661 random_seed.set_random_seed(0)662 x = random_ops.truncated_normal([1, 784], seed=0)663 conv = _two_layer_model(x)664 multiple = array_ops.placeholder(dtype='int32')665 tile = array_ops.tile(conv, multiple)666 output = array_ops.identity(tile)667 multiple_val = [2, 3, 4, 1]668 with session.Session(config=_get_config(False)) as sess:669 output_val_ref = sess.run(output, feed_dict={multiple: multiple_val})670 with session.Session(config=_get_config()) as sess:671 metadata = config_pb2.RunMetadata()672 output_val = sess.run(673 output, run_metadata=metadata, feed_dict={674 multiple: multiple_val675 })676 nodes = []677 num_transposes = 0678 for node in metadata.cost_graph.node:679 if _is_transpose(node.name):680 num_transposes += 1681 nodes.append(node.name)682 # Four transposes were initially added in the Expand phase of683 # LayoutOptimizer; two of them are cancelled out in the Collapse phase.684 expected_num_transposes = 2685 self.assertEqual(expected_num_transposes, num_transposes)686 self._assert_trans_nhwc_to_nchw('Conv2D-0', nodes)687 self._assert_trans_nchw_to_nhwc('Tile-0-0', nodes)688 self._assert_vec_nhwc_to_nchw('Tile-1', nodes)689 self.assertAllClose(output_val_ref, output_val, atol=1e-3)690 def testReverseWithConstDims(self):691 if test.is_gpu_available(cuda_only=True):692 random_seed.set_random_seed(0)693 x = random_ops.truncated_normal([1, 784], seed=0)694 conv = _two_layer_model(x)695 dims = constant_op.constant([3, 1], name='DimsConst')696 reverse = array_ops.reverse(conv, dims)697 output = array_ops.identity(reverse)698 with session.Session(config=_get_config(False)) as sess:699 output_val_ref = sess.run(output)700 with session.Session(config=_get_config()) as sess:701 metadata = config_pb2.RunMetadata()702 output_val = sess.run(output, run_metadata=metadata)703 nodes = []704 num_transposes = 0705 for node in metadata.cost_graph.node:706 if _is_transpose(node.name):707 num_transposes += 1708 nodes.append(node.name)709 # Four transposes were initially added in the Expand phase of710 # LayoutOptimizer; two of them are cancelled out in the Collapse phase.711 expected_num_transposes = 2712 self.assertEqual(expected_num_transposes, num_transposes)713 self._assert_trans_nhwc_to_nchw('Conv2D-0', nodes)714 self._assert_trans_nchw_to_nhwc('ReverseV2-0-0', nodes)715 self.assertIn('ReverseV2-1-LayoutOptimizer', nodes)716 self.assertAllClose(output_val_ref, output_val, atol=1e-3)717 def testReverseWithNonConstDims(self):718 if test.is_gpu_available(cuda_only=True):719 random_seed.set_random_seed(0)720 x = random_ops.truncated_normal([1, 784], seed=0)721 conv = _two_layer_model(x)722 dims = array_ops.placeholder(dtype='int32')723 reverse = array_ops.reverse(conv, dims)724 output = array_ops.identity(reverse)725 dims_val = [2, 3]726 with session.Session(config=_get_config(False)) as sess:727 output_val_ref = sess.run(output, feed_dict={dims: dims_val})728 with session.Session(config=_get_config()) as sess:729 metadata = config_pb2.RunMetadata()730 output_val = sess.run(731 output, run_metadata=metadata, feed_dict={732 dims: dims_val733 })734 nodes = []735 num_transposes = 0736 for node in metadata.cost_graph.node:737 if _is_transpose(node.name):738 num_transposes += 1739 nodes.append(node.name)740 # Four transposes were initially added in the Expand phase of741 # LayoutOptimizer; two of them are cancelled out in the Collapse phase.742 expected_num_transposes = 2743 self.assertEqual(expected_num_transposes, num_transposes)744 self._assert_trans_nhwc_to_nchw('Conv2D-0', nodes)745 self._assert_trans_nchw_to_nhwc('ReverseV2-0-0', nodes)746 self._assert_map_nhwc_to_nchw('ReverseV2-1', nodes)747 self.assertAllClose(output_val_ref, output_val, atol=1e-3)748 def testSelectOp(self):749 if test.is_gpu_available(cuda_only=True):750 random_seed.set_random_seed(0)751 x = random_ops.truncated_normal([1, 784], seed=0)752 conv = _two_layer_model(x)753 add = math_ops.add(conv, conv)754 mean = math_ops.reduce_mean(conv)755 condition = math_ops.less(conv, mean)756 select = gen_math_ops.select(condition, conv, add)757 output = array_ops.identity(select)758 with session.Session(config=_get_config(False)) as sess:759 output_val_ref = sess.run(output)760 with session.Session(config=_get_config()) as sess:761 metadata = config_pb2.RunMetadata()762 output_val = sess.run(output, run_metadata=metadata)763 nodes = []764 num_transposes = 0765 for node in metadata.cost_graph.node:766 if _is_transpose(node.name):767 num_transposes += 1768 nodes.append(node.name)769 expected_num_transposes = 2770 self.assertEqual(expected_num_transposes, num_transposes)771 self._assert_trans_nhwc_to_nchw('Conv2D-0', nodes)772 self._assert_trans_nchw_to_nhwc('Select-0-0', nodes)773 self.assertAllClose(output_val_ref, output_val, atol=1e-3)774 def testSelectOpConditionUnknownShape(self):775 if test.is_gpu_available(cuda_only=True):776 random_seed.set_random_seed(0)777 x = random_ops.truncated_normal([1, 784], seed=0)778 conv = _two_layer_model(x)779 add = math_ops.add(conv, conv)780 condition = array_ops.placeholder(dtype='bool')781 select = gen_math_ops.select(condition, conv, add)782 output = array_ops.identity(select)783 condition_val = np.zeros((1, 7, 7, 64))784 with session.Session(config=_get_config(False)) as sess:785 output_val_ref = sess.run(output, feed_dict={condition: condition_val})786 with session.Session(config=_get_config()) as sess:787 metadata = config_pb2.RunMetadata()788 output_val = sess.run(789 output, run_metadata=metadata, feed_dict={condition: condition_val})790 nodes = []791 num_transposes = 0792 for node in metadata.cost_graph.node:793 if _is_transpose(node.name):794 num_transposes += 1795 nodes.append(node.name)796 expected_num_transposes = 3797 self.assertEqual(expected_num_transposes, num_transposes)798 self._assert_trans_nhwc_to_nchw('Conv2D-0', nodes)799 self.assertAllClose(output_val_ref, output_val, atol=1e-3)800 def testSelectOpScalarCondition(self):801 if test.is_gpu_available(cuda_only=True):802 random_seed.set_random_seed(0)803 x = random_ops.truncated_normal([1, 784], seed=0)804 conv = _two_layer_model(x)805 add = math_ops.add(conv, conv)806 condition = constant_op.constant(True)807 select = gen_math_ops.select(condition, conv, add)808 output = array_ops.identity(select)809 with session.Session(config=_get_config(False)) as sess:810 output_val_ref = sess.run(output)811 with session.Session(config=_get_config()) as sess:812 metadata = config_pb2.RunMetadata()813 output_val = sess.run(output, run_metadata=metadata)814 nodes = []815 num_transposes = 0816 for node in metadata.cost_graph.node:817 if _is_transpose(node.name):818 num_transposes += 1819 nodes.append(node.name)820 expected_num_transposes = 2821 self.assertEqual(expected_num_transposes, num_transposes)822 self._assert_trans_nhwc_to_nchw('Conv2D-0', nodes)823 self._assert_trans_nchw_to_nhwc('Select-0-0', nodes)824 self.assertAllClose(output_val_ref, output_val, atol=1e-3)825 def testPadWithNonConstPaddings(self):826 if test.is_gpu_available(cuda_only=True):827 random_seed.set_random_seed(0)828 x = random_ops.truncated_normal([1, 784], seed=0)829 conv = _two_layer_model(x)830 paddings = array_ops.placeholder(dtype='int32')831 pad = array_ops.pad(conv, paddings)832 output = array_ops.identity(pad)833 paddings_val = [[1, 2], [3, 4], [5, 6], [7, 8]]834 with session.Session(config=_get_config(False)) as sess:835 output_val_ref = sess.run(output, feed_dict={paddings: paddings_val})836 with session.Session(config=_get_config()) as sess:837 metadata = config_pb2.RunMetadata()838 output_val = sess.run(839 output, run_metadata=metadata, feed_dict={840 paddings: paddings_val841 })842 nodes = []843 num_transposes = 0844 for node in metadata.cost_graph.node:845 if _is_transpose(node.name):846 num_transposes += 1847 nodes.append(node.name)848 # Four transposes were initially added in the Expand phase of849 # LayoutOptimizer; two of them are cancelled out in the Collapse phase.850 expected_num_transposes = 2851 self.assertEqual(expected_num_transposes, num_transposes)852 self._assert_trans_nhwc_to_nchw('Conv2D-0', nodes)853 self._assert_trans_nchw_to_nhwc('Pad-0-0', nodes)854 self._assert_vec_nhwc_to_nchw('Pad-1', nodes)855 self.assertAllClose(output_val_ref, output_val, atol=1e-3)856 def testMaxPoolV2(self):857 if test.is_gpu_available(cuda_only=True):858 random_seed.set_random_seed(0)859 x = random_ops.truncated_normal([1, 784], seed=0)860 conv = _two_layer_model(x)861 ksize = constant_op.constant([1, 2, 3, 1], shape=[4])862 strides = array_ops.placeholder(dtype='int32', shape=[4])863 max_pool = gen_nn_ops.max_pool_v2(conv, ksize, strides, 'VALID')864 output = array_ops.identity(max_pool)865 strides_val = [1, 3, 2, 1]866 with session.Session(config=_get_config(False)) as sess:867 output_val_ref = sess.run(output, feed_dict={strides: strides_val})868 with session.Session(config=_get_config()) as sess:869 metadata = config_pb2.RunMetadata()870 output_val = sess.run(871 output, run_metadata=metadata, feed_dict={872 strides: strides_val873 })874 nodes = []875 num_transposes = 0876 for node in metadata.cost_graph.node:877 if _is_transpose(node.name):878 num_transposes += 1879 nodes.append(node.name)880 expected_num_transposes = 2881 self.assertEqual(expected_num_transposes, num_transposes)882 self._assert_trans_nhwc_to_nchw('Conv2D-0', nodes)883 self._assert_trans_nchw_to_nhwc('MaxPoolV2-0-0', nodes)884 self._assert_vec_nhwc_to_nchw('MaxPoolV2-2', nodes)885 self.assertIn('MaxPoolV2-1-LayoutOptimizer', nodes)886 self.assertAllClose(output_val_ref, output_val, atol=1e-3)887 def testMaxPoolGradV2(self):888 if test.is_gpu_available(cuda_only=True):889 random_seed.set_random_seed(0)890 x = random_ops.truncated_normal([1, 784], seed=0)891 conv = _two_layer_model(x)892 ksize = constant_op.constant([1, 2, 3, 1], shape=[4])893 strides = array_ops.placeholder(dtype='int32', shape=[4])894 max_pool_grad = gen_nn_ops.max_pool_grad_v2(conv, conv, conv, ksize,895 strides, 'VALID')896 output = array_ops.identity(max_pool_grad)897 strides_val = [1, 3, 2, 1]898 with session.Session(config=_get_config(False)) as sess:899 output_val_ref = sess.run(output, feed_dict={strides: strides_val})900 with session.Session(config=_get_config()) as sess:901 metadata = config_pb2.RunMetadata()902 output_val = sess.run(903 output, run_metadata=metadata, feed_dict={904 strides: strides_val905 })906 nodes = []907 num_transposes = 0908 for node in metadata.cost_graph.node:909 if _is_transpose(node.name):910 num_transposes += 1911 nodes.append(node.name)912 expected_num_transposes = 2913 self.assertEqual(expected_num_transposes, num_transposes)914 self._assert_trans_nhwc_to_nchw('Conv2D-0', nodes)915 self._assert_trans_nchw_to_nhwc('MaxPoolGradV2-0-0', nodes)916 self._assert_vec_nhwc_to_nchw('MaxPoolGradV2-4', nodes)917 self.assertIn('MaxPoolGradV2-3-LayoutOptimizer', nodes)918 self.assertAllClose(output_val_ref, output_val, atol=1e-3)919 def testSliceWithNonConstAxis(self):920 if test.is_gpu_available(cuda_only=True):921 random_seed.set_random_seed(0)922 x = random_ops.truncated_normal([1, 784], seed=0)923 conv = _two_layer_model(x)924 size = array_ops.placeholder(dtype='int32')925 s = array_ops.slice(conv, [0, 0, 0, 0], size)926 output = array_ops.identity(s)927 size_val = [1, 2, 3, 4]928 with session.Session(config=_get_config(False)) as sess:929 output_val_ref = sess.run(output, feed_dict={size: size_val})930 with session.Session(config=_get_config()) as sess:931 metadata = config_pb2.RunMetadata()932 output_val = sess.run(933 output, run_metadata=metadata, feed_dict={934 size: size_val935 })936 nodes = []937 num_transposes = 0938 for node in metadata.cost_graph.node:939 if _is_transpose(node.name):940 num_transposes += 1941 nodes.append(node.name)942 # Four transposes were initially added in the Expand phase of943 # LayoutOptimizer; two of them are cancelled out in the Collapse phase.944 expected_num_transposes = 2945 self.assertEqual(expected_num_transposes, num_transposes)946 self._assert_trans_nhwc_to_nchw('Conv2D-0', nodes)947 self._assert_trans_nchw_to_nhwc('Slice-0-0', nodes)948 self._assert_vec_nhwc_to_nchw('Slice-2', nodes)949 self.assertAllClose(output_val_ref, output_val, atol=1e-3)950 def testStridedSliceWithNonConstAxis(self):951 if test.is_gpu_available(cuda_only=True):952 random_seed.set_random_seed(0)953 x = random_ops.truncated_normal([1, 784], seed=0)954 conv = _two_layer_model(x)955 end = array_ops.placeholder(dtype='int32')956 s = array_ops.strided_slice(conv, [0, 0, 0, 0], end, strides=[1, 2, 3, 1])957 output = array_ops.identity(s)958 end_val = [1, 2, 3, 4]959 with session.Session(config=_get_config(False)) as sess:960 output_val_ref = sess.run(output, feed_dict={end: end_val})961 with session.Session(config=_get_config()) as sess:962 metadata = config_pb2.RunMetadata()963 output_val = sess.run(964 output, run_metadata=metadata, feed_dict={965 end: end_val966 })967 nodes = []968 num_transposes = 0969 for node in metadata.cost_graph.node:970 if _is_transpose(node.name):971 num_transposes += 1972 nodes.append(node.name)973 # Four transposes were initially added in the Expand phase of974 # LayoutOptimizer; two of them are cancelled out in the Collapse phase.975 expected_num_transposes = 2976 self.assertEqual(expected_num_transposes, num_transposes)977 self._assert_trans_nhwc_to_nchw('Conv2D-0', nodes)978 self._assert_trans_nchw_to_nhwc('StridedSlice-0-0', nodes)979 self._assert_vec_nhwc_to_nchw('StridedSlice-2', nodes)980 self.assertIn('StridedSlice-1-LayoutOptimizer', nodes)981 self.assertIn('StridedSlice-3-LayoutOptimizer', nodes)982 self.assertAllClose(output_val_ref, output_val, atol=1e-3)983 def testStridedSliceWithMask1011(self):984 if test.is_gpu_available(cuda_only=True):985 random_seed.set_random_seed(0)986 x = random_ops.truncated_normal([1, 784], seed=0)987 conv = _two_layer_model(x)988 # This will generate a StridedSlice op with begin mask and989 # end mask 11(1011).990 s = conv[:, :, 1:-1, :]991 output = array_ops.identity(s)992 with session.Session(config=_get_config(False)) as sess:993 output_val_ref = sess.run(output)994 with session.Session(config=_get_config()) as sess:995 metadata = config_pb2.RunMetadata()996 output_val = sess.run(output, run_metadata=metadata)997 nodes = []998 num_transposes = 0999 for node in metadata.cost_graph.node:1000 if _is_transpose(node.name):1001 num_transposes += 11002 nodes.append(node.name)1003 # Four transposes were initially added in the Expand phase of1004 # LayoutOptimizer; two of them are cancelled out in the Collapse phase.1005 expected_num_transposes = 21006 self.assertEqual(expected_num_transposes, num_transposes)1007 self._assert_trans_nhwc_to_nchw('Conv2D-0', nodes)1008 self._assert_trans_nchw_to_nhwc('strided_slice-0-0', nodes)1009 self.assertIn('strided_slice-1-LayoutOptimizer', nodes)1010 self.assertIn('strided_slice-2-LayoutOptimizer', nodes)1011 self.assertIn('strided_slice-3-LayoutOptimizer', nodes)1012 self.assertAllClose(output_val_ref, output_val, atol=1e-3)1013 def testStridedSliceWithMask0111(self):1014 if test.is_gpu_available(cuda_only=True):1015 random_seed.set_random_seed(0)1016 x = random_ops.truncated_normal([1, 784], seed=0)1017 conv = _two_layer_model(x)1018 # This will generate a StridedSlice op with begin mask and1019 # end mask 7(0111).1020 s = conv[:, :, :, 1:-1]1021 output = array_ops.identity(s)1022 with session.Session(config=_get_config(False)) as sess:1023 output_val_ref = sess.run(output)1024 with session.Session(config=_get_config()) as sess:1025 metadata = config_pb2.RunMetadata()1026 output_val = sess.run(output, run_metadata=metadata)1027 nodes = []1028 num_transposes = 01029 for node in metadata.cost_graph.node:1030 if _is_transpose(node.name):1031 num_transposes += 11032 nodes.append(node.name)1033 # Four transposes were initially added in the Expand phase of1034 # LayoutOptimizer; two of them are cancelled out in the Collapse phase.1035 expected_num_transposes = 21036 self.assertEqual(expected_num_transposes, num_transposes)1037 self._assert_trans_nhwc_to_nchw('Conv2D-0', nodes)1038 self._assert_trans_nchw_to_nhwc('strided_slice-0-0', nodes)1039 self.assertIn('strided_slice-1-LayoutOptimizer', nodes)1040 self.assertIn('strided_slice-2-LayoutOptimizer', nodes)1041 self.assertIn('strided_slice-3-LayoutOptimizer', nodes)1042 self.assertAllClose(output_val_ref, output_val, atol=1e-3)1043 def testStridedSliceGradWithNonConstAxis(self):1044 if test.is_gpu_available(cuda_only=True):1045 random_seed.set_random_seed(0)1046 x = random_ops.truncated_normal([1, 784], seed=0)1047 conv = _two_layer_model(x)1048 end = array_ops.placeholder(dtype='int32')1049 shape = array_ops.shape(conv)1050 end_val = [1, 2, 3, 4]1051 s = array_ops.strided_slice(1052 conv, [0, 0, 0, 0], end_val, strides=[1, 2, 3, 1])1053 s_grad = array_ops.strided_slice_grad(shape, [0, 0, 0, 0], end,1054 [1, 2, 3, 1], s)1055 output = array_ops.identity(s_grad)1056 with session.Session(config=_get_config(False)) as sess:1057 output_val_ref = sess.run(output, feed_dict={end: end_val})1058 with session.Session(config=_get_config()) as sess:1059 metadata = config_pb2.RunMetadata()1060 output_val = sess.run(1061 output, run_metadata=metadata, feed_dict={1062 end: end_val1063 })1064 nodes = []1065 num_transposes = 01066 for node in metadata.cost_graph.node:1067 if _is_transpose(node.name):1068 num_transposes += 11069 nodes.append(node.name)1070 # Four transposes were initially added in the Expand phase of1071 # LayoutOptimizer; two of them are cancelled out in the Collapse phase.1072 expected_num_transposes = 21073 self.assertEqual(expected_num_transposes, num_transposes)1074 self._assert_trans_nhwc_to_nchw('Conv2D-0', nodes)1075 self._assert_trans_nchw_to_nhwc('StridedSliceGrad-0-0', nodes)1076 self._assert_vec_nhwc_to_nchw('StridedSliceGrad-2', nodes)1077 self.assertIn('StridedSlice-1-LayoutOptimizer', nodes)1078 self.assertIn('StridedSlice-2-LayoutOptimizer', nodes)1079 self.assertAllClose(output_val_ref, output_val, atol=1e-3)1080 def testShapeN(self):1081 if test.is_gpu_available(cuda_only=True):1082 x = array_ops.placeholder(dtype='float32')1083 conv = _two_layer_model(x)1084 shapen = array_ops.shape_n([conv, conv])1085 output = math_ops.add(shapen[0], shapen[1])1086 x_val = [1.7] * 7841087 with session.Session(config=_get_config(False)) as sess:1088 output_val_ref = sess.run(output, feed_dict={x: x_val})1089 with session.Session(config=_get_config()) as sess:1090 metadata = config_pb2.RunMetadata()1091 output_val = sess.run(1092 output, run_metadata=metadata, feed_dict={1093 x: x_val1094 })1095 nodes = []1096 num_transposes = 01097 for node in metadata.cost_graph.node:1098 if _is_transpose(node.name):1099 num_transposes += 11100 nodes.append(node.name)1101 expected_num_transposes = 11102 self.assertEqual(expected_num_transposes, num_transposes)1103 self._assert_trans_nhwc_to_nchw('Conv2D-0', nodes)1104 self._assert_vec_nchw_to_nhwc('ShapeN-0-0', nodes)1105 self.assertAllEqual(output_val_ref, output_val)1106 def testShapeNFollowedByNotConvertibleNodeReshape(self):1107 if test.is_gpu_available(cuda_only=True):1108 x = array_ops.placeholder(dtype='float32')1109 conv = _two_layer_model(x)1110 conv_reshape = array_ops.reshape(conv, [1, 1, 1, -1])1111 shapen = array_ops.shape_n([conv, conv_reshape])1112 shape = array_ops.identity(shapen[1])1113 ones = array_ops.ones(shape)1114 output = math_ops.add_n([conv_reshape, ones])1115 x_val = [1.7] * 7841116 with session.Session(config=_get_config(False)) as sess:1117 output_val_ref = sess.run(output, feed_dict={x: x_val})1118 with session.Session(config=_get_config()) as sess:1119 metadata = config_pb2.RunMetadata()1120 output_val = sess.run(1121 output, run_metadata=metadata, feed_dict={x: x_val})1122 nodes = []1123 num_transposes = 01124 for node in metadata.cost_graph.node:1125 if _is_transpose(node.name):1126 num_transposes += 11127 nodes.append(node.name)1128 expected_num_transposes = 21129 self.assertEqual(expected_num_transposes, num_transposes)1130 self._assert_trans_nhwc_to_nchw('Conv2D-0', nodes)1131 self.assertAllClose(output_val_ref, output_val, atol=1e-3)1132 def testLoop(self):1133 if test.is_gpu_available(cuda_only=True):1134 output = _loop()1135 with session.Session(config=_get_config(False)) as sess:1136 output_val_ref = sess.run(output)1137 with session.Session(config=_get_config()) as sess:1138 metadata = config_pb2.RunMetadata()1139 output_val = sess.run(output, run_metadata=metadata)1140 nodes = []1141 num_transposes = 01142 for node in metadata.cost_graph.node:1143 if _is_transpose(node.name):1144 num_transposes += 11145 nodes.append(node.name)1146 # Four transposes were initially added in the Expand phase of1147 # LayoutOptimizer; two of them are cancelled out in the Collapse phase.1148 expected_num_transposes = 21149 self.assertEqual(expected_num_transposes, num_transposes)1150 self.assertEqual(expected_num_transposes, num_transposes)1151 self._assert_trans_nhwc_to_nchw('map/while/Conv2D-0', nodes)1152 self._assert_trans_nchw_to_nhwc('map/while/MaxPool_1-0-2', nodes)1153 self.assertAllClose(output_val_ref, output_val, atol=1e-3)1154 def testLoopWithBranch(self):1155 if test.is_gpu_available(cuda_only=True):1156 output = _loop_with_branch()1157 with session.Session(config=_get_config(False)) as sess:1158 output_val_ref = sess.run(output)1159 with session.Session(config=_get_config()) as sess:1160 metadata = config_pb2.RunMetadata()1161 output_val = sess.run(output, run_metadata=metadata)1162 nodes = []1163 num_transposes = 01164 for node in metadata.cost_graph.node:1165 if _is_transpose(node.name):1166 num_transposes += 11167 nodes.append(node.name)1168 expected_num_transposes = 31169 self.assertEqual(expected_num_transposes, num_transposes)1170 self._assert_trans_nhwc_to_nchw('map/while/Conv2D-0', nodes)1171 self._assert_trans_nchw_to_nhwc('map/while/Add_1-0-2', nodes)1172 self.assertAllClose(output_val_ref, output_val, atol=1e-3)1173 def testLoopWithVecAnd4D(self):1174 if test.is_gpu_available(cuda_only=True):1175 output = _loop_with_vec_and_4d()1176 with session.Session(config=_get_config(False)) as sess:1177 output_val_ref = sess.run(output)1178 with session.Session(config=_get_config()) as sess:1179 metadata = config_pb2.RunMetadata()1180 output_val = sess.run(output, run_metadata=metadata)1181 nodes = []1182 num_transposes = 01183 for node in metadata.cost_graph.node:1184 if _is_transpose(node.name):1185 num_transposes += 11186 nodes.append(node.name)1187 expected_num_transposes = 21188 self.assertEqual(expected_num_transposes, num_transposes)1189 self._assert_trans_nhwc_to_nchw('map/while/Conv2D-0', nodes)1190 self._assert_trans_nchw_to_nhwc('map/while/Add_1-0-2', nodes)1191 self.assertAllClose(output_val_ref, output_val, atol=1e-3)1192 def testBinaryOpSecondPort(self):1193 if test.is_gpu_available(cuda_only=True):1194 output = _model_with_second_port()1195 with session.Session(config=_get_config(False)) as sess:1196 output_val_ref = sess.run(output)1197 with session.Session(config=_get_config()) as sess:1198 metadata = config_pb2.RunMetadata()1199 output_val = sess.run(output, run_metadata=metadata)1200 nodes = []1201 num_transposes = 01202 for node in metadata.cost_graph.node:1203 if _is_transpose(node.name):1204 num_transposes += 11205 nodes.append(node.name)1206 expected_num_transposes = 21207 self.assertEqual(expected_num_transposes, num_transposes)1208 self._assert_trans_nhwc_to_nchw('FusedBatchNorm-0', nodes)1209 self._assert_trans_nchw_to_nhwc('Add-0-0', nodes)1210 self.assertAllClose(output_val_ref, output_val, atol=1e-3)1211 def testGradient(self):...
config.py
Source:config.py
...43 config = MigrationConfig()44 else:45 raise KeyError(f"Unknown configuration '{config_name}'")46 return config47def _get_config(config_key: str, **kwargs):48 """Get the config from environment, and throw error if there are no default values and if the value is None."""49 if 'default' in kwargs:50 value = os.getenv(config_key, kwargs.get('default'))51 else:52 value = os.getenv(config_key)53 # assert value TODO Un-comment once we find a solution to run pre-hook without initializing app54 return value55class _Config(): # pylint: disable=too-few-public-methods56 """Base class configuration that should set reasonable defaults for all the other configurations."""57 PROJECT_ROOT = os.path.abspath(os.path.dirname(__file__))58 SECRET_KEY = 'a secret'59 SQLALCHEMY_TRACK_MODIFICATIONS = False60 ALEMBIC_INI = 'migrations/alembic.ini'61 # POSTGRESQL62 DB_USER = _get_config('DATABASE_USERNAME')63 DB_PASSWORD = _get_config('DATABASE_PASSWORD')64 DB_NAME = _get_config('DATABASE_NAME')65 DB_HOST = _get_config('DATABASE_HOST')66 DB_PORT = _get_config('DATABASE_PORT', default='5432')67 SQLALCHEMY_DATABASE_URI = f'postgresql://{DB_USER}:{DB_PASSWORD}@{DB_HOST}:{int(DB_PORT)}/{DB_NAME}'68 SQLALCHEMY_ECHO = _get_config('SQLALCHEMY_ECHO', default='False').lower() == 'true'69 # JWT_OIDC Settings70 JWT_OIDC_WELL_KNOWN_CONFIG = _get_config('JWT_OIDC_WELL_KNOWN_CONFIG')71 JWT_OIDC_ALGORITHMS = _get_config('JWT_OIDC_ALGORITHMS')72 JWT_OIDC_JWKS_URI = _get_config('JWT_OIDC_JWKS_URI', default=None)73 JWT_OIDC_ISSUER = _get_config('JWT_OIDC_ISSUER')74 JWT_OIDC_AUDIENCE = _get_config('JWT_OIDC_AUDIENCE')75 JWT_OIDC_CLIENT_SECRET = _get_config('JWT_OIDC_CLIENT_SECRET')76 JWT_OIDC_CACHING_ENABLED = _get_config('JWT_OIDC_CACHING_ENABLED', default=False)77 JWT_OIDC_JWKS_CACHE_TIMEOUT = int(_get_config('JWT_OIDC_JWKS_CACHE_TIMEOUT', default=300))78 # CFS API Settings79 CFS_BASE_URL = _get_config('CFS_BASE_URL')80 CFS_CLIENT_ID = _get_config('CFS_CLIENT_ID')81 CFS_CLIENT_SECRET = _get_config('CFS_CLIENT_SECRET')82 PAYBC_PORTAL_URL = _get_config('PAYBC_PORTAL_URL')83 CONNECT_TIMEOUT = int(_get_config('CONNECT_TIMEOUT', default=10))84 GENERATE_RANDOM_INVOICE_NUMBER = _get_config('CFS_GENERATE_RANDOM_INVOICE_NUMBER', default='False')85 CFS_ACCOUNT_DESCRIPTION = _get_config('CFS_ACCOUNT_DESCRIPTION', default='BCR')86 CFS_INVOICE_PREFIX = os.getenv('CFS_INVOICE_PREFIX', 'REG')87 CFS_RECEIPT_PREFIX = os.getenv('CFS_RECEIPT_PREFIX', 'RCPT')88 CFS_PARTY_PREFIX = os.getenv('CFS_PARTY_PREFIX', 'BCR-')89 # PAYBC Direct Pay Settings90 PAYBC_DIRECT_PAY_REF_NUMBER = _get_config('PAYBC_DIRECT_PAY_REF_NUMBER')91 PAYBC_DIRECT_PAY_API_KEY = _get_config('PAYBC_DIRECT_PAY_API_KEY')92 PAYBC_DIRECT_PAY_PORTAL_URL = _get_config('PAYBC_DIRECT_PAY_PORTAL_URL')93 PAYBC_DIRECT_PAY_BASE_URL = _get_config('PAYBC_DIRECT_PAY_BASE_URL')94 PAYBC_DIRECT_PAY_CLIENT_ID = _get_config('PAYBC_DIRECT_PAY_CLIENT_ID')95 PAYBC_DIRECT_PAY_CLIENT_SECRET = _get_config('PAYBC_DIRECT_PAY_CLIENT_SECRET')96 PAYBC_DIRECT_PAY_CC_REFUND_BASE_URL = _get_config('PAYBC_DIRECT_PAY_CC_REFUND_BASE_URL')97 # NATS Config98 NATS_SERVERS = _get_config('NATS_SERVERS', default='nats://127.0.0.1:4222').split(',')99 NATS_CLUSTER_ID = _get_config('NATS_CLUSTER_ID', default='test-cluster')100 NATS_PAYMENT_CLIENT_NAME = _get_config('NATS_PAYMENT_CLIENT_NAME', default='entity.filing.worker')101 NATS_PAYMENT_SUBJECT = _get_config('NATS_PAYMENT_SUBJECT', default='entity.{product}.payment')102 NATS_MAILER_CLIENT_NAME = _get_config('NATS_MAILER_CLIENT_NAME', default='account.mailer.worker')103 NATS_MAILER_SUBJECT = _get_config('NATS_MAILER_SUBJECT', default='account.mailer')104 NATS_ACCOUNT_CLIENT_NAME = os.getenv('NATS_ACCOUNT_CLIENT_NAME', 'account.events.worker')105 NATS_ACCOUNT_SUBJECT = os.getenv('NATS_ACCOUNT_SUBJECT', 'account.events')106 # Auth API Endpoint107 AUTH_API_ENDPOINT = f'{_get_config("AUTH_API_URL")}/'108 # REPORT API Settings109 REPORT_API_BASE_URL = f'{_get_config("REPORT_API_URL")}/reports'110 # BCOL Service111 BCOL_API_ENDPOINT = _get_config('BCOL_API_URL')112 # Sentry Config113 SENTRY_ENABLE = _get_config('SENTRY_ENABLE', default=False)114 SENTRY_DSN = _get_config('SENTRY_DSN', default=None)115 # Valid Payment redirect URLs116 VALID_REDIRECT_URLS = [(val.strip() if val != '' else None)117 for val in _get_config('VALID_REDIRECT_URLS', default='').split(',')]118 # Service account details119 KEYCLOAK_SERVICE_ACCOUNT_ID = _get_config('SBC_AUTH_ADMIN_CLIENT_ID')120 KEYCLOAK_SERVICE_ACCOUNT_SECRET = _get_config('SBC_AUTH_ADMIN_CLIENT_SECRET')121 # Default number of transactions to be returned for transaction reporting122 TRANSACTION_REPORT_DEFAULT_TOTAL = int(_get_config('TRANSACTION_REPORT_DEFAULT_TOTAL', default=50))123 # Default number of routing slips to be returned for routing slip search124 ROUTING_SLIP_DEFAULT_TOTAL = int(_get_config('ROUTING_SLIP_DEFAULT_TOTAL', default=50))125 PAD_CONFIRMATION_PERIOD_IN_DAYS = int(_get_config('PAD_CONFIRMATION_PERIOD_IN_DAYS', default=3))126 # legislative timezone for future effective dating127 LEGISLATIVE_TIMEZONE = os.getenv('LEGISLATIVE_TIMEZONE', 'America/Vancouver')128 # BCOL user name for Service account payments129 BCOL_USERNAME_FOR_SERVICE_ACCOUNT_PAYMENTS = os.getenv('BCOL_USERNAME_FOR_SERVICE_ACCOUNT_PAYMENTS',130 'BCROS SERVICE ACCOUNT')131 # The number of characters which can be exposed to admins for a bank account number132 MASK_LEN = int(_get_config('MASK_LEN', default=3))133 # Config value to disable activity logs134 DISABLE_ACTIVITY_LOGS = os.getenv('DISABLE_ACTIVITY_LOGS', 'False').lower() == 'true'135 # Secret key for encrypting bank account136 ACCOUNT_SECRET_KEY = os.getenv('ACCOUNT_SECRET_KEY')137 HOLIDAYS_LIST = os.getenv('HOLIDAYS_LIST')138 OUTSTANDING_TRANSACTION_DAYS = int(os.getenv('OUTSTANDING_TRANSACTION_DAYS', '10'))139 ALLOW_LEGACY_ROUTING_SLIPS = os.getenv('ALLOW_LEGACY_ROUTING_SLIPS', 'True').lower() == 'true'140 ENABLE_PAYBC_AUTOMATED_REFUNDS = os.getenv('ENABLE_PAYBC_AUTOMATED_REFUNDS', 'false').lower() == 'true'141 TESTING = False142 DEBUG = True143class DevConfig(_Config): # pylint: disable=too-few-public-methods144 """Dev config."""145 TESTING = False146 DEBUG = True147class TestConfig(_Config): # pylint: disable=too-few-public-methods148 """In support of testing only used by the py.test suite."""149 DEBUG = True150 TESTING = True151 USE_TEST_KEYCLOAK_DOCKER = _get_config('USE_TEST_KEYCLOAK_DOCKER', default=None)152 USE_DOCKER_MOCK = _get_config('USE_DOCKER_MOCK', default=None)153 # POSTGRESQL154 DB_USER = _get_config('DATABASE_TEST_USERNAME', default='postgres')155 DB_PASSWORD = _get_config('DATABASE_TEST_PASSWORD', default='postgres')156 DB_NAME = _get_config('DATABASE_TEST_NAME', default='paytestdb')157 DB_HOST = _get_config('DATABASE_TEST_HOST', default='localhost')158 DB_PORT = _get_config('DATABASE_TEST_PORT', default='5432')159 SQLALCHEMY_DATABASE_URI = _get_config(160 'DATABASE_TEST_URL',161 default=f'postgresql://{DB_USER}:{DB_PASSWORD}@{DB_HOST}:{int(DB_PORT)}/{DB_NAME}'162 )163 JWT_OIDC_TEST_MODE = True164 # JWT_OIDC_ISSUER = _get_config('JWT_OIDC_TEST_ISSUER')165 JWT_OIDC_TEST_AUDIENCE = _get_config('JWT_OIDC_TEST_AUDIENCE')166 JWT_OIDC_TEST_CLIENT_SECRET = _get_config('JWT_OIDC_TEST_CLIENT_SECRET')167 JWT_OIDC_TEST_ISSUER = _get_config('JWT_OIDC_TEST_ISSUER')168 JWT_OIDC_WELL_KNOWN_CONFIG = _get_config('JWT_OIDC_WELL_KNOWN_CONFIG')169 JWT_OIDC_TEST_ALGORITHMS = _get_config('JWT_OIDC_TEST_ALGORITHMS')170 JWT_OIDC_TEST_JWKS_URI = _get_config('JWT_OIDC_TEST_JWKS_URI', default=None)171 JWT_OIDC_TEST_KEYS = {172 'keys': [173 {174 'kid': 'sbc-auth-web',175 'kty': 'RSA',176 'alg': 'RS256',177 'use': 'sig',178 'n': 'AN-fWcpCyE5KPzHDjigLaSUVZI0uYrcGcc40InVtl-rQRDmAh-C2W8H4_Hxhr5VLc6crsJ2LiJTV_E72S03pzpOOaaYV6-'179 'TzAjCou2GYJIXev7f6Hh512PuG5wyxda_TlBSsI-gvphRTPsKCnPutrbiukCYrnPuWxX5_cES9eStR',180 'e': 'AQAB'181 }182 ]183 }184 JWT_OIDC_TEST_PRIVATE_KEY_JWKS = {185 'keys': [186 {187 'kid': 'sbc-auth-web',188 'kty': 'RSA',189 'alg': 'RS256',190 'use': 'sig',191 'n': 'AN-fWcpCyE5KPzHDjigLaSUVZI0uYrcGcc40InVtl-rQRDmAh-C2W8H4_Hxhr5VLc6crsJ2LiJTV_E72S03pzpOOaaYV6-'192 'TzAjCou2GYJIXev7f6Hh512PuG5wyxda_TlBSsI-gvphRTPsKCnPutrbiukCYrnPuWxX5_cES9eStR',193 'e': 'AQAB',194 'd': 'C0G3QGI6OQ6tvbCNYGCqq043YI_8MiBl7C5dqbGZmx1ewdJBhMNJPStuckhskURaDwk4-'195 '8VBW9SlvcfSJJrnZhgFMjOYSSsBtPGBIMIdM5eSKbenCCjO8Tg0BUh_'196 'xa3CHST1W4RQ5rFXadZ9AeNtaGcWj2acmXNO3DVETXAX3x0',197 'p': 'APXcusFMQNHjh6KVD_hOUIw87lvK13WkDEeeuqAydai9Ig9JKEAAfV94W6Aftka7tGgE7ulg1vo3eJoLWJ1zvKM',198 'q': 'AOjX3OnPJnk0ZFUQBwhduCweRi37I6DAdLTnhDvcPTrrNWuKPg9uGwHjzFCJgKd8KBaDQ0X1rZTZLTqi3peT43s',199 'dp': 'AN9kBoA5o6_Rl9zeqdsIdWFmv4DB5lEqlEnC7HlAP-3oo3jWFO9KQqArQL1V8w2D4aCd0uJULiC9pCP7aTHvBhc',200 'dq': 'ANtbSY6njfpPploQsF9sU26U0s7MsuLljM1E8uml8bVJE1mNsiu9MgpUvg39jEu9BtM2tDD7Y51AAIEmIQex1nM',201 'qi': 'XLE5O360x-MhsdFXx8Vwz4304-MJg-oGSJXCK_ZWYOB_FGXFRTfebxCsSYi0YwJo-oNu96bvZCuMplzRI1liZw'202 }203 ]204 }205 JWT_OIDC_TEST_PRIVATE_KEY_PEM = """-----BEGIN RSA PRIVATE KEY-----206MIICXQIBAAKBgQDfn1nKQshOSj8xw44oC2klFWSNLmK3BnHONCJ1bZfq0EQ5gIfg207tlvB+Px8Ya+VS3OnK7Cdi4iU1fxO9ktN6c6TjmmmFevk8wIwqLthmCSF3r+3+h4e208ddj7hucMsXWv05QUrCPoL6YUUz7Cgpz7ra24rpAmK5z7lsV+f3BEvXkrUQIDAQAB209AoGAC0G3QGI6OQ6tvbCNYGCqq043YI/8MiBl7C5dqbGZmx1ewdJBhMNJPStuckhs210kURaDwk4+8VBW9SlvcfSJJrnZhgFMjOYSSsBtPGBIMIdM5eSKbenCCjO8Tg0BUh/211xa3CHST1W4RQ5rFXadZ9AeNtaGcWj2acmXNO3DVETXAX3x0CQQD13LrBTEDR44ei212lQ/4TlCMPO5bytd1pAxHnrqgMnWovSIPSShAAH1feFugH7ZGu7RoBO7pYNb6N3ia213C1idc7yjAkEA6Nfc6c8meTRkVRAHCF24LB5GLfsjoMB0tOeEO9w9Ous1a4o+D24b214AePMUImAp3woFoNDRfWtlNktOqLel5PjewJBAN9kBoA5o6/Rl9zeqdsIdWFmv4DB2155lEqlEnC7HlAP+3oo3jWFO9KQqArQL1V8w2D4aCd0uJULiC9pCP7aTHvBhcCQQDb216W0mOp436T6ZaELBfbFNulNLOzLLi5YzNRPLppfG1SRNZjbIrvTIKVL4N/YxLvQbT217NrQw+2OdQACBJiEHsdZzAkBcsTk7frTH4yGx0VfHxXDPjfTj4wmD6gZIlcIr9lZg2184H8UZcVFN95vEKxJiLRjAmj6g273pu9kK4ymXNEjWWJn219-----END RSA PRIVATE KEY-----"""220 CFS_BASE_URL = 'http://localhost:8080/paybc-api'221 CFS_CLIENT_ID = 'TEST'222 CFS_CLIENT_SECRET = 'TEST'223 PAYBC_PORTAL_URL = 'https://paydev.gov.bc.ca/public/directpay'224 SERVER_NAME = 'auth-web.dev.com'225 REPORT_API_BASE_URL = 'http://localhost:8080/reports-api/api/v1/reports'226 AUTH_API_ENDPOINT = 'http://localhost:8080/auth-api/'227 NATS_SUBJECT = 'entity.filing.test'228 BCOL_API_ENDPOINT = 'http://localhost:8080/bcol-api'229 VALID_REDIRECT_URLS = ['http://localhost:8080/*']230 TRANSACTION_REPORT_DEFAULT_TOTAL = 10231 PAYBC_DIRECT_PAY_API_KEY = 'TESTKEYSECRET'232 PAYBC_DIRECT_PAY_REF_NUMBER = 'REF1234'233 PAYBC_DIRECT_PAY_PORTAL_URL = 'https://paydev.gov.bc.ca/public/directsale'234 PAYBC_DIRECT_PAY_BASE_URL = 'http://localhost:8080/paybc-api'235 PAYBC_DIRECT_PAY_CC_REFUND_BASE_URL = PAYBC_DIRECT_PAY_BASE_URL236 PAYBC_DIRECT_PAY_CLIENT_ID = 'TEST'237 PAYBC_DIRECT_PAY_CLIENT_SECRET = 'TEST'238 PAD_CONFIRMATION_PERIOD_IN_DAYS = 3239 # Secret key for encrypting bank account240 ACCOUNT_SECRET_KEY = 'mysecretkeyforbank'241 HOLIDAYS_LIST = os.getenv('HOLIDAYS_LIST', default='2021-Jan-01,2021-Feb-15,2021-Apr-02,2021-May-24,2021-Jul-1, '242 '2021-Jul-1, 2021-Aug-2, 2021-Sep-6,2021-Oct-11, 2021-Nov-11, '243 '2021-Dec-25')244class ProdConfig(_Config): # pylint: disable=too-few-public-methods245 """Production environment configuration."""246 SECRET_KEY = _get_config('SECRET_KEY', default=None)247 if not SECRET_KEY:248 SECRET_KEY = os.urandom(24)249 print('WARNING: SECRET_KEY being set as a one-shot', file=sys.stderr)250 TESTING = False251 DEBUG = False252class MigrationConfig(): # pylint: disable=too-few-public-methods253 """Config for db migration."""254 TESTING = False255 DEBUG = True256 # POSTGRESQL257 DB_USER = _get_config('DATABASE_USERNAME')258 DB_PASSWORD = _get_config('DATABASE_PASSWORD')259 DB_NAME = _get_config('DATABASE_NAME')260 DB_HOST = _get_config('DATABASE_HOST')261 DB_PORT = _get_config('DATABASE_PORT', default='5432')262 SQLALCHEMY_DATABASE_URI = f'postgresql://{DB_USER}:{DB_PASSWORD}@{DB_HOST}:{int(DB_PORT)}/{DB_NAME}'...
charge_api.py
Source:charge_api.py
...25 :return:26 """27 # æ ¼å¼åå¤ç请æ±çæ°æ®28 # URI29 req_uri = self._get_config(self.__config, "CREATE.URI")30 req_method = self._get_config(self.__config, "CREATE.METHOD")31 req_data = {32 self._get_config(self.__config, "CREATE.PARAM.APP"): data_dict.get("app"),33 self._get_config(self.__config, "CREATE.PARAM.ORDER_NO"): data_dict.get("order_no"),34 self._get_config(self.__config, "CREATE.PARAM.CHANNEL"): data_dict.get("channel"),35 self._get_config(self.__config, "CREATE.PARAM.AMOUNT"): data_dict.get("amount"),36 self._get_config(self.__config, "CREATE.PARAM.CLIENT_IP"): data_dict.get("client_ip"),37 self._get_config(self.__config, "CREATE.PARAM.CURRENCY"): data_dict.get("currency"),38 self._get_config(self.__config, "CREATE.PARAM.SUBJECT"): data_dict.get("subject"),39 self._get_config(self.__config, "CREATE.PARAM.BODY"): data_dict.get("body"),40 self._get_config(self.__config, "CREATE.PARAM.DESCRIPTION"): data_dict.get("description"),41 self._get_config(self.__config, "CREATE.PARAM.EXTRA"): data_dict.get("extra")42 }43 req_data = self._remove_none_param(req_data)44 # 认è¯45 req_auth = self.auth46 req_cookies = {}47 req_headers = self._get_headers_for_signature(uri=req_uri, request_body=req_data)48 # çæ£çå请æ±49 self._send(uri=req_uri,50 method=req_method,51 data_dict=req_data,52 auth=req_auth,53 cookies=req_cookies,54 headers=req_headers)55 # è¿åååºçç»æ56 resp_body_key_list = self._get_config(self.__config, "CREATE.RESP.DATA_KEY")57 return self._parse(body_key_list=resp_body_key_list)58 def view(self, charge_id: str):59 """60 çå®çè°ç¨ GET /v1/charges/{charge_id} æ¥å£61 :param charge_id:62 :return:63 """64 # æ ¼å¼åå¤ç请æ±çæ°æ®65 req_uri = self._get_config(self.__config, "VIEW.URI") % charge_id66 req_method = self._get_config(self.__config, "VIEW.METHOD")67 req_auth = self.auth68 req_cookies = {}69 req_headers = self._get_headers_for_signature(uri=req_uri)70 # çæ£çå请æ±71 self._send(uri=req_uri,72 method=req_method,73 auth=req_auth,74 cookies=req_cookies,75 headers=req_headers)76 resp_body_key_list = self._get_config(self.__config, "VIEW.RESP.DATA_KEY")77 return self._parse(body_key_list=resp_body_key_list)78 def query(self, data_dict: dict):79 """80 çå®çè°ç¨ GET /v1/charges/xxxx=xxxx æ¥å£81 :param data_dict:82 :return:83 """84 # æ ¼å¼åå¤ç请æ±çæ°æ®85 req_uri = self._get_config(self.__config, "VIEW.URI")86 req_method = self._get_config(self.__config, "VIEW.METHOD")87 req_data = {88 self._get_config(self.__config, "CREATE.PARAM.APP.get(id)"): data_dict.get("app"),89 self._get_config(self.__config, "CREATE.PARAM.LIMIT"): data_dict.get("limit"),90 self._get_config(self.__config, "CREATE.PARAM.CHANNEL"): data_dict.get("channel"),91 self._get_config(self.__config, "CREATE.PARAM.REFUNDED"): data_dict.get("refunded"),92 self._get_config(self.__config, "CREATE.PARAM.REVERSED"): data_dict.get("reversed"),93 self._get_config(self.__config, "CREATE.PARAM.PAID"): data_dict.get("paid"),94 self._get_config(self.__config, "CREATE.PARAM.CREATED_GT"): data_dict.get("created_gt"),95 self._get_config(self.__config, "CREATE.PARAM.CREATED_LT"): data_dict.get("created_lt"),96 self._get_config(self.__config, "CREATE.PARAM.CREATED_GTE"): data_dict.get("created_gte"),97 self._get_config(self.__config, "CREATE.PARAM.CREATED_LTE"): data_dict.get("created_lte")98 }99 req_data = self._remove_none_param(req_data)100 req_uri = encode_url(url=req_uri, params=req_data)101 req_auth = self.auth102 req_cookies = {}103 req_headers = self._get_headers_for_signature(uri=req_uri)104 # çæ£çå请æ±105 self._send(uri=req_uri,106 method=req_method,107 auth=req_auth,108 cookies=req_cookies,109 headers=req_headers)110 resp_body_key_list = self._get_config(self.__config, "VIEW.RESP.DATA_KEY")111 return self._parse(body_key_list=resp_body_key_list)112 def reverse(self, charge_id):113 """114 çå®çè°ç¨ POST .v1.charges.{charge_id}.reverse æ¥å£115 :param charge_id:116 :return:117 """118 # æ ¼å¼åå¤ç请æ±çæ°æ®119 # URI120 # æ ¼å¼åå¤ç请æ±çæ°æ®121 req_uri = self._get_config(self.__config, "REVERSE.URI") % charge_id122 req_method = self._get_config(self.__config, "REVERSE.METHOD")123 req_auth = self.auth124 req_cookies = {}125 req_headers = self._get_headers_for_signature(uri=req_uri)126 # çæ£çå请æ±127 self._send(uri=req_uri,128 method=req_method,129 auth=req_auth,130 cookies=req_cookies,131 headers=req_headers)132 resp_body_key_list = self._get_config(self.__config, "REVERSE.RESP.DATA_KEY")...
configuration.py
Source:configuration.py
...22 except:23 print("error configparser ")24 return p25 return None26def _get_config(p, section, key, env_var, default):27 ''' helper function for get_config '''28 if env_var is not None:29 value = os.environ.get(env_var, None)30 if value is not None:31 return value32 if p is not None:33 try:34 return p.get(section, key, raw=True)35 except:36 return default37 return default38p = load_config_file()39# SAAS_HOST = _get_config(p, "cloudenv", 'saas_host', "SAAS_HOST", "172.16.2.125") #æµè¯ç¯å¢40SAAS_HOST = _get_config(p, "cloudenv", 'saas_host', "SAAS_HOST", "docker-mgt.haima.me") #å¼åç¯å¢41#SAAS_HOST = _get_config(p, "cloudenv", 'saas_host', "SAAS_HOST", "172.16.2.100") #demo42#SAAS_HOST = _get_config(p, "cloudenv", 'saas_host', "SAAS_HOST", "172.16.2.169") #æ¯ä»43#SAAS_HOST = _get_config(p, "cloudenv", 'saas_host', "SAAS_HOST", "saasauth-migu# .haimawan.com") #teng saas44#SAAS_HOST = "saasAuth-pre.haimawan.com"45# SAAS_PORT = _get_config(p, "cloudenv", 'saas_port', "SAAS_PORT", "8010")46SAAS_PORT = _get_config(p, "cloudenv", 'saas_port', "SAAS_PORT", "8070")47DB_HOST = _get_config(p, "cloudenv", 'db_host', "DB_HOST", "docker-mgt.haima.me") #å¼åç¯å¢48DB_PORT = _get_config(p, "cloudenv", 'db_port', "DB_PORT", 3306)49DB_USER = _get_config(p, "cloudenv", 'db_user', "DB_USER", "admin")50DB_PASSWD = _get_config(p, "cloudenv", 'db_passwd', "DB_PASSWD", "123qwe")51TENANT_DB = _get_config(p, "cloudenv", 'tenant_db', "TENANT_DB", 'db_tenant_mgt')52CORE_DB = _get_config(p, "cloudenv", 'tenant_db', "CORE_DB", 'db_service_core')53MC_DB = _get_config(p, "cloudenv", 'msg_center_db', "MC_DB", 'db_msg_center')54#55# AMQP_USER = _get_config(p, 'cloudenv', 'amqp_user', "AMQP_USER", "admin")56# AMQP_PASSWD = _get_config(p, 'cloudenv', 'amqp_passwd', "AMQP_PASSWD", "admin")57# AMQP_HOST = _get_config(p, 'cloudenv', 'amqp_host', "AMQP_HOST", "docker-mgt.haima.me")58# AMQP_PORT = _get_config(p, 'cloudenv', 'amqp_port', "AMQP_PORT", 5672)59# VIRTUAL_HOST = _get_config(p, 'cloudenv', 'virtual_host', "VIRTUAL_HOST", "/")60AMQP_USER = _get_config(p, 'cloudenv', 'amqp_user', "AMQP_USER", "admin")61AMQP_PASSWD = _get_config(p, 'cloudenv', 'amqp_passwd', "AMQP_PASSWD", "HaimaRabbBit81")62AMQP_HOST = _get_config(p, 'cloudenv', 'amqp_host', "AMQP_HOST", "service-core.stable.haima001.com")63AMQP_PORT = _get_config(p, 'cloudenv', 'amqp_port', "AMQP_PORT", 5672)64VIRTUAL_HOST = _get_config(p, 'cloudenv', 'virtual_host', "VIRTUAL_HOST", "fc")65REDIS_HOST = _get_config(p, 'cloudenv', 'redis_host', "REDIS_HOST", "123.206.46.217")66# REDIS_HOST = _get_config(p, 'cloudenv', 'redis_host', "REDIS_HOST", "docker-mgt.haima.me")67REDIS_PORT = _get_config(p, 'cloudenv', 'redis_port', "REDIS_PORT", 6379)68REDIS_DB = _get_config(p, 'cloudenv', 'redis_db', "REDIS_DB", 0)69# REDIS_DB = _get_config(p, 'cloudenv', 'redis_db', "REDIS_DB", 0)70REDIS_PASSWD = _get_config(p, 'cloudenv', 'redis_passwd', "REDIS_PASSWD", "redispass")71# REDIS_PASSWD = _get_config(p, 'cloudenv', 'redis_passwd', "REDIS_PASSWD", "123qwe")72MONGO_HOST = _get_config(p, 'cloudenv', 'redis_host', "REDIS_HOST", "172.16.2.16")73MONGO_PORT = _get_config(p, 'cloudenv', 'redis_port', "REDIS_PORT", 27017)74CONFIG_DB = _get_config(p, 'cloudenv', 'config_db', "CONFIG_DB", 'db_tenant_test')75MONGO_USER = _get_config(p, 'cloudenv', 'mongo_user', "MONGO_USER", "admin")76MONGO_PASSWORD = _get_config(p, 'cloudenv', 'mongo_password', "MONGO_PASSWORD", "123qwe")77USE_CTOKEN_BACKDOOR = _get_config(p, 'cloudenv', 'use_ctoken_backdoor', "USE_CTOKEN_BACKDOOR", 1)78PROTOCOL_VERSION = _get_config(p, 'cloudenv', 'protocol_version', "PROTOCOL_VERSION", "1.1")79MOCK_SERVER = _get_config(p, "cloudenv", 'mock_server', "MOCK_SERVER", "127.0.0.1")80MOCK_PORT = _get_config(p, "cloudenv", 'mock_port', "MOCK_PORT", "8080")81SECRET_KEY = _get_config(p, 'cloudenv', 'secret_key', 'SECRET_KEY', 'and0123456789012')...
Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!