1 /* 2 * Copyright (C) 2017 The Android Open Source Project 3 * 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 at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * 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 and 14 * limitations under the License. 15 */ 16 17 package com.android.ahat; 18 19 import com.android.ahat.heapdump.AhatInstance; 20 import com.android.ahat.heapdump.AhatSnapshot; 21 import com.android.ahat.heapdump.Site; 22 import java.io.IOException; 23 import org.junit.Test; 24 25 import static org.junit.Assert.assertEquals; 26 import static org.junit.Assert.assertNotSame; 27 import static org.junit.Assert.assertSame; 28 29 public class SiteTest { 30 @Test 31 public void objectsAllocatedAtKnownSites() throws IOException { 32 TestDump dump = TestDump.getTestDump(); 33 AhatSnapshot snapshot = dump.getAhatSnapshot(); 34 35 AhatInstance oKnownSite = dump.getDumpedAhatInstance("objectAllocatedAtKnownSite"); 36 Site sKnownSite = oKnownSite.getSite(); 37 assertEquals("DumpedStuff.java", sKnownSite.getFilename()); 38 assertEquals("allocateObjectAtKnownSite", sKnownSite.getMethodName()); 39 assertEquals(29, sKnownSite.getLineNumber()); 40 assertSame(sKnownSite, snapshot.getSite(sKnownSite.getId())); 41 42 AhatInstance oKnownSubSite = dump.getDumpedAhatInstance("objectAllocatedAtKnownSubSite"); 43 Site sKnownSubSite = oKnownSubSite.getSite(); 44 assertEquals("DumpedStuff.java", sKnownSubSite.getFilename()); 45 assertEquals("allocateObjectAtKnownSubSite", sKnownSubSite.getMethodName()); 46 assertEquals(37, sKnownSubSite.getLineNumber()); 47 assertSame(sKnownSubSite, snapshot.getSite(sKnownSubSite.getId())); 48 49 Site sKnownSubSiteParent = sKnownSubSite.getParent(); 50 assertEquals("DumpedStuff.java", sKnownSubSiteParent.getFilename()); 51 assertEquals("allocateObjectAtKnownSite", sKnownSubSiteParent.getMethodName()); 52 assertEquals(30, sKnownSubSiteParent.getLineNumber()); 53 assertSame(sKnownSubSiteParent, snapshot.getSite(sKnownSubSiteParent.getId())); 54 55 assertNotSame(sKnownSite, sKnownSubSiteParent); 56 assertSame(sKnownSite.getParent(), sKnownSubSiteParent.getParent()); 57 58 Site sKnownSiteParent = sKnownSite.getParent(); 59 assertEquals("DumpedStuff.java", sKnownSiteParent.getFilename()); 60 assertEquals("<init>", sKnownSiteParent.getMethodName()); 61 assertEquals(45, sKnownSiteParent.getLineNumber()); 62 assertSame(sKnownSiteParent, snapshot.getSite(sKnownSiteParent.getId())); 63 64 AhatInstance oObfSuperSite = dump.getDumpedAhatInstance("objectAllocatedAtObfSuperSite"); 65 Site sObfSuperSite = oObfSuperSite.getSite(); 66 assertEquals("SuperDumpedStuff.java", sObfSuperSite.getFilename()); 67 assertEquals("allocateObjectAtObfSuperSite", sObfSuperSite.getMethodName()); 68 assertEquals(22, sObfSuperSite.getLineNumber()); 69 assertSame(sObfSuperSite, snapshot.getSite(sObfSuperSite.getId())); 70 71 AhatInstance oUnObfSuperSite = dump.getDumpedAhatInstance("objectAllocatedAtUnObfSuperSite"); 72 Site sUnObfSuperSite = oUnObfSuperSite.getSite(); 73 assertEquals("SuperDumpedStuff.java", sUnObfSuperSite.getFilename()); 74 assertEquals("allocateObjectAtUnObfSuperSite", sUnObfSuperSite.getMethodName()); 75 assertEquals(26, sUnObfSuperSite.getLineNumber()); 76 assertSame(sUnObfSuperSite, snapshot.getSite(sUnObfSuperSite.getId())); 77 78 AhatInstance oOverriddenSite = dump.getDumpedAhatInstance("objectAllocatedAtOverriddenSite"); 79 Site sOverriddenSite = oOverriddenSite.getSite(); 80 assertEquals("DumpedStuff.java", sOverriddenSite.getFilename()); 81 assertEquals("allocateObjectAtOverriddenSite", sOverriddenSite.getMethodName()); 82 assertEquals(41, sOverriddenSite.getLineNumber()); 83 assertSame(sOverriddenSite, snapshot.getSite(sOverriddenSite.getId())); 84 } 85 } 86