You are viewing a plain text version of this content. The canonical link for it is here.
Posted to kato-commits@incubator.apache.org by sp...@apache.org on 2010/01/07 08:24:23 UTC

svn commit: r896794 - in /incubator/kato/trunk/org.apache.kato: kato.cjvmti/src/main/java/org/apache/kato/jvmti/javaruntime/model/ kato.hprof.api/src/main/java/org/apache/kato/hprof/java/ kato.jdi/src/main/java/org/apache/kato/tools/jdi/ kato.tck/execu...

Author: spoole
Date: Thu Jan  7 08:23:11 2010
New Revision: 896794

URL: http://svn.apache.org/viewvc?rev=896794&view=rev
Log:
updated implementations , tools and tests to handle new JavaThread , NativejavaThread separation.

Modified:
    incubator/kato/trunk/org.apache.kato/kato.cjvmti/src/main/java/org/apache/kato/jvmti/javaruntime/model/JThread.java
    incubator/kato/trunk/org.apache.kato/kato.hprof.api/src/main/java/org/apache/kato/hprof/java/JavaThreadImpl.java
    incubator/kato/trunk/org.apache.kato/kato.jdi/src/main/java/org/apache/kato/tools/jdi/KatoReader.java
    incubator/kato/trunk/org.apache.kato/kato.tck/execution/hprof/src/test/ant/test.xml
    incubator/kato/trunk/org.apache.kato/kato.tck/testcases/src/main/java/org/apache/kato/tck/tests/legacy/TestJavaThread.java
    incubator/kato/trunk/org.apache.kato/kato.tck/testcases/src/main/java/org/apache/kato/tests/junit/JavaThreadTest.java
    incubator/kato/trunk/org.apache.kato/kato.tools.katoview/src/main/java/org/apache/kato/katoview/commands/infocommands/InfoLockCommand.java
    incubator/kato/trunk/org.apache.kato/kato.tools.katoview/src/main/java/org/apache/kato/katoview/commands/infocommands/InfoThreadCommand.java

Modified: incubator/kato/trunk/org.apache.kato/kato.cjvmti/src/main/java/org/apache/kato/jvmti/javaruntime/model/JThread.java
URL: http://svn.apache.org/viewvc/incubator/kato/trunk/org.apache.kato/kato.cjvmti/src/main/java/org/apache/kato/jvmti/javaruntime/model/JThread.java?rev=896794&r1=896793&r2=896794&view=diff
==============================================================================
--- incubator/kato/trunk/org.apache.kato/kato.cjvmti/src/main/java/org/apache/kato/jvmti/javaruntime/model/JThread.java (original)
+++ incubator/kato/trunk/org.apache.kato/kato.cjvmti/src/main/java/org/apache/kato/jvmti/javaruntime/model/JThread.java Thu Jan  7 08:23:11 2010
@@ -14,22 +14,16 @@
 
 package org.apache.kato.jvmti.javaruntime.model;
 
-import java.util.Collections;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.logging.Level;
 
 import javax.tools.diagnostics.image.CorruptDataException;
 import javax.tools.diagnostics.image.DataUnavailable;
-import javax.tools.diagnostics.image.ImagePointer;
-import javax.tools.diagnostics.image.ImageSection;
-import javax.tools.diagnostics.image.ImageThread;
-import javax.tools.diagnostics.image.MemoryAccessException;
-import javax.tools.diagnostics.runtime.java.JavaClass;
-import javax.tools.diagnostics.runtime.java.JavaHeap;
 import javax.tools.diagnostics.runtime.java.JavaObject;
 import javax.tools.diagnostics.runtime.java.JavaStackFrame;
 import javax.tools.diagnostics.runtime.java.JavaThread;
+import javax.tools.diagnostics.runtime.java.NativeJavaThread;
 
 import org.apache.kato.jvmti.reader.CLogger;
 
@@ -120,11 +114,7 @@
 		}
 	}
 	
-	@Override
-	public ImageThread getImageThread() throws CorruptDataException,
-			DataUnavailable {		
-			throw new DataUnavailable();
-	}
+	
 	
 
 	public void addStackFrame(JStackFrame frame) {
@@ -132,11 +122,6 @@
 	}
 	
 	@Override
-	public ImagePointer getJNIEnv() throws CorruptDataException {
-		
-		return new SimpleImagePointer(id);
-	}
-	@Override
 	public String getName() throws CorruptDataException {
 		
 		return threadName;
@@ -161,13 +146,15 @@
 		return frames;
 	}
 	
-	@Override
-	public List<ImageSection> getStackSections() {
-		return Collections.emptyList();
-	}
+
 	
 	@Override
 	public int getState() throws CorruptDataException {
 		return state;
 	}
+
+	@Override
+	public NativeJavaThread getNativeThread() throws DataUnavailable {
+		throw new DataUnavailable();
+	}
 }
\ No newline at end of file

Modified: incubator/kato/trunk/org.apache.kato/kato.hprof.api/src/main/java/org/apache/kato/hprof/java/JavaThreadImpl.java
URL: http://svn.apache.org/viewvc/incubator/kato/trunk/org.apache.kato/kato.hprof.api/src/main/java/org/apache/kato/hprof/java/JavaThreadImpl.java?rev=896794&r1=896793&r2=896794&view=diff
==============================================================================
--- incubator/kato/trunk/org.apache.kato/kato.hprof.api/src/main/java/org/apache/kato/hprof/java/JavaThreadImpl.java (original)
+++ incubator/kato/trunk/org.apache.kato/kato.hprof.api/src/main/java/org/apache/kato/hprof/java/JavaThreadImpl.java Thu Jan  7 08:23:11 2010
@@ -23,6 +23,7 @@
 import javax.tools.diagnostics.image.ImageThread;
 import javax.tools.diagnostics.runtime.java.JavaObject;
 import javax.tools.diagnostics.runtime.java.JavaThread;
+import javax.tools.diagnostics.runtime.java.NativeJavaThread;
 
 import org.apache.kato.hprof.IJavaStack;
 import org.apache.kato.hprof.IJavaStackFrame;
@@ -41,29 +42,8 @@
 		this.thread = thread;
 	}
 	
-	/**
-	 * There are no image threads in hprof files.
-	 * 
-	 * @throws DataUnavailable always - there are no ImageThreads
-	 */
-	@Override
-	public ImageThread getImageThread() throws CorruptDataException,
-			DataUnavailable {
-		throw new DataUnavailable("ImageThreads not present in Hprof file.");
-	}
-
 	
-	/**
-	 * There are no JNIEnvs in Hprof.
-	 * There is no DataUnavailable exception, so we wrap up the thread serial# in an
-	 * image pointer.
-	 * 
-	 * @return ImagePointer of thread serial number
-	 */
-	@Override
-	public ImagePointer getJNIEnv() throws CorruptDataException {
-		return heap.getImagePointer(thread.getThreadSerialNumber());
-	}
+	
 
 	@Override
 	public String getName() throws CorruptDataException {
@@ -105,15 +85,7 @@
 		return frames;
 	}
 
-	/**
-	 * Stack sections are not recorded in hprof files.
-	 * 
-	 * @return empty iterator.
-	 */
-	@Override
-	public List getStackSections() {
-		return new LinkedList();
-	}
+	
 
 	/**
 	 * State isn't recorded in Hprof. Only live threads
@@ -126,4 +98,12 @@
 		return STATE_ALIVE;
 	}
 
+
+
+
+	@Override
+	public NativeJavaThread getNativeThread() throws DataUnavailable {
+		throw new DataUnavailable();
+	}
+
 }

Modified: incubator/kato/trunk/org.apache.kato/kato.jdi/src/main/java/org/apache/kato/tools/jdi/KatoReader.java
URL: http://svn.apache.org/viewvc/incubator/kato/trunk/org.apache.kato/kato.jdi/src/main/java/org/apache/kato/tools/jdi/KatoReader.java?rev=896794&r1=896793&r2=896794&view=diff
==============================================================================
--- incubator/kato/trunk/org.apache.kato/kato.jdi/src/main/java/org/apache/kato/tools/jdi/KatoReader.java (original)
+++ incubator/kato/trunk/org.apache.kato/kato.jdi/src/main/java/org/apache/kato/tools/jdi/KatoReader.java Thu Jan  7 08:23:11 2010
@@ -2419,14 +2419,14 @@
 				JavaThread owningThread = jm.getOwner();
 				
 				if (owningThread != null){
-					addLongToVector(vctr, owningThread.getJNIEnv().getAddress());
+					addLongToVector(vctr, owningThread.getNativeThread().getJNIEnv().getAddress());
 				}else{
 					addLongToVector(vctr, 0);
 				}
 				addIntToVector(vctr, 1);
 				addIntToVector(vctr, jm.getEnterWaiters().size());
 				for (JavaThread thr : jm.getEnterWaiters()){
-					addLongToVector(vctr, thr.getJNIEnv().getAddress());
+					addLongToVector(vctr, thr.getNativeThread().getJNIEnv().getAddress());
 				}
 				logr.log(JDILogger.LEVEL_VERYVERBOSE,"  "+jm.getEnterWaiters().size()+" waiting and owner is "+owningThread);
 			}else{
@@ -2930,7 +2930,7 @@
 			for (JavaMonitor jm : monitorMap.values()){
 				JavaThread thr;
 				if ((thr = jm.getOwner())!= null){
-					if (thr.getJNIEnv().getAddress() == threadID){
+					if (thr.getNativeThread().getJNIEnv().getAddress() == threadID){
 						ownedMonitors.add(jm.getObject());
 					}
 				}
@@ -2953,7 +2953,7 @@
 			JavaMonitor contended = null;
 			for (JavaMonitor jm : monitorMap.values()){
 				for (JavaThread thr: jm.getEnterWaiters()){
-					if (thr.getJNIEnv().getAddress() == threadID){
+					if (thr.getNativeThread().getJNIEnv().getAddress() == threadID){
 						contended = jm;
 					}
 				}

Modified: incubator/kato/trunk/org.apache.kato/kato.tck/execution/hprof/src/test/ant/test.xml
URL: http://svn.apache.org/viewvc/incubator/kato/trunk/org.apache.kato/kato.tck/execution/hprof/src/test/ant/test.xml?rev=896794&r1=896793&r2=896794&view=diff
==============================================================================
--- incubator/kato/trunk/org.apache.kato/kato.tck/execution/hprof/src/test/ant/test.xml (original)
+++ incubator/kato/trunk/org.apache.kato/kato.tck/execution/hprof/src/test/ant/test.xml Thu Jan  7 08:23:11 2010
@@ -36,7 +36,7 @@
 		
 		<mkdir dir="${results}"/>
 		
-		<junit>
+		<junit haltonerror="true" haltonfailure="true">
 			 <classpath>
 			    <pathelement path="${path}"/>
 			  </classpath>

Modified: incubator/kato/trunk/org.apache.kato/kato.tck/testcases/src/main/java/org/apache/kato/tck/tests/legacy/TestJavaThread.java
URL: http://svn.apache.org/viewvc/incubator/kato/trunk/org.apache.kato/kato.tck/testcases/src/main/java/org/apache/kato/tck/tests/legacy/TestJavaThread.java?rev=896794&r1=896793&r2=896794&view=diff
==============================================================================
--- incubator/kato/trunk/org.apache.kato/kato.tck/testcases/src/main/java/org/apache/kato/tck/tests/legacy/TestJavaThread.java (original)
+++ incubator/kato/trunk/org.apache.kato/kato.tck/testcases/src/main/java/org/apache/kato/tck/tests/legacy/TestJavaThread.java Thu Jan  7 08:23:11 2010
@@ -25,6 +25,7 @@
 import javax.tools.diagnostics.runtime.java.JavaRuntime;
 import javax.tools.diagnostics.runtime.java.JavaStackFrame;
 import javax.tools.diagnostics.runtime.java.JavaThread;
+import javax.tools.diagnostics.runtime.java.NativeJavaThread;
 
 import org.apache.kato.tck.harness.TCKJavaRuntimeTestcase;
 
@@ -46,21 +47,13 @@
 			
 			try {
 				
-				ImageThread ithread=t.getImageThread();
-				assertNotNull("Entry "+counter+":image thread is null - DataUnavailable should have been thrown instead",ithread);
+				NativeJavaThread ithread=t.getNativeThread();
+				assertNotNull("Entry "+counter+":native thread is null - DataUnavailable should have been thrown instead",ithread);
 				
-			} catch (CorruptDataException e) {
-				// allowed
 			} catch (DataUnavailable e) {
 				// allowed
 			}
 		
-			try {
-				ImagePointer p=t.getJNIEnv();
-				assertNotNull("Entry "+counter+":JNIEnv is null - DataUnavailable should have been thrown instead",p);
-			} catch (CorruptDataException e) {
-				// allowed
-			}
 			
 			
 			try {
@@ -88,8 +81,6 @@
 			List<JavaStackFrame> frames=t.getStackFrames();
 			assertNotNull("Entry "+counter+":frames list is  null",frames);
 			
-			List<ImageSection> sections=t.getStackSections();
-			assertNotNull("Entry "+counter+":section list is  null",sections);
 			
 			try {
 				int state=t.getState();

Modified: incubator/kato/trunk/org.apache.kato/kato.tck/testcases/src/main/java/org/apache/kato/tests/junit/JavaThreadTest.java
URL: http://svn.apache.org/viewvc/incubator/kato/trunk/org.apache.kato/kato.tck/testcases/src/main/java/org/apache/kato/tests/junit/JavaThreadTest.java?rev=896794&r1=896793&r2=896794&view=diff
==============================================================================
--- incubator/kato/trunk/org.apache.kato/kato.tck/testcases/src/main/java/org/apache/kato/tests/junit/JavaThreadTest.java (original)
+++ incubator/kato/trunk/org.apache.kato/kato.tck/testcases/src/main/java/org/apache/kato/tests/junit/JavaThreadTest.java Thu Jan  7 08:23:11 2010
@@ -33,19 +33,7 @@
 		super.setUp();
 	}
 
-	/**
-	 * Test method for 'javax.tools.diagnostics.runtime.java.JavaThread.getJNIEnv()'
-	 * 
-	 * Ensures that the JNIEnv is non-null
-	 */
-	public void testGetJNIEnv()
-	{
-		try {
-			assertNotNull(_thread.getJNIEnv());
-		} catch (CorruptDataException e) {
-			//this is acceptable by the spec
-		}
-	}
+	
 
 	/*
 	 * Test method for 'javax.tools.diagnostics.runtime.java.JavaThread.getPriority()'
@@ -86,32 +74,20 @@
 	}
 
 	/**
-	 * Test method for 'javax.tools.diagnostics.runtime.java.JavaThread.getImageThread()'
+	 * Test method for 'javax.tools.diagnostics.runtime.java.JavaThread.getNativeThread()'
 	 * 
 	 * Ensures that a non-null image thread can be pulled from this thread
 	 */
-	public void testGetImageThread()
+	public void testGetNativeThread()
 	{
 		try {
-			assertNotNull(_thread.getImageThread());
-		} catch (CorruptDataException e) {
-			//this is acceptable by the spec
+			assertNotNull(_thread.getNativeThread());
 		} catch (DataUnavailable e) {
 			//this is acceptable by the spec
 		}
 	}
 
-	/**
-	 * Test method for 'javax.tools.diagnostics.runtime.java.JavaThread.getStackSections()'
-	 * 
-	 * Ensures that a non-null, non-empty iterator is returned
-	 */
-	public void testGetStackSections()
-	{
-		Iterator it = _thread.getStackSections().iterator();
-		assertNotNull(it);
-		assertTrue(it.hasNext());
-	}
+	
 
 	/**
 	 * Test method for 'javax.tools.diagnostics.runtime.java.JavaThread.getStackFrames()'

Modified: incubator/kato/trunk/org.apache.kato/kato.tools.katoview/src/main/java/org/apache/kato/katoview/commands/infocommands/InfoLockCommand.java
URL: http://svn.apache.org/viewvc/incubator/kato/trunk/org.apache.kato/kato.tools.katoview/src/main/java/org/apache/kato/katoview/commands/infocommands/InfoLockCommand.java?rev=896794&r1=896793&r2=896794&view=diff
==============================================================================
--- incubator/kato/trunk/org.apache.kato/kato.tools.katoview/src/main/java/org/apache/kato/katoview/commands/infocommands/InfoLockCommand.java (original)
+++ incubator/kato/trunk/org.apache.kato/kato.tools.katoview/src/main/java/org/apache/kato/katoview/commands/infocommands/InfoLockCommand.java Thu Jan  7 08:23:11 2010
@@ -64,7 +64,7 @@
 					JavaThread owner = jMonitor.getOwner();
 					if (null != owner) {
 						try {
-							out.println("\towner thread id: " + owner.getImageThread().getID()
+							out.println("\towner thread id: " + owner.getNativeThread().getImageThread().getID()
 									+ " name: " + owner.getName());
 						} catch (DataUnavailable e) {
 							out.println("\towner thread id: " + Exceptions.getDataUnavailableString());
@@ -76,7 +76,7 @@
 					while (itEnterWaiter.hasNext()) {
 						JavaThread jThread = (JavaThread)itEnterWaiter.next();
 						try {
-							out.println("\twaiting thread id: " + jThread.getImageThread().getID() 
+							out.println("\twaiting thread id: " + jThread.getNativeThread().getImageThread().getID() 
 									+ " name: " + jThread.getName());
 						} catch (DataUnavailable dae) {
 							out.println("\twaiting thread id: <unknown>");
@@ -86,7 +86,7 @@
 					while (itNotifyWaiter.hasNext()) {
 						JavaThread jThread = (JavaThread)itNotifyWaiter.next();
 						try {
-							out.println("\twaiting thread id: " + jThread.getImageThread().getID() 
+							out.println("\twaiting thread id: " + jThread.getNativeThread().getImageThread().getID() 
 									+ " name: " + jThread.getName());
 						} catch (DataUnavailable dae) {
 							out.println("\twaiting thread id: <unknown>");
@@ -125,7 +125,7 @@
 				} else {
 					String owningThreadID = null;
 					try {
-						owningThreadID = owner.getImageThread().getID();
+						owningThreadID = owner.getNativeThread().getImageThread().getID();
 					} catch (DataUnavailable e) {
 						owningThreadID = Exceptions.getDataUnavailableString();
 					}

Modified: incubator/kato/trunk/org.apache.kato/kato.tools.katoview/src/main/java/org/apache/kato/katoview/commands/infocommands/InfoThreadCommand.java
URL: http://svn.apache.org/viewvc/incubator/kato/trunk/org.apache.kato/kato.tools.katoview/src/main/java/org/apache/kato/katoview/commands/infocommands/InfoThreadCommand.java?rev=896794&r1=896793&r2=896794&view=diff
==============================================================================
--- incubator/kato/trunk/org.apache.kato/kato.tools.katoview/src/main/java/org/apache/kato/katoview/commands/infocommands/InfoThreadCommand.java (original)
+++ incubator/kato/trunk/org.apache.kato/kato.tools.katoview/src/main/java/org/apache/kato/katoview/commands/infocommands/InfoThreadCommand.java Thu Jan  7 08:23:11 2010
@@ -356,7 +356,7 @@
 					String currID;
 
 					try {
-						ImageThread it = jt.getImageThread();  
+						ImageThread it = jt.getNativeThread().getImageThread();  
 						currID = it.getID();
 					} catch (DiagnosticException e) {
 						currID = null;