MCPcopy Create free account
hub / github.com/DeepRec-AI/DeepRec / TEST_F

Function TEST_F

tensorflow/core/grappler/graph_analyzer/sig_node_test.cc:135–229  ·  view source on GitHub ↗

Tests that the duplicate hashes get resolved by rehashing.

Source from the content-addressed store, hash-verified

133
134// Tests that the duplicate hashes get resolved by rehashing.
135TEST_F(SigNodeTest, DuplicateHash) {
136 NodeDef node1 = MakeNodeConst("node1");
137 NodeDef node2 = MakeNodeConst("node2");
138 NodeDef node3 = MakeNodeShapeN("node3", "node1", "node2");
139
140 SigNode sn1(&node1);
141 SigNode sn2(&node2);
142 SigNode sn3(&node3);
143
144 constexpr size_t kSameHash = 999;
145
146 SigNode::Link link1;
147 link1.tag = SigNode::LinkTag(GenNode::Port(true, 0), GenNode::Port(false, 0));
148 link1.unique_hash = kSameHash;
149 link1.peers.emplace_back(&sn1);
150
151 SigNode::Link link2;
152 link2.tag = SigNode::LinkTag(GenNode::Port(true, 1), GenNode::Port(false, 0));
153 link2.unique_hash = kSameHash;
154 link2.peers.emplace_back(&sn2);
155
156 SigNode::Link link3;
157 link3.tag = SigNode::LinkTag(GenNode::Port(true, 2), GenNode::Port(false, 0));
158 link3.unique_hash = kSameHash;
159 link3.peers.emplace_back(&sn3);
160
161 std::map<SigNode::LinkTag, SigNode::Link> link_map;
162 link_map[link1.tag] = link1;
163 link_map[link2.tag] = link2;
164 link_map[link3.tag] = link3;
165
166 CopyLinksPass2(&link_map, &sn3);
167 auto& hl = sn3.hash_to_link();
168 EXPECT_THAT(hl, SizeIs(3));
169
170 // Check that the hashes are self_consistent, and put the entries into
171 // another map with a known order.
172 std::map<SigNode::LinkTag, SigNode::Link> rehashed;
173 auto hlit = hl.begin();
174 ASSERT_THAT(hlit, Ne(hl.end()));
175 EXPECT_THAT(hlit->second.unique_hash, Eq(hlit->first));
176 rehashed[hlit->second.tag] = hlit->second;
177 ++hlit;
178 ASSERT_THAT(hlit, Ne(hl.end()));
179 EXPECT_THAT(hlit->second.unique_hash, Eq(hlit->first));
180 rehashed[hlit->second.tag] = hlit->second;
181 ++hlit;
182 ASSERT_THAT(hlit, Ne(hl.end()));
183 EXPECT_THAT(hlit->second.unique_hash, Eq(hlit->first));
184 rehashed[hlit->second.tag] = hlit->second;
185
186 // Just in case.
187 ASSERT_THAT(rehashed, SizeIs(3));
188
189 auto rhit = rehashed.begin();
190 ASSERT_THAT(rhit, Ne(rehashed.end()));
191 EXPECT_TRUE(rhit->second.tag == link1.tag);
192 EXPECT_THAT(rhit->second.unique_hash, Eq(kSameHash));

Callers

nothing calls this directly

Calls 15

MakeNodeConstFunction · 0.85
MakeNodeShapeNFunction · 0.85
LinkTagClass · 0.85
CombineHashFunction · 0.85
HashedPeerClass · 0.85
hash<string>Class · 0.85
CombineHashCommutativeFunction · 0.85
MakeNodeMulFunction · 0.85
sortFunction · 0.85
opcodeMethod · 0.80
set_opMethod · 0.80
ExtractForSignatureMethod · 0.80

Tested by

no test coverage detected