11a5baaabcdd79997508c91f1d8b1cf8547c9d1cfRichard Uhler/* 21a5baaabcdd79997508c91f1d8b1cf8547c9d1cfRichard Uhler * Copyright (C) 2016 The Android Open Source Project 31a5baaabcdd79997508c91f1d8b1cf8547c9d1cfRichard Uhler * 41a5baaabcdd79997508c91f1d8b1cf8547c9d1cfRichard Uhler * Licensed under the Apache License, Version 2.0 (the "License"); 51a5baaabcdd79997508c91f1d8b1cf8547c9d1cfRichard Uhler * you may not use this file except in compliance with the License. 61a5baaabcdd79997508c91f1d8b1cf8547c9d1cfRichard Uhler * You may obtain a copy of the License at 71a5baaabcdd79997508c91f1d8b1cf8547c9d1cfRichard Uhler * 81a5baaabcdd79997508c91f1d8b1cf8547c9d1cfRichard Uhler * http://www.apache.org/licenses/LICENSE-2.0 91a5baaabcdd79997508c91f1d8b1cf8547c9d1cfRichard Uhler * 101a5baaabcdd79997508c91f1d8b1cf8547c9d1cfRichard Uhler * Unless required by applicable law or agreed to in writing, software 111a5baaabcdd79997508c91f1d8b1cf8547c9d1cfRichard Uhler * distributed under the License is distributed on an "AS IS" BASIS, 121a5baaabcdd79997508c91f1d8b1cf8547c9d1cfRichard Uhler * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 131a5baaabcdd79997508c91f1d8b1cf8547c9d1cfRichard Uhler * See the License for the specific language governing permissions and 141a5baaabcdd79997508c91f1d8b1cf8547c9d1cfRichard Uhler * limitations under the License. 151a5baaabcdd79997508c91f1d8b1cf8547c9d1cfRichard Uhler */ 161a5baaabcdd79997508c91f1d8b1cf8547c9d1cfRichard Uhler 171a5baaabcdd79997508c91f1d8b1cf8547c9d1cfRichard Uhlerpackage com.android.ahat; 181a5baaabcdd79997508c91f1d8b1cf8547c9d1cfRichard Uhler 191a5baaabcdd79997508c91f1d8b1cf8547c9d1cfRichard Uhlerimport com.android.tools.perflib.heap.Instance; 201a5baaabcdd79997508c91f1d8b1cf8547c9d1cfRichard Uhlerimport java.io.IOException; 211a5baaabcdd79997508c91f1d8b1cf8547c9d1cfRichard Uhlerimport static org.junit.Assert.fail; 221a5baaabcdd79997508c91f1d8b1cf8547c9d1cfRichard Uhlerimport static org.junit.Assert.assertEquals; 231a5baaabcdd79997508c91f1d8b1cf8547c9d1cfRichard Uhlerimport org.junit.Test; 241a5baaabcdd79997508c91f1d8b1cf8547c9d1cfRichard Uhler 251a5baaabcdd79997508c91f1d8b1cf8547c9d1cfRichard Uhlerpublic class NativeAllocationTest { 261a5baaabcdd79997508c91f1d8b1cf8547c9d1cfRichard Uhler 271a5baaabcdd79997508c91f1d8b1cf8547c9d1cfRichard Uhler @Test 281a5baaabcdd79997508c91f1d8b1cf8547c9d1cfRichard Uhler public void nativeAllocation() throws IOException { 291a5baaabcdd79997508c91f1d8b1cf8547c9d1cfRichard Uhler TestDump dump = TestDump.getTestDump(); 301a5baaabcdd79997508c91f1d8b1cf8547c9d1cfRichard Uhler 311a5baaabcdd79997508c91f1d8b1cf8547c9d1cfRichard Uhler AhatSnapshot snapshot = dump.getAhatSnapshot(); 321a5baaabcdd79997508c91f1d8b1cf8547c9d1cfRichard Uhler Instance referent = (Instance)dump.getDumpedThing("anObject"); 331a5baaabcdd79997508c91f1d8b1cf8547c9d1cfRichard Uhler for (InstanceUtils.NativeAllocation alloc : snapshot.getNativeAllocations()) { 341a5baaabcdd79997508c91f1d8b1cf8547c9d1cfRichard Uhler if (alloc.referent == referent) { 351a5baaabcdd79997508c91f1d8b1cf8547c9d1cfRichard Uhler assertEquals(42 , alloc.size); 361a5baaabcdd79997508c91f1d8b1cf8547c9d1cfRichard Uhler assertEquals(referent.getHeap(), alloc.heap); 371a5baaabcdd79997508c91f1d8b1cf8547c9d1cfRichard Uhler assertEquals(0xABCDABCD , alloc.pointer); 381a5baaabcdd79997508c91f1d8b1cf8547c9d1cfRichard Uhler return; 391a5baaabcdd79997508c91f1d8b1cf8547c9d1cfRichard Uhler } 401a5baaabcdd79997508c91f1d8b1cf8547c9d1cfRichard Uhler } 411a5baaabcdd79997508c91f1d8b1cf8547c9d1cfRichard Uhler fail("No native allocation found with anObject as the referent"); 421a5baaabcdd79997508c91f1d8b1cf8547c9d1cfRichard Uhler } 431a5baaabcdd79997508c91f1d8b1cf8547c9d1cfRichard Uhler} 441a5baaabcdd79997508c91f1d8b1cf8547c9d1cfRichard Uhler 45