| 97 | }; |
| 98 | |
| 99 | TEST_F(CompilabilityCheckUtilTest, CheckNonFunctionalNodes) { |
| 100 | GraphDefBuilder builder(GraphDefBuilder::kFailImmediately); |
| 101 | auto opts = builder.opts(); |
| 102 | Node* const0 = ops::SourceOp("InputFloatOp", opts); |
| 103 | Node* compilable_op = ops::UnaryOp("CompilableOp", const0, opts); |
| 104 | Node* uncompilable_op = ops::UnaryOp("MissingKernel", compilable_op, opts); |
| 105 | GraphDef graph_def; |
| 106 | TF_EXPECT_OK(builder.ToGraphDef(&graph_def)); |
| 107 | |
| 108 | auto* flib_runtime = GetFunctionLibraryRuntime(); |
| 109 | // Source node is not compilable. |
| 110 | EXPECT_FALSE(checker_->IsCompilableNode(*const0, flib_runtime)); |
| 111 | |
| 112 | EXPECT_TRUE(checker_->IsCompilableNode(*compilable_op, flib_runtime)); |
| 113 | |
| 114 | // Uncompilable as we are only checking compilability in CPU device type. |
| 115 | EXPECT_FALSE(checker_->IsCompilableNode(*uncompilable_op, flib_runtime)); |
| 116 | |
| 117 | const auto uncompilable_nodes = |
| 118 | checker_->FindUncompilableNodes(*uncompilable_op, flib_runtime); |
| 119 | ASSERT_EQ(1, uncompilable_nodes.size()); |
| 120 | const auto& node_info = uncompilable_nodes.at(0); |
| 121 | EXPECT_EQ("unsupported op", node_info.uncompilable_reason); |
| 122 | ASSERT_EQ(1, node_info.stack_trace.size()); |
| 123 | ASSERT_EQ("", node_info.stack_trace.at(0).function_name); |
| 124 | } |
| 125 | |
| 126 | TEST_F(CompilabilityCheckUtilTest, CheckSimpleFunctionNode) { |
| 127 | FunctionDefLibrary flib; |
nothing calls this directly
no test coverage detected